Day 6: 클라우드 네트워킹과 가상화
- 클라우드 네트워크 모델
- IaaS, PaaS, SaaS 개념과 차이
- 가상 머신(VM)과 컨테이너(Container)
- 가상 네트워크(Virtual Network)
- VPC(Virtual Private Cloud) 개념
- Overlay Network, SDN(Software Defined Network)
- 서버리스(Serverless) 아키텍처 기초
- 람다(Lambda) 등 이벤트 기반 컴퓨팅
- 네트워크 레벨에서의 서버리스 운영 방식
Day 6: 클라우드 네트워킹과 가상화
클라우드 환경은 물리적인 리소스를 논리적으로 가상화하고, 네트워크 인프라 또한 유연하게 구성해 높은 확장성과 탄력성을 제공한다. 이를 위해 가상 머신(VM)과 컨테이너(Container)를 비롯해, 다양한 형태의 클라우드 모델(IaaS, PaaS, SaaS), 가상 네트워크(VPC, SDN), 그리고 서버리스 아키텍처까지 종합적으로 활용한다.
1. 클라우드 네트워크 모델
1.1 IaaS, PaaS, SaaS 개념과 차이
-
IaaS (Infrastructure as a Service)
- 서버, 스토리지, 네트워크 등 인프라 레벨 자원 을 가상화해 필요한 만큼 임대해 사용하는 모델
- 예: AWS EC2, Azure VM, Google Compute Engine
- 사용자는 운영체제 설정, 미들웨어 설치, 애플리케이션 배포 등을 직접 관리
-
PaaS (Platform as a Service)
- 애플리케이션 실행 환경(런타임, 프레임워크, 라이브러리 등)을 제공
- 예: AWS Elastic Beanstalk, Google App Engine, Heroku
- 개발자는 코드에 집중할 수 있으며, 인프라·OS·런타임 패치 등 플랫폼 관리는 제공 업체가 담당
-
SaaS (Software as a Service)
- 최종 사용자 관점에서 소프트웨어 서비스를 인터넷으로 제공
- 예: Gmail, Office 365, Salesforce
- 사용자는 애플리케이션 자체를 구독 형태로 사용하며, 설치·업데이트를 신경 쓸 필요 없음
차이점 요약
- IaaS: “가상 머신, 네트워크 등 인프라 제공” → 가장 유연하지만 관리 책임이 큼
- PaaS: “애플리케이션 플랫폼 제공” → 개발 편의성 높음, 세부 인프라 제어는 제한적
- SaaS: “완성된 소프트웨어 서비스 제공” → 사용 편의성 최고, 커스터마이징 범위 제한
1.2 가상 머신(VM)과 컨테이너(Container)
-
가상 머신(Virtual Machine)
- 물리 서버 위에 하이퍼바이저(Hypervisor)를 두어, **각 VM이 독립된 운영체제(게스트 OS)**를 구동
- CPU, 메모리, 스토리지 등 하드웨어 자원을 가상화해 VM 간 간섭을 최소화
- 장점: 격리 수준이 높고 운영체제마다 다른 환경을 완전하게 제공
- 단점: 게스트 OS 부팅/실행으로 인한 오버헤드가 크고, 자원 사용량이 상대적으로 많음
-
컨테이너(Container)
- 호스트 OS 커널을 공유하며, 애플리케이션 실행에 필요한 라이브러리, 설정만 격리한 가벼운 가상화 방식
- 예: Docker, Kubernetes에서 활용되는 컨테이너 이미지/런타임
- 장점: 실행 속도 빠르고, 리소스 사용 효율이 높다. DevOps 환경에서 배포 자동화에 유리
- 단점: 호스트 OS와 커널을 공유하기 때문에, 서로 다른 OS 커널 환경을 동시에 운영하기가 어렵고, 완벽한 VM 수준 격리는 아님
2. 가상 네트워크(Virtual Network)
2.1 VPC(Virtual Private Cloud) 개념
- 퍼블릭 클라우드 환경에서 논리적으로 분리된 가상 네트워크를 구성할 수 있는 서비스
- 예: AWS VPC, Azure Virtual Network, GCP VPC
- 서브넷, 라우팅 테이블, 방화벽(보안 그룹) 등을 사용자 입맛대로 설정
- 사설 IP 주소 대역을 사용하면서도 필요 시 VPN, Direct Connect로 온프레미 스(On-premise) 네트워크와 연동 가능
2.2 Overlay Network, SDN(Software Defined Network)
-
Overlay Network
- 물리적 네트워크 위에 논리적(가상) 네트워크를 오버레이 방식으로 구성
- 예: VXLAN, GRE 터널 등을 이용해, 물리 네트워크에서 특정 트래픽을 분리하거나 암호화함
- 복잡한 라우팅을 단순화하거나, 멀티테넌트 환경에서 서로 격리된 가상 네트워크를 제공
-
SDN (Software Defined Network)
- 네트워크 제어부(Control Plane)와 데이터 전달부(Forwarding Plane)를 분리해, 제어부를 소프트웨어적으로 구현
- 예: OpenFlow 기반 SDN 컨트롤러(ONOS, OpenDaylight 등)
- 중앙 집중 방식으로 네트워크 정책(라우팅, QoS, ACL 등)을 동적으로 설정 가능
- 대규모 클라우드/데이터센터에서 자동화된 네트워크 관리를 위해 활용
3. 서버리스(Serverless) 아키텍처 기초
3.1 람다(Lambda) 등 이벤트 기반 컴퓨팅
- 서버리스(Serverless): 서버 인프라를 직접 관리하지 않아도, 이벤트나 함수 단위로 애플리케이션을 실행할 수 있는 모델
- 예: AWS Lambda, Azure Functions, Google Cloud Functions
- 특징
- 이벤트가 발생할 때만 함수가 실행, 사용한 만큼만 과금(Pay-as-you-go)
- 서버 운영체제/런타임 패치 등 인프라 관리는 클라우드가 담당
- 짧은 시간 실행에 최적화된 아키텍처로, 마이크로서비스 개발 패턴과 궁합이 좋다
3.2 네트워크 레벨에서의 서버리스 운영 방식
- 서버리스 함수는 일반적으로 VPC 내(또는 클라우드 제공자의 자체 네트워크)에서 동작
- 요청이 들어올 때 함수 환경(컨테이너 형태)이 신속히 생성(Cold Start 문제 가능)
- 함수 실행이 끝나면, 환경을 재활용하거나 일정 시간이 지나면 제거
- API Gateway, 메시지 큐(SQS, Pub/Sub), 이벤트 버스(EventBridge 등)와 결합해 네트워크 흐름을 제어
- 대규모 트래픽에서도 자동 확장(Scalability)이 용이하지만, 네트워크 정책(보안 그룹, 서브넷, NAT Gateway) 설정을 적절히 해야 외부 통신이나 내부 DB 접근이 가능
요약
- 클라우드 모델 (IaaS, PaaS, SaaS)
- 제공 범위와 책임 분담이 다르며, 유연성 vs 편의성을 고려해 선택
- 가상화 (VM, 컨테이너)
- VM은 완전한 OS 격리를 제공하지만 무겁고, 컨테이너는 가볍고 빠르지만 커널 공유로 제한이 있을 수 있음
- VPC와 SDN
- 가상 네트워크를 논리적으로 구성해 보안, 확장성, 관리 편의성을 확보
- 서버리스 아키텍처
- 이벤트 기반으로 함수를 실행해, 인프라 관리 부담을 줄이고 자동 확장에 유리