Cloud Computing
전기는 가상화된다.
정보기술로 확장할 경우 내부 작동방식을 숨기면서 유용한 기능 제공.
완전한 가상화로 간주되려면 컴퓨팅 자체에서 처리, 저장, 데이터 및 소프트웨어 리소스와 같은 분산된 구성 요소로 컴퓨터 구축
Utilty Computing
온디멘드 컴퓨팅 성능을 제공 . 쓰는 양에 따라 비용을 지불한다.
클라우드 컴퓨팅의 동기: 클라우드 컴퓨팅은 대규모의 컴퓨팅 및 저장 시스템에서 데이터를 처리하고 저장함으로써 더 효율적으로 운영될 수 있다는 생각에 기반하였다. 데이터센터는 자원 소비를 획기적으로 줄여줬다.
Grid Computing : 표준 웹 서비스 기반 프로토콜을 구축하는 것
장점
- 분산 리소스를 투명하게 통합할 수 있다.
- 다양한 관리 도메인에 분산된 컴퓨팅 및 스토리지 리소스 공유한다. 모아서 관리한다는 뜻이다.
- 분산된 리소스를 발견,전급,할당,모니터링을 한다.
단점
- QoS(Qurality - of - Service) 보장이 어렵다. 성능 격리가 부족하여 한쪽 활동이 다른쪽에 영향을 미칠 수 있어서 민감한 작업엔 어울리지 않다. 시간이 중요한 애플리케이션엔 적합하지 않다.
- 휴대성 장벽이 있다. 다양한 소프트웨어 구성의 자원을 지원하지 못한다(다른 운영체제, 라이브러리,컴파일 등등..) 이로 인해 유틸리티 컴퓨팅 환경으로 채택하기가 어렵다.
하드웨어 가상화(Hardware Virtualization):
Hardware Virtualization의 주요 개념
- 가상화 계층:
- 하드웨어 가상화는 하드웨어와 운영 체제 사이에 **하이퍼바이저(Hypervisor)**라는 가상화 계층을 둡니다. 하이퍼바이저는 물리적 자원을 관리하고, 여러 가상 머신이 자원을 독립적으로 사용할 수 있도록 합니다.
- 가상 머신:
- 가상 머신은 독립된 운영 체제와 애플리케이션을 실행할 수 있는 소프트웨어 기반의 환경입니다. 각 VM은 자체적으로 CPU, 메모리, 스토리지 등의 자원을 할당받아 실행됩니다.
- 자원 할당:
- 하이퍼바이저는 물리적 자원을 여러 가상 머신에 할당하고, 필요에 따라 동적으로 자원을 조정할 수 있습니다. 이로 인해 자원의 효율적 사용이 가능합니다.
Hardware Virtualization의 장점
- 자원 효율성:
- 물리적 서버를 여러 가상 머신으로 나누어 사용함으로써 하드웨어 자원을 최적화할 수 있습니다. CPU, 메모리, 스토리지 등의 자원이 더 잘 활용됩니다.
- 서버 통합:
- 여러 서버를 하나의 물리적 서버로 통합하여 관리함으로써, 하드웨어 비용과 운영 비용을 줄일 수 있습니다. 물리적 서버의 수를 줄이면 전력 소비 및 냉각 비용도 절감할 수 있습니다.
- 유연성 및 확장성:
- 필요에 따라 가상 머신을 쉽게 생성, 삭제, 복제할 수 있어 유연한 자원 관리를 지원합니다. 비즈니스 요구에 맞춰 즉시 새로운 VM을 배포할 수 있습니다.
- 격리성:
- 각 가상 머신은 독립적으로 실행되므로, 하나의 VM에서 발생한 문제가 다른 VM에 영향을 미치지 않습니다. 이는 보안과 안정성에 기여합니다.
- 신속한 배포 및 테스트:
- 새로운 소프트웨어나 업데이트를 테스트할 때, VM을 사용하여 안전하게 실험할 수 있습니다. 테스트 후 원래 상태로 쉽게 복구할 수 있습니다.
Hardware Virtualization의 단점
- 성능 오버헤드:
- 가상화 계층이 존재하기 때문에 물리적 하드웨어에 직접 접근할 때보다 성능 저하가 발생할 수 있습니다. 특히, CPU와 메모리 집약적인 작업에서 성능이 영향을 받을 수 있습니다.
- 복잡성 증가:
- 가상화 환경은 관리와 설정이 복잡해질 수 있습니다. 여러 VM을 관리하는 데 필요한 도구와 프로세스가 추가되며, 보안 및 네트워크 구성도 복잡해질 수 있습니다.
- 리소스 경합:
- 여러 가상 머신이 동일한 물리적 자원을 공유하므로, 자원 경합(Resource Contention) 문제가 발생할 수 있습니다. 이로 인해 일부 VM의 성능이 저하될 수 있습니다.
- 라이센스 및 지원 비용:
- 가상화 소프트웨어 및 하이퍼바이저의 라이센스 비용이 추가로 발생할 수 있으며, 특정 애플리케이션에 대한 지원이 제한적일 수 있습니다.
- 보안 문제:
- 여러 VM이 동일한 하드웨어를 공유하므로, 한 VM의 보안 문제가 다른 VM에 영향을 미칠 수 있습니다. 가상화 환경에서의 보안 관리가 더욱 중요합니다.
- 데이터 센터 운영 문제 해결: 하드웨어 가상화는 수천 대의 컴퓨터로 구성된 대규모 데이터 센터에서 많은 사용자와 애플리케이션을 효과적으로 관리할 수 있게 해줌.
- 기술적 혁신: 멀티코어 칩, 반가상화, 하드웨어 지원 가상화, VM의 실시간 마이그레이션 등의 기술이 가상화 채택을 증가시킴.
- 작업 격리: VM 내에서 프로그램 명령이 격리되어 보안 및 신뢰성을 향상시키며, 한 VM의 실행이 다른 VM의 성능에 영향을 미치지 않도록 함.
- 통합 및 마이그레이션: 이종 작업 부하를 단일 물리적 플랫폼으로 통합하여 시스템 활용도를 향상시키고, VM을 다른 플랫폼으로 마이그레이션하거나 복구하는 것을 용이하게 함.
강조되는 세가지 기본적 기능 : 격리 ( isolation) 통합 (consolidation) , 마이그레이션(migration) -> 서로 영향을 끼치지 않
하드웨어 가상화는 결국 Grid computing의 문제를 해결할 수 있다.
- VM 머신을 통해 Qos 문제를 해결한다.
- 소프트웨어 구성차이로 인한 문제를 다른 운영체제나 소프트웨어 스택을 단일 하드웨어에서 동시에 실행할 수 있게 한다.
- 다 개별적인 머신이라 서로에게 영향을 주지 않는다.
데이터 센터 자동화를 위한 자율 컴퓨팅 개념:
- 실행 중인 애플리케이션의 서비스 수준 관리.
- 데이터 센터 용량 관리.
- 재해 복구의 선제적 대응.
- VM 프로비저닝의 자동화.
▪ IaaS (Infrastructure-as-a-Service) – 서비스형 인프라 . IaaS는 가상화된 자원(컴퓨팅, 스토리지, 통신)을 필요에 따라 제공하는 서비스
– 서버/스토리지/네트워크 등의 H/W 자원을 필요에 따라서 사용할 수 있게 제공하는 형태
Ex) EC2는 여러 운영 체제에서 애플리케이션 인스턴스를 실행할 수 있는 간단한 인터페이스를 제공하는 웹 서비스. 가상화 전략: EC2는 가상화 전략에 기반
- 인스턴스 생성: EC2 인스턴스는 미리 정의된 Amazon Machine Image (AMI)에서 생성
- 루트 접근 권한: 사용자는 각 인스턴스에 대한 루트 접근 권한을 가짐 -> 원하는대로 커스텀 가능.
Elastic Block Store (EBS) : 데이터베이스 애플리케이션, 파일 시스템, 원시 데이터 장치를 사용하는 애플리케이션에 적합합니다.
정의: EBS는 EC2 인스턴스와 함께 사용할 수 있는 지속적인 블록 수준 스토리지 볼륨을 제공합니다.
▪ PaaS (Platform-as-a-Service) – 사용자는 관리 필요가 없다. PaaS는 클라우드를 쉽게 프로그래밍할 수 있도록 더 높은 수준의 추상화를 제공. 개발자가 제
– 서비스를 개발할 수 있는 안정적인 환경(Platform)과 응용 프로그램을 개발할 수 있는 API까지 제공하는 형태
– 개발자들
Ex) Google App Engine,
▪ SaaS (Software-as-a-Service) SaaS는 클라우드 스택의 상단에 위치한 애플리케이션으로, 최종 사용자는 웹 포털을 통해 이 애플리케이션에 접근
– 클라우드 환경에서 동작하는 응용프로그램을 서비스 형태로 제공하는 형태
– IT departments
– 보안성능 제어 ↓
소비자들은 점점 로컬에 설치된 프로그램에서 온라인 소프트웨어로 이동한다.
Simple Storage Service (S3) -> SaaS
- 정의: S3는 대용량 객체를 저장하도록 설계된 스토리지 서비스입니다. object base storage
- 기능: S3는 최소한의 기능 세트를 지원합니다:
- 작업: 쓰기, 읽기, 삭제.
- 객체 크기: S3는 크기가 1바이트에서 5테라바이트까지의 무제한 객체를 처리할 수 있습니다.
- 객체 저장: 각 객체는 버킷에 저장되며, 고유한 개발자가 할당한 키를 통해 검색됩니다.
배포 모델
1. 프라이빗 클라우드 (Private Cloud)
- 설명: 기존 인프라를 재구성하여 가상화와 클라우드와 유사한 인터페이스를 추가합니다.
- 장점: 사용자는 로컬 데이터 센터와 상호작용하면서도 공공 클라우드의 이점을 경험할 수 있습니다.
- 기능: 셀프 서비스 인터페이스, 가상 서버에 대한 특권 접근, 사용량에 따른 계량 및 청구 등의 기능이 포함됩니다.
2. 커뮤니티 클라우드 (Community Cloud)
- 설명: 여러 조직이 공유하며, 특정 커뮤니티의 공통된 관심사를 지원합니다.
3. 하이브리드 클라우드 (Hybrid Cloud)
- 설명: 프라이빗 클라우드는 공공 클라우드의 컴퓨팅 용량으로 보완됩니다(클라우드 버스팅).
- 장점: 프라이빗 클라우드의 보안과 제어를 유지하면서도 공공 클라우드의 확장성을 활용할 수 있습니다.
AWS Region
- 정의: AWS Region은 특정 지리적 지역에 위치한 데이터 센터 클러스터입니다.
- 예시: 북동부 미국 또는 서유럽과 같은 지역이 있습니다.
- 베스트 프랙티스: 사용자와 지리적으로 가까운 리전을 선택하는 것이 모범 사례입니다. 이렇게 하면 지연(latency)을 줄일 수 있습니다.
AWS Availability Zone (AZ)
- 정의: AZ는 특정 리전 내의 독립적인 데이터 센터 또는 데이터 센터 집합을 의미합니다.
- 운영 독립성: 각 AZ는 독립적으로 운영되므로 하나의 AZ에서 발생하는 장애가 다른 AZ에 영향을 미치지 않습니다
Simple Queue Service (SQS)
- 정의: SQS는 호스팅된 메시지 큐 서비스입니다.
- 목적:
- 자동화된 워크플로를 지원하는 시스템입니다.
- 인스턴스 간 협업:
- 여러 EC2 인스턴스가 SQS 메시지를 전송하고 수신함으로써 활동을 조정할 수 있습니다.
- 독립적인 애플리케이션 실행:
- 애플리케이션은 독립적이고 비동기적으로 실행되며, 동일한 기술로 개발될 필요가 없습니다.
이러한 특징 덕분에 SQS는 분산 시스템에서의 메시지 전송과 처리를 간편하게 만들어줍니다.
AWS: 서버리스 컴퓨팅
Lambda 서비스
- 클라우드 컴퓨팅은 많은 대규모 데이터 애플리케이션과 장기적인 계산과 관련이 있습니다.
- 반면, 실시간 애플리케이션과 외부 이벤트에 의해 트리거되는 짧은 사용은 어떻게 될까요? -> Lamda 서비스 나온 이유
- AWS는 IoT(사물 인터넷) 와 관련된 서비스들을 예측하며 서버리스 컴퓨팅 서비스를 도입했습니다.
- 애플리케이션은 조건과/또는 이벤트에 의해 트리거됩니다.
- 예를 들어, 애플리케이션은 자정에 기업의 일일 에너지 소비를 확인하기 위해 짧은 시간 동안 실행되거나, 주간으로 체인 매출을 확인하기 위해 활성화될 수 있습니다. ( 얼마나 사용했는지)
- 서비스는 실제 실행 시간에 따라 밀리초 단위로 청구되며, EC2와는 달리 시간 단위가 아닌 방식입니다. -> 결국 쓴만큼 지불한다.
- 모든 지역은 고속 네트워크로 연결된 최소 두 개의 가용성 존을 가지고 있습니다.
- 지역은 자원을 공유하지 않으며 인터넷을 통해 통신합니다.
VIRTUALIZATION TECHNOLOGIES
Virtualization은 물리적인 컴퓨터 자원을 추상화
– 가상화는 물리적인 컴포넌트(HW 장치)를 논리적인 객체로 추상화 하는 것을 의미
– 하나의 장치를 여러 개처럼 동작시키거나, 여러 개의 장치를 묶어 마치 하나의 장치인 것처럼 사용자에게 제공
→ 클라우드 컴퓨팅 구현을 위한 핵심기술
데이터 센터의 효율적인 자원 관리 – 일반적으로 서비스 사업자의 서버에서 제공되는 서비스는 항상 많은 양의 컴퓨팅 자원을 소모하진 않음!
가상화를 통해 한 대의 서버 컴퓨터에서 동시에 여러 개의 운영 체제를 가동시키고, 컴퓨팅 자원이 모자란 서버의 요청 태스크를 분산처리 가능
Hypervisor 기반 가상화
Hypervisor 기반 가상화는 물리적 하드웨어를 가상화하여 여러 개의 가상 머신(VM)을 생성하고, 각 VM이 독립적으로 운영체제를 실행할 수 있도록 합니다.
장점
- 높은 격리성: 각 VM은 독립적인 운영체제와 리소스를 가지므로, 다른 VM에 영향을 주지 않고 격리된 환경을 제공합니다.
- 다양한 운영체제 지원: 동일한 하드웨어에서 서로 다른 운영체제를 실행할 수 있습니다. 예를 들어, Linux와 Windows를 동시에 실행할 수 있습니다.
- 보안: 격리된 환경에서 실행되므로, 한 VM에서 발생한 문제가 다른 VM에 영향을 미칠 가능성이 낮습니다.
단점
- 오버헤드: Hypervisor는 전체 운영체제를 실행하기 때문에 더 많은 메모리와 CPU 자원을 필요로 하며, 성능 오버헤드가 발생할 수 있습니다.
- 느린 부팅 시간: 각 VM이 독립적인 운영체제를 부팅해야 하므로, 초기화 시간이 오래 걸립니다.
- 복잡한 관리: VM은 운영체제의 모든 요소를 포함하기 때문에, 관리가 복잡하고 리소스 소비가 큽니다.
컨테이너 가상화
컨테이너 가상화는 운영체제 수준에서 가상화를 제공하며, 모든 컨테이너가 동일한 커널을 공유하면서도 격리된 프로세스 공간과 파일 시스템을 가집니다.
장점
- 경량성: 컨테이너는 운영체제를 공유하기 때문에, VM보다 훨씬 적은 리소스를 사용하며 빠르게 실행됩니다.
- 빠른 부팅 시간: 컨테이너는 운영체제를 부팅할 필요가 없으므로 매우 빠르게 시작할 수 있습니다.
- 이식성: 컨테이너는 애플리케이션과 그 종속성을 함께 패키징하므로, 어느 환경에서든 일관되게 실행할 수 있습니다.
단점
- 격리 수준이 낮음: 모든 컨테이너가 동일한 운영체제 커널을 공유하므로, Hypervisor 기반 가상화보다 보안 격리 수준이 낮습니다.
- 운영체제 종속성: 컨테이너는 호스트 운영체제와 동일한 운영체제를 사용해야 하므로, 다양한 운영체제를 동시에 실행하는 데는 적합하지 않습니다.
- 보안 문제: 컨테이너 간 격리가 부족하면, 한 컨테이너에서 발생한 보안 문제가 다른 컨테이너로 확산될 수 있습니다.
두 기술의 차이점
- 격리 수준:
- Hypervisor 기반 가상화는 각 VM이 독립적인 운영체제와 리소스를 가지며, 높은 수준의 격리를 제공합니다.
- 컨테이너 가상화는 컨테이너가 동일한 운영체제 커널을 공유하므로, 격리 수준이 상대적으로 낮습니다.
- 리소스 사용량:
- Hypervisor 기반 가상화는 VM당 전체 운영체제를 실행해야 하므로, 더 많은 리소스를 필요로 합니다.
- 컨테이너 가상화는 경량화되어 있어, 리소스 사용량이 훨씬 적습니다.
- 운영체제 지원:
- Hypervisor 기반 가상화는 여러 운영체제를 동시에 실행할 수 있습니다.
- 컨테이너 가상화는 호스트 운영체제와 동일한 운영체제 내에서만 작동합니다.
- 부팅 시간:
- Hypervisor 기반 가상화는 VM이 독립적인 운영체제를 부팅해야 하므로 시간이 오래 걸립니다.
- 컨테이너 가상화는 빠른 부팅 시간과 경량성을 자랑합니다.
결론
- Hypervisor 기반 가상화는 높은 격리성과 보안이 필요하고, 다양한 운영체제를 동시에 실행해야 하는 환경에 적합합니다.
- 컨테이너 가상화는 경량성, 빠른 배포, 이식성이 중요한 애플리케이션에 적합하며, 특히 마이크로서비스 아키텍처에서 널리 사용됩니다.