Krafton Jungle/2. Keywords

[WEEK05] 가상화

munsik22 2025. 4. 10. 18:59

 

가상화

가상화Virtualization는 물리적인 자원을 논리적으로 분리하여 하나의 자원을 여러 개처럼 보이게 하거나, 반대로 여러 자원을 하나처럼 보이게 만드는 기술이다.

쉽게 말해, 실제로는 하나지만 마치 여러 대의 컴퓨터처럼 사용할 수 있는 환경을 만들어주는 것.


💡 프로그래밍 관점에서 왜 중요할까?

개발자 입장에서 가상화는 다음과 같은 이유로 중요하다:

  1. 개발 환경 통일
    • 예전엔 "내 컴퓨터에선 잘 되는데?"라는 말이 흔했다.
      가상화 기술 (ex. Docker) 덕분에 이제는 동일한 개발 환경을 컨테이너로 구성하고, 그대로 공유할 수 있다.
  2. 테스트 환경 격리
    • 여러 개의 테스트 환경을 만들어도 서로 간섭하지 않게 완전히 분리할 수 있다.
    • 예: 테스트용 DB, QA 서버 등
  3. 리소스 효율성
    • 물리 서버 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