잡다한 공부/Cloud

[도커&쿠버네티스] 2.서버와 도커

자이구 2023. 11. 20. 14:32

서버어떤 서비스를 제공하는 것을 가리킨다. 

개발 현장에서 서버 두 가지의 의미를 갖는데 하나는 기능적 의미의 서버이고 나머지는 물리적 컴퓨터로서의 서버이다. 

 

기능적 서버

무슨무슨 서버라는 말은 무슨무슨 기능을 제공한다는 의미이다. 

EX) 웹 서버 = 웹 기능을 제공함

       메일 서버 = 메일 기능을 제공함 

 

물리적 서버

실물, 데스크톱 컴퓨터와 마찬가지로 어딘가에 물리적으로 존재하는 컴퓨터이다. 

EX) 랜 케이블 

 

일반적으로 개인용 컴퓨터는 개인이 사용하지만 서버는 여러 사람이 원격으로 접근해 사용한다는 점이 다를 뿐이다. 

서버의 기능은 소프트웨어가 제공하는 것으로 소프트웨어를 설치하면 서버의 기능을 갖게 된다. 

EX) 웹 서버용 소프트웨어를 설치 => 웹 서버가 된다. 

       메일 서버용 소프트웨어를 설치 => 메일 서버가 된다. 

 

즉 무슨무슨 서버를 만든다는 말은 무슨무슨 소프트웨어를 설치해 이 기능을 갖춘다는 말과 같다. 

또한 여러 가지 소프트웨어를 한 컴퓨터에 설치 할 수 있다.


 

도커 환경에서 컨테이너를 사용하면 프로그램을 완전히 격리 시킬 수 있다고 설명했다.

한 대의 서버에서 실행하던 웹 서버, 메일 서버, 시스템과 DB 서버를 각각 독립적인 환경에서 안전하게 운용할 수 있다. 

무엇을 업데이트하더라도 서로 영향을 미치지 않을 것이며, 여러 개의 웹 서버를 올릴 수도 있다. 

 

물리 서버 한 대에 여러개의 웹 서버를 띄우면 그만큼 물리 서버 수를 줄일 수 있다. 

 

EX) 프로젝트 X와 프로젝트 Y의 웹 서버가 있다고 가정하자.

  • 두 프로젝트의 용량이 크지 않아서 물리 서버를 따로 두면 그만큼 자원 낭비가 발생하므로 하나의 물리 서버에 함께 둔다면 프로젝트 비용이 절반으로 감소할 것이다. 
  • 일반적으로 물리 서버 한 대에 두 웹 서버를 함께 올린다면 개발자가 다른 프로젝트의 환경을 건드릴 수 있다.
  • 아파치는 서버 한 대에 하나밖에 올리지 못하므로 웹 서버의 기능을 공유해야 하는 한계도 발생한다.

컨테이너 기술을 활용하면 이러한 리스크를 감수하지 않고 두 웹 서버를 하나의 물리 서버에 함께 올릴 수 있다. 

 

개발 측면에서 개발환경을 갖추거나 운영 환경으로 쉽게 넘어갈 수 있다는 점이다. 

이러한 이점은 컨테이너가 그저 격리된 환경이 아니라 쉽게 옮길 수 있다는 특성에서 비롯된다. 

 

컨테이너는 자유로이 옮길 수 있다. 

컨테이너의 정보를 내보내기한 다음, 다른 도커 엔진에서 복원하는 형태가 되어 똑같은 상태로 튜닝한 컨테이너를 배포해 동일한 개발환경을 사용할 수 있다. 즉 도커 엔진만 설치돼 있으면 다른 물리서버에서도 컨테이너는 동일하게 작동된다. 

 

도커를 이용하면 물리적 환경적의 차이, 서버 구성의 차이를 무시할 수 있으므로 운영 서버와 개발 서버의 환경 차이로 인한 문제를 원천적으로 방지할 수 있다. 


도커와 가상화 기술의 차이

 

VirtualBox나 VMware 같은 가상화 기술은 가상의 물리 서버를 만드는 것과 같다.

즉 물리적인 부품을 소프트웨어로 구현하는 것이다.

운영체제도 아무 것이나 설치 가능하고, 그 위에서 어떤 소프트웨어를 구동해도 상관없다. 

 

도커는 컨테이너에서 리눅스가 동작하는 것처럼 보이지만 실제 리눅스가 동작하는 것은 아니다. 

운영체제의 기능 중 일부를 호스트 역활을 하는 물리 서버에 맡겨 부담을 덜어 둔 형태이다. 

즉 컨테이너는 운영체제의 일부 기능을 호스트 컴퓨터에 의존하기 때문에 물리 서버에도 리눅스 기능이 필요하며, 컨테이너의 내용도  리눅스 운영체제가 될 수 밖에 없다.