클라우드 컴퓨팅은 가상화된 IT 자원을 서비스로 제공하는 것으로 가상화하는 대상에 따라 인프라스트럭처, 플랫폼, 소프트웨어로 구분한다.
1. IaaS (Infrastructure-as-a-Service): 물리적 컴퓨팅 자원 제공
클라우드 시스템에서 인프라 스트럭처(Infrastructure) 레벨의 가상화를 제공하는 서비스이다. 인터넷을 통해 최종 사용자에게 IT 인프라를 제공하는 형태의 클라우드 컴퓨팅이다. 클라우드 서비스 사용자에게 물리적인 하드웨어 자원을 제공하여 사용자가 직접 운영체제(OS: Operating System) 및 개발한 애플리케이션을 포함하여 애플리케이션이 실행할 수 있는 소프트웨어를 설치할 수 있도록 하는 서버 하드웨어 가상화 서비스 제공 모델이다. IaaS는 주로 서버리스 컴퓨팅(Severless Computing)과 관련이 있다.
이 서비스는 확장성이 높고 자동화된 컴퓨팅 하드웨어 자원을 가상화하여 제공하며, 클라우드 서비스를 사용하여 애플리케이셩을 개발하는 개발자는 가상화된 컴퓨팅 하드웨어를 이용하여 운영체제와 애플리케이션을 직접 관리해야 한다. 관리 측면에서 서비스 개발자와 인프라 관리자의 역할을 분담할 수 있다.
- 사용자가 원하는 운영체제와 해당하는 스펙을 선택하면 모든 관리를 아마존에서 한다. 운영체제 종류 뿐만 아니라 다양한 자원들을 사용자가 선택하기 때문에 IaaS 에 해당한다
- 물리적인 서버와 네트워크, 저장장치 등을 직접 구매하거나 직접 준비하지 않고 원하는 운영체제를 설치하여 서버로 사용할 수 있다.
IaaS 서비스 제공자는 가상화, 스토리지, 네트워크, 서버를 제공한다. IaaS 서비스 사용자는 온프레미스(On-Premise) 데이터 센터를 둘 필요가 잆으며 이러한 구성 요소를 직접 업데이터하거나 유지관리하는 부담에서 벗어날 수 있다. IaaS 서비스 사용자는 API(Application Programming Interface) 또는 대시보드를 통해 인프라를 완벽히 제어한다.
예)
- AWS(Amazon Web Service)의 EC2, Microsoft Azure, Google Compute Engine (GCE)
(2) PaaS (Platform as a Service): 애플리케이션 개발을 위한 플랫폼 제공
하드웨어 및 애플리케이션 소프트웨어 플랫폼을 제 3사를 통해 제공되는 클라우드 컴퓨팅이다. 클라우드 시스템에서 사용자가 애플리케이션을 개발할 수 있는 플랫폼과 환경을 가상화하여 제공하는 서비스로 사용자는 운영체제, 서버 하드웨어, 네트워크 등을 고려할 필요가 없다. PaaS 서비스 사용자는 애플리케이션 개발 및 배포에만 집중할 수 있다.
PaaS는 개발자와 프로그래머가 해당 프로세스와 관련된 인프라 또는 플랫폼을 구축하고 유지 관리할 필요 없이 개발한 자신의 애플리케이션을 개발, 실행 및 관리할 수 있도록 한다.
서비스 제공 예)
- AWS Elastic Beantalk, WIndows Azure, GoogleApp Engine, Heroku, IBM Bluemix, Red Hat OpenShift, SalesForce
- 일상 간소화를 지원하는 애플리케이션 개발 시 다음의 내용을 고려하여야 하는데 PaaS 를 사용하면 다음을 고려하지 않아도 된다.
- 온프레미스(On-Premise) 하드웨어 설치
- 서버 유지 관리
- 인프라 소프트웨어를 최신 상태로 유지
- 애플리케이션을 개발할 사용자 플랫폼 구축
PaaS 장점:
- 개발자와 프로그래머가 자신의 아이디어를 검증하기 위해서 새로운 장비를 구입하거나 자체 시설에서 장비를 유지 관리하는 번거러움을 피할 수 있음
- 애플리케이션 개발과 혁신에 보다 집중할 수 있으며 인프라 구축 및 코딩 업무량 감소시킬 수 있음
(3) SaaS (Software as a Service): 고객이 사용하는 소프트웨어 제공
클라우드 시스템에서 사용자에게 클라우드 기반 애플리케이션 소프트웨어를 가상화하여 제공하는 서비스이다. 소프트웨어를 서비스로 제공하는 클라우드 컴퓨팅으로 다음의 경우에 적합한 솔루션이다.
- 인프라, 플랫폼, 소프트웨어 유지관리를 하지 않는 경우
- 문제 해결을 위해 최소한의 개발자가 참여해야 하는 과제의 경우
- 서비스 구독 모델을 선호하는 경우
SaaS를 사용하면 소프트웨어를 영구 구매하거나 강력한 온프레미스(on-premise) IT 인프라에 투자할 필요가 없기 때문에 사용자의 초기 비용이 줄어든다. 그러나 SaaS 서비스 성능은 인터넷 연결 속도에 따라 달라지기 떄문에 고속 네트워크 하드웨어에 투자할 필요가 있다.
- 소비자 대상 서비스: Google Apps, Google Docs, Microsoft Office 365, Dropbox
- 엔터프라이즈 서비스: 인사관리 소프트웨어, 콘텐츠 관리 시스템, 고객 관계 관리 툴, Salesforce, IDE
사용자는 컴퓨터 또는 모바일 기기의 웹 브라우저를 통해 소프트웨어와 상호작용 한다. REST(Representational State Transfer) 또는 SOAP(Simple Object Access Protocol) API(Application Programming Interface) 를 사용하여 소프트웨어와 다른 기능을 연결할수 있다.
(4) FaaS (Function-as-a-Service)
상태가 없는(stateless) 컨테이너에서 실행되는 이벤트 기반 컴퓨팅 실행 모델로 서비스를 사용하여 서버측 로직과 상태를 관리한다. 개발자는 FaaS를 통해 자체 인프라를 유지 관리할 필요 없이 기능으로서의 애플리케이션 패키지를 구축, 실행, 관리할 수 있다. FaaS는 서버리스 컴퓨팅을 구현하는 방법으로 개발자가 비즈니스 로직을 개발하면 플랫폼이 관리를 전담하는 컨테이너에서 이를 실행할 수 있다.
FaaS는 개발자에게 서버를 관리할 필요 없이 이벤트에 대응하여 애플리케이션을 실행하도록 지원하는 추상화 기능을 제공힌다. 예로 파일을 클라우드에 업로드하면 다양한 형식으로 파일을 트랜스코딩하는 사용자 지정 코드를 트리거할 수 있다. FaaS 인프라는 주로 이벤트 기반 실행 모델을 통해 온 디멘드로 미터링된다. FaaS는 PaaS 처럼 서버 프로세스를 백그라운드에서 계속 실행할 필요는 없다. FaaS 활용 사례로 데이터 처리, IoT 서비스, 모바일 또는 웹 애플리케이션 등이 있다.
예)
- AWS Lambda, Google Cloud Functions, Microsoft Asure Functions, OpenFaaS
(5) CaaS (Container-as-a-Service)
On-Premise 데이터 센터 또는 클라우드를 사용하여 컨테이너를 통해 사용자가 애플리케이션을 배포하고 관리하도록 지원하는 클라우드 서비스 컴퓨팅 모델이다. 서비스 제공업체는 컨테이너의 배포 및 관리 프레임워크 또는 오케스트레이션 플랫폼을 제공한다.
안전성과 확장성이 강화된 애플리케이션 컨테이너를 구축하는 개발자에게 유용하며 사용자는 원하는 리소스(스케줄링 기능, 부한 분산 등)만을 구입할 수 있어 비용 절감과 효율성을 높인다. Iaas 하위 집합의 한 종류로 IaaS와 PaaS 중간에 해당한다. CaaS 의 기본 자원은 클라우드 네이티브 애플리케이션과 마이크로 서비스를 지원하는 주요 배포 메커니즘인 컨테이너 이다.
참고자료
'클라우드 컴퓨팅' 카테고리의 다른 글
| [AWS Certified Solutions Architect]AWS Compute Services - Virtual Machne EC2 (0) | 2024.04.24 |
|---|---|
| [AWS Certified Solutions Architect] 클라우드 컴퓨팅과 AWS (0) | 2024.04.16 |
| [AWS] AWS Identity and Access Management(IAM) (0) | 2024.02.20 |
| [Docker] 우분투 컨테이너(ubuntu container)에 package 설치 (0) | 2022.11.02 |
| [클라우드]도커 네트워킹 구성 (0) | 2022.10.26 |