Skip to content

Features

Jihoon Seo edited this page Sep 1, 2021 · 1 revision

서브시스템 기능

Cloud-Barista 개발 지원 기능

Cloud-Barista 개발 지원 기능은 Cloud-Barista의 각 구성 요소를 개발하는 Cloud-Barista 개발자의 개발 편의성을 증대시킬 수 있으며, 크게 Cloud-Barista 공통 활용 패키지와 Cloud-Barista 지속적 통합 기능으로 구성되어 있다.

  • Cloud-Barista 공통 활용 패키지
    Cloud-Barista 개발자가 Cloud-Barista의 각 구성 요소를 개발할 때 공통적으로 자주 사용되는 기능을 패키지로 제공하여 Cloud-Barista 개발자의 개발 편의성을 증대시킨다.
    • Cloud-Barista 운영 정보 관리 기능 제공 패키지 (cb-store)
      Cloud-Barista 각 프레임워크 동작 시 메타정보가 발생할 수 있으며, 이를 위해 각 프레임워크 프로세스가 메타정보의 저장/조회/삭제를 일관된 방법으로 수행할 수 있도록 해 준다.
      • Key-Value store 백엔드로는 1) 로컬 파일 시스템에 저장하는 NutsDB, 2) 분산형 저장소인 etcd 중 하나를 선택하여 사용할 수 있다.
      • 지원 메소드
        • Put
        • Get
        • GetList
        • Delete
        • CheckNodeValue
        • GetNodeValue
    • Cloud-Barista 로그 출력 관리 기능 제공 패키지 (cb-log)
      Cloud-Barista 각 프레임워크 동작 시 로그 데이터가 발생할 수 있으며, 이를 위해 각 프레임워크 프로세스가 로그 데이터의 저장/출력 방식 설정을 일관된 방법으로 수행할 수 있도록 해 준다.
      • 지원 기능
        • log level 설정 및 실행 지원
        • multi write: Stdout 및 log file 동시 지원
        • log file rotation 지원
      • 지원 로그 레벨
        • Debug
        • Info
        • Warn
        • Error
      • 지원 출력 모드
        • Off
        • Stdout
        • File
        • Stdout & File
  • Cloud-Barista 지속적 통합 (Continuous Integration)
    Cloud-Barista 지속적 통합 (Continuous Integration) 기능은 Cloud-Barista 개발자가 수행해야 했던 컨테이너 이미지 빌드 테스트, 컨테이너 이미지 빌드 및 등록, 단위 테스트, 연동 테스트 등을 자동으로 수행하는 기능이다.
    • Cloud-Barista 구성요소 컨테이너 이미지 자동 빌드
      Cloud-Barista 개발자가 Cloud-Barista 소스코드 저장소에 새로운 Pull Request를 올리면 미리 설정되어 있는 CI 설정에 따라 컨테이너 이미지 빌드 테스트를 자동으로 수행하며, 이 PR이 merge되면 새로운 버전의 컨테이너 이미지를 컨테이너 이미지 저장소에 자동으로 등록한다.
    • Cloud-Barista 구성요소 단위 테스트 및 연동 테스트
      Cloud-Barista 개발자가 Cloud-Barista 소스코드 저장소에 새로운 Pull Request를 올릴 때마다 해당 PR에 대해 단위 테스트 및 연동 테스트가 자동으로 수행되도록 CI 설정을 구성할 수 있다. 단위 테스트는 각 구성요소의 기능을 테스트하는 것이며, 연동 테스트는 각 구성요소가 다른 구성요소와 연동했을 때에도 잘 동작하는지를 테스트하는 것이다.

Cloud-Barista 실행 관리 기능

Cloud-Barista 사용자가 Cloud-Barista의 실행을 명령하면 로컬 이미지 저장소에 Cloud-Barista 구성 요소 컨테이너 이미지가 있는지 확인하고, 존재하지 않으면 공개 이미지 저장소에서 로컬 이미지 저장소로 이미지를 다운로드한 후 Cloud-Barista의 각 구성 요소들을 실행하여 서비스를 수행한다. 그리고 Cloud-Barista가 실행된 상태에서 상태 조회 기능을 통해 현재 실행되어 있는 Cloud-Barista 구성 요소 컨테이너들의 상태와 로컬 이미지 저장소에 있는 컨테이너 이미지들의 상태를 확인할 수 있다. 또한 실행 중인 각 프레임워크 컨테이너에 접속하여 명령을 내리거나 모든 프레임워크 컨테이너를 중지하거나 삭제하는 등의 기능을 제공한다.

  • Cloud-Barista 실행 관리
    • Cloud-Barista 가동: Cloud-Barista 사용자는 Cloud-Barista 시스템의 2가지 실행 모드 (Docker Compose 모드, Kubernetes 모드) 중 하나를 선택할 수 있으며, Cloud-Barista 실행기 (이하 cb-operator)는 사용자가 선택한 실행 모드에 따라 Cloud-Barista 시스템을 실행시킨다.
    • Cloud-Barista 시스템 상태 정보 제공
      Cloud-Barista 구성요소들은 Docker Compose 모드에서는 컨테이너의 형태로, Kubernetes 모드에서는 파드의 형태로 실행되며, Cloud-Barista 사용자는 Cloud-Barista 시스템 상태 정보 제공 기능을 통해 Cloud-Barista 구성요소 컨테이너/파드 및 컨테이너 이미지의 상태를 확인할 수 있다.
    • Cloud-Barista 종료: Cloud-Barista 사용자는 Cloud-Barista 실행 관리 기능에서 제공하는 Cloud-Barista 종료 기능을 통해 Cloud-Barista 시스템을 종료할 수 있으며, 이 때 인자를 추가로 제공하면 Cloud-Barista 구성요소 컨테이너가 사용했던 도커 볼륨과 Cloud-Barista 구성요소 컨테이너 이미지도 함께 삭제해 주는 기능도 제공한다.

