**클라우드 파운드리**(Cloud Foundry)는 501(c)(6) 조직의 하나인 클라우드 파운드리 재단이 관리하는 오픈 소스, 멀티 클라우드 애플리케이션 PaaS이다.

이 소프트웨어는 본래 VM웨어에 의해 개발되었지만, 그 뒤 EMC, VM웨어, 제네럴 일렉트릭의 조인트 벤처인 피보탈 소프트웨어에 넘어갔다. 2015년 1월, 클라우드 파운드리 재단이 비영리 독립 501(c)(6) 리눅스 재단 협업 프로젝트의 하나로 설립되었다.

클라우드 파운드리 재단의 설립에 이어, 클라우드 파운드리 소프트웨어(소스 코드 및 모든 관련 상표)가 오픈 소스 소프트웨어 재단 소유로 넘어갔다. 주로 루비, Go, 자바로 작성되어 있다.

클라우드 파운드리 재단은 클라우드 파운드리 오픈 소스 프로젝트의 전 세계적인 인식 및 채택을 이끌고 기여자 공동체를 성장시키고, 프로젝트 성공을 위해 모든 멤버 기업들을 통해 전략 및 조치의 일관성을 구축하기 위해 존재한다. 이 재단의 이사회는 클라우드 파운드리 재단의 전략 감독 및 사업 관리를 맡고 있으며, 전 세계의 주도적인 기술 회사들의 비즈니스 리더들로 이루어져 있다. 2016년 6월 기준으로 이 재단에는 63명의 구성원이 있다.

이 재단은 모든 클라우드 파운드리 지적 재산을 보유하고 있는 중립 단체로서 운영된다. 지적 재산이 클라우드 파운드리에 기여되면 재단의 재산이 되며 501(c)(6) 단체를 관할하는 법에 의거하여 이 자산들은 영리를 목적으로 하는 실체에는 양도할 수 없다. 이 재단은 기여를 받은 두 종류의 재산을 보유하고 있다: 공동체의 협업 작품에 관한 상표 및 저작권.
모든 코드 기여에 대해 사용할 라이선스 및 리라이선스(re-license)가 있지만 이러한 기여에 대한 저작권을 소유하지는 않는다.

플랫폼
---

클라우드 파운드리 플랫폼은 오픈 소스 소프트웨어인 클라우드 파운드리 재단을 통해, 또는 제품이나 서비스인 여러 상업 제공업체를 통해 이용이 가능하다.

클라우드 파운드리는 오픈 소스 소프트웨어이므로 누구나 이용이 가능하다. 클라우드 파운드리는 피보탈의 다른 오픈 소스 도구인 클라우드 파운드리 BOSH 배치(deployment) 스크립트 언어를 이용하여 기반 인프라스트럭처와 상호 작용한다. 바이두 웹사이트는 OSS 클라우드 파운드리 위에 구현되어 있다

피보탈 클라우드 파운드리(PCF)라는 상용 버전은 피보탈에서 이용이 가능하다. 아마존 웹 서비스(AWS)에서 호스팅되는 피보탈 클라우드 파운드리 인스턴스인 OSS 제품 - 피보탈 웹 서비스(PWS)에 포함되지 않은 설치 및 관리를 위한 추가 도구들을 제공한다.

2015년 12월, 클라우드 파운드리 재단은 클라우드 파운드리 인증 제공자의 자격 기준을 기술한 "클라우드 파운드리 PaaS 인증 프로그램"을 발표하였다.

2016년 6월 기준으로, 인증된 제공자들의 목록은 다음을 포함한다:

* Atos Canopy
* CenturyLink App Fog
* GE Predix
* HPE Helion Stackato 4.0
* Huawei FusionStage Archived 2017년 2월 26일 - 웨이백 머신
* IBM Bluemix
* Pivotal Cloud Foundry
* SAP HANA Cloud Platform Archived 2017년 1월 29일 - 웨이백 머신
* Swisscom Application Cloud

사용법
---

클라우드 파운드리는 전 세계 조직들을 위한 선도적인 멀티 클라우드 애플리케이션 플랫폼이며 초기 개발에서부터 모든 테스트 단계, 그리고 배치(deployment)에 이르는 완전한 애플리케이션 수명 주기를 지원하기 때문에 지속적 배포에 적합하다. 클라우드 파운드리의 컨테이너 기반 아키텍처는 아마존 웹 서비스(AWS), 마이크로소프트 애저, 구글 컴퓨트 플랫폼(GCP), 오픈스택, VM웨어 vSphere, VM웨어 Photon, IBM 소프트레이어 등을 포함하는 다양한 클라우드 서비스들 위에 어떠한 언어로도 앱을 실행한다. 이 멀티 클라우드 애플리케이션은 또한 개발자들이 특정 앱 워크로드에 맞는 클라우드 플랫폼을 활용하고 필요하면 수분 안에 앱의 변경 없이 이 워크로드를 이동할 수 있게 한다.

사용자들은 보통 수명 주기 단계와 일치하는 하나 이상의 스페이스(space)에 대한 접근 권한이 있다. 이를테면 QA 테스트를 위해 준비된 애플리케이션을 프로젝트의 QA 공간에 push(배치)할 수 있다. 다른 사용자들은 각각 다른 접근 권한을 가지고 다른 스페이스에 제약을 받을 수 있다.

개발자들은 클라우드 파운드리 `cf` 명령 줄 인터페이스라는 추가 도구가 필요하다. Go로 작성되어 있다. 인스톨러는 MS 윈도우, macOS, 리눅스용으로 존재한다.

