3. 클라우드 컴퓨팅(Cloud Computing) - 6. 클라우드 컴퓨팅 기술 1 (실습 有)

하쮸·2024년 9월 28일
0

1. 클라우드 컴퓨팅 기술1.

  • 클라우드 컴퓨팅의 근본적인 개념은 프로비저닝을 통한 IT 리소스의 서비스화.
    • 이 서비스를 사용하기 위해 CSP(Cloud Service Provider)가 제공하는 웹 클라이언트에 접속하여 사용자가 요구하는 스펙에 맞는 IT 리소스를 셀프서비스로 이용하는 것.

1-1. 클라우드 컴퓨팅 기술의 구성.

  • 클라우드 컴퓨팅을 이용하여 서버, 스토리지, 네트워크 등의 H/W 및 데이터베이스와 같은 애플리케이션으로 시스템을 구축하고 필요한 정보를 처리할 수 있음.
  • 클라우드 컴퓨팅온프레미스 방식의 물리적 실행 환경의 제약을 극복하고 사용자에게 실시간으로 프로비저닝된 가상의 리소스를 탄력적으로 제공하기 위한 가상화, 웹 서비스, 가용성 관리 등 다양한 기술의 총집합체.
  • 클라우드 컴퓨팅이 데이터 센터에서 사용자의 단말에 서비스 형태로 제공되는 과정은 크게 3개의 영역으로 구분할 수 있음.
    1. 데이터 센터와 물리적 IT 리소스를 운용하고 SaaS, PaaS, IaaS 등의 서비스를 제공하는 CSP.
    2. 사용자가 CSP가 제공하는 IT 리소스와 서비스에 접근하기 위한 광역 네트워크.
    3. 사용자가 접근한 서비스를 사용하기 위한 PC, 모바일 기기 등 단말(terminal)과 클라이언트 애플리케이션으로 구성됨.

1-1-1. 클라우드 컴퓨팅의 5가지 영역의 역할.

  1. 클라우드 컴퓨팅 서비스 제공사(CSP : Cloud computing Service Provider)
    • 다양한 IT 리소스를 포함하는 클라우드 컴퓨팅 인프라 위에 클라우드 플랫폼을 구축하고 이를 통해 SaaS, PaaS, IaaS 등과 같은 다양한 서비스 제공.
  2. 클라우드 컴퓨팅 서비스 브로커리지(CSB : Cloud computing Service Brokerage)
    • 다수의 클라우드 서비스를 연계하여 사용자에게 제공하는 모델.
    • 최적화, 통합된 서비스를 이용하여 신규 서비스와 가치를 창출, 사용자 요구사항 기반의 최적의 서비스를 선택ㆍ배치하는 기능 제공.
  3. 클라우드 컴퓨팅 네트워크(CN : Cloud computing Network)
    • CSP와 사용자의 클라우드 터미널 장치를 연결하는 광대역 유무선 네트워크.
  4. 클라우드 컴퓨팅 서비스 단말기(CCD : Cloud computing service Client Device)
    • 사용자가 클라우드 서비스를 이용하기 위해 사용하는 장치(스마트폰, PC, 태블릿 PC, 씬 클라이언트, 제로 클라이언트 등)
      • 씬 클라이언트(thin client)
        • 자신의 계산 역할을 충족시키기 위해 다른 일부 컴퓨터에 크게 의존하는 컴퓨터 or 컴퓨터 프로그램.
      • 제로 클라이언트(zero client)
        • CPU, 메모리, 저장장치와 같은 기초적 컴퓨터의 구동부가 없이 네트워크 연결 및 키보드, 마우스와 같은 I/O 단자, VGA 연결단자로만 구성되어 서버의 리소스만 활용하여 구동되는 컴퓨터.
  5. 클라우드 컴퓨팅 보안(CS : Cloud computing Security)
    • CSP, 클라우드 네트워크, 클라우드 단말까지 클라우드 서비스를 좀 더 안전하게 이용할 수 있는 환경.

  • 5가지 각각의 영역에서 클라우드 컴퓨팅 서비스가 가능하도록 클라우드 컴퓨팅을 구성하는 기술

