- 클라우드?
클라우드 컴퓨팅(cloud computing)은 사용자의 직접적인 활발한 관리 없이 특히, 데이터 스토리지(클라우드 스토리지)와 컴퓨팅 파워와 같은 컴퓨터 시스템 리소스를 필요 시 바로 제공(on-demand availability)하는 것을 말한다. 일반적으로는 인터넷 기반 컴퓨팅의 일종으로 정보를 자신의 컴퓨터가 아닌 클라우드에 연결된 다른 컴퓨터로 처리하는 기술을 의미한다. 공유 컴퓨터 처리 자원과 데이터를 컴퓨터와 다른 장치들에 요청 시 제공해준다. 구성 가능한 컴퓨팅 자원(예: 컴퓨터 네트워크, 데이터 베이스, 서버, 스토리지, 애플리케이션, 서비스, 인텔리전스)에 대해 어디서나 접근할 수 있는, 주문형 접근(on-demand availability of computer system resources)을 가능케하는 모델이며 최소한의 관리 노력으로 빠르게 예비 및 릴리스를 가능케 한다. 클라우드 컴퓨팅과 스토리지 솔루션들은 사용자와 기업들에게 개인 소유나 타사 데이터 센터의 데이터를 저장, 가공하는 다양한 기능을 제공하며 도시를 거쳐 전 세계로까지 위치해 있을 수 있다. 클라우드 컴퓨팅은 전기망을 통한 전력망과 비슷한 일관성 및 규모의 경제를 달성하기 위해 자원의 공유에 의존한다.
이와 같은 클라우드에는 여러 유형의 클라우드 서비스들이 존재한다.
아래에서 각 서비스 유형별 특징을 살펴보자.
※ 클라우드 서비스 종류
- SaaS(Software as a Service)
‘서비스로서의 소프트웨어’를 의미하는 SaaS는 클라우드 서비스 형태 중 가장 완성된 형태의 클라우드 서비스이다.
클라우드 인프라 위에 소프트웨어를 탑재해 제공하는 형태로 IT 인프라 자원뿐만 아니라 소프트웨어 및 업데이트, 버그 개선 등의 서비스를 업체가 도맡아 제공한다.
별도의 비용을 들여 소프트웨어 라이센스를 구매할 필요 없이 월간/연간 구독 형태의 사용료를 지불하고 제공 업체의 소프트웨어를 이용하게 된다.
SaaS를 이용할 경우 사용자는 인프라 구축, 개발 환경 세팅 및 소프트웨어 개발에 소요되는 비용을 절약할 수 있기 때문에 자체적으로 소프트웨어를 개발하는 것 대비 초기 비용을 대폭 줄일 수 있다. 하지만, 인터넷 연결 상태에 따라 서비스의 성능이 달라질 수 있고, 제공 업체가 이미 만들어 놓은 소프트웨어 그대로 사용해야 하기 때문에 불필요한 기능이 비용에 포함되어 있기도 하다.
→ 예시) N드라이브, 구글 드라이브, iCloud, 슬랙(Slack), 마이크로소프트365(Microsoft 356), 드롭박스(Dropbox), 세일즈포스(Salesforce) 등
- FaaS(Function as a Service)
FaaS는 서버리스(serverless) 컴퓨팅을 구현하는 방식으로, 개발자가 비즈니스 로직을 작성하면 플랫폼이 관리를 전담하는 Linux 컨테이너에서 이를 실행한다.
이 모델은 일반적으로 클라우드 컴퓨팅 서비스를 사용하는 클라우드 컴퓨팅 플랫폼이지만 확장을 통해 온프레미스 및 하이브리드 배포까지도 포괄하고 있다.
서버리스는 개발자의 서버 및 리소스 할당 관리 또는 프로비저닝과 같은 인프라 문제를 추상화하고 이를 플랫폼에 적용하므로 개발자는 코드 작성과 비즈니스 가치 제공에 집중할 수 있다.
기능이란 운영 체제에서 비즈니스 로직을 실행하는 소프트웨어 요소를 말한다. 애플리케이션은 여러 기능으로 구성될 수 있다.
FaaS 모델 사용은 서버리스 아키텍처로 애플리케이션을 구축하는 한 가지 방식이지만 서버리스 패러다임의 인기가 높아지면서 개발자들은 서버리스 마이크로서비스와 스테리트리스 컨테이너 구축을 지원하는 솔루션을 찾고 있다.
→ 예시) IBM Cloud Functions, Amazon의 AWS Lambda, Google Cloud Functions, Microsoft Azure Functions(오픈소스), OpenFaaS(오픈소스) 등
- PaaS(Platform as a service)
서비스로서의 플랫폼(Platform-as-a-service, PaaS)은 하드웨어 및 애플리케이션 소프트웨어 플랫폼이 제3사를 통해 제공되는 클라우드 컴퓨팅의 한 가지 형태이다. 주로 개발자와 프로그래머가 사용하는 PaaS는 보통 해당 프로세스와 관련된 인프라 또는 플랫폼을 구축하고 유지관리할 필요 없이 자체 애플리케이션을 개발, 실행 및 관리 할 수 있도록 해준다.
PaaS 제공업체는 자체 인프라에서 하드웨어와 소프트웨어를 호스팅하고 이러한 플랫폼을 사용자에게 통합 솔루션, 솔루션 스택 또는 인터넷을 통한 서비스로 제공한다.
예를 들어 일상 업무 간소화를 지원하는 애플리케이션에 대한 좋은 아이디어가 떠올라 코드를 작성했다고 가정해 보자. 이러한 애플리케이션의 활용 범위와 잠재적 가능성을 기대하게 된다. 온프레미스 하드웨어 설치, 서버 유지관리, 인프라 소프트웨어를 최신 상태로 유지, 애플리케이션을 개발할 사용자 지정 플랫폼 구축 등과 관련된 추가 부담을 피하려면 이러한 플랫폼을 호스팅하고 코드 실행에 필요한 환경을 제공하는 PaaS 제공업체를 이용하면 된다.
→ 예시) Azure App Service, Google App Engine, Elastic Beanstalk 등
- CaaS(Container as a Service)
CaaS(Containers-as-a-Service)는 컨테이너 기반 추상화를 사용해 애플리케이션을 관리하고 배포할 수 있도록 지원하는 클라우드 서비스이다. CaaS는 온프레미스 또는 클라우드에 배포할 수 있다.
제공업체는 컨테이너가 배포 및 관리되는 프레임워크 또는 오케스트레이션 플랫폼을 제공하는데, 핵심 IT 기능이 자동화되는 것은 바로 이러한 오케스트레이션을 통해서이다.
CaaS는 특히 안전성과 확장성이 강화된 애플리케이션 컨테이너를 구축하는 개발자에게 유용하다. 사용자는 원하는 리소스(스케줄링 기능, 부하 분산 등)만을 구입할 수 있으므로 비용을 절약하고 효율성을 높이게 된다.
컨테이너는 일관된 환경을 구축하여 어디서나 실행 가능한 클라우드 네이티브 애플리케이션을 신속하게 개발해 제공할 수 있도록 지원한다.
클라우드 컴퓨팅 서비스의 범위에서 CaaS는 서비스로서의 인프라(Infrastructure-as-a-Service, IaaS) 하위 집합의 한 종류로 간주되며 IaaS와 서비스로서의 플랫폼(Platform-as-a-Service, PaaS) 사이에 있다.
CaaS의 기본 리소스는 클라우드 네이티브 애플리케이션과 마이크로서비스를 지원하는 주요 배포 메커니즘인 컨테이너이다. CaaS는 또한 하이브리드 또는 멀티클라우드 환경 간 이식성을 높여준다.
컨네이너를 사용하면 다음과 같은 여러 이점을 누릴 수 있다.
◎ 이식성 : 컨테이너에서 개발된 애플리케이션은 실행에 필요한 모든 요소를 갖추고 있으며, 프라이빗 및 퍼블릭 클라우드 등 다양한 환경에서 배포 가능하다. 이식성은 유연성을 의미하는데, 여러 환경 및 제공업체 간에 워크로드를 손쉽게 이동시킬 수 있기 때문이다.
◎ 확장성 : 컨테이너는 수평적으로 확장할 수 있는데, 이는 사용자가 같은 컨테이너 내의 동일 컨테이너 수를 늘려 필요 시 확장할 수 있다는 의미이다. 필요할 때 필요한 만큼만 사용하고 실행함으로써 비용을 대폭 절감할 수 있다.
◎ 효율성 : 컨테이너는 별도의 운영 체제가 필요없으므로 가상 머신(Virtual Machine, VM)보다 리소스가 적게 필요하다. 단일 서버에서 여러 컨테이너를 실행할 수 있고 필요한 베어 메탈 하드웨어 수가 적으므로 비용이 줄어든다.
◎ 보안 강화 : 컨테이너는 서로 격리되어 있으므로 한 컨테이너의 보안이 침해되더라도 다른 컨테이너들이 영향을 받지 않는다.
◎ 속도 : 운영 체제에 구애받지 않기 때문에 컨테이너를 시작하고 종료하는 데 몇 초밖에 안 걸린다. 그 때문에 개발 및 운영 속도가 더 빨라지고 사용자 경험도 더 신속하고 원활해진다.
→ 예시) Elastic Kubernetes Service, Google Kubernetes Engine, Azure Kubernetes Service, Azure Container Instance, Cloud Run, AWS Fargate, ECS 등
- IaaS(Infrastructure as a Service)
IaaS는 PaaS(Platform-as-a-Service) 및 SaaS(Software-as-a-Service)와 함께 3대 클라우드 서비스 모델 중 하나이며, 사용자가 오버헤드 없이 온프레미스 컴퓨팅 리소스의 모든 이점을 누릴 수 있다. IaaS 모델에서는 사용자가 애플리케이션, 데이터, 운영 체제, 미들웨어, 런타임을 다룬다.
IaaS 벤더는 가상화, 스토리지, 네트워크, 서버를 제공한다. 따라서 사용자는 온프레미스 데이터 센터를 둘 필요가 없고, 이러한 구성 요소를 직접 업데이트하거나 유지관리하는 부담에서도 벗어날 수 있다.
대개 IaaS 사용자는 애플리케이션 프로그래밍 인터페이스(API) 또는 대시보드를 통해 인프라를 완벽히 제어한다. IaaS는 유연한 서비스형(as-a-Service) 클라우드 모델이므로, 향후 요구 사항을 예측하고 비용을 미리 지불할 필요 없이 훨씬 더 수월하게 확장, 업그레이드하고 클라우드 스토리지와 같은 리소스도 추가할 수 있다.
→ 예시) Amazon Web Services (AWS), Microsoft Azure, Google Cloud, IBM Cloud 등
'클라우드 > AWS' 카테고리의 다른 글
[클라우드/AWS] IAM 사용자와 권한 및 정책 (0) | 2022.04.08 |
---|---|
[클라우드/AWS] IAM(Identity and Access Management) 의미 및 기능 (0) | 2022.04.07 |