`cf` 유틸리티는 수많은 옵션들을 제공하지만 배치(deployment)의 경우 `cf push`만이 필요하다. 애플리케이션의 이름, 불러들이는 원본 장소 및 접근에 사용해야 하는 URL을 지정하는 인수를 받아들인다. 이를테면:

```
   cf push spring-music -i 2 -m 512M -n spring-music-v1 -p build/libs/spring-music.war
```

위의 명령은 자바 웹 애플리케이션 `spring-music`을 푸시한다. 2개의 인스턴스가 배치되며(이것은 자바 웹 애플리케이션이므로 기본값으로 2개의 톰캣 인스턴스이다.), 각각 512M의 메모리를 사용한다. URL은 `spring-music-v1`로 시작하며 웹 아카이브(애플리케이션)은 `build/libs/spring-music.war`에서 볼 수 있다.
모든 클라우드 파운드리 인스턴스는 하나 이상의 도메인을 관리한다. 이를테면, 모든 피보탈 웹 서비스(PWS) 애플리케이션들은 `cfapps.io` 도메인을 통해 접근되므로, 이 스프링 뮤직 애플리케이션이 PWS에 디플로이되면 URL은 `spring-music-v1.cfapps.io`가 된다.

애플리케이션이 클라우드 파운드리에 배치될 때 이미지는 이것을 위해 만들어지고 내부적으로 저장된다. 그 뒤에 이 이미지는 실행을 위해 *Warden* 컨테이너에 배치된다. 여러 개의 인스턴스의 경우, 여러 개의 이미지가 여러 개의 컨테이너 위에 시작된다. 이것이 BOSH가 있는 장소이며, 클라우드 파운드리의 내부 컨트롤러는 BOSH를 사용하여 기반 인프라스트럭처가 가상 머신을 선회하여 Warden 컨테이너를 실행시킨다. 애플리케이션이 삭제될 때 이에 속한 모든 컨테이너들은 파괴되며 이에 속한 자원은 다른 애플리케이션들이 사용할 수 있도록 free 처리된다.

애플리케이션 인스턴스에 충돌이 일어나면, 컨테이너는 kill 처리되어 새로운 Warden 컨테이너가 자동으로 시작된다. 컨테이너는 오직 하나의 응용 프로그램을 실행함으로써 격리, 보안, 회복을 보증한다.

부하 분산 라우터는 클라우드 파운드리 앞쪽에 위치함으로써 들어오는 요청을 올바른 애플리케이션으로, 즉 애플리케이션이 실행 중인 컨테이너들 가운데 한 곳으로 우회 처리시킨다.

서비스
---

클라우드 파운드리에 배치된 애플리케이션들은 2016년 12월에 런칭한 오픈 서비스 브로커 API를 통해 외부 자원에 접근한다.

플랫폼 안에서 데이터베이스, 메시징 시스템, 파일 시스템 등의 모든 외부 의존물들은 "서비스"로 간주된다. 클라우드 파운드리는 관리자들이 서비스 마켓플레이스를 만들 수 있게 하며, 여기에서 사용자들은 요청을 받으면 예비된 자원들을 준비할 수 있다. 애플리케이션이 클라우드 파운드리에 푸시(push)되면, 애플리케이션이 필요로 하는 서비스들 또한 지정될 수 있다. 이 프로세스는 환경 변수에 자격 정보를 추가한다.

소프트웨어
-----

클라우드 파운드리 개발은 클라우드 파운드리 재단에 의해 통제된다.

소스 코드는 아파치 라이선스 2.0으로 배포되며 기여는 개인 또는 회사 자격의 클라우드 파운드리 기여자들의 라이선스에 의해 관리된다.

컨테이너 기반 아키텍처로 탄생한 클라우드 파운드리는 OCI, CNI와 같은 다른 프로젝트와 표준과의 협업을 통해 컨테이너에 대한 이노베이션을 지원할 수 있으며, 플랫폼이 산업의 속도를 혁신할 수 있게 한다.

지원되는 런타임 및 프레임워크는 다음을 포함한다:

| 언어 | 런타임 | 프레임워크 |
| --- | --- | --- |
| 자바 | 자바 6, 자바 7, 자바 8 | 스프링 프레임워크 3.x, 4.x |
| 루비 | 루비 1.8, 루비 1.9, 루비 2.0, 루비 2.1, 루비 2.2, 루비 1.9.3(J루비 1.7을 통해), 루비 2.0.0(J루비 1.7을 통해), 루비 2.2.2 (J루비 9.0.0.0를 통해) | 레일즈, Sinatra |
| Node.js | V8 자바스크립트 엔진 (구글 크롬) | Node.js |
| 스칼라 | Scala 2.x | 플레이 2.x, 리프트 |
| 파이썬 | **2.7.10** *buildpack default* , 2.7.11, 3.3.5, 3.3.6, 3.4.3, 3.4.4, 3.5.0, 3.5.1 | 파이썬 |
| PHP | PHP 5.5, PHP 5.6, PHP 7.0 | PHP |
| Go | Go 1.1.1, 1.1.2, 1.2.1, 1.2.2, 1.3.2, 1.3.3, 1.4.1, 1.4.2 | Go |

일반적으로, 클라우드 파운드리는 사내에서 VM웨어의 vSphere 가상화 인프라스트럭처 위에 설치되지만, BOSH 사용 시 오픈스택으로의 배치(deployment)는 선택 사항이다.

BOSH-Lite Vagrant VM을 사용하는 클라우드 파운드리를 버추얼박스나 AWS에 설치하는 것 또한 가능하다.