1-1-2. 클라우드 컴퓨팅을 구성하는 기술.

  1. 가상화
    • 물리적인 IT 리소스를 시스템 or 프로그램의 형태로 운영할 수 있는 기술.
    • 여러 대의 IT 리소스를 마치 한 대처럼 운영하거나 한 대의 IT 리소스를 논리적으로 여러 대로 나누어 이요할 수 있는 기술.
  2. 분산처리
    • 수백 ~ 수천 노드의 대규모 서버 환경에서 대용량의 데이터를 네트워크를 통해 원격으로 분산하고 연산을 처리하는 기술.
  3. 오픈 인터페이스
    • 인터넷 기반의 서비스 및 서비스 간 정보를 공유할 수 있는 접속 기술.
  4. 오케스트레이션
    • CSP가 실시간으로 IT 리소스를 프로비저닝하여 제공하고 서비스 요청부터 제공까지 자동화하는 기술.
  5. 보안 및 프라이버시 보호
    • 외부 IT 리소스에 기업 및 개인의 민감한 정보들을 안전하게 전송 및 저장할 수 있도록 보호하는 기술.

2-1. 가상화 기술의 이해.

  • 가상화(virtualization)는 물리적 IT 리소스를 가상의 IT 리소스로 전환시키는 기술.
    • 가상화 기술을 통해 하나의 서버에서 여러 실행 환경을 만들 수도 있고, 여러 서버를 하나의 물리적 리소스로 표현할 수도 있음.
      • 물리적 리소스의 소유 비용을 줄일 수 있음.
      • 유지보수가 간편.
  • S/W적으로 애플리케이션, 서버, 스토리지, 네트워크와 같은 IT 리소스를 논리적으로 분할/통합하여 리소스의 이용률과 가용성을 높이는 기술.

2-1-1. 가상화 기술의 개념.

  • CPU, GPU, 메모리, 스토리지와 같은 H/W적 리소스와 OS, 런타임 등의 S/W적 리소스를 가상화하여 S/W 플랫폼 역할을 함.
    • 초기 형태는 가상 메모리, 가상 I/O, 에뮬레이션(emulation)이었으나 현재는 물리적 리소스인 CPU, 메모리, 스토리지 뿐만 아니라 OS, 런타임 등 논리적 리소스까지도 가능.
  • 가상화클라우드 컴퓨팅에서 핵심이 되는 기술.
  • 클라우드 컴퓨팅이 사용자의 요청에 적합한 IT 리소스를 탄력적으로 제공할 수 있는 것이 바로 가상화기술 덕분.

일반적인 시스템 운용

  • 가상화 기술을 통해 H/W는 여러 개의 논리적 단위로 나뉠 수 있는데, 이 각각의 논리적 단위를 가상 머신(VM : Virtual Machine)라고 함.
    • VM은 단순화된 펌웨어 같은 S/W의 일종으로 H/W 리소스를 OS가 아닌 VM 수준에서 제어하기 때문에 한 H/W상에서 각기 다른 종류의 OS를 여러 개 실행하는 것이 가능.

가상화의 개념

  • 가상화 계층의 역할은 상위 S/W 계층에 대해서는 제어가 가능하게 하고, 하위 H/W 계층에 대해서는 리소스가 효율적으로 활용될 수 있도록 우회 가능한 층을 제공하는 것임.

  • 가상화 기술은 아래의 4가지 특성을 제공하여 여러 환경이 동시에 동작할 수 있는 가상 환경을 제공함.

    • 파티셔닝(partitioning)
      • 하나의 물리적인 머신에서 여러 개의 OS를 운영할 수 있고, 리소스를 분할-분배하여 사용량에 따라 효율적으로 사용할 수 있음.
    • 캡슐화(encapsulation)
      • VM은 폴더와 파일로 존재하며, 구조화되어 있어 이동 및 복사가 가능함.
    • 격리(isolation)
      • 장애 및 보안에 대비하여 각각의 VM캡슐화되어 있어서 장애 및 보안 문제 발생 시 해당 VM은 격리 조치되며, 세밀한 리소스 제어로 성능을 유지함.
    • H/W 독립성
      • H/W 안에 VM은 독립적으로 가동되어 또 다른 서버 가상화 시스템 or 물리적 시스템인 서버로 마이그레이션(migration)이 가능함.
        • 가상 서버에서 물리 서버로의 마이그레이션V2P(Virtual machine to Physical machine) ,
          반대로 물리시스템에서 가상 서버로의 마이그레이션P2V라 함.

