2013-04-29 15 views
51

Quindi ho letto su Cloud Foundry eppure sono ancora confuso su cosa sia. Questa è comunque la mia opinione su PaaS su CF, e spero che voi ragazzi potreste dirmi se ho torto e spiegarlo un po 'meglio.Cloud Foundry ha spiegato

Un'offerta PaaS tradizionale come Microsoft Azure o Google AppEngine fornisce una piattaforma completa per sviluppare, testare, ospitare e gestire la tua app web. È comunque necessario utilizzare la loro API e sono limitati ai servizi che offrono e alle lingue/framework che supportano.

Cloud Foundry sembra essere una sorta di "middle man", per cui consente all'app di utilizzare i servizi di molti cloud pubblici. Come realizza questo? C'è una singola API che usi, qualcosa come LibCloud o JCloud? Puoi utilizzare un servizio da un fornitore e un altro servizio da un altro fornitore, ad esempio? E Cloud Foundry offre di per sé qualsiasi servizio o è semplicemente un intermediario che ti permette di migrare facilmente da una piattaforma all'altra e utilizzare diverse combinazioni di servizi di diversi fornitori in un'unica app?

risposta

73

Sono uno sviluppatore di Cloud Foundry - e sì, Cloud Foundry è davvero un po 'nebuloso (nessun gioco di parole). Spero di poter aiutare a chiarire un po 'le cose.

Cloud Foundry è un platform as a service, ma ha bisogno di un infrastructure as a service al di sotto di esso. Cloud Foundry supporta vSphere, vCloud, OpenStack e Amazon AWS come infrastruttura tramite lo strumento BOSH. La maggior parte degli sviluppatori di applicazioni web non si preoccupa di nulla di tutto ciò, ma questo è davvero interessante per le persone che devono preoccuparsi dell'infrastruttura IT di grandi dimensioni.

Supponiamo che tu sia responsabile dell'IT per AcmeCorp. Hai 50.000 dipendenti che utilizzano tutti il ​​tuo servizio web interno, Fizzbuzz, per aiutarli a svolgere il proprio lavoro. Per supportare tutti i dipendenti, sono necessarie dozzine di istanze dell'applicazione Fizzbuzz in esecuzione su diverse macchine con processori potenti e molta memoria, e hai bisogno di enormi quantità di spazio su disco per archiviare le informazioni generate dalle applicazioni Foo, Bar e Baz che usi anche internamente. Ti sei spostato ben oltre ciò che avresti dovuto gestire sui tuoi server blade, quindi decidi di noleggiare un datacenter.

Sfortunatamente, AcmeCorp è terribilmente disfunzionale. Il dipartimento delle finanze ha voce in capitolo nel datacenter che usi e ogni due anni ti fa passare da un datacenter all'altro. Ogni due anni, hai diverse settimane di inattività mentre i tuoi tecnici cercano di correggere i bug in Fizzbuzz esposti passando da vSphere, vCloud, OpenStack o altro.

Se i tecnici avevano scritto FizzBuzz, Foo, Bar e Baz contro Cloud Foundry piuttosto che direttamente contro l'infrastruttura sottostante, i tempi di fermo sarebbe stato ridotto al minimo. Non dovresti preoccuparti così tanto di essere rinchiuso in un particolare datacenter, perché quel livello di hosting è stato distratto da Cloud Foundry. Cloud Foundry supporta anche un certo insieme di servizi, tra cui PostgreSQL, MySQL, Mongo, Redis e RabbitMQ, per citarne alcuni. Se Foo, Bar e Baz utilizzano i servizi forniti da Cloud Foundry, questa è una cosa in meno di cui preoccuparsi quando si effettua la migrazione tra le infrastrutture.

Più avanti lungo la strada, ti rendi conto che puoi fare una fortuna vendendo Fizzbuzz come servizio ad altre grandi aziende. Sei davvero in forma per questo: poiché i tuoi tecnici hanno riattivato Fizzbuzz per funzionare su Cloud Foundry, puoi semplicemente distribuire Cloud Foundry ad AWS per tutto il tempo necessario. Il cliente l'ha provato per sei mesi e ha deciso di non rinnovare il servizio? Nessun problema, non devi preoccuparti dei lease del data center, basta terminare tutte le istanze EC2 e andare avanti. Puoi facilmente avere una distribuzione di Cloud Foundry per ogni istanza di Fizzbuzz come servizio in modo che i dati dei tuoi clienti siano totalmente isolati gli uni dagli altri.

