{"id":4354,"date":"2022-04-15T13:58:00","date_gmt":"2022-04-15T11:58:00","guid":{"rendered":"https:\/\/blog.besharp.it\/?p=4354"},"modified":"2022-04-15T12:14:39","modified_gmt":"2022-04-15T10:14:39","slug":"step-function-con-aws-cdk-in-azione-il-nostro-punto-di-vista-utilizzando-typescript","status":"publish","type":"post","link":"https:\/\/blog.besharp.it\/it\/step-function-con-aws-cdk-in-azione-il-nostro-punto-di-vista-utilizzando-typescript\/","title":{"rendered":"Step Function con AWS CDK in azione: il nostro punto di vista utilizzando Typescript"},"content":{"rendered":"\n
L’espressione “infrastructure as Code” (IaC) negli ultimi tempi \u00e8 stata una delle keyword pi\u00f9 popolari in ambito cloud.<\/p>\n\n\n\n
Questo ha reso molte implementazioni infrastrutturali molto pi\u00f9 riutilizzabili, versionabili e mantenibili.<\/p>\n\n\n\n
Negli ultimi tempi sono nati parecchi standard e implementazioni che usano questo concetto.<\/p>\n\n\n\n
Alcuni di questi sono pi\u00f9 orientati ai sistemisti, e solitamente sono basati su file di configurazione, alcuni esempi sono Terraform o AWS SAM.<\/p>\n\n\n\n
Altri strumenti sono pi\u00f9 orientati ai developer e si basano su linguaggi di programmazione come Typescript, Java o Python.<\/p>\n\n\n\n
Lo strumento ufficiale orientato agli sviluppatori, per implementare un’infrastruttura usando il concetto di IaC, si chiama Cloud Development Kit (CDK) ed \u00e8 sviluppato da AWS.<\/p>\n\n\n\n
Noi lo abbiamo usato parecchio, per diversi casi d’uso, vorremmo quindi condividere una delle nostre esperienze in questo articolo.<\/p>\n\n\n\n
AWS CDK \u00e8 disponibile per diversi linguaggi di programmazione, noi abbiamo scelto di usare Typescript, perch\u00e8 consente allo sviluppatore di usare l’elasticit\u00e0 portata da Javascript, unita ad una type safety simile a Java.<\/p>\n\n\n\n
Queste caratteristiche sono molto utili per mantenere brevi i tempi di sviluppo, senza sacrificare i vantaggi portati da un linguaggio type-oriented, che facilita l’implementazione di design pattern orientati agli oggetti.<\/p>\n\n\n\n
Una cosa che ci ha colpito fin da subito di CDK \u00e8 la sua struttura modulare.<\/p>\n\n\n\n
Ogni servizio AWS \u00e8 rappresentato da un modulo Node.JS, quindi identificabile come una dipendenza all’interno del progetto.<\/p>\n\n\n\n
Questo ci consente di mantenere il progetto leggero e senza import inutili.<\/p>\n\n\n\n
Di solito, noi strutturiamo il nostro progetto CDK dividendo lo stack primario in vari nested stack, usando un criterio Domain driven.<\/p>\n\n\n\n
AWS CDK fornisce diversi livelli di astrazione che consentono di creare le risorse AWS.<\/p>\n\n\n\n
Noi abbiamo identificato 3 livelli di astrazione:<\/p>\n\n\n\n
Tipicamente possiamo identificarle dalla radice del nome: “Cfn”. Questi elementi danno la possibilit\u00e0 di personalizzare le tue risorse nello stesso modo in cui lo fai in un template Cloudformation.<\/p>\n\n\n\n
(esempio: CfnStateMachineProps<\/a> )<\/p>\n\n\n\n Questi costrutti sono i nostri preferiti, sono in grado di astrarre e semplificare la configurazione delle risorse, senza perderne il controllo.<\/p>\n\n\n\n2 – Attributes abstraction resources:<\/strong><\/h4>\n\n\n\n