State per iniziare un nuovo progetto o forse state per sviluppare alcune nuove funzionalità? Prima di intraprendere qualsiasi azione, vale la pena di informarsi il più possibile sui vari strumenti esterni che possono essere utili per voi.
Due servizi AWS di base e probabilmente i più popolari sono EC2 e S3. In poche parole: con EC2 è possibile impostare il proprio progetto e mostrarlo al mondo, mentre S3 viene utilizzato per archiviare i dati di qualsiasi tipo. Tuttavia, in questo articolo vorrei esaminare altri strumenti AWS più o meno popolari che normalmente utilizziamo qui, a Codest.
Cloudfront
È uno strumento creato appositamente per fornire risorse molto velocemente a molti utenti. E molti non significa centinaia o migliaia, ma milioni di richieste per una singola risorsa. Per esempio, volete permettere di inserire il vostro grafico, css, html o javascript su qualsiasi pagina. Inoltre, volete avere un impatto completo sui contenuti che la risorsa fornisce: dovete cambiare qualcosa e volete che questa modifica avvenga su tutte le pagine con il vostro file. E qui entra in gioco AWS Cloudfront, con tutte le sue funzionalità, che faranno sì che l'utente finale riceva la risorsa il prima possibile.
Cloudfront offre anche una serie di statistiche. Ad esempio, le pagine che sono state più richieste, i dispositivi con cui è stata effettuata la richiesta di risorse, gli stati http, ecc.
Naturalmente, questo strumento è piuttosto costoso, ma più richieste vengono fatte a cloudfront, meno si paga per il servizio. Pertanto, dovreste prendere in considerazione questa soluzione nel caso in cui vogliate collocare la risorsa su siti web con un traffico veramente grande o addirittura enorme.
Lotto
In parole povere, si tratta di un servizio che permette di eseguire un gran numero di lavori direttamente su AWS. Tutto ciò che si deve preparare è uno script di esecuzione e un'immagine docker, mentre AWS Batch farà il resto. Batch creerà dinamicamente istanze su EC2, assegnerà un posto adatto ai lavori e li lancerà contemporaneamente. Non dovrete preoccuparvi che la vostra istanza EC2 finisca lo spazio o la memoria o che dobbiate pensare costantemente a quando e come avviare il lavoro. Per la comunicazione tra lo script nell'immagine docker e il servizio è sufficiente creare l'API ed ecco fatto. Se si vuole usare Batch, si deve anche preparare il repository docker nel servizio Amazon Elastic Container Registry (ECR).
Vale la pena menzionare anche un altro servizio che trae vantaggio dai container docker. Si chiama Elastic Container Service (ECS). La sua differenza principale rispetto a Batch è che dovete impostare e scalare le istanze EC2 da soli, mentre Batch fa tutto il lavoro per voi. I costi di Batch dipendono dalle istanze EC2 che si possono utilizzare, poiché in questo caso si paga solo per le istanze in esecuzione.
Lambda
AWS Batch svolge il lavoro lanciando immagini docker, mentre il servizio successivo - AWS Lambda - consente di eseguire direttamente lo script. Non è necessario configurare alcun server, il servizio codice viene eseguito virtualmente e, cosa ancora migliore, si può anche restituire un valore nel modo che si preferisce.
Quando può essere utilizzato? Supponiamo di voler effettuare alcuni calcoli sul nostro sito web in base a parametri provenienti dal browser e che forse, inoltre, questi calcoli richiedano alcune query aggiuntive ad altri punti del web. In questo caso, è sufficiente creare un endpoint in Lambda, aggiungere il proprio script e utilizzare questo endpoint sul sito web. È davvero facile.
I costi di Lambda vengono conteggiati solo quando lo script è in esecuzione; quando l'endpoint non viene utilizzato, non si paga nulla.
SNS
Simple Notification Service, come suggerisce il nome, è uno strumento appositamente sviluppato per inviare notifiche. Può essere facilmente utilizzato per la comunicazione tra vari servizi AWS. Ad esempio, si dispone di un gruppo di microservizi e si desidera che uno di essi guidi gli altri, avviando alcuni di essi o eseguendo alcune azioni. In questo caso particolare, è possibile inviare notifiche dal servizio principale e gestire la ricezione dei messaggi in un altro microservizio. A proposito, vale la pena menzionare anche Amazon Simple Queue Service (SQS), che può creare una connessione molto interessante con SNS.
Nel caso di SNS (così come di SQS), il pagamento è previsto solo per le richieste eseguite: invio di messaggi a SNS, invio di messaggi da SNS ad altri servizi e altre richieste aggiuntive dal pool API di SNS.
RDS
Amazon Relational Database Service è solo un database esterno. Con questo servizio AWS consente di configurare, utilizzare e scalare facilmente un database relazionale. Ad esempio, se si prevede che il database avrà dimensioni considerevoli e crescerà ogni giorno di più, e si prevede di eseguire regolarmente operazioni più o meno complesse con esso, ad esempio l'elaborazione e la copia dei dati in un altro database, vale la pena considerare questa soluzione. I motori di database disponibili sono PostgreSQL, MySQL e MariaDB.
È facile intuire che i costi di RDS sono legati alle dimensioni del database e al suo utilizzo, quindi è difficile dire se sarà molto costoso o meno.
Sintesi
AWS è in continua evoluzione, sia che si tratti di migliorare i servizi esistenti o di creare qualcosa di nuovo. È preferibile non solo tenersi aggiornati sulle innovazioni tecnologiche, ma anche conoscere i servizi già esistenti.
Link utili