* 수업시간에 다룬 vagrantfile에 대해 설명한 글입니다.

 

config.vm.box = ?

?에는 vagrant web site에서 사용할 box를 찾아 넣어준다.

예시는 아래와 같다.

vagrant에서 찾은 box


config.vm.provider에는 사용할 provider에 대한 정보를 넣는다.


"forwarded_port"는 포트 포워딩을 뜻한다. (computer의 특정 포트로 들어온 통신을 VM의 포트로 전달하는 것)

해당 코드는 host의 8080 포트로 통신을 시도하면 VM의 80번 포트로 접속시킨다.

ip주소는 따로 지정하지 않았으므로 상관 없다.


우리가 사용하는 컴퓨터의 ip 주소가 여러개이기 때문에 그 중 어떤 ip 주소와 연결된 포트포워딩인지 지정해준다.

따라서 127.0.0.1 ip 주소로 8080 포트가 오면 guest의 8080 포트로 보낸다.

 

+ 여기서 127.0.0.1은 loop back interface인데 여기로 통신하는 이유는 내가 사용한 computer의 network 설정이 제대로 되어있는지 확인하기 위함이다.


private network ip주소를 192.168.33.10으로 지정한다.

 

+ 만약 설정해주지 않으면 DHCP 서버가 자동으로 생성한다.


bridge를 지정한다.

(가상머신이 호스트와 연결되는 방법으로 bridge를 사용할 경우 설정한다. 이 경우에는 host와 같은 레벨의 컴퓨터가 된다.)


가상머신과 호스트 컴퓨터간 폴더를 공유한다.

첫 번째 parameter는 host의 것, 두 번째 parameter는 가상머신의 폴더이다.

 📌 box

VM을 생성할 때 사용할 가상 이미지이다. 즉, 가상머신 이미지로 사용할 수 있도록 초기 설정된 바이너리이다.

box와 vm은 빵틀과 빵 같은 개념인데 VM은 box로 만든 가상의 기계라고 할 수 있다.

box는 아래와 같이 vagrant 웹 페이지에서 리소스들을 볼 수 있다.

https://app.vagrantup.com/boxes/search

 

 📌 provider

provider는 이미지를 사용하여 VM을 시작하는 시스템 소프트웨어이며 가상환경을 제공해주는 공급자로서 provider로 선택할 수 있는 것은 virtual box, vmware, docker 등이 있다.

아래와 같이 provider별 box도 볼 수 있다.

 

이용자가 '재생' 버튼을 누르기 전까지 일어나는 모든 일은 AWS에서 발생하고, 그 때 방영되는 영상 콘텐츠 자체는 CDN에서 만들어진다. CDN은 영상 콘텐츠를 저장하고 이를 클라이언트 기기로 전송한다.

 

넷플릭스는 이를 통해 웹사이트 로드 시간 개선, 대역폭 비용 절감, 콘텐츠 가용성 및 웹사이트 보안 개선 등 네트워크 효율성을 극대화하였다.

 

CDN이 가능했던 이유는 넷플릭스가 사용자에 대한 정보를 알기 때문이었는데, 특히 이를 이용하여 선호도와 위치에 따라 OCA를 배치하여 사용자에게 가까운 콘텐츠를 제공했던 것이다.

넷플릭스는 클라우드를 사용함에 따라 소프트웨어 개발자들이 중요하지만 회사의 핵심가치와는 먼 훌륭한 스토리지 솔루션, 하드웨어 오류 복구 시스템, 네트워크 관련 등과 같은 일들 보다는 넷플릭스 고객들이 고품질 비디오를 시청하도록 하는 것에 집중할 수 있도록 하였다.

 

현재는 기존 데이터 센터를 대신하여 클라우드 인프라 스트럭쳐가 고객 정보에서 추천 알고리즘에 이르기까지, 넷플릭스의 모든 컴퓨팅 및 스토리지 니즈를 담당하고 있다.

 

넷플릭스가 클라우드를 사용하면서 확장성, 서비스 가용성, 새로운 콘텐츠, 기능, 인터페이스 및 인터렉션을 출시하는 속도가 향상되었다.

사물인터넷(IoT)은 전구와 같은 일반 가전 제품부터 의료 기기, 웨어러블 기기, 스마트 기기는 물론 스마트 시티까지 실제 오브젝트를 인터넷에 연결하는 프로세스이다.

 

사물인터넷과 클라우드의 연동 장점을 크게 확장성 및 구축, 상호 운용성 및 데이터 이동성, 통신 및 데이터 관리, 보안까지 총 4가지로 말할 수 있다.

 

 📌 확장성 및 구축

클라우드를 사용하면 물리적 서버 설정, 네트워크 구성, 디비 구축 등의 작업을 직접 수행할 필요가 없으므로 구축이 쉽고 확장성이 높다. 또한 클라우드 서비스를 통해 원격 장치의 수명 주기를 쉽에 관리하며 모니터링이 가능하고 업데이트 자동화 도구를 제공한다.

 

 📌 상호 운용성 및 데이터 이동성

클라우드에 저장되고 처리되는 데이터는 전 세계 어디서나 액세스가 가능하며 실시간으로 수집이 가능하다. 또한 IoT 기기로 생성된 데이터와는 다른 데이터를 연동하거나 통합하기 쉽다.

 

 📌 통신 및 데이터 관리

