SEB_BE 74일차 - 배포 자동화1

subimm_·2022년 12월 7일
0

코드스테이츠

목록 보기
71/83

💡 오늘의 학습목표

  • AWS Pipeline을 통한 배포 자동화

📔 배포 자동화

📖 배포 자동화 파이프라인

  • 소스 코드의 관리부터 실제 서비스로의 배포 과정을 연결하는 구조
    1. Source 단계 : 원격 저장소에 관리되고 있는 소스 코드에 변경 사항이 일어날 경우, 감지하고 다음 단계로 전달
    2. Build 단계 : 전달 받은 코드를 컴파일, 빌드, 테스트하여 가공, 또한 빌드 단계를 거처 생성된 경과물을 다음 단계로 전달하는 작업 수행
    3. Deploy 단계 : 전달받은 결과물을 실제 서비스에 반영

📔 AWS Pipeline을 통한 배포 자동화

📖 개발 환경 구축 튜토리얼

  • EC2 인스턴스에서 진행

1. JAVA 설치
sudo apt install openjdk-11-jre-headless
2. AWS CLI 설치

$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
$ sudo apt install unzip
$ unzip awscliv2.zip
$ sudo ./aws/install

3. CodeDeploy Agent 설치

$ sudo apt update
$ sudo apt install ruby-full                # [Y / n] 선택시 Y 입력
$ sudo apt install wget
$ cd /home/ubuntu
$ sudo wget https://aws-codedeploy-ap-northeast-2.s3.ap-northeast-2.amazonaws.com/latest/install
$ sudo chmod +x ./install
$ sudo ./install auto > /tmp/logfile

sudo service codedeploy-agent status 로 서비스 실행 중인지 확인

📖 EC2 인스턴스 역할 부여 튜토리얼

  • 인스턴스 - 보안 - IAM역할 - 권한추가 - 정책 연결
    • 4가지 선택하여 추가

  • 신뢰 관계 - 신뢰 정책 편집

📖 EC2를 활용한 파이프라인 구축 튜토리얼

  • 개인 PC의 로컬에서 진행
  • appspec.yml 파일 추가
  • buildspec.yml 파일 추가
  • 최상위에 scripts 디렉토리 생성후 그 안에 initialize.sh, server_clear.sh, server_start.sh, server_stop.sh 파일 4개 생성
    • 각 파일은 appspec 파일이 구성하고 있는 배포 수명 주기에 따라서 실행 예정
      • initialize.sh : 빌드 결과물을 실행할 수 있도록 실행 권한 추가
      • server_clear.sh : 빌드 결과물이 저장된 build 디렉토리 제거
      • server_start.sh : DeployServer-0.0.1-SNAPSHOT.jar 라는 빌드 결과물 실행
      • server_stop.sh : 실행중인 Spring Boot 프로젝트 종료
  • CodeDeploy 대시보드 - 애플리케이션 생성 - 이름/플랫폼(EC2/온프레미스) - 생성
  • 생성한 애플리케이션 배포 그룹 탭 - 배포 그룹 생성 - 이름입력 - 본인 소유 EC2 인스턴스 IAM 역할 선택 - 환경구성 Amazon EC2 인스턴스 선택 - 태그 그룹 Name 태그 키와 값 선택 - 로드 밸런싱 활성화 체크 해제 - 배포 그룹 생성
  • CodePipeline 대시보드 - 파이프라인 생성 - 이름 입력 - 소스 스테이지 (GitHub버전2) - GitHUb에 연결 - 새 앱 설치 - 계정 선택 - Only select repositories - 연결 - 리포지토리 이름 지정, 브랜치 이름 main
  • 빌드 스테이지 - AWS CodeBuild - 프로젝트 생성 - 이름 입력 - 운영체제(Amazon Linux2), 런타임 (Standard), 이미지 (aws/codebuild/amazonlinux2-x86_64-standart:3.0), 빌드스펙 DeployServer/buildspec.yml
  • 배포 스테이지 - AWS CodeDeploy - 이름 그룹 선택 - 파이프라인 생성

📖 서버 환경 변수 설정 튜토리얼

  • 클라이언트와 서버를 서로 연결하고 노출하면 안되는 값 보호

  • AWS Parameter Store 서비스를 이용하면 EC2 instance에 환경 변수 전달 가능

  • Parameter Store 대시보드로 이동 - 파라미터 생성

    • 이름에 환경 변수명, (/prefix/name/key 의 순서)
  • build.gradle 수정

  • bootstrap.yml 파일 생성 (파라미터 스토어에 저장된 변수 조회)

  • application.properties 확인 (파라미터 스토어에 저장된 값을 읽어옴)

profile
코린이의 공부 일지

0개의 댓글