[section 4] Cloud - 배포 자동화(1) - AWS Pipeline

수경·2023년 2월 5일
0

코드스테이츠

목록 보기
54/57

배포 자동화

한 번의 클릭 or 명령어로 전체 배포 과정을 자동으로 진행

장점

  1. 시간 절약
  2. 휴먼 에러 방지

배포 자동화 파이프라인

소스코드 관리부터 배포까지의 과정을 연결하는 구조
순차적으로 실행하며, 각 단계마다 Actions 실행

  1. Source 단계 : 원격 저장소에 관리되고 있는 코드의 변경 사항을 감지
  1. Build 단계 : Source 단계로부터 전달받은 코드를 컴파일, 빌드, 테스트
  1. Deploy 단계 : 제 서비스에 반영

AWS 개발자 도구

  • CodeCommit : Source 단계
    GitHub와 유사하지만 보다 보안에 강함

  • CodeBuild : Build 단계

  • CodeDeploy : Deploy 단계

  • CodePipeline : 파이프라인 구축에 사용


AWS Pipeline을 통한 배포 자동화

필요한 패키지


# Java 설치
sudo apt install openjdk-11-jre-headless

# 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
aws --version # 설치여부 확인

# 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

# 설치 완료 후 서비스가 실행중인지 확인
# active(running) 문구 확인
sudo service codedeploy-agent status

EC2 인스턴스 역할 부여 필요

파이프라인 구축

  • appspec.yml

  • buildspec.yml

  • scripts

    • initialize.sh : 빌드 결과물 실행 권한 추가
    • server_clear.sh : build 디렉토리 제거
    • server_start.sh : 빌드 결과물 실행
    • server_stop.sh : 프로젝트 종료

서버 환경변수 설정

환경 변수 노출을 막기 위해 aws의 parameter store 서비스 이용

  • 파라미터 생성
    • spring.datasource.url=jdbc:mysql://{AWS RDS Endpoint}/test?useSSL=false&characterEncoding=UTF-8&serverTimezone=UTC
    • spring.datasource.username={RDS Mysql Admin id}
    • spring.datasource.password={RDS Mysql Admin password}
    • config.domain={AWS S3 Endpoint}
  • build.gradle ➡️ parameter store 사용을 위한 설정 필요
  • application.properties ➡️ 환경 변수 주석

실습

금요일 실습인데 일요일이 돼서야 뭐가 잘못됐는지 정확하게 알고 수정해서 얻어낸 DB연결 성공 페이지!ㅠㅠㅠㅠㅠㅠ 힘들었따...🥹

삽질

  1. git 레포가 바뀌어서 s3부분을 수정해야 하는 데 안 함
#.env 파일 수정

# npm도 다시 설치해야 함
npm install

# build
npm run build

# build 디렉토리 밑에 생성된 파일들을 S3 객체에 업로드
  1. parameter store에 파라미터 생성을 환경변수 개수대로 해야하는데 한 개만 함 ➡️ 당연히 나머지 환경변수가 없어서 못 읽어옴 ^^~

  2. 서버 포트번호를 잘못된 번호로 바꿔서 반응이 없었음,,

그래도 알고 고치니까 행벅하다~~

걸린 시간 : 두 시간 정도? 금요일 실습 시간 제외하고 ^^~.....ㅠ

그래도 성공해서 다행이다

재.밌.었.다.하하

profile
어쩌다보니 tmi뿐인 블로그😎

0개의 댓글