클라우드 컴퓨팅은 인터넷(클라우드)를 통해 서버, 스토리지, 데이터베이스, 네트워킹, 소프트웨어 등의 컴퓨팅 서비스를 제공하는 것이다.
클라우드 등장 이전의 방식은 흔히 말하는 서버실과 같은 곳에 컴퓨터를 배치하고 인터넷을 연결하여 서비스를 제공했다.(온프레미스)
그런데 만약 서버가 요청에 대한 수용 능력이 한계에 도달한다면 어떻게 대처할까? (컴퓨팅 능력이 더 필요하다면?)
같은 공간에 더 많은 컴퓨터를 제공하여 한 대가 해결할 수 있는 요청을 여러 대가 나누는 방식을 사용할 수 있다.
또는 컴퓨터 성능을 업그레이드 해준다.
하지만 이런 방식은 몇 가지 문제점들이 있다.
먼저, 주기적인 유지 관리가 필요하다.
또한 공간의 한계가 있다.
서버실이라는 공간에 컴퓨터를 배치해두고 필요할 때마다 컴퓨터를 추가하는 방식으로 수용 능력을 향상해 왔는데, 이러한 방식은 공간이 부족하여 컴퓨터를 더이상 배치할 수 없는 문제에 직면하게 된다.
이런 상황에서 추가적인 서버 증설이 어렵게 되자 데이터 센터라는 거대한 건물을 세우기 시작했고, 이때부터 데이터센터의 유휴 자원을 대여하는 서비스가 등장하기 시작한다.
즉, 서버의 자원과 공간 그리고 네트워크 환경을 빌려 사용하는 클라우드 컴퓨팅이 시작된 것이다.
클라우드 컴퓨팅 서비스의 가장 기본적인 범주.
서버, 스토리지, 네트워킹 등과 같은 IT 인프라를 서비스 형태로 제공한다.
사용한 만큼 비용을 지불한다.
AWS의 EC2, S3
클라우드 제공자가 데이터베이스, 개발 플랫폼까지 제공하는 경우 대부분 PaaS에 해당한다.
IaaS처럼 PaaS에는 서버, 저장소, 네트워킹 뿐만 아니라 미들웨어, 개발 도구, BI 서비스, 데이터베이스 관리 시스템 등도 포함되어 있다.
클라우드에서 완전한 소프트웨어 솔루션을 제공.
클라우드 제공자가 당장 사용 가능한 소프트웨어를 제공하는 경우 대부분 SaaS에 해당한다.
배포는 개발한 서비스를 사용자가 이용 가능하게 하는 과정이다.
회사마다 추가적인 과정이 있을 수 있지만, 기본적으로 Development
, Intergration
, Staging
, Production
이렇게 4단계를 거쳐서 개발한 서비스를 배포하게 된다.
Development
Intergration
Staging
Production
단계와 가장 유사한 환경에서 테스트를 진행.Production
Production
환경에서 코드를 구동하고 서비스를 제공.환경변수에 설정을 저장한다.(.env
)
환경 변수는 코드 변경없이 배포 때마다 쉽게 변경할 수 있다.
잘못해서 코드 저장소에 올라갈 가능성도 적다.
Docker
사용.Docker
와 같은 가상화 도구는 환경 자체를 메타데이터로 담아서 모든 개발 환경을 통일시킨다.