빅테이터의 3대 요소 : 3Vs
- 크기 (Volume)
- 속도(Velocity)
- 다양성(Variety)
- + 가치 (Value)
1. 크기
일반적으로 수백 TB or 수십 Pb 이상
기존 파일 시스템에 저장하기 힘들어졌음 + 데이터분석을 위해 사용하는 데이터 웨어하우스 같은 솔루션에서 소화하기 어려울 정도로 급격히 데이터양 증가
-> 확장가능 ( 저장 + 분석 => 분산 컴퓨팅)
2. 속도
실시간 처리 : 매우 빠른 속도로 생성. 데이터의 생산 저장 유통 수집 분석의 실시간 처리 중요
장기적인 접근 : 대량의 데이터를 다양한 기술로 분석
3. 다양성
- 정형
- 고정된 필드에 저장되는 데이터
- 기존의 솔루션이용 -> 보관, 분석, 처리 작업
- 반정형
- 메타 데이터나 스키마를 포함하는 데이터
- 비정형
- 고정된 필드에 저장되어있지않은 데이터
- 동영상, 사진, 메신저로 주고받는 대화내용, 위치정보 등
빅데이터의 중요성
- 비용절감 - > 클라우드 기반 분석은 상당한 비용 이점
- 빠르고 나은 의사 결정 -> 메모리 분석의 속도와 새로운 데이터 소스를 분석할 수 있는 기능 결합
- 새로운 제품 및 서비스 - > 고객의 요구와 만족도를 측정할 수 있다.
▪ 클라우드 컴퓨팅은 다섯 가지 속성으로 구성
1. On-demand self service -> 필요할 때 편하게 쓸 수 있다.
2. broad network access -> 어디서든 편하게 쓸 수 있다.
3. resource poolng -> 원하는 대로 할당 가능
4. rapid elasticity -> 요구에 따라 신속하게 확장하거나 축소할 수 있다.
5. measured service -> 사용량을 측정할 수 있다.
▪ IaaS (Infrastructure-as-a-Service) – 서비스형 인프라
– 서버/스토리지/네트워크 등의 H/W 자원을 필요에 따라서 사용할 수 있게 제공하는 형태
Ex) EC2,
▪ PaaS (Platform-as-a-Service) – 사용자는 관리 필요가 없다.
– 서비스를 개발할 수 있는 안정적인 환경(Platform)과 응용 프로그램을 개발할 수 있는 API까지 제공하는 형태
– 개발자들
Ex) Google App Engine,
▪ SaaS (Software-as-a-Service)
– 클라우드 환경에서 동작하는 응용프로그램을 서비스 형태로 제공하는 형태
– IT departments
– 보안성능 제어 ↓
유틸리티 컴퓨팅 ( Utility Computing )
컴퓨팅 자원을 계량된 서비스로 제공한다. 사용한 만큼 사용량에 따라 요금을 지불한다.
가상머신을 동적으로 할당한다 . 필요에 따라 가상머신을 쉽게 생성하거나 제거할 수 있다.
사용 이유
Cost : 유틸리티 컴퓨팅을 사용하면 초기 자본 비용을 줄이고 실제 사용량에 따라 운영 비용만 지출하게 된다.
Scalability: 무한한 용량 유틸리티 컴퓨팅을 무한한 컴퓨팅 자원을 사용할 수 있다. 추가 자원을 요청할 수 있다.
Elasticity : 필요에 따라 확장하거나 축소할 수 있다.
- Type 1 Hypervisor (타입 1 하이퍼바이저):
- Bare-Metal 하이퍼바이저라고도 불리며, 하드웨어 위에 직접 설치
- 하이퍼바이저가 직접 하드웨어 자원을 관리하며, 그 위에 여러 운영체제(OS)를 가상 머신 형태로 실행할 수 있다
- 성능이 좋고 효율적이어서 서버나 데이터 센터에서 많이 사용된다
단점:
- 복잡한 관리: Type 1 하이퍼바이저는 고급 네트워크 및 가상화 기술을 필요로 하여 관리가 복잡할 수 있다.
- 전문 지식 필요: 하드웨어와 직접 상호작용하므로, 설정과 유지보수에 대한 높은 수준의 기술적 지식이 요구된다.
- 하드웨어 의존성: 직접 하드웨어에서 실행되기 때문에 특정 하드웨어나 구성 요소에 대한 의존성이 있을 수 있다.
- 비용: 주로 기업 환경에 맞춰진 솔루션이기 때문에, 설치 및 라이선스 비용이 상대적으로 높을 수 있다.
- Type 2 Hypervisor (타입 2 하이퍼바이저):
- Hosted 하이퍼바이저라고도 불리며, 기존 운영체제(Host OS) 위에 설치된다
- 하이퍼바이저는 응용 프로그램처럼 Host OS에서 실행되고, 그 위에서 게스트 운영체제(Guest OS)를 실행할 수 있다
- 설치와 사용이 쉬워 개인 PC나 테스트 환경에서 주로 사용된다
단점:
- 낮은 성능: 기존 OS 위에서 실행되기 때문에 Type 1에 비해 오버헤드가 높아 성능이 떨어질 수 있다.
- 보안 취약성: Type 2 하이퍼바이저는 호스트 OS에 의존하므로, 호스트 OS의 보안 취약점이 가상 환경에도 영향을 미칠 수 있다.
- 자원 소모: 호스트 OS와 하이퍼바이저가 함께 자원을 사용하기 때문에 메모리와 CPU 소모가 많아질 수 있다.
- 네트워크 성능 저하: 호스트 OS를 거쳐 네트워크를 이용하기 때문에 네트워크 성능이 저하될 수 있다.
주요 차이점:
- Type 1은 하드웨어에 직접 설치되어 성능이 좋고 안정적이며 주로 서버 환경에서 사용된다
- Type 2는 기존 OS 위에 설치되므로 사용이 간편하지만, 성능과 자원 효율성에서는 Type 1보다 낮다
3. 컨테이너 기반 가상화
- 구조: 호스트 OS 위에 컨테이너 엔진(예: Docker)이 실행되며, 각 애플리케이션은 호스트 OS를 공유하고 격리된 컨테이너에서 실행.
- 장점:
- 가벼운 자원 사용: 컨테이너는 별도의 게스트 OS가 없으므로, 메모리 및 CPU 사용량이 적다.
- 빠른 시작 및 실행 속도: OS 레벨 격리로 인해 애플리케이션 시작과 실행 속도가 빠르다.
- 높은 확장성: 경량 컨테이너 덕분에 서버당 더 많은 애플리케이션을 실행할 수 있다.
- 단점:
- 낮은 격리 수준: 호스트 OS를 공유하므로, 보안성이 다소 낮아질 수 있다.
- 운영체제 제한: 주로 동일한 OS 환경에서 실행 가능하며, 다양한 OS를 동시에 실행하기 어렵다.
동시성(Concurrency)은 이해하기 어려움
- 데이터센터 규모에서의 동시성은 훨씬 더 복잡하다. 수천 대의 서버가 동시에 작동하며, 이러한 서버들이 서로 상호작용할 때 발생하는 문제를 관리하는 것은 매우 어렵.
- 장애가 발생할 때: 시스템 장애나 네트워크 오류가 발생할 경우 동시성을 관리하는 것은 더욱 복잡해집니다. 장애 상황에서도 시스템이 일관되게 동작하도록 설계하는 것은 매우 도전적인 과제입니다.
- 현대의 시스템은 여러 서비스가 서로 상호작용하는 복잡한 구조로 이루어져 있다.
데이터센터 컴퓨터는 추상화를 잘해야 한다. 그리고 경쟁사새, 락 충돌등 문제를 걱정할 필요가 없고 신뢰성, 결함성을 명시적으로 걱정할 필요가 없다.
무엇을 할 지와 어떻게 할 지를 분리한다.
데이터 센터를 하나의 큰 추상화 컴퓨터로 동작시키기 위한 4가지 디자인 방향
- Scale out , not up 확장성은 업이 아니라 아웃이다. 성능을 높이는 데에는 한계가 있다. 다수의 서버를 이용하는 out 확장이 효율적이다.
- 데이터 근처에서 처리를 수행한다. 클러스터는 대역폭이 제한되기 때문에 데이터를 많이 이동하는 것은 비효율 적이다.
- 데이터를 순차적으로 처리하고 랜덤접근을 피해서(오버헤드 발생할 수 있다) 비용문제와 디스크처리량을 적절히 한다.
- 원활한 확장성을 가지게 한다.