본문 바로가기
MLOps/Docker Compose

[0] 가상화(Virtualization)

by Finn# 2025. 2. 17.
728x90

 

 

Intro

 이번 Udmey - 러닝크루2기 리더로 참여하면서 Docker&Kubernetes 실전가이드라는 강의를 스터디원들과 함께 공부하기로 했다. 첫 섹션을 공부하면서 문득 가상화라는 개념에 대해서 어설프게 이해하고 있어서 조금 더 살펴보기위해 첫 스터디 포스팅 주제로 가상화를 잡게 되었다.

(무지몽매한 지난날을 반성하며..)

 
 처음 가상화라는 개념을 접했던 것은 Python에서 프로젝트 패키지 관리를 위한 가상 환경을 구성할 때 접했다. 그때 처음으로 가상화에 대해서 공부하게 되었고 그 대상이 무엇이고 어떻게 정의되어야할지에 대해 잘 알지못하는 환경에서 공부하다보니 Container, VM의 차이 등에 대한 궁금증, 그리고 그에 대한 답변으로 나오는 가상화라는 단어에 대해서도 완전 새롭게 느껴졌다.


가상화 (Virtualization)

아마존에서는 가상화를 다음과 같이 설명하고 있다.

가상화는 서버, 스토리지, 네트워크 및 기타 물리적 시스템에 대한 가상 표현을 생성하는 데 사용할 수 있는 기술입니다. 가상 소프트웨어는 물리적 하드웨어 기능을 모방하여 하나의 물리적 머신에서 여러 가상 시스템을 동시에 실행합니다. 기업은 가상화를 사용해 하드웨어 리소스를 효율적으로 사용하여 투자 대비 이익을 더 많이 얻을 수 있습니다. 또한 클라우드 컴퓨팅 서비스를 지원하여 조직의 인프라를 더욱 효율적으로 관리할 수 있습니다.

 
 위 개념을 인용해서 다시 한번 정리해보면, 하나의 물리적 머신 위에 하드웨어 기능을 모방하여 만들어낸 소프트웨어를 가상 소프트웨어라고 한다고 이해할 수 있다. 그리고 이에 사용되는 기술을 가상화라고 한다. 이번 포스팅에서는 이런 가상화의 결과물들인  Container, Emulator, Simulator 개념들 간의 차이에 대해서 어떤 것들이 있는지 정리해보겠다.


Operating System

가상화를 논하기 위해선 우선 가상화의 대상이 무엇인지 살펴볼 필요가 있다. 위에서 아마존이 정의한 가상화를 다시 한번 인용해보면, 하나의 물리적 머신 위에 하드웨어 기능을 모방하여 만들어낸 소프트웨어가 가상 소프트웨어이다. 이는 다시말해 나의 디바이스 위에서 하드웨어의 기능을 할 수 있는 가상화된 소프트웨어를 의미하고, 하나의 디바이스 내에 서로 다른 시스템에 종속적인 어플리케이션을 동작시키고자 할 때 사용하는 경우가 많다. 흔한 예시로는 VM을 통해 Linux, Mac OS 환경을 구현하는 것을 생각해보면 이해를 도울 수 있을 것이다.

 이런 시스템 소프트웨어를 구성하는 큰 핵심 요소에는 커널, 프로세스, 파일시스템이 있다.


OS Virtualziation

함께 스터디를 하고 있는 스터디원께서 왜 Mac과 Windows랑 Linux는 Docker 설치하는 프로그램이 다른가? 에 대한 주제에 의문을 품고 조사한 내용을 공유해주셨습니다. 해당 질문의 답변은 Docker Engine이 Linux 종속적인 프로그램이기 때문에, Mac과 Windows의 경우에는 Linux를 작동시키기위한 Emulator를 설치하고 그 위에 Engine이 설치되는 거라 차이가 발생한다고 합니다.

커널 빼고 = Container, 커널 포함 전체 OS = Emulator


Environment Virtualization

Python에서 제공하는 venv같은 가상환경은 OS단에 대한 가상화가 아니다. 따라서 가상화를 구분할 때는 가상화의 대상이 무엇인가에 대한 이해를 전제로 용어를 사용하면 좋을 것이다.


Emulator vs Simulator

Emulator와 Simulator 간의 차이와 예시에 대해서 설명
Android vs IOS


Outro

내용을 입력하시오.

인스타 주소 🎗

https://www.instagram.com/f.inn_sharp/
 

반응형