developer tip

Cloud Foundry 설명

copycodes 2020. 12. 4. 19:15
반응형

Cloud Foundry 설명


그래서 저는 Cloud Foundry에 대해 읽었지만 그것이 무엇인지 여전히 혼란 스럽습니다. 어쨌든 CF의 PaaS에 대한 나의 견해는 여기에 있습니다. 그리고 여러분이 제가 틀렸는 지 말해주고 조금 더 잘 설명해 주실 수 있기를 바랍니다.

Microsoft Azure 또는 Google AppEngine과 같은 기존 PaaS 제품은 웹 앱을 개발, 테스트, 호스팅 및 관리 할 수있는 완전한 플랫폼을 제공합니다. 그러나 API를 사용해야하며 제공하는 서비스와 지원하는 언어 / 프레임 워크로 제한됩니다.

Cloud Foundry는 일종의 "중간자"인 것처럼 보이므로 앱에서 많은 공용 클라우드의 서비스를 사용할 수 있습니다. 어떻게 이것을 달성합니까? LibCloud 또는 JCloud와 같이 사용하는 단일 API가 있습니까? 예를 들어 한 공급자의 서비스 하나와 다른 공급자의 다른 서비스를 사용할 수 있습니까? 그리고 Cloud Foundry 자체가 서비스를 제공합니까, 아니면 단순히 한 플랫폼에서 다른 플랫폼으로 쉽게 마이그레이션하고 단일 앱에서 다른 공급자의 다양한 서비스 조합을 사용할 수 있도록하는 중개자입니까?


저는 Cloud Foundry의 개발자이며 예, Cloud Foundry는 실제로 약간 모호합니다 (말장난이 아닙니다). 좀 더 명확하게 설명 할 수 있기를 바랍니다.

Cloud Foundry는 서비스로서의 플랫폼 이지만 그 아래 에 서비스로서의 인프라가 필요 합니다. Cloud Foundry는 BOSH 도구를 통해 vSphere , vCloud , OpenStackAmazon AWS 를 인프라로 지원합니다 . 대부분의 웹 애플리케이션 개발자는 그 어느 것도 신경 쓰지 않지만 대규모 IT 인프라에 대해 걱정해야하는 사람들에게는 정말 좋습니다.

AcmeCorp의 IT를 담당하고 있다고 가정 해 보겠습니다. 50,000 명의 직원이 모두 내부 웹 서비스 인 Fizzbuzz를 사용하여 업무 수행을 돕고 있습니다. 모든 직원을 지원하려면 강력한 프로세서와 많은 메모리를 갖춘 여러 컴퓨터에서 실행되는 Fizzbuzz 애플리케이션의 수십 개의 인스턴스가 필요하며, 사용하는 Foo, Bar 및 Baz 애플리케이션에서 생성 된 정보를 저장하려면 엄청난 양의 디스크 공간이 필요합니다. 내부적으로도. 자신의 블레이드 서버에서 관리하려는 것 이상으로 이동했기 때문에 데이터 센터를 임대하기로 결정했습니다.

불행히도 AcmeCorp는 끔찍하게 작동하지 않습니다. 재무 부서는 귀하가 사용하는 데이터 센터에 대해 큰 발언권을 갖고 있으며, 2 년마다 한 데이터 센터에서 다른 데이터 센터로 전환합니다. 엔지니어가 vSphere, vCloud, OpenStack 등을 전환하여 노출 된 Fizzbuzz의 버그를 수정하는 동안 2 년마다 몇 주 동안 다운 타임이 발생합니다.

엔지니어가 기본 인프라에 직접 대하지 않고 Cloud Foundry에 대해 Fizzbuzz, Foo, Bar 및 Baz를 작성했다면 다운 타임이 최소화되었을 것입니다. Cloud Foundry가 호스팅 계층을 추상화했기 때문에 특정 데이터 센터에 갇히는 것에 대해별로 걱정할 필요가 없습니다. Cloud Foundry는 PostgreSQL, MySQL, Mongo, Redis 및 RabbitMQ를 비롯한 특정 서비스 세트도 지원합니다. Foo, Bar 및 Baz가 Cloud Foundry에서 제공하는 서비스를 사용하는 경우 인프라간에 마이그레이션 할 때 걱정할 필요가 없습니다.

나중에 다른 대기업에 서비스로 Fizzbuzz를 판매하여 돈을 벌 수 있다는 것을 알게됩니다. 엔지니어가 Fizzbuzz를 Cloud Foundry에서 실행하도록 재 설계했기 때문에 필요한만큼 AWS에 Cloud Foundry를 배포 할 수 있습니다. 고객이 6 개월 동안 사용해 보았지만 서비스를 갱신하지 않기로 결정 했습니까? 문제 없습니다. 걱정할 데이터 센터 임대가 없습니다. 모든 EC2 인스턴스를 종료하고 계속 진행하면됩니다. 고객의 데이터가 서로 완전히 격리되도록 Fizzbuzz의 각 인스턴스에 대해 Cloud Foundry를 하나의 서비스로 쉽게 배포 할 수 있습니다.

핵심은 Cloud Foundry가 오픈 소스라는 것입니다. 귀하의 요구에 적합하지 않다고 판단되면 지원팀에 이메일을 보내고 Cloud Foundry 엔지니어가 귀하의 꿈의 기능을 구현할 때까지 기다릴 필요가 없습니다. 소스도 있으므로 다음과 같이 할 수 있습니다. 필요한 모든 변경. 그리고 Apache 2.0 라이선스 하에서 사용할 수 있으므로 풀 요청은 필수는 아니지만 기꺼이 수락됩니다.

