SlideShare ist ein Scribd-Unternehmen logo
1 von 21
Alexa, please deploy my
Azure architecture
Andrea Ceroni
Rome | March 22 - 23, 2019
Andrea Ceroni
andrea.ceroni@elfo.net
@andrekiba
http://www.linkedin.com/in/andreaceroni
elfo.net klabcommunity.org
Alexa + Azure = voiceDevOps
Whyvoice DevOps ?
sperimentare un modo diverso di fare qualcosa di
ripetitivo, spesse volte quasi annoiante
ma si può parlando? ...ci avete mai pensato?
come sarebbe se fosse davvero "frictionless" ?
Aldo (AlexaDevOps)
Aldo Project
Deployer
AzureAldo Resource
Deployer
Ald
o
AlexaAVS +ASK
Alexa
Developer
Portal
Proactive
Events
Aldo Notifier
(build,deploy)
Aldo Project
Builder
AzureDevOps
Pipeline
Echo
Voice command
Text to
speech
wake
word
triggers
listening
Alexa apriAldo e
deploya
Codemotion
N L U
Alexa AVS
Confermi il deploy
di Codemotion? ...
Fulfillmen
t
device inactive
Alexa Developer Console
Interaction Model
Invocatio
n
wake word(s)
Slots
infromazioni necessarie
Intents
cosa volete fare
Endpoin
t logica per creare la
risposta
Intent
intent
sample
utterances
slot
contains 0 or more custom
built-in
one
of
typ
e
nam
e
sample
values
has
one
Coding the fulfillment
Device
"Alexa, chiedi ad
aldo di fare il
deploy del progetto
Codemotion"
Alexa Service
Intent:
Slot:
DeployProj
ect
ProjectNam
e,
Codemotion
Confermi il deploy
del progetto
Codemotion?
Text to speech
Fulfillment
Event
request handlres
CreatResourceHa
ndler
CanHandle(
)
Handle()
BuildProjectHandle
r
CanHandle(
)
Handle()
DeployProjectHan
dler
CanHandle(
)
Handle()
Respons
e
....
Cosa si può fare?Per ora 3 cose ...
provisioning di un servizio su Azure
(app, db, storage...)
deploy di un progetto ospitato
in Azure DevOps
build di un progetto
...
Azure Management Libraries(IaaC)
public class AzureFunctionDeployment : BaseDeployment
{
protected override Task ExecuteCreateAsync()
{
var definition = Azure
.WithSubscription(Options.SubscriptionId)
.AppServices.FunctionApps
.Define(AppName)
.WithRegion(Options.Region);
var create = definition.WithExistingResourceGroup(
Options.ResourceGroupName)
return create.CreateAsync();
}
}
https://github.com/Azure/azure-libraries-for-net
Resource Deployer
FunctionName("AldoResourceDeployer")]
public async Task Run([QueueTrigger("azure-resource-deploy" ...
[Queue("project-deploy" ...)
{
var azure = await azureService.Authenticate(conf.ClientId,
conf.ClientSecret, conf.TenantId);
var deploy = await deploymentService.Deploy(azure,
deployOptions, ard.AzureResource);
if(deploy.IsSuccess)
{
var message = ...
await notificationService.SendUserNotification(user,message);
}
...
}
Project Deployer &Builder
FunctionName("AldoProjectDeployer")]
public async Task Run([QueueTrigger("project-deploy" ...)]
ProjectToDeploy pd)
{
var release = await azureDevOpsService.TriggerRelease(pd);
}
FunctionName("AldoProjectBuilder")]
public async Task Run([QueueTrigger("project-build" ...)]
ProjectToBuild pb)
{
var build = await azureDevOpsService.TriggerBuild(pb);
}
Azure DevOps Pipelines
Proactive Events
https://developer.amazon.com/it/docs/smapi/proactive-events-api.html
sostituiscono le notifiche
esistono diversi schemi tra cui scegliere ma per ora non
è possibile definire un proprio evento custom ...
possono essere unicast o broadcast
tramite l'app Alexa occorre dare consenso
allaricezione
Notifier
FunctionName("AldoNotifier")]
public async Task Run([HttpTrigger(..."post"...)] HttpRequest req)
{
...
dynamic data = JsonConvert.DeserializeObject(requestBody);
string eventType = data.eventType;
switch(eventType)
{
case "ms.vss-release.deployment-completed-event":
user = await azureDevOpsService.GetReleaseRequestor(...);
message = ...
case "build.complete":
user = await azureDevOpsService.GetBuildRequestor(...);
message = ...
}
if(user.IsSuccess)
await notificationService.SendUserNotification(user,message);
...
}
Azure DevOps API
docs.microsoft.com/en-us/rest/api/azure/devops/?view=azure-devops-rest-5.0
Next
account linking per integrarsi pienamente con Azure
DevOps e personalizzare l'esperienza
Durable Function stateful o Akka actor che orchestra gli
worker per rendere il flusso più immediato e avere
anche altre possibilità
aggiungere ulteriori azioni e parametri (nome branch,
env...)
localizzazione della skill con frasi diverse per le stesse
azioni
suggerimenti...
Grazie
!
andrea.ceroni@elfo.net
andrea.ceroni@gmail.com
@andrekiba
http://github.com/andrekiba
http://www.linkedin.com/in/andreaceroni
https://creativecommons.org/licenses/by-nc-sa/3.0/
HandleQuestionIntent(IntentRequest
request)
{
if(iKnowTheAnswer )
return
ResponseBuilder.Tell(Answer);
return ResponseBuilder.Empty() ;
}

Weitere ähnliche Inhalte

Ähnlich wie Andrea Ceroni - Alexa, please deploy my Azure architecture - Codemotion Rome 2019

Ähnlich wie Andrea Ceroni - Alexa, please deploy my Azure architecture - Codemotion Rome 2019 (20)

Introduzione allo sviluppo di skill alexa
Introduzione allo sviluppo di skill alexaIntroduzione allo sviluppo di skill alexa
Introduzione allo sviluppo di skill alexa
 
Integrazione continua con TFS Build
Integrazione continua con TFS BuildIntegrazione continua con TFS Build
Integrazione continua con TFS Build
 
Azure dev ops meetup one
Azure dev ops meetup oneAzure dev ops meetup one
Azure dev ops meetup one
 
2014.04.04 Sviluppare applicazioni web (completamente) on line con Visual Stu...
2014.04.04 Sviluppare applicazioni web (completamente) on line con Visual Stu...2014.04.04 Sviluppare applicazioni web (completamente) on line con Visual Stu...
2014.04.04 Sviluppare applicazioni web (completamente) on line con Visual Stu...
 
Introduzione a node.js
Introduzione a node.jsIntroduzione a node.js
Introduzione a node.js
 
Introduzione a Node.js
Introduzione a Node.jsIntroduzione a Node.js
Introduzione a Node.js
 
Web base-03-js-numeri stringearray
Web base-03-js-numeri stringearrayWeb base-03-js-numeri stringearray
Web base-03-js-numeri stringearray
 
ASP.NET MVC 6 - uno sguardo al futuro
ASP.NET MVC 6 - uno sguardo al futuroASP.NET MVC 6 - uno sguardo al futuro
ASP.NET MVC 6 - uno sguardo al futuro
 
Web base - Javascript (Node.js): Elementi di base
Web base - Javascript (Node.js): Elementi di baseWeb base - Javascript (Node.js): Elementi di base
Web base - Javascript (Node.js): Elementi di base
 
Open domus 2016
Open domus 2016Open domus 2016
Open domus 2016
 
[Luca Cracco] - DevOps: strumenti di automazione per Drupal8
[Luca Cracco] - DevOps: strumenti di automazione per Drupal8[Luca Cracco] - DevOps: strumenti di automazione per Drupal8
[Luca Cracco] - DevOps: strumenti di automazione per Drupal8
 
[drupalday2017] - DevOps: strumenti di automazione per Drupal8
[drupalday2017] - DevOps: strumenti di automazione per Drupal8[drupalday2017] - DevOps: strumenti di automazione per Drupal8
[drupalday2017] - DevOps: strumenti di automazione per Drupal8
 
Machine learning models continuous deployment on azure using devops
Machine learning models continuous deployment on azure using devopsMachine learning models continuous deployment on azure using devops
Machine learning models continuous deployment on azure using devops
 
Building infrastructure as code with typescript and aws cdk
Building infrastructure as code with typescript and aws cdkBuilding infrastructure as code with typescript and aws cdk
Building infrastructure as code with typescript and aws cdk
 
PHP Serverless in ambiente AWS
PHP Serverless in ambiente AWSPHP Serverless in ambiente AWS
PHP Serverless in ambiente AWS
 
Livin' with Docker - dallo sviluppo alla produzione
Livin' with Docker - dallo sviluppo alla produzioneLivin' with Docker - dallo sviluppo alla produzione
Livin' with Docker - dallo sviluppo alla produzione
 
Prototipazione Low-Code con AWS Step Functions
Prototipazione Low-Code con AWS Step FunctionsPrototipazione Low-Code con AWS Step Functions
Prototipazione Low-Code con AWS Step Functions
 
Tutto quello che non vi hanno mai detto su Azure Integration Services (Logic ...
Tutto quello che non vi hanno mai detto su Azure Integration Services (Logic ...Tutto quello che non vi hanno mai detto su Azure Integration Services (Logic ...
Tutto quello che non vi hanno mai detto su Azure Integration Services (Logic ...
 
KDE Plasma widgets
KDE Plasma widgetsKDE Plasma widgets
KDE Plasma widgets
 
Webcast - Introduzione a Visual Studio Online
Webcast - Introduzione a Visual Studio OnlineWebcast - Introduzione a Visual Studio Online
Webcast - Introduzione a Visual Studio Online
 

Mehr von Codemotion

Mehr von Codemotion (20)

Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
 
Pompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending storyPompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending story
 
Pastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storiaPastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storia
 
Pennisi - Essere Richard Altwasser
Pennisi - Essere Richard AltwasserPennisi - Essere Richard Altwasser
Pennisi - Essere Richard Altwasser
 
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
 
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
 
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
 
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 - Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
 
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
 
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
 
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
 
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
 
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
 
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
 
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
 
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
 
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
 
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
 
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
 
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
 

Andrea Ceroni - Alexa, please deploy my Azure architecture - Codemotion Rome 2019

Hinweis der Redaktion

  1. In questa sessione proviamo a mettere insieme Alexa e Microsoft Azure per vedere se è possibile fare operazioni di CI-CD come il deploy o la build di progetti utilizzando comandi vocali ma non solo, proveremo anche a crere servizi, quindi la parte di infrastruttura, sui cui poi fare il deploy dei nostri progetti tutti sapete cosa è Alexa? ...è l'assitente vocale di Amazon che ormai è fuori da diversi anni ma sembra che, almeno da noi abbiamo fatto il botto solo lo scorso anno amazon ha praticamente seminato device echo ovunque
  2. quello che vedremo è ancora solo un esperimento, non di certo pronto per poter essere utilizzato però c'è la voglia di sperimentare qualcosa di nuovo per fare in modo diverso le stesse cose ci avete mai pensato? ma se un giorno non fosse più così useremmo la voce per fare alcune cose oppure continueremmo a cliccare usare la voce ed essere sicuri che dall'altra parte c'è qualcuno o "qualcosa" che capisce permette di svolgere molte più cose in parallelo ma la cosa bella è che ci verrebbe naturale così come è naturale parlare con i colleghi del team