Cloud Fundamentals
chapter 3
클라우드를 실현하는 기술들
- 컨테이너
- 컨테이너 또한 가상화 기술 중 하나
- 하나의 OS 환경에서, 애플리케이션을 실행하기 위한 영역을 여러 개로 나누어 사용
- 시작과 정지가 빠르고 다른 클라우드 서비스로 옮기기가 쉽다
- 클라우드 간 상호 이식성에 뛰어나다
- 분산처리
- 대량의 데이터를 여러 서버에 분산하여 동시에 병렬로 빠르고 호율적으로 처리
- 빅데이터 분석과 같이 다양한 데이터를 처리할 때에는 클라우드가 적합
- 데이터베이스
- 대량 데이터의 집계, 상품 거래, 빅데이터 분석 등 사용 목적과 데이터 특성별로 RDB와 NoSQL로 대표되는 다양한 데이터베이스 기술들이 클라우드 서비스로 제공
- 다양한 기술
- 이 외에도 스토리지 기술, 오픈소스 클라우드 기반 소프트웨어, 운영관리, 보안 등 다양한 기술의 조합으로 구성
-
IaaS 기반을 구성하는 주요 기술
- 서버 가상화 기술
- 네트워크 가상화 기술
- 스토리지 기술
- 블록 스토리지
- 파일 스토리지
- 오브젝트 스토리지
- 가상화 기반 기술
-
PaaS 기반을 구성하는 주요 기술
- 데이터베이스 기술
- 분산 처리 기술
- Apache Hadoop
- Apache Spark
서버 가상화 기술
- 서버 가상화 장점
- 물리적 서버 리소스를 여러 개의 서버 환경을 할당, 각각 환경에 OS와 애플리케이션을 실행할 수 있다
- 많은 양의 물리 서버를 서버 가상화를 통해 집약시킬 수 있어 서버 리소스를 최대한 활용 가능
- 다양한 버전의 OS 및 미들웨어 환경이 필요한 개발,테스트 환경을 이용해야 할 경우 적합
- 3종류의 서버 가상화 기술
- 하이퍼바이저 형
- 하나의 물리 서버 하드웨어 위에 하이퍼바이저 라는 가상화 소프트웨어를 동작시키고 그위에 여러개의 게스트 OS를 가동시키는 형태
- 예) VM웨어의 VMware vSphere, MS의 Hyper-v
- 호스트 OS형
- 컨테이너 형
컨테이너 기술
-
컨테이너 기술 개요
-
하나의 OS 환경에서 애플리케이션을 실행하기 위한 영역을 여러 개로 나누어 사용
-
각각의 공간을 컨테이너
라고 부른다
-
각각의 컨테이너는 다른 컨테이너에 영향을 미치지 않고 애플리케이션을 실행시킬 수 있다
-
서버 가상화가 하드웨어를 통째로 가상화 한다면, 컨테이너는 애플리케이션 실행 환경을 가상화한다.
- 하이퍼바이저 형
- 하이퍼바이저 형은 OS 환경을 통째로 가상화 한다
- VMware vSphere
- Xen Server
- Hyper-V
- 컨테이너 형
- 컨테이너형은 하나의 OS 환경에서 애플리케이션의 실행 영역을 여러개로 나누어 사용
분산 처리 기술
- 분산처리 기술이란
- 대량의 데이터를 분산 처리 하는 정치
- 클라우드가 등장하기 전, 대용량 데이터를 처리하려면 고속 CPU와 대용량 메모리가 탑재된 서버가 필요
- 하지만 지금은 분산 처리 기술과 클라우드 서비스를 이용하여 데이터를 여러 개의 서버에 나누어 병렬 처리
- 여러 개의 서버를 결합하여 하나의 컴퓨터로 보이게 만든다. 이를
클러스터링
이라고 한다.
- 클러스터링으로 구성된 시스템은 대량으로 데이터를 처리하는 중에 몇 개의 서버에서 장애가 발생하더라도 다른 서버에서 자동으로 작업을 할당하고 작업을 할 수 있다
- 분산 처리를 구현하는 소프트웨어
Apache Hadoop
- 1대의 마스터 서버와 그 아래에 여러 대의 슬레이브 서버로 구성
- 마스터 서버가 데이터 처리 전체를 제어, 슬레이브 서버가 계산을 처리
- 처리 능력은 슬레이브 서버의 대수에 비례하여 증가
- Hadoop의 중요 기술
HDFS (Hadoop Distribute File System)
MapReduce
Apache Spark
- 메모리 안에서 대량 데이터를 병렬 분산 처리
- Apache Hadoop이 반복 처리를 할 때 디스크에 데이터를 읽고 쓰는 것과 비교 했을 때, Spark는 메모리 안에서만 읽고 쓰므로 속도가 매우 빠르다. (Hadoop은 처리할 수 있는 양이 많다고 할 수 있다.)
- Hadoop은 대용량 데이터의 일괄 처리에 적합, Spark는 기계 학습과 같은 데이터를 반복하는 고급 데이터 분석을 빠르게 수행하는데 적합
데이터베이스 기술
- 데이터베이스
- 각 클라우드 사업자들은 사용자의 이용 목적에 맞는 다양한 데이터베이스 서비스를 제공
- 주요 데이터베이스
- RDB (Relational Database) : 관계형 데이터베이스
- NoSQL
- 오늘날의 빅 데이터 분석 및 IoT 과제에 NoSQL의 이용도 증가
- RDB - 조회 / NoSQL - 저장
RDB
- RDB는 여러 개의 데이터를 행과 열이 있는 표 형식으로 표현하여 복잡한 데이터의 관계를 처리할 수 있도록 만든 데이터베이스
- RDB는 RDBMS 이라는 전용 소프트웨어로 관리
NoSQL
- NoSQL (Not only SQL) 은 'RDB'와 같은 관계형 데이터베이스가 아닌 데이터베이스를 가리키는 용어
- 제품별로 자료구조가 다양하지만 대량의 데이터를 분산시켜 고속으로 처리하는 분산 데이터베이스라는 공통적인 특징
- 분산시켜 처리한다는 특징이 있기에 클라우드 서비스 구현에 적합, 주로 빅데이터 분석 등에 사용
- 자료구조 차이에 따라
- 키 밸류 형
- 컬럼 지향형
- 문서 지향형
- 그래프형
스토리지 기술
- 파일 스토리지
- Windows OS
- SMB (Server Message Block)
- CIFS (Common Internet File System)
- UNIX / Linux
- NFS (Network File System)
- NAS (Network Attached Storage)
- 오브젝트 스토리지
- 블록 스토리지
오픈 소스 클라우드 기반
- IaaS를 위한 오픈 소스 클라우드 기반
- 클라우드를 구축하려 할 때의 유력한 대안은
Openstack
Openstack
- Private Cloud를 구축하기 위한 오픈 소스 프로젝트 개발 체제
- 다양한 기능의 컴퍼넌트들로 구성
- IaaS 중심의 기술 습득이나 서비스 구현을 고려할 때, 최적의 선택
- 단독으로 동작하는 수많은 소프트웨어들로 구성
- 대표적인 소프트웨어
- PaaS를 위한 오픈 소스 클라우드 기반
- IaaS와 독립적으로 동작
- AWS, VMware, OpenStack 같은 다양한 클라우드 서비스에서 실행 가능
- 오픈 소스 웹 애플리케이션의 실행 환경을 지원
- 대표적인 오픈 소스 PaaS 기반 소프트웨어
네트워크 가상화 기술
VLAN
- Virtual Lan
- 하나의 물리적인 네트워크를 여러 개의 논리적인 네트워크로 분할하는 기술
- 물리적인 배선을 변경하지 않고 네트워크를 나눌 수 있다
- VLAN을 이용하면 프라이빗한 환경 구축 가능
VPN
- Virtual Private Network
- 불특정 다수가 이용하는 네트워크에 가상으로 전용선과 같은 사설망을 연결하는 기술
- 데이터를 안전하게 보관하기 위한 보안 네트워크
NFV
- Network Functions Virtualization
- 네트워크 기능을 소프트웨어로 구현하여 가상 서버 위에 구축하는 기술
- 하드웨어 없이 네트워크 기능을 제공
SDN
-
Software Defined Networking
-
네트워크 구성과 기능 설정 등을 소프트웨어로 프로그래밍 할 수 있게 만들어 주는 방법
-
네트워크 장비의 통신 전송 기능과 제어 가능을 분리하여 소프트웨어로 정의
엣지 컴퓨팅
- 서버를 클라우드 쪽에 배치하는 대신, 서버를 스마트폰 등의 말단 디바이스에 분산 배치
- 실시간 데이터 처리와 높은 신뢰성이 요구되는 상황에서 서비스의 장애, 네트워크 지연 등을 피할 수 있다
GPU
-
CPU
- CPU는 연산을 담당하는 코어를 통해 분기예측/ 명령 스케줄링 기능을 가진 명령을 실행하는 회로를 가지고 있어 명령의 순차 실행이 특기
- OS와 같은 복잡한 프로그램 처리와 범용적인 프로그램 처리에 적합
-
GPU
- 코어(연산장치)를 수십 개에서 수천 개 지니고 있음
- 같은 작업을 여러 개의 코어에 할당하여 병렬 처리, 대량의 간단한 계산 처리가 특기
- 딥러닝, 물리 시뮬레이션 등에 적합
데이터센터
- 클라우드 서비스 기반이 되는 물리 서버와 네트워크 장비 등은 데이터 센터에 설치되어 있다
- 재해 시에도 계속 가동할 수 있는 시설을 갖추고 있다
- 감시 카메라
- 오퍼레이팅 룸
- 서버 랙
- 입실 및 퇴실 관리
- 면진 / 공조 장치 등
서버리스 아키텍처
-
'서버리스'란 클라우드 사업자가 서버의 운영과 관리를 모두 담당하므로 기업 사용자의 입장에서 서버의 존재를 의식하지 않아도 된다는 의미
-
기업 사용자나 개발자는 마이크로서비스로 구성된 클라우드 서비스의 각 컴포넌트를 조합하고 API로 연계하므로 독자적인 애플리케이션 개발/서비스 개발/시스템 구축 등이 가능
-
클라우드 서비스를 조합하여 애플리케이션을 개발하는 방법
-
개발자는 코드를 작성하고 클라우드 서비스를 결합하여 애플리케이션의 기능을 제공
-
AWS 의 Lambda (Serverless)
- 애플리케이션을 개발하여 서버에 업로드 하면 미들웨어, 웹서버를 구축하지 않아도 클라우드 사업자가 구축해놓은 서버에서 동작이 가능하게 됨
- 서버리스란 서버가 없는게 아닌 사용자가 서버의 존재를 인식하지 않은 상태에서 개발을 할 수 있도록 지원
- 서버리스 아키텍쳐를
FaaS (Function as a Service)
라고 부른다
- Cloud Native Architecture의 4가지 요소
- MSA
- CI/CD
- DevOps
- Container
API
Application Programming Interface
-
API
- 프로그램이 가진 기능이나 리소스를 외부의 다른 프로그램이 호출하여 이용하기 위한 명령이나 함수, 데이터 형식 등을 정한 규약
- 서버와 같은 인프라를 가상화했을 때의 큰 장점 중 하나는 API를 이용하여 프로그램으로 조작할 수 있다는 점
- 기업 사용자나 개발자는 API를 이용하여 외부 프로그램으로 클라우드 서비스를 사용하여 시스템의 구축 및 운영 관리를 자동화할 수 있으며, 이는 구축 기간의 단축과 비용 절감, 운용 부하 경감
-
Platform
- 플랫폼은 단순히 소프트웨어가 구축드는 하드웨어 또는 소프트웨어
- 소프트웨어에서 여러가지 기능을 제공해주는 실행 환경
- 소프트웨어 예시로 Windows, OS, Andriod, iOS 등
-
Library
-
Framework
- 개발 할 때 필수적인 요소에 해당하는 설계와 구현을 재사용하기 수월하도록 만들어둔 툴
- 컴파일러, 라이브러리, 리팩토링, API, 지원 프로그램 등을 포함
- ex) Visual Studio, Eclipse
- Library vs Framework
- Framework : 전체적인 흐름 제어, 프로그래머가 그 안에서 코드 작성
- Library : 코드를 가져다 씀, 사용자가 제어