SlideShare a Scribd company logo
1 of 50
Download to read offline
Prototipazione low code
con AWS Step Functions
University – Firenze 15 Dicembre 2022
Antonio Dell'Ava
Front-end Developer @
Background in Interaction Design
Gravel cyclist
0 → Premessa
1 → La Prototipazione
2 → Gli strumenti low-code
e no-code
3 → AWS Step Functions
Workflow Studio
Indice
Commit University 15 Dicembre 2022 Indice
4 → Domande
5 → Esercitazione
6 → Saluti
Premessa
0
La Prototipazione
1
"definiamoprototipo qualsiasi
rappresentazione diun'ideaprima di eseguirne
l'implementazionecompleta,
indipendentemente dallo strumento di
prototipazioneusato"
Nel'92 un cartoneper la pizza fu usato per
prototipare un portatile per architetti
Perché prototipare?
_
LANCIO
IDEA
SVILUPPO
LEARNING
1
2
3
4
Perché prototipare?
Per ridurre il costo del rischio
LANCIO
IDEA
SVILUPPO
LEARNING
1
2
3
4
più veloce ed economico
questo loop più possiamo
ridurre la possibilità di
sbagliare
1. Disallineamento interno:
non stiamo parlando della stessa cosa
2. Rischio tecnico:
quello che ci immaginiamo non si può fare
3. Rischio di sviluppare la soluzione sbagliata:
quello che sviluppiamo non risolve il problema degli
utenti
Quali rischi?
Diverse situazioni
= tipologie di rischio
= diverse tipologie di prototipi
_
1) Vogliamo fare una cosa totalmente nuova che i nostri utenti non
conoscono e noi, team, non sappiamo ancora bene definire
Low-fidelity
Focus sulla funzione e sul
ruolo della tecnologia nella
vita dell'utente
2) Ho un sistema esistente e utilizzato che deve essere riscritto o
rappresentato in maniera nuova
High fidelity, Focus è sul look & feel
3) Non abbiamo chiaro se quella funzione può essere realizzata/
abbiamo più opzioni implementative/Stiamo partecipando a una
gara
High fidelity, Focus è sulla tecnologia/e che crea rischio/dubbi
Riassunto sulle Tipologie
https://hci.stanford.edu/courses/cs247/2012/readings/WhatDoPrototypesPrototype.pdf
What do Prototypes Prototype?Stephanie
Houde and Charles Hill
Cosa Viene Prototipato Fedeltà
ALTA
Serve più tempo, Può essere condiviso
BASSA
Più economico, interno al team
Quando prototipare e chi
coinvolgere
_
Per generare opzioni tra
cui scegliere
Prototipi a Bassa Fedeltà
Per convergere su una
soluzione condivisa
Prototipi ad Alta Fedeltà
immagine da https://dschool.stanford.edu/
Sviluppo e lancio
Team interno Utenti & Stakeholder
immagine da https://dschool.stanford.edu/
Sviluppo e lancio
Antipattern
_
➔ Usare il prototipo look & feel come una specifica
ci deve dare la possibilità di imparare anche in fase sviluppo
➔ Fare prototipi troppo costosi
ci deve dare la possibilità di cambiare completamente idea
➔ Innamorarsi del proprio prototipo
➔ Solo una parte del team prototipa
nessuno deve subire le decisioni, la ownership è condivisa
➔ Avere paura di fare una valutazione con gli utenti
Antipattern
Format
_
https://designsprintkit.withgoogle.com
Design Sprint
https://designsprintkit.withgoogle.com
Design Sprint
Gli Strumenti low-code e
no-code
2
"untool di programmazionelow-code / no-code
permettedi costruireun software partendoda
una descrizionevisiva di cosa esso deve
fare, senza necessitàdi saper come scrivere
codice sorgente"
Pro:
1. Veloce
2. Non servono competenze specifiche
di programmazione (o ne servono
poche)
3. Tutti possono lo capire
Contro:
1. Non compatibili con tutti i i
processi/strumenti che di solito
rendono un software production
ready: testing, git, ci/cd, pull request
2. Meno flessibili rispetto al codice
Caratteristiche
Low Code:
➔ Destinati a velocizzare i developer
➔ Serve scrivere poco codice
➔ Hanno più flessibilità
No Code:
➔ Destinate ad abilitare tutti a
produrre un risultato
➔ Non serve saper scrivere codice
➔ Hanno meno flessibilità
Differenze
App
Es Amplify Studio
Workflow
Es Workflow Studio
Varie Tipologie
API
Es Application Composer
E molte altre in base al contesto di utilizzo (MAX MSP, scratch, Zapier, n8n, ...)
Gli strumentilow-code che si focalizzanosui
processi di integrazionesono i più interessanti
per fare i prototipi di implementazione
➔ Ci permettono di costruire qualcosa su cui ricevere feedback
velocemente e in maniera economica
➔ Focus sul cosa e non sul come
Cosa è un workflow?
(def.) workflow (“flusso di lavoro”) è un modello
rappresentativo di un processo attraverso una serie di
operazioni, eseguite una dopo l'altra, in un flusso logico e
temporale predefinito
L'utente inserisce
una frase
Analisi del
sentiment
È
buono
?
SUCCESS
FAIL
AWS Step Fuctions
Workflow Studio
3
Sappiamo tutti cosa è AWS?
AmazonWeb Services,Inc. è un'azienda statunitensedi proprietà del gruppo
Amazon, chefornisceservizi di cloud computingsu un'omonimapiattaforma
on demand.
➔ Permettono di modellare un workflow di servizi AWS
➔ Allo stesso modo possono essere lanciate con: API Gateway,
lambda, altri servizi AWS
➔ Risponde al sistema di Identity e Access Management (IAM)
Amazon
➔ Stiamo parlando di uno strumento "professional"
https://aws.amazon.com/it/step-functions/
Step Function
➔ Basato su JSON
➔ Definisce il workflow in maniera dichiarativa
➔ È una specifica Amazon
➔ Il workflow è sempre una macchina a stati finiti
➔ ogni "blocco" del workflow può occuparsi fare un'azione
(Task) o gestire il flusso (Flow)
https://states-language.net/spec.html
Amazon States Language
➔ Task: esegue un'operazione in aws (volendo anche esternamente)
https://states-language.net/spec.html
Le azioni AKA i task
Altro ServizioAWS
( es DetectSentiment )
1. Choice: crea delle biforcazioni logiche nel
workflow in base al condizioni date
2. Parallel: permette di eseguire più
processi parallelamente
3. Map: itera sugli elementi di un'array
4. Pass: passa semplicemente lo stato o
aggiunge dati hardcoded
5. Wait: causa un delay
6. Succeed: termina il workflow in maniera
positiva
7. Fail: termina il workflow in maniera
negativa
https://states-language.net/spec.html
Gestione del Flow
Amazon States Language
{
"Comment": "Esempio di step function",
"StartAt": "DetectSentiment",
"States": {
"DetectSentiment": {
"Type": "Task",
"Parameters": {
"LanguageCode": "it",
"Text.$": "$.message"
},
"Resource": "arn:aws:states:::aws-sdk:comprehend:detectSentiment",
"Next": "Buono o Cattivo"
},
"Buono o Cattivo": {
"Type": "Choice",
"Choices": [...]
Amazon States Language
"Choices": [
{
"Variable": "$.Sentiment",
"StringEquals": "POSITIVE",
"Next": "Success"
}
],
"Default": "Fail"
},
"Success": {
"Type": "Succeed"
},
"Fail": {
"Type": "Fail"
}}}
➔ Possono esserci errori come per esempio un Task fallisce o va
in timeout, oppure proprio nella definizionedella step
function, es. vado a prendere una variabile che non c'è
nell'input
➔ Abbiamo "Retry" per riprovare a eseguire, e "Catch" per
gestire l'errore con un cambio di stato
➔ Uno degli aspetti più potenti delle step function
https://states-language.net/spec.html
Gestione degli Errori
Amazon States Language
"Catch": [
{
"ErrorEquals": [ "States.TaskFailed" ],
"Next": "Fail"
"ResultPath: "$.error" // messaggio di errore
}
],
"Retry": [
{
"ErrorEquals": [ "States.Timeout" ],
"BackoffRate": 2, // moltiplica il delay ogni volta che ritenta
"IntervalSeconds": 1,
"MaxAttempts": 3
}
]
Da Giugno 2021Workflow Studio
Domande?
4
Grazie!
Antonio Dell'Ava
antonio.dellava@it.clara.net
@creativecaos

