티스토리 뷰

Programming/CS Basic

VM / Container

Fabric 2022. 7. 3. 12:21
반응형

 

VM

최초 한대의 물리서버는 하나의 역할을 수행하였음.

서버의 남는 리소스들을 활용하기 위한 가상화 기술이 등장함.

하나의 물리 서버에서 둘 이상의 가상 시스템과 다수의 운영체제 및 app을 실행할 수 있게 해 줌.

가상머신을 생성하고, 구동하는 소프트웨어가 하이퍼바이저 (Xen, KVM 등) 임.

 

1) 전가상화

- 하드웨어를 완전히 가상화하는 방식

- 장점 : 하드웨어를 완전히 가상화하므로, Guest OS 운영체에의 별다른 수정이 필요없음

- 단점 : 하이퍼바이저가 모든 명령을 중재하므로, 성능이 비교적 느림

2) 반가상화

- 하드웨어를 완전히 가상화하지 않고, Hyper Call이라는 interface를 통해 하이퍼바이저에 요청을 날림

- 장점 : 전가상화에 비해 성능이 빠름

- 단점 : Hyper Call 요청을 위해 OS kernel을 수정해야함. 그래서 opensource OS가 아니면, 반가상화 어려움

 

Container 

리눅스 기반 시스템에서 프로세스 간 격리를 위해 사용하던 기술들을 조합하여 발전시킨 것.

chroot, name space, cgroup을 조합한 형태인 LXC에서부터 컨테이너 가상화 기술이 발전함.

- chroot : 특정 디렉토리를 루트(최상위 디렉토리)로 인식하게끔 하는 명령어

- namespace : mnt, pid, net, ipc, uts, user - 커널에 관련 된 영역을 분리

- cgroup : memory, CPU, I/O, network - 자원에 대한 영역을 분리

chroot로 fake root directory를 지정하고, cgroup, namespace로 프로세스에 자원을 할당하고 제어함. 

 

app의 실행에 필요한 라이브러리와 바이너리, 기타 구성파일을 이미지 단위로 빌드하여 배포하므로, 

어떤 환경에서도 app을 쉽게 실행할 수 있음. 

 

도커

Container 기반의 opensource 가상화 플랫폼 중 하나임.

Container 기술은 docker 이전부터 존재하던 기술이었으나, 설정 및 사용 편의성, 접근성이 좋지 않아서 잘 사용 안했음. 

docker 발표 이후 손쉽게 Container를 사용, 관리 배포할 수 있게 됨. + docker hub을 통해 유용한 image들이 공유되다보니, docker 생태계가 커지게 됨. 

 

이미지는 Container 실행에 필요한 파일과 설정 값 등을 포함하고 있음. 

Container를 실행하기 위한 모든 정보를 가지고 있기 때문에, 이것저것 설치하고, 세팅할 필요가 없음. 새로운 서버가 추가되면 미리 만들어 놓은 이미지를 다운받고, Container를 생성만 하면 됨. 

 

이미지는 실행에 필요한 모든 저장하므로, 용량이 큼( 몇백 MB?). 

파일 하나 바뀌었다고 매번 수백MB의 이미지를 다시 빌드하고, 배포하는 것은 비효율적임.

So, Layer라는 개념을 사용함. 

이미지는 여러개의 읽기전용 Layer로 구성되고, 파일이 추가되면 새로운 Layer가 생성됨. 

ex) 우분투 + nginx + source(v1) -> 우분투 + nginx + source(v2) 

바뀐 부분 Layer만 갱신함.

 

비교 

VM과 비교했을때 컨테이너는 하이퍼바이저와 Guest OS가 필요하지 않으므로 가볍고, 빠름. 

크기가 작기때문에 복제와 배포도 용이함.

 

보안적으로 VM은 문제가 생겨도 각각 VM이 분리되어 있기때문에 서로 피해가 가지 않지만, 

Container는 문제가 생길 수 있음. 

 

특정 모듈에 부하가 많이 가는 상황에서 모놀리틱 아키텍쳐에서는 해당 시스템의 리소스 전체를 올리는 것은 비효율적임.

특정 모듈을 떼어내는 것이 유리하고, 해당 모듈을 VM으로 관리하는 것보단, Container로 관리하는 것이 가볍고, scale out에 유리함. 

이렇듯 MSA에서 Container로 관리하면 큰 효과를 낼 수 있음. 

 

 

반응형

'Programming > CS Basic' 카테고리의 다른 글

Storage ( Block, File, Object )  (0) 2022.07.06
Storage ( DAS, NAS, SAN )  (0) 2022.07.06
OSI 7 계층  (0) 2022.07.03
Database ( 데이터베이스 )  (0) 2022.07.03
쿠버네티스 (Kubernetes)  (0) 2022.07.03
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함
반응형