-
[SW 정글 32일차] 가상화를 맛보다기타/SW 사관학교 정글 2021. 9. 3. 02:37
오늘은 C언어로 Red=Black 트리를 구현하기 위해 윈도우OS인 나의 컴퓨터에서 우분투 OS로 환경을 만들기 위해 가상화 소프트웨어인 VMware를 처음 사용해보았다.
VMware를 사용하기 전에는 MS에서 제공해주는 WSL2를 설치하여 Ubuntu20.04 앱을 깔아서 running시키는 형식을 시도했다.
이러한 과정에서 가상화라는 개념이 중요하다고 생각이 들어 정리해보려고 한다.
1. 가상화란?
가상화는 물리적인 하드웨어 장치를 논리적인 객체로 추상화하는 것을 말한다.
추상화라는 단어... 컴퓨터 시스템에서는 굉장히 자주 쓰이는 단어인 것같다.
조금 더 직관적으로 말하면 기존에 가지고 있던 하드웨어를 여러개처럼 동작시키거나 혹은 여러 개의 장치를 묶어 하나의 장치인 것처럼 사용자에게 공유자원으로 제공할 수 있다는 것이다.
여기서 하드웨어는 CPU, RAM, memory 등등이 있을 것이고 이를 쪼개거나 합쳐서 여러 사용자들이 효율적으로 자원을 사용할 수 있게 되거나 분산처리가 가능하게 된다.
2. 가상화의 기능
가상화는 자원의 공유(Sharing), 단일화(Aggregation), 에뮬레이션(Emulation) 그리고 절연(Insulation)이라는 4가지 기본적인 기능을 가지고 있다.
1) 공유(sharing)
가장 대표적인 가상화의 기능으로서 다수의 많은 가상 자원들이 하나의 동일한 물리적 자원과 연결되어 있거나 가리키는 것을 말한다. 물리적 자원의 일부분을 가상화된 자원마다 할당하거나 혹은 물리적 자원에 대하여 타임 쉐어링 기법으로 공유하는 방식이 주로 사용된다.
이러한 형태의 가상화는 가상화 자원을 사용하는 여러 사용자들(애플리케이션 또는 서비스)이 물리적 자원을 공유하게 해주며, 이때 각 사용자는 마치 자기가 해당 자원을 혼자서만 사용하는 것과 같은 착각을 하게 된다.
2) 단일화 (Aggregation)
공유의 반대되는 개념으로 가상 자원은 여러 개의 물리적 자원들에 걸쳐서 만들어질 수 있고 이를 통해 외견상 전체 용량을 증가시키고 전체적인 관점에서 활용과 관리를 단순화시켜 줄 수 있다.
예를 들어, 스토리지 가상화는 여러 개의 물리적 디스크 시스템에 남아있는 각각의 유휴 디스크들을 하나의 가상화된 디스크로 만들어 주는데, 이때 가상화된 디스크는 가상 디스크를 만드는데 사용 되어진 어떤 물리적 디스크보다도 더 커질 수 있다.
3) 에뮬레이션 (Emulation)
물리적 자원 자체에는 원래부터 존재하지 않았지만 가상 자원에는 어떤 기능들이나 특성들을 마치 처음부터 존재했던 것처럼 가질 수 있는 것을 말한다.
4) 절연 (Insulation)
가상화된 자원들과 물리적 자원들간의 상호 맵핑은 가상화 자원들 또는 가상화 자원들을 사용하는 사용자들에게 아무런 영향을 미치지 않으면서 물리적 자원들이 교체될 수 있도록 해주는 것을 말한다.
다른 말로 투명한 변경(Transparent Change)이라고도 부른다.
어떤 가상 프로세서가 결함이 발생하였거나 혹은 곧 발생하려는 물리적 프로세서에서 다른 정상적인 물리적 프로세서로 자동적으로 옮겨간다거나, 디스크의 결함을 사용자들로부터 숨기기 위해 다중디스크(Redundant Disk)를 사용하는 RAID 스토리지 컨트롤러가 대표적인 예시라고 볼 수 있다.
3. 가상화의 장점과 단점
위에서 알아본 가상화가 무엇인지와 기능들을 보면 가상화는 이상적으로 매우 좋은 기술이다.
하지만, 모든 것에는 장점과 단점이 존재한다고 생각하는데 가상화의 장점과 단점을 알아보자.
- 가상화의 장점
유연성: 동일한 하드웨어에서 여러 운영 체제를 동시에 실행 가능
민첩성: 한 물리적 서버에서 다른 물리적 서버로 파일이나 사진을 이동하는 것처럼 운영 체제 이동이 가능.
내결함성: 물리적 서버에 장애가 발생하면 관리 소프트웨어는 이용 가능한 다른 서버로 신속하게 인스턴스를 마이그레이션해서 물리적 하드웨어에 장애가 발생했다는 것조차 알 수 없도록 조치가 가능
(위에서 본 절연이라는 기능과 유사한 의미이다.)
비용 효율성: 필요한 물리적 서버 수 절감과 운영 및 유지보수 비용도 절감가능
- 가상화의 단점
성능열화가 발생 가능성
시스템에 장애 발생 할 경우 원인과 문제를 특정하는데 어려움
어플리케이션이 가상화 환경에서 정상적인 작동을 하는지 사전 검증작업이 필요
가상화 환경만의 보안문제 발생
[오늘의 나는 어땠을까?]
오늘은 알고리즘 주차가 마무리되고 새롭게 C언어를 접하고 Red-black tree를 구현하는 주차를 맞이했다.
이번 주차에 들어가기 전에는 그냥 vscode에서 c로 구현하고 돌리면 되지 않나?라는 생각이였지만 오늘 과제를 부여받고 큰 멘붕에 빠졌다.
윈도우 환경에서가 아닌 리눅스 기반으로 만들어진 우분투에서 작업을 진행해야한다는 것이였다.
코치님께서 과제를 설명해주었는데 솔직히 무슨 말인지 이해가 하나도 안갔다.
사실 그냥 윈도우에서 c파일 만들어서 AWS에 올리고 gcc설치해서 컴파일돌려서 테스트하면 되는 줄알았다.
설명이 끝나고 모두가 어떻게 작업을 해야할지 얘기가 오갔지만 다들 한번쯤은 경험이 있어서인지 자신만의 생각을 주고받는데 나는 무슨 말인지 이해를 할 수 없었고 동료들에게 하나씩 물어보며 이해할 수 있게 됐다.
이전에도 느낀 것이지만 좋은 동료가 옆에 있다는 것은 정글에서 주는 큰 선물이다.
나도 다른 사람들에게 큰 선물을 받았다고 느낄 수 있게 많은 도움을 주고 싶다.
부족함을 많이 느낀 오늘, 또 다시 노력하여 채워야겠다.
<참고 자료>
'기타 > SW 사관학교 정글' 카테고리의 다른 글
[SW 정글 34일차] 알수록 신기한 C언어 (0) 2021.09.05 [SW 정글 33일차] gcc 알아보기 (0) 2021.09.04 SW 정글 4주차 회고 (1) 2021.09.02 [SW 정글 31일차] 오늘은 C 포인터 (0) 2021.09.02 [SW 정글 30일차] C언어는 배열부터 맛보기 (1) 2021.09.01