[AWS Elastic Beanstalk] Github Action으로 nestjs & react 웹 서비스 배포하기 - 0

Collin·2022년 8월 13일
0

AWS

목록 보기
1/1

시작하기전 !!


첫 글이라 다른 분들의 글에 비해 가독성있게 글을 못쓰더라도 양해부탁드립니다

Elastic Beanstalk을 서비스 운영을 위해서 사용하게 되면서 부딪혔던 문제들을 정리하기 위해서
제가 도움받았던 글들 내용들을 기억 못하기 전에 쭈우욱 기록해볼까 합니다

데이드림랩이라는 회사에서 신나게 코딩하고 있는 쥬니어 of 쥬니어 백앤드 엔지니어입니다
이름은 부끄러워서... ㅠㅠㅠ
이번에 새로운 서비스 MVP를 뽑는데
어떤 환경에서 서비스를 배포할지 너무 고민이 많았습니다

해당 프로젝트의 총 인원은 3명 (대표님, 백앤드 1명, 프론트 1명)
프론트는 React, 백앤드는 Nestjs를 선택하였고
운영에 최대한 부담을 줄고 싶어서 여러가지 서비스를 알아보다가
AWS Elastic Beanstalk(EB)을 알게 되었는데 홀딱 반해서 인프라 환경으로 채택하였습니다
(사실 여러 장점들은 더 찾아보시면 알 수 있으실 거에요)

CI/CD는 Github Action을 사용해보고 싶었습니다
여러가지 툴이 있었지만 운영에 필요한 리소스를 최소화 하고 싶었기 때문에
젠킨스를 사용하기 위해 빌드 서버를 따로 구축하는 것 보다
Github Action을 사용하면 좀 더 수월하지 않을까 라고 생각했습니다
무엇보다 반한 점은 Github PR 에서 걸려서 아예 merge가 안되게 하는게 너무 좋다고 생각했습니다
그리고 많은 예시들이 있어서 채택하게 되었습니다

(물론 조사하면서 github action의 과금 정책도 고려 대상이었습니다
근데 개발자 2명이 main, develop 브랜치에 commit, prgithub action을 걸어 놓으면

빌드시 필요한 시간 계산을 해보았는데 과금 정책 안이라고 예상했습니다)

제가 공부하면서 알게된 내용이라 잘못된 지식이 포함되어 있으면 알려주시면 감사하겠습니다


아키텍처 스케치


AWS Elastic Beanstalk workshop의 목표 아키텍처와 같은 아키텍처를 목표로 했습니다

<출처: AWS Elastic Beanstalk WorkShop>


🛴  과정

  1. AWS VPC 설정

  2. AWS IAM 설정

  3. AWS Elastic Beanstalk 설정

  4. 코드를 Elastic Beanstalk 에 업로드

  5. 레포에 Github Action 걸어놓기


1. AWS VPC

VPC를 운영 환경과 테스트 환경 이렇게 총 2개를 구축하고 싶은 경우 VPC를 2개 생성해주시면 되겠습니다
운영 환경과 테스트 환경을 똑같이 맞춰주면 훨씬 안정성이 올라가겠죠?

우선 1개만 생성해보는 걸로 해보겠슴돠
AWS VPC 생성을 위해 [VPC] - [VPC 생성] 에 들어갑니당

NAT 게이트웨이 1개의 AZ에서 진행합니다 (private subnet을 위함입니당)

그럼 아래와 같이 VPC가 구성됩니다

(이렇게 간단하게 생성하는게 있는데... 처음 AWS에서 네트워크 구조를 구성하다보니 몰라서 일일히 생성도 해보고... ㅠㅠㅠ 많은 삽질이 있었습니다 여러분들은 저처럼 하지 마세요 ㅠㅠㅠㅠ)


2. AWS IAM

우선 Github Action으로 CI/CD 자동화를 위해서 다음과 같이 권한을 준 사용자를 생성

(실제 프로젝트를 진행하실때는 훨씬 세세하게 제한된 IAM을 권장드립니다)

3. Elastic Beanstalk 설정

이제 Elastic Beanstalk에서 배포 해보도록 해보겠습니다

사실 Elastic에 어플리케이션과 환경이라는 용어가 저에게는 좀 햇갈렸습니다
환경을 생성하면 EC2 하나가 생성된다 이렇게 생각하시면 편할 것 같습니다
저는 아까 우리가 위에서 만든 VPC의 서브넷에 우리 프로그램이 올라갈 인스턴스 하나를 넣는다 고 이해했습니다

(혹시 잘못 이해한 점이 있다면 댓글로 피드백 부탁드리겠습니다 ㅠㅠ)

저는 백앤드를 Nestjs를 사용할 것 이기 때문에
어플리케이션 이름backend
플랫폼Node.js 16
어플리케이션 코드는 일단 샘플 어플리케이션으로 진행해보겠습니다

절대 그냥 넘어가지 마시구 꼭꼭 추가 옵션 구성으로!!!

만들어놓은 VPC를 설정해줘야 합니다

profile
세상에 선한 영향력을 끼치는 서비스를 개발하고 싶은 개발자입니다

0개의 댓글