More Related Content

Similar to Prototipazione Low-Code con AWS Step Functions

Alm pills - Sessione community tour Dot Net Umbria 2011
Alm pills - Sessione community tour Dot Net Umbria 2011Alm pills - Sessione community tour Dot Net Umbria 2011
Alm pills - Sessione community tour Dot Net Umbria 2011Gian Maria Ricci
 
Stop Meeting, Start Coding!
Stop Meeting, Start Coding!Stop Meeting, Start Coding!
Stop Meeting, Start Coding!Giulio Roggero
 
Francesco Trucchia: Rapid Application Developement con strumenti Open Source
Francesco Trucchia: Rapid Application Developement con strumenti Open SourceFrancesco Trucchia: Rapid Application Developement con strumenti Open Source
Francesco Trucchia: Rapid Application Developement con strumenti Open SourceFrancesco Fullone
 
ASP.NET performance optimization
ASP.NET performance optimizationASP.NET performance optimization
ASP.NET performance optimizationAndrea Dottor
 
Wpc2019 - Distruggere DevOps, la storia di un vero team
Wpc2019 - Distruggere DevOps, la storia di un vero teamWpc2019 - Distruggere DevOps, la storia di un vero team
Wpc2019 - Distruggere DevOps, la storia di un vero teamAlessandro Alpi
 
