2013-04-29 39 views
51

Tak więc czytałem w Cloud Foundry, a mimo to wciąż nie rozumiem, co to jest. Oto moje zdanie na temat PaaS na temat CF i mam nadzieję, że możecie mi powiedzieć, czy się mylę i wyjaśnić to nieco lepiej.Cloud Foundry wyjaśnił

Tradycyjna oferta PaaS, taka jak Microsoft Azure lub Google AppEngine, zapewnia pełną platformę do opracowywania, testowania, hostowania i zarządzania aplikacją internetową. Musisz jednak korzystać z interfejsu API i ograniczać się do usług, które oferuje, oraz języków/struktur, które obsługują.

Cloud Foundry wydaje się być pewnego rodzaju "pośrednikiem", dzięki czemu pozwala aplikacji korzystać z usług wielu publicznych chmur. Jak to osiąga? Czy istnieje jeden API, którego używasz, coś jak LibCloud lub JCloud? Czy możesz użyć jednej usługi od jednego dostawcy i innej usługi od innego dostawcy? Czy sama usługa Cloud Foundry oferuje jakiekolwiek usługi, czy może jest to tylko pośrednik, który umożliwia łatwą migrację z jednej platformy do drugiej i korzystanie z różnych kombinacji usług różnych dostawców w jednej aplikacji?

Odpowiedz

73

Jestem programistą w Cloud Foundry - i tak, Cloud Foundry jest rzeczywiście nieco mglisty (gra słów nie jest przeznaczona). Mam nadzieję, że pomogę trochę wyjaśnić.

Odlewnia w chmurze to platform as a service, ale pod nią musi być infrastructure as a service. Cloud Foundry obsługuje vSphere, vCloud, OpenStack i Amazon AWS jako infrastrukturę za pomocą narzędzia BOSH. Większość programistów aplikacji internetowych nie dba o to, ale jest to naprawdę fajne dla ludzi, którzy muszą martwić się o dużą infrastrukturę IT.

Załóżmy, że jesteś odpowiedzialny za IT dla AcmeCorp. Masz 50 000 pracowników, którzy korzystają z wewnętrznego serwisu internetowego Fizzbuzz, aby pomóc im w wykonywaniu swoich zadań. Aby obsługiwać wszystkich pracowników, potrzebujesz dziesiątek instancji aplikacji Fizzbuzz działających na kilku komputerach z wydajnymi procesorami i dużą ilością pamięci, a do przechowywania informacji generowanych przez aplikacje Foo, Bar i Baz potrzebne są ogromne ilości miejsca na dysku również wewnętrznie. Przeniosłeś się znacznie poza to, co chciałbyś zarządzać na własnych serwerach kasetowych, więc zdecydujesz się wydzierżawić centrum danych.

Niestety, AcmeCorp jest strasznie dysfunkcjonalny. Dział finansowy ma ogromny wpływ na to, z jakiego centrum danych korzystasz, a co kilka lat sprawiają, że przełączasz się z jednego centrum danych do drugiego. Co kilka lat masz kilka tygodni przestojów, podczas gdy twoi inżynierowie próbują naprawić błędy w Fizzbuzz ujawnione przez przełączanie między vSphere, vCloud, OpenStack lub cokolwiek innego.

Jeśli twoi inżynierowie napisali Fizzbuzz, Foo, Bar i Baz przeciwko Cloud Foundry, a nie bezpośrednio przeciwko bazowej infrastrukturze, Twój czas przestoju zostałby zminimalizowany. Nie musiałbyś się tak martwić o to, że jesteś zamknięty w konkretnym centrum danych, ponieważ ta warstwa hostingu została usunięta przez Cloud Foundry. Cloud Foundry obsługuje również pewien zestaw usług, w tym PostgreSQL, MySQL, Mongo, Redis i RabbitMQ, aby wymienić niektóre. Jeśli Foo, Bar i Baz korzystają z usług świadczonych przez Cloud Foundry, nie musisz martwić się o migrację między infrastrukturami.

Później, zdajesz sobie sprawę, że możesz zarobić fortunę sprzedając Fizzbuzz jako usługę dla innych dużych firm. Jesteś w naprawdę dobrej formie: ponieważ twoi inżynierowie ponownie przeprowadzili reorganizację Fizzbuzz, aby działał w Cloud Foundry, możesz po prostu wdrożyć Cloud Foundry w AWS tak długo, jak będzie to potrzebne. Klient wypróbował go przez sześć miesięcy i zdecydował się nie przedłużać usługi? Nie ma problemu, nie musisz martwić się o dzierżawę centrum danych - po prostu zakończ wszystkie instancje EC2 i przejdź dalej. Możesz łatwo wdrożyć jedną usługę Cloud Foundry dla każdej instancji Fizzbuzz jako usługi, aby dane Twoich klientów były całkowicie odizolowane od siebie.

