• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

배포 방법에 대한 질문드립니다.

22.01.07 17:34 작성 조회수 856

0

1. 제가 알기로 무중단 배포는 새로 작성한 코드를 추가로 배포할 때, 그 파일을 가져오고 다시 실행하는 동안 끊기지 않게 해주는 것으로 알고있습니다. 그런데 강의에서 ec2는 해당 우분투 shell을 나가면 자동으로 종료되므로 pm2를 이용해 무중단 배포를 하시는 것을 봤습니다.

ec2는 끊기지 않기 위해서라도 무조건 무중단 배포를 해야하는 걸까요?

2. 노드버드 강의에서 배운 내용을 토대로 배포 과정을 공부하기 위해 작은 프로젝트를 혼자 진행하고 있는데, aws에도 ec2, s3, elasticbeanstalk등 다양한 옵션이 있고, 이걸 무중단 배포를 해야하느냐, 한다면 pm2를 이용할지 docker와 nginx를 이용할지 등.. 옵션이 많아 어떤 것을 선택해야할지 고민입니다.

제가 원하는건 단순히 프론트 서버를 aws에 배포해서 언제든 실제 주소로 잘 들어가지고, github action을 이용하여 깃허브에 push했을 때 자동으로 테스트 후 배포되는 ci/cd를 구축하는 것 까지가 목표입니다.

현재 스택은 nextjs가 아닌 그냥 리액트입니다.

무중단 배포를 해보고는 싶지만 지금은 고려대상이 아닙니다.

이때 aws에서 어떤 옵션을 선택해야 할지, 무중단 배포를 꼭 해야하는지 등, 가장 알맞은 배포 방법이 어떤 것일지 조언을 구하고 싶습니다.

답변 1

답변을 작성해보세요.

0

1. 강좌에서 쓴 pm2 정도는 무중단 배포는 아닙니다. ssh 종료시 hangup으로 인해 서버도 같이 꺼지는 것만 막는 것입니다. pm2로 무중단배포하려면 몇 설정을 더 해야 합니다.

2. 무중단 배포로 pm2 추천 드립니다. 다만 앞단에 nginx를 두는 것도 괜찮습니다. aws 로드밸런서 안 쓴다면 nginx로 Https 적용하시고 lb 쓴다면 pm2만 쓰시면 됩니다.

https://engineering.linecorp.com/ko/blog/pm2-nodejs/

보시면 좋습니다. 단순 react는 빌드된 정적파일 결과물만 바꿔주면 돼서 딱히 신경쓸 건 없습니다. 오히려 캐시가 문제겠네요.

nu님의 프로필

nu

질문자

2022.01.07

답변 감사합니다! 그런데 혹시 무중단 배포를 하지 않고 위에 말씀드린 것처럼 프론트 배포후 github actions을 이용한 ci/cd만 목표로 한다면 어떤 방식이 제일 좋을 지도 알수 있을까요?

그리고 말씀해주신 pm2 사용은 ec2와 함께 쓰는것 일까요?

pm2는 ec2랑 해도 되고 ecs같은 도커 기반과 해도 됩니다. 빈스톡에서도 되고요.

프론트가 정적이면 cloudfront/s3에 배포하는 것도 괜찮습니다. github actions로 파일 빌드 후 결과물 전송하면 되고요. ec2쓴다면 ec2로 파일 전송하면 됩니다.

nu님의 프로필

nu

질문자

2022.01.07

계속 질문드려 죄송합니다..

말씀하신 프론트가 정적이라는 것은 어떤 때 일까요..? next로 ssr하는 경우가 정적일까요?

저는 현재 리액트만 사용중입니다

그냥 react만 쓸 때가 정적입니다. 컨텐츠가 안 바뀌니까요.

nu님의 프로필

nu

질문자

2022.01.07

정말 감사합니다!