festival ICT 2013: Vivere open source dalle applicazioni ad arduino
festival ICT 2013: Vivere open source dalle applicazioni ad arduinofestival ICT 2013: Vivere open source dalle applicazioni ad arduino
festival ICT 2013: Vivere open source dalle applicazioni ad arduinofestival ICT 2016
 
Webcast - Introduzione a Visual Studio Online
Webcast - Introduzione a Visual Studio OnlineWebcast - Introduzione a Visual Studio Online
Webcast - Introduzione a Visual Studio OnlineDavide Benvegnù
 
Exploring VS Code
Exploring VS CodeExploring VS Code
Exploring VS Codedotnetcode
 
Linux Embedded per l'automazione
Linux Embedded per l'automazioneLinux Embedded per l'automazione
Linux Embedded per l'automazioneDaniele Costarella
 
Async: scalabilità e responsiveness senza pari! @ CDays
Async: scalabilità e responsiveness senza pari! @ CDaysAsync: scalabilità e responsiveness senza pari! @ CDays
Async: scalabilità e responsiveness senza pari! @ CDaysMatteo Baglini
 
Generazione automatica diagrammi di rete con template pptx
Generazione automatica diagrammi di rete con template pptxGenerazione automatica diagrammi di rete con template pptx
Generazione automatica diagrammi di rete con template pptxGiacomoZorzin
 
Introduzione ai Big Data e alla scienza dei dati - Big Data
Introduzione ai Big Data e alla scienza dei dati - Big DataIntroduzione ai Big Data e alla scienza dei dati - Big Data
Introduzione ai Big Data e alla scienza dei dati - Big DataVincenzo Manzoni
 
Keep calm and deploy
Keep calm and deployKeep calm and deploy
Keep calm and deployKlab
 
Node js: che cos'è e a che cosa serve?
Node js: che cos'è e a che cosa serve?Node js: che cos'è e a che cosa serve?
Node js: che cos'è e a che cosa serve?Flavius-Florin Harabor
 
Netbeans e Xdebug per debugging e profiling di applicazioni PHP
Netbeans e Xdebug per debugging e profiling di applicazioni PHPNetbeans e Xdebug per debugging e profiling di applicazioni PHP
Netbeans e Xdebug per debugging e profiling di applicazioni PHPGiorgio Cefaro
 
Keep calm and Deploy - Panoramica sui problemi che emergono in fase di rilasc...
Keep calm and Deploy - Panoramica sui problemi che emergono in fase di rilasc...Keep calm and Deploy - Panoramica sui problemi che emergono in fase di rilasc...
Keep calm and Deploy - Panoramica sui problemi che emergono in fase di rilasc...Andrea Cirioni
 
