BOSH(소프트웨어)

BOSH (software)
클라우드 파운드리 BOSH
BOSH Logo
개발자클라우드 파운드리
초기 릴리즈2010
안정된 릴리스
271.8.0[1] / 2021년 4월 19일; 13개월 전 (2021년 4월 19일)
저장소
기입처루비, Go and Bash
운영 체제크로스 플랫폼
유형클라우드 컴퓨팅
면허증.Apache 라이센스 2.0[2]
웹 사이트bosh.io Edit this at Wikidata

BOSH는 대규모 분산 서비스의 릴리스 엔지니어링, 소프트웨어 도입애플리케이션 라이프 사이클 관리위한 툴 체인을 제공하는 오픈 소스 소프트웨어 프로젝트입니다.툴 체인은 서버(BOSH Director)와 명령줄 도구로 구성됩니다.일반적으로 BOSH는 클라우드 소프트웨어의 패키지화, 도입 및 관리사용됩니다.BOSH는 2010년 VMware에서 Cloud Foundry PaaS를 구현하기 위해 처음 개발되었지만 다른 소프트웨어(: Hadoop, RabbitMQ 또는 MySQL)를 구축하는 데 사용할 수 있습니다.BOSH는 대규모 분산 시스템의 라이프 사이클 전체를 관리하도록 설계되어 있습니다.

2016년 3월부터 BOSH는 Microsoft Windows[3] 서버와 Linux 서버 모두에서 배포를 관리할 수 있게 되었습니다.

BOSH Director는 단일 IaaS(Infrastructure as a Service) 공급자와 통신하여 기반이 되는 네트워킹 및 가상 머신(VM)(또는 컨테이너)을 관리합니다.다음과 같은 여러 IaaS 제공자가 지원됩니다.Amazon Web Services EC2, Apache CloudStack, Google Compute Engine, Microsoft Azure, OpenStackVMware vSphere.

보다 기본적인 IaaS 프로바이더를 지원하기 위해 BOSH는 클라우드 프로바이더 인터페이스(CPI) 개념을 사용합니다.상기의 각 IaaS 프로바이더에 대한 CPI의 실장이 있습니다.일반적으로 CPI는 VM을 배포하는 데 사용되지만 컨테이너를 배포하는 데도 사용할 수 있습니다.

BOSH를 사용하여 컨테이너를 배포하기 위한 CPI는 거의 없으며, 1개만 능동적으로 지원됩니다.이 경우 BOSH는 VirtualBox 또는 VMware Workstation에서 실행되는 단일 가상 머신에 Pivotal Software의 Garden 컨테이너(Garden은 Docker와 매우 유사함)를 도입하는 CPI를 사용합니다.이론적으로, 필요한 CPI가 개발되면, 다른 모든 컨테이너 엔진이 지원될 수 있습니다.

BOSH는 VM 또는 컨테이너에 대한 구현을 무관심하게 지원하기 때문에 BOSH는 이러한 구현을 지정하기 위해 일반 용어인 "인스턴스"를 사용합니다.BOSH의 "인스턴스"가 실제로 VM인지 컨테이너인지에 대한 선택은 CPI에 달려 있습니다.

워크플로우

설치가 완료되면 BOSH 서버는 루트 파일 시스템('스템셀'이라고 함)과 패키지('릴리스'라고 함)를 업로드할 수 있습니다.BOSH 서버에 소정의 소프트웨어 시스템을 전개하는 데 필요한 비트가 있는 경우, YAML 전개 매니페스트에 기재된 대로 계속 진행하도록 지시할 수 있습니다.그런 다음 BOSH는 카나리아를 사용하여 장애가 발생한 구성을 도입하지 않도록 "인스턴스"(VM 또는 컨테이너)를 점진적으로 도입합니다.

소프트웨어 시스템이 도입되면 BOSH는 해당 인스턴스를 지속적으로 감시하여 장애가 발생한 인스턴스를 검출하고 누락된 인스턴스를 부활시킵니다.

BOSH 전개 매니페스트가 변경되면 BOSH는 인스턴스별로 순차적으로 암묵적인 변경을 롤아웃하는 것을 받아들입니다.즉, BOSH는 다운타임 없이 라이브 클러스터를 업그레이드할 수 있습니다.

개념

풀어주다