La ciliegina sulla torta è che Cloud Foundry è open source. Se ritieni che non sia adatto alle tue esigenze, non devi semplicemente inviare il supporto via e-mail e aspettare che gli ingegneri di Cloud Foundry implementino la funzione dei tuoi sogni - anche tu hai la fonte, quindi puoi fare qualsiasi cambiamento tu abbia bisogno. Ed è disponibile sotto the Apache 2.0 license, quindi le richieste pull sono accettate volentieri, anche se non richieste.

Spero che dipinga un'immagine dei tipi di problemi risolti da Cloud Foundry. Sentiti libero di chiedere maggiori dettagli in un commento, oppure puoi dare un'occhiata allo Cloud Foundry mailing list se questo ha più senso per le domande future.

+0

E ciò che è ancora sfocato è il prezzo? Lo stack cf è gratuito e cosa stai pagando? C'è qualche presa? :) – Tomo

+0

Mark, ottime informazioni. Cosa accadrebbe se AcmeCorp distribuisse costantemente nuove istanze di Fizzbuzz on-premise, ognuna con una configurazione leggermente diversa per la memorizzazione nella cache, la messaggistica, la registrazione, le connessioni di database, le variabili di ambiente, ecc. Queste configurazioni possono essere parametrizzate ed esposte in una console self-service in CloudFoundry, che consente ai team di sviluppo di fornire e distribuire nuove istanze di Fizzbuzz come preferiscono? – raffian

+0

ben scritto ... – underdog

20

Sono uno sviluppatore avvocato per Cloud Foundry e voglio aggiungere un po 'alla risposta di Mark per concentrarsi su alcuni degli altri dettagli che hai menzionato nella tua domanda originale.

In primo luogo, si menziona GAE e Azure. Entrambi hanno alcune limitazioni: il GAE limita l'utente a lingue e API specifiche, ad esempio. Né sono Open Source. CF è estensibile (la nuova versione ha il supporto per buildpack, ad esempio, consentendo di scegliere "qualsiasi" linguaggio runtime), e si può scegliere di eseguirlo dove si desidera.

Mark cita 4 fornitori IaaS su cui possiamo eseguire CF oggi, ma supponendo che gli IaaS in questione (diciamo che includiamo Azure, CloudStack, Google Compute Engine ecc. Come obiettivi futuri) possono supportare un piccolo numero di ciò che chiamiamo Cloud Provider Interfaces (CPI) quindi è possibile distribuire Cloud Foundry anche su tali infrastrutture.

Chiedi come è possibile utilizzare i servizi di diversi provider. Come Heroku, la prossima versione di Cloud Foundry (.com) supporterà un "marketplace" in cui è possibile integrare le funzioni di altri fornitori e, se si sta utilizzando la propria istanza Cloud Foundry, è possibile scegliere quali servizi distribuire e connettere alle app. .

È fantastico :-) vieni a parlare con noi sulla mailing list se vuoi saperne di più!

+0

Grazie per aver riempito gli spazi bianchi della mia risposta, Andy! –

+0

Grazie a tutti e due ragazzi, Mark e Andy! Ho ancora una domanda riguardo alle API. Esiste una specie di API generica fornita da Cloud Foundry che consente alla mia app di essere generica, nel senso che il mio codice funzionerà con qualsiasi offerta IaaS che scelgo? Oh, mentre ci sono, ci sono tutorial sul codice che possono mostrarmi come iniziare? – Amoeba

+0

Non c'è "Cloud Foundry API" di cui devi preoccuparti. Se hai ragione su un'app di node.js, Grails, Ruby, ecc., Allora dovresti essere in grado di inviarlo a CF senza modifiche speciali al codice. Sui tutorial, puoi dare un'occhiata a docs.cloudfoundry.com –

6