2-2. 인프라 구성.

  • 신규 서비스 or 업무 처리의 목적으로 개발된 애플리케이션이 배포되어 실제 사용자에게 이용되기 위해서는 시스템과 그 위에 애플리케이션 동작 시 사용되는 OS, 미들웨어, 라이브러리 등의 실행 환경이구성되어야 함.
    • 이러한 실행 환경을 인프라(infra)라고 함.

2-2-1. 서버.

  • 모든 IT 서비스의 요청부터 연산처리, 결과 제공까지 하는 완성된 컴퓨터 시스템을 뜻함.

서버의 종류와 특징

x86 및 x64 서버- 인텔 x86 Xeon 칩셋 or AMD x64 칩셋을 기반으로 한 마더보드 기반 서버 기술.
UNIX 서버- 유닉스 운영체제를 기반으로 작동하는 엔터프라이즈(Enterprise)급 서버로, IBM, HP, Oracle 등이 시장을 주도.
ARM 서버- 저전력 프로세서 ARM 칩셋을 기반으로 한 고집적 마이크로 서버
HPC 기술- 매니코어 CPU칩 기술이나 GPU 등 코프로세서(coprocessor)를 활용한 고성능 서버.

2-2-2. 스토리지.

  • IT 산업의 패러다임 변화에 따라 사용량이 급증한 H/W.
  • 서버를 통해 다양한 IT 서비스에 필요한 데이터를 효과적으로 저장, 관리 및 보호하는 장치.

스토리지의 종류와 특징

HDD- 비휘발성
- 순차접근이 가능한 컴퓨터의 보조기억장치.
- 플래터를 회전시켜 자기패턴으로 정보를 기록하는 자성 기반의 기계적 메커니즘으로 구동.
SSD- HDD를 대체하는 낸드플래시 등 메모리칩 배열이 고정된 반도체 메모리 방식의 무소음으로 작동하는 저장장치.
- 성능, 폼팩터, 내구성, 전력소모 면에서 우수함.
Hybird- 상대적으로 저렴한 HDD 기술과 성능이 우수한 SSD 기술을 혼용한 스토리지

2-2-3. 네트워크.

  • 사용자가 원격지에서 시스템에 접근(or 접속)할 수 있도록 IT 리소스를 연결하기 위한 장비.

네트워크 장비의 종류와 기능

스위치- 네트워크 단위들을 연결하는 통신장비로 허브라고도 함.
- OSI(Open Systems Interconnection) 2계층에서 사용하는 네트워크 내에서 패킷 전달 담당.
라우터- OSI 3계층에서 패킷의 위치를 추출하여 그 위치에 대한 최상의 경로를 지정하며, 이 경로를 따라 데이터 패킷을 다음 장치로 전향시키는 장치.
방화벽- 서로 다른 네트워크를 통과하는 데이터를 허용ㆍ거부하거나 검사ㆍ수정하는 H/W나 S/W장치.

2-2-4. OS의 종류와 특징.

  • 서버, 스토리지, 네트워크 및 클러스터 장비 등을 제어하기 위한 기술을 내장한 S/W.
  • 리소스나 프로세스를 효율적으로 관리하여 가용성을 향상시키고 에너지 사용을 최적화함.

OS의 종류와 특징

클라이언트 OS- 사용자의 사용성을 향상 시킬 수 있는 GUI기능이나 멀티미디어 기능이 지원 됨.
- 대표적으로 윈도우, Mac OS, 안드로이드 OS, iOS 등.
서버 OS- 하드웨어 리소스를 고속으로 가동시키면서도 안정적으로 동작시키기 위해 필요한 기능으로 특화되어 있음.
- CPU, 메모리, GPU 등의 H/W 성능을 최대한 끌어내고 대량의 데이터를 효율적으로 수행하는 알고리즘을 갖추고 있음.
- 대표적으로 윈도우 Server, Unix, Linux 등이 있음.

2-2-5. 미들웨어(middleware)

  • 미들웨어는 사전적 의미 그대로 H/W와 S/W 중간에 위치한 프로그램.
    • OS와 애플리케이션 사이에서 동작함.
  • 서버 OS상에서 애플리케이션이 OS로부터 제공받는 서비스 외에 추가적으로 이용할 수 있는 서비스를 제공하는 보조적 컴퓨터 S/W.