Integrazione continua con TFS Build
Integrazione continua con TFS BuildIntegrazione continua con TFS Build
Integrazione continua con TFS BuildGian Maria Ricci
 

Similar to Prototipazione Low-Code con AWS Step Functions (20)

Alm pills - Sessione community tour Dot Net Umbria 2011
Alm pills - Sessione community tour Dot Net Umbria 2011Alm pills - Sessione community tour Dot Net Umbria 2011
Alm pills - Sessione community tour Dot Net Umbria 2011
 
Stop Meeting, Start Coding!
Stop Meeting, Start Coding!Stop Meeting, Start Coding!
Stop Meeting, Start Coding!
 
Francesco Trucchia: Rapid Application Developement con strumenti Open Source
Francesco Trucchia: Rapid Application Developement con strumenti Open SourceFrancesco Trucchia: Rapid Application Developement con strumenti Open Source
Francesco Trucchia: Rapid Application Developement con strumenti Open Source
 
ASP.NET performance optimization
ASP.NET performance optimizationASP.NET performance optimization
ASP.NET performance optimization
 
Infrastructure as Data
Infrastructure as DataInfrastructure as Data
Infrastructure as Data
 
Wpc2019 - Distruggere DevOps, la storia di un vero team
Wpc2019 - Distruggere DevOps, la storia di un vero teamWpc2019 - Distruggere DevOps, la storia di un vero team
Wpc2019 - Distruggere DevOps, la storia di un vero team
 
festival ICT 2013: Vivere open source dalle applicazioni ad arduino
festival ICT 2013: Vivere open source dalle applicazioni ad arduinofestival ICT 2013: Vivere open source dalle applicazioni ad arduino
festival ICT 2013: Vivere open source dalle applicazioni ad arduino
 
Standard Dev Workflow
Standard Dev WorkflowStandard Dev Workflow
Standard Dev Workflow
 
Webcast - Introduzione a Visual Studio Online
Webcast - Introduzione a Visual Studio OnlineWebcast - Introduzione a Visual Studio Online
Webcast - Introduzione a Visual Studio Online
 
Exploring VS Code
Exploring VS CodeExploring VS Code
Exploring VS Code
 
Linux Embedded per l'automazione
Linux Embedded per l'automazioneLinux Embedded per l'automazione
Linux Embedded per l'automazione
 
Async: scalabilità e responsiveness senza pari! @ CDays
Async: scalabilità e responsiveness senza pari! @ CDaysAsync: scalabilità e responsiveness senza pari! @ CDays
Async: scalabilità e responsiveness senza pari! @ CDays
 
Generazione automatica diagrammi di rete con template pptx
Generazione automatica diagrammi di rete con template pptxGenerazione automatica diagrammi di rete con template pptx
Generazione automatica diagrammi di rete con template pptx
 
Introduzione ai Big Data e alla scienza dei dati - Big Data
Introduzione ai Big Data e alla scienza dei dati - Big DataIntroduzione ai Big Data e alla scienza dei dati - Big Data
Introduzione ai Big Data e alla scienza dei dati - Big Data
 
Keep calm and deploy
Keep calm and deployKeep calm and deploy
Keep calm and deploy
 
Java introduzione
Java introduzioneJava introduzione
Java introduzione
 
Node js: che cos'è e a che cosa serve?
Node js: che cos'è e a che cosa serve?Node js: che cos'è e a che cosa serve?
Node js: che cos'è e a che cosa serve?
 
Netbeans e Xdebug per debugging e profiling di applicazioni PHP
Netbeans e Xdebug per debugging e profiling di applicazioni PHPNetbeans e Xdebug per debugging e profiling di applicazioni PHP
Netbeans e Xdebug per debugging e profiling di applicazioni PHP
 
Keep calm and Deploy - Panoramica sui problemi che emergono in fase di rilasc...
Keep calm and Deploy - Panoramica sui problemi che emergono in fase di rilasc...Keep calm and Deploy - Panoramica sui problemi che emergono in fase di rilasc...
Keep calm and Deploy - Panoramica sui problemi che emergono in fase di rilasc...
 
