Skip to content
Yongku cho edited this page Dec 24, 2021 · 21 revisions

참고 사이트: https://www.44bits.io/ko

서버 인프라 구성 방식에 따른 비교

  • On-Premises
    • You Manage
      • Networking / Storage / Servers / Virtualization
      • O/S / Middleware / Runtime / Data / Applications
  • Infrastructure as a Service
    • You Manage: O/S / Middleware / Runtime / Data / Applications
    • Other Manage: Networking / Storage / Servers / Virtualization
  • Platform as a Service
    • You Manage: Data / Applications
    • Other Manage
      • Networking / Storage / Servers / Virtualization
      • O/S / Middleware / Runtime
  • Software as a Service
    • Other Manage
      • Networking / Storage / Servers / Virtualization
      • O/S / Middleware / Runtime / Data / Applications

On-Permise(온프레미스)

  • 소프트웨어 솔루션을 원격환경이 아닌 자체적으로 보유한 전산실 서버에 직접 설치 및 운영하는 방식
  • 클라우드 컴퓨팅 기술이 나오기 전까지 기업 인프라 구축의 일반적인 방식이었기 때문에 이전 또는 전통적인 이라는 단어와 함께 사용됨
  • 온프레미스를 구축하는데 시간이 수개월 이상 걸렸고 비용 또한 많이 들어, 퍼블릭 클라우드가 나올 당시에 온프레미스가 모두 사라질 것으로 예상했다.
  • 보안적인 이유로 하이브리드 IT 인프라를 구축한다. 비즈니스에 중요하고 보안이 필요한 서비스와 데이터는 온프레미스 환경으로 구축한다. 그리고 덜 중요한 것은 퍼블릭 클라우드 환경을 사용한다.

마이크로서비스 아키텍처

참고자료

하나의 큰 어플리케이션을 여러 개의 작은 어플리케이션으로 쪼개어 변경과 조합이 가능하도록 만든 아키텍처를 말한다. 애플리케이션을 특화된 기능별로 나누게 되면 자연스럽게 애플리케이션의 추상화가 가능해진다.

장점

  • 배포 시간 감소
  • QA 범위 최소화
  • 변경에 따른 사이드 이펙트 최소화

모놀리틱 아키텍처

마이크로서비스 아키텍처와 반대되는 개념이다. 모놀리틱 아키텍처는 한 서비스에 DB, Mail Service, REST API, Web UI가 단일 패키지로 배포하는 것이다. 서비스 복잡도가 증가하면서 모놀리틱 아키텍처가 가지는 문제점들은 배포 시간의 증가, 부분적 스케일 아웃의 어려움, 안정성의 감소등이 있다.

그리고 어플리케이션을 구헝하는 프로그래밍 언어 또는 프레임워크의 변경이 거의 불가능에 가까운 정도로 어렵다. 그 동안 개발된 방대한 양의 코드를 새로운 언어, 또는 프레임워크로 전환해야 하기 때문에 대부분 시도조차 할 수 없을 것이다.

Openstack

  • IaaS 형태의 클라우드 컴퓨팅 오픈소스 프로젝트
  • 아파치 라이센스
  • 리눅스 기반의 운용과 개발
  • 프로세싱, 저장공간, 네트워킹의 가용자원을 제어하는 목적의 여러 개의 하위 프로젝트로 이뤄짐