Cloud-Barista 운용 지원 기능

Cloud-Barista 운용 지원 기능은 Cloud-Barista 사용자가 Cloud-Barista 시스템을 실행하여 운용하는 상황에서 컨테이너 오케스트레이션, API 중계 및 추적 관리 등의 기능을 제공하여 Cloud-Barista 사용자의 Cloud-Barista 시스템 운용 편의성을 증대시킨다.

  • Cloud-Barista 컨테이너 오케스트레이션
    각 프레임워크를 Docker Compose나 Kubernetes 기반으로 실행할 수 있도록 지원한다. 사용자가 Cloud-Barista의 프레임워크를 직접 개발하거나 간단한 시험 등을 목적으로 단일 노드에서 Cloud-Barista를 실행시키고자 할 때는 Docker Compose 기반 동작 모드를 이용하는 것이 유용하고, 제품 수준의 서비스를 제공하고자 하는 경우 Kubernetes 기반 동작 모드를 선택하여 각 프레임워크 컨테이너들에 대해 부하 분산이나 장애 복구, 롤링 업데이트 등의 기능을 활용할 수 있다.
    • Cloud-Barista 컨테이너 배치실행: Cloud-Barista 시스템을 Kubernetes 모드로 실행하는 경우, Cloud-Barista 시스템의 배포 대상이 되는 Kubernetes 클러스터는 단일 노드로 이루어져 있을 수도 있고, 다중 노드로 이루어져 있을 수도 있다. Cloud-Barista 컨테이너 배치실행 기능은 노드 간 로드 분배, Cloud-Barista 구성요소 간 네트워크 성능 / 저장소 의존성 등을 고려하여 Cloud-Barista 컨테이너들을 적절한 노드에 배치한다.
    • Cloud-Barista 컨테이너 부하분산: Cloud-Barista 시스템을 Kubernetes 모드로 실행할 때, 특정 Cloud-Barista 구성요소에 많은 부하가 걸릴 경우 Cloud-Barista 컨테이너 부하분산 기능이 자동으로 해당 구성요소의 파드를 추가로 생성하고 부하분산을 위해 트래픽 로드밸런싱 기능을 제공할 수 있다.
    • Cloud-Barista 컨테이너 장애복구: Cloud-Barista 시스템을 Kubernetes 모드로 실행하는 경우, Cloud-Barista 컨테이너 장애복구 기능은 Cloud-Barista 구성요소 파드들이 정상적으로 동작하는지를 주기적으로 체크하고, 만약 정상적으로 동작하지 않으면 Cloud-Barista 구성요소 파드를 추가로 생성하고 해당 파드로의 API 호출을 새로 만든 파드로 리다이렉트하는 기능을 제공할 수 있다.
  • Cloud-Barista API-중계 및 추적 관리 기능
    Cloud-Barista API 게이트웨이는 Cloud-Barista 사용자가 Cloud-Barista 각 프레임워크/구성요소에 보내는 API 요청 및 Cloud-Barista 프레임워크/구성요소들이 다른 프레임워크/구성요소들에게 보내는 API 요청을 중계하는 기능을 담당한다. API 게이트웨이는 또한 API 중계 내역을 저장하여 사용자에게 API 중계와 관련된 현황들을 시각적으로 보여줄 수 있으며, Global Tracing 기능이 적용되면 API 호출과 응답이 Cloud-Barista 시스템 내의 프레임워크/구성요소 간에 어떻게 전달되었는지를 시각적으로 확인할 수 있다.
    • Cloud-Barista API 중계: Cloud-Barista API 중계기는 Cloud-Barista 시스템 내/외부로 향하는 API 호출/응답을 중계하며, Cloud-Barista 사용자가 API 중계 환경설정을 손쉽게 변경하고 Cloud-Barista API 중계기 재시작 없이도 적용할 수 있도록 Cloud-Barista API 중계기 환경설정 API와 웹 UI를 제공한다.
    • Cloud-Barista API 중계 이력 관리: Cloud-Barista API 중계기는 API 중계 이력을 저장 및 관리하며, 오픈소스 도구 등을 이용해 시각화된 정보를 제공할 수 있다.
    • Cloud-Barista API 추적 정보 제공: 단일 API 요청이 어떤 Cloud-Barista 구성요소들을 거쳐 처리되는지 추적할 수 있도록 전역 추적 (Global Tracing) 기능을 제공한다.
  • Cloud-Barista 상태 모니터링
    Docker Compose나 Kubernetes와 연동하여 실행할 수 있는 Prometheus, Grafana, Jaeger 등의 도구들을 통해 복합적인 모니터링 기능을 사용할 수 있다.
    • Cloud-Barista 상태 정보 저장: 모니터링 데이터 저장용 데이터베이스인 Prometheus 등을 활용하여 Cloud-Barista 구성요소 컨테이너들의 모니터링 정보를 저장할 수 있다.
    • Cloud-Barista 상태 정보 제공: Cloud-Barista 사용자 또는 Cloud-Barista 내/외부 구성요소의 요청에 따라 모니터링 데이터베이스에 저장되어 있던 모니터링 정보를 제공할 수 있다.
    • Cloud-Barista 상태 시각화: 모니터링/트레이싱 정보 시각화 도구인 Grafana, Jaeger 등을 활용하여 Cloud-Barista 시스템의 모니터링/트레이싱 정보를 시각적으로 보여줄 수 있다.