[Django] Github-actions를 이용한 CI/CD 파이프 라인 구축하기(1) - AWS SETTING

dj-yang·2021년 7월 26일
4

django

목록 보기
5/7
post-thumbnail

서론

개발을 하면서 자주 들었던 부분이 바로 CI/CD이다. 서비스의 규모가 커지면 자동으로 서버가 테스트를 해주고 배포서버에 내 프로젝트를 업데이트 시킨다고?.. 생각만해도 기분이 짜릿했다.

그래서 구현을 해보고 싶었다.

이 글은 비전공자라 기본적인 cs 지식에서도 많이 부족한 사람이 무작정 파이프라인을 구축하는 내용을 담고 있다.

시리즈
[Django] Github-actions를 이용한 CI/CD 파이프 라인 구축하기(2) - github actions 사용하기
[Django] Github-actions를 이용한 CI/CD 파이프 라인 구축하기(3) - elastic beanstalk

본론

이번 구축을 위해 나는 aws에서 제공하는 Elastic Beanstalk를 이용하기로 했다. 해당 기능을 이용하기로 한 이유는 다음과 같다.

  1. CI/CD 파이프라인에 집중하고 싶다.
  2. 아직 기초적인 단계로 추가적인 개발을 하기에는 부담스럽다.

아키텍쳐

Elastic Beanstalk

Elastic Beanstalk를 사용하면 애플리케이션을 실행하는 인프라에 대해 자세히 알지 못해도 AWS 클라우드에서 애플리케이션을 신속하게 배포하고 관리할 수 있습니다. Elastic Beanstalk를 사용하면 선택 또는 제어에 대한 제한 없이 관리 복잡성을 줄일 수 있습니다. 애플리케이션을 업로드하기만 하면 Elastic Beanstalk에서 용량 프로비저닝, 로드 밸런싱, 조정, 애플리케이션 상태 모니터링에 대한 세부 정보를 자동으로 처리합니다.
출처 : AWS Elastic Beanstalk란 무엇입니까?

대략적으로 살펴보면 이와 같은 기능들을 한번에 그리고 손 쉽게 설정할 수 있도록 도와주니 내 입장에서는 너무 훌륭한 서비스일 수 밖에 없다.

최종 아키텍쳐

결국 내가 구현하려는 것은 간단하게 압축될 수 있었다.

AWS setting

Elastic Beanstalk - Create Application

우선 해당 기능을 사용하기 위해 aws setting을 진행하려고 한다.

  1. aws elastic beanstalk 서비스에 들어가 Create Application 클릭
  2. 어플리케이션 이름 작성
  3. 플랫폼 탭으로 넘어가서 플랫폼으로 Python 선택
  4. 플랫폼 브랜치에 자신과 맞는 버전의 파이썬 선택
  5. 플랫폼 버전은 Recommended 상태로 유지
  6. 어플리케이션 생성 버튼 클릭

위의 과정을 진행하면 몇 분정도의 시간이 흐른 후 Elastic Beanstalk에서 그에 맞는 환경을 구축한다.

환경이 구축되고 왼쪽 사이드바에 환경으로 이동을 클릭했을 때 다음과 같은 이미지가 나온다.

끝났다.. 정말 짜릿하다. 원래 EC2 인스턴스에 Nginx - uWSGI - Django 하나하나 설치해가며 시간을 소모 시켰던 것에 비하면 정말....

개인적으로 생각하기에 elastic beanstalk의 단점은 오류 해결이 어려운 것 같다. 정해진 동작을 실행시키는 등에서 발생하는 특정한 오류 외의 것은 기본적으로 제공해주지 않는 것 같고 해당 인스턴스에 접속하기도 힘들었다.

S3 - Create Bucket

다음은 S3를 버킷을 만들 생각이다. Elastic Beanstalk는 S3에다가 우리가 올리는 장고를 버전 형식으로 관리한다. 예를 들어 서비스 업데이트를 총 5번 했다면 해당 버킷에는 총 5개의 압축 파일이 존재한다.

또한, 별도로 Elastic Beanstalk에서 사용하는 리소스 등을 저장하는 버킷도 자동으로 생성된다.

  1. AWS S3에 접속 -> 버킷 만들기 클릭
  2. 버킷 이름 설정
  3. 버킷 리전은 Elastic Beanstalk 앱이 있는 위치와 동일하게 설정(환경으로 이동을 눌렀을 때, 주소 창에 리전이 포함되어 있다.)
  4. 모든 퍼블릭 액세스 차단 상태 유지
  5. 버킷 만들기 클릭

이제 우리 장고 앱의 버전을 저장할 버킷 또한 만들었다.

IAM - Create User

우리가 직접 인스턴스에 접속하는 것이면 perm 파일 등을 이용해서 해당 인스턴스에 접속 후 일련의 과정을 진행하면 되겠지만, 우리는 github에게 배포를 대신 맡길 생각이다.

따라서 github에서 AWS로 접속할 수 있는 Access Key와 Password가 필요하다.

  1. AWS IAM에 접속 -> 사용자 추가 클릭
  2. 사용자 이름에 github-actions (본인이 원하는 이름으로 만들어도 상관없다.)
  3. AWS 액세스 유형 선택에 프로그래밍 방식 액세스 체크
  4. 다음 클릭
  5. 기존 정책 직접 연결 클릭
  6. AdministratorAccess-AWSElasticBeanstalk , AmazonS3FullAccess 체크
  7. 계속 다음 클릭 후 사용자 만들기 클릭
  8. Access Key와 Password 저장(기억)해두기

IAM을 마지막으로 우리가 사용할 서비스의 구축이 전부 완료되었다.

다음 글에서는 장고 프로젝트를 만들어 로켓을 로컬에서 띄워보고 github 액션을 통해 elastic beanstalk에 배포하는 내용을 작성해볼 생각이다.

시리즈
[Django] Github-actions를 이용한 CI/CD 파이프 라인 구축하기(2) - github actions 사용하기
[Django] Github-actions를 이용한 CI/CD 파이프 라인 구축하기(3) - elastic beanstalk


참고

profile
비전공자가 고통받으며 개발합니다

2개의 댓글

comment-user-thumbnail
2022년 3월 27일

마침 ci/cd 하는법을 찾고 있었는데 많은 도움이 되었습니다. 감사합니다^^

1개의 답글