클라우드 기본 개념 (1) - 클라우드 컴퓨팅 서비스, Monolith, MSA
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 |
구성 | 하나의 단일 애플리케이션으로 모든 기능을 포함 | 작은 서비스들로 나누어 각 서비스가 독립적 |
확장성 | 확장에 제한이 있을 수 있음 | 서비스 단위로 독립적인 확장이 가능 |
배포 | 전체 애플리케이션을 한 번에 배포 | 각 서비스를 독립적으로 배포 |
기술 스택 | 동일한 기술 스택 사용 | 각 서비스가 다른 기술 스택 사용 가능 |
유지보수 | 시스템이 커질수록 유지보수 어려움 | 유지보수 용이 |
복잡도 | 상대적으로 낮음 | 높은 복잡도를 가질 수 있음 |
의존성 | 서비스 간 결합도가 높음 | 서비스 간 의존성이 낮고 독립적 |