( 참고 : “당신이 지금 알아야 할 AWS” )
[ Data Engineering ]
1장. 쉽게 시작하는 클라우드
Contents
- 컴퓨팅 환경의 현재와 미래
- 컴퓨팅 환경의 현재
- 미래 에지 컴퓨팅
- 클라우드 컴퓨팅
- 클라우트 컴퓨터
- 클라우트 컴퓨팅 정의
- 클라우드 시장
- 클라우드 컴퓨팅의 장점
- 유연한 IT 인프라 관리
- 신속한 인프라 도입
- 간편한 글로벌 서비스
- 예상치 못한 트래픽 폭주 대응
- 빅데이터, AI 서비스를 확장
- 클라우드 컴퓨팅 유형
- 웹 호스팅
- 온프레미스
- 클라우드 서비스 운용 형태
- 클라우드 컴퓨팅 서비스 유형
- IaaS
- PaaS
- SaaS
- FaaS와 CaaS
- 클라우드 네트워크 기본
- 네트워크 장비
- CIDR
- 포트와 프로토콜
- 클라우드 핵심 기술
- 가상화 기술
- 분산 처리 기술
- Severless
- 로드 밸런싱
- Scale Up & Scale Out
- Auto-Scaling
- DevOps
1.1. 컴퓨팅 환경의 현재와 미래
1.1.1 컴퓨팅 환경의 현재
(1) 메인 프레임 (1970-80s)
-
중앙집중식 컴퓨터 처리 방식
-
초대형 컴퓨터를 중앙에 배치
( 모두 이 중앙 메인 프레임이 집중 처리하는 구조 )
(2) 클라이언트 서버 (1990s)
-
PC 기반 운영체제 클라이언트/서버 환경으로 전환
-
메인프리엠의 기능 일부를 클라이언트 단말기에서 정보 처리
( 분산 처리 환경으로의 변화 )
(3) 웹 기반 네트워크 컴퓨팅 (2000s)
- 웹 브라우저를 통한 애플리케이션 처리
- 서버 중심 중앙 컴퓨팅 환경으로 발전
- 아마존,구글,페이스북이 이때 성장!
(4) 클라우드 컴퓨팅 (2010s)
- 서버를 소유 X, 필요할 때마다 사용하는 클라우드 컴퓨팅!
1.1.2 미래 에지 컴퓨팅
-
가전제품들이 네트워크로 연결된 사물 인터넷(IoT)시대
-
매일 발생하는 데이터를 “제때 처리”해야!
-
클라우드 컴퓨팅은 각종 기기에서 수집한 데이터를, 멀리 떨어진 데이터 센터에서 처리한 뒤 다시 기기로 송신
( 오류 가능성 O )
-
이를 보완하기 위한 “에지 컴퓨팅 (Edge Computing)”
-
IoT 기기나 네트워크 가장자리에서 데이터를 분산처리하는 “분산 클라우드 컴퓨팅” 기술
- 멀리있는 데이터 센터까지 보내지 X
- IoT 기기에 탑재된 인공지능 칩 or 가까운 미니 데이터 센터 O
1.2 클라우드 컴퓨팅
-
개인 PC가 아닌 인터넷 공간(클라우드)에서 처리
ex) 네이버 N드라이브, MS 원드라이브, 구글 드라이브, 드롭박스 등
1.2.1 클라우드 컴퓨터
-
인터넷이 가능한 곳이면, 어디든 파일을 불러올 수 O
BUT, 클라우드 개념이 단지 저장소만을 의미하는 것은 아님!
1.2.2 클라우드 컴퓨팅 정의
- 인터넷 기반 컴퓨팅의 일종
- 자신의 컴퓨타가 아닌, “인터넷에 연결된 다른 컴퓨터”로 처리하는 기술
- 공유 컴퓨터 처리 자원과 데이터를, 요청시 제공해줌!
- 일관성 및 규모의 경제 달성을 위해 자원의 공유에 의존한다
- 클라우드의 핵심 :
- 필요한 만큼, 원할때 마다
- 인터넷을 IT 자원으로
- 사용할 만큼 지불하는
- 대용량 서비스
개인 & 기업
- 개인 사용자의 경우)
- 클라우드 서비스 = 데스크탑/모바일장치에서 설치하는 소프트웨어
- (드롭박스와 같이) 저장 장소로서 기능
- 기업의 경우)
- 사용자 PC에 설치하거나, 기업 데이터센터에서 실행하는 소프트웨어의 대체재
- (우리가 11번가 웹 들어가는것이, “웹”을 이용하는 것이지, “클라우드”를 이용하는 것은 아님 )
- AWS 저장 스토리지 서비스인 S3
1.2.3 클라우드 시장
- 매년 성장세
- (2018) 시장 점유율 34% : AWS
1.3. 클라우드 컴퓨팅의 장점
CLOUD (구름) = “보이지 않는 컴퓨팅 자원”
( 사용자에게 보이지 않지만, 중앙의 서버 컴퓨팅 자원을 활용해서 서비스를 받을 수 있게하는 플랫폼 )
장점은?
-
1) 유연한 IT 인프라 관리
-
어느 정도 인프라 필요할지 미리 예상할 필요 줄어듬
( 실시간응로 자유롭게 조정 가능 )
-
서비스 규모 확대 시, 그냥 그에 맞게 클라우드 인프라를 추가로 사용하면 됨
-
-
2) 신속한 인프라 도입
-
몇 분 내로 인프라 도입 & 서비스 구축 가능
( 시간 절감 & 서비스 제공 시기 앞당김 )
-
-
3) 간편 글로벌 서비스
- 전 세계 주요 대륙에 DT센터 보유
- 글로벌 서비스가 수월해짐
-
4) 예상치 못한 트래픽 폭주 대응
- 이에 맞춰 재빨리 인프라 늘릴 수 O
- Auto-scaling
-
5) 빅데이터, AI 서비스 확장
-
클라우드는 ML에 필요한 데이터를 쉽게 모을 수 있어서, AI기술 고도화+보편화
-
중앙 클라우드에 AI 구축 &
사용자가 이를 사용하게 되면, 중앙 서버의 컴퓨팅 자원으로 간편하게 AI서비스를 받을 수 있음
-
1.4 클라우드 컴퓨팅 유형
1.4.1 웹 호스팅 (Web Hosting)
- 클라우드 서비스 이전에는, 웹 호스팅 (Web Hosting) 서비스가 주로 사용됨
- 하나의 서버에 여러 사용자를 수용 ok
- 사용자 간 상호접근은 격리
1.4.2. 온프레미스 (On-premise)
-
지금까지 채택해온 전통적인 IT 서비스 방식
-
기업 “자체적으로” 데이터 센터 보유
( 구축 + 운영까지 모두 수행! )
-
초기 시스템 투자 비용 부담이 큼 & 시스템 사용량 무관 일정 금액을 부담해야
-
운영 및 유지 보수 비용도 듬
1.4.3 클라우드 서비스 운용 형태
- 1) 공용 클라우드
- 모든 하드웨어, 소프트웨어 및 기타 지원 인프라를 “클라우드 서비스 공급자가 소유 & 운영”
- 사용자는 웹브라우즈를 사용해 서베스에 엑서스 & 계정 관리만 하면 됨
- ex) AWS, MS Azure
- 2) 사설 클라우드
- 단일 비즈니스/조직에서 “독점적”으로 사용되는 클라우드 컴퓨팅 리소스
- 회사의 실제 온사이트 데이터 센터 내에 배치할 수 있음
- 3) 하이브리드 클라우드
- 공용 + 사설
1.5 클라우드 컴퓨터 서비스 유형
“어떤 자원을 빌려주느냐”에 따라 아래 3가지로 구분!
SaaS (Software as a Service)
- 소프트웨어를 웹에서 쓸 수 있게끔 함
- ex) Gmail, 드롭박스, Naver 클라우드
IaaS (Infrastructure as a Service)
- 서버, 스토리지, 네트워크 장비 등의 IT 인프라 장비를 빌려줌
PaaS (Platform as a Service)
- 플랫폼을 빌려줌
SaaS(만들어진 레고 모형) - IaaS(레고 공장) - PaaS (레고 블록)
.
1.5.1 IaaS
-
( 레고 공장 )
-
인프라 : 네트워킹, 컴퓨터 (가상 또는 전용 하드웨어) 및 데이터 스토리지 공간
-
Netflix는 자체 DT 센터 없고, AWS의 IaaS 서비스를 이용
( 전 세계에 보다 빠르게 제공하기 위해 필요한 컴퓨팅 자원을 빌려서 운영! )
1.5.2 Paas
-
( 레고 블록 )
-
소프트웨어 서비스를 개발할 때 필요한 플랫폼을 제공!
-
PaaS 서비스 업체는 레고 블록을 개발자에게 제공
& 개발자는 각 레고 블록으로 자신만의 레고 모형을 만듬!
1.5.3. SaaS
- (만들어진 레고 모형)
- “모든 서비스”가 클라우드에서 이루어짐
- 소프트웨어를 구입해서 PC에 설치하지 않아도, 웹에서 빌ㄹ려 쓸 수 O
- 서비스가 어떻게 유지,관리되는지, 인프라가 어떻게 관리되는지 고민할 필요 X
- JUST “어떻게 사용할지”에 대해서만 생각하면 됨!
.
1.5.4 FaaS & CaaS
최근 등장한 클라우드 플랫폼 유형
FaaS (Function as a Service)
- 클라우드 공갑자의 플랫폼에서 완벽하게 실행하는 severless 코드로 배포
- “단지 함수를 실행하는 데 필요한 컴퓨팅 시간만큼”의 비용만 지불하면 됨
- ex) AWS Lambda, 구글 클라우드 함수
CaaS (Container as a Service)
- 클라우드 공급자에게 가성 컨테이너로 마이크로서비스를 빌드하고 배포
FaaS & CaaS 모두 클라우드 컴퓨팅 모델을 사용해 마이크로서비스 아케턱처를 구분할 수 있다!
1.6 클라우드 네트워크 기본
클라우드 서비스는 수 많은 서버 & 클라이언트로 구성
- 서버 : 인터넷 서비스를 제공하는 프로그램이나 컴퓨터
- 클라이언트 : 서버가 제공하는 서비스를 이용하는 사용자/기기
클라우드 환경은 서버와 클라이언트 외에도, 여러 네트워크 기기가 서로 연결&통신할 수 있도록 환경이 구축되어야!
1.6.1 네트워크 장비
(1) 라우터
- 서로 다른 지역의 컴퓨터를 연결
(2) 스위치
- 여러 컴퓨터를 연결하는 “네트워크 분배기”
- like 멀티탭
(3) 방화벽
- 불법적인 트래픽 유입 막고, 허가되고 인증된 트래픽만을 허용
(4) IP 주소와 도메인
- IP 주소 : 컴퓨터의 주민번호 (xxx.xxx.xxx.xxx)
- 도메인 : 사용자의 입장에서 쉽게 이용할 수 있도록, 숫자로 표현된 주소 대신에 문자열로 나열된 주소
(5) IPv6
- (지금까지 가장 널리 사용되는 IP 주소 체계는 IPv4) : 2^32 = 42억개 기기만 네트워크에 접속할 수 있음
- IPv4 주소 공간인 32비트 체계 $\rightarrow$ IPv6는 128비트 체계 : 사실상 무한대로 주소 부여 OK
1.6.2 CIDR (사이더)
도메인 간 라우팅에 사용되는 인터넷 주소를, 원래 IP 주소 클래스 체계를 쓰는 것보다 더욱 능동적으로 사용할 수 있도록 할당하여 지정하는 방식
1.6.3 포트와 프로토콜
(1) 포트
- 포트 번호 : 통신에 사용하는 프로그램을 식별하는 번호
- 종류
- 0~1023 : 잘 알려진 포트
- 1024 ~49151 : 등록된 포트
- 49152~65535 : 동적 포트
(2) 프로토콜
- 두 기기가 서로 통신하기 위한 “사전의 약속”
(3) TCP/IP
- 컴퓨터 통신에 이용되는 프로토콜은 몇 가지가 있음. 대표적인 프로토콜인 TCP/IP!
- 다른 것들 보다 신뢰성이 높은 방식
- 정보를 전달할 때, 중간 유실이나 흐름 장애 시 재전송을 하는 방식
- 원리 : 한 정보를 여러 패킷으로 나누어 보냄!
.
(4) HTTP
-
HyperText Transfer Protocol
-
인터넷 상에서 데이터를 주고 받기 위한 클라이언트 서버 모델을 따르는 가장 일반적인 프로토콜
1.7 클라우드 핵심 기술
가상 서버
- 하나의 물리적인 서버와 마찬가지로, 개별 운영체제나 애플리케이션 실행 가능
- 물리적 서버를 논리적으로 나누어, CPU, 메모리 등 자원을 할당한 것!
- ex) AWS의 EC2
.
1.7.1 가상화 기술
가상화 : “물리적” 하드웨어 장치를 “논리적”인 객체로 추상화
-
하나의 장치를 여러 개로 나눠 동작시킴 OR
여러 개의 장치를 묶어 마치 하나의 장치처럼
종류
- 호스트 가상화
- 하이퍼바이저 가상화
- 컨테이너 가상화
1.7.2 분산 처리 기술
-
(구) 아주 빠른 CPU와 대용량 메모리가 구비된 서버
-
(현) 분산 처리 기술 & 클라우드 서비스로 병ㄹ려 처리
-
클러스터링 (Clustering) : 여러 개의 서버를 결합하여 하나의 컴퓨터처럼 보이게 만드는 기술
( 분산처리 기술 ex : Hadoop & Spark )
Hadoop
- 1대의 서버 & 여러 대 슬레이브 서버
- 마스터 서버 : 데이터 처리 전체를 수행
- 슬레이브 서버 : 계산을 처리
- 맵 리듀스 (Map Reduce)
- 2개의 함수, Map & Reduce
- 데이터를 여러 노드에 병렬로 분산해서 처리
1.7.3 Severless (서버리스)
-
클라우드 제공자가 동적으로 가상 머신 자원의 할당을 관리해서,
“미리 설정된 서버리스 코드”를 실행시키는 기술
-
이벤트 기반 클라우드 컴퓨팅 기술
-
ex) AWS Lambda, MS Azure function, Google Cloud function
1.7.4 로드 밸런싱 (Load Balancing)
- 컴퓨터 자원들의 작업을 나누는 것
- 여러 대의 서버가 분산 처리 & 속더 저하 방지!
1.7.5 Scale Up & Scale Out
Scale Up
- “수직” 스케일
- 서버 자체의 성능을 업그레이드 ( 고성능 CPU나 메모리 추가 )
Scale Out
- “수평” 스케일
- 물리적으로 서버를 늘려!
- 서버 1대가 작동하지 않아도, 다른 서버로 서비스 제공이 가능
- 모든 서버가 동일한 데이터를 가져야 하기 때문에, 데이터 변화가 적은 서비스에 적합
1.7.6 오토 스케일링 (Auto Scaling)
- 서비스가 집중되었을 때..?
- 자동으로 가상 서버 대수를 증감시킴! ( 불필요한 비용 절약 )
1.7.7 DevOps
- 개발팀 : 웹 사이트 개발, 앱 개발, 알고리즘 개발
- 운영팀 : 개발된 아이템을 고객에게 전달
- 고객의 니즈 파악
- 상품 개발 완료 시, 안정적으로 고객에게 전달
- ex) 고객 수요 폭발 시, 그에 발 맞춰 서버수 증가
- 즉, 서비스가 제대로 돌아갈 수 있는 환경을 개발팀에 제공! (주로 서버 관리)
- 지금까지 서비스를 개발하는 개발팀 & 운영팀의 장벽으로, 개발과 운영의 협력이 매우 중요!
- Dev Ops는 Development + Operation으로, 두 팀간의 소통이 원활이 이루어질 수 있또록 하는 것!
.