Deployment, 배포에 대해서

citron03·2022년 2월 8일
0
  • 어떤 서비스를 만들었다고 하자, 이를 로컬 환경에서 구동한다면 이 서비스를 다른 사람이 사용할 수 있을까?
  • 다른 사람들이 사용할 수 없기에, 우리는 개발한 서비스를 더 많은 사용자들이 이용할 수 있도록 배포해야 한다.

기본적인 배포의 4 단계

Development

  • 개발 단계이다. 실제 데이터가 아닌 더미 데이터(sample data)를 사용한다.
  • 모든 구성원이 각자의 local 컴퓨터 환경에서 코드를 작성, 테스트한다.
  • 변경 사항이 있어도 문제가 되지 않는다.

Integration

  • 각자의 컴퓨터에서 작성한 코드를 합치는 과정이다.
  • 내가 작성한 코드가 다른 사람이 작성한 코드를 침범해 문제를 일으키는지 확인한다.
  • 코드간에 conflict(충돌)이 발생하는지 확인한다.

Staging

  • 실제 출시하기 전에 출시 Production 단계와 가장 유사한 환경에서 테스트를 진행한다.
  • 모든 관계자들에게 검증하는 단계이다.
  • 실제 데이터를 복사해 테스트를 진행한다.
  • 다양한 환경에서 테스트를 진행하여 문제가 발생하는지 확인한다.
  • 서비스와 관련된 부서(마케팅, 디자인)와 의사소통하여 개발된 서비스가 예상했던 결과와 맞는지 확인한다.

Production

  • 실제로 서비스가 제공, 출시되는 단계이다.
  • 개발 환경과는 구분된 환경이다. 사용자가 실제 접속할 수 있는 production 환경에서 코드를 구동하고 서비스를 제공한다.
  • 서비스는 실제 데이터를 사용하여 운영된다. 따라서, 문제가 발생하면 안된다.

🍥 회사마다 차이가 있을 수 있지만, 기본적으로 위의 4 단계를 거쳐 개발한 서비스를 배포한다.
🍥 개발 환경에서는 개발툴의 버전, 데이터베이스에 접근하는 정보(엔드포인트 등), 인증 정보 등 각각의 개발자마다 환경이 다를 수 있다. 따라서 배포에서는 환경의 차이를 이해하고 환경설정을 코드와 분리하는 것이 중요하다.

환경변수

  • 작성한 코드가 다른 환경에서도 작동할 수 있도록 설정을 환경 변수에 저장해야 한다.
    (envvars / env)
  • 환경 변수가 코드 바깥으로 잘 분리되어 있다면, 어떤 인증정보도 유출되지 않고 오픈 소스가 될 수 있다.
  • docker와 같은 가상화 솔루션을 사용하면, 환경 자체를 메타 데이터로 담아 모든 개발 환경을 통일시킬 수 있다.
  • 코드 상의 모든 곳에는 절대경로가 아닌 상대경로를 사용해야 하며, .env와 같은 파일에 환경 변수를 설정한다.
  • 환경에 따라 포트를 분기할 수 있도록 환경 변수를 설정한다.

배포를 위한 다양한 클라우드 플랫폼이 있다.

heroku, MS Azure, Firebase, DigitalOcean, 그리고 AWS

참고 자료 : 코드 스테이츠

profile
🙌🙌🙌🙌

0개의 댓글