클라우드 기술 (컨테이너,분산처리,데이터베이스)

📝 1yangsh·2021년 3월 14일
0

cloud

목록 보기
3/4

Cloud Fundamentals

chapter 3


클라우드를 실현하는 기술들

  • 컨테이너
    • 컨테이너 또한 가상화 기술 중 하나
    • 하나의 OS 환경에서, 애플리케이션을 실행하기 위한 영역을 여러 개로 나누어 사용
    • 시작과 정지가 빠르고 다른 클라우드 서비스로 옮기기가 쉽다
    • 클라우드 간 상호 이식성에 뛰어나다
  • 분산처리
    • 대량의 데이터를 여러 서버에 분산하여 동시에 병렬로 빠르고 호율적으로 처리
    • 빅데이터 분석과 같이 다양한 데이터를 처리할 때에는 클라우드가 적합
  • 데이터베이스
    • 대량 데이터의 집계, 상품 거래, 빅데이터 분석 등 사용 목적과 데이터 특성별로 RDB와 NoSQL로 대표되는 다양한 데이터베이스 기술들이 클라우드 서비스로 제공
  • 다양한 기술
    • 이 외에도 스토리지 기술, 오픈소스 클라우드 기반 소프트웨어, 운영관리, 보안 등 다양한 기술의 조합으로 구성

  • IaaS 기반을 구성하는 주요 기술

    • 서버 가상화 기술
      • 하이퍼바이저 형
      • 컨테이너 형
    • 네트워크 가상화 기술
      • VLAN
      • VPN
      • NFV
      • SDN
    • 스토리지 기술
      • 블록 스토리지
      • 파일 스토리지
      • 오브젝트 스토리지
    • 가상화 기반 기술
      • OpenStack
      • VMware
      • vSphere

  • PaaS 기반을 구성하는 주요 기술

    • 데이터베이스 기술
      • RDB
      • NoSQL
    • 분산 처리 기술
      • Apache Hadoop
      • Apache Spark



서버 가상화 기술

  • 서버 가상화 장점
    • 물리적 서버 리소스를 여러 개의 서버 환경을 할당, 각각 환경에 OS와 애플리케이션을 실행할 수 있다
    • 많은 양의 물리 서버를 서버 가상화를 통해 집약시킬 수 있어 서버 리소스를 최대한 활용 가능
    • 다양한 버전의 OS 및 미들웨어 환경이 필요한 개발,테스트 환경을 이용해야 할 경우 적합

  • 3종류의 서버 가상화 기술
    • 하이퍼바이저 형
      • 하나의 물리 서버 하드웨어 위에 하이퍼바이저 라는 가상화 소프트웨어를 동작시키고 그위에 여러개의 게스트 OS를 가동시키는 형태
      • 예) VM웨어의 VMware vSphere, MS의 Hyper-v
    • 호스트 OS형
    • 컨테이너 형



컨테이너 기술

  • 컨테이너 기술 개요

    • 하나의 OS 환경에서 애플리케이션을 실행하기 위한 영역을 여러 개로 나누어 사용

    • 각각의 공간을 컨테이너라고 부른다

    • 각각의 컨테이너는 다른 컨테이너에 영향을 미치지 않고 애플리케이션을 실행시킬 수 있다

    • 서버 가상화가 하드웨어를 통째로 가상화 한다면, 컨테이너는 애플리케이션 실행 환경을 가상화한다.


  • 하이퍼바이저 형
    • 하이퍼바이저 형은 OS 환경을 통째로 가상화 한다
      • VMware vSphere
      • Xen Server
      • Hyper-V
  • 컨테이너 형
    • 컨테이너형은 하나의 OS 환경에서 애플리케이션의 실행 영역을 여러개로 나누어 사용
      • Docker
      • cri-o



분산 처리 기술

  • 분산처리 기술이란
    • 대량의 데이터를 분산 처리 하는 정치
    • 클라우드가 등장하기 전, 대용량 데이터를 처리하려면 고속 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 중심의 기술 습득이나 서비스 구현을 고려할 때, 최적의 선택
      • 단독으로 동작하는 수많은 소프트웨어들로 구성
      • 대표적인 소프트웨어
        • Nova
        • Neutron
  • PaaS를 위한 오픈 소스 클라우드 기반
    • IaaS와 독립적으로 동작
    • AWS, VMware, OpenStack 같은 다양한 클라우드 서비스에서 실행 가능
    • 오픈 소스 웹 애플리케이션의 실행 환경을 지원
    • 대표적인 오픈 소스 PaaS 기반 소프트웨어
      • Openshift
      • Cloud Foundry
        • 개발, 실행환경 지원 소프트웨어



네트워크 가상화 기술

  • 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

    • 라이브러리는 일반적인 작업을 처리하기 위해 자체 코드에서 호출할 수 있는 함수를 제공하는 코드

    • 주로 클래스나 함수로 이용되어짐

    • 재사용성을 높이고 반복적인 코드 사용을 낮추기 위함

    • API vs Library

      • 라이브러리는 코드 자체를 참조하는 반면 API는 인터페이스를 참조한다
  • Framework

    • 개발 할 때 필수적인 요소에 해당하는 설계와 구현을 재사용하기 수월하도록 만들어둔 툴
    • 컴파일러, 라이브러리, 리팩토링, API, 지원 프로그램 등을 포함
    • ex) Visual Studio, Eclipse
    • Library vs Framework
      • Framework : 전체적인 흐름 제어, 프로그래머가 그 안에서 코드 작성
      • Library : 코드를 가져다 씀, 사용자가 제어

profile
개발 경험 저장소

0개의 댓글