클라우드 아키텍처 이전의 흐름과 배경
현재 클라우드 아키텍처에서 MSA(Microservices Architecture), Landing Zone, 그리고 멀티 클라우드 전략 등이 주류를 이루고 있지만, 과거에는 다른 방식의 IT 인프라 및 애플리케이션 아키텍처가 주로 사용되었다.
1. 온프레미스(On-Premises) 데이터센터
- 배경
- 1990년대~2000년대 초반, 대부분의 기업은 자체 데이터센터를 구축하여 IT 인프라를 운영
- 모든 서버, 스토리지, 네트워크 장비를 직접 구매하고 유지보수해야 했음
- 기업 내부에서 전담 IT 팀이 직접 하드웨어와 소프트웨어를 관리하는 방식
- 특징
- 물리적 서버 기반: 가상화 기술이 없거나 제한적이었으며, 서버 자원을 유연하게 활용하기 어려움
- CAPEX(초기 투자 비용) 중심: 하드웨어를 직접 구매해야 했으며, 초기 투자 비용이 매우 높았음
- 확장성이 제한적: 새로운 서버를 추가하려면 물리적 장비 구매 및 설치가 필요했으며, 몇 주~몇 달이 걸리는 경우가 많음
- 운영 복잡성: 보안, 네트워크 설정, 백업 관리 등을 모두 내부 IT 팀이 직접 수행해야 했음
- 한계점
- 비용 부담이 크고 유연성이 부족하여 빠르게 변화하는 비즈니스 환경에 대응하기 어려움
- 확장이 어렵고 관리가 복잡하여 DevOps와 같은 최신 개발 방식과 어울리지 않음
2. 가상화 & 프라이빗 클라우드 (Virtualization & Private Cloud)
- 배경
- 2000년대 중반, 기업들은 서버 가상화(VMware, Xen, KVM) 기술을 도입하여 물리적 서버의 활용도를 높이기 시작
- 자체 데이터센터 내에서 클라우드와 유사한 환경을 구축한 프라이빗 클라우드 개념이 등장
- 특징
- 서버 가상화: 하나의 물리적 서버에서 여러 개의 가상 머신(VM)을 운영할 수 있게 됨.
- 자원 활용도 증가: 기존 온프레미스 대비 서버 사용률을 높일 수 있음.
- 운영 자동화: OpenStack, vSphere 등의 프라이빗 클라우드 솔루션을 활용하여 일부 자동화 가능.
- 보안 및 규제 준수 용이: 민감한 데이터를 자체 인프라에서 관리할 수 있음.
- 한계점
- 초기 구축 비용이 여전히 높으며, 완전한 클라우드의 장점을 활용하기 어려움.
- 유연성과 확장성이 부족하여 퍼블릭 클라우드(AWS, Azure, GCP)만큼 기민하게 대응하기 어려움.
- 관리 복잡성: 네트워크, 스토리지, 보안 설정 등을 여전히 기업 내부에서 직접 관리해야 함.
3. 모놀리식 아키텍처 (Monolithic Architecture)
- 배경
- 애플리케이션 개발 방식에서도 과거에는 대부분 모놀리식(monolithic) 방식이 사용됨.
- 즉, 하나의 거대한 애플리케이션 안에 모든 기능이 포함되어 있었음.
- 특징
- 하나의 코드베이스: 모든 기능(예: 로그인, 결제, 주문, 추천)이 하나의 애플리케이션 내부에서 실행됨.
- 단일 데이터베이스: 모든 모듈이 하나의 중앙 데이터베이스와 연결됨.
- 배포 방식: 전체 애플리케이션을 한 번에 배포해야 하므로 변경이 어려움.
- 수직 확장(Scale-up): 서버 스펙을 높이는 방식으로 성능을 개선해야 함
- 한계점
- 유연성이 부족: 작은 기능을 수정하더라도 전체 애플리케이션을 재배포해야 함.
- 확장성이 낮음: 일부 기능만 트래픽이 많아도 전체 시스템을 증설해야 함.
- 개발 속도 저하: 여러 팀이 동시에 개발하기 어려워 속도가 느려짐.
4. 퍼블릭 클라우드 & 컨테이너 등장 (Public Cloud & Containers)
- 배경
- 2010년대부터 AWS, Azure, GCP 같은 퍼블릭 클라우드가 빠르게 성장하며 기업들이 기존 온프레미스에서 클라우드로 전환.
- 동시에 Docker, Kubernetes와 같은 컨테이너 기술이 등장하면서 애플리케이션을 유연하게 배포하고 확장할 수 있는 기반이 마련됨.
- 변화된 기술 스택
- 퍼블릭 클라우드 (AWS, Azure, GCP)
- IaaS: EC2, S3, VPC 등 기본 인프라 제공
- PaaS: 서버리스(Lambda, App Engine 등), 매니지드 데이터베이스(RDS, Firestore 등)
- 컨테이너 & 오케스트레이션
- Docker: 컨테이너 기술 표준화
- Kubernetes(K8s): 대규모 컨테이너 오케스트레이션
- CI/CD 및 자동화
- Jenkins, GitHub Actions, GitLab CI/CD 등 DevOps 문화 확산
- 퍼블릭 클라우드 (AWS, Azure, GCP)
요약하자면, 아래와 같다.
- 1세대: 온프레미스 & 물리적 서버 (1990년대~2000년대 초반)
- 모든 인프라를 기업 내부에서 직접 구축하고 운영.
- 확장성이 부족하고 유지보수 비용이 높음.
- 2세대: 가상화 & 프라이빗 클라우드 (2000년대 중반~2010년대 초반)
- 서버 가상화(VMware, KVM) 도입 → 자원 활용도 증가.
- 하지만 운영 복잡성이 여전히 높고 확장성이 부족
- 3세대: 퍼블릭 클라우드 & 모놀리식 아키텍처 (2010년대 초반)
- AWS, Azure, GCP 등장 → 기업들이 클라우드로 이전 시작.
- 하지만 여전히 모놀리식 애플리케이션 구조를 많이 사용.
- 4세대: MSA & 컨테이너 & 멀티 클라우드 (2010년대 후반~현재)
- 마이크로서비스 아키텍처(MSA) 등장 → 서비스별 독립 운영 가능.
- Docker & Kubernetes → 컨테이너 기반 오케스트레이션 표준화.
- DevOps, GitOps, FinOps 등 새로운 운영 방식 도입.
- 멀티 클라우드 전략 & 보안 중심 아키텍처 확산.
왜 MSA, Landing Zone이 필요하게 되었나?
- 기존 온프레미스 및 모놀리식 방식은 확장성과 유연성이 부족하여, 클라우드 네이티브 아키텍처가 대세가 됨.
- 대기업 및 스타트업 모두 MSA를 도입하고, 클라우드 보안과 자동화를 고려한 Landing Zone을 설정하여 효율적이고 안전한 운영 환경을 구축함.
- 이제는 멀티 클라우드, AI 기반 최적화, 서버리스와 컨테이너의 조합이 최신 트렌드로 자리 잡음.
그렇다면 이제 MSA와 Landing Zone에 대해 알아보자.
MSA (Microservices Architecture)
개념 및 등장 배경
- 기존의 모놀리식 아키텍처는 하나의 큰 애플리케이션으로 개발되고 배포되며, 유지보수가 어려움.
- 클라우드 환경이 발전하면서 **유연한 확장성(Scalability)과 빠른 배포(Agility)**가 필요하게 됨.
- 이를 해결하기 위해 **MSA (마이크로서비스 아키텍처)**가 등장.
특징
- 서비스 단위 분리: 기능별로 독립적인 서비스(예: 사용자 관리, 결제, 상품 추천 등)를 운영.
- 개별 배포 및 확장: 특정 서비스만 업데이트하거나 확장 가능 (ex. 결제 서비스만 오토스케일링).
- 폴리글랏 (Polyglot): 각 서비스마다 다른 기술 스택(Java, Python, Go 등)을 사용할 수 있음.
- API 기반 통신: REST API, gRPC, GraphQL 등을 활용하여 서비스 간 통신.
- 데이터베이스 분리: 서비스별로 독립적인 DB를 가질 수 있음 (CQRS, Event Sourcing 활용).
최근 트렌드
- Service Mesh (예: Istio, Linkerd): 마이크로서비스 간 보안, 모니터링, 로드밸런싱을 자동화.
- Kubernetes 기반 MSA: 마이크로서비스를 쿠버네티스(K8s) 위에서 컨테이너로 운영.
- Serverless MSA: FaaS (예: AWS Lambda)와 결합하여 운영 비용 절감.
- Event-driven Architecture: Kafka, RabbitMQ 등을 활용한 비동기 이벤트 기반 서비스 운영.
Landing Zone (랜딩존)
개념 및 등장 배경
- 기업이 클라우드를 도입할 때 보안, 네트워크, IAM(Identity & Access Management) 등의 기본 아키텍처를 표준화하는 과정이 필요.
- 이를 효율적으로 설정하기 위해 AWS, Azure, GCP에서 Landing Zone이라는 개념을 제공.
특징
- 멀티 계정 구조: 보안 및 운영을 위해 여러 개의 클라우드 계정을 미리 설정 (예: AWS Control Tower).
- 보안 및 규정 준수 (Compliance): IAM, 네트워크 보안 정책, 로깅 설정을 미리 구성.
- 네트워크 아키텍처 구성: VPC, Subnet, VPN, Direct Connect 설정을 사전에 정의.
- 템플릿화된 배포: IaC(Infrastructure as Code)를 활용하여 Landing Zone을 자동화 (예: Terraform, AWS CloudFormation).
최근 트렌드
- Zero Trust 기반 Landing Zone: 네트워크 경계를 없애고 ID 기반 보안 정책 적용.
- 멀티 클라우드 지원: AWS, Azure, GCP 모두에서 동일한 Landing Zone을 설정할 수 있도록 설계 (예: Terraform + GitOps).
- 자동화된 Security & Compliance: Landing Zone을 구축할 때 Security Hub, AWS Config, GuardDuty 등을 활용한 보안 강화.
- 클라우드 네이티브 네트워크 아키텍처: VPC Peering, Transit Gateway, AWS PrivateLink 활용.
최신 클라우드 아키텍처 트렌드
- 모듈화된 멀티 클라우드 아키텍처
- AWS, Azure, GCP 등을 조합하여 활용하는 멀티 클라우드 환경 증가.
- Terraform, Pulumi, Crossplane 등을 이용한 IaC 기반 멀티 클라우드 관리.
- GitOps 및 자동화 인프라
- Kubernetes + ArgoCD, FluxCD 등을 활용한 GitOps 방식 운영.
- 모든 인프라 변경 사항을 Git에 저장하고 자동화된 CI/CD 배포.
- AI & FinOps 기반 클라우드 최적화
- AI 기반 오토스케일링: AI/ML을 활용하여 클라우드 자원 최적화.
- FinOps (Cloud Cost Optimization): 기업의 클라우드 비용을 최적화하는 프레임워크.
- 서버리스 + 컨테이너 통합 아키텍처
- AWS Lambda, Google Cloud Run 등과 Kubernetes 기반 컨테이너를 결합한 아키텍처.
- API Gateway와 EventBridge, Kafka 등을 활용한 이벤트 기반 서버리스 연계.
- Confidential Computing & 클라우드 보안
- Confidential VM, Nitro Enclaves 등을 활용한 데이터 보호.
- 쿠버네티스 환경에서도 OPA (Open Policy Agent), Kyverno 등을 활용한 정책 적용.
정리하자면 다음과 같이 요약할 수 있다.
- MSA: 서비스 단위 분리, API 기반 통신, 컨테이너화 및 서비스 메쉬 활용.
- Landing Zone: 클라우드 보안, 네트워크, IAM을 표준화하여 사전 구성.
- 최신 트렌드: 멀티 클라우드, GitOps, AI 기반 클라우드 최적화, 서버리스 & 컨테이너 통합, 보안 강화.
'개념정리 > 개발' 카테고리의 다른 글
boto3 (0) | 2025.05.03 |
---|---|
Celery와 Redis (0) | 2025.02.09 |
FastAPI와 비동기 처리 (0) | 2025.02.09 |
Bastion Host (1) | 2025.01.27 |