클라우드 컴퓨팅 개요
인터넷을 통해 이루어지는 새로운 종류의 네트워크 기반 컴퓨터,유틸리티 컴퓨팅이다.
인터넷을 통해 통신과 전송을 하고, 하드웨어와 소프트웨어, 네트워크 서비스를 클라이언트에게 제공
자원과 서비스를 배달하는 새로운 종류의 패러다임이다.
하드웨어 및 연관된 인프라를 가상으로 다운로드하고 가상데이터 센터를 구축
인터넷 또는 사설 네트워크를 통해 클라우드 서비스를 개발하고 제공 할 수 있게 해주는 IT 구성 요소 및 배포 프로세스다.
인터넷을 통해 서비스로 제공되는 응용 프로그램과 인터넷 인프라의 하드웨어 및 시스템 소프트웨어
(=플랫폼이라고도 함)
플랫폼은 인프라의 복잡성과 세부사항을 간단한 GUI를 사용하면서 유저와 앱을 숨겨줌
언제 어디서든지 이용할 수 있는 수요 서비스 제공
사용료 지불은 필요에 따라 쓴 만큼만 지불하면 된다.
공공기업이나 일반기업 비즈니스 시장에서 사용할 수 있다.
클라우드 서비스 모델
SaaS (Software-As-A-Service) (어플리케이션)
필요할 때 원하는 비용만 내면 어디서든 곧바로 쓸 수 있는 장점이 있다.
PC나 기업 서버에 소프트웨어를 설치할 필요 없음
소프트웨어 설치를 위해 시간,비용을 들이지 않아도 된다.
중앙에서 해당 소프트웨어를 관리해서 사용자가 일일이 업그레이드나 패치 작업 할 필요X
ex. 넷피스, 폴라리스 오피스
PaaS (Platform-As-A-Service) (어플리케이션, 미들웨어)
소프트웨어 서비스를 개발할 때 필요한 플랫폼을 제공하는 서비스
사용자는 PaaS에서 필요한 서비스(플랫폼)를 선택해 애플리케이션을 개발하면 됨
PaaS 운영 업체는 개발자가 소프트웨어를 개발할 때 필요한 API를 제공하여 더 편하게 앱을 개발할 수 있도록 도와준다.
(일종의 레고 블록 같은 서비스)
IaaS (Infrastructure-As-A-Service) (어플리케이션, 미들웨어, 게스트OS)
인터넷을 통해 서버와 스토리지 등 데이터센터 자원을 빌려쓸 수 있는 서비스
이용자는 직접 데이터센터를 구축할 필요 없고, 클라우드 환경에서 필요한 인프라를 꺼내씀
이렇게 빌린 인프라에서 사용자는 운영체제,어플리케이션을 설치하고 원하는 서비스를 운영할 수 있음
(사용자에게 기본 컴퓨팅 자원 제공)
클라우드 보안 동맹의 관점
IaaS가 모든 클라우드 서비스의 기반이다. 따라서 IaaS에 상속되며, 정보보안 이슈와 위험에 대해서도 같은 적용을 따른다.
클라우드 4가지 전개 모델
Private Cloud
기업들이 자체적으로 데이터센터 안에 클라우드 환경을 구축해 사용하는 방식
회사 내 IT 자원을 이용하려는 사용자가 자유롭게 어플리케이션을 개발, 운용할 수 있는 환경을 제공하는 것이 목표
장점 : 기존 IT 인프라 재활용 가능, IT서비스를 사용자에 맞게 직접 구성해 제공 가능, 내부에서 통제 가능, 보안성 자체 확보가능, 효율성 향상
단점 : 구축비용이 높음
Community Cloud
몇 개의 조직들에 의해 운영되는 클라우드
미션, 보안 요구, 정책 등에 대해 공유
Public Cloud
한 기업이 파는 클라우드 서비스에 여러 조직이 가입해서 이용하는 모델
장점 : 비용 절감, 서비스 융통성 강화, 구현 속도 빠름
단점 : 제공자가 구축한 보안 서비스 하에 운용해야 함(보안 취약 가능성)
Hybrid Cloud
공용 클라우드와 사설 클라우드를 동시에 제공, 양쪽의 장점만 선택해서 사용가능한 클라우드 서비스
장점 : 필요에 의해 데이터와 컴퓨팅 자원의 위치 조절 가능, 중요도와 핵심 업무 여부에 따라 선택이 가능함
고성능(HP)와 고처리(HT)
HTC (High Throughput Computer)
사용자들의 요청을 여러 시스템에 분산시키는 것
Distributed control (분산된 컨트롤) - 분산된 시스템, P2P 네트워크
HPC (High Performance Computer)
고성능 컴퓨터, 동등성, MPP의 클러스터들
컴퓨팅 패러다임의 특성
Centralized computing
자원을 하나의 통합된 OS에 놓고 타이트하게 사용
Parallel computing
여러 프로세서들이 집중화된 공유 메모리에 대해 균등하게 접근하는 것
(UMA bottle neck, 네트워크가 죽으면 큰일남)
message passing을 통해 통신(버스 크로스바, 여러층의 통신 네트워크)
message passing은 보통 버스로 구현되고, 버스는 두 프로세서가 통신하면 다른 통신은 불가능한 단점이 있음(blocking). 이를 보완한 것이 크로스바 (구축비용 비쌈)
크로스바는 multi stage interconnection 네트워크를 몇 개의 단으로 나누고 그 단을 끊고 연결하는 방식으로 프로세서의 연결 지원
Distributed computing
여러 개의 자동화된 컴퓨팅 (조정자가 없음)
message passing으로 통신
Cloud computing
물리적 혹은 가상화 된 자원
성능 척도
프로세스 개수가 많고, 병렬 처리하면 노드가 얼마나 속도가 빨라지는 지
CPU 속도 및 네트워크 대역폭
시스템 처리량
시스템 오버헤드 (응답시간, 대기시간, 부팅시간, 컴파일 시간)
QoS (시스템 가용성, 신뢰성, 보안성)
사이즈 (기계 크기를 늘리면 더 높은 성능과 기능 제공 가능)
소프트웨어(업그레이드), 응용 프로그램(크기), 기술(시간 공간, 이질성), 확장성
컴퓨터 클러스터란?
Stand-alone : 컴퓨터안에 컴퓨터가 될 수 있는 모든 요소가 다 들어있다는 뜻
Scalable performance : 클러스터 수를 늘릴 때마다 성능이 비례하여 증가
fault tolerance(고장 방지 능력), 네트워크를 2중, 3중화
모듈 단위로 증설이 가능해야 함
주문해서 쉽게 누구나 구할 수 있는 컴포넌트를 사용해야 함(표준화)
Cluster vs MPP (parallelism(병렬처리), multicore, multithreading)
MPP - 대규모 병렬처리 (분산 메모리로도 불린다.)
프로그램을 여러 부분으로 나누어 여러 프로세서가 각 부분을 동시에 수행시키는 것
각 프로세서는 서로 다른 운영체제와 메모리를 가지고 일을 수행하며, 프로세서 간에는 메시지 패싱으로 통신한다.
따라서 하나의 프로그램을 수행하는데 수천개의 프로세서를 이용할 수 있다.
Cluster - 가성비 좋은 컴퓨터 여러대를 네트워크로 연결하여 사용 표준화된 컴퓨터를 써야하고, 같은 OS를 써야한다. 적은 수의 컨트롤러 컴퓨터가 있으며 일을 나누어 병렬 처리를 시킨다.
클러스터 설계란 저가의 가성비 컴퓨터를 수백대 사고 사용자 입장에서는 마치 엄청난 성능의 한개 병렬 컴퓨터처럼 보이도록 설계하는 것을 말한다.
클러스터의 구성
상호연결망
Crossbar Swithces
버스의 단점을 보완, 버스는 두개가 연결되면 블로킹되는 단점이 존재
fat trees
상위 노드에 높은 대역폭을 더욱 높게 할당해 주는 것.
위로 갈수록 두꺼워져 bottle neck이 될 수 있으므로 위에 더 높은 대역폭을 할당해 주는것
torus
2차원 큐브를 매쉬 형태로 모든 선을 같은 길이로 하면 도넛 형태가 된다.
GPU
GPU 클러스터는 기존의 CPU클러스터의 단점이었던 노드 수 증가로 인한 병목 현상에 대해 노드 수를 줄여서 구축 비용을 줄일 수 있는 것
하지만 기존의 클러스터 소스를 사용할 수 없기에 새로 만들어야 하는 단점이 있다.
고가용성(HA)
클러스터는 노드들이 많기 때문에 고가용성일 지향함
주요와 백업을 동일 에러에서 터지지 않도록 구성하는 것
가용성 3레벨
Hot standby : 전원이 들어간 상태로 모니터링하면서 죽으면 해결시키도록 대기
Active-takeover : 한 노드에서 오류 발생하면 다른 노드가 받아서 처리(사용자 모르게)
Failover clusters : 실패 진단, 알림, 해결
가상화 계층
ISA 레벨
동적 이진의 번역
어떠한 하드웨어에서도 많은 양의 2진 코드를 실행할 수 있음
하드웨어 추상화 레벨
하드웨어 바로 위에 하는 것
다수의 사용자가 동시에 하드웨어의 유틸을 업그레이드 하기 위해서
OS 레벨
전통적인 OS와 사용자 어플리케이션 사이
운영체제의 커널이 여러개의 독립된 컨테이너들을 갖출 수 있도록 하는 가상화
Library Support 레벨
유저-레벨 라이브러리에서 수출된 api 형태
유저 어플리케이션 레벨
자바 가상머신과 같은 지원을 해주는 가상화
하드웨어 가상화
하드웨어 지원 CPU 가상화
메모리 가상화 (가상메모리 이용 - page + offset)
I/O 가상화
소프트웨어 emulation : 하나의 하드웨어에서 여러 개의 가상머신이 동시에 구동 가능
반 가상화 모델 : 입출력을 관리하기 위해 프론트엔드가 받아들이고 백엔드에서 처리하여 실제 입출력 장치와 연결시켜주는 관리
VM 아키텍처 유형
전가상화(hypervisor)
하드웨어를 완전히 가상화하는 아키텍처
게스트 OS에 아무런 수정없이 여러 종류의 운영체제를 문제 없이 사용할 수 있는 구성
하이퍼바이저가 모든 운영체제에서의 명령을 변환시켜 하드웨어에게 전달해줌 (퍼포먼스가 낮음)
반가상화(para)
하드웨어를 완전히 가상화하지 않음
게스트 OS를 직접 수정할 필요가 있다. 하이퍼바이저는 단순히 분배 및 관리 역할만 해줘서 하드웨어에게 전달해줌 (퍼포먼스가 높음)
호스트기반 가상화
하이퍼바이저를 전혀 사용하지 않음
모든 게스트가 동일한 OS를 실행해야 함. 각 가상 서버는 독립적으로 운영은 되지만, OS는 같아야하는 환경 필요
클라우드 플랫폼 아키텍처
노드, 상호연결망
서버의 결함 허용 - 여분의 서버에 데이터 복제해둠
링크와 스위치에서 결함 허용 - 두 개의 서버 노드 사이에 링크를 여러개 둔다. 이를 통해 소프트웨어 계층에서 네트워크 결함을 탐지하고, 운영에 영향 없이 처리해야함
설계 이슈
여러 명의 유저가 관리 가능하도록
데이터베이스 크기가 확장될 때 용이성
가상 인프라에서의 신뢰성
사용자와 제공자 모두 저비용
보안 강화 및 데이터 보존
클라우드 보안
일반적 : 경비업체를 통한 데이터센터 시설 보안, 네트워크(firewalls)와 플랫폼(ssl) 보안특별함 : 취약점을 이용한 VMs와 VMMs 공격이 존재 (민감한 데이터나 비번 훔치는 수동공격, 커널 데이터 구조를 조작하는 능동공격)방어 전략 : NIDS, HIDS, OS환경 강화, 샌드박스형식으로 고립한 후 소프트웨어 실행
가상 머신을 사용하면, 방어에 좋고 빠르게 고치는데 도움이 된다.
SOA(서비스 지향 아키텍처)
사용자들에게 서비스를 제공하기 위해 설계하는 방법
관계를 느슨하게 (loose coupling)
사용자 중심으로 인터페이스도 표준으로 (published interface)
SOA 특징
논리적 관점
메시지 중심적
내가 원하는 서비스를 어떻게 기술할 것인지
ex. XML, HTTP 등
REST (SOA의 대표적)
클라이언트와 서버의 네트워크 통신 표준화
장점 : 간단하고, 대규모 분산 시스템에 적합
REST 원칙
URI로 리소스 ID 부여
집중되고 간단한 인터페이스
표준화되고 다양한 리소스에 접근 가능(html, xml 등)
상태 보존을 하지 않음
REST 웹 서비스
간단하고 가벼움
HTTP와 함께 쓰기에 좋음
중앙 저장소 접근 없이 URI로 접근 가능
Web Service
SOAP
HTTP, HTTPS, SMTP를 통해 XML 기반의 메시지를 컴퓨터 네트워크 상에서 교환
WSDL
웹 서비스 기술 언어
UDDI
웹 서비스 관련 정보 공개와 탐색을 위한 표준
병렬
job을 쪼개서 여러 노드에게 준다. (control 노드가 있어야 함)
분산
자동화 된 컴퓨터들이 네트워크로 연결
병렬 프로그래밍 패러다임
Partitioning (쪼개기)
계산 partitioning
주어진 일을 더 작은 task들로 쪼개고, 동시에 수행
데이터 partitioning
입력값 또는 데이터들을 더 작은 부분으로 쪼개서 저장
맵핑
각 노드에게 리소스 태스크를 할당하는 작업
동기화
순서 또는 데이터 의존성 조건 보호
통신
스케줄링
병렬프로그래밍 motivation
프로그래머의 생산성 향상
프로그램 실행시간 감소
자원을 효율적으로 사용
처리량 향상
더 높은 추상화 계층 지원
MapReduce
대용량의 데이터 처리를 위한 분산 프로그래밍 모델
이 프레임워크를 사용하면, 대규모 분산 컴퓨팅 환경에서 대량의 데이터를 병렬로 분석 가능
프로그래머가 map과 reduce 두 개의 메소드를 직접 작성
맵(map) : 흩어져 있는 데이터를 연관성 있는 데이터로 분류
모든 값의 key값과 value 값을 pair로 만듬
(업데이트를 많은 사람이 동시에 하면, 오버헤드 발생. 바뀐 부분만 교환하자)
리듀스(Reduce) : 사용자가 원하는 결과를 가져오는 것(산출)
이걸 지원하는 것이 Twister
Hadoop
하둡 네트워크에 연결된 기기에 데이터를 저장하는 분산형 파일 시스템
블록 구조 파일 시스템 (블록이 노드에 분산 저장)
특징
데이터를 저장하면, 다수의 노드에 복제 데이터도 함께 저장해서 데이터 유실 방지
파일을 저장하거나, 저장된 파일을 조회하려면 스트리밍 방식으로 데이터 접근
한번 저장한 데이터는 수정할 수 없고, 읽기만 가능하므로 데이터 무결성 유지
데이터 수정은 불가능하지만 파일 이동, 삭제, 복사할 수 있는 인터페이스 제공
GRID 컴퓨팅
WAN으로 연결된 여러 컴퓨터들을 하나로 묶어 가상의 대용량 고성능 컴퓨터를 구성하여 대용량 처리나 고도의 연산 작업을 수행하는 것
모든 컴퓨터를 하나의 초고속 네트워크로 연결해 계산능력 극대화
여러 컴퓨터를 가상으로 연결해 공동으로 연산작업을 하는 분산 컴퓨팅
여러 대의 컴퓨터로 분산시켜 수행하는 점에서 클러스터 컴퓨팅과 유사한데 차이점은?
다양한 플랫폼을 서로 연결한다는 점에서 차이가 존재 (클러스터는 같은 os)
CPS(Cyber Physical System)
가상 물리 시스템 - 서로 다른 가상과 물리 체계에서 모든 정도와 수준에서 치밀하게 통합하는 시스템
우리가 살아가는 물리 세계와 가상 세계의 융합을 추구하는 새로운 패러다임
IOT의 진화
블록체인
블록체인은 블록에 트랜잭션 데이터가 들어감
합의적 결정
비트코인은 합의에 이르기 위해 아무에게 권한을 주지 않음
작업 증명(계산을 빨리 하는 사용자) 해시 값을 이용하기 때문에, 블록이 쌓여있을 수록 트랜잭션 값을 바꿀 수 없다. (업데이트를 할 수 없다는 뜻)
비트코인은, 합의에 이른 상황에 블록이 더 긴 것을 붙인다.
완성된 트랜잭션을 만들기 위해서는 블록을 빨리 붙여야 함
마이너들이 돈을 받아서 블록을 만듬 > 가장 긴 블록이 선택받고 그렇지 못한 블록은 고아가 됨
블록이 담고 있는 데이터 : 트랜잭션 데이터
마이너가 비트코인을 관리 - 관리하는 대신 돈을 받음
검증 방식 : 공개 키 기반 검증 방식
pending 트랜잭션 : 아직 처리 중인 거래 (블록 추가 되지 않은 상태)
nance : 문제를 푼 답이 들어있는 곳
이더리움은 코인을 주는 방식이 기존에 코인을 많이 가지고 있는 사람한테 순서대로 준다.
인피니밴드 - 고성능 컴퓨팅과 기업용 데이터 센터에서 사용되는 스위칭 방식의 통신 연결 방식
높은 스루풋과 낮은 레이턴시로 높은 안정성과 확장성을 가짐
'정보' 카테고리의 다른 글
[Git] 사용 요약 (0) | 2018.07.31 |
---|---|
개발자 기술면접 준비하기 (2) | 2018.07.06 |
블록체인이란 무엇인가 (0) | 2018.06.08 |
사물인터넷(IOT)이란 무엇인가 (0) | 2018.06.08 |
오버로딩(Overloading)과 오버라이딩(Overriding) (0) | 2018.04.20 |