BOSH 릴리스는 아카이브 파일 또는 git 저장소 중 하나입니다.어느 경우든 BOSH와 함께 도입할 수 있는 소프트웨어 시스템에 대해 설명합니다.이를 위해 관련된 모든 바이너리 자산, 소스 코드, 컴파일 스크립트, 구성 가능한 속성, 시작 스크립트 및 구성 파일의 템플릿을 패키징합니다.

BOSH 릴리즈는 "패키지"와 "작업"으로 구성됩니다.대략적으로 BOSH 패키지는 실행할 수 있는 것을 제공하며, BOSH 작업은 이러한 구성 및 실행 방법을 설명합니다.

BOSH 패키지는 특정 소프트웨어 컴포넌트를 구축하기 위해 필요한 소스 코드, 바이너리 자산(블럽이라고 함) 및 컴파일 스크립트를 상술합니다.바이너리 "블럼"을 제공하는 방법은 두 가지가 있습니다.아카이브 파일로 제공되는 BOSH 릴리스에서는 BLOB가 직접 포함됩니다.그러나 GIT 저장소로 제공되는 BOSH 릴리스에서는 블럽이 커지면 같은 작업을 하는 것이 문제가 되는 경향이 있습니다.이것이 BOSH 릴리스가 참조된 블럽을 가져올 수 있는 "블럽스토어" 개념을 제공하는 이유입니다.대부분의 BOSH 릴리스에서는 퍼블릭 Amazon S3 버킷에 의해 백업되는 Blobstore를 사용하지만 BOSH 릴리스에서는 프라이빗 또는 로컬 "블롭스토어"를 참조하는 다른 방법이 있습니다.

BOSH 패키지는 아카이브에서 파일을 추출하여 적절한 타깃디렉토리에 카피하는 것만으로, 항상 컴파일 국면의 대상이 됩니다.특정 패키지를 컴파일하기 위해 BOSH는 패키지 사양에 따라 필요한 패키지와 BLOB만 포함하는 사용 후 삭제 컴파일 인스턴스(VM 또는 컨테이너)를 생성합니다.이 전용 인스턴스에서 BOSH는 컴파일 스크립트를 실행하고 컴파일 결과를 데이터베이스에 밀봉하여 재현 가능한 전개에 안전하게 사용할 수 있도록 합니다.

한편, BOSH 작업에는 설정 속성(설명할 수 있는 것), 설정 파일용 템플릿 및 스타트업 스크립트를 제공합니다.BOSH 작업은 하나 이상의 패키지를 종속성이라고 합니다.작업은 BOSH 데이터베이스에도 봉인되지만 구성 파일 템플릿은 배포 시 렌더링되며 모든 구성 속성이 해결됩니다.이러한 구성 속성은 보통 IP 주소, 포트 번호, 사용자 이름, 암호, 도메인 이름 등입니다.

줄기세포

BOSH 스템셀은 새로운 인스턴스(VM 또는 컨테이너)를 작성하기 위한 기본 패키지입니다.즉, BOSH 스템셀은 BOSH 에이전트 및 monit 복사본과 함께 운영체제이미지를 발송합니다.이거는 인스턴스가 호스트하는 서비스(「작업」이라고 불립니다)를 관리하기 위해 사용됩니다.BOSH 에이전트는 BOSH가 모든 라이프 사이클 동안 인스턴스와 통신할 수 있도록 지원합니다.

BOSH의 줄기세포 개념은 Amazon의 AMI와 같은 가상 머신 이미지와 유사하지만 BOSH 줄기세포는 특정 용도에 특화되어 있지 않습니다.대신 BOSH는 서로 다른 운영 체제(CentOS, Ubuntu 또는 Windows) 또는 서로 다른 기본 IaaS 공급자(AWS 또는 OpenStack)를 지원하기 위해 서로 다른 스템셀만 제공합니다.

"줄기세포"라는 이름은 생물학 용어 "줄기세포"에서 유래했는데, 이것은 나중에 다양한 세포 유형으로 자랄 수 있는 분화되지 않은 세포를 의미한다.마찬가지로 BOSH 스템셀에 의해 작성된 인스턴스는 처음에 동일합니다.

시작 후 인스턴스는 다른 CPU/메모리/스토리지/네트워크로 구성되며 다른 소프트웨어 패키지로 설치됩니다.따라서 동일한 BOSH 스템셀에서 빌드된 인스턴스는 다르게 동작할 수 있습니다.

BOSH 에이전트

