[TIL] Deployment

이나현·2021년 12월 9일
0

pling

목록 보기
1/1

Pling cms(어드민+성우) 페이지 NEXT.js로 마이그레이션 및 기능 추가한 사이트를 완성해서 localhost > heroku test server로 빌드 및 배포하는 작업을 진행했다.

그 과정에서 알게된 내용을 작성해보고자 한다.

처음에는, haroku가 무엇인지, 왜 사용하는 지 알아보고자 클라우드 컴퓨팅 서비스의 개념에 대해 설명하고자 한다.

  1. 클라우드 컴퓨팅 서비스

클라우드 컴퓨팅 서비스는 서비스로서의 인프라, 서비스로서의 플랫폼, 서비스로서의 소프트웨어 3가지가 있다.

출처: 레드헷

1) PaaS(Platform-as-a-Service, Paas)
제공업체가 자체 인프라에서 하드웨어와 소프트웨어를 호스팅하고 이러한 플랫폼을 사용자에게 통합 솔루션, 솔루션 스택 또는 인터넷 서비스로 제공

해당 프로세스와 관련된 인프라 또는 플랫폼을 구축하고 유지관리할 필요없이 사용자가 자체 애플리케이션을 개발, 실행 및 관리할 수 있도록 해준다.

ex. AWS Elastic Beanstalk, Heroku

2) SaaS(Software-as-a-Service, SaaS)

가장 포괄적인 클라우드 컴퓨팅 서비스, 모든 애플리케이션은 제공업체가 관리하며 웹브라우저를 통해 제공

제공업체가 소프트웨어 업데이트, 버그 수정 및 유지관리 작업 처리, 사용자는 대시보드 또는 API를 통해 애플리케이션 연결
ex. Dropbox, Google Apps 등

플랫폼 클라우드 서비스의 장점으로 백엔드에서 heroku를 선택하였고, 그에 맞춰 cms 페이지도 heroku에서 배포하게 되었다.

  1. 헤로쿠 초기 세팅
    1) 만들어 놓은 프로젝트에 헤로쿠 아이디 연동하기
    2) 헤로쿠와 깃헙 폴더 연동한 뒤 커밋 올리기
    3) env 파일 헤로쿠 env로 설정
    4) buildpacks > haroku/node.js(맞는 스택) 설정
    5) add-ons 중 papertrail, new relic, cluster.module 설정
    6) production 서버도 staging 서버처럼 설정하기
    7) ssl 인증서 신청
    8) 도메인 변경

    이 과정 중 현재 5번과 8번을 제외한 나머지는 진행을 완료했다.

  2. 무중단 배포 (zero downtime deployment)

현재 heroku 서버에서 pling-cms-test 프로젝트는 1대의 서버가 돌아가게끔 되어있다. 원래는 커밋 등 변경사항이 있다면 서버가 잠시 죽고 변경사항을 검사한 뒤 괜찮으면 리패치해서 프로젝트를 업데이트한다.

하지만 (돈을 써서) 무중단 배포를 설정해놓았기 때문에 커밋 등이 변경이 되게되면 가상의 서버 1대가 더 돌아서 과거의 내용을 가진 서버와 새로운 서버가 같이 만들어지고 새로운 서버를 선택한 뒤 과거의 내용을 가진 서버를 죽인다.

무중단 배포 종류
1) 롤링 배포
사용 중인 인스턴스 내에서 새 버전을 점진적으로 교체하는 것
서비스 중인 인스턴스 하나를 로드밸런서에서 라우팅하지 않도록 한 뒤, 새 버전을 적용하여 다시 라우팅하는 방식

이미지 출처, https://reference-m1.tistory.com/211

장) 인스턴마다 차례로 배포하기 때문에 상황에 따라 손쉽게 롤백이 가능한 장점
단) 새 버전을 배포할 때 인스턴스 수가 감소하기 때문에 서비스 처리 용량을 고려

2) 블루-그린 배포
구버전과 동일하게 신버전의 인스턴스를 구성한 후, 로드밸런서를 통해 신버전으로 모든 트래픽을 전환하는 배포 방식
장) 빠른 롤벡, 신버전 미리 테스트 가능
단) 두 배의 시스템 자원과 새로운 환경에 대한 테스트

3) 카나리 배포
신버전의 제공 범위를 늘려가면서 모니터링 및 피드백 과정을 거침. 신버전의 배포 전에 실제 운영 환경에서 미리 테스트한다는 점이 블루-그린 배포와 비슷

카나리 배포는 단계적인 전환 방식을 통해 부정적 영향을 최소화하고 상황에 따라 트래픽 양을 늘리거나 롤백할 수 있다.

단, 구-신버전 버전 관리가 필수다.

선임님(명선님)과 무중단 배포를 같이 로그를 찍어가며 했는데, 너무 신기하고 재밌어서 눈이 반짝이는 시간이었다! ㅎㅎ

페이지 마이그레이션부터 배포까지!! 이제 진짜 얼마 안남았다!! 꺄

profile
technology blog

0개의 댓글