가상화
가상화Virtualization는 물리적인 자원을 논리적으로 분리하여 하나의 자원을 여러 개처럼 보이게 하거나, 반대로 여러 자원을 하나처럼 보이게 만드는 기술이다.
쉽게 말해, 실제로는 하나지만 마치 여러 대의 컴퓨터처럼 사용할 수 있는 환경을 만들어주는 것.
💡 프로그래밍 관점에서 왜 중요할까?
개발자 입장에서 가상화는 다음과 같은 이유로 중요하다:
- 개발 환경 통일
- 예전엔 "내 컴퓨터에선 잘 되는데?"라는 말이 흔했다.
가상화 기술 (ex. Docker) 덕분에 이제는 동일한 개발 환경을 컨테이너로 구성하고, 그대로 공유할 수 있다.
- 예전엔 "내 컴퓨터에선 잘 되는데?"라는 말이 흔했다.
- 테스트 환경 격리
- 여러 개의 테스트 환경을 만들어도 서로 간섭하지 않게 완전히 분리할 수 있다.
- 예: 테스트용 DB, QA 서버 등
- 리소스 효율성
- 물리 서버 1대를 여러 개의 VM으로 나눠서 사용하면, 자원을 훨씬 효율적으로 사용할 수 있다.
🧱 가상화의 종류
| 구분 | 설명 | 대표 예시 |
| 하드웨어 가상화 | 하나의 물리 머신에서 여러 VM을 운영 | VMware, VirtualBox, KVM |
| 운영체제 수준 가상화 | OS 내에서 프로세스를 격리하여 컨테이너 생성 | Docker, LXC |
| 네트워크 가상화 | 실제 네트워크와 분리된 가상의 네트워크 생성 | SDN, VPN |
| 스토리지 가상화 | 여러 물리 디스크를 하나의 논리 스토리지로 사용 | RAID, SAN |
🛠 예: Docker와 가상화
Docker는 가상 머신처럼 무겁지 않고, 컨테이너 단위로 애플리케이션을 분리해서 실행한다.
이는 커널은 공유하지만 파일 시스템, 네트워크 등은 분리되기 때문에 마치 독립된 환경처럼 동작한다.
docker run -it ubuntu /bin/bash
위 명령어 하나만으로도 우분투 가상 환경을 띄울 수 있다.
컨테이너는 VM보다 가볍고 빠르기 때문에 CI/CD, 마이크로서비스, 테스트 자동화에 자주 활용된다.
정리
가상화는 단순히 인프라 엔지니어들만의 기술이 아니다.
개발자가 매일 마주치는 환경 설정, 테스트, 배포 과정 속에서 핵심적인 역할을 한다.
특히 컨테이너 기반 개발이 표준이 된 지금, 가상화 기술에 대한 이해는 필수 스킬이라고 느꼈다.
'Krafton Jungle > 2. Keywords' 카테고리의 다른 글
| [WEEK05] malloc, calloc, realloc (0) | 2025.04.11 |
|---|---|
| [WEEK05] 동적 메모리 할당 (0) | 2025.04.11 |
| [WEEK05] GCC (0) | 2025.04.10 |
| [WEEK04] 포인터와 연결리스트 (0) | 2025.04.07 |
| [WEEK04] 그리디 알고리즘 (0) | 2025.04.03 |