vorrebbe aggiungere questo come commento alle API alla risposta di Andy ma sfortunatamente non ha abbastanza reputazione per farlo. Per quanto ne so, Cloud Foundry non ha realmente API specifiche, ma fornisce molte informazioni utili tramite variabili di ambiente (ad esempio VCAP_SERVICES, VCAP_APPLICATION, VCAP_CONSOLE_IP, VCAP_APP_PORT), a cui è possibile accedere da qualsiasi linguaggio o framework. Mentre molte informazioni da tali variabili sono interne a Cloud Foundry, alcune potrebbero essere abbastanza utili. Il principale è VCAP_SERVICES che fornisce informazioni sui servizi, che sono associati alla tua app.

Per esempio, se mi piacerebbe raccogliere informazioni su istanza Azure Cloud Service (per esempio, la sua identità), su cui la mia app è attualmente in esecuzione, vorrei utilizzare this classe da Azure Management Library.

A sua volta Cloud Foundry fornisce VCAP_APPLICATION env. variabile, che conterrà seguenti campi:

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

E, per concludere, due parole su tronchi, il monitoraggio e la diagnostica. Questo non è attualmente implementato a livello di CF PaaS, tuttavia spero che questo sia implementato (dato che è una funzionalità davvero utile) e forse qualche nuovo env. le variabili (ad esempio VCAP_LOGS, VCAP_PERFORMANCE_COUNTERS) saranno esposte alle nostre app.

+1

Se non si è in grado di postare commenti, non utilizzare le risposte come un'opzione diversa. Tuttavia ritengo che questo sia legittimo in quanto stai migliorando la risposta. Suggerirei in futuro piuttosto che fare una nuova risposta, suggerire una modifica alla risposta esistente. –

+0

"Per quanto comprendo che Cloud Foundry non ha realmente API specifiche" - in effetti lo fa, l'API di Cloud Controller (documentata qui http://docs.cloudfoundry.com/docs/reference/cc-api.html). "poche parole sui log, sul monitoraggio e sulla diagnostica, che al momento non sono implementati a livello di CF PaaS" - queste funzionalità sono state aggiunte tramite Loggregator, che è in fase di sviluppo. –

+1

Bene, come ho capito l'API menzionata in questione non era l'API di gestione PaaS (che, per causa, è implementata in CF e descritta nel link fornito da Andy), ma l'API dal punto di vista dell'applicazione distribuito (l'API che potrebbe essere chiamato dall'app distribuita). Non esiste una tale API di applicazione (in pratica, come ho capito, perché esiste un supporto per una quantità enorme di framework). Perfavore, correggimi se sbaglio. –

2

Certamente CF è un livello di astrazione tra le IaaS (server, storage e networking) e l'applicazione, dando la portabilità di spostare la vostra applicazione tra cloud pubblici e privati, ma è anche molto di più:

1 .Una piattaforma basata su container altamente scalabile orizzontalmente

Le app vengono eseguite in contenitori che consentono una migliore gestione delle risorse rispetto all'assegnazione di app agli host (VM). Warden/Garden è la tecnologia container nativa di CF sebbene Docker sia supportato anche nelle versioni recenti.

2. Una piattaforma di auto-guarigione che fornisce più livelli di HA alla vostra applicazione

sistema di gestione della salute resuscita fallita casi app, padroni di casa del contenitore, i processi della piattaforma, e le macchine virtuali, senza alcuna interruzione. Il supporto delle zone di disponibilità fornisce HA a livello di infrastruttura. Gli aggiornamenti continui e gli implementamenti in canary consentono di ridurre i tempi di fermo anche durante le implementazioni o gli aggiornamenti della piattaforma.

3. An, applicazione poliglotta supponente runtime

Utilizzando la Heroku "buildpack" costruire, lingua app è rilevato automaticamente e pila di esecuzione appropriata è costruito sulla cima di immagine del sistema operativo una vaniglia, permettendo gli sviluppatori si concentrano sulla scrittura del codice.

4. Developer provisioning on-demand di servizi dati stateful

sviluppatori possono auto-disposizione una fetta di MySQL, RabbitMQ, Redis, ecc cluster con Uri/credenziali iniettato automaticamente nell'ambiente della loro app.

Problemi correlati