미들웨어의 종류와 기능

TP 모니터(Transaction Processing monitor)- 시스템과 데이터베이스 사이의 최소 처리 장치를 모니터링하고 일관성을 유지하는 트랜잭션 관리 미들웨어.
- 주로 C/S 시스템에 사용.
웹 애플리케이션 서버(web application server)- 주로 웹 서버와 데이터베이스 서버 사이에서 복잡한 프로그래밍적 기능을 제공하여 동적인 결과를 전송하는 미들웨어.
엔터프라이즈 서비스 버스(enterprise service bus)- 컴포넌트화된 논리적 집합으로 묶은 핵심 미들웨어.
- 비즈니스 프로세스 환경에 맞게 설계 및 실행할 수 있는 공통 실행 환경을 위한 아키텍처 패턴.
데이터베이스 미들웨어- 애플리케이션을 특정 데이터베이스로 연결해 주는 소프트웨어

3-1. 서버 가상화.

  • 서버 가상화라는 용어는 이미 1960년대부터 다수의 IT 리소스 관리와 운영의 어려움을 보완하기 위한 목적으로 개발된 이후 널리 사용되기 시작.
    • 이후 컴퓨터 시스템에서 내부적으로 가상(논리적)의 기능과 구성 요소를 만들어 내기 위한 방식으로 확장되었음.
  • 가상화를 위한 방법 3가지.
    • 호스트 가상화 방식
      • H/W에 설치된 OS(호스트 OS) 위에 가상화 S/W가 설치되고, 그 위에 S/W 실행을 위한 OS(호스트 OS)가 구동되는 방식.
    • 하이퍼바이저 가상화 방식
      • 호스트 OS 없이 H/W에 H/W를 직접 제어하는 하이퍼바이저가 설치되고, S/W 실행을 위한 게스트OS가 구동 되는 방식.
    • 컨테이너 방식
      • 호스트 OS 위에 컨테이너 관리 S/W를 설치하여, 라이브러리와 애플리케이션으로 구성된 컨테이너를 논리적으로 나누어 사용하는 방식.

3-1-1. 호스트 가상화 기술.

  • 호스트 가상화 기술은 논리적 리소스를 생성하기 위한 가장 초기에 보편화된 기술.
    • H/W(호스트) 위에 기반이 되는 OS를 설치하고 그 위에 다시 가상화 S/W를 설치하여 가상화를 구성함.
    • 가상화 S/W에 의해 추상화된 가상 환경에 애플리케이션을 위한 OS를 작동시키는 방식.
    • 이렇게 생성된 가상 환경을 가상머신(VM)이라고 함.
      • VM을 이용한 서버 가상화S/W적 파티셔닝 or OS 이미지 가상화라고도 함.

  • 호스트 가상화 방식에는 애플리케이션 실행에 호스트 OS게스트 OS 두 종류의 OS가 구동됨.
    • 호스트 OS : H/W 계층 위에 설치되어 H/W 직접 관리.
    • 게스트 OS : 가상 머신(VM) 위에 설치되어 S/W 실행 환경 제공.
  • 호스트 가상화의 가장 큰 장점은 가상의 H/W를 에뮬레이팅하여 게스트 OS가 H/W 리소스에 접근하는 것을 제어하고 동기화 하기 때문에 호스트 OS에 크게 제약이 없음.
    • 하지만 호스트 OS 위에 게스트 OS가 공존하는 구조로 2개의 OS가 필요 이상의 CPU, 디스크, 메모리 등을 사용하는 오버헤드가 큰 단점이 있음.

