개요
- **클라우드 컴퓨팅 발전**
- 물리 서버 → VM → Cloud (Public, Private, Hybrid)
- 클라우드 컴퓨팅 서비스 종류 (IaaS, PaaS, SaaS)
- 클라우드 네이티브 전환 성숙도 모델
클라우드는 광대한 네트워크를 통해 접근할 수 있는 가상화된 서버와 데이터베이스를 제공하는 IT 환경이다. 즉, 인터넷을 통해 필요한 컴퓨팅 자원을 빌려 쓰는 개념이다.
클라우드 컴퓨팅은 단순한 저장소 개념을 넘어 클라우드에서 직접 작업을 수행하는 방식으로 발전했다. 이로 인해 '클라우드 컴퓨팅'이라는 용어가 더 적합하게 사용된다.
초기에는 클라이언트-서버 모델이 일반적이었다. 클라이언트(모니터, 앱, 데스크톱)에서 요청을 보내면 서버에서 처리하는 방식이었다. 하지만 서버를 직접 구축하고 운영하는 데 많은 비용과 시간이 소요되었다.
이후 가상화 기술이 도입되면서, 하나의 물리 서버 위에 하이퍼바이저(Hypervisor)를 올려 자원을 할당하며 여러 개의 가상 머신(VM)을 생성할 수 있게 되었다. 이를 통해 서버 자원의 효율적인 활용이 가능해졌다.
| 서비스 모델 | 설명 | 예시 |
|---|---|---|
| IaaS (Infrastructure as a Service) | 서버, 스토리지 같은 기본 인프라만 제공 | AWS EC2, Google Compute Engine |
| PaaS (Platform as a Service) | 개발자가 애플리케이션을 쉽게 만들 수 있도록 환경 제공 | AWS Elastic Beanstalk, Google App Engine |
| SaaS (Software as a Service) | 완성된 소프트웨어를 사용자에게 제공 | Gmail, Netflix, ChatGPT |
기업에서는 단일 클라우드만을 사용하지 않고 Public, Private, On-Premise 환경을 적절히 혼합하여 Multi Cloud 또는 Hybrid Cloud 형태로 운영한다.
클라우드 도입의 주요 동기는 비용 절감, 유연성 및 확장성, 운영 자동화, 빠른 서비스 출시이다.
(비용 절감은 초기 투자 비용을 줄일 수 있어도 현실적으로는 자원을 늘려갈수록 많이 비싸지긴 함…)
B2C는 퍼블릭을 쓰기도 하지만, 대부분 기업들은 하이브리드로 쓴다 - 모든 작업이 퍼블릭 / 프라이빗을 빠르게 호환하고 적재적소에 필요한 만큼 필요한 곳에 작업을 배포하고 실행시켜 주는 자동화 방식은 없을까? ⇒ Cloud Native
Cloud Native는 애플리케이션을 구축하고 실행하는 방식으로, 클라우드 환경에서 탄력성과 확장성을 최대한 활용하도록 설계된다.
확장성 (Scalability): 요청에 따라 IT 인프라 자원 및 서비스를 쉽게 확장하거나 축소할 수 있음.
탄력성 (Elasticity): 수요에 따라 자동으로 리소스를 확장하거나 축소하여 트래픽 변화에 대응.
내결함성 (Fault Tolerance): 장애를 분리하여 무중단 서비스 제공 가능.
민첩성 (Agility): 시장과 기술 변화에 신속하게 대응할 수 있는 IT 인프라 및 프로세스 제공.
→ 클라우드 네이티브 컴퓨팅에서 기본적으로 해주는 중요한 작업 중 하나가 바로 수요에 따라 신속하게 필요한 자원을 제공, 회수, 전환할 수 있는 능력을 자동화 해주는 것이다.
기업의 모든 시스템을 한 번에 클라우드 네이티브로 전환하기는 어렵다. 기업이 클라우드 환경에서 최적의 비즈니스 환경을 만들기 위한 기업의 비즈니스와 기술 프로세스를 분석하여 클라우드로 전환을 위한 계획을 세워야 한다. 클라우드 아키텍처의 속성을 바탕으로 클라우드 네이티브로 전환하기 위해 어떤 과정이 있는지 살펴보자.
| 단계 | 전환 모델 | 주요 특징 | 기술 적용 방식 | 속성 |
|---|---|---|---|---|
| 0 | Cloud Ready (Lift-and-Shift) | 기존 시스템을 가상화된 환경으로 이전 | 인프라 코드화 (Infra as Code) 적용 | 인프라 확장 |
| 1 | Cloud Friendly (Refactoring) | 애플리케이션을 무상태 구조로 변경하여 확장성 확보 | CICD 자동화 및 수평적 확장 지원 | 확장성, 탄력성 확보 |
| 2 | Cloud Resilient (Refactoring) | 장애 대응을 위한 자동화 설계 | 장애 복구, 모니터링 내장, 서비스 격리 | 내결함성 확보 |
| 3 | Cloud Native (Re-architecturing) | 마이크로서비스 기반 설계로 유연성 극대화 | API 우선 설계 및 MSA 적용 | 민첩성, 유연성 확보 |
Cloud Native 전환의 핵심 목표는 탄력성과 자동화를 활용하여 빠른 배포와 운영을 가능하게 하는 것이다.