티스토리 뷰
배포 전 상황설명
적절한 단어가 생각나지 않아 상황설명이라고 써놨습니다.. 볼 사람이 있는진 모르겠지만.. 개떡같이 말해도 찰떡같이
알아들으시겠지..
- 현재 ver1.0 의 웹 어플리케이션은
8082번 포트
에서 실행중입니다. - github master 브랜치에 push된 것은
ver1.1
의 웹 어플리케이션입니다. ver1.1
의 웹 어플리케이션을 중단 없이 배포하는 것이 목표입니다.
배포 동작 과정 설명 전.. 알고있으면 좋은 것
너무나 당연한건데 왜 설명을 써놓을까 싶지만.. 자꾸 책에 있는 그대로 따라치기만해서 나중에 머리에 안남길래 기록해본다.
- IAM 에서 사용자와 역할의 차이점은?
우리가 카카오 지도나 외부 API를 사용할 때 API KEY를 발급받는데 사용자와 같다고 보면 된다. 내가 S3에 파일을 업로드 하는
어플리케이션을 만들고 싶으면 IAM 에서 사용자를 만들 때 S3에 업로드 할 수 있는 권한만 준다. 그러면 사용자에 대한 API
KEY가 발급되고 어플리케이션을 만들 때 해당 키를 사용해서 S3에 업로드 하는 기능을 구현할 수 있다.
사용자가 특정된 사람에게 주어진다면 역할은 필요한 사람이라면 누구나 맡을 수 있다.
배포 동작 과정
- 개발자는 새로운 기능을 구현한 후 master 브랜치에 push를 한다. 프로젝트에 .travis.yml 이 있다면 Travis CI는 자동으로 해당 프로젝트에 대한 빌드를 시작한다.
- Travis CI는 빌드된 파일을 Access Key 와 Secret Key를 이용하여 지정된 S3 버킷에 업로드를 합니다.
- Travis CI는 Access Key 와 Secret Key를 이용하여 Codedeploy에게 S3 버킷에 있는 파일에 대한 배포요청을 한다.
- Codedeploy는 저장할 수 있는 기능이 없다. 그리고 Codedeploy가 실행되려면 EC2 에 Codedeploy Agent를 설치해야한다. EC2에서 Codedeploy agent를 통해 배포해야할 파일을 S3로부터 받아온다. Travis CI는 사용자를 생성할 때
S3 Full Access
정책과Codedeploy Full Access
정책을 주었기 때문에 Travis CI에서 S3에 파일을 생성과 배포요청을 할 수 있고, Codedeploy의 역할에 AWSCodeDeployRole을 주었기 때문에 EC2에서 배포가 가능하다. - Codedeploy의 appspec.yml을 읽고 배포를 시작하게 된다.
- 현재 8082포트에서 ver1.0 어플리케이션이 real1 설정파일과 함께 동작중이고 Nginx 와 8082포트가 연결된 상태다. 만약 8082포트에 배포를 하게 되면 8082포트에 실행중인 ver1.0 어플리케이션을 멈춘 뒤 ver1.1을 배포해야한다. 무중단 배포를 해야하므로 8082를 중단시키지 않고 8083으로 배포하면 된다.
- codedeploy는
appspec.yml
설정파일을 읽고 배포를 시작한다. - 먼저 Nginx와 연결되지 않은 8083포트에 배포를 할 것이기 때문에 8083 포트에서 실행중인 애플리케이션이 있다면 종료시켜준다.
- S3에서 받아온 파일에 실행 권한을 줘서 빌드된 파일을 실행시킨다.
- 실행이 잘 되었는지 확인한 후 8082포트와 Nginx 연결을 끊고 8083 포트와 연결시키면 무중단 배포에 성공하게 된다.
'TIL' 카테고리의 다른 글
[OS] 프로세스 교환을 유발하는 인터럽트와 트랩 (0) | 2022.02.04 |
---|---|
[OS] 프로세스 상태 (0) | 2022.02.03 |
[OS] 운영체제와 프로세스 (0) | 2022.02.02 |
[CI/CD] 배포 자동화 설정 파일 (0) | 2021.12.24 |
[CI/CD] 배포 자동화 (0) | 2021.12.23 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Til
- Travis CI
- 프로그래머스
- ORA-27125
- graphql
- AWS
- level0
- Oracle
- spring
- ci/cd
- N+1
- 파일업로드설정
- 람다식
- 트랜잭션
- ddl-auto
- Java
- 네이버클라우드
- SpringSecurity
- 운영체제
- nginx
- 기술면접
- SpringGraphQL
- EC2
- db
- CodeDeploy
- OS
- TCP
- 인덱스
- 트랜잭션격리성
- JPA
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |
글 보관함