개발을 하면서 자주 들었던 부분이 바로 CI/CD이다. 서비스의 규모가 커지면 자동으로 서버가 테스트를 해주고 배포서버에 내 프로젝트를 업데이트 시킨다고?.. 생각만해도 기분이 짜릿했다.
그래서 구현을 해보고 싶었다.
이 글은 비전공자라 기본적인 cs 지식에서도 많이 부족한 사람이 무작정 파이프라인을 구축하는 내용을 담고 있다.
시리즈
[Django] Github-actions를 이용한 CI/CD 파이프 라인 구축하기(2) - github actions 사용하기
[Django] Github-actions를 이용한 CI/CD 파이프 라인 구축하기(3) - elastic beanstalk
이번 구축을 위해 나는 aws에서 제공하는 Elastic Beanstalk를 이용하기로 했다. 해당 기능을 이용하기로 한 이유는 다음과 같다.
Elastic Beanstalk를 사용하면 애플리케이션을 실행하는 인프라에 대해 자세히 알지 못해도 AWS 클라우드에서 애플리케이션을 신속하게 배포하고 관리할 수 있습니다. Elastic Beanstalk를 사용하면 선택 또는 제어에 대한 제한 없이 관리 복잡성을 줄일 수 있습니다. 애플리케이션을 업로드하기만 하면 Elastic Beanstalk에서 용량 프로비저닝, 로드 밸런싱, 조정, 애플리케이션 상태 모니터링에 대한 세부 정보를 자동으로 처리합니다.
출처 : AWS Elastic Beanstalk란 무엇입니까?
대략적으로 살펴보면 이와 같은 기능들을 한번에 그리고 손 쉽게 설정할 수 있도록 도와주니 내 입장에서는 너무 훌륭한 서비스일 수 밖에 없다.
결국 내가 구현하려는 것은 간단하게 압축될 수 있었다.
우선 해당 기능을 사용하기 위해 aws setting을 진행하려고 한다.
위의 과정을 진행하면 몇 분정도의 시간이 흐른 후 Elastic Beanstalk에서 그에 맞는 환경을 구축한다.
환경이 구축되고 왼쪽 사이드바에 환경으로 이동을 클릭했을 때 다음과 같은 이미지가 나온다.
끝났다.. 정말 짜릿하다. 원래 EC2 인스턴스에 Nginx - uWSGI - Django 하나하나 설치해가며 시간을 소모 시켰던 것에 비하면 정말....
개인적으로 생각하기에 elastic beanstalk의 단점은 오류 해결이 어려운 것 같다. 정해진 동작을 실행시키는 등에서 발생하는 특정한 오류 외의 것은 기본적으로 제공해주지 않는 것 같고 해당 인스턴스에 접속하기도 힘들었다.
다음은 S3를 버킷을 만들 생각이다. Elastic Beanstalk는 S3에다가 우리가 올리는 장고를 버전 형식으로 관리한다. 예를 들어 서비스 업데이트를 총 5번 했다면 해당 버킷에는 총 5개의 압축 파일이 존재한다.
또한, 별도로 Elastic Beanstalk에서 사용하는 리소스 등을 저장하는 버킷도 자동으로 생성된다.
이제 우리 장고 앱의 버전을 저장할 버킷 또한 만들었다.
우리가 직접 인스턴스에 접속하는 것이면 perm 파일 등을 이용해서 해당 인스턴스에 접속 후 일련의 과정을 진행하면 되겠지만, 우리는 github에게 배포를 대신 맡길 생각이다.
따라서 github에서 AWS로 접속할 수 있는 Access Key와 Password가 필요하다.
IAM을 마지막으로 우리가 사용할 서비스의 구축이 전부 완료되었다.
다음 글에서는 장고 프로젝트를 만들어 로켓을 로컬에서 띄워보고 github 액션을 통해 elastic beanstalk에 배포하는 내용을 작성해볼 생각이다.
시리즈
[Django] Github-actions를 이용한 CI/CD 파이프 라인 구축하기(2) - github actions 사용하기
[Django] Github-actions를 이용한 CI/CD 파이프 라인 구축하기(3) - elastic beanstalk
마침 ci/cd 하는법을 찾고 있었는데 많은 도움이 되었습니다. 감사합니다^^