가상화가 나오게 된 배경
과거에는 하드웨어의 빠른 발전에 비해서 소프트웨어의 발전은 속도가 뎌딘 편이었다.
또한 과거의 프로그래밍에서는 하나의 애플리케이션은 하나의 서버에서 구동되는 방식이었는데, 하드웨어의 성능이 점점 좋아질수록 자원 사용률은 점점 낮아지게 된다.
하드웨어와 소프트웨어의 괴리 + 구조적인 문제로 인해 Single Server는 많은 단점이 존재하게 되었다.
(1) 리소스 활용도
첫 번째로 서버의 전체 자원을 애플리케이션에 효율적으로 할당하기 어려웠다.
애플리케이션에 필요한 자원보다 서버의 자원이 많은 경우, 남는 자원이 낭비되고,
반대로 애플리케이션에 필요한 자원이 더 많은 경우, 성능이 저하된다.
(2) 확장성
애플리케이션에 대한 요청이 증가하면 서버의 리소스가 더 많이 필요해진다.
이 경우, 하드웨어를 업그레이드하거나 새로운 서버를 추가해야 하는데, 시간과 비용이 많이 든다.
(3) 고가용성
하나의 서버에서 애플리케이션을 구동할 때, 해당 서버에 문제가 발생하면 애플리케이션에도 직접적인 영향을 준다.
이로 인해 서비스가 중단되거나 가용성이 떨어질 수 있다.
(4) 관리 복잡성
서버 및 애플리케이션을 관리하기 위해서는 각 서버마다 개별적인 관리가 필요하다.
이로 인해 관리 비용이 증가하고 유지보수가 어려워진다.
(5) 유연성 부족
하나의 서버에서 하나의 애플리케이션을 실행하는 방식에서는,
다른 환경의 애플리케이션과 통합하거나 기존 애플리케이션에 변경 사항을 적용하는 것이 어렵다.
이렇게 많은 단점이 존재하기 때문에 1960년에 가상화라는 개념이 등장하게 되었다.
가상화 개념
가상화(Virtualization)는 물리적인 컴포넌트(Components, HW장치)를 논리적인 객체로 추상화 하는 것을 의미한다.
마치 하나의 장치를 여러 개처럼 동작시키거나 반대로 여러 개의 장치를 묶어 마치 하나의 장치인 것처럼 사용자에게 공유자원으로 제공할 수 있어 클라우드 컴퓨팅 구현을 위한 핵심기술라고 할 수 있다.
간단하게 설명해서 하나의 컴퓨터 자원을 사용해서 여러 개의 서버처럼 사용할 수 있다는 것이다.
가상화의 장점
1) 높은 수준의 자원 사용율(물리서버 10~15% vs 가상화 70% 이상)을 가진다.
2) 분산 처리 능력을 제공할 수 있다.
가상머신
가상화를 통하여 구현되는 복제된 컴퓨팅 환경을 의미하는데,
가상머신은 호스트 시스템 위에 가상화된 하드웨어를 생성하고, 게스트 운영체제(OS)를 실행한다.
각각의 VM은 독립적인 운영체제, 커널, 응용 프로그램을 가지며, 하이퍼바이저를 통해 호스트 시스템과 격리된다.
운용 목적
1) 하나의 하드웨어 위에 동시에 여러 종류의 운영체제나 프로토콜을 실행
2) 하나의 하드웨어 자원을 여러 사용자에게 분할
3) 가상화를 통해 분할된 시스템 간 상호 간섭이 없는 독립성(Isolation)을 보장
하이퍼바이저
공유 컴퓨팅 자원을 관리하고 가상머신들을 컨트롤(I/O 명령 처리) 하는 중간관리자.
즉, 하이퍼바이저는 가상화 기술을 사용하여 하나의 물리적 호스트에서 여러 가상 머신을 동시에 실행
할 수 있는 소프트웨어 또는 하드웨어를 뜻한다.
그렇다면 컨테이너는 무엇일까?
컨테이너
컨테이너는 모듈화되고 격리된 컴퓨팅 공간 또는 컴퓨팅 환경을 의미한다.
VM과의 차이점은 컨테이너는 호스트 시스템의 운영체제 커널을 공유하며, 격리된 프로세스 공간에서 실행된다.
컨테이너는 독립적인 파일 시스템과 실행 환경을 가지며, 호스트 시스템과 직접 통신할 수 있다.
*Docker와 Kubernetes가 대표적인 컨테이너 배포 플랫폼이다.
운용 목적
1) 시스템 환경 의존성을 탈피하고 안정적으로 구동.
2) 컴퓨팅 환경 간 이식성을 향상시킴으로써, 구동환경의 변화에 따른 각종 오류를 방지.
3) VM에 비해 가볍고, 배포가 빠르며, 자원을 효율적으로 사용할 수 있다.
'Skills > DevOps' 카테고리의 다른 글
#3 AWS Elastic Beanstalk 기반 CI/CD 블루그린 배포 - deploy.yml (0) | 2023.05.23 |
---|---|
#0 AWS Elastic Beanstalk 기반 CI/CD 블루그린 배포 - 배포 프로세스 (0) | 2023.05.22 |
#2 AWS Elastic Beanstalk 기반 CI/CD 블루그린 배포 - Procfile, .ebextensions (1) | 2023.05.22 |
#1 AWS Elastic Beanstalk 기반 CI/CD 블루그린 배포 - RDS, Elastic Beanstalk, IAM, Github Actions (0) | 2023.05.16 |
무중단 배포와 배포 전략(롤링, 블루-그린, 카나리, A/B) (0) | 2023.05.08 |