[KDT_AISEC] 1주차, 3주차 - 네이버 클라우드 플랫폼과 클라우드 보안

Gloomy·2024년 1월 20일
0

KDT_AISEC

목록 보기
3/25

클라우드


클라우드의 역사

  • 1960년대부터 가상화라는 용어를 사용하였다. 당시에는 전 가상화(Full Virtualization)기법을 사용하였는데, 이는 하드웨어를 완전히 가상화하는 기법이다. 따라서 Guest OS는 자신이 가상머신의 OS라는 사실을 인지할 수 없다.
  • 다양한 하이퍼바이저가 출시되었다. IBM Logical Partition, VMware, Xen, Hyper-V, KVM(Kernal-based Virtual Machine)등이 있다.

왜 클라우드인가?

  1. 효율적인 비용절감
  • 사용한 만큼 지불하는 클라우드 시스템은 기회 비용을 최적화한다.
  • 부가 상품 이용을 통해 개발 비용을 절감할 수 있다.
  1. 빠른 Deploy
  • 기존 Legacy 인프라에 비해 구성 시간이 빠르다.
  1. 글로벌 진출 용이
  • 글로벌 리전 활용을 통해 글로벌 진출시 빠르고 손쉽게 인프라를 구성할 수 있다.
  1. 보안
  • 인프라에 대한 보안은 클라우드 공급 업체에 위임한다. 즉, 하드웨어와 하이퍼바이저는 공급 업체가 관리한다.
  • 다양한 보안 상품을 이용하여 보안을 강화할 수 있다.
  1. 비 정기적인 업무 처리 목적
  • 정기적인 서비스 이외에 월말, 연말 등 비 정기적으로 발생하는 리소스를 처리하기 용이하다.
  1. 효율성 증대 목적
  • 다양한 애플리케이션, 플랫폼등의 개발환경이 필요할 때 환경 구축이 용이하다.
  1. 대용량 데이터베이스와 백업 목적
  • 클라우드 저장소, 데이터베이스를 이용하여 대용량의 데이터를 저장하고 싶을 때 편리하다.

클라우드 서비스

  • SaaS(Software-as-a-Service)
    • SaaS 애플리케이션이 클라우드 서버에 올라온 상태에서 호스팅 서비스 형태로 제공한다.
    • 필요한 애플리케이션이 구축된 상태이기 때문에 구축된 서비스를 임대한다는 개념이다.
  • PaaS(Platform-as-a-Service)
    • 자체 애플리케이션을 구축하는 데 필요한 것에 비용을 지불하는 서비스 형태로 제공한다.
    • 개발 도구, 인프라, 운영 체제를 포함한 애플리케이션 구축에 필요한 모든 것을 인터넷을 통해 제공한다.
    • 집을 짓는 데 필요한 모든 도구와 장비를 빌리는 것이다.
  • IaaS(Infrastructure-as-a-Serivce)
    • 클라우드 제공 업체로부터 필요한 서버와 저장소를 임대한다.
    • 사용자는 클라우드 인프라로 자체 애플리케이션을 직접 구축하고 개발한다.
    • IaaS는 기업이 원하는 건물을 지을 수 있는 토지를 임대하는 것이다.
  • FaaS(Function-as-a-Service)
    • 서버리스 컴퓨팅으로 환경을 구성하는 개념이며, 애플리케이션을 필요할 때만 실행하는 더 작은 구성요소이다.
    • 식사할 때 식당에 대해, 잘 때 침실에 대해, TV를 볼 때 거실에 대해 비용을 지불하고, 방의 임대료는 지불하지 않는 개념이다.

클라우드 요소 및 개념

  • Bare Metal Server
    Bare Metal Server는 단독으로 사용할 수 있는 고성능 물리 서버이다. 하이퍼 바이저가 존재하지 않으며, Bare Metal전용 Subnet에 구성된다.
  • Init Script
    Init Script는 서버 생성 시 실행되는 스크립트이다. 서버에 설치하여야 하는 패키지나 초기 설정 내용을 스크립트로 선언해두는 것이고, 서버를 같은 환경으로 설정하거나 초기화 하는 데 편리하다. inux는 python, perl, shell / Windows는 visual basic script로 작성하고, 서버 생성 시 최초 1회에 한하여 실행된다.
  • ACG (Access Control Group)
    ACG는 서버의 방화벽 역할을 하고, NIC(Network Interface Card)에 적용된다.
  • LVM: Logical Volume Manager
    LVM은 파일 시스템에 대한 디스크의 할당과 관리를 담당하는 리눅스 도구이다. 여러 개의 물리볼륨을 볼륨그룹으로 묶어 논리적인 볼륨으로 나눠서 디스크 파티션 공간을 효율적으로 활용할 수 있도록 한다.
  • SPAN VOLUME
    SPAN VOLUME은 물리 디스크 n개를 묶어서 하나의 디스크처럼 확장시켜 사용하는 윈도우 도구이다. 하나의 디스크가 모두 사용되면 순차적으로 다음 디스크가 사용되는 방식으로 동작하며 하나의 디스크 고장 시 데이터 복구가 불가능하다.
  • Auto-Scaling
    클라우드의 장점 중 하나는 유연한 인프라 확장이다. 인프라 확장의 높은 자유도를 이용하여 인프라 비용을 최적화하고 이벤트에 대응할 수 있다.
    • 모니터링 기반: 그룹 모니터링 이벤트 알람 설정
    • 스케줄링 기반: 실행 일정 설정
    • 매뉴얼: 수동 설정

