Ci sono una serie di cose che vanno nel termine "sviluppo del cloud". Mi sto concentrando su AWS perché è la piattaforma che conosco, ma dovrebbe essere generalizzabile. Includo la terminologia di AWS per darti da qualche parte la ricerca. Ci sono tre cose che AWS o altri fornitori di cloud possono fornire:
Infrastruttura come servizio (IaaS):
Qui il fornitore di servizi cloud sta vendendo macchine semplici e grossolane (quasi sempre macchine virtuali). Essenzialmente questo è un rimpiazzo per il server on-premise: invece di acquistare una macchina fisica con così tanta memoria / CPU / ecc. E installare un SO, il fornitore ti vende una "VM" (in AWS: un'istanza EC2) con così tanta capacità (in AWS: un tipo di istanza) che viene pre-caricato con un sistema operativo e forse un po 'di software (in AWS: un AMI). Inserisco "VM" tra virgolette perché la relazione tra un'istanza e qualsiasi macchina fisica può essere alquanto sdrucciolevole, ma dal punto di vista dell'utente le istanze sono essenzialmente in esecuzione su VM in alcuni datacenter a cui è possibile accedere tramite Internet. Sfruttando queste offerte di un fornitore di servizi cloud è possibile ridurre il mal di testa per assicurarsi che l'applicazione abbia un posto dove girare.
Al livello di base dello sviluppo del cloud, stai facendo esattamente quello che hai fatto con le tradizionali applicazioni on-premise eccetto che i tuoi server non sono macchine fisiche ma istanze in esecuzione in alcuni data center. Ad un livello più avanzato, hai iniziato a sfruttare i vantaggi esclusivi di queste istanze (ovvero: sono facili da installare e la creazione di una nuova istanza può essere automatizzata, vedi AWS Cloud Scaling) per distribuire le tue applicazioni in modo distribuito tra le istanze. Questo può comprarti la disponibilità (se una delle tue istanze muore, può essere sostituita) e la scalabilità (se hai bisogno di prestazioni migliori, puoi sempre aggiungere più istanze).
Piattaforma come servizio (PaaS):
A questo livello, il cloud provider sta vendendo non solo "macchine" ma anche parti importanti della tua architettura come database e storage in un modo completamente gestito e astratto ulteriormente dalla nozione di macchine virtuali in esecuzione su macchine. Ad esempio, RDS di AWS è un RDMS gestito che astrae tutti i dettagli di mantenimento, ad esempio, di SQL Server su un'istanza (patch del sistema operativo, aggiornamenti software, backup, replica, condivisione). O S3 incapsulerà un'istanza (s) che agisce come un server di storage blob. A questo punto il cloud provider non solo fornisce l'applicazione da qualche parte per l'esecuzione, ma fornisce anche parti di base dell'applicazione in un modo che consente di risparmiare tempo e fornisce più facilmente le grandi parole di visualizzazione dello sviluppo del cloud: disponibilità e scalabilità.
Nella parte più profonda di questo pool, stai scrivendo architetture serverless usando tecnologia come AWS Lambda e hai più o meno completamente estratto il fatto che ci sono macchine reali che eseguono la tua applicazione.
Software as a Service (SaaS):
Di solito ciò che gli sviluppatori di cloud stanno lavorando: stanno sviluppando software (editing di immagini, email, qualunque) che dal punto di vista dell'utente è astratto da qualsiasi macchina (e in particolare non richiede altro che un thin client da usare, che a sua volta è solitamente un blob di javascript scaricato quando si visita un sito Web). Vale la pena notare che i fornitori di servizi cloud possono anche intervenire in questo spazio: AWS ha WorkMail o Elastic Transcoder che sono saldamente SaaS.
Quando stai facendo lo sviluppo del cloud
Affermare quasi una tautologia: lo sviluppo del cloud si sta sviluppando con la tecnologia cloud, il che significa sfruttare almeno una di quelle tecnologie * aaS. Nella mia mente lo sviluppo del cloud è molto più relativo a quello che usi di quello che offri. Pertanto, se si dispone di un'applicazione Web SaaS, ma si possiedono e gestiscono tutti i data center e la piattaforma su cui viene eseguita l'applicazione, si è più un fornitore cloud che un vero sviluppatore cloud (ovviamente a questo punto si è entrambi). Quindi nella mia mente 3 è una specie di tratto distintivo dello sviluppo del cloud e offre il massimo delle promesse: essere in grado di scrivere applicazioni con caratteristiche interessanti (disponibilità, scalabilità, ecc.) A costi operativi inferiori. A 2 probabilmente stai facendo lo sviluppo del cloud e 1 è così nebuloso che potrebbe essere qualsiasi cosa.
Per concludere, possiamo avere un questionario rapido e sporco per il tipo di sviluppo che stai facendo:
D: Puoi dirmi esattamente dove si trovano le macchine che eseguono la tua applicazione?
- Nessuna idea - > nei locali
- Alcuni di loro - > ibrido
- Tutti loro - > su premessa