Quando si vuole dare un boost alla propria carriera potrebbe essere utile puntare l’attenzione sulle certificazioni professionali. Tra queste, per uno sviluppatore affascinato dal mondo serverless potrebbe essere interessante mettersi alla prova con l’approfondimento delle tecnologie che il mondo AWS (Amazon Web Services) offre tramite la certificazione AWS Solutions Architect.
Prima di proseguire con una descrizione dettagliata di cosa questa certificazione sia, oltre ad una mini guida su come affrontarne preparazione ed esame, ritengo possa essere utile analizzare e contestualizzare alcuni aspetti.
Il “mondo” dell’informatica è in realtà un universo in continua espansione, formato da galassie con miliardi di stelle in continua evoluzione. Analogamente, le tecnologie da cui siamo circondati noi del settore IT sono ogni giorno sempre di più e hanno cicli di vita a volte corti, altre volte fulminei. Tra questo immenso ecosistema vi sono però delle costanti, ovvero dei “prodotti” il cui impiego rimane ampiamente stabile per un tempo prolungato.
Questa lunga premessa serve a porre l’attenzione sul perché sia utile puntare ad una certificazione Amazon Web Services ad oggi, piuttosto che ad uno dei competitors sul mercato.
AWS è un prodotto stabile ed ampiamente usato. Esso occupa oltre il 30% della quota di mercato come cloud provider rispetto agli altri competitors e più del 50% del guadagno totale di Amazon.
La data ufficiale di fondazione di Web Services risale al 2002, ma è dal 2006 che inizia una evoluzione dei prodotti offerti, con il consolidarsi dei servizi “core” quali Amazon Simple Storage Service (Amazon S3) e Amazon Elastic Compute Cloud (Amazon EC2).
E’ dunque con l’introduzione ed il costante perfezionamento di una piattaforma di cloud computing che AWS si afferma come piattaforma competente ed affidabile, nonché valida alternativa di mercato. Il cloud AWS inizia così una sua rapida diffusione, puntando su agilità (delle fasi evolutive di software in tutti I loro aspetti di vita, nonché la costante connessione ed integrazione di servizi necessari), elasticità (con l’idea di costruire soluzioni misurate in funzione alle reali necessità, occupandosi e preoccupandosi soltanto di ciò che è veramente utile al momento per l’applicativo software) e soprattutto chiara gestione dei costi e dunque risparmio. Come spiegherò in seguito, tematiche come la chiarezza dei costi dei servizi e l’ottimizzazione degli stessi, sono degli argomenti chiave in fase di certificazione.
Nel corso del tempo I servizi offerti da AWS hanno superato quota 200, affrontando le tematiche più disparate e le relative necessità, continuando a garantire una preferenza per soluzioni cucite sia su cloud computing, storage, database, che su servizi sperimentali e/o cutting edge (IA, Machine Learning, IoT, Alexa, etc.), quasi sempre con ottimi risultati e valutazioni positive.
Di recente, AWS ha puntato anche sulla Digital Transformation nella Pubblica Amministrazione, puntando ad un allargamento dell’offerta pubblica e ad un relativo consolidamento con l’adozione da parte della Pubblica Amministrazione italiana.
La quantità di servizi offerti da AWS è talmente vasta che gli stessi “addetti al settore” che li utilizzano nel proprio lavoro quotidiano fanno fatica a ricordarli tutti (o peggio ancora, tutti gli acronimi adoperati).
Da ciò è chiara la necessità di avere delle figure come gli “architetti della soluzione” – o forse meglio da coniugare al plurale - i quali assumono un ruolo tecnico altamente specializzato in grado di progettare una soluzione software che comprenda un'ampia rete di servizi cloud, con il fine di soddisfare una serie di requisiti.
Un Solutions Architect è dunque quella figura che ha una conoscenza sufficientemente approfondita degli strumenti offerti da un prodotto (AWS in questo caso) ed è in grado di disegnare una soluzione software eterogenea, coesa e di complessità variabile, che abbracci diversi servizi interconnessi tra loro. Il suo compito è creare un ecosistema software equilibrato, efficiente e soprattutto economicamente sostenibile, facendolo tramite il raggiungimento di un giusto compromesso tra prestazioni, affidabilità e costi (argomento chiave nei quiz della certificazione).
Nota bene: un Solutions Architect non è (necessariamente) un Architetto Software; tuttavia è una persona che ha la giusta esperienza e conoscenza del prodotto su cui sta progettando la soluzione software, supportato a monte (si spera) da una conoscenza pregressa tecnica più ampia, fondata su esperienza concreta in termini di sviluppo, progettazione e configurazione di servizi.
La certificazione AWS Solutions Architect riguarda dunque Amazon Web Services, non la programmazione in generale, ne’ le architetture software, i design pattern, o i sistemi operativi.
E’ dunque un ambito in cui si richiede di conoscere bene alcune best practices e “metodologie” riguardante i servizi e le risorse offerte da AWS: AWS è la parola chiave.
Come mostrato nella sezione ufficiale, tra le varie tipologie di certificazione e relativi livelli, ve ne sono due che riguardano l’ambito del “Solutions Architect”: Associate e Professionals.
La certificazione Professionals è quella più avanzata tra le due e riguarda i professionisti che svolgono ufficialmente il ruolo di AWS Solutions Architect. Ha una complessità maggiore in termini di preparazione e soprattutto richiede una conoscenza più dettagliata dei servizi core.
Ritengo che questa sia la certificazione per chi abbia già acquisito altre certificazioni AWS di livello intermedio, come la Associate, ma soprattutto che abbia un background SA di almeno cinque anni sul campo.
L’Associate (che viene presentata in questo articolo) è considerabile un livello intermedio, ottimo per professionisti del settore che hanno già una conoscenza pregressa e sufficiente dei servizi offerti da AWS e che vogliono “diventare bravi progettisti” degli stessi.
Come spiegato nella pagina ufficiale della certificazione AWS Solutions Architect – Associate, questo livello ha lo scopo di comprovare le conoscenze e le competenze tecnologiche riguardanti (gli strumenti offerti da) AWS.
Chi ha una sufficiente esperienza dell’ecosistema AWS e dei suoi servizi chiave, può pensare bene di partire affrontando studio ed esame per la Associate. Così facendo, si troverà ad affrontare concretamente processi di studio e progettazione di soluzioni ideali, inerenti a casi d’uso verosimili e di test, in cui si deve identificare una combinazione di servizi che collaborino tra di loro al fine da ottenere la soluzione più opportuna per il problema dato.
Le certificazioni AWS hanno una radice comune, che è il AWS Well-Architected Framework. Si tratta di sei best-practices, ovvero principi chiave di una architettura ottimale su cui AWS pone molta attenzione e basa le fondamenta della qualità dei propri prodotti, costruita o meglio evoluta anno dopo anno in un continuo processo di perfezionamento virtuoso.
Essi sono:
Da questi sei pilastri si evince che un buon framework architetturale non è efficiente soltanto se è performante, ma anche se è sostenibile e/o costa il giusto. E così via.
L’eccesso non è contemplato in questo caso, in quanto è una esagerazione inopportuna che genera uno spreco di risorse e quindi di soldi. Spesso e volentieri, i problemi di esempio presentati durante l’esame hanno un “minor costo” come requisito, altre volte un “tempo minore”.
I principi del well-architected framework descrivono dunque le linee guida da adoperare in fase decisionale, così da saper valutare, soppesare e prevedere combinazioni appropriate di strumenti AWS in grado di risolvere un dato problema, facendolo nel miglior modo possibile in quel contesto specifico.
Come detto all’inizio e ricordato più volte, l’ecosistema AWS è vasto ed in continua crescita.
Lo stesso anno 2023 ha visto una continua evoluzione di alcuni servizi centrali, come ad esempio prestazioni di Aurora, compatibilità con Lambda, configurazioni di nuovi trigger per eventi automatizzabili, etc.
Tuttavia, vi sono alcuni servizi fondamentali da conoscere bene per non avere lacune con il programma di studio e rispondere ai quiz d’esame.
Tra concetti e servizi “core” più importanti vi sono:
• Regions e Availability Zone (AZ), propedeutici per molti casi d’uso
• Edge Locations
• VPC:
◦ Subnets
◦ Security Groups
◦ Route Tables
◦ Access control list (ACL)
• EC2 e tipologie di istanze con relativi casi d’uso
• IAM
◦ Roles
◦ Users
Ma di egual importanza, è bene elencare anche:
• ulteriori dettagli su VPC (che è l’argomento più ampio e complesso)
◦ Peering
◦ Endpoints
• ulteriori dettagli su EC2
◦ AMI
◦ Bootstrap Scripts
• S3 e tipologie di storage, con relativi casi d’uso
◦ Glacier
◦ EFS
◦ EBS
• RDS e relativi drivers compatibili
◦ Aurora Serverless
• Fargate
• Route 53 e tipologie di routing
◦ Health Checks
• ELB e tipologie di load balancers, con relativi requisiti e riferimenti ISO/OSI
• CloudWatch
◦ Logs
◦ Agents
• ELB & Auto Scaling Groups
• SQS
• SNS
• API Gateway
• Kinesis
• ECS
• Event Bridge
• AWS Lambda
• firewalls
◦ WAF
◦ Guard Duty
• servizi per caching e CDN
• tecnologie e metodologie per decoupling
• strumenti appropriate per big data, ML e AI
• strumenti per data governance
E moltissimi altri servizi ed argomenti, così tanti da riempire decine di pagine, ciascuno dei quali utile nel proprio contesto applicativo.
Riguardo le Regions, bisogna precisare che non tutti i servizi sono disponibili in tutte le regioni (ad esempio in caso di nuovi servizi), per cui può essere opportuno tenere traccia - specialmente durante gli hands-on e le prove che farete - delle reali disponibilità, tramite la pagina “AWS Services by Region”. Altri servizi invece, hanno uno scope globale, come IAM, CloudFront, Route53, e gli strumenti da firewall come WAF e Shield.
Le Availability Zones sono quasi sempre valide soluzioni quando si vuole garantire ridondanza e dunque affidabilità (con un fattore moltiplicativo di 3 per regione), ma bisogna stare attenti alle domande del quiz un po’ più ostiche in cui la necessità di mantenere un costo basso richiede la scelta di una singola AZ: alcune domande sembrano andare contro ai principi del well-architected framework, ma bisogna ricordarsi che il “low cost” è quasi sempre un requisito richiesto che spesso vince su altri.
Soluzioni in cui la rapidità di accedere ai contenuti spesso prevedono la scelta di una Edge Location più appropriata, ovvero Data Centers connessi tra loro più prossimi al bacino d’utenti di riferimento. Inoltre, bisogna capire che - proprio per una questione di caching e necessità di offrire rapidamente i contenuti - alcuni servizi sono strettamente connessi ed offerti tramite Edge Locations, come CloudFront, Route53, Firewall Manager, Shield e WAF.
Riguardo alla parte del Cloud Computing EC2, sarebbe bene ricordare a memoria quali sono le tipologie di istanze disponibili (On Demand, Spot, Reserved e Dedicated) e dunque quando e perché prediligere la scelta di una sulle altre: la conoscenza di ciascuna di esse aiuta a rispondere correttamente alle domande in cui vengono esposte necessità che mettono in correlazione costi e processi prolungati nel tempo o time-boxed.
Estremamente importante ed ampiamente coinvolto nei quiz è l’argomento del load-balancing ELB, con le sue tipologie di balancers (Application LB, Gateway LB, Network LB) e layers (riferiti alla pila ISO OSI) di riferimento, nonché alla loro necessità di utilizzo in funzione del traffico da sostenere (inteso come numero di richieste al secondo). Alcune domande dei quiz riguardano, ad esempio, il "troubleshooting" di un malfunzionamento, coinvolgendo eventuali health-checks configurati: in questi casi bisogna capire se il load-balancer è stato configurato correttamente e se eventualmente gli health-checks stanno restituendo l’errore mostrato ritenendo la risorsa come “unhealthy”.
Correlatamente, l’argomento dello scaling orizzontale e verticale viene richiesto costantemente ed agganciato a diverse problematiche di esempio descritte: bisogna sapere sia perché lo scaling verticale (potenziamento delle prestazioni delle singole risorse) non è pratico ai giorni nostri e sia perché lo scaling orizzontale (affiancamento di molteplici risorse di uguale potenza e minor costo) è la scelta più sensata. Oltre questo, bisogna sapere come applicare propriamente criteri di scaling out e scaling in configurando propriamente gli Auto Scaling Groups che sono in grado di far variare il numero di istanze EC2 (di un tipo scelto) in funzione a dei criteri di scaling impostati in modo da rispondere agli health checks del load balancer.
Riguardo S3 è fondamentale sapere che tipologia di storage implementa (detto “key value”), qual è il suo utilizzo pratico (ovvero come uno storage per dati che non cambiano, confrontandolo dunque con database e logs). E’ importante anche conoscere quali sono le classi di storage (standard, standard Infrequently Accessed, one zone IA, intelligent-tiering e Glacier) e dunque avere comprensione e conoscenza di come funziona l’encryption - topic frequente in fase d’esame - distinto tra in-transit (SSL/TLS, HTTPS) e at rest (che è predefinito), oltre la configurazione dei backup (richiesti quando si vuole rafforzare la security sui file) o repliche (per rafforzare l’ availability). Domande piuttosto frequenti nei quiz riguardando anche i concetti relativi al life-cycle degli oggetti, dunque - sempre evidenziando necessità relative ai costi - come cambiare la tipologia di storage in funzione ai tempi di accesso, fino ad arrivare all’utilizzo dell’archiviazione a lungo termine (ovvero Glacier).
Spesso capitano domande che mostrano la necessità di saper distinguere quando adoperare un bucket o quando adoperare uno storage EBS, ovvero un volume aggiuntivo da agganciare direttamente alle istanze EC2.
Di questi storage supplementari bisogna sapere innanzitutti le tipologie (GP2, GP3, IO1, IO2, ST1, SC1) e le urgenze a cui queste tipologie rispondono (ad esempio se sono dati di storage per un utilizzo sporadico, oppure “big” data da accedere con tempistiche estremamente celeri per reportistica o calcoli) e quindi discernere tra necessità di IOPS in confronto ad un throughput elevato.
Oltre le tipologie, bisogna anche comprendere a fondo quando e perché è utile creare degli snapshot di questi volumi e come applicare l’encryption su di essi (e cosa questo comporta sugli snapshot).
In qualche modo connessi alle tematiche di accessi ed accessibilità, alcune domande sicuramente riguarderanno Route 53 e le sue tipologie di routing (simple, failover, weighted, geolocation, latency-based, geo-proximity) e - relativamente - di come impostarne gli health-checks per servire le risorse in una maniera “pesata”.
Un altro argomento da conoscere bene per una questione di sicurezza - pietra miliare di qualsiasi applicazione - riguarda la gestione dei firewalls, dunque il Firewall Manager (come pannello di configurazione centralizzata) e soprattutto le tipologie di firewall WAF e Shield.
Possono capitare domande dove viene mostrato un rischio di sicurezza e capire come affrontarlo adoperando il firewall giusto, ovvero adoperando lo Shield per attacchi DDoS, come SYN flood ed altri che agiscono sui layers 3 e 4 (della pila ISO OSI) e WAF per la sicurezza dell’applicazione web (quindi livello 7 della pila ISO OSI) in grado di monitorare richieste HTTP e HTTPS.
Sempre sul tema della sicurezza, alcune domande mettono a confronto servizi che attuano una sicurezza continua come Macie (per dati sensibili e PII salvati su S3) e GuardDuty (per minacce quali comportamenti anomali o malwares) da quelli che suggeriscono dei protocolli di sicurezza (come Inspector).
Da ricordare come suggerimento strategico, che in fase comparativa di tecnologie diverse potenzialmente utili ed applicabili in determinati contesti, le Lambda ed i containers vengono preferiti ad EC2.
Inoltre, AWS favorisce sempre soluzioni basate su caching (dunque CDN e edge-locations) e ridondanza (dunque availability zones).
Il piano di studi visto in questo modo può far paura, però è bene dire non tutti gli argomenti vengono chiesti a fondo durante il quiz.
L’apprendimento è un processo lento che deve passare attraverso alcuni steps, tra cui comprensione, comparazione e valutazione dell’applicabilità. Analogamente, anche molti argomenti trattati durante lo studio li si apprende per fornire un contesto specifico – ed è importante sapere che esistono – in maniera tale da capire che essi non determinano la soluzione più efficiente per un dato contesto.
Molti argomenti studiati evidenziano che alcuni servizi e strumenti lavorano tra loro in una maniera più efficiente rispetto ad altri, che invece vengono coinvolti in un determinato contesto soltanto per creare un fattore di distrazione.
Il piano di studi per la certificazione AWS Solutions Architect Associate è così ampio perché il solutions architect deve conoscere quali siano, potenzialmente parlando, tutti i servizi che possono essere interessati in un dato contesto, diventando così abile nel valutare quali siano i servizi che sicuramente non saranno utili nel risolvere il problema e quali invece sì; tra quest’ultimi, l’architetto delle soluzioni deve essere in grado di discernere quali risolvono la determinata problematica (soluzione ammissibile) da quelli che la risolvono in maniera ottima (soluzione ottimale).
Il programma di studio, così come i quiz, è suddiviso in quattro macro-aree tematiche, detti domini, che sono:
Gli argomenti d’esame sono così suddivisi in funzione di questi quattro criteri, ed hanno un peso diverso in fase di valutazione.