해야 했던 일
- database setting
- setup security
- consider scaleable service
- setup ec2 instance for service
- setup load balancer
- management deploy
- setup log system
이거 하려면 ec2를 세팅해야하고,
load balancer도 세팅해야하고 vpc도 만들어야 하고,
매핑도 시켜야하고 scaling도 공부해야하고,
매핑도 해봐야하고,
상태체크 및 log system도 구축해야하고…
너무 귀찮고 힘들고,
처음해보는거라 실수라도 생기면… 나 막 그렇게 부지런한 개발자가 아니라서 ㅠㅠ 귀찮은데 누가 해줬으면 좋겠어.!!
beanstalk을 선택한 이유
- security, scaling, log system 등을 한번에 관리할수 있다.
- automatically setting security
- sample command method
- 귀찮거나 사람이 실수할수 있는 문제를 자동으로 세팅해줌.
방법은 amazon documentation site에 있는 beanstalk 에 있는 tutorial을 따라서 진행을 하였습니다.
한국어로 되어있는 문서도 있었는데, 영어로 하면 좀 더 자세히 되어 있을까봐 영어문서를 보고 했습니다. (영어공부도 해볼 겸 …)
일단 tutorial을 따라 적는건 의미가 없을것 으로 판단해서 제가 진행하면서 막혔던 부분과 어떻게 해결했는지 해결 방법에 대해 적을까 합니다.
사실 documentation에 적혀있었을수도 있는데 제가 꼼꼼하지 못해서 못 읽었을수도 있어요.
git push 시에 Access deny Error
- deploy시에 AWS에 세팅되어있는 code-commit에 있는 repository 서비스를 기준으로 그 안에 있는 code를 기준으로 deploy를 실행합니다.
- code commit의 access token 및 credential은 AWS IAM 에서 관리합니다.
eb init 이란 메소드를 통해서 초기에 configuration을 구성할텐데 그때 codecommit 사용할꺼니?
라는 문구가 나오고 사용하겠다고 하면 해당 코드가 올라가도록 되어 있습니다.
그리고 나서 git push 명령어를 진행할 경우 id, password를 한번 더 치라고 나오는데 이때 “어 나 github쪽은 저장이 되어있는데 한번더 물어보네?” 라고 생각하고 똑같은걸 쳤는데,
왠걸 Access deny가 리턴되는겁니다.
뭐지 하고 당황하고 code commit을 찾아보니깐.
code commit의 경우는 AWS에 있는 source control service로 credential을 AWS IAM를 통해서 따로 연결을 해줘야하더라구요. 이걸통해 나온 credential을 입력하면 push가 가능해집니다.
code commit을 사용안할경우 압축파일(tar, tar.gz)을 로컬에 만들어서 업로드 하는 방식도 지원합니다.
IAM 에서 git credential 만드는건 https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-gc.html 통해서 확인 가능합니다.
Service name validation at eb create command
Module not found when after deployed:
deploy시에 push할때 compile 된 데이터를 push하고 deploy시에는 그냥 바로 run server를 해도 되었는데, 그렇게 되니 eb deploy시에 tar.gz파일을 s3에 저장하는데 이때 업로드하는 파일의 용량이 커서 deploy에 시간소요가 좀 발생하였습니다. 그래서 저는 deploy시에 compile 과정까지 포함해서 진행하였습니다. 추후에 이런 문제로 메모리가 부족해지면 그때는 s3에 compile 완료된 데이터를 추가하는 방식 하거나 babel 사용을 지향할것 같네요.
&&를 사용해서 deploy시에 여러개의 command 실행할 경우 되지 않는 문제.
저는 이정도로 elasticbeanstalk를 사용해서 코드를 배포 작업을 했습니다.
이글을 통해 혹시라도 저처럼 똑같은 문제로 이슈를 발생하는 사람이 없었으면 좋겠습니다.
TIP:
- node platform의 경우 default는 node: 4.5.1, npm: 6.14.3 입니다.
TODO:
- shrinkwrap 적용하기
- deploy시 마다 npm install을 하는 불필요한 작업을 방지하기 위해서 사용하는 package
- docker로 서비스 구성하기.
- 지금 사용하고있는 t2 instance은 제공하는 메모리가 너무 적어서 npm install과 compile시에 cpu가 간당간당한 이슈가 있어 docker로 배포하고 image만 변경하는 작업을 진행해 deploy속도를 개선할 생각입니다.
댓글 없음:
댓글 쓰기