TIL 65일차 AWS Automated Deployment
들어가며
코드스테이츠의 사실상 마지막 TIL 글이다. HA 전날이라 다음에 쓸까 싶다가도 마지막까지 멋지게 장식하고 싶어서 자판을 잡는다. 각자 학습 전략을 잘 짜야된다는 이야기를 들었다. 나의 학습 전략은 블로깅이다. 블로그를 쓰면서 그 날 배웠던 내용(사실)과 느낀 점(감정)을 결합한다. 그 과정에서 기억에 강렬하게 남는다.
AWS 자동화 배포 실습
감상은 여기까지 하고, 클라우드 환경에서 중요한 CI/CD 부분이다. 어제 배웠던 docker-compose보다 훨씬 더 다양한 기능으로 무장했다. Git에 올리면 자동으로 감지해서 클라우드 환경에 적용해준다. 미쳤다는 말 밖에 안나온다. 너~~~무 좋다. 서버가 한 대면 괜찮지만 100대일 경우는 어떻게 할 것인가? 그에 대한 해답이다. Tag 단위로 서버군을 나누고 갱신하는 부분이 신선했다. 개발 서버나 일부 서버만 적용하고 싶다면 그에 맞게 Tag 조정을 거치면 된다.
파이프라인이 2개일 경우 과금이 발생하는건 아쉽다. 그냥 동작이 보고 싶을 뿐인데.. 그래도 이정도가 어디야.
S3 Client 배포
클라이언트 배포의 특징은 Git에서 받아온 후 CodeBuild
서비스를 통해 빌드를 거친 후 S3 버킷에 들어가는 부분이다. 그 과정에서 docker-compose
처럼 명세서를 써주면 그걸 기준으로 빌드를 진행한다. 그래서 먼저 로컬에 명세서대로 진행이 되는지 확인해야된다.
배포 중 빌드 과정이 추가됐다. 빌드를 하면 사용자에게 전달하는 파일 용량이 줄어들기 때문에 React 같은 무거운 라이브러리 또는 Typescript 같은 빌드가 필요한 언어는 하는게 좋다.
# buildspec.yml
version: 0.2
phases:
pre_build:
commands:
- cd client
- npm install
build:
commands:
- npm run build
artifacts:
files:
- '**/*'
base-directory: client/build
EC2 Server 배포
S3처럼 곧바로 올라가는게 아니라 EC2 인스턴스에 소스코드를 입력해야 된다. 그 과정에서 권한 과정이 추가됐다. IAM
권한 설정이 복잡했다. 같은 아마존 내에서도 권한을 어떻게 주느냐에 따라 접근 가능 여부가 달라진다. 여기서 조금 햇갈렸다. 그리고 지역에 따라서 서비스가 나뉜다. 나의 경우 us-east-2
로 되어있어서 이 부분을 수정했다.
# 신뢰 관계 설정
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": [
"codedeploy.us-east-2.amazonaws.com",
"ec2.amazonaws.com"
]
},
"Action": "sts:AssumeRole"
}
]
}
서버는 deploy 과정이 추가된다. 그러면서 어떻게 앱을 실행하고 중지하고 초기화 할 것인지 기록해야 된다. appspec.yml
파일은 그 역할을 수행할 수 있게 만든다.
version: 0.0
os: linux
files:
- source: /
destination: /home/ubuntu/im-sprint-practice-deploy
hooks:
ApplicationStop:
- location: scripts/stop.sh
runas: root
AfterInstall:
- location: scripts/initialize.sh
runas: root
ApplicationStart:
- location: scripts/start.sh
runas: root
EC2 진행 이슈
- EC2 환경에서 node 버전이 맞지 않아서 에러가 발생했다. 우분투에서 NVM을 통해서 node를 설치해도 NPM에서 반영이 되지 않아 8버전으로 자꾸 작업을 진행하더라.
아래 작업 절차로 버전을 맞춰주자 정상 동작했다.
https://suyeoniii.tistory.com/47
curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo apt-get install nodejs
node -v
scripts/initialize.sh
스크립트에서npm install
명령어를 사용할 때sudo
가 빠져있다. 추가하고 실행하자 정상 동작했다.
AWS Automated Deployment
- 배포 자동화에 정의와 이점에 대해 설명할 수 있다.
- 배포 파이프라인이 무엇인지 정의할 수 있다.
- 파이프라인을 구성하는 단계(Stages)와 작업(Actions)에 대해 설명할 수 있다.
- AWS 개발자 도구를 활용하여 파이프라인을 구축할 수 있다.
- 배포 자동화 파이프라인 구축 과정에서 문제가 발생할 경우, log 파일과 공식 문서를 통해 해결할 수 있다.
- AWS에서 제공하는 IAM 서비스를 이해하고 사용할 수 있다.
- 그룹, 사용자, 정책, 역할의 차이점과 특징에 대해서 이해할 수 있다.
- IAM 정책에 대해 이해하고 특정 주체에게 권한을 부여할 수 있다.
- IAM 보안 모범 사례에 대해 찾아보고, 서비스를 이용하며 적용할 수 있다.
Author And Source
이 문제에 관하여(TIL 65일차 AWS Automated Deployment), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@shleecloud/TIL-63-Amazon-Web-Service
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
- 그룹, 사용자, 정책, 역할의 차이점과 특징에 대해서 이해할 수 있다.
- IAM 정책에 대해 이해하고 특정 주체에게 권한을 부여할 수 있다.
- IAM 보안 모범 사례에 대해 찾아보고, 서비스를 이용하며 적용할 수 있다.
Author And Source
이 문제에 관하여(TIL 65일차 AWS Automated Deployment), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@shleecloud/TIL-63-Amazon-Web-Service저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)