무어의 법칙에 따라 트랜지스터 수가 24개월마다 2배가 된다. 실제로 CPU나 메모리 성능이 빠르게 향상되었다. 그렇게 빠른 속도로 메모리와 CPU의 성능이 개선되었다. 그니까, 같은 하드웨어 자원을 사용해도 지금은 더 빠르게 사용할 수 있게 되었다는 의미다.
더하여 하드웨어 자원도 용량이 점점 더 커지고 심지어 가격도 저렴해 졌다. 그러다 보니, 하나의 앱 서버로만 컴퓨터를 구동시키기에는 이 자원이 너무 아까운 것이다.
예를 들어, 나는 100만큼 할 수 있는데 실제로는 1만큼만 일하고 있으니까 너무 아까울 테다.
그래서 나머지 99만큼의 자원에도 일거리를 주어 효율적으로 자원을 사용하기 위해 가상 머신(VM)이라는 개념이 등장했다. 100만큼 하는 내 컴퓨터를 논리적으로 100개로 나누어 가상 서버로 사용할 수 있게 하는 기술이 바로 가상화다.
대표적인 클라우드 서비스 제공업체인 아마존(AWS)은 엄~청난 성능과 저장 공간을 갖춘 슈퍼컴퓨터급 물리 서버를 여러 개 보유하고 있다. 그리고 그 위에 Hypervisor(이전 포스팅에서 다뤘으니 참고)를 설치하여 수백, 수천 개의 VM을 돌린다.
아마존(AWS)의 입장에서는,,
나 슈퍼컴퓨터 짱 많은데 빌려줄까? 전기세도 내가 내고 컴퓨터 고장나도 내가 수리해. 너는 그냥 컴퓨터(VM) 빌려다가 너 쓸 만큼만 써. 그 대신 쓴 만큼의 돈을 나에게 줘!
이렇게 된다.
AWS의 사용자 입장에서는,,
작은 앱 서버 하나 돌릴 건데 내 컴퓨터 하나를 전부 쓰자니 너무 아깝잖아😨 10GB 정도면 충분한데, 딱 그만큼만 쓸 수는 없을까? 혹시 옆 팀에 남는 컴퓨터 있나?
옆 팀의 남는 컴퓨터를 빌려 쓰듯, 필요한 만큼의 자원만 클라우드 컴퓨팅 서비스 자원을 빌려 쓰는 것이다.
클라우드 컴퓨팅은 인터넷을 통해 서버 뿐 아니라 스토리지, 데이터베이스, 네트워킹, 소프트웨어와 같은 컴퓨팅 서비스를 제공한다.
이는 기업이나 개인이 온프레미스 인프라에 대한 투자 없이도 필요한 컴퓨팅 자원을 유연하게 사용할 수 있게 한다.
클라우드 컴퓨팅은 다양한 서비스 모델로 제공된다.
각 모델은 제공되는 서비스의 범위와 사용자가 관리해야 하는 컴퓨팅 자원의 범위가 다르다.

https://www.redhat.com/en/topics/cloud-computing/iaas-vs-paas-vs-saas
IaaS는 사용자에게 컴퓨터 하드웨어만 빌려주는 것이다. 사용자는 운영체제부터 애플리케이션까지 원하는대로 설치하며 사용할 수 있다.
클라우드에서는 서버, 네트워크, 스토리지, 가상화 환경과 같은 기본적인 컴퓨팅 인프라를 제공한다. 따라서 기업은 인프라를 구축하는 비용, 유지보수 비용이 절감된다.
AWS의 EC2 처럼, 리소스 또한 필요에 따라서 확장하거나 축소할 수 있다. 처음에는 소규모 인스턴스를 사용하다가 나중에 프로덕션이 커지면 그 때 확장할 수 있기 때문에 비용 효율적이다.
IaaS는 개발 및 테스트 환경 구축, 웹 애플리케이션 호스팅, 데이터 분석 작업, 대규모 데이터베이스 관리 등 다양한 용도로 사용될 수 있다.
PaaS는 플랫폼을 바로 구축할 수 있는 환경을 빌려준다. 개발자는 코드를 local에서 작성하고 PaaS로 바로 배포, 관리할 수 있다.
클라우드에서는 운영체제, 개발 도구, 데이터베이스 관리 시스템과 같이 애플리케이션 개발에 필요한 플랫폼과 도구를 제공한다. 소프트웨어 개발자는 개발만 할 수 있도록 하여 생산성을 높여준다.
PaaS는 개념적으로는 플랫폼을 제공하는 서비스지만, 실제로는 다양한 형태(소스코드 저장소, 자동 배포 도구, 팀 협업 도구 등)로 제공되기 때문에 조금 생소하게 느껴질 수 있다.
예를 들어 더 자세히 이해해보자.
Heroku는 개발자가 애플리케이션 코드를 push만 하면 바로 배포되고 운영 환경까지 자동으로 구성되는 대표적인 PaaS 서비스다.
Vercel이나 Netlify는 정적 페이지를 자동으로 배포해주는 서비스다. 프론트엔드 개발자들이 많이 사용하며, Github에서 코드를 관리한다면 push 와 동시에 자동으로 빌드/배포된다.
SaaS는 우리에게 익숙한 개념이다. 소프트웨어까지 전부 구축된 환경을 제공하는 것이다. 사용자는 별도의 설치 과정 없이 인터넷으로 웹 환경의 애플리케이션에 접근할 수 있다.
클라우드에서는 소프트웨어의 호스팅과 유지 관리를 담당한다. 따라서 사용자는 그저 원하는 기능을 마음껏 사용하면 된다.
예를 들어, Gmail, Dropbox, Slack 같은 서비스는 별도의 설치 없이 웹 환경에서 바로 사용할 수 있는 SaaS 서비스다.
무어의 법칙이 아직도 유효하나요?