3-1-2. 하이퍼바이저 가상화 기술.

  • 호스트 가상화 기술의 단점을 극복하고 좀 더 적은 리소스 사용으로도 가상화를 지원하기 위한 하이퍼바이저(hypervisor)가 등장.
  • 하이퍼바이저의 가장 큰 특징은 어떠한 OS에 의존하지 않고 H/W에 직접 설치ㆍ구동이 되는 구조임.

  • 하이퍼바이저 방식은 하이퍼바이저가 H/W를 직접 제어할 수 있어서 상대적으로 오버헤드가 작음.

    • 또한 H/W를 직접 관리하기 때문에 리소스 관리에도 훨씬 유연함.
  • 하지만 H/W를 제어할 OS가 없기 때문에 하이퍼바이저 구동 시 DOM0라는 관리 머신이 함께 구동됨.

    • DOM0가 가상 환경 운용에 얼마나 많이 개입하느냐에 따라 하이퍼바이저 방식은 크게 2가지로 구분 됨.
  • 1. 전가상화(full-virtualization)

    • H/W를 완전히 가상화하는 방식.
      • Hardware Virtual Machine라고도 함.
    • CPU의 VT(Virtualization Technology)를 이용하는 관리용 VM DOM0를 통해 여러 종류의 게스트 OS의 커널 요청을 번역하여 H/W에 전달함.
    • 모든 명령에 대해 DOM0가 개입하여 중재하는 형태이기 때문에 병목현상으로 인한 성능저하가 발생할 수 있는 단점이 있음.
  • 2. 반가상화(para-virtualization)

    • 전가상화의 가장 큰 단점인 성능저하의 문제를 해결하기 위해 H/W를 부분적으로 가상화하는 방식.
    • 하이퍼 콜(hyper call)이라는 인터페이스를 통해 하이퍼바이저에 직접 제어 요청을 하기에 높은 성능을 유지할 수 있는 것이 반가상화 방식의 가장 큰 장점.
      • 하지만 하이퍼바이저하이퍼 콜 요청을 할 수 있도록 게스트 OS의 커널 수정이 요구되기 때문에 리눅스와 같은 오픈소스 OS 외의 OS에서 반가상화를 이용하기가 제한적인 단점이 있음.