클라우드는 기계간 통신을 최적화하고 인터페이스간 액세스를 쉽게 한다. 또한 데이터 저장, 처리 및 액세스 할 수 있는 비용을 줄일 수 있다.

 

 📌 보안

맞춤형 클라이언트 및 서버측 암호화를 통해 보안 침해 위험을 줄일 수 있다.

 

 

참고

https://www.daliworks.net/blog/saas_iot_cloud/

https://www.nakivo.com/blog/docker-vs-kubernetes/

먼저, 시스템 구조적으로 컨테이너는 한 OS를 공유하는 구조이고, VM은 각각의 OS를 띄워야하는 구조이기 때문에 컨테이너가 빠르다.

 

또한 컨테이너는 VM보다 이미지 사이즈가 작으며 부팅시 하이퍼바이저 - OS - 미들웨어 - application까지 실행되어야 하기 때문에 부팅 시간이 느린 VM과 달리 컨테이너는 분리된 프로세스 형식으로 OS 부팅이 필요없기 때문에 시작 시간이 빠르다. 

그리고 VM은 생성 후 개별로 변경 사항을 관리하기 때문에 VM간 구성이나 환경이 불일치 할 수 있지만 컨테이너는 application에 필요한 라이브러리나 의존 파일들을 이미지에 포함하기 때문에 환경 문제가 발생하지 않는다.

 

출처: 클라우드컴퓨팅서비스 보안관리 6주차 pdf

마지막으로 VM은 쓰기, 읽기 모두 성능 저하가 있고 컨테이너는 오직 쓰기에서만 성능 저하가 있다.

virtualizable mode는 물리적으로 하나인 자원을 논리적 자원으로 추상화하여 자원이 여러개인 것 처럼 하는 것이다. 따라서 해당 자원을 공유하며 사용 가능하다.

예를 들어, 유저 application은 virtualizable mode에서 작동한다. 이는 추상화된 논리적 환경이므로 여러개의 application을 실행할 수 있다.

 

하지만 가상화되지 않은 OS는 non-virtualizable mode에서 작동하는데 이는 특권모드이기 때문이다. 가상화를 시킨다면 특권모드에 OS 대신 하이퍼바이저가 놓인다. 따라서 virtualizable mode에서 실행시켜서 application처럼 여러개의 운영체제를 실행시킨다.

출처: 클라우드컴퓨팅서비스 보안관리 6주차 pdf

 

 📌 전가상화 without HW support

일반적인 protection ring과 달리 guest OS가 ring1에 위치하고 하이퍼 바이저는 ring0에 위치한다. guest OS가 항상 ring0에 있는 하이퍼 바이저를 통해 명령을 수행하기 때문에 오버헤드로 인한 성능 저하가 발생한다.

 

 📌 반가상화

반가상화는 변형된(수정된) guest OS가 ring0에 위치한다. 하이퍼바이저는 전가상화 without HW support의 VMM과는 달리 ring -1에 위치하며 guest OS는 hyper call을 통해 하드웨어에 직접 접근할 수 있다.

하이퍼바이저를 거치긴하지만 반가상화는 이진 변환이 없기 때문에 오버헤드가 적다는 장점이 있다.

 

 📌 전가상화 with HW support

guest OS가 ring0, VMM ring -1에 위치한다. 전가상화에서의 성능 저하 문제였던 이진 변환을 하이퍼바이저가 아니라 CPU가 수행함으로써 성능 향상이 있고 보안 관점에서도 좋다.

 📌 전가상화

전가상화는 호스트의 cpu의 가상화 기술을 이용하여 전체 하드웨어를 완전히 가상화하는 것이다. 게스트 OS는 하드웨어 자원을 요청하기 위해 반드시 하이퍼바이저가 중재한다. 게스트 OS가 하이퍼바이저에게 하드웨어 시스템 제어를 요구하면 하이퍼바이저가 하드웨어에게 요구사항을 전달한다.

 

 📌 반가상화

반가상화는 하드웨어 일부를 가상화한 것으로 게스트 OS를 일부 수정해서 필요한 하드웨어 자원을 하이퍼콜(Hyper call)이라는 명령어를 통해 직접 요구하게 하는 것이다. 하이퍼바이저가 모든 명령을 중재하는 전가상화보다 반가상화가 더 성능이 좋다.

Type1과 Type2는 Hypervisor를 어떠한 형태로 개발할 것이냐에 따라 나뉜다.

 

Type1은 하이퍼바이저는 OS 형태로 개발한다. 하이퍼바이저가 하드웨어 바로 위에서 실행되며 하이퍼바이저가 하드웨어를 직접 제어하기 때문에 자원을 효율적으로 사용할 수 있고, 별도의 Host OS가 없어서 오버헤드가 적지만 여러 하드웨어 드라이버가 필요해서 설치가 어렵다.

 

Type2는 하이퍼바이저는 Application 형태로 개발한다. 호스트형 하이퍼바이저는 일반적인 소프트웨어처럼 Host OS 위에서 실행된다. 이는 하드웨어 자원을 VM 내부의 guest OS에 에뮬레이트하는 방식이기 때문에 Type1보다 오버헤드가 크지만 게스트 OS 종류에 대한 제약이 없다. 또한 하이퍼바이저가 application으로 취급되기 때문에 만약 다른 application에서 악성코드가 실행될 경우 문제를 전달받을 수 있다.

+ Recent posts