Integrazione continua con TFS Build
Integrazione continua con TFS BuildIntegrazione continua con TFS Build
Integrazione continua con TFS Build
 

More from Commit University

Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Commit University
 
Breaking REST Chains_ A Fastify & Mercurius Pathway to GraphQL Glory.pdf
Breaking REST Chains_ A Fastify & Mercurius Pathway to GraphQL Glory.pdfBreaking REST Chains_ A Fastify & Mercurius Pathway to GraphQL Glory.pdf
Breaking REST Chains_ A Fastify & Mercurius Pathway to GraphQL Glory.pdfCommit University
 
Accelerating API Development: A Pit Stop with Gin-Gonic in Golang-Slide.pdf
Accelerating API Development: A Pit Stop with Gin-Gonic in Golang-Slide.pdfAccelerating API Development: A Pit Stop with Gin-Gonic in Golang-Slide.pdf
Accelerating API Development: A Pit Stop with Gin-Gonic in Golang-Slide.pdfCommit University
 
Collaborazione, Decisionalità e Gestione della Complessità nel Tempo: cosa ...
Collaborazione, Decisionalità e Gestione della Complessità nel Tempo: cosa ...Collaborazione, Decisionalità e Gestione della Complessità nel Tempo: cosa ...
Collaborazione, Decisionalità e Gestione della Complessità nel Tempo: cosa ...Commit University
 
Commit - Qwik il framework che ti stupirà.pptx
Commit - Qwik il framework che ti stupirà.pptxCommit - Qwik il framework che ti stupirà.pptx
Commit - Qwik il framework che ti stupirà.pptxCommit University
 
Sviluppare da zero una Angular Web App per la PA
Sviluppare da zero una Angular Web App per la PASviluppare da zero una Angular Web App per la PA
Sviluppare da zero una Angular Web App per la PACommit University
 
Backstage l'Internal Developer Portal Open Source per una migliore Developer ...
Backstage l'Internal Developer Portal Open Source per una migliore Developer ...Backstage l'Internal Developer Portal Open Source per una migliore Developer ...
Backstage l'Internal Developer Portal Open Source per una migliore Developer ...Commit University
 
Prisma the ORM that node was waiting for
Prisma the ORM that node was waiting forPrisma the ORM that node was waiting for
Prisma the ORM that node was waiting forCommit University
 
Decision-making for Software Development Teams - Commit University
Decision-making for Software Development Teams - Commit UniversityDecision-making for Software Development Teams - Commit University
Decision-making for Software Development Teams - Commit UniversityCommit University
 
Component Design Pattern nei Game Engine.pdf
Component Design Pattern nei Game Engine.pdfComponent Design Pattern nei Game Engine.pdf
Component Design Pattern nei Game Engine.pdfCommit University
 
Un viaggio alla scoperta dei Language Models e dell’intelligenza artificiale ...
Un viaggio alla scoperta dei Language Models e dell’intelligenza artificiale ...Un viaggio alla scoperta dei Language Models e dell’intelligenza artificiale ...
Un viaggio alla scoperta dei Language Models e dell’intelligenza artificiale ...Commit University
 
KMM survival guide: how to tackle struggles between Kotlin and Swift
KMM survival guide: how to tackle struggles between Kotlin and SwiftKMM survival guide: how to tackle struggles between Kotlin and Swift
KMM survival guide: how to tackle struggles between Kotlin and SwiftCommit University
 
Da Vuex a Pinia: come fare la migrazione
Da Vuex a Pinia: come fare la migrazioneDa Vuex a Pinia: come fare la migrazione
Da Vuex a Pinia: come fare la migrazioneCommit University
 
Orchestrare Micro-frontend con micro-lc
Orchestrare Micro-frontend con micro-lcOrchestrare Micro-frontend con micro-lc
Orchestrare Micro-frontend con micro-lcCommit University
 
Fastify has defeated Lagacy-Code
Fastify has defeated Lagacy-CodeFastify has defeated Lagacy-Code
Fastify has defeated Lagacy-CodeCommit University
 
Alpine.js: the outsider Javascript framework
Alpine.js: the outsider Javascript frameworkAlpine.js: the outsider Javascript framework
Alpine.js: the outsider Javascript frameworkCommit University
 

