포스팅 하게 된 이유
새로운 프로젝트를 진행하게 되어 백엔드 개발자를 맡게 되었고 서버를 구축해 본 경험이 없는 나는 서버를 구동하기 위해선 서버 컴퓨터를 24시간 내내 돌리거나 클라우드 서버를 이용해야한다는 것을 알게 됐다. 그렇게 대표적인 클라우드 서버인 AWS를 이용하게 되었다. 이 조사 과정에서 AWS가 대표적인 IaaS 서비스라는 것을 알게 됐다.
이렇게 알게 된 김에, 그동안 말로만 듣고 대충 알았던 (?) 클라우드 컴퓨팅, IaaS, PaaS, SaaS에 대해서 정리해보고자 한다.
인터넷을 통해 가상화 된 IT 리소스(infrastructure, platform, software)를 서비스로 제공하는 것.
착각하기 쉬운 점은 '가상화된 리소스를 제공한다'는 개념 때문에 단순 컴퓨터의 물리적 자원을 원격으로 사용하는 것으로 생각할 수 있지만, 아래와 같이 더 많은 범위를 지원하기도 한다.
이러한 클라우드 컴퓨팅 서비스 모델은 제공 업체의 지원 범위(하늘색 네모)에 따라 IaaS, PaaS, SaaS로 분류된다.
서비스 운용에 필요한 "인프라(HW 자원)를 서비스로 제공"
IaaS는 네트워크, 스토리지, 서버와 같은 HW 자원을 가상화하여 제공한다.
가상화된 물리적 자산을 UI 형태의 대시보드 혹은 API로 제공한다. 사용자는 실질적으로 클라우드에 있는 가상 데이터센터를 통해 손쉽게 서버와 스토리지에 접근할 수 있게 된다.
🌟 대부분의 IaaS는 생성 시 OS나 DBMS와 같은 미들웨어를 선택하게 되어 있어 제공한다는 느낌이 있지만, 사용자가 많은 옵션 중 직접 선택할 수 있게 했으므로 제공하지 않는다고 분류한다!
SW 개발에 필요한 "플랫폼을 서비스로 제공"
PaaS는 IaaS에서 제공하는 범위를 포함한, OS, DB와 같은 미들웨어, 런타임과 같은 SW 작성에 필요한 플랫폼을 가상화하여 제공한다. 이로써 사용자는 "어플리케이션" 과 "데이터"에만 집중할 수 있다.
🌟 IaaS와 헷갈릴 수 있는데 AWS E2C와 같은 가상기기가 VM을 제공하는 IaaS라면, PaaS는 node.js, Java와 같은 런타임을 미리 깔아놓고, 거기에 소스코드를 넣어서 돌리는 구조다. 즉, 사용자는 소스코드만 작성해 빌드 하고, 클라우드에서 컴파일한 결과를 가져오는 방식으로 활용한다.
고객이 사용하는 "소프트웨어(Application)를 제공"
완성된 응용 프로그램을 클라우드 컴퓨팅으로 제공한다. 네트워크 접속 만으로 설치나 환경설정에 대한 작업 없이 바로 사용이 가능하지만 커스터마이징이 어렵다는 단점이 있다.
https://www.whatap.io/ko/blog/9/
https://wnsgml972.github.io/network/2018/08/14/network_cloud-computing/