[ 데브위키 개발자를 위한 쉬운 도커 #1 ] 가상화 기술의 필요성

김수호·2024년 8월 6일
0
post-thumbnail

가상화 기술의 필요성

도커는 컨테이너를 관리하기 위해 만들어진 소프트웨어이다.

🤔 그러면 컨테이너 라는 것은 무엇일까 ?

컨테이너는 큰 서버를 효율적으로 나눠서 사용하기 위한 가상화라는 기술이다.

따라서 도커와 컨테이너를 이해하려면, 먼저 가상화 기술이 무엇인지, 그리고 왜 사용하는지에 대한 이해가 필요하다.


가상화 기술의 필요성에 대해서 이해하기 위해서, 먼저 한가지 상황을 예로 들어보자.

  • 현재 우리는 CPU 8코어RAM 64GB 인 좋은 성능의 서버 한대를 가지고 있다고 가정해보자.
  • 그리고 이 컴퓨터에서 평균적으로 CPU 1코어8GB 메모리 를 소모하는 A프로그램을 4개 실행한다고 가정해보자.
    • 그러면 프로그램이 소모하는 총 리소스는 CPU 4코어32GB 메모리 가 된다.
  • 이제 컴퓨터에 하나의 윈도우 OS를 설치한 다음에, 윈도우에서 이 4개의 프로그램을 모두 실행한다고 가정해보자.
    • 1) 컴퓨터에서 윈도우 OS를 실행한다.
      • 참고로 OS도 리소스를 사용하기 때문에, 1코어8GB 메모리를 소모한다고 가정해보자.
    • 2) OS에서 프로그램을 모두 실행한다.
      • 그러면 총 CPU 5코어40GB 메모리 를 사용할 것이다.
    • 프로그램을 다 실행해도, 아직 컴퓨터에 리소스가 남아있기 때문에, 리소스 사용량에는 문제가 없어보인다. 그리고 하나의 OS에서 프로그램이 모두 실행되고 있기 때문에 관리하기에도 편할 것 같다.
    • 그런데 이 상태에서는, 하나의 프로그램에 문제가 생기면 다른 프로그램에도 영향을 줄 위험이 있다.
      • 뿐만 아니라, 하나의 프로그램의 사용량이 갑자기 급증해서 리소스를 모두 소모하게 된다면, 역시 나머지 프로그램이 정상적으로 동작하지 않을 위험이 있다.
  • 결과적으로, 기업 운영 환경에서 이렇게 운영 중인 환경이 멈추는 것은 아주 큰 장애로 이어질 수 있기 때문에, 소프트웨어들을 하나의 OS에서 운영하는 것은 피하는 것이 좋다.
    • 참고) 가상화 기술을 사용하면 한 대의 컴퓨터에 여러 대의 논리적인 OS 환경을 만들 수 있다. 그리고 이 가상으로 만들어진 컴퓨터에는 사용자가 리소스를 직접 분배할 수 있다. ( 하나의 가상 OS가 사용할 수 있는 리소스의 최대값을 정해두는 것 )

 


🤔 그러면 하드웨어를 여러 대 사용해서, 물리적으로 분리된 환경에서 관리하고 실행시키면 되지 않을까?

하드웨어의 성능은 빠르게 발전하고 있다. 그리고 그와 반대로 하드웨어를 사용하는 소프트웨어의 크기는 상대적으로 감소하는 추세이다.

기업 입장에서는 낮은 사양의 컴퓨터를 여러 대 사용하는 것 보다, 높은 사양의 컴퓨터를 한 대 사용하는 것이, 가격이나 설치 공간, 설치 인력, 서버 운영, 하드웨어 사이즈나 배선 같이 여러면에서 훨씬 경제적이다. ( 보통 성능에 차이가 난다고 해서 하드웨어의 크기가 크게 커지는 것은 아니다. 그리고 기기가 여러대면 전기 사용량도 더 들어간다. )

이런 이유들로 가상화라는 기술을 통해 하나의 하드웨어를 효율적으로 활용하는 것이 엔터프라이즈 환경에서는 필수적이다. 그래서 대부분의 IT 기업이, 운영 환경에서 이렇게 가상화 기술을 활용하고 있다.

하나의 큰 서버를 여러 개의 논리적인 작은 서버로 쪼개서 사용하는 가상화 기술에는 크게 하이퍼바이저 가상화컨테이너 가상화가 있다.

다음 내용에서는 하이퍼바이저 가상화에 대해서 알아보자.

 

✔️ 참고

  • IT 산업에서는 실제로 존재하는 것을 물리적, 가상으로 존재하는 것을 논리적으로 존재한다고 표현한다. 즉, 가상화 기술에 대해서 기술적으로 정의하면 다음과 같다.
    • 물리적인 컴퓨팅 환경 내부에서 논리적인 컴퓨팅 환경을 만들 수 있는 기술

강의를 듣고 정리한 글입니다. 코드와 그림 등의 출처는 데브위키 강사님께 있습니다.
( https://inf.run/Apgvc )

profile
현실에서 한 발자국

0개의 댓글