서버의 자원과 공간 및 네트워크 환경을 제공하는 서비스
단점이 존재하긴 하지만, 클라우드 서비스를 사용함으로써 얻는 이점이 더 많기 때문에 널리 사용되고 있다.
SaaS (Software as a Service)
: 클라우드 제공자가 당장 사용 가능한 소프트웨어를 제공하는 경우
PaaS (Platform as a Service)
: 클라우드 제공자가 데이터베이스, 개발 플랫폼까지 제공하는 경우
IaaS (Infrastructure as a Service)
: 클라우드 제공자가 가상 컴퓨터까지 제공하는 경우
클라우드 제공자로부터
'얼마만큼의 서비스를 제공받느냐'
에 따라서 이러한 서비스의 형태가 구분된다
배포가 되기까지의 전체적인 개발 단계는 기본적으로 4단계
Developement -> Integration -> Staging -> Production
를 거쳐서 진행된다.
Development (개발단계)
Integration 단계
Staging 단계
Production 단계
여기서, Development 환경과 Production 환경은 서로 다를 수가 있다.
예를 들어 로컬의 node버전, 인증정보, DB Endpoint 등은 클라우드의 그것들과 다를 수 있다.
따라서, 환경의 차이를 이해하고 '환경 설정을 코드와 분리' 하는 것이 중요하다.
절대경로 대신 상대경로
를 사용한다.
코드 상의 모든 곳에 절대 경로가 아닌 상대 경로를 사용하는 것을 지향한다.
환경에 따라 포트를 분기할 수 있도록 환경변수를 설정
해준다.
설정을 환경 변수(environment variable; envvars/env라고도 불린다)에 저장해야 한다.
환경 변수
는 코드 변경 없이 배포 때마다 쉽게 변경할 수 있으며, 설정 파일과 달리 실수로 코드 저장소에 올라갈 가능성도 낮다.
Docker
와 같은 개발환경을 통일시키는 솔루션을 사용한다.
Docker와 같은 가상화 도구를 사용하면 환경 자체를 메타데이터로 담아서 모든 개발 환경을 통일시칼 수 있다