BOSH 에이전트는 BOSH가 배포한 모든 VM에서 실행되는 서비스입니다.다음 작업을 수행합니다.

  • VM 셋업(로컬디스크 구성, 연결된 (세컨더리)디스크 구성 및 포맷, 네트워크 구성 등)
  • ping, 작업관리 요청 등 디렉터로부터의 요청을 받아들인다.
  • 관리 작업: 시작, 중지 및 상태 모니터링

도입

BOSH 전개는 기본적으로 YAML 전개 매니페스트입니다.사용자는 사용하는 BOSH 릴리스와 BOSH 스템셀을 설명하고 동일한 인스턴스의 그룹(이력적으로는 "jobs"로 잘못 명명되어 나중에 "instance groups"로 이름이 변경됨)으로 작업을 셋업 및 구성하는 방법을 설명합니다.이러한 「인스턴스 그룹」내에서는, BOSH 는, 같은 인스턴스(VM 또는 컨테이너)를 다른 가용성 존에 분산시켜, 모든 인스턴스가 동시에 정지하는 리스크를 최소한으로 억제할 수 있습니다.는 고가용성 데이터베이스 또는 애플리케이션을 배포할 때 특히 유용합니다.

대부분의 경우 사용자는 배포 매니페스트를 하나의 큰 YAML 파일로 취급하지 않습니다.대신 배포 매니페스트가 유지보수가 용이한 작은 파일로 분할됩니다.이러한 개별 파일은 BOSH 서버에 업로드되어 전개되기 직전에 spiff 또는 spruce 등의 툴에 의해 Marge됩니다.

배포 매니페스트에서는 참조되는 모든 릴리스의 작업에 의해 선언된 모든 구성 속성을 사용자 정의할 수 있습니다.다른 작업은 공통 설정을 공유하기 위해 동일한 이름의 구성 속성을 참조할 수 있습니다.

주요 원칙

BOSH는 다음과 같은 방법으로 현대 릴리즈 엔지니어링의 4가지 원칙을 다루기 위해 의도적으로 구축되었습니다.

식별 가능성

특정 릴리스를 구성하는 모든 소스, 도구, 환경 및 기타 컴포넌트를 식별할 수 있습니다.BOSH는 "release"라는 개념에서 관련된 모든 소스 코드, 이진 자산, 구성 가능한 속성, 컴파일 스크립트 및 시작 스크립트를 패키징합니다.이를 통해 사용자는 실제로 배포된 항목과 실행 방법을 쉽게 추적할 수 있습니다.또한 BOSH는 배포된 인스턴스(VM 또는 컨테이너)의 기반이 되는 루트 파일 시스템을 "스템셀"이라고 불리는 단일 이미지로 캡처하는 방법을 제공합니다.BOSH 릴리스와 BOSH 스템셀은 UUID로 식별되며 SHA-1 체크섬으로 씰링됩니다.

재현성

운영 안정성을 보장하기 위해 소프트웨어 시스템의 소스, 서드파티 구성 요소, 데이터 및 외부 배치를 통합하는 기능.BOSH 툴 체인은 전개된 시스템을 운용하기 위한 일원화된 서버를 제공합니다.이 서버에는 소프트웨어 "릴리스", 운영 체제 이미지("줄기 셀"이라고 함), 영구 데이터 및 시스템 구성이 저장됩니다.따라서 특정 배치에서도 동일한 결과가 재현됩니다.

일관성.

소프트웨어 컴포넌트의 개발, 도입, 감사 및 설명 책임을 위한 안정된 프레임워크를 제공하는 미션.BOSH는 소프트웨어 시스템 개발과 도입을 위한 일관된 프레임워크를 제공하는 소프트웨어 "릴리스"를 통해 이러한 일관성을 달성합니다.게다가 감사와 어카운터빌리티는, BOSH 서버에 의해서 제공되고 있습니다.이것에 의해, 유저는 전개된 시스템의 변경을 표시 및 추적할 수 있습니다.

민첩성

소프트웨어 사이클의 생산성에 대한 현대의 소프트웨어 엔지니어링 프랙티스가 미치는 영향에 대한 지속적인 연구(즉, 지속적인 통합)BOSH 툴 체인은 소프트웨어 릴리스를 자동화하고 간단한 명령으로 복잡한 도입 시스템을 갱신하는 방법을 제공함으로써 소프트웨어 엔지니어링의 현재 베스트 프랙티스(연속 전송 포함)와 잘 통합됩니다.

