서버의 자원과 공간 및 네트워크 환경을 제공하는 서비스
단점이 존재하긴 하지만, 클라우드 서비스를 사용함으로써 얻는 이점이 더 많기 때문에 널리 사용되고 있다.

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와 같은 가상화 도구를 사용하면 환경 자체를 메타데이터로 담아서 모든 개발 환경을 통일시칼 수 있다