구성 요소

  • 컴퓨트(Nova)
    • IaaS 시스템의 주가 되는 부분인 클라우드 컴퓨팅 패브릭 컨트롤러이다.
    • 하이퍼바이저 기술로 KVM, VM웨어, 젠 중 하나를 선택할 수 있다.
  • 네트워킹(Neutron)
    • 네트워크와 IP 주소들을 관리하기 위한 시스템
    • 네트워크가 병목현상에 처하지 않도록 보증
    • 네트워크 구성을 통해서 사용자에게 자체 서비스 기능을 제공
    • 서버와 트래픽을 분리시키는 VLAN이나 플랫 네트워크를 제공
  • 블록 스토리지(Cinder)
    • 컴퓨트 인스턴스에 사용할 지속적인 블록 레벨 스토리지 장치들을 제공
    • 블록 스토리지 시스템은 블록 장치들을 서버에 작성 / 부탁 / 제거하는 일을 관리한다.
    • 다양한 스토리지 플랫폼을 사용한다.
  • 아이덴티티(Keystone)
    • 사용자들이 접근할 수 있는 오픈스택 서비스들에 매핑되는 사용자들의 중앙 디렉터리를 제공한다.
    • 여러 형태의 인증을 지원한다.
  • 이미지(Glance)
    • 디스크 및 서버 이미지를 위한 검색 / 등록 / 배급 서비스를 제공한다.
  • 오브젝트 스토리지(Swift)
    • 확장 가능한 여분의 스토리지 시스템이다.
    • 오브젝트와 파일들은 데이터 센터 내 서버를 통해 퍼져있는 여러 개의 디스크 드라이브에 기록되며, 데이터 복체 및 무결성을 보장하는 일을 담당한다.
    • 서버나 하드 드라이브가 고장나면 오픈스택은 활성화된 다른 노드의 내용물을 클러스터 내의 새로운 위치들로 복제한다.
  • 대시보드(Horizon)
    • 관리자와 사용자들에게 클라우드 기반 자원 배치의 접근, 제공, 자동화를 위한 GUI를 제공한다.
  • 오케스트레이션(Heat)
    • 오픈스택 네이티브 REST API와 클라우드포메이션 호환 쿼리 API를 통해 여러 개의 복합 클라우드 애플리케이션들을 조직하기 위한 서비스
  • 워크플로(Mistral)
    • 사용자는 YAML 기반 워크플로 언어를 이용하여 워크플로를 작성한 다음 REST API를 통해 Mistral에 워크플로 정의를 업로드한다.
  • 텔레메트리(Ceilometer)
  • 데이터베이스(Trove)
  • 일래스틱 맵 리듀스(Sahara)
    • 하둡 클러스터를 쉽고 빠르게 제공하기 위한 구성 요소
    • 하둡 클러스터를 확장하는 수단을 제공한다.
  • 베어 메탈(Ironic)
  • 메시징(Zaqar)
  • 공유 파일 시스템(Manila)
  • DNS(Designate)
  • 검색(Searchlight)
  • 키 매니저(Barbican)
    • 기밀 정보의 스토리지에 보한을 제공 / 준비 / 관리하는 REST API이다.

컴퓨터 클러스터

  • 여러 대의 컴퓨터들이 연결되어 하나의 시스템처럼 동작하는 컴퓨터들의 집합
  • 클러스터의 구성 요소들은 일반적으로 고속의 근거리 통신망으로 연결된다.
  • 서버로 사용되는 노드에는 각각의 운영체제가 실행된다.
  • 단일 컴퓨터보다 더 뛰어난 성능과 안정성을 제공

구성요소

  • 클러스터 노드: 프로세싱 자원을 제공하는 시스템
  • 클러스터 관리자: 노드를 서로 연결하여 단일 시스템처럼 보이게 만드는 로직을 제공

특징

  • 작업 부하 분산(Load-Balancing): 계산 부하 분산
  • 높은 가용성(High-Availability, HA): 하나의 노드 장애 시 다른 노드가 서비스를 이어받음

오케스트레이션(Orchestration)

  • 여러 컨테이너의 배포 프로세스를 최적화
  • 컨테이너 자동 배치 및 복제
  • 컨테이너 그룹에 대한 로드 벨런싱
  • 컨테이너 장애 복구
  • 클러스터 외부에 서비스 노출
  • 컨테이너 추가 또는 제거로 확장 및 축소
  • 컨테이너 서비스간의 인터페이스를 통한 연결 및 네트워크 포트 노출 제어

도구들

  • Kubernetes(K8s)
    • 구글에서 개발하였고, 가장 기능이 풍부함
    • 베어 메달, VM환경, 퍼블릿 클라우드 등의 다양한 환경에서 작동
    • 컨테이너의 롤링 업그레이드 지원
  • Docker SWARM
    • 여러 개의 Docker 호스트를 함께 클러스터링하여 단일 가장 Docker 호스트를 생성
    • 호스트 OS에 Agent만 설치하면 간단하게 작동하고 설정이 쉬움
    • Docker 명령어와 Compose를 그대로 사용가능
  • Apache MESSO
    • 수만 대의 물리적 시스템으로 확장 할 수 있도록 설계
    • Hadoop, MPI, Hypertable, Spark같은 응용프로그램을 동적클러스터 환경에서 리소스 공유와 분리를 통해 자원 최적화가 가능
    • Docker 컨테이너를 적극적으로 지원함

용어 정의

  • 패브릭 컨트롤러
    • 배치, 업그레이드, 환경설정 변경 등의 서비스들을 관리한다.
  • 하이퍼바이저
    • 호스트 컴퓨터에서 다수의 운영 체제를 동시에 실행하기 위한 논리적 플랫폼
    • 가상화 머신 모니터 또는 가상화 머신 매니저라고 부른다.
  • KVM(Kernel-Based Virtual Machine)
    • 리눅스 커널을 하이퍼바이저로 변환하기 위한 가상화 인프라스트럭쳐
  • VM웨어
    • x86 호환 컴퓨터를 위한 가상화 소프트웨어 공급
    • Window OS, Linux, OS X를 지원한다.
    • IA-32, x86-64, 아이테니엄, PowerPC 970 등의 아키텍처를 지원하는 하이퍼바이저이다.
  • LDAP(Lightweight Directory Access Protocol)
    • TCP/IP 위에서 디렉터리 서비스를 조회하고 수정하는 응용 프로토콜이다.
Clone this wiki locally