개발하고 싶은 초심자
220330 D+70 배포 자동화(Automated Deployment), IAM 본문
1. 배포 자동화(Automated Deployment, CI(지속적인 통합)/CD(지속적 배포))
: 한 번의 클릭 / 명령어 입력을 통해 전체 배포 과정을 자동으로 진행하는 것.
→ 시간이 절약된다.
→ 휴먼 에러(Human Error, 사람이 수동적으로 배포과정을 진행하는 중 생기는 실수) 발생 가능성을 낮출 수 있음.
(⇒ 배포 과정에서 특정 과정을 생략하거나 다르게 진행하여 오류가 발생하는 것이 휴먼 에러,
배포 자동화를 통해 전체 배포 과정을 매번 일관되게 진행하는 구조를 설계한다)
✷ CI/CD
1-1. 배포 자동화 파이프라인
‣ 파이프라인(Pipeline)
: 소스 코드의 관리부터 실제 서비스로의 배포 과정을 연결하는 구조.
→ 전체 배포 과정은 여러 단계로 분리하여 파이프라인 안에서
순차적으로 단계(Stages)가 실행되며, 단계마다 주어진 작업(Actions)을 수행한다.
① Source 단계
: 원격 저장소에 관리되고 있는 소스 코드에 변경 사항이 일어날 경우, 이를 감지하고 다음 단계로 전달하는 작업 수행.
② Build 단계(실행 가능한 애플리케이션, 아티팩트(artifact)를 만드는 과정)
: Source 단계에서 전달받은 코드를 컴파일, 빌드, 테스트 하여 가공한다.
Build 단계를 거쳐 생성된 결과물을 다음 단계로 전달하는 작업을 수행한다.
브라우저가 실행 가능하도록 만들어주는 단계.
③ Deploy 단계
: Build 단계에서 전달받은 결과물을 실제 서비스에 반영하는 작업을 수행한다.
✷ 파이프라인의 단계는 상황과 필요에 따라 세분화되거나 간소화될 수 있다.
1-2. AWS 개발자 도구
→ 개발자 도구 섹션에서 제공하는 서비스를 활용하여 배포 자동화 파이프라인 구축 가능.
① CodeCommit
: Source 단계를 구성할 때 사용하는 서비스로,
Github과 유사한 서비스를 제공하는 버전 관리 도구이다.
→ 보안과 관련된 기능에 강점을 가져 소스 코드 유출이 크게 작용하는 기업에서 매우 중요한 요소다.
→ 프리티어 한계 이상으로 사용 시 요금이 부과될 수 있으므로(과금 가능성 고려),
사이드 프로젝트 / 가볍게 작성한 소스 코드를 저장해야 하는 경우에는 Github 사용이 효과적이다.
② CodeBuild
: Build 단계에서 사용하는 서비스로,
유닛 테스트, 컴파일, 빌드와 같은 빌드 단계에서 필수 실행 작업을 명령어를 통해 실행할 수 있다.
③ CodeDeploy
: Deploy 단계에서 사용하는 서비스로,
실행되고 있는 서버 애플리케이션에 실시간으로 변경 사항 전달 가능.
S3 서비스로 S3 버킷을 통해 업로드 된 정적 웹 사이트에 변경 사항을 실시간으로 전달 / 반영 가능.
④ CodePipeline
: 각 단계를 연결하는 파이프라인을 구축할 때 이용하는 서비스.
(프리티어 계정 사용 시 한 계정에 두 개 이상의 파이프라인 생성 시 추가 요금 부여됨)
✷ CodeBuild를 클라이언트에서만 사용하는 이유는
서버는 별도의 빌드가 필요 없으므로 JS 파일을 node.js 런타임으로 실행하기만 해도 충분하기 때문이다.
✷ CodeDeploy를 클라이언트에서 사용하지 않는 이유는
클라이언트의 결과물이 호스팅만 해도 충분한 정적 파일이기 때문이다.
✷ CodeDeploy를 서버에서만 사용하는 이유는
서버는 애플리케이션이 항상 실행되는 상태로 유지되어야 하고,
이 때 CodeDeploy는 EC2 인스턴스에 대한 배포(코드 다운로드),
AppSpec을 이용해 각각의 life cycle(수명 주기)에 필요한 명령을 설정한다.
특히 애플리케이션 중단 및 실행과 관련한 코드가 반드시 필요하다.
2. IAM
: AWS 내에서 자격 증명(Authentication)에 대해 지원하고 제어
- AWS에서 제공하는 IAM 서비스를 이해하고 사용할 수 있다.
- 그룹, 사용자, 정책, 역할의 차이점과 특징에 대해서 이해할 수 있다.
- IAM 정책에 대해 이해하고 특정 주체에게 권한을 부여할 수 있다.
- IAM 보안 모범 사례에 대해 찾아보고, 서비스를 이용하며 적용할 수 있다.
'기술개념정리(in Javascript)' 카테고리의 다른 글
Git Cheat Sheet (0) | 2022.06.02 |
---|---|
220330 D+70 Client & Server Deployment Pipeline, 환경 변수 설정 (0) | 2022.03.29 |
220329 D+69 Docker (0) | 2022.03.29 |
220328 D+68 도메인 주소를 이용한 HTTPS 인증 (0) | 2022.03.28 |
220325(28) D+67(68) 백엔드&프론트엔드 배포, 데이터베이스 연결 (0) | 2022.03.28 |