Wisienką na torcie jest to, że Cloud Foundry jest open source. Jeśli okaże się, że nie jest on odpowiedni do Twoich potrzeb, nie musisz po prostu wysyłać wiadomości e-mail do pomocy technicznej i czekać na inżynierów Cloud Foundry, aby zaimplementować swoją wymarzoną funkcję - masz też źródło, dzięki czemu możesz zrobić wszelkie potrzebne zmiany. Jest dostępny pod numerem the Apache 2.0 license, więc prośby o ściągnięcie są chętnie akceptowane, ale nie są wymagane.

Mam nadzieję, że to obraz problemów, które rozwiązuje Cloud Foundry. Możesz poprosić o więcej informacji w komentarzu, lub sprawdzić numer Cloud Foundry mailing list, jeśli ma to sens w przypadku przyszłych pytań.

+0

A co jest nadal niewyraźne, to wycena? Czy cf stack jest bezpłatny, a co płacisz? Czy jest jakiś haczyk? :) – Tomo

+0

Znak, świetne informacje. Co się stanie, jeśli AcmeCorp nieustannie wdraża nowe instancje Fizzbuzz na miejscu, z których każda ma nieco inną konfigurację do buforowania, przesyłania komunikatów, rejestrowania, połączeń z bazami danych, zmiennych środowiskowych itp., Czy te konfiguracje można sparametryzować i wyświetlić w konsoli samoobsługowej w CloudFoundry, umożliwiając zespołom programistycznym dostarczanie i wdrażanie nowych instancji Fizzbuzz według własnego uznania? – raffian

+0

dobrze napisane ... – underdog

20

Jestem rzecznikiem programistycznym odlewni chmur i chcę dodać trochę do odpowiedzi Marka, aby skupić się na kilku innych szczegółach wymienionych w oryginalnym pytaniu.

Po pierwsze wspominasz GAE i Azure. Oba mają pewne ograniczenia - na przykład GAE ogranicza się do określonych języków i interfejsów API. Nie ma również Open Source. CF jest rozszerzalny (nowa wersja ma na przykład wsparcie dla buildpack, umożliwiając wybór "dowolnego" środowiska uruchomieniowego języka) i można go uruchomić w dowolnym miejscu.

Mark wspomina o czterech dostawcach IaaS, dla których możemy dziś uruchomić system CF, ale zakładając, że omawiany IaaS (załóżmy, że obejmujemy Azure, CloudStack, Google Compute Engine itp. Jako przyszłe cele) może obsługiwać niewielką liczbę tego, co nazywamy chmurą Interfejsy dostawcy (CPI), możesz następnie wdrożyć Cloud Foundry również na tych infrastrukturach.

Pytasz, jak można korzystać z usług różnych dostawców. Podobnie jak Heroku, nadchodząca wersja Cloud Foundry (.com) będzie obsługiwać "rynek", w którym można dodawać funkcje od dodatkowych dostawców, a jeśli korzystasz z własnej instancji Cloud Foundry, możesz wybrać usługi do wdrożenia i połączenia z aplikacjami .

To całkiem fajne :-) przyjdź porozmawiać z nami na liście mailingowej, jeśli chcesz dowiedzieć się więcej!

+0

Dzięki za wypełnienie pustych miejsc z mojej odpowiedzi, Andy! –

+0

Dziękuję wam, Mark i Andy! Nadal mam jednak pytanie dotyczące interfejsów API. Czy istnieje jakiś ogólny interfejs API, który zapewnia Cloud Foundry, który pozwala mojej aplikacji być ogólną, w tym sensie, że mój kod będzie działał z wybraną przeze mnie ofertą IaaS? Och, kiedy jestem w tym, czy są jakieś tutoriale kodu, które mogą mi pokazać, jak zacząć? – Amoeba

+0

Nie ma "API Cloud Foundry", o który musisz się martwić. Jeśli masz prawo martwego standardowego pliku node.js, Grails, Ruby, etc, powinieneś być w stanie po prostu wcisnąć go do CF bez specjalnych zmian kodu. W samouczkach możesz zapoznać się z docs.cloudfoundry.com –

6

