( 참고 : “당신이 지금 알아야 할 AWS” )

[ Data Engineering ]

1장. 쉽게 시작하는 클라우드

Contents

  1. 컴퓨팅 환경의 현재와 미래
    1. 컴퓨팅 환경의 현재
    2. 미래 에지 컴퓨팅
  2. 클라우드 컴퓨팅
    1. 클라우트 컴퓨터
    2. 클라우트 컴퓨팅 정의
    3. 클라우드 시장
  3. 클라우드 컴퓨팅의 장점
    1. 유연한 IT 인프라 관리
    2. 신속한 인프라 도입
    3. 간편한 글로벌 서비스
    4. 예상치 못한 트래픽 폭주 대응
    5. 빅데이터, AI 서비스를 확장
  4. 클라우드 컴퓨팅 유형
    1. 웹 호스팅
    2. 온프레미스
    3. 클라우드 서비스 운용 형태
  5. 클라우드 컴퓨팅 서비스 유형
    1. IaaS
    2. PaaS
    3. SaaS
    4. FaaS와 CaaS
  6. 클라우드 네트워크 기본
    1. 네트워크 장비
    2. CIDR
    3. 포트와 프로토콜
  7. 클라우드 핵심 기술
    1. 가상화 기술
    2. 분산 처리 기술
    3. Severless
    4. 로드 밸런싱
    5. Scale Up & Scale Out
    6. Auto-Scaling
    7. 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으로, 두 팀간의 소통이 원활이 이루어질 수 있또록 하는 것!

.