Cloud Foundry가 해결하는 문제의 종류에 대한 그림이 그려 졌으면합니다. 의견을 통해 자세한 내용을 물어 보거나 향후 질문에 더 적합한 경우 Cloud Foundry 메일 링 목록을 확인할 수 있습니다 .


저는 Cloud Foundry의 개발자 옹호자이며 Mark의 답변에 약간을 추가하여 원래 질문에서 언급 한 다른 세부 사항에 초점을 맞추고 싶습니다.

먼저 GAE와 Azure를 언급합니다. 둘 다 특정 제한이 있습니다. 예를 들어 GAE는 특정 언어 및 API로 제한합니다. 오픈 소스도 아닙니다. CF는 확장 가능하며 (예를 들어 새 버전에는 "모든"언어 런타임을 선택할 수있는 빌드 팩 지원이 있음) 원하는 곳에서 실행하도록 선택할 수 있습니다.

Mark는 현재 CF를 실행할 수있는 4 개의 IaaS 공급자를 언급하지만 문제의 IaaS (향후 대상으로 Azure, CloudStack, Google Compute Engine 등을 포함한다고 가정 해 보겠습니다)가 CPI (클라우드 공급자 인터페이스)라고 부르는 소수를 지원할 수 있다고 가정합니다. ) 그런 다음 해당 인프라에도 Cloud Foundry를 배포 할 수 있습니다.

다른 제공자의 서비스를 어떻게 사용할 수 있는지 물어 봅니다. Heroku와 마찬가지로 Cloud Foundry (.com)의 향후 버전은 추가 공급 업체의 기능을 플러그인 할 수있는 "마켓 플레이스"를 지원하며, 자체 Cloud Foundry 인스턴스를 실행하는 경우 배포하고 앱에 연결할 서비스를 선택할 수 있습니다. .

꽤 멋지다 :-) 더 많은 것을 알고 싶다면 메일 링리스트에서 우리에게 말 해주세요!


Andy의 답변에 대한 API에 대한 의견으로 이것을 추가하고 싶지만 불행히도 그렇게 할 충분한 평판이 없습니다. 내가 이해하는 한 Cloud Foundry에는 실제로 특정 API가 없지만 VCAP_SERVICES, VCAP_APPLICATION, VCAP_CONSOLE_IP, VCAP_APP_PORT모든 언어 또는 프레임 워크에서 액세스 할 수있는 환경 변수 (예 :)를 통해 많은 유용한 정보를 제공합니다 . 이러한 변수의 많은 정보는 Cloud Foundry 내부에 있지만 일부는 매우 유용 할 수 있습니다. 가장 중요한 것은 VCAP_SERVICES앱에 바인딩 된 서비스에 대한 정보를 제공하는 것입니다.

예를 들어 현재 내 앱이 실행중인 Azure 클라우드 서비스 인스턴스 (예 : 해당 ID)에 대한 정보를 수집하려면 Azure 관리 라이브러리 에서이 클래스를 사용 합니다 .

차례로 Cloud Foundry는 VCAP_APPLICATION env를 제공합니다. 다음 필드를 포함하는 변수 :

{"application_users": [],
"instance_id":"97467a9cf508cb75273284b948b6319b",
"instance_index":1,
"application_version":"330b7caf-50e5-48f4-8792-1c80a90b06f1",
"application_name":"helloworld",
"application_uris":["helloworld.vcap.me"],
"started_at":"2013-07-22 10:58:16 +0300",
"started_at_timestamp":1374479896,
"host":"0.0.0.0",
"port":61014,
"limits":{"mem":256,"disk":1024,"fds":16384},
"version":"330b7caf-50e5-48f4-8792-1c80a90b06f1",
"name":"helloworld",
"uris":["helloworld.vcap.me"],
"users":[],
"start":"2013-07-22 10:58:16 +0300",
"state_timestamp":1374479896}

마지막으로 로그, 모니터링 및 진단에 대한 몇 마디입니다. 이것은 현재 CF PaaS 수준에서 구현되지 않지만 (정말 유용한 기능이므로) 구현되기를 바랍니다. 변수 (예 VCAP_LOGS, VCAP_PERFORMANCE_COUNTERS:)가 앱에 노출됩니다.


확실히 CF는 IaaS (서버, 스토리지 및 네트워킹)와 애플리케이션 간의 추상화 계층으로, 퍼블릭 및 프라이빗 클라우드간에 앱을 이동할 수있는 이식성을 제공하지만 그 이상의 기능을 제공합니다.

1. 수평 적으로 확장 가능한 컨테이너 기반 플랫폼

앱은 호스트 (VM)에 앱을 할당하는 것보다 더 나은 리소스 관리를 허용하는 컨테이너에서 실행됩니다. Warden / Garden은 CF 네이티브 컨테이너 기술이지만 Docker는 최신 버전에서도 지원됩니다.

2. A self-healing platform providing multiple layers of HA to your application

Health management system resurrects failed app instances, container hosts, platform processes, and VMs, with no outage. Availability zone support provides HA at the infrastructure layer. Rolling updates and canary deploys allow for zero down-time even during deployments or platform upgrades.

3. An opinionated, polyglot application run-time

Using the heroku "buildpack" construct, app language is auto-detected and the appropriate runtime stack is built on top of a vanilla OS image, allowing developers to focus on writing code.

4. Developer on-demand provisioning of stateful data services

Developers can self-provision a slice of a MySQL, RabbitMQ, Redis, etc. cluster with uri/credentials automatically injected into their app's environment.

참고URL : https://stackoverflow.com/questions/16280933/cloud-foundry-explained

반응형