VPC, ACG, NACL, 그리고 Load Balancer


  • VPC (Virtual Private Cloud)
    VPC는 클라우드상에서 논리적으로 격리된 고객 전용 네트워크 공간이다.

  • ACG & NACL

    • NACL (Network Access Control List)은 Subnet 단위로 적용된다.

      ACGNetwork ACL
      서버 단위로 적용 (Network Interface Card)Subnet 단위로 적용
      Allow 규칙에 한하여 지원Allow, Deny 규칙 모두 지원
      Default All DenyDefalut All Permit
      모든 규칙을 확인하여 판단우선순위에 따라 규칙을 반영
  • NAT Gateway

    • Private Subnet에서 외부로의 통신이 필요한 경우, 외부 접속을 제공한다.
    • Private Subnet은 Internet Gateway가 없기 때문에, 기본적으로 외부와 통신할 수 없다.
  • Load Balancer: 부하 분산, 헬스 체킹

    • Target Group: 요청을 처리할 대상에 대한 집합이다.
    • 로드 밸런싱 알고리즘
      1. Round Robin: 클라이언트 요청 → 서버에 1개씩 분배
      2. Least Connection: 클라이언트 연결이 제일 적은 서버에게 새로운 커넥션 분배
      3. Source IP Hash: 클라이언트 IP에 대한 Hash Table을 가지고 클라이언트 IP에 매핑되는 서버에 새로운 커넥션 분배

파일 시스템

  • File System
    • OS에서 보조 기억 장치에 저장되는 파일을 관리하는 시스템의 통칭으로 파일을 저장할 클러스터를 관리하고 파일명에 대한 규칙, 데이터의 저장과 검색을 관장한다.
    • 데이터를 저장하기 위해 클러스터라는 저장공간 단위를 만들고 클러스터에 데이터를 저장한다.
  1. 연속 할당 방식
    • 파일의 시작위치와 크기를 가지고 데이터를 저장하는 방식이다.
    • 고전적인 방식이고 단순하지만 저장 장치 크기에 제약이 있으며 데이터 공간 낭비율이 높다.
  2. 비연속 할당 방식
    1. 연결 할당 방식: 링크 구조로 구성
    2. 색인 할당 방식: 색인 구조로 구성, 최근 많은 파일 시스템들의 선택

클라우드 저장소

  • Object Storage
    Object Storage는 인터넷상에 원하는 데이터를 저장하고 사용할 수 있도록 구축된 스토리지이다. 객체 기반의 무제한 파일 저장 스토리지이며 콘솔, RESTfull API, SKD 등 다양한 방법으로 오브젝트를 관리할 수 있다.

  • NAS(Network-Attached Storage)
    NAS다수의 서버에서 공유하여 사용할 수 있는 스토리지이다.

  • Cold Storage VS Warm Storage VS Hot Storage

    • Cold Storage: 자주 사용되지 않는 데이터 (Archive Storage…)
    • Warm Storage: 적당히 자주 사용되는 데이터
    • Hot Storage: 자주 사용되는 데이터

컨테이너


컨테이너란?


컨테이너란 Host OS에서 실행되는 프로세스를 격리하여 별도의 실행환경을 제공하고 해당 프로세스는 운영체제 상에서 실행되는 유일한 프로세스인 것처럼 작동하게 하는 기술이다. 즉, 프로세스마다 별도의 운영 환경을 제공하는 기술이다.

컨테이너 환경에서는 Host OS를 공유하고 프로세스만을 격리하여 경량화된 패키징 형태로 구동한다.

컨테이너의 장점으로는 리소스를 격리하고 구동방식을 단순화하는 데 있다. OS에서 애플리케이션 별 자원을 할당하고 관리하며 실행환경이 격리되기 때문에 OS의 간섭이 없고 애플리케이션이 실행되기 위한 모든 라이브러리와 바이너리가 패키지화 돼있어서 신규 환경 생성 없이 기존의 시스템에서 가볍고 빠르게 구동이 가능하다.

컨테이너의 단점은 애플리케이션이 OS를 공유하기 때문에 보안에 취약하며 유연한 기동이 어렵고 자동으로 관리하기가 어렵다는 점이다.

  • 쿠버네티스(Kubernetes)
    쿠버네티스는 분산되어 있는 컨테이너 환경에서 좀 더 유연하게 관리하기 위한 환경을 제공하는 도구이다.
  • 도커(Docker)
    도커는 컨테이너를 다루는 대표적인 런타임 도구이다.
    • 다양한 서버에서 버전 및 배포환경 통일성을 갖추기 위해 코드와 환경 모두 하나의 컨테이너로 통합한다.
profile
𝙋𝙤𝙨𝙨𝙤 𝙁𝙖𝙧𝙚!

0개의 댓글