☁️ 클라우드 컴퓨팅 개론 1 (Cloud Computing Overview 1)
1. 클라우드 컴퓨팅 (Cloud Computing)
정의
인터넷('Cloud')을 통해 원격으로 서버, 스토리지, 데이터베이스, 소프트웨어, 네트워크 등 다양한 컴퓨터 서비스를 온디맨드(On-demand)로 제공받는 것.
💡 핵심: 사용자는 물리적 리소스를 직접 관리할 필요 없이, 필요한 만큼만 쓰고 비용을 지불합니다.
역사 (History)
- 1960년대: 시분할 기술, ARPANET (인터넷 시초)
- 1990년대: WWW 등장, 인터넷 붐
- 2000년대 초: Salesforce.com 등 SaaS 확산
- 2006년: AWS 등장, IaaS 본격화
- 2008-2010년: 스마트폰(iPhone) 등장으로 수요 급증, PaaS(Google App Engine, Azure) 본격화
- 2010년 - 현재: Serverless, AI 등 다양한 기술 도입
클라우드 컴퓨팅을 가능하게 하는 핵심 기술
- Virtualization (가상화) ⭐️ Key Tech
- Distributed Computing (분산 컴퓨팅)
- Scalable Infrastructure (확장 가능한 인프라)
- Broadband Internet (고속 인터넷)
- Automation / Orchestration (자동화 / 오케스트레이션)
- Standardization and APIs (표준화와 API)
- Security and Data Protection (보안과 데이터 보호)
- Analytics and Machine Learning (분석과 기계학습)
2. 가상화 (Virtualization)
개념
물리적인 하드웨어 리소스를 논리적으로 추상화하여, 하나의 물리적 하드웨어에서 여러 가상 환경(Virtual Environment)을 동시에 실행시키는 기술입니다.
- 소프트웨어를 하드웨어로부터 분리(Decoupling)시킵니다.
- 비유: 컴퓨터 하나를 여러 개로 쪼개서 사용하는 기술.
핵심 구성요소: 하이퍼바이저 (Hypervisor)
가상화를 가능하게 하는 핵심 소프트웨어로, 물리적 하드웨어 위에서 가상 머신(VM)을 생성하고 리소스를 분배하는 역할을 합니다.
- Type 1 (Native/Bare-metal): OS 없이 하드웨어 위에서 직접 실행 (성능 우수, 주로 서버용).
- Type 2 (Hosted): 윈도우/맥 같은 호스트 OS 위에서 실행 (설치 간편, 데스크톱/개발용).
가상화의 장점
- 리소스 효율성: 남는 자원 없이 하드웨어 활용 극대화.
- 비용 절감: 물리 서버 수 감소로 관리/운영 비용 절감.
- 격리성 (Isolation): 하나의 VM 장애가 다른 VM에 영향을 주지 않음.
- 유연성: 필요에 따라 빠르게 생성 및 확장 가능.
3. 가상화의 종류 (Types of Virtualization)
1) 서버 가상화 (Server Virtualization)
물리 서버를 여러 개의 가상 머신(VM)으로 분할하여, 각각 독립적인 OS와 응용 프로그램을 실행하는 기술입니다.
- 특징: 하나의 물리 서버에서 여러 워크로드를 동시 실행하여 효율성 극대화.
- 예시: VMware vSphere, Microsoft Hyper-V.
2) 운영체제 가상화 (OS Virtualization / Containerization)
하나의 운영체제 커널을 공유하며, 격리된 사용자 공간(컨테이너)을 생성하는 기술입니다.
- 특징:
- VM보다 훨씬 가볍고 시작 속도가 빠름 (Lightweight).
- 이식성이 높아 배포가 쉬움.
- 대표 기술: Docker (컨테이너 엔진), Kubernetes (오케스트레이션).
3) 네트워크 가상화 (Network Virtualization)
스위치, 라우터 등 물리적 네트워크 리소스를 추상화하여 논리적인 가상 네트워크로 분리하거나 통합하는 기술입니다.
- 특징: 각 가상 네트워크는 물리 네트워크와 동일하게 동작하지만, 논리적으로 완벽히 분리됨.
- 기술: SDN (Software-Defined Networking), NFV.
4) 스토리지 가상화 (Storage Virtualization)
여러 물리적 스토리지 장치(하드 드라이브 등)를 묶어 하나의 논리적 저장소처럼 관리하는 기술입니다.
- 장점: 중앙 집중 관리 가능, 데이터 이동 간소화, 복제 및 스냅샷 기능 용이.
5) 데스크톱 가상화 (VDI - Virtual Desktop Infrastructure)
데이터센터의 서버에서 데스크톱 OS(윈도우 등)를 구동하고, 사용자는 원격으로 화면만 전송받아 사용하는 방식입니다.
- 보안 강점:
💡 기업 보안용으로 많이 사용: 모든 컴퓨팅 자원과 데이터가 중앙 서버에 있기 때문에, 작업 내용이나 파일이 외부(개인 PC)로 유출되는 것을 원천 차단할 수 있음.
- 유연성: 어디서든 내 업무 환경에 접속 가능.
6) 애플리케이션 가상화 (Application Virtualization)
애플리케이션을 OS로부터 분리하여 격리된 컨테이너에 포장하는 기술입니다.
- 장점: 다른 앱이나 호스트 OS와 충돌하지 않음 (DLL 충돌 방지 등).
4. VDI vs DaaS
두 기술 모두 "데스크톱 가상화"를 제공하지만, 제공 주체와 운영 방식에 차이가 있습니다.
| 구분 | VDI (Virtual Desktop Infrastructure) | DaaS (Desktop as a Service) |
|---|
| 운영 주체 | 기업 자체 구축 (On-Premise) | 클라우드 제공 업체 (Cloud Provider) |
| 인프라 관리 | 기업이 직접 서버 구매/관리 | 클라우드 업체가 인프라 관리 |
| 비용 방식 | 초기 구축 비용 높음 (CapEx) | 쓴 만큼 내는 종량제 (OpEx) |
| 기술 기반 | 가상화 기술 직접 운영 | 클라우드 서비스 형태의 VDI |
요약: DaaS는 기술적으로 VDI에 기반을 두고 있으나, 클라우드 업체가 서비스 형태로 제공하여 사용자는 구독료만 내고 사용하는 모델입니다.
☁️ 클라우드 컴퓨팅 개론 2 (Cloud Computing Overview 2)
1. 왜 클라우드 컴퓨팅인가? (Why Cloud?)
단순히 서버를 빌려 쓰는 것을 넘어, 비즈니스의 연속성과 확장성을 위해 필수적인 환경입니다.
핵심 가치
- 탄력성 (Elasticity) & 확장성 (Scalability):
- 트래픽 폭주(Black Friday, 광군제 등) 시 서버를 물리적으로 증설하는 것은 불가능에 가까움.
- 클라우드는 병렬 처리를 통해 필요한 만큼 자원을 늘리고(Scale-out), 사용 후 반납하여 비용을 절감함.
- 사용자 경험 (UX): "접속 대기"는 고객 이탈의 주원인. 탄력적인 운영으로 끊김 없는 서비스를 제공해야 함.
- 비용 절감: 초기 인프라 투자 비용(CapEx) 없이 사용한 만큼만 지불(OpEx).
- 민첩성: 신제품 출시 주기 단축 및 빠른 배포/테스트 가능.
💡 개발자가 클라우드를 알아야 하는 이유
- 내 코드가 돌아가는 인프라 환경을 모르면 반쪽짜리 전문가.
- 협업과 문제 해결을 위해 클라우드 지식은 선택이 아닌 필수.
2. 현대적 개발 방법론과 클라우드
클라우드 환경은 단순 인프라 제공을 넘어, 개발 문화와 방법론의 변화를 이끌고 있습니다.
1) CI/CD (지속적 통합 및 배포)
- 개념: 코드 작성부터 테스트, 배포까지의 과정을 자동화하여 소프트웨어를 지속적으로 최신 상태로 유지하는 것.
- 필요성: 디지털 전환(Digital Transformation) 시대에 서비스 중단 없는 업데이트를 위해 필수.
🗣 우체국 금융 시스템 사례
과거 우체국 금융 시스템은 새벽마다 서버를 재부팅하며 점검 시간(Downtime)을 가졌음. 이로 인해 심야에 운전하는 트럭 기사들이 주유소에서 결제를 못 하는 문제가 발생함.
→ CI/CD가 적용된 현대 클라우드 환경에서는 서비스 중단 없는 무중단 배포가 가능함.
2) DevOps (데브옵스)
- 개념: 개발(Dev)과 운영(Ops)의 장벽을 허물고 협업하는 문화 및 방법론.
- 특징: 기존 SI(개발)와 SM(운영)이 분리된 환경의 비효율성 개선. 클라우드 환경이 이를 기술적으로 뒷받침함.
3) Cloud Native (클라우드 네이티브)
- 개념: 클라우드의 장점을 100% 활용하여 애플리케이션을 설계하고 구동하는 방식.
- 핵심 요소:
- Container (컨테이너): 무거운 OS(Virtual Machine) 대신 경량화된 컨테이너 단위로 배포하여 유연성 확보.
- Microservices (마이크로서비스): 거대한 하나의 앱(Monolith)을 작은 기능 단위로 쪼개어 개발.
- 역사적 흐름: Mainframe(고성능, 폐쇄적) → Unix → Linux(x86, 범용성, 가성비) → Cloud(유연성)
⚠️ 주의사항: 마이크로서비스(MSA)의 함정
- "트렌드니까 무조건 MSA 해야지"라는 생각은 위험함.
- 서비스를 잘게 쪼개면 컴포넌트 간 통신이 복잡해지고, 추적 및 유지보수가 기하급수적으로 어려워질 수 있음.
- 비즈니스 상황과 규모에 맞춰 기술을 도입해야 함.
4) Full Stack Developer (풀스택 개발자)
- 변화: 과거(프론트+백엔드) → 현재(프론트+백엔드+인프라)
- 클라우드가 인프라 복잡성을 추상화해주므로, 개발자가 인프라 관리 및 배포까지 담당하는 것이 용이해짐.
3. 클라우드 배포 모델 ("어디에" 배포하는가?)
자원을 어디에 두고, 누가 관리하느냐에 따른 분류입니다.
| 모델 | 설명 | 특징 및 강의 코멘트 |
|---|
| Public Cloud | AWS, Azure, GCP 등 외부 업체가 제공하는 인프라 사용. | • 인터넷을 통해 접근 • 가장 대중적이며 확장성이 높음 |
| Private Cloud | 기업이 자체적으로 구축하여 내부적으로만 사용하는 클라우드. | • OpenStack 등을 이용해 구축 (최근엔 인기가 좀 식었지만 여전히 사용됨) • 보안이 중요하거나 규제가 엄격한 경우 사용 |
| Hybrid Cloud | Public + Private 결합. | • 중요 데이터는 Private에, 트래픽 폭주 시 Public으로 확장 • 유연성과 보안을 동시에 추구 |
| Multi Cloud | 두 개 이상의 Public Cloud 혼용 (예: AWS + Azure). | • 주요 원인: 비용 절감 및 특정 벤더 종속(Lock-in) 방지 • 글로벌 서비스 시 특정 국가에서 더 빠른 클라우드를 선택하기 위해 사용하기도 함 |
🏢 사례: Adobe의 멀티 클라우드 실패와 벤더 락인(Lock-in)
Adobe가 AWS 비용(월 300만 달러) 문제로 Azure로 이전을 시도했으나 실패함.
- 이유: 클라우드 서비스는 마치 '빌트인 가구'가 짜여진 집과 같아서, 다른 플랫폼으로 이사 가는 것이 기술적으로 매우 어려움(Vendor Lock-in).
4. 클라우드 서비스 모델 ("무엇을" 제공하는가?)
사용자가 관리해야 할 범위(Responsibility)에 따른 분류입니다.
1) IaaS (Infrastructure as a Service)
- 제공: 가상화된 하드웨어 (서버, 스토리지, 네트워크).
- 사용자 책임: OS, 미들웨어, 런타임, 데이터, 애플리케이션.
- 특징: 가장 유연하지만 관리 포인트가 많음. (예: AWS EC2, Azure VM)
- 용도: 기존 레거시 시스템을 그대로 옮길 때 (Lift and Shift).
- 제공: IaaS + OS, 미들웨어, 런타임 (개발 환경).
- 사용자 책임: 데이터, 애플리케이션.
- 특징: 인프라 관리 없이 코드 작성(비즈니스 로직)에만 집중 가능. (예: AWS Lambda, Google App Engine)
3) SaaS (Software as a Service)
- 제공: 완성된 소프트웨어.
- 사용자 책임: 없음 (접근 권한 및 일부 설정 제외).
- 특징: 구독 형태로 바로 사용. (예: Microsoft 365, Salesforce, Slack)
클라우드 서비스를 "어느 수준까지 제공받고, 어디까지 내가 관리하는가"에 따른 분류입니다.
| 구분 | IaaS (Infrastructure as a Service) | PaaS (Platform as a Service) | SaaS (Software as a Service) |
|---|
| 개념 | 가상화된 하드웨어 인프라 제공 (서버, 스토리지, 네트워크) | 애플리케이션 개발 및 배포 플랫폼 제공 (OS, 런타임 포함) | 완성된 소프트웨어를 웹으로 제공 |
| 비유 | 🛒 식재료 사기 (재료만 사고 요리는 내가) | 🍕 밀키트/배달 (조리 도구/환경 제공, 굽기만 하면 됨) | 🍽️ 식당 외식 (모든 게 준비됨, 먹기만 하면 됨) |
| 제공 범위 | 가상화(Virtualization), 서버, 스토리지, 네트워크 | IaaS + OS, 미들웨어, 런타임 | PaaS + 애플리케이션, 데이터 |
사용자 책임 (관리 범위) | OS, 미들웨어, 런타임, 데이터, 애플리케이션 | 데이터, 애플리케이션 (코드) | 없음 (사용자 접근 권한 설정 등 일부 제외) |
제어 수준 (자유도) | 높음 (High) 인프라 단위의 세밀한 설정 가능 | 중간 (Medium) 주어진 프레임워크 내에서 설정 | 낮음 (Low) 제공된 기능만 사용 가능 |
| 기술 난이도 | 상 (Hard) 시스템 엔지니어링, 네트워크 지식 필요 | 중 (Medium) 개발 지식만 있으면 충분 | 하 (Easy) 일반 사용자도 즉시 사용 가능 |
| 비용 모델 | 종량제 (Pay-as-you-go) 초/분/시간 단위 과금 | 종량제 + 옵션 사용량 또는 티어별 과금 | 구독형 (Subscription) 월/연 단위 고정 비용 (User당) |
| 주요 용도 | • 레거시 시스템 마이그레이션 (Lift & Shift) • OS단 제어가 필요한 경우 | • 웹/앱 개발 생산성 향상 • 인프라 관리 없이 비즈니스 로직 집중 | • 이메일, 협업 도구, CRM 등 • 비즈니스 도구 즉시 도입 필요 시 |
| 대표 예시 | AWS EC2, Azure VM, GCP Compute Engine | AWS Lambda, Azure App Service, Google App Engine | Microsoft 365, Google Workspace, Salesforce, Slack |
| 위치 (Location) | 📍 원격에서 운영 (공급업체 데이터 센터) | 📍 온프레미스 (사내 전산실) 또는 외부 전용 호스팅 | 📍 온프레미스 및 외부 리소스 통합 |
💡 참고: 공동 책임 모델 (Shared Responsibility)
- SaaS로 갈수록 클라우드 업체의 책임이 커지고, IaaS로 갈수록 사용자의 책임이 커집니다.
- 단, 어떤 모델을 쓰더라도 데이터(Data)와 계정(Identity) 보안에 대한 책임은 항상 사용자에게 있습니다.
5. 공동 책임 모델 (Shared Responsibility Model)
클라우드 보안은 제공업체와 사용자가 함께 책임집니다.
- SaaS: 업체의 책임 범위가 가장 큼.
- IaaS: 사용자의 책임 범위가 가장 큼 (OS 보안 패치 등).
- ⭐️ 핵심 원칙: 어떤 모델(IaaS, PaaS, SaaS)을 사용하든 "데이터(Information and Data)"와 "계정(Identity)" 관리의 책임은 항상 사용자(고객)에게 있음.
☁️ 클라우드 컴퓨팅 개론 3 (Cloud Computing Overview 3)
1. 비용 관점에서 본 클라우드 (Cost Perspective)
무조건 클라우드를 쓰는 것이 정답은 아닙니다. "얼마나 오래, 어떻게 쓸 것인가"에 따라 클라우드와 온프레미스의 장단점이 나뉩니다.
CapEx vs OpEx
| 구분 | CapEx (Capital Expenditure, 자본적 지출) | OpEx (Operational Expenditure, 운영 지출) |
|---|
| 개념 | 물리적 인프라를 미리 구매하고 자산으로 관리하는 비용 | 서비스를 사용한 만큼 지불하는 비용 |
| 비유 | 🚗 자차 구매 (초기 비용 큼, 오래 쓰면 이득) | 🚕 택시/렌터카 (초기 비용 없음, 단기 사용 유리) |
| 적합 환경 | On-Premises (장기간 안정적인 워크로드) | Cloud (변동성이 크거나 단기 프로젝트) |
| 특징 | • 초기 투자 비용 발생 (선불) • 시간이 지날수록 감가상각 | • 초기 비용 없음 (No Upfront) • 사용량 기반 과금 (Pay-as-you-go) |
💡 택시 vs 자차 비유
- 택시: 가까운 거리를 한 번 갈 때는 가장 저렴하고 효율적입니다. (클라우드 단기 사용)
- 렌터카: 며칠 여행을 간다면 택시보다 낫습니다.
- 자차 구매: 1~3년 이상 매일 쓴다면 차를 사는 게 훨씬 쌉니다. (온프레미스 장기 사용)
- 결론: 회사의 상황과 워크로드 기간에 따라 적절하게 섞어 쓰는 전략이 필요합니다.
Cloud vs On-Premises 차이점
| 특징 | Cloud Service Provider | On-Premises (Traditional IDC) |
|---|
| 비용 | 초기 비용 낮음 (OpEx) | 장기 사용 시 총 비용 낮을 수 있음 (CapEx) |
| 유연성 | 필요한 시점에 빠른 도입 및 해지 | 도입에 시간 소요, 제어권은 높음 |
| 데이터 | Inbound 무료 / Outbound 유료 | 데이터 이동에 대한 전체 제어권 보유 |
⚠️ Vendor Lock-in (벤더 종속) 주의
클라우드 업체들은 들어오는 데이터(Inbound Traffic)는 무료로 받지만, 나가는 데이터(Outbound Traffic)에는 비싼 요금을 부과합니다. ("이사 올 땐 공짜, 나갈 땐 비용 발생") 이 때문에 데이터를 뺴내기 어려워 특정 클라우드에 종속되는 현상이 발생합니다.
FinOps (Financial Operations)
- 개념: 클라우드의 기술적 장점뿐만 아니라 비용 효율성을 함께 관리하는 문화 및 운영 방식 (Finance + DevOps).
- 필요성: 클라우드는 켜놓은 만큼 돈이 나갑니다.
- VM (IaaS): 안 쓰면 꺼야 함 (Stop).
- PaaS: 끄고 켜는 개념이 없는 경우, 생성해 둔 것만으로도 과금될 수 있음.
- 따라서 "어떤 리소스가 돈을 얼마나 쓰고 있는지" 실시간으로 파악해야 함.
2. 클라우드 도입의 핵심 이점 (Key Benefits)
클라우드를 도입하는 가장 큰 이유는 고가용성, 확장성, 신뢰성을 확보하기 위함입니다.
1) 고가용성 (High Availability, HA)
서비스가 중단 없이 지속적으로 운영될 수 있는 능력입니다. (서버가 죽지 않고 살아있는 것)
- 달성 방법:
- 중복성 (Redundancy): 서버를 여러 대 둠 (이중화). 하나가 죽으면 다른 하나가 대신함.
- 부하 분산 (Load Balancing): 트래픽을 여러 서버로 분산시킴.
- 지리적 분산: 데이터센터 자체의 장애(정전, 재해)를 대비해 다른 지역(Region)에 복제.
- SLA (Service Level Agreement): 서비스 가동률에 대한 약속 (예: 99.9% 보장).
2) 확장성 (Scalability)과 탄력성 (Elasticity)
- Scale Up (수직 확장): 하드웨어 성능(CPU, RAM)을 높이는 것. 한계가 명확함 (렉 하나에 꽂을 수 있는 부품 한계).
- Scale Out (수평 확장): 서버의 개수를 늘리는 것. 클라우드의 핵심 장점이며 이론상 무한 확장이 가능.
- 탄력성 (Elasticity): 수요 변화에 맞춰 리소스를 자동으로(Auto Scaling) 늘리고 줄이는 능력.
🐮 Stateless vs Stateful (가축 vs 반려동물)
클라우드 네이티브 환경(Scale Out)을 제대로 하려면 애플리케이션이 Stateless여야 합니다.
- Stateful (반려동물 🐶): 아프면 치료해야 함. 서버가 상태 정보를 가짐. 교체 어려움. (Scale Out 어려움)
- Stateless (가축 🐂): 아프면 즉시 다른 개체로 대체. 상태 정보는 외부(DB, Redis)에 저장. (Scale Out 매우 쉬움)
3) 신뢰성 (Reliability)
- 구성: 복원력(Resiliency) + 복구 가능성(Recoverability).
- 의미: 장애를 견뎌내고(방어), 문제가 생겼을 때 원래 상태로 되돌릴 수 있는(복구) 능력.
4) 예측 가능성 (Predictability)
- 성능: 오토 스케일링 등을 통해 트래픽이 몰려도 일관된 성능 예측 가능.
- 비용: 실시간 모니터링 및 분석을 통해 다음 달 비용 예측 가능.
5) 보안 (Security)
- 공동 책임 모델: 인프라 보안은 클라우드 업체가, 데이터/앱 보안은 고객이 담당.
- 장점: 기업은 자신들이 잘하는 비즈니스 로직 보안에만 집중할 수 있음. (DDoS 방어 등은 클라우드 업체가 잘함)
6) 거버넌스 (Governance)
- 조직 내 클라우드 사용에 대한 정책, 가이드라인, 규정 준수를 관리하는 체계. (예: "우리 회사는 특정 리전만 사용한다", "비싼 GPU 서버 생성 시 승인 필요" 등)
3. 아키텍처 프레임워크 및 역할
Microsoft Azure Well-Architected Framework
클라우드 워크로드를 올바르게 설계하기 위한 5가지 핵심 기둥:
- 비용 최적화 (Cost Optimization)
- 운영 우수성 (Operational Excellence)
- 성능 효율성 (Performance Efficiency)
- 신뢰성 (Reliability)
- 보안 (Security)
CAF (Cloud Adoption Framework)
조직이 클라우드를 성공적으로 도입(Adoption)하기 위한 전략, 계획, 준비 단계를 가이드하는 프레임워크.
솔루션 아키텍트 (Solution Architect)
- 역할: 비즈니스 문제에 대한 전체적인 기술적 비전을 수립하고 설계하는 사람.
- 중요성: 단순히 기술만 아는 것이 아니라, 비즈니스 목표와 기술을 연결(Bridge)하는 역할.
- 관련 자격증: AZ-305 (Microsoft Azure Solutions Architect Expert) - 클라우드 분야 최고 난이도 자격증 중 하나.
🎓 추천
진정한 클라우드 전문가가 되고 싶다면 기술적인 구현(Engineer)을 넘어, 비즈니스를 이해하고 설계를 할 수 있는 솔루션 아키텍트(Expert 레벨)를 목표로 해야 합니다.