Elastic Beanstalk 사용기

오형근·2022년 11월 8일
0

Project

목록 보기
8/10
post-thumbnail

왜 Elastic Beanstalk인가?

WILIM 프로젝트를 진행하면서 AWS의 Elastic Beanstalk(이하 EB) 서비스를 배포에 사용하였다. 배포를 진행할 때 EC2를 사용하는게 일반적이기 대문에 EC2를 연습할겸 사용까도 생각했었으나, 군 내 사이버지식정보방이 터미널이 막혀있느느 것도 그렇고 배포를 빠르게 진행해야했기 때문에 여러 설정을 자동으로 완료해주는 EB를 선택하게 되었다.

시행착오들

나는 이번 프로젝트를 통해서 EB를 처음 사용해보았기 때문에, 초기 세팅에 꽤 많은 시간을 잡아먹었는데, 아마 배포 시도를 40 번 가까이 했었다...


진짜...지금보니 거의 60회 정도 광적인 배포 시도를 했던 것 같다.

EC2 만큼 각광받는 서비스가 아니어서 관련 자료를 찾기도 쉽지 않았고, 초기 배포를 진행할 때에는 로그를 분석할 생각도 못 했기 때문에 왜 오류가 나는지 끙끙대기만 했던 것 같다. 볼 수 있는건 그냥 상태코드랑 로드밸런서 문제라는 것 뿐이었다...

정말 소수의 자료들을 가지고 열심히 시도해본 결과, 배포를 성공적으로 마칠 수 있었는데

관련하여 나중에 EB로 배포를 진행할 때 주의하거나 신경써줘야할 점들에 대해서 짚어보고자 한다.

주의!! Node.js 기반 배포이므로 Python이나 Java 등의 타 언어를 이용한 배포와 안 맞는 내용이 있을 수 있습니다.


Elastic Beanstalk 기본 설정 주의사항

EB는 기본적으로 우리가 AWS 콘솔에 코드가 담긴 압축파일을 업로드하는 것으로 배포를 할 수 있다. 로드 밸런서나 프록시 등의 다양한 필수 설정들을 자동으로 해준다는 장점이 있지만, 배포하려는 코드가 이에 맞게 설정이 되어있지 않으면 오류가 나기 쉬운 구조이다. EC2가 라이브러리라면 EB는 프레임워크인 느낌...??

로그부터 먼저 찍어보자!

로그를 확인하는 것은 에러를 잡는 첫걸음이고 기본이다. AWS 콘솔 창에서 사이드바를 확인하면 로그를 출력할 수 있는 페이지가 있으며, 로그는 문제를 해결하는 실마리를 제공해줄 것이다.

아래 내가 말하는 오류들도 모두 로그를 통해 확인할 수 있으며, 그 중 가장 대표적인 문제나 주의사항들만 적어보았다.

압축 파일 내에 package-lock.json과 node_module 폴더가 없어야 한다.

EB에서 파일을 실행시킬 때 package.json을 참고하여 자동으로 npm install을 수행하기 때문에, package-lock.json 파일과 node_module 폴더는 없애고 배포하자(처음 압축파일을 만들 때 위 두 사항을 제외하도록 설정하면 좋다).

EB가 서버를 시작하는 방법

EB는 제공된 압축 파일에서 자동으로 app.js혹은 server.js파일을 찾아다닌다. 따라서 시작 파일의 이름을 둘 중 하나로 설정해주자. 혹은 npm start 스크립트를 지정해준다면 위의 두 이름이 아니어도 자동으로 npm start를 실행하게된다. 이왕이면 app.jsserver.js가 있더라도 npm start를 작성해주도록 하자.

Node는 아직 ES5를 기반으로 한다

당연한 이야기겠지만 Node는 ES5문법을 따르고 있다. import, export 같은 ES6+(ES2015)규격의 문법들은 압축 파일을 만들기 이전에 babel을 이용하여 컴파일링을 해주도록 하자.

package.json이 루트 디렉토리에 존재해야한다

압축파일을 만들다 보면 가끔 실수를 할 때가 있는데, 파일들이 담긴 폴더를 우클릭해서 압축하는게 아니라 전체 파일을 다중선택해서 압축파일을 만들어야한다. 물론 명령어 써서 압축하는게 가장 확실하지만 혹시라도 GUI 사용하는 경우에 조심하도록 하자!

포트는 5000으로..!

포트를 5000으로 지정해줬을 때 잘 작동된다는 이야기가 있다. 나도 위의 사항들을 모두 지킨 후에 환경변수 포트 설정을 5000으로 변경해주고 나서야 잘 배포가 되었던 것 같다. 요 사항은 EB 기본 사항인것 같다.

그래도 안된다면...

내 코드가 로컬에서도 잘 돌아가는지 확인하자. 로컬에서도 안 되는데 배포를 시도하려고 하는 경우가 종종 있다.


하나가 더 있었는데...메모도 안 해두고 적혀있지도 않아서 나중에 생각나면 추가해야겠다...

profile
https://nohv.site

0개의 댓글