More from Commit University (20)

Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)
 
Breaking REST Chains_ A Fastify & Mercurius Pathway to GraphQL Glory.pdf
Breaking REST Chains_ A Fastify & Mercurius Pathway to GraphQL Glory.pdfBreaking REST Chains_ A Fastify & Mercurius Pathway to GraphQL Glory.pdf
Breaking REST Chains_ A Fastify & Mercurius Pathway to GraphQL Glory.pdf
 
Accelerating API Development: A Pit Stop with Gin-Gonic in Golang-Slide.pdf
Accelerating API Development: A Pit Stop with Gin-Gonic in Golang-Slide.pdfAccelerating API Development: A Pit Stop with Gin-Gonic in Golang-Slide.pdf
Accelerating API Development: A Pit Stop with Gin-Gonic in Golang-Slide.pdf
 
Slide-10years.pdf
Slide-10years.pdfSlide-10years.pdf
Slide-10years.pdf
 
Collaborazione, Decisionalità e Gestione della Complessità nel Tempo: cosa ...
Collaborazione, Decisionalità e Gestione della Complessità nel Tempo: cosa ...Collaborazione, Decisionalità e Gestione della Complessità nel Tempo: cosa ...
Collaborazione, Decisionalità e Gestione della Complessità nel Tempo: cosa ...
 
Vue.js slots.pdf
Vue.js slots.pdfVue.js slots.pdf
Vue.js slots.pdf
 
Commit - Qwik il framework che ti stupirà.pptx
Commit - Qwik il framework che ti stupirà.pptxCommit - Qwik il framework che ti stupirà.pptx
Commit - Qwik il framework che ti stupirà.pptx
 
Sviluppare da zero una Angular Web App per la PA
Sviluppare da zero una Angular Web App per la PASviluppare da zero una Angular Web App per la PA
Sviluppare da zero una Angular Web App per la PA
 
Backstage l'Internal Developer Portal Open Source per una migliore Developer ...
Backstage l'Internal Developer Portal Open Source per una migliore Developer ...Backstage l'Internal Developer Portal Open Source per una migliore Developer ...
Backstage l'Internal Developer Portal Open Source per una migliore Developer ...
 
Prisma the ORM that node was waiting for
Prisma the ORM that node was waiting forPrisma the ORM that node was waiting for
Prisma the ORM that node was waiting for
 
Decision-making for Software Development Teams - Commit University
Decision-making for Software Development Teams - Commit UniversityDecision-making for Software Development Teams - Commit University
Decision-making for Software Development Teams - Commit University
 
Component Design Pattern nei Game Engine.pdf
Component Design Pattern nei Game Engine.pdfComponent Design Pattern nei Game Engine.pdf
Component Design Pattern nei Game Engine.pdf
 
Un viaggio alla scoperta dei Language Models e dell’intelligenza artificiale ...
Un viaggio alla scoperta dei Language Models e dell’intelligenza artificiale ...Un viaggio alla scoperta dei Language Models e dell’intelligenza artificiale ...
Un viaggio alla scoperta dei Language Models e dell’intelligenza artificiale ...
 
KMM survival guide: how to tackle struggles between Kotlin and Swift
KMM survival guide: how to tackle struggles between Kotlin and SwiftKMM survival guide: how to tackle struggles between Kotlin and Swift
KMM survival guide: how to tackle struggles between Kotlin and Swift
 
Da Vuex a Pinia: come fare la migrazione
Da Vuex a Pinia: come fare la migrazioneDa Vuex a Pinia: come fare la migrazione
Da Vuex a Pinia: come fare la migrazione
 
Orchestrare Micro-frontend con micro-lc
Orchestrare Micro-frontend con micro-lcOrchestrare Micro-frontend con micro-lc
Orchestrare Micro-frontend con micro-lc
 
Fastify has defeated Lagacy-Code
Fastify has defeated Lagacy-CodeFastify has defeated Lagacy-Code
Fastify has defeated Lagacy-Code
 
SwiftUI vs UIKit
SwiftUI vs UIKitSwiftUI vs UIKit
SwiftUI vs UIKit
 
