가상화와 클라우드
우리가 흔히 쓰는 ‘가상화’라는 말, 단순히 “하드웨어 없이 소프트웨어로 컴퓨터를 흉내 내는 기술”이라고만 볼 수 없다. 가상화는 훨씬 더 본질적인 시스템 구조의 변화라고 할 수 있다. 가상화는 컴퓨터 자원(CPU, 메모리, 디스크 등)을 논리적으로 분리해서, 하나의 물리 자원을 여러 개의 가상 머신처럼 사용할 수 있게 해준다. 이 덕분에 우리는 아래 그림과 같이 동일한 물리 서버 안에서 여러 개의 운영체제를 동시에 돌릴 수 있어. 개발자 입장에서 테스트 환경과 운영 환경을 분리할 수 있고, 기업 입장에서는 자원 활용률을 극대화할 수 있지.
가상화는 단순히 컴퓨터만 가상화하는 것이 아니다. 아래 처럼 앱, 네트워크, 저장소까지도 가상화가 가능하다.
클라우드 서비스 모델
많은 사람들이 클라우드를 ‘인터넷에 있는 서버’ 정도로만 생각하는데, 사실 클라우드는 서비스 모델에 따라 굉장히 다양한 형태로 제공된다. 돼. 우리가 가상화 기술을 바탕으로 어떤 수준에서 자원을 사용할지를 기준으로, 아래 그림과 같이 클라우드는 크게 4가지로 나뉜다.
아래 표에서는 각 서비스들의 특징을 간단히 설명하고 어떠한 예가 있는지 예를 보여 준다.
항목 | IaaS | PaaS | FaaS | SaaS |
제어 범위 | 가장 넓음 | 중간 | 매우 좁음 | 없음 |
유연성 | 높음 | 중간 | 낮음 | 매우 낮음 |
개발/운영 부담 | 높음 | 중간 | 매우 낮음 | 없음 |
예시 서비스 | AWS EC2, GCE | Heroku, App Engine | AWS Lambda, Azure Func | Gmail, Google Docs |
(IaaS)가상화 예제: Virtualbox Beginners Guide
IaaS(Infrastructure as a Service)는 말 그대로 인프라를 서비스로 제공하는 형태다. 이 모델에서 우리는 가상 머신을 생성하고, 운영체제를 설치하고, 네트워크 설정까지 직접 할 수 있다. 그런데 AWS EC2나 Google Cloud VM Compute Engine처럼 바로 돈이 드는 클라우드 플랫폼은 무료 테스트 계정이 있지만, 좀 부담스러러울 수 있다. 그래서 로컬에서 가상화를 체험할 수 있는 VirtualBox 같은 도구가 입문자에겐 최고의 선택이라고 할 수 있다. VirtualBox는 오라클에서 만든 무료 가상 머신 관리 프로그램으로, 내 PC 위에서 다른 운영체제를 마치 클라우드처럼 돌릴 수 있게 해준다[3].
VirtualBox와 AWS EC2의 비교를 아래 표에서 살펴 볼 수 있다.
항목 | VirtualBox (로컬 IaaS 체험) | AWS EC2 (클라우드 IaaS) |
사용 위치 | 내 컴퓨터 | 클라우드 (AWS 서버) |
비용 | 무료 | 사용량 기반 과금 |
네트워크 구성 | 직접 설정 필요 (NAT/브리지) | 보안 그룹, VPC, 서브넷 구성 |
유연성 | 매우 높음 | 매우 높음 |
실제 서비스 운영 | 불가능 (로컬 환경 한계) | 가능 (스케일링, 글로벌 서비스) |
(PaaS) 컨테이너(Container)
컨테이너는 말 그대로 애플리케이션과 그 실행 환경(라이브러리, 설정, 의존성 등)을 하나로 포장(wrap)한 기술이다. 마치 앱 하나가 독립된 환경에서 실행되도록 만들어주는 작은 가상 머신 같지만, 사실상 훨씬 가볍고 빠른 구조이다.
컨테이너는 커널을 공유하고, 프로세스 단위로 동작하기 때문에 시작도 빠르고 자원도 덜 쓴다.
PaaS(Platform as a Service)는 개발자가 애플리케이션을 빠르게 배포하고 실행할 수 있는 플랫폼이다. 운영체제나 미들웨어 같은 건 전혀 신경 쓸 필요 없이, 코드만 넣으면 자동으로 실행된다.
이런 PaaS 환경에서 컨테이너는 다음과 같은 방식으로 동작해:
- 커널 기능 기반 격리: Linux namespace, cgroup, chroot/jail를 이용한다.
- 컨테이너=하나의 리눅스 프로세스: 호스트 OS 입장에선 그냥 프로세스 하나로 보인다. 컨테이너 내부에선 완전한 독립 환경처럼 작동한다
- VM과의 차이점: VM은 하드웨어까지 가상화한다. 컨테이너는 OS만 공유하고, 나머지는 독립적이다.
두 가지 컨테이너 방식
1. 시스템 컨테이너 (System Container)
- OS 전체를 흉내 내는 방식
- LXC, LXD 같은 기술
- init 시스템을 가지고 있고, 다중 프로세스를 실행할 수 있어
- 예: Waydroid – 안드로이드 OS를 리눅스 위에서 직접 실행
2. 애플리케이션 컨테이너 (Application Container)
- 하나의 애플리케이션만 실행하는 데 집중
- 도커(Docker)가 대표적
- 단일 프로세스만 실행하기 때문에 확장성, 관리 효율성이 매우 뛰어남
도커(Docker)의 탄생과 혁신
도커는 2013년에 Solomon Hykes가 발표하면서 큰 반향을 일으켰다[4]. 그전에도 LXC와 같은 컨테이너 기술은 존재했지만, 도커는 다음의 요소를 조합해 개발자 중심의 경험으로 혁신했다. 이 발표에서 많은 참가자들이 마지막에 환호하는 것을 볼 수 있다.
- Dockerfile로 컨테이너 정의
- 이미지 빌드 & 레지스트리 업로드
- 레이어 캐시와 재사용
- 실행 단순화: docker run
실제 PaaS 환경에서는 도커와 같은 컨테이너 기반 인프라 위에 플랫폼이 구성된다. 예를 들어:
- Google App Engine → 내부적으로 컨테이너 사용
- Heroku → buildpack과 slug 방식이지만, 점차 컨테이너 기반으로 전환
- Kubernetes → 컨테이너 오케스트레이션의 표준
즉, 오늘날의 PaaS는 대부분 컨테이너 기술 위에 존재한다. 컨테이너가 없었다면 이렇게 손쉽게 서비스 배포하는 시대는 오지 않았을 것이다.
(FaaS) AWS/Azure 펑션 서비스
FaaS는 서버리스(Serverless) 컴퓨팅의 핵심 구성요소야. 여기서 "Serverless"란 서버가 없다는 뜻이 아니라, 서버의 운영과 관리를 개발자가 신경 쓸 필요가 없다는 것을 의미한다. 클라우드 제공자가 서버 자원을 자동으로 할당하고, 이벤트가 발생할 때만 코드가 실행되도록 도와주는 구조야. 사용자는 함수 단위로 코드를 작성하고 업로드하면 된다. 실행 시간만큼만 비용이 부과되기 때문에, 짧고 간헐적인 작업에 매우 효율적이다. 클라우드 서비스에서 제공하는 서비스들의 예를 살펴 보자.
AWS Lambda
- 최초 출시: 2014년
- 지원 언어: Python, Node.js, Java, Go, .NET, Ruby 등
- 동작 방식:
- 특정 트리거(S3, API Gateway, DynamoDB 등)를 통해 자동 실행
- 예: 이미지 업로드 시 썸네일 생성
특징
- 100ms 단위 과금
- 동시성 자동 확장
- VPC 연결 가능
- 최대 15분까지 실행 가능 (기본은 수 초~수 분)
Azure Functions
- Microsoft의 서버리스 플랫폼
- 지원 언어: C#, JavaScript, Python, PowerShell 등
- 트리거 기반 아키텍처: Blob 저장소, HTTP 요청, Event Hub, Cosmos DB 등과 연동
특징
- Consumption Plan(실행 시간 기반 과금)
- Durable Functions 지원 (복잡한 워크플로우 처리 가능)
- CI/CD 연동이 쉬움 (GitHub Actions, Azure DevOps)
FaaS의 장점과 한계
항목 | 장점 | 한계 |
비용 | 사용한 만큼만 과금, Idle 시 과금 없음 | 고빈도 실행 시 IaaS/PaaS보다 오히려 비쌀 수 있음 |
확장성 | 자동 확장 (수천 개 함수 병렬 실행) | 콜드 스타트(초기 실행 지연) 이슈 존재 |
관리 용이성 | OS, 서버, 네트워크 관리 불필요 | 실행 시간 제한 (15분), 상태 저장 어려움 |
개발 속도 | 빠른 개발 및 배포 가능 | 로컬 개발/디버깅이 까다로움 |
FaaS는 짧고 빠르게 끝나는 작업, 고립된 기능, 빈번하지 않은 요청 처리에 유리하다. 다음과 같은 시나리오에서 특히 강력하다.
- 주기적 백업 / 스케줄러 작업
- 웹훅 처리 (GitHub, Stripe 등)
- 이미지/영상 처리
- 채팅봇 응답
- 이벤트 기반 마이크로서비스
마무리하며
여기서는 [6]에서 설명하는 후반부의 클라우드와 관련해서 가상화 → IaaS → 컨테이너 기반 PaaS → FaaS에 이르기까지 살펴 보았다.
참고문서
[1] What is virtualization and how it works, https://www.cloud4u.com/blog/how-virtualization-works/
[2] FaaS, PaaS, SaaS, and IaaS Cloud Models — Choose the Best One for Your Digital Commerce, https://virtocommerce.com/blog/paas-saas-faas-iaas-cloud-models
[3] How to Use VirtualBox (Beginners Guide), https://youtu.be/sB_5fqiysi4
[4] The future of Linux Containers, https://youtu.be/wW9CAH9nSLs
[5] FaaS Orchestration of Parallel Workloads, https://www.researchgate.net/publication/337362540_FaaS_Orchestration_of_Parallel_Workloads
[6] 리눅스 프로세스에서 클라우드까지, https://docs.google.com/presentation/d/1PGIYqT5s-qyB4pshJqCFftZ-3r9b4iWWzrdO8dj6nvE/edit#slide=id.p
'Cloud Technology' 카테고리의 다른 글
Google Cloud Platform Professsional Cloud Architect (0) | 2025.06.04 |
---|---|
리눅스 프로세스에서 클라우드까지: 1 컴퓨터 구조 (2) | 2025.05.21 |