역사

Cloud Foundry를 관리하는 데 사용할 수 있는 도구에서 발견된 결점을 해결하기 위해 설계되었습니다.셰프는 원래 사용되었지만 서버 패키지화, 스핀업/다운 기능이 제한되고 모니터링 및 자기관리 기능이 제한되었습니다.원래는 Cloud Foundry의 필요에 따라 개발되었지만, 이제는 프로젝트가 완전히 일반화되어 Hadoop, RabbitMQ, MySQL 및 유사한 플랫폼 또는 애플리케이션 소프트웨어와 같은 다른 소프트웨어의 조정에 사용할 수 있습니다.

아키텍처

BOSH 설치는 다른 VM 또는 컨테이너로 분할할 수 있는 몇 가지 개별 컴포넌트로 구성됩니다.

  • 서버의 '브레인'인 디렉터
  • Postgre로 만들어진 디렉터 데이터베이스컴파일된 패키지와 작업을 저장하기 위한 SQL 인스턴스, Redis 인스턴스 및 Blobstore
  • 인스턴스(VM 또는 컨테이너) 상태를 추적하는 상태 모니터
  • 전개된 인스턴스별로 1개씩 다수의 BOSH 에이전트
  • 디렉터, 헬스 모니터 및 배치된 모든 BOSH 에이전트를 연결하기 위한 NATS 메시지버스
  • CPI(Cloud Provider Interface)는 특정 API를 준수하는 실행 가능한 바이너리일 뿐입니다.

BOSH 관리 환경은 보통 VM에 배치된 디렉터를 중심으로 합니다.

BOSH 아키텍처[4]

클라우드/플랫폼/OS 호환성

BOSH는 CPI(Cloud Provider Interface)라는 추상화를 통해 기본 IaaS 계층에 연결합니다.Amazon Web Services, 특정 OpenStack 버전, vSphere, vCloud사용할 수 있는 CPI가 있습니다.일부 커뮤니티는 Google Compute Engine, Microsoft AzureCloudStack에 대해 CPI를 유지하고 있습니다.

도입

BOSH는 BOSH 릴리스로 배치될 수 있으며, 이것은 새로운 사람들에게 "닭이냐 달걀이냐"의 서프라이즈를 일으킬 수 있습니다.

BOSH 릴리스를 전개할 수 있는 소프트웨어는 BOSH 서버뿐만이 아닙니다.VM, Docker 컨테이너 또는 베어메탈 서버에 BOSH를 도입할 수 있는 BOSH 프로비저닝프로젝트가 있습니다.이 컴포넌트는 BOSH 패커프로비저닝자에 의해 사용됩니다.이것에 의해, 대부분의 유저가 BOSH를 학습할 때에 사용하는 BOSH-lite 를 실행하고 있는 Vagrant 박스가 작성됩니다.

거버넌스

한때 Cloud Foundry의 하위 구성요소였던 BOSH는 이제 분산 소프트웨어를 배포하는 것을 목표로 하는 별도의 오픈 소스 프로젝트입니다.BOSH는 Cloud Foundry Foundation에서 관리합니다.BOSH에 대한 거의 모든 기여는 Pivotal에 의해 이루어집니다.

사용자

Pivotal은 BOSH를 사용하여 Pivotal Cloud Foundry(PCF) 내에서 Cloud Foundry와 모든 Pivotal Data Services for Cloud Foundry를 조정합니다.BOSH와 PCF의 공개 유저에는, 악셀 스프링어, 코어 로직, IBM, 몬산토, 필립스, SAP, 스위스콤등이 있습니다.

배포

BOSH는 독립형 제품으로 상업적으로 유통되지 않습니다.Pivotal Cloud Foundry, IBM BluemixHP Helion Developer Platform의 일부로 포함되며 Cloud Credo, Stark & Wayne, Gstack 등이 상용적으로 사용하고 지원합니다.

레퍼런스

  1. ^ "Release 271.8.0". 19 April 2021. Retrieved 10 May 2021.
  2. ^ "LICENSE file". Retrieved 5 November 2019 – via GitHub.
  3. ^ "[cf-dev] Announcement: BOSH for Windows - cf-dev - Mailing-List Archives". lists.cloudfoundry.org. Archived from the original on 2016-04-25. Retrieved 2016-03-31.
  4. ^ 이미지 소스

외부 링크