Chciałbym dodać to jako komentarz dotyczący API do odpowiedzi Andy'ego, ale niestety nie mam wystarczająco dobrej reputacji, aby to zrobić. O ile rozumiem, Cloud Foundry naprawdę nie ma określonego API, ale dostarcza wiele użytecznych informacji za pośrednictwem zmiennych środowiskowych (np. VCAP_SERVICES, VCAP_APPLICATION, VCAP_CONSOLE_IP, VCAP_APP_PORT), do których można uzyskać dostęp z dowolnego języka lub frameworka. Podczas gdy wiele informacji z takich zmiennych jest wewnętrznych dla Cloud Foundry, niektóre z nich mogą być całkiem przydatne. Głównym z nich jest VCAP_SERVICES, który dostarcza informacji o usługach związanych z Twoją aplikacją.

Na przykład, jeśli chciałbym zebrać informacje o instancji usługi w chmurze Azure (powiedzmy jej identyfikatorze), na której moja aplikacja jest obecnie uruchomiona, chciałbym użyć klasy this z Azure Management Library.

Z kolei Cloud Foundry zapewnia VCAP_APPLICATION env. zmienna, która będzie zawierać następujące pola:

{"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} 

I na koniec kilka słów na temat logów, monitorowania i diagnostyki. Obecnie nie jest to realizowane na poziomie CF PaaS, jednak mam nadzieję, że zostanie to zaimplementowane (ponieważ jest to naprawdę przydatna funkcja) i może trochę nowego środowiska. zmienne (na przykład VCAP_LOGS, VCAP_PERFORMANCE_COUNTERS) będą narażone na działanie naszych aplikacji.

+1

Jeśli nie możesz publikować komentarzy, nie powinieneś używać odpowiedzi jako innej opcji. Uważam jednak, że jest to uzasadnione, ponieważ poprawiasz odpowiedź. Sugerowałbym raczej w przyszłości niż nową odpowiedź, sugerując zmianę istniejącej odpowiedzi. –

+0

"O ile rozumiem, Cloud Foundry naprawdę nie ma specyficznego API" - tak naprawdę działa Cloud Controller API (udokumentowane tutaj http://docs.cloudfoundry.com/docs/reference/cc-api.html). "kilka słów na temat logów, monitorowania i diagnostyki. Obecnie nie jest to realizowane na poziomie CF PaaS" - te funkcje są dodawane za pomocą Loggregatora, który jest w fazie rozwoju. –

+1

No cóż, rozumiem, że wspomniany API nie był API zarządzania PaaS (który, z przyczyn, jest zaimplementowany w CF i opisany w podanym przez Andy linkie), ale API z punktu widzenia wdrożonej aplikacji (API, które może zostać wywołana przez wdrożoną aplikację). Nie ma takiego API aplikacji (w zasadzie, jak rozumiem, ponieważ istnieje wsparcie dla ogromnej ilości frameworków). Proszę, popraw mnie jeśli się mylę. –

2

pewnością CF jest warstwą abstrakcji między IaaS (serwerów, pamięci masowej i sieci) i aplikacji, co daje możliwość przenoszenia przenieść aplikację wśród chmur publicznych i prywatnych, ale jest też dużo więcej:

1 .Wysoce poziomo skalowalna platforma kontenerowa

Aplikacje działają w kontenerach pozwalających na lepsze zarządzanie zasobami niż przypisywanie aplikacji do hostów (VM). Warden/Garden jest rodzimą technologią kontenerową CF, chociaż Docker jest również obsługiwany w najnowszych wersjach.

2. Platforma samoleczenia zapewnienie wielu warstw HA do aplikacji

system zarządzania Zdrowie wskrzesza udało instancji aplikacji, gospodarze kontenerów, procesy platformy, a maszyny wirtualne, bez przerwy. Obsługa stref dostępności zapewnia HA w warstwie infrastruktury. Aktualizacje na bieżąco i wdrożenia kanarek pozwalają na zerowe przestoje, nawet podczas wdrożeń lub aktualizacji platform.

3. uparty, aplikacja poliglota Runtime

Używanie Heroku „buildpack” skonstruować, app język jest wykrywane automatycznie i odpowiedni stos Runtime jest zbudowany na szczycie OS waniliowym obrazu, umożliwiając programistów, aby skupić się na pisaniu kodu.

4. Twórca rezerw na żądanie stanowych usług danych

Programiści mogą we własnym zakresie plasterek MySQL, RabbitMQ, Redis itp klastra z URI/poświadczeń automatycznie wstrzykuje się do ich środowiska aplikacji.