Alpine.js: the outsider Javascript framework
Alpine.js: the outsider Javascript frameworkAlpine.js: the outsider Javascript framework
Alpine.js: the outsider Javascript framework
 

Prototipazione Low-Code con AWS Step Functions

  • 1. Prototipazione low code con AWS Step Functions University – Firenze 15 Dicembre 2022
  • 2. Antonio Dell'Ava Front-end Developer @ Background in Interaction Design Gravel cyclist
  • 3. 0 → Premessa 1 → La Prototipazione 2 → Gli strumenti low-code e no-code 3 → AWS Step Functions Workflow Studio Indice Commit University 15 Dicembre 2022 Indice 4 → Domande 5 → Esercitazione 6 → Saluti
  • 5.
  • 7. "definiamoprototipo qualsiasi rappresentazione diun'ideaprima di eseguirne l'implementazionecompleta, indipendentemente dallo strumento di prototipazioneusato"
  • 8. Nel'92 un cartoneper la pizza fu usato per prototipare un portatile per architetti
  • 10.
  • 12. Perché prototipare? Per ridurre il costo del rischio
  • 13. LANCIO IDEA SVILUPPO LEARNING 1 2 3 4 più veloce ed economico questo loop più possiamo ridurre la possibilità di sbagliare
  • 14. 1. Disallineamento interno: non stiamo parlando della stessa cosa 2. Rischio tecnico: quello che ci immaginiamo non si può fare 3. Rischio di sviluppare la soluzione sbagliata: quello che sviluppiamo non risolve il problema degli utenti Quali rischi?
  • 15. Diverse situazioni = tipologie di rischio = diverse tipologie di prototipi _
  • 16. 1) Vogliamo fare una cosa totalmente nuova che i nostri utenti non conoscono e noi, team, non sappiamo ancora bene definire Low-fidelity Focus sulla funzione e sul ruolo della tecnologia nella vita dell'utente
  • 17. 2) Ho un sistema esistente e utilizzato che deve essere riscritto o rappresentato in maniera nuova High fidelity, Focus è sul look & feel
  • 18. 3) Non abbiamo chiaro se quella funzione può essere realizzata/ abbiamo più opzioni implementative/Stiamo partecipando a una gara High fidelity, Focus è sulla tecnologia/e che crea rischio/dubbi
  • 19. Riassunto sulle Tipologie https://hci.stanford.edu/courses/cs247/2012/readings/WhatDoPrototypesPrototype.pdf What do Prototypes Prototype?Stephanie Houde and Charles Hill Cosa Viene Prototipato Fedeltà ALTA Serve più tempo, Può essere condiviso BASSA Più economico, interno al team
  • 20. Quando prototipare e chi coinvolgere _
  • 21. Per generare opzioni tra cui scegliere Prototipi a Bassa Fedeltà Per convergere su una soluzione condivisa Prototipi ad Alta Fedeltà immagine da https://dschool.stanford.edu/ Sviluppo e lancio
  • 22. Team interno Utenti & Stakeholder immagine da https://dschool.stanford.edu/ Sviluppo e lancio
  • 24. ➔ Usare il prototipo look & feel come una specifica ci deve dare la possibilità di imparare anche in fase sviluppo ➔ Fare prototipi troppo costosi ci deve dare la possibilità di cambiare completamente idea ➔ Innamorarsi del proprio prototipo ➔ Solo una parte del team prototipa nessuno deve subire le decisioni, la ownership è condivisa ➔ Avere paura di fare una valutazione con gli utenti Antipattern
  • 28. Gli Strumenti low-code e no-code 2
  • 29. "untool di programmazionelow-code / no-code permettedi costruireun software partendoda una descrizionevisiva di cosa esso deve fare, senza necessitàdi saper come scrivere codice sorgente"
  • 30. Pro: 1. Veloce 2. Non servono competenze specifiche di programmazione (o ne servono poche) 3. Tutti possono lo capire Contro: 1. Non compatibili con tutti i i processi/strumenti che di solito rendono un software production ready: testing, git, ci/cd, pull request 2. Meno flessibili rispetto al codice Caratteristiche
  • 31. Low Code: ➔ Destinati a velocizzare i developer ➔ Serve scrivere poco codice ➔ Hanno più flessibilità No Code: ➔ Destinate ad abilitare tutti a produrre un risultato ➔ Non serve saper scrivere codice ➔ Hanno meno flessibilità Differenze
  • 32. App Es Amplify Studio Workflow Es Workflow Studio Varie Tipologie API Es Application Composer E molte altre in base al contesto di utilizzo (MAX MSP, scratch, Zapier, n8n, ...)
  • 33. Gli strumentilow-code che si focalizzanosui processi di integrazionesono i più interessanti per fare i prototipi di implementazione ➔ Ci permettono di costruire qualcosa su cui ricevere feedback velocemente e in maniera economica ➔ Focus sul cosa e non sul come
  • 34. Cosa è un workflow?
  • 35. (def.) workflow (“flusso di lavoro”) è un modello rappresentativo di un processo attraverso una serie di operazioni, eseguite una dopo l'altra, in un flusso logico e temporale predefinito L'utente inserisce una frase Analisi del sentiment È buono ? SUCCESS FAIL
  • 37. Sappiamo tutti cosa è AWS? AmazonWeb Services,Inc. è un'azienda statunitensedi proprietà del gruppo Amazon, chefornisceservizi di cloud computingsu un'omonimapiattaforma on demand.
  • 38. ➔ Permettono di modellare un workflow di servizi AWS ➔ Allo stesso modo possono essere lanciate con: API Gateway, lambda, altri servizi AWS ➔ Risponde al sistema di Identity e Access Management (IAM) Amazon ➔ Stiamo parlando di uno strumento "professional" https://aws.amazon.com/it/step-functions/ Step Function
  • 39.
  • 40.
  • 41. ➔ Basato su JSON ➔ Definisce il workflow in maniera dichiarativa ➔ È una specifica Amazon ➔ Il workflow è sempre una macchina a stati finiti ➔ ogni "blocco" del workflow può occuparsi fare un'azione (Task) o gestire il flusso (Flow) https://states-language.net/spec.html Amazon States Language
  • 42. ➔ Task: esegue un'operazione in aws (volendo anche esternamente) https://states-language.net/spec.html Le azioni AKA i task Altro ServizioAWS ( es DetectSentiment )
  • 43. 1. Choice: crea delle biforcazioni logiche nel workflow in base al condizioni date 2. Parallel: permette di eseguire più processi parallelamente 3. Map: itera sugli elementi di un'array 4. Pass: passa semplicemente lo stato o aggiunge dati hardcoded 5. Wait: causa un delay 6. Succeed: termina il workflow in maniera positiva 7. Fail: termina il workflow in maniera negativa https://states-language.net/spec.html Gestione del Flow
  • 44. Amazon States Language { "Comment": "Esempio di step function", "StartAt": "DetectSentiment", "States": { "DetectSentiment": { "Type": "Task", "Parameters": { "LanguageCode": "it", "Text.$": "$.message" }, "Resource": "arn:aws:states:::aws-sdk:comprehend:detectSentiment", "Next": "Buono o Cattivo" }, "Buono o Cattivo": { "Type": "Choice", "Choices": [...]
  • 45. Amazon States Language "Choices": [ { "Variable": "$.Sentiment", "StringEquals": "POSITIVE", "Next": "Success" } ], "Default": "Fail" }, "Success": { "Type": "Succeed" }, "Fail": { "Type": "Fail" }}}
  • 46. ➔ Possono esserci errori come per esempio un Task fallisce o va in timeout, oppure proprio nella definizionedella step function, es. vado a prendere una variabile che non c'è nell'input ➔ Abbiamo "Retry" per riprovare a eseguire, e "Catch" per gestire l'errore con un cambio di stato ➔ Uno degli aspetti più potenti delle step function https://states-language.net/spec.html Gestione degli Errori
  • 47. Amazon States Language "Catch": [ { "ErrorEquals": [ "States.TaskFailed" ], "Next": "Fail" "ResultPath: "$.error" // messaggio di errore } ], "Retry": [ { "ErrorEquals": [ "States.Timeout" ], "BackoffRate": 2, // moltiplica il delay ogni volta che ritenta "IntervalSeconds": 1, "MaxAttempts": 3 } ]