3-1-3. 컨테이너 가상화 기술.

  • 컨테이너 가상화 기술의 개념.

    • 하이퍼바이저호스트 OS 없이 직접적으로 가상 환경을 구축할 수 있다 하더라도 하이퍼바이저 위에 여러 개의 OS를 구동시키는 것 자체가 많은 오버헤드를 발생시킴.
    • 컨테이너 가상화호스트 OS 상에 논리적인 영역(컨테이너)을 만들고, 애플리케이션을 동작시키는 데 필요한 라이브러리와 애플리케이션 등을 컨테이너 안에 포함시켜 게스트 OS 없이 개별 서버와 같은 실행 환경을 구축하는 방식.
      • 컨테이너호스트 OS상에서 컨테이너라 불리는 논리적인 파티션을 생성하고, 애플리케이션 실행에 필요한 라이브러리, 미들웨어, 런타임, 보조 애플리케이션 등을 하나로 모아 서버인 것처럼 사용할 수 있게 만든 영역.
        • 컨테이너의 가장 큰 특징은 게스트 OS의 실행에 소요되는 오버헤드가 없어 고속으로 작동한다는 점.
    • 여러 애플리케이션에서 사용하고 있는 미들웨어나 라이브러리의 버전이 다른 경우에는 각 애플리케이션이 서로 영향을 주지 않도록 격리가 필요함.
      • 이 경우 컨테이너 기술을 사용하면 시스템 리소스를 마치 애플리케이션이 개별적으로 점유하고 있는 것처럼 보이게 할 수 있음.
  • 도커(Docker)

    • 도커컨테이너 가상화 기술에서 오늘날 가장 대표적으로 사용되는 솔루션.
      • 반가상화보다 더 경량화된 리눅스 컨테이너를 기반으로 구동됨.
      • 또한 VM과는 달리 이미지 생성과 배포에 특화된 기능을 제공함.
    • 도커는 애플리케이션의 실행에 필요한 환경을 하나의 이미지로 모아두고, 그 이미지를 사용하여 다양한 환경에서 애플리케이션 실행 환경을 구축 및 운용할 수 있는 오픈소스 플랫폼.
    • 가장 대표적인 특징은 도커를 사용할 수 있는 환경만 있다면 애플리케이션에 대한 이미지를 다운로드받아 바로 사용할 수 있는 다운로드(pull) 기능.

    • 애플리케이션의 실행에 필요한 프로그램, 라이브러리, 소스 등의 모든 파일 및 디렉토리를 컨테이너로 묶어 이미지화 하고, 이런한 도커 이미지레지스트리(registry)에 저장하여 공유할 수 있음.
      • 레지스트리에는 도커 허브(hub)리포지터리(repository)가 있음.
        • 레지스트리도커 이미지를 저장하고 저장된 이미지를 사용자가 다운로드하여 설치할 수 있는 공유 환경을 제공하는 저장소.
      • 사용자는 사용자의 호스트 컴퓨터에 설치된 도커 컨테이너를 관리하고 실행하기 위해 데몬(daemon)과 상호작용하는 클라이언트를 통해 이미지를 다운로드하고 실행하게 됨.
    • 도커는 이러한 인프라 환경을 컨테이너로 관리하기 때문에 개발자는 도커를 사용하여 개발한 애플리케이션 이미지를 작성하고 컨테이너를 가동시킬 수 있음.
      • 이미지도커가 설치되어 있는 환경이라면 기본적으로 어디서든지 작동되므로 개발자가 가장 곤혹스러워하는 개발ㆍ테스트 환경에서 정상적으로 구동되지만 운용 환경에서는 구동되지 않는 상황 발생을 현저하게 줄일 수 있음.
        • 또한 애플리케이션 개발부터 테스트 배포까지 이르는 과정 전체를 애플리케이션 엔지니어가 수행하는 CI/CD를 가능하게 함.
          • CI/CD
            • 빌드와 테스트 프로세스를 통합하여 상시로 실시해 주는 CI(Continuous Integration)와 짧은 주기로 S/W를 개발하여 S/W가 언제든지 신뢰 가능한 수준으로 출시될 수 있도록 보증하는 CD(Continuous Delivery or Continuous Deploy)를 동시에 수행하는 S/W 공학적 접근 방법으로 S/W를 더 빠르게, 더 주기적으로 빌드 및 테스트하고 출시하는 것을 목표로 함.
              변경 사항의 배포에 대한 비용, 시간, 위험을 줄일 수 있게 함.
  • 도커의 특징.

    • 빠른 설치
      • 애플리케이션을 설치하고 사용하는 것에 최소의 시간과 용량을 소비함.
    • 애플리케이션 이식성
      • 애플리케이션과 설치 파일들이 하나의 컨테이너에 존재하기 때문에 호스트의 커널이나 플랫폼 버전 등에 상관없이 도커만 실행할 수 있으면 사용이 가능함.
    • 버전 제어, 컴포넌트 재사용
      • 컨테이너 버전 제어가 쉽고 변경 내역을 확인 가능하며, 롤백이 간단함.
      • 이전 레이어의 컴포넌트를 재사용하기 때문에 도커를 가볍게 만들 수 있음.
    • 쉬운 유지 관리
      • 애플리케이션 종속성에 관한 문제에 대해 유지 관리가 쉬움.

  • 쿠버네티스(Kubernetes)
    • 컨테이너 분산배치, 상태 관리 및 구동 환경을 관리해주는 도구.
      • Kubernetes v1.2부터 도커 지원 중단.
    • 쿠버네티스(Kubernetes)컨테이너화된 애플리케이션을 자동으로 배포, 스케일링, 관리하는 오픈 소스 플랫폼.
    • 주로 여러 서버에 걸쳐 실행되는 컨테이너 기반의 애플리케이션을 효율적으로 운영하기 위해 사용됨.
    • 컨테이너는 애플리케이션의 독립적인 실행 환경을 제공하며, 쿠버네티스는 이 컨테이너들이 일정한 상태로 유지되도록 지원
  • 쿠버네티스의 기능.
    • 자동화된 배포 및 롤백
      • 애플리케이션을 자동으로 배포하고 필요에 따라 롤백을 수행함.
      • 서비스 디스커버리 및 로드 밸런싱
        • 여러 인스턴스 간에 트래픽을 자동으로 분배함.
      • 자동 스케일링
        • 사용량에 따라 컨테이너 수를 자동으로 조정함.
      • 셀프 힐링
        • 장애가 발생한 컨테이너를 자동으로 복구.
      • 구성 관리
        • 애플리케이션 설정을 코드로 관리하고, 변경 사항을 적용함.

4. 실습(키 자격 모음 생성, DB연결)

profile
Every cloud has a silver lining.

0개의 댓글