가상화란
전통적으로 하드웨어에 바인딩된 리소스를 사용하여 유용한 IT 서비스를 만들 수 있게 해주는 기술
사용자 또는 환경에 기능을 분산하여 물리적 시스템의 전체 용량을 사용
가상화 작업을 통해, 하나의 하드웨어를 통해서 2개 이상 (여러 개)의 서버를 분할하여
관리할 수 있다.
가상화의 역사
현재는 클라우드 컴퓨팅으로 가상화가 발달되어 있다.
클라우드 컴퓨팅은 클라우드 서비스로, 무선으로 다른 곳에 위치한 서버에 접근하여 서버를 사용할 수 있게 해준다.
대표적으로 AWS, Naver Cloud, Google Cloud 등등이 있다.
하이퍼바이저 - 가상화의 핵심
하이퍼바이저는 가상 머신을 생성하고, 실행하는 소프트웨어이다.
메모리나 프로세싱과 같은 리소스를 (하드웨어 자원을) 가상으로 공유하여 하나의 호스트 컴퓨터에서 여러 게스트 가상 머신을 지원한다.
하이퍼바이저를 통해 가상화를 진행하고,
하드웨어를 통해 여러 게스트 가상머신을 만들어준다. - 정확한 개념이 아니기에, 참고만 하는 걸 권장한다.
하이퍼바이저의 종류
Type1. 하이퍼바이저
경량의 운영 체제처럼 작동하며 호스트의 하드웨어에서 직접 실행한다.
Type2. 하이퍼바이저
다른 컴퓨터 프로그램처럼 운영 체제에서 소프트웨어 계층으로 실행
리눅스 컨테이너란
어플리케이션을 개발이 완료되고, 공유 호스트 서버에 올릴 때 (배포할 때는)
리눅스 컨테이너를 만들어서 어플리케이션 실행에 필요한 라이브러리, 실행 파일들을 Push한다.
그렇게되면, 리눅스 컨테이너로 서버에 Push할 때의 리눅스 이미지로 고정하여 서버의 가상 머신으로 구동이 되게 된다.
리눅스 컨테이너를 통해 어플리케이션 실행 파일의 모듈 버전 불일치 에러를 극복할 수 있다.
예를 들어, 2003년에 만든 어플리케이션을 호스트 OS의 공유 가상머신으로 구동한다면,
공유 가상머신의 리눅스 이미지를 업데이트하면, 2003년에 만든 어플리케이션은 현재 작동할 수 없게되어진다.
요약해서,
리눅스 컨테이너를 통해 어플리케이션을 하나의 리눅스 이미지로 구현되도록 묶어
서버에 호스트 서버에 올려다고 생각하면 된다. - 정확한 개념이 아니기에, 참고만하는 걸 권장한다.
혹시라도, 개념에 대한 오개념이 있다면, 댓글로 남겨주시면 감사하겠습니다.
# 리눅스 컨테이너를 만드는 툴 - Docker
Docker를 통해 호스트 서버에 리눅스 컨테이너를 생성할 수 있도록 해준다.
리눅스 컨테이너를 통해 하나의 운영체제에 여러 번의 가상화를 진행하는데,
이때 리눅스 컨테이너의 차이점은 하나의 가상머신은 하나의 어플리케이션만 작동한다.
(AWS EC2 서버도 Docker를 사용해 리눅스 컨테이너를 생성해준다.)
임베디드 가상화
# 자동차 내부의 임베디드는 다음과 같이 가상화되어 실현된다.
'CS 대학강의' 카테고리의 다른 글
[CS 1-2 | 시스템 프로그래밍 기초] 포인터 심화 12주차 (1) | 2022.11.01 |
---|---|
[CS 1-2 | 프로그램 설계 방법론] Java 인터페이스와 상속 10주차 (0) | 2022.10.27 |
[CS 1-2 | 프로그램 설계 방법론] Java로 병원 입원 관리 서비스 제작 (0) | 2022.10.20 |
[CS 1-2 | 프로그램 설계 방법론] Java로 스도쿠 프로그램 제작 (0) | 2022.10.18 |
[CS 1-2 | 프로그램 설계 방법론] 배열 객체 & MVC 아키텍처 설계 실제 프로그램에 적용해보기 9주차 (2) | 2022.10.15 |