가상화(Virtualization)
가상화(Virtualization)는 하나의 물리적인 시스템 자원을 마치 여러 개인 것처럼 나누어 사용하는 기술입니다. 즉, 컴퓨터 시스템의 리소스를 추상화하고 격리하여, 다양한 환경을 독립적으로 구성할 수 있게 해줍니다.
가상화를 쉽게 비유하면 '샵인샵(shop-in-shop)'이라고 할 수 있는데요. 대형 마트(물리 서버) 안에 여러 브랜드 매장(가상 머신)이 독립적으로 입점해 운영되듯, 하나의 서버 안에 여러 가상 환경이 서로 간섭 없이 운영될 수 있게 해주는 것이죠.
가상화를 사용하는 이유
- 자원 활용도 향상: 서버 한 대로 여러 서비스를 운영
- 운영 환경 격리: 테스트/배포 환경을 독립적으로 유지
- 보안 및 장애 격리: 한 가상 환경의 문제가 다른 환경에 영향을 주지 않음
- 유지보수 용이: VM 백업, 이동, 복제가 간편함
가상화의 종류
종류 | 설명 | 대표 기술 |
하드웨어 가상화 | 하나의 서버에 여러 OS를 실행 | VMWare, VirtualBox |
OS 수준 가상화 | 하나의 OS 위에서 격리된 앱 실행 | Docker, LXC |
스토리지 가상화 | 여러 저장 장치를 하나처럼 구성 | RAID, SAN |
네트워크 가상화 | 네트워크를 논리적으로 분할 | VLAN, SDN |
하이퍼바이저란?
하이퍼바이저(Hypervisor)는 가상화를 가능하게 해주는 핵심 소프트웨어로, VM을 만들고 실행시키는 역할을 합니다.
하이퍼바이저의 종류
- 네이티브형: 하드웨어 위에서 직접 실행
- VMWare ESXi, Xen 등
- 호스트형: 기존 OS 위에서 실행
- VirtualBox, VMWare Workstation
가상화와 컨테이너의 차이
항목 | 가상화(VM) | 컨테이너 |
단위 | 운영체제 단위 | 프로세스 단위 |
부팅 시간 | 느림 | 빠름 |
격리 수준 | 강함 | 약함(공유 커널) |
성능 오버헤드 | 큼 | 작음 |
컨테이너는 가상화보다 더 빠르고 가벼운 방식으로, 최근 클라우드 환경에서 널리 사용됩니다.
가상화와 추상화의 차이
항목 | 가상화(Virtualization) | 추상화(Abstraction) |
핵심 개념 | 분할 | 단순화 |
정의 | 하나의 자원을 여러 개처럼 나누어 제공 | 내부 구조를 숨기고 필요한 정보만 드러냄 |
목적 | 자원 활용도와 격리성 향상 | 복잡성 감소, 일관성 유지 |
예시 | 서버 하나를 여러 VM으로 나눔 | API가 내부 구현을 숨기고 함수만 제공 |
주요 영역 | 인프라, 클라우드, 운영체제 | 소프트웨어 설계, OOP, 시스템 구조 |
즉 가상화는 '분할'의 기술, 추상화는 '단순화'의 기술입니다.
마치면서
가상화는 오늘날의 클라우드 컴퓨팅, DevOps, 테스트 환경 구축 등에서 빼놓을 수 없는 핵심 기술입니다. 특히 ‘샵인샵’처럼 하나의 공간을 여러 개로 쪼개 운영할 수 있다는 점에서, 자원 효율성과 격리성이라는 장점을 극대화할 수 있죠.
그리고 이와 헷갈릴 수 있는 추상화는, 소프트웨어를 더 잘 설계하고 관리하기 위한 또 다른 중요한 도구입니다. 이 두 개념의 차이를 분명히 이해하면, 시스템 설계와 운영 모두에서 더 깊은 통찰력을 얻을 수 있습니다.
'크래프톤 정글 > CS기초(키워드, 개념정리)' 카테고리의 다른 글
[CS기초] 보이어-무어(Boyer-Moore) 문자열 탐색 알고리즘 (0) | 2025.04.14 |
---|---|
[CS기초] KMP(Knuth-Morris-Pratt) 알고리즘 (0) | 2025.04.14 |
[중간정리] 4주차 - 스택과 레지스터, LCS, 그리디와 DP, 피보나치, 방향 그래프의 이행적 폐쇄 (0) | 2025.04.08 |
[CS기초] 4주차 개념 정리 (0) | 2025.04.08 |
[CS기초] 그리디 알고리즘(Greedy Algorithm) (0) | 2025.04.08 |