Cloud

클라우드 기본 개념 (1) - 클라우드 컴퓨팅 서비스, Monolith, MSA

오은이 2024. 12. 6. 14:57

 

 

1. 클라우드

 
정의

  • 인터넷 기반의 컴퓨팅
  • 서버, 네트워크, 애플리케이션, 서비스 등 다양한 컴퓨팅 리소스에 장소나 시간 제약 없이 쉽고 빠른 접근 가능

 
클라우드 종류

  • 공용 클라우드 (Public Cloud) : 여러 사용자에게 자원을 제공하는 클라우드 (예: AWS, Azure, GCP)
  • 사설 클라우드 (Private Cloud) : 특정 조직이나 기업만을 위한 전용 클라우드
  • 커뮤니티 클라우드 (Community Cloud) : 여러 조직이나 기업이 공동으로 사용하는 클라우드
  • 하이브리드 클라우드 (Hybrid Cloud) : 공용 클라우드와 사설 클라우드를 결합하여 사용하는 클라우드
  • 멀티 클라우드 (Multi-Cloud) : 여러 클라우드 서비스 제공업체의 서비스를 동시에 사용하는 모델
  • 엣지 클라우드 (Edge Cloud) : 데이터를 생성되는 지점에서 처리하는 클라우드, IoT 및 실시간 처리에 적합

 
 


 
 
 

2. 클라우드 컴퓨팅 서비스

 
IaaS (InfraStructure as a Service)

  • 클라우드 인프라 서비스
  • 인터넷을 통해 최종 사용자에게 IT 인프라를 제공하는 형태의 클라우드 컴퓨팅이다.
  • Amazon Web Services (AWS) EC2, Microsoft Azure Virtual Machines, Google Compute Engine 등이 있음

 
PaaS (Platform as a Service)

  • 클라우드 플랫폼 서비스
  • 개발자가 애플리케이션을 만들고 배포하는 데 필요한 플랫폼을 제공
  • Google App Engine, Microsoft Azure App Services, Heroku 등이 있음

 
SaaS (Software as a Service)

  • 소프트웨어 서비스
  • 최종 사용자가 인터넷을 통해 애플리케이션을 사용하는 서비스 모델
  • Microsoft 365, Notion, Figma, Google Workspace, Dropbox 등이 있음

 
 
 
 
 
입문자라면 IaaS, PaaS, SaaS만 알아도 충분하지만, 그 외에도 많은 클라우드 컴퓨팅 서비스들이 있다.
 
 
FaaS (Function as a Service)

  • 서버리스 컴퓨팅 모델
  • 애플리케이션의 개별 기능을 클라우드에서 실행할 수 있게 해준다.
  • 개발자가 자체 인프라를 유지관리할 필요 없이 애플리케이션 패키지를 기능으로 빌드, 실행, 관리할 수 있게 해주는 클라우드 컴퓨팅 서비스이다.
  • AWS Lambda, Google Cloud Functions 등이 있음

 
CaaS (Container as a Service)

  • 컨테이너화된 애플리케이션을 관리하고 실행하는 플랫폼
  • 주로 컨테이너(예: Docker)를 기반으로 하는 서비스로, 애플리케이션을 클라우드에서 쉽게 배포하고 관리할 수 있도록 돕는다.
  • Google Kubernetes Engine (GKE), Amazon Elastic Kubernetes Service (EKS) 등이 있음

 
BaaS (Backend as a Service)

  • 서비스형 백엔드
  • 웹 애플리케이션의 백엔드 서버를 클라우드에서 제공하는 서비스이다.
  • 서비스형 모바일 백엔드(MBaaS)는 백엔드 측면 개발을 자동화시키고 클라우드 인프라를 다루는 플랫폼이다.
  • Firebase, Parse 등이 있음

 
DaaS (Desktop as a Service)

  • 클라우드에서 제공되는 데스크탑 환경
  • 사용자들은 클라우드를 통해 원격으로 데스크탑을 이용하고, 애플리케이션을 실행하며 작업할 수 있다.
  • Amazon WorkSpaces, Citrix Virtual Apps and Desktops 등이 있음

 
IDaaS (Identity as a Service)

  • 클라우드 기반의 인증 및 관리 시스템을 제공하는 서비스
  • 업이 사용자 인증, 접근 관리, Single Sign-On(SSO) 등을 클라우드에서 처리할 수 있다.
  • Okta, Azure Active Directory 등이 있음

 
MaaS (Monitoring as a Service)

  • 클라우드에서 모니터링 및 관리 서비스를 제공하는 모델
  • 업이나 개발자는 애플리케이션, 시스템, 네트워크 등의 성능을 모니터링하고 관리할 수 있다.
  • Datadog, New Relic 등이 있음

 
XaaS (Anything as a Service)

  • 특정한 범위에 국한되지 않고 다양한 서비스
  • 클라우드에서 제공할 수 있는 거의 모든 서비스 모델을 포괄하는 개념

 
이 외에도 TaaS (Testing as a Service), CaaS (Communication as a Service), B2B SaaS (Business-to-Business Software as a Service), RaaS (Robotics as a Service), DBaaS (Database as a Service), VaaS (Video as a Service) 등등 수 많은 클라우드 컴퓨팅 서비스가 있다.
 
클라우드 서비스는 계속해서 발전하고 있으며, 다양한 요구를 충족시키기 위해 새로운 서비스 모델들이 등장하고 있다.
 
 
 


 
 
 

3. Monolith와 MSA(Microservices Architecture)

 
Monolith

  • 하나의 단일 애플리케이션으로 구성된 전통적인 소프트웨어 아키텍처
  • 이 방식에서는 모든 기능이 하나의 코드베이스와 함께 배포된다.

 
MSA(Microservices Architecture)

  • 애플리케이션을 작고 독립적인 서비스들로 나누어 각 서비스가 독립적으로 배포되고 운영되는 아키텍처
  • 각 서비스는 특정 기능을 수행하며, 서로 독립적으로 관리되고 상호 작용한다.

 
 
Monolith와 MSA 차이

항목 Monolith MSA
구성 하나의 단일 애플리케이션으로 모든 기능을 포함 작은 서비스들로 나누어 각 서비스가 독립적
확장성 확장에 제한이 있을 수 있음 서비스 단위로 독립적인 확장이 가능
배포 전체 애플리케이션을 한 번에 배포 각 서비스를 독립적으로 배포
기술 스택 동일한 기술 스택 사용 각 서비스가 다른 기술 스택 사용 가능
유지보수 시스템이 커질수록 유지보수 어려움 유지보수 용이
복잡도 상대적으로 낮음 높은 복잡도를 가질 수 있음
의존성 서비스 간 결합도가 높음 서비스 간 의존성이 낮고 독립적