SlideShare ist ein Scribd-Unternehmen logo
1 von 64
@AlexPshul
When IoT Meets Serverless
From Design to Production and Monitoring
Alex Pshul
Software Architect & Consultant
@AlexPshul
alex@pshul.com
http://pshul.com
http://codevalue.net
@AlexPshul
About Me
Alex Pshul
 Architect, Consultant and lecturer
 More than 9 years of hands on experience
 Talk to me about:
 Software Development
 Hardware and Gadgets
 Gaming
 Animals
@AlexPshul
CodeValue is great! But…
@AlexPshul
Free Spots
32
@AlexPshul
Traditional Architecture
Devices communicators
WebApp
Service A
Load balancer
Service B Service C
Backend Services
Storage
@AlexPshul
How About Serverless? WebApp
@AlexPshul
Serverless
Save time and money
@AlexPshul
Time & Money
 Pay per use
 Don’t worry about server management
 Quicker time to release
 Faster to deploy new functionality
 Don’t have to manage scaling and load balancing
 Focus on business logic instead of servers and boilerplate.
 Inherent Auto-Scalability
@AlexPshul
When to Serverless
 Logic can be disassembled into small modules
 Irregular Workloads
 Hard to predict load peaks
 Run closer to the user
 Kyiv to USA
 Kyiv to China
@AlexPshul
When not to Serverless
 Latency is important
 A consistently high and predictable workload
 Long running tasks that can’t be split into sub-tasks or multiple cycles
 Complex computing with high memory/CPU requirements.
@AlexPshul
Migrating to Serverless WebApp
@AlexPshul
Compute - FaaS
 FaaS – Function as a Service
 First mentioned by D. J. Wheeler in 1952- ‘The use of sub-routines in programmes’.
 Event-Driven serverless compute
 Examples:
 Azure Functions
 AWS Lambda
 Google Cloud Functions
@AlexPshul
FaaS – Azure Functions
 Trigger Oriented
 Input & Output Binding
 Dependency Injection
 Tackle Cold-Start performance hits by leaving host loaded
 Premium Plan
 AppService Plan
 Supports several frameworks and languages
 C#, JavaScript, Java, Python, F#, PowerShell & TypeScript
@AlexPshul
FaaS – Azure Functions
@AlexPshul
FaaS - Azure Functions
[FunctionName("EchoFunc")]
public static Task<IActionResult> EchoFunc(
[HttpTrigger(AuthorizationLevel.Anonymous, "get")]
HttpRequest request,
ILogger log)
{
string message = request.Query["message"];
//Do Something
var result = new OkObjectResult($"Message received: {message}");
return Task.FromResult((IActionResult) result);
}
@AlexPshul
FaaS – Azure Functions - Deployment
 Different ways to deploy your functions
 Visual Studio
 Using FTP
 Uploading a zip
 Continues deployment
 GitHub
 Dropbox
 Azure DevOps
 More…
@AlexPshul
Migrating to Serverless WebApp
@AlexPshul
Events
 Process a high number of events per second
 Decouple communication between components
 Store and transform events
 Integrate with other services
@AlexPshul
Events – Azure EventHub
 Can receive and process millions of events per second
 Support Apache Kafka clients
 Integrate with other azure services
 Provide SDKs for several frameworks
 .Net, Node.js, Java, Python, Go, C, Apache Storm
 Enable capturing and storing events
 Partitioning
@AlexPshul
Events – Azure EventHub
@AlexPshul
Migrating to Serverless WebApp
@AlexPshul
Communication
 Real-time
 Bi-directional
 Scale
 Secure
@AlexPshul
Communication – SignalR Service
 Fully managed
 Cross Platform
 Easily integrated with other Azure resources
 Such as Azure Functions
 Provides abstractions
 WebSockets, Long Polling or Server-sent events (SSE)
 Send message to all or to a subset of users
@AlexPshul
Integration
[FunctionName("UpdateUsers")]
public static Task OnDeviceUpdated(
[EventHubTrigger("device-updates", Connection = "EventHubConnectionAppSetting")] EventData myEventHubMessage,
[SignalR(HubName = "updates")]IAsyncCollector<SignalRMessage> signalRMessages,
ILogger log)
{
string message = Encoding.UTF8.GetString(myEventHubMessage.Body);
//Do something
return signalRMessages.AddAsync(new SignalRMessage
{
Target = "updateReceived",
Arguments = new[] { message }
});
}
@AlexPshul
Migrating to Serverless WebApp
@AlexPshul
IoT
Avoid reinventing the wheel
@AlexPshul
Do Not Reinvent the Wheel
D2C
Messages
C2D
Messages
Devices
Management
Security
Message
Routing
Deployment
@AlexPshul
IoT Hub
 One of Microsoft`s PaaS solutions for building IoT solutions
 Provides the infrastructure for working with devices
 Most of the work is defining the devices and coding
 SDKs for various languages (.NET, Java, Node.js, Python, C, iOS)
 Exposes various endpoints
 Integration with other Azure services
@AlexPshul
IoT Hub - Tiers
 Each tier has 3 paid editions
 Each tier provides higher throughput
 Makes the service more expensive
 Basic tier
 Limited features
 Cheaper (compared with same standard tier edition)
 Standard tier
 All features are available
 More expensive (compared with same basic tier edition)
 Contains a free edition
 Standard Free edition
 1 free IoT Hub allowed per subscription
 Encourages PoC projects
 Same features as the Standard tier (Not same throughput)
@AlexPshul
Do Not Reinvent the Wheel
D2C
Messages
C2D
Messages
Devices
Management
Security
Message
Routing
Deployment
@AlexPshul
Device to Cloud Messages
 Send device telemetry to the cloud
 Using an SDK
 Send a message directly using a protocol
 MQTT (+ over WebSocket)
 AMQP (+ over WebSocket)
 HTTPS
 Uses a connection string to identify the device in the IoT Hub
 Stored by IoT Hub, up to 7 days
 Up to 256-KB messages
 Frequency depends on the selected IoT Hub edition
@AlexPshul
Device to Cloud Messages
static async Task Main(string[] args)
{
// Initialize the device client object
DeviceClient deviceClient =
DeviceClient.CreateFromConnectionString("Device_Connection_String");
// Create the message
var data = new { Temperature = 30, Humidity = 37 };
var messageString = JsonConvert.SerializeObject(data);
Message message = new Message(Encoding.ASCII.GetBytes(messageString));
// Send the message
await deviceClient.SendEventAsync(message);
}
@AlexPshul
Do Not Reinvent the Wheel
D2C
Messages
C2D
Messages
Devices
Management
Security
Message
Routing
Deployment
D2C
Messages
@AlexPshul
Cloud to Device Messages – Regular Messages
 Not awaited
 Stored in the device queue
 If queue is full (>50) - results in an error
 Can Reject or Abandon messages (unless MQTT)
 Can set feedback for each message
@AlexPshul
Cloud to Device Messages
static async Task Main(string[] args)
{
// Initialize the device client object
DeviceClient deviceClient =
DeviceClient.CreateFromConnectionString("Device_Connection_String");
// Read message
Message receivedMessage = await deviceClient.ReceiveAsync();
string messageString = Encoding.ASCII.GetString(receivedMessage.GetBytes());
Console.WriteLine($"Received message: {messageString}");
// Acknowledge completion
await deviceClient.CompleteAsync(receivedMessage);}
}
Device
@AlexPshul
Cloud to Device Messages
static async Task Main(string[] args)
{
// Initialize the service client object
ServiceClient serviceClient =
ServiceClient.CreateFromConnectionString("Service_Connection_String");
// Create the message
byte[] messageBytes = Encoding.ASCII.GetBytes("Cloud to device message.");
Message message = new Message(messageBytes);
// Send to a specific device
await serviceClient.SendAsync("myDeviceId", message);
}
Backend
@AlexPshul
Cloud to Device Messages – Direct Methods
 Initiate an action on the device
 Receive immediate response
 Response contains
 Status Code
 Payload
@AlexPshul
Cloud to Device Messages
static async Task Main(string[] args)
{
// Initialize the device client object
DeviceClient deviceClient = DeviceClient.CreateFromConnectionString("Device_Connection_String");
// Register Method
await deviceClient.SetMethodHandlerAsync("GetData", GetData, null);
}
private static Task<MethodResponse> GetData(MethodRequest request, object userContext)
{
string someData = "My Cool Response!";
byte[] dataBytes = Encoding.ASCII.GetBytes(someData);
MethodResponse response = new MethodResponse(dataBytes, 200);
return Task.FromResult(response);
}
Device
@AlexPshul
Cloud to Device Messages
static async Task Main(string[] args)
{
// Initialize the service client object
ServiceClient serviceClient =
ServiceClient.CreateFromConnectionString("Service_Connection_String");
// Create method object
var methodInvocation = new CloudToDeviceMethod("GetData");
methodInvocation.SetPayloadJson("10");
// Invoke the direct method asynchronously and get the response from the simulated device.
CloudToDeviceMethodResult response =
await serviceClient.InvokeDeviceMethodAsync("MyDotnetDevice", methodInvocation);
Console.WriteLine($"Status: {response.Status}. Payload: {response.GetPayloadAsJson()}");
}
Backend
@AlexPshul
Do Not Reinvent the Wheel
C2D
Messages
Devices
Management
Security
Message
Routing
Deployment
D2C
Messages
C2D
Messages
@AlexPshul
Devices Management – Twin Properties
 Devices can have states
 No feedback, unless subscribing to IoT Hub messages
 Desired Properties
 C2D
 Shouldn’t represent device state
 Reported Properties
 D2C
 Should reflect the current device state
@AlexPshul
Devices Management – Query Devices
 Devices can be queried
 Example: Get only the devices that were installed today
 Supports queries by twin properties as well
 Built in functions that allow more complex scenarios
 Simple example
 SELECT * FROM devices
 Returns all devices and their data
@AlexPshul
Devices Management – Device Provisioning Service
 Zero-Touch Provisioning
 Single IoT Hub
 Multitenancy
 Solution Isolation
 Geo-Sharding
 Much more scenarios…
@AlexPshul
Devices Management – Device Provisioning Service
Enrollment List
Device Provisioning ServiceDevice IoT Hub
@AlexPshul
Do Not Reinvent the Wheel
C2D
Messages
Devices
Management
Security
Message
Routing
Deployment
D2C
Messages
Devices
Management
@AlexPshul
Security
 Uses permissions to grant access to each IoT Hub endpoint
 RegistryRead
 RegistryReadWrite
 ServiceConnect
 DeviceConnect
 X.509 certificates
 Existing device certificate
 CA-signed certificate
 Self-generated and self-signed certificate
@AlexPshul
Security – Custom device authentication
 Use the identity registry to configure credentials
@AlexPshul
Do Not Reinvent the Wheel
C2D
Messages
Devices
Management
Security
Message
Routing
Deployment
D2C
Messages
Security
@AlexPshul
Message Routing
 Messages have a common format across protocols
 Routes send messages to different endpoints based on a query
 IoT Hub handles routing duplication
 Supports various endpoint types
 Built-in endpoint
 Azure Blob Storage
 Service Bus Queues and Service Bus Topics
 Event Hubs
@AlexPshul
Message Routing – Built-in endpoint & Event Hubs
 The Build-in endpoint is just like any other Event Hub endpoint
 Monitor build-in endpoint messages using Azure IoT Hub Toolkit extension
for VS/VS Code
 Stops receiving messages when another route is created
 Unless a route to the default endpoint is created explicitly
 Can add other Event Hubs for different routes
@AlexPshul
Message Routing – Azure Blob Storage
 Writes batches of data to the blob storage
 When size is reached
 When a certain time windows has passed
 Supports AVRO format only
 JSON format available as a preview
(Not supported in East US, West US and West Europe)
 A file is created for each batch of data
@AlexPshul
Message Routing – Service Bus Queues and Topics
 Session and Duplicate Detection must be disabled
 Endpoint will appear as unreachable if above is not met
@AlexPshul
Do Not Reinvent the Wheel
C2D
Messages
Devices
Management
Security
Message
Routing
Deployment
D2C
Messages
Message
Routing
@AlexPshul
Demo
IoT Hub
Device Deployment
*Show a picture of IoT Hub*
@AlexPshul
Monitoring
Full Solution
@AlexPshul
The Problem
 It is hard to debug remote resources
 Applications are built of small little modules
 Resources can be created and disposed of according to scale
 A monitoring approach is easier to achieve
 And is needed in any case
@AlexPshul
Monitor – Azure Functions
 Logging is your friend
 An ILogger object can be injected to your function
 Use Application Insights to view logs
@AlexPshul
Integration
[FunctionName("UpdateUsers")]
public static Task OnDeviceUpdated(
[EventHubTrigger("device-updates", Connection = "EventHubConnectionAppSetting")] EventData myEventHubMessage,
[SignalR(HubName = "updates")]IAsyncCollector<SignalRMessage> signalRMessages,
ILogger log)
{
log.LogDebug($"Body received with {myEventHubMessage.Body.Count} bytes");
string message = Encoding.UTF8.GetString(myEventHubMessage.Body);
log.LogInformation($"Message Extracted: {message}");
//Do something
return signalRMessages.AddAsync(new SignalRMessage
{
Target = "updateReceived",
Arguments = new[] { message }
});
}
@AlexPshul
Demo
End-to-end
scenario
@AlexPshul
Summary
@AlexPshul
Traditional Architecture
Devices communicators
WebApp
Service A
Load balancer
Service B Service C
Backend Services
Storage
@AlexPshul
Serverless Architecture WebApp
@AlexPshul
Summary
 Exists on all major cloud providers
 Serverless is not always the option
 But very useful
 Saves money and time
 IoT solutions are available as PaaS
 Don’t reinvent the wheel
 Debugging is not easy, but it is possible
 Monitoring is your friend
Alex Pshul
Software Architect & Consultant
@AlexPshul
alex@pshul.com
http://pshul.com
http://codevalue.net

Weitere ähnliche Inhalte

Was ist angesagt?

Event-Driven Serverless Apps - Pop-up Loft Tel Aviv
Event-Driven Serverless Apps - Pop-up Loft Tel AvivEvent-Driven Serverless Apps - Pop-up Loft Tel Aviv
Event-Driven Serverless Apps - Pop-up Loft Tel AvivAmazon Web Services
 
IoT Hack Day: AWS Pop-up Loft Hack Series Sponsored by Intel
IoT Hack Day: AWS Pop-up Loft Hack Series Sponsored by IntelIoT Hack Day: AWS Pop-up Loft Hack Series Sponsored by Intel
IoT Hack Day: AWS Pop-up Loft Hack Series Sponsored by IntelAmazon Web Services
 
(MBL303) Build Mobile Apps for IoT Devices and IoT Apps for Devices
(MBL303) Build Mobile Apps for IoT Devices and IoT Apps for Devices(MBL303) Build Mobile Apps for IoT Devices and IoT Apps for Devices
(MBL303) Build Mobile Apps for IoT Devices and IoT Apps for DevicesAmazon Web Services
 
Custom Distributed Tracing in Azure Functions (2021-02-27)
Custom Distributed Tracing in Azure Functions (2021-02-27)Custom Distributed Tracing in Azure Functions (2021-02-27)
Custom Distributed Tracing in Azure Functions (2021-02-27)Paco de la Cruz
 
Lessons learned from writing over 300,000 lines of infrastructure code
Lessons learned from writing over 300,000 lines of infrastructure codeLessons learned from writing over 300,000 lines of infrastructure code
Lessons learned from writing over 300,000 lines of infrastructure codeYevgeniy Brikman
 
e-KTP Information Extraction with Google Cloud Function & Google Cloud Vision
e-KTP Information Extraction with Google Cloud Function & Google Cloud Visione-KTP Information Extraction with Google Cloud Function & Google Cloud Vision
e-KTP Information Extraction with Google Cloud Function & Google Cloud VisionImre Nagi
 
Event Sourcing in less than 20 minutes - With Akka and Java 8
Event Sourcing in less than 20 minutes - With Akka and Java 8Event Sourcing in less than 20 minutes - With Akka and Java 8
Event Sourcing in less than 20 minutes - With Akka and Java 8J On The Beach
 
What is Google Cloud Platform - GDG DevFest 18 Depok
What is Google Cloud Platform - GDG DevFest 18 DepokWhat is Google Cloud Platform - GDG DevFest 18 Depok
What is Google Cloud Platform - GDG DevFest 18 DepokImre Nagi
 
Infrastructure-as-code: bridging the gap between Devs and Ops
Infrastructure-as-code: bridging the gap between Devs and OpsInfrastructure-as-code: bridging the gap between Devs and Ops
Infrastructure-as-code: bridging the gap between Devs and OpsMykyta Protsenko
 
February 2016 Webinar Series - Best Practices for IoT Security in the Cloud
February 2016 Webinar Series - Best Practices for IoT Security in the CloudFebruary 2016 Webinar Series - Best Practices for IoT Security in the Cloud
February 2016 Webinar Series - Best Practices for IoT Security in the CloudAmazon Web Services
 
AWS IoT introduction
AWS IoT introductionAWS IoT introduction
AWS IoT introduction承翰 蔡
 
CQRS and Event Sourcing, An Alternative Architecture for DDD
CQRS and Event Sourcing, An Alternative Architecture for DDDCQRS and Event Sourcing, An Alternative Architecture for DDD
CQRS and Event Sourcing, An Alternative Architecture for DDDDennis Doomen
 
Google Cloud Platform Kubernetes Workshop IYTE
Google Cloud Platform Kubernetes Workshop IYTEGoogle Cloud Platform Kubernetes Workshop IYTE
Google Cloud Platform Kubernetes Workshop IYTEGokhan Boranalp
 
AWS Re:Invent - Securing HIPAA Compliant Apps in AWS
AWS Re:Invent - Securing HIPAA Compliant Apps in AWSAWS Re:Invent - Securing HIPAA Compliant Apps in AWS
AWS Re:Invent - Securing HIPAA Compliant Apps in AWSControl Group
 
Getting Started with AWS IoT, Devices & SDKs
Getting Started with AWS IoT, Devices & SDKsGetting Started with AWS IoT, Devices & SDKs
Getting Started with AWS IoT, Devices & SDKsAmazon Web Services
 
AWS IoT 및 Mobile Hub 서비스 소개 (김일호) :: re:Invent re:Cap Webinar 2015
AWS IoT 및 Mobile Hub 서비스 소개 (김일호) :: re:Invent re:Cap Webinar 2015AWS IoT 및 Mobile Hub 서비스 소개 (김일호) :: re:Invent re:Cap Webinar 2015
AWS IoT 및 Mobile Hub 서비스 소개 (김일호) :: re:Invent re:Cap Webinar 2015Amazon Web Services Korea
 
OpenStack- A ringside view of Services and Architecture
OpenStack- A ringside view of Services and ArchitectureOpenStack- A ringside view of Services and Architecture
OpenStack- A ringside view of Services and ArchitectureRitesh Somani
 

Was ist angesagt? (19)

Event-Driven Serverless Apps - Pop-up Loft Tel Aviv
Event-Driven Serverless Apps - Pop-up Loft Tel AvivEvent-Driven Serverless Apps - Pop-up Loft Tel Aviv
Event-Driven Serverless Apps - Pop-up Loft Tel Aviv
 
IoT Hack Day: AWS Pop-up Loft Hack Series Sponsored by Intel
IoT Hack Day: AWS Pop-up Loft Hack Series Sponsored by IntelIoT Hack Day: AWS Pop-up Loft Hack Series Sponsored by Intel
IoT Hack Day: AWS Pop-up Loft Hack Series Sponsored by Intel
 
Connecting to AWS IoT
Connecting to AWS IoTConnecting to AWS IoT
Connecting to AWS IoT
 
(MBL303) Build Mobile Apps for IoT Devices and IoT Apps for Devices
(MBL303) Build Mobile Apps for IoT Devices and IoT Apps for Devices(MBL303) Build Mobile Apps for IoT Devices and IoT Apps for Devices
(MBL303) Build Mobile Apps for IoT Devices and IoT Apps for Devices
 
Firebase overview
Firebase overviewFirebase overview
Firebase overview
 
Custom Distributed Tracing in Azure Functions (2021-02-27)
Custom Distributed Tracing in Azure Functions (2021-02-27)Custom Distributed Tracing in Azure Functions (2021-02-27)
Custom Distributed Tracing in Azure Functions (2021-02-27)
 
Lessons learned from writing over 300,000 lines of infrastructure code
Lessons learned from writing over 300,000 lines of infrastructure codeLessons learned from writing over 300,000 lines of infrastructure code
Lessons learned from writing over 300,000 lines of infrastructure code
 
e-KTP Information Extraction with Google Cloud Function & Google Cloud Vision
e-KTP Information Extraction with Google Cloud Function & Google Cloud Visione-KTP Information Extraction with Google Cloud Function & Google Cloud Vision
e-KTP Information Extraction with Google Cloud Function & Google Cloud Vision
 
Event Sourcing in less than 20 minutes - With Akka and Java 8
Event Sourcing in less than 20 minutes - With Akka and Java 8Event Sourcing in less than 20 minutes - With Akka and Java 8
Event Sourcing in less than 20 minutes - With Akka and Java 8
 
What is Google Cloud Platform - GDG DevFest 18 Depok
What is Google Cloud Platform - GDG DevFest 18 DepokWhat is Google Cloud Platform - GDG DevFest 18 Depok
What is Google Cloud Platform - GDG DevFest 18 Depok
 
Infrastructure-as-code: bridging the gap between Devs and Ops
Infrastructure-as-code: bridging the gap between Devs and OpsInfrastructure-as-code: bridging the gap between Devs and Ops
Infrastructure-as-code: bridging the gap between Devs and Ops
 
February 2016 Webinar Series - Best Practices for IoT Security in the Cloud
February 2016 Webinar Series - Best Practices for IoT Security in the CloudFebruary 2016 Webinar Series - Best Practices for IoT Security in the Cloud
February 2016 Webinar Series - Best Practices for IoT Security in the Cloud
 
AWS IoT introduction
AWS IoT introductionAWS IoT introduction
AWS IoT introduction
 
CQRS and Event Sourcing, An Alternative Architecture for DDD
CQRS and Event Sourcing, An Alternative Architecture for DDDCQRS and Event Sourcing, An Alternative Architecture for DDD
CQRS and Event Sourcing, An Alternative Architecture for DDD
 
Google Cloud Platform Kubernetes Workshop IYTE
Google Cloud Platform Kubernetes Workshop IYTEGoogle Cloud Platform Kubernetes Workshop IYTE
Google Cloud Platform Kubernetes Workshop IYTE
 
AWS Re:Invent - Securing HIPAA Compliant Apps in AWS
AWS Re:Invent - Securing HIPAA Compliant Apps in AWSAWS Re:Invent - Securing HIPAA Compliant Apps in AWS
AWS Re:Invent - Securing HIPAA Compliant Apps in AWS
 
Getting Started with AWS IoT, Devices & SDKs
Getting Started with AWS IoT, Devices & SDKsGetting Started with AWS IoT, Devices & SDKs
Getting Started with AWS IoT, Devices & SDKs
 
AWS IoT 및 Mobile Hub 서비스 소개 (김일호) :: re:Invent re:Cap Webinar 2015
AWS IoT 및 Mobile Hub 서비스 소개 (김일호) :: re:Invent re:Cap Webinar 2015AWS IoT 및 Mobile Hub 서비스 소개 (김일호) :: re:Invent re:Cap Webinar 2015
AWS IoT 및 Mobile Hub 서비스 소개 (김일호) :: re:Invent re:Cap Webinar 2015
 
OpenStack- A ringside view of Services and Architecture
OpenStack- A ringside view of Services and ArchitectureOpenStack- A ringside view of Services and Architecture
OpenStack- A ringside view of Services and Architecture
 

Ähnlich wie .NET Fest 2019. Alex Pshul. When IoT Meets Serverless

A serverless IoT Story From Design to Production and Monitoring
A serverless IoT Story From Design to Production and MonitoringA serverless IoT Story From Design to Production and Monitoring
A serverless IoT Story From Design to Production and MonitoringMoaid Hathot
 
Azure Internet of Things
Azure Internet of ThingsAzure Internet of Things
Azure Internet of ThingsAlon Fliess
 
Creating a Java Internet of Things Gateway
Creating a Java Internet of Things GatewayCreating a Java Internet of Things Gateway
Creating a Java Internet of Things GatewayEurotech
 
Essential Capabilities of an IoT Platform
Essential Capabilities of an IoT PlatformEssential Capabilities of an IoT Platform
Essential Capabilities of an IoT PlatformAmazon Web Services
 
Microsoft Azure IoT Hub (Sam Vanhoutte @TechdaysNL 2017)
Microsoft Azure IoT Hub (Sam Vanhoutte @TechdaysNL 2017)Microsoft Azure IoT Hub (Sam Vanhoutte @TechdaysNL 2017)
Microsoft Azure IoT Hub (Sam Vanhoutte @TechdaysNL 2017)Codit
 
Blazor and Azure Functions - a serverless approach
Blazor and Azure Functions - a serverless approachBlazor and Azure Functions - a serverless approach
Blazor and Azure Functions - a serverless approachAlex Pshul
 
Stephane Lapointe, Frank Boucher & Alexandre Brisebois: Les micro-services et...
Stephane Lapointe, Frank Boucher & Alexandre Brisebois: Les micro-services et...Stephane Lapointe, Frank Boucher & Alexandre Brisebois: Les micro-services et...
Stephane Lapointe, Frank Boucher & Alexandre Brisebois: Les micro-services et...MSDEVMTL
 
Implementare e gestire soluzioni per l'Internet of Things (IoT) in modo rapid...
Implementare e gestire soluzioni per l'Internet of Things (IoT) in modo rapid...Implementare e gestire soluzioni per l'Internet of Things (IoT) in modo rapid...
Implementare e gestire soluzioni per l'Internet of Things (IoT) in modo rapid...Amazon Web Services
 
Architecting IoT solutions with Microsoft Azure
Architecting IoT solutions with Microsoft AzureArchitecting IoT solutions with Microsoft Azure
Architecting IoT solutions with Microsoft AzureAlon Fliess
 
AWS IoT - Introduction - Pop-up Loft
AWS IoT - Introduction - Pop-up LoftAWS IoT - Introduction - Pop-up Loft
AWS IoT - Introduction - Pop-up LoftAmazon Web Services
 
OSCON 2013 - Planning an OpenStack Cloud - Tom Fifield
OSCON 2013 - Planning an OpenStack Cloud - Tom FifieldOSCON 2013 - Planning an OpenStack Cloud - Tom Fifield
OSCON 2013 - Planning an OpenStack Cloud - Tom FifieldOSCON Byrum
 
MongoDB IoT City Tour STUTTGART: The Microsoft Azure Platform for IoT
MongoDB IoT City Tour STUTTGART: The Microsoft Azure Platform for IoTMongoDB IoT City Tour STUTTGART: The Microsoft Azure Platform for IoT
MongoDB IoT City Tour STUTTGART: The Microsoft Azure Platform for IoTMongoDB
 
Azure Digital Twins.pdf
Azure Digital Twins.pdfAzure Digital Twins.pdf
Azure Digital Twins.pdfTomasz Kopacz
 
Winning the Lottery with Spring: A Microservices Case Study for the Dutch Lot...
Winning the Lottery with Spring: A Microservices Case Study for the Dutch Lot...Winning the Lottery with Spring: A Microservices Case Study for the Dutch Lot...
Winning the Lottery with Spring: A Microservices Case Study for the Dutch Lot...VMware Tanzu
 
Azure Service Fabric: The road ahead for microservices
Azure Service Fabric: The road ahead for microservicesAzure Service Fabric: The road ahead for microservices
Azure Service Fabric: The road ahead for microservicesMicrosoft Tech Community
 
Introducing AWS IoT - Interfacing with the Physical World - Technical 101
Introducing AWS IoT - Interfacing with the Physical World - Technical 101Introducing AWS IoT - Interfacing with the Physical World - Technical 101
Introducing AWS IoT - Interfacing with the Physical World - Technical 101Amazon Web Services
 

Ähnlich wie .NET Fest 2019. Alex Pshul. When IoT Meets Serverless (20)

A serverless IoT Story From Design to Production and Monitoring
A serverless IoT Story From Design to Production and MonitoringA serverless IoT Story From Design to Production and Monitoring
A serverless IoT Story From Design to Production and Monitoring
 
Azure Internet of Things
Azure Internet of ThingsAzure Internet of Things
Azure Internet of Things
 
What Is Happening At The Edge
What Is Happening At The EdgeWhat Is Happening At The Edge
What Is Happening At The Edge
 
Creating a Java Internet of Things Gateway
Creating a Java Internet of Things GatewayCreating a Java Internet of Things Gateway
Creating a Java Internet of Things Gateway
 
Essential Capabilities of an IoT Platform
Essential Capabilities of an IoT PlatformEssential Capabilities of an IoT Platform
Essential Capabilities of an IoT Platform
 
Microsoft Azure IoT Hub (Sam Vanhoutte @TechdaysNL 2017)
Microsoft Azure IoT Hub (Sam Vanhoutte @TechdaysNL 2017)Microsoft Azure IoT Hub (Sam Vanhoutte @TechdaysNL 2017)
Microsoft Azure IoT Hub (Sam Vanhoutte @TechdaysNL 2017)
 
Blazor and Azure Functions - a serverless approach
Blazor and Azure Functions - a serverless approachBlazor and Azure Functions - a serverless approach
Blazor and Azure Functions - a serverless approach
 
Stephane Lapointe, Frank Boucher & Alexandre Brisebois: Les micro-services et...
Stephane Lapointe, Frank Boucher & Alexandre Brisebois: Les micro-services et...Stephane Lapointe, Frank Boucher & Alexandre Brisebois: Les micro-services et...
Stephane Lapointe, Frank Boucher & Alexandre Brisebois: Les micro-services et...
 
Implementare e gestire soluzioni per l'Internet of Things (IoT) in modo rapid...
Implementare e gestire soluzioni per l'Internet of Things (IoT) in modo rapid...Implementare e gestire soluzioni per l'Internet of Things (IoT) in modo rapid...
Implementare e gestire soluzioni per l'Internet of Things (IoT) in modo rapid...
 
Architecting IoT solutions with Microsoft Azure
Architecting IoT solutions with Microsoft AzureArchitecting IoT solutions with Microsoft Azure
Architecting IoT solutions with Microsoft Azure
 
AWS IoT Webinar
AWS IoT WebinarAWS IoT Webinar
AWS IoT Webinar
 
AWS IoT - Introduction - Pop-up Loft
AWS IoT - Introduction - Pop-up LoftAWS IoT - Introduction - Pop-up Loft
AWS IoT - Introduction - Pop-up Loft
 
OSCON 2013 - Planning an OpenStack Cloud - Tom Fifield
OSCON 2013 - Planning an OpenStack Cloud - Tom FifieldOSCON 2013 - Planning an OpenStack Cloud - Tom Fifield
OSCON 2013 - Planning an OpenStack Cloud - Tom Fifield
 
AWS IoT Deep Dive
AWS IoT Deep DiveAWS IoT Deep Dive
AWS IoT Deep Dive
 
MongoDB IoT City Tour STUTTGART: The Microsoft Azure Platform for IoT
MongoDB IoT City Tour STUTTGART: The Microsoft Azure Platform for IoTMongoDB IoT City Tour STUTTGART: The Microsoft Azure Platform for IoT
MongoDB IoT City Tour STUTTGART: The Microsoft Azure Platform for IoT
 
Azure Digital Twins.pdf
Azure Digital Twins.pdfAzure Digital Twins.pdf
Azure Digital Twins.pdf
 
Winning the Lottery with Spring: A Microservices Case Study for the Dutch Lot...
Winning the Lottery with Spring: A Microservices Case Study for the Dutch Lot...Winning the Lottery with Spring: A Microservices Case Study for the Dutch Lot...
Winning the Lottery with Spring: A Microservices Case Study for the Dutch Lot...
 
IoT on azure
IoT on azureIoT on azure
IoT on azure
 
Azure Service Fabric: The road ahead for microservices
Azure Service Fabric: The road ahead for microservicesAzure Service Fabric: The road ahead for microservices
Azure Service Fabric: The road ahead for microservices
 
Introducing AWS IoT - Interfacing with the Physical World - Technical 101
Introducing AWS IoT - Interfacing with the Physical World - Technical 101Introducing AWS IoT - Interfacing with the Physical World - Technical 101
Introducing AWS IoT - Interfacing with the Physical World - Technical 101
 

Mehr von NETFest

.NET Fest 2019. Николай Балакин. Микрооптимизации в мире .NET
.NET Fest 2019. Николай Балакин. Микрооптимизации в мире .NET.NET Fest 2019. Николай Балакин. Микрооптимизации в мире .NET
.NET Fest 2019. Николай Балакин. Микрооптимизации в мире .NETNETFest
 
.NET Fest 2019. Сергей Калинец. Efficient Microservice Communication with .NE...
.NET Fest 2019. Сергей Калинец. Efficient Microservice Communication with .NE....NET Fest 2019. Сергей Калинец. Efficient Microservice Communication with .NE...
.NET Fest 2019. Сергей Калинец. Efficient Microservice Communication with .NE...NETFest
 
.NET Fest 2019. Оля Гавриш. .NET Core 3.0 и будущее .NET
.NET Fest 2019. Оля Гавриш. .NET Core 3.0 и будущее .NET.NET Fest 2019. Оля Гавриш. .NET Core 3.0 и будущее .NET
.NET Fest 2019. Оля Гавриш. .NET Core 3.0 и будущее .NETNETFest
 
.NET Fest 2019. Оля Гавриш. Машинное обучение для .NET программистов
.NET Fest 2019. Оля Гавриш. Машинное обучение для .NET программистов.NET Fest 2019. Оля Гавриш. Машинное обучение для .NET программистов
.NET Fest 2019. Оля Гавриш. Машинное обучение для .NET программистовNETFest
 
.NET Fest 2019. Roberto Freato. Provisioning Azure PaaS fluently with Managem...
.NET Fest 2019. Roberto Freato. Provisioning Azure PaaS fluently with Managem....NET Fest 2019. Roberto Freato. Provisioning Azure PaaS fluently with Managem...
.NET Fest 2019. Roberto Freato. Provisioning Azure PaaS fluently with Managem...NETFest
 
.NET Fest 2019. Halil Ibrahim Kalkan. Implementing Domain Driven Design
.NET Fest 2019. Halil Ibrahim Kalkan. Implementing Domain Driven Design.NET Fest 2019. Halil Ibrahim Kalkan. Implementing Domain Driven Design
.NET Fest 2019. Halil Ibrahim Kalkan. Implementing Domain Driven DesignNETFest
 
.NET Fest 2019. Сергій Бута. Feature Toggles: Dynamic Configuration at Wirex
.NET Fest 2019. Сергій Бута. Feature Toggles: Dynamic Configuration at Wirex.NET Fest 2019. Сергій Бута. Feature Toggles: Dynamic Configuration at Wirex
.NET Fest 2019. Сергій Бута. Feature Toggles: Dynamic Configuration at WirexNETFest
 
.NET Fest 2019. Michael Staib. Hot Chocolate: GraphQL Schema Stitching with A...
.NET Fest 2019. Michael Staib. Hot Chocolate: GraphQL Schema Stitching with A....NET Fest 2019. Michael Staib. Hot Chocolate: GraphQL Schema Stitching with A...
.NET Fest 2019. Michael Staib. Hot Chocolate: GraphQL Schema Stitching with A...NETFest
 
.NET Fest 2019. Андрей Литвинов. Async lifetime tests with xUnit and AutoFixture
.NET Fest 2019. Андрей Литвинов. Async lifetime tests with xUnit and AutoFixture.NET Fest 2019. Андрей Литвинов. Async lifetime tests with xUnit and AutoFixture
.NET Fest 2019. Андрей Литвинов. Async lifetime tests with xUnit and AutoFixtureNETFest
 
.NET Fest 2019. Анатолий Колесник. Love, Death & F# Tests
.NET Fest 2019. Анатолий Колесник. Love, Death & F# Tests.NET Fest 2019. Анатолий Колесник. Love, Death & F# Tests
.NET Fest 2019. Анатолий Колесник. Love, Death & F# TestsNETFest
 
.NET Fest 2019. Алексей Голуб. Монадные парсер-комбинаторы в C# (простой спос...
.NET Fest 2019. Алексей Голуб. Монадные парсер-комбинаторы в C# (простой спос....NET Fest 2019. Алексей Голуб. Монадные парсер-комбинаторы в C# (простой спос...
.NET Fest 2019. Алексей Голуб. Монадные парсер-комбинаторы в C# (простой спос...NETFest
 
.NET Fest 2019. Roberto Freato. Azure App Service deep dive
.NET Fest 2019. Roberto Freato. Azure App Service deep dive.NET Fest 2019. Roberto Freato. Azure App Service deep dive
.NET Fest 2019. Roberto Freato. Azure App Service deep diveNETFest
 
.NET Fest 2019. Леонид Молотиевский. DotNet Core in production
.NET Fest 2019. Леонид Молотиевский. DotNet Core in production.NET Fest 2019. Леонид Молотиевский. DotNet Core in production
.NET Fest 2019. Леонид Молотиевский. DotNet Core in productionNETFest
 
.NET Fest 2019. Александр Демчук. How to measure relationships within the Com...
.NET Fest 2019. Александр Демчук. How to measure relationships within the Com....NET Fest 2019. Александр Демчук. How to measure relationships within the Com...
.NET Fest 2019. Александр Демчук. How to measure relationships within the Com...NETFest
 
.NET Fest 2019. Anna Melashkina та Philipp Bauknecht. Dragons in a Mixed Real...
.NET Fest 2019. Anna Melashkina та Philipp Bauknecht. Dragons in a Mixed Real....NET Fest 2019. Anna Melashkina та Philipp Bauknecht. Dragons in a Mixed Real...
.NET Fest 2019. Anna Melashkina та Philipp Bauknecht. Dragons in a Mixed Real...NETFest
 
.NET Fest 2019. Alex Thissen. Architecting .NET solutions in a Docker ecosystem
.NET Fest 2019. Alex Thissen. Architecting .NET solutions in a Docker ecosystem.NET Fest 2019. Alex Thissen. Architecting .NET solutions in a Docker ecosystem
.NET Fest 2019. Alex Thissen. Architecting .NET solutions in a Docker ecosystemNETFest
 
.NET Fest 2019. Stas Lebedenko. Practical serverless use cases in Azure with ...
.NET Fest 2019. Stas Lebedenko. Practical serverless use cases in Azure with ....NET Fest 2019. Stas Lebedenko. Practical serverless use cases in Azure with ...
.NET Fest 2019. Stas Lebedenko. Practical serverless use cases in Azure with ...NETFest
 
.NET Fest 2019. Сергей Медведев. How serverless makes Integration TDD a reali...
.NET Fest 2019. Сергей Медведев. How serverless makes Integration TDD a reali....NET Fest 2019. Сергей Медведев. How serverless makes Integration TDD a reali...
.NET Fest 2019. Сергей Медведев. How serverless makes Integration TDD a reali...NETFest
 
.NET Fest 2019. Сергей Корж. Natural Language Processing in .NET
.NET Fest 2019. Сергей Корж. Natural Language Processing in .NET.NET Fest 2019. Сергей Корж. Natural Language Processing in .NET
.NET Fest 2019. Сергей Корж. Natural Language Processing in .NETNETFest
 
.NET Fest 2019. Eran Stiller. Create Your Own Serverless PKI with .NET & Azur...
.NET Fest 2019. Eran Stiller. Create Your Own Serverless PKI with .NET & Azur....NET Fest 2019. Eran Stiller. Create Your Own Serverless PKI with .NET & Azur...
.NET Fest 2019. Eran Stiller. Create Your Own Serverless PKI with .NET & Azur...NETFest
 

Mehr von NETFest (20)

.NET Fest 2019. Николай Балакин. Микрооптимизации в мире .NET
.NET Fest 2019. Николай Балакин. Микрооптимизации в мире .NET.NET Fest 2019. Николай Балакин. Микрооптимизации в мире .NET
.NET Fest 2019. Николай Балакин. Микрооптимизации в мире .NET
 
.NET Fest 2019. Сергей Калинец. Efficient Microservice Communication with .NE...
.NET Fest 2019. Сергей Калинец. Efficient Microservice Communication with .NE....NET Fest 2019. Сергей Калинец. Efficient Microservice Communication with .NE...
.NET Fest 2019. Сергей Калинец. Efficient Microservice Communication with .NE...
 
.NET Fest 2019. Оля Гавриш. .NET Core 3.0 и будущее .NET
.NET Fest 2019. Оля Гавриш. .NET Core 3.0 и будущее .NET.NET Fest 2019. Оля Гавриш. .NET Core 3.0 и будущее .NET
.NET Fest 2019. Оля Гавриш. .NET Core 3.0 и будущее .NET
 
.NET Fest 2019. Оля Гавриш. Машинное обучение для .NET программистов
.NET Fest 2019. Оля Гавриш. Машинное обучение для .NET программистов.NET Fest 2019. Оля Гавриш. Машинное обучение для .NET программистов
.NET Fest 2019. Оля Гавриш. Машинное обучение для .NET программистов
 
.NET Fest 2019. Roberto Freato. Provisioning Azure PaaS fluently with Managem...
.NET Fest 2019. Roberto Freato. Provisioning Azure PaaS fluently with Managem....NET Fest 2019. Roberto Freato. Provisioning Azure PaaS fluently with Managem...
.NET Fest 2019. Roberto Freato. Provisioning Azure PaaS fluently with Managem...
 
.NET Fest 2019. Halil Ibrahim Kalkan. Implementing Domain Driven Design
.NET Fest 2019. Halil Ibrahim Kalkan. Implementing Domain Driven Design.NET Fest 2019. Halil Ibrahim Kalkan. Implementing Domain Driven Design
.NET Fest 2019. Halil Ibrahim Kalkan. Implementing Domain Driven Design
 
.NET Fest 2019. Сергій Бута. Feature Toggles: Dynamic Configuration at Wirex
.NET Fest 2019. Сергій Бута. Feature Toggles: Dynamic Configuration at Wirex.NET Fest 2019. Сергій Бута. Feature Toggles: Dynamic Configuration at Wirex
.NET Fest 2019. Сергій Бута. Feature Toggles: Dynamic Configuration at Wirex
 
.NET Fest 2019. Michael Staib. Hot Chocolate: GraphQL Schema Stitching with A...
.NET Fest 2019. Michael Staib. Hot Chocolate: GraphQL Schema Stitching with A....NET Fest 2019. Michael Staib. Hot Chocolate: GraphQL Schema Stitching with A...
.NET Fest 2019. Michael Staib. Hot Chocolate: GraphQL Schema Stitching with A...
 
.NET Fest 2019. Андрей Литвинов. Async lifetime tests with xUnit and AutoFixture
.NET Fest 2019. Андрей Литвинов. Async lifetime tests with xUnit and AutoFixture.NET Fest 2019. Андрей Литвинов. Async lifetime tests with xUnit and AutoFixture
.NET Fest 2019. Андрей Литвинов. Async lifetime tests with xUnit and AutoFixture
 
.NET Fest 2019. Анатолий Колесник. Love, Death & F# Tests
.NET Fest 2019. Анатолий Колесник. Love, Death & F# Tests.NET Fest 2019. Анатолий Колесник. Love, Death & F# Tests
.NET Fest 2019. Анатолий Колесник. Love, Death & F# Tests
 
.NET Fest 2019. Алексей Голуб. Монадные парсер-комбинаторы в C# (простой спос...
.NET Fest 2019. Алексей Голуб. Монадные парсер-комбинаторы в C# (простой спос....NET Fest 2019. Алексей Голуб. Монадные парсер-комбинаторы в C# (простой спос...
.NET Fest 2019. Алексей Голуб. Монадные парсер-комбинаторы в C# (простой спос...
 
.NET Fest 2019. Roberto Freato. Azure App Service deep dive
.NET Fest 2019. Roberto Freato. Azure App Service deep dive.NET Fest 2019. Roberto Freato. Azure App Service deep dive
.NET Fest 2019. Roberto Freato. Azure App Service deep dive
 
.NET Fest 2019. Леонид Молотиевский. DotNet Core in production
.NET Fest 2019. Леонид Молотиевский. DotNet Core in production.NET Fest 2019. Леонид Молотиевский. DotNet Core in production
.NET Fest 2019. Леонид Молотиевский. DotNet Core in production
 
.NET Fest 2019. Александр Демчук. How to measure relationships within the Com...
.NET Fest 2019. Александр Демчук. How to measure relationships within the Com....NET Fest 2019. Александр Демчук. How to measure relationships within the Com...
.NET Fest 2019. Александр Демчук. How to measure relationships within the Com...
 
.NET Fest 2019. Anna Melashkina та Philipp Bauknecht. Dragons in a Mixed Real...
.NET Fest 2019. Anna Melashkina та Philipp Bauknecht. Dragons in a Mixed Real....NET Fest 2019. Anna Melashkina та Philipp Bauknecht. Dragons in a Mixed Real...
.NET Fest 2019. Anna Melashkina та Philipp Bauknecht. Dragons in a Mixed Real...
 
.NET Fest 2019. Alex Thissen. Architecting .NET solutions in a Docker ecosystem
.NET Fest 2019. Alex Thissen. Architecting .NET solutions in a Docker ecosystem.NET Fest 2019. Alex Thissen. Architecting .NET solutions in a Docker ecosystem
.NET Fest 2019. Alex Thissen. Architecting .NET solutions in a Docker ecosystem
 
.NET Fest 2019. Stas Lebedenko. Practical serverless use cases in Azure with ...
.NET Fest 2019. Stas Lebedenko. Practical serverless use cases in Azure with ....NET Fest 2019. Stas Lebedenko. Practical serverless use cases in Azure with ...
.NET Fest 2019. Stas Lebedenko. Practical serverless use cases in Azure with ...
 
.NET Fest 2019. Сергей Медведев. How serverless makes Integration TDD a reali...
.NET Fest 2019. Сергей Медведев. How serverless makes Integration TDD a reali....NET Fest 2019. Сергей Медведев. How serverless makes Integration TDD a reali...
.NET Fest 2019. Сергей Медведев. How serverless makes Integration TDD a reali...
 
.NET Fest 2019. Сергей Корж. Natural Language Processing in .NET
.NET Fest 2019. Сергей Корж. Natural Language Processing in .NET.NET Fest 2019. Сергей Корж. Natural Language Processing in .NET
.NET Fest 2019. Сергей Корж. Natural Language Processing in .NET
 
.NET Fest 2019. Eran Stiller. Create Your Own Serverless PKI with .NET & Azur...
.NET Fest 2019. Eran Stiller. Create Your Own Serverless PKI with .NET & Azur....NET Fest 2019. Eran Stiller. Create Your Own Serverless PKI with .NET & Azur...
.NET Fest 2019. Eran Stiller. Create Your Own Serverless PKI with .NET & Azur...
 

Kürzlich hochgeladen

“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...Marc Dusseiller Dusjagr
 
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...Krashi Coaching
 
A Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy ReformA Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy ReformChameera Dedduwage
 
Sanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdfSanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdfsanyamsingh5019
 
Accessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impactAccessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impactdawncurless
 
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdfssuser54595a
 
Beyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global ImpactBeyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global ImpactPECB
 
1029-Danh muc Sach Giao Khoa khoi 6.pdf
1029-Danh muc Sach Giao Khoa khoi  6.pdf1029-Danh muc Sach Giao Khoa khoi  6.pdf
1029-Danh muc Sach Giao Khoa khoi 6.pdfQucHHunhnh
 
How to Make a Pirate ship Primary Education.pptx
How to Make a Pirate ship Primary Education.pptxHow to Make a Pirate ship Primary Education.pptx
How to Make a Pirate ship Primary Education.pptxmanuelaromero2013
 
CARE OF CHILD IN INCUBATOR..........pptx
CARE OF CHILD IN INCUBATOR..........pptxCARE OF CHILD IN INCUBATOR..........pptx
CARE OF CHILD IN INCUBATOR..........pptxGaneshChakor2
 
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptxSOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptxiammrhaywood
 
Grant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingGrant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingTechSoup
 
The basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptxThe basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptxheathfieldcps1
 
Web & Social Media Analytics Previous Year Question Paper.pdf
Web & Social Media Analytics Previous Year Question Paper.pdfWeb & Social Media Analytics Previous Year Question Paper.pdf
Web & Social Media Analytics Previous Year Question Paper.pdfJayanti Pande
 
Z Score,T Score, Percential Rank and Box Plot Graph
Z Score,T Score, Percential Rank and Box Plot GraphZ Score,T Score, Percential Rank and Box Plot Graph
Z Score,T Score, Percential Rank and Box Plot GraphThiyagu K
 
Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104misteraugie
 
Advanced Views - Calendar View in Odoo 17
Advanced Views - Calendar View in Odoo 17Advanced Views - Calendar View in Odoo 17
Advanced Views - Calendar View in Odoo 17Celine George
 
Separation of Lanthanides/ Lanthanides and Actinides
Separation of Lanthanides/ Lanthanides and ActinidesSeparation of Lanthanides/ Lanthanides and Actinides
Separation of Lanthanides/ Lanthanides and ActinidesFatimaKhan178732
 

Kürzlich hochgeladen (20)

“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
 
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
 
A Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy ReformA Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy Reform
 
Sanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdfSanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdf
 
Accessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impactAccessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impact
 
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf
 
Beyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global ImpactBeyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global Impact
 
TataKelola dan KamSiber Kecerdasan Buatan v022.pdf
TataKelola dan KamSiber Kecerdasan Buatan v022.pdfTataKelola dan KamSiber Kecerdasan Buatan v022.pdf
TataKelola dan KamSiber Kecerdasan Buatan v022.pdf
 
1029-Danh muc Sach Giao Khoa khoi 6.pdf
1029-Danh muc Sach Giao Khoa khoi  6.pdf1029-Danh muc Sach Giao Khoa khoi  6.pdf
1029-Danh muc Sach Giao Khoa khoi 6.pdf
 
How to Make a Pirate ship Primary Education.pptx
How to Make a Pirate ship Primary Education.pptxHow to Make a Pirate ship Primary Education.pptx
How to Make a Pirate ship Primary Education.pptx
 
CARE OF CHILD IN INCUBATOR..........pptx
CARE OF CHILD IN INCUBATOR..........pptxCARE OF CHILD IN INCUBATOR..........pptx
CARE OF CHILD IN INCUBATOR..........pptx
 
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptxSOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
 
Grant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingGrant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy Consulting
 
The basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptxThe basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptx
 
Web & Social Media Analytics Previous Year Question Paper.pdf
Web & Social Media Analytics Previous Year Question Paper.pdfWeb & Social Media Analytics Previous Year Question Paper.pdf
Web & Social Media Analytics Previous Year Question Paper.pdf
 
Mattingly "AI & Prompt Design: The Basics of Prompt Design"
Mattingly "AI & Prompt Design: The Basics of Prompt Design"Mattingly "AI & Prompt Design: The Basics of Prompt Design"
Mattingly "AI & Prompt Design: The Basics of Prompt Design"
 
Z Score,T Score, Percential Rank and Box Plot Graph
Z Score,T Score, Percential Rank and Box Plot GraphZ Score,T Score, Percential Rank and Box Plot Graph
Z Score,T Score, Percential Rank and Box Plot Graph
 
Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104
 
Advanced Views - Calendar View in Odoo 17
Advanced Views - Calendar View in Odoo 17Advanced Views - Calendar View in Odoo 17
Advanced Views - Calendar View in Odoo 17
 
Separation of Lanthanides/ Lanthanides and Actinides
Separation of Lanthanides/ Lanthanides and ActinidesSeparation of Lanthanides/ Lanthanides and Actinides
Separation of Lanthanides/ Lanthanides and Actinides
 

.NET Fest 2019. Alex Pshul. When IoT Meets Serverless

  • 1. @AlexPshul When IoT Meets Serverless From Design to Production and Monitoring Alex Pshul Software Architect & Consultant @AlexPshul alex@pshul.com http://pshul.com http://codevalue.net
  • 2. @AlexPshul About Me Alex Pshul  Architect, Consultant and lecturer  More than 9 years of hands on experience  Talk to me about:  Software Development  Hardware and Gadgets  Gaming  Animals
  • 5. @AlexPshul Traditional Architecture Devices communicators WebApp Service A Load balancer Service B Service C Backend Services Storage
  • 8. @AlexPshul Time & Money  Pay per use  Don’t worry about server management  Quicker time to release  Faster to deploy new functionality  Don’t have to manage scaling and load balancing  Focus on business logic instead of servers and boilerplate.  Inherent Auto-Scalability
  • 9. @AlexPshul When to Serverless  Logic can be disassembled into small modules  Irregular Workloads  Hard to predict load peaks  Run closer to the user  Kyiv to USA  Kyiv to China
  • 10. @AlexPshul When not to Serverless  Latency is important  A consistently high and predictable workload  Long running tasks that can’t be split into sub-tasks or multiple cycles  Complex computing with high memory/CPU requirements.
  • 12. @AlexPshul Compute - FaaS  FaaS – Function as a Service  First mentioned by D. J. Wheeler in 1952- ‘The use of sub-routines in programmes’.  Event-Driven serverless compute  Examples:  Azure Functions  AWS Lambda  Google Cloud Functions
  • 13. @AlexPshul FaaS – Azure Functions  Trigger Oriented  Input & Output Binding  Dependency Injection  Tackle Cold-Start performance hits by leaving host loaded  Premium Plan  AppService Plan  Supports several frameworks and languages  C#, JavaScript, Java, Python, F#, PowerShell & TypeScript
  • 15. @AlexPshul FaaS - Azure Functions [FunctionName("EchoFunc")] public static Task<IActionResult> EchoFunc( [HttpTrigger(AuthorizationLevel.Anonymous, "get")] HttpRequest request, ILogger log) { string message = request.Query["message"]; //Do Something var result = new OkObjectResult($"Message received: {message}"); return Task.FromResult((IActionResult) result); }
  • 16. @AlexPshul FaaS – Azure Functions - Deployment  Different ways to deploy your functions  Visual Studio  Using FTP  Uploading a zip  Continues deployment  GitHub  Dropbox  Azure DevOps  More…
  • 18. @AlexPshul Events  Process a high number of events per second  Decouple communication between components  Store and transform events  Integrate with other services
  • 19. @AlexPshul Events – Azure EventHub  Can receive and process millions of events per second  Support Apache Kafka clients  Integrate with other azure services  Provide SDKs for several frameworks  .Net, Node.js, Java, Python, Go, C, Apache Storm  Enable capturing and storing events  Partitioning
  • 23. @AlexPshul Communication – SignalR Service  Fully managed  Cross Platform  Easily integrated with other Azure resources  Such as Azure Functions  Provides abstractions  WebSockets, Long Polling or Server-sent events (SSE)  Send message to all or to a subset of users
  • 24. @AlexPshul Integration [FunctionName("UpdateUsers")] public static Task OnDeviceUpdated( [EventHubTrigger("device-updates", Connection = "EventHubConnectionAppSetting")] EventData myEventHubMessage, [SignalR(HubName = "updates")]IAsyncCollector<SignalRMessage> signalRMessages, ILogger log) { string message = Encoding.UTF8.GetString(myEventHubMessage.Body); //Do something return signalRMessages.AddAsync(new SignalRMessage { Target = "updateReceived", Arguments = new[] { message } }); }
  • 27. @AlexPshul Do Not Reinvent the Wheel D2C Messages C2D Messages Devices Management Security Message Routing Deployment
  • 28. @AlexPshul IoT Hub  One of Microsoft`s PaaS solutions for building IoT solutions  Provides the infrastructure for working with devices  Most of the work is defining the devices and coding  SDKs for various languages (.NET, Java, Node.js, Python, C, iOS)  Exposes various endpoints  Integration with other Azure services
  • 29. @AlexPshul IoT Hub - Tiers  Each tier has 3 paid editions  Each tier provides higher throughput  Makes the service more expensive  Basic tier  Limited features  Cheaper (compared with same standard tier edition)  Standard tier  All features are available  More expensive (compared with same basic tier edition)  Contains a free edition  Standard Free edition  1 free IoT Hub allowed per subscription  Encourages PoC projects  Same features as the Standard tier (Not same throughput)
  • 30. @AlexPshul Do Not Reinvent the Wheel D2C Messages C2D Messages Devices Management Security Message Routing Deployment
  • 31. @AlexPshul Device to Cloud Messages  Send device telemetry to the cloud  Using an SDK  Send a message directly using a protocol  MQTT (+ over WebSocket)  AMQP (+ over WebSocket)  HTTPS  Uses a connection string to identify the device in the IoT Hub  Stored by IoT Hub, up to 7 days  Up to 256-KB messages  Frequency depends on the selected IoT Hub edition
  • 32. @AlexPshul Device to Cloud Messages static async Task Main(string[] args) { // Initialize the device client object DeviceClient deviceClient = DeviceClient.CreateFromConnectionString("Device_Connection_String"); // Create the message var data = new { Temperature = 30, Humidity = 37 }; var messageString = JsonConvert.SerializeObject(data); Message message = new Message(Encoding.ASCII.GetBytes(messageString)); // Send the message await deviceClient.SendEventAsync(message); }
  • 33. @AlexPshul Do Not Reinvent the Wheel D2C Messages C2D Messages Devices Management Security Message Routing Deployment D2C Messages
  • 34. @AlexPshul Cloud to Device Messages – Regular Messages  Not awaited  Stored in the device queue  If queue is full (>50) - results in an error  Can Reject or Abandon messages (unless MQTT)  Can set feedback for each message
  • 35. @AlexPshul Cloud to Device Messages static async Task Main(string[] args) { // Initialize the device client object DeviceClient deviceClient = DeviceClient.CreateFromConnectionString("Device_Connection_String"); // Read message Message receivedMessage = await deviceClient.ReceiveAsync(); string messageString = Encoding.ASCII.GetString(receivedMessage.GetBytes()); Console.WriteLine($"Received message: {messageString}"); // Acknowledge completion await deviceClient.CompleteAsync(receivedMessage);} } Device
  • 36. @AlexPshul Cloud to Device Messages static async Task Main(string[] args) { // Initialize the service client object ServiceClient serviceClient = ServiceClient.CreateFromConnectionString("Service_Connection_String"); // Create the message byte[] messageBytes = Encoding.ASCII.GetBytes("Cloud to device message."); Message message = new Message(messageBytes); // Send to a specific device await serviceClient.SendAsync("myDeviceId", message); } Backend
  • 37. @AlexPshul Cloud to Device Messages – Direct Methods  Initiate an action on the device  Receive immediate response  Response contains  Status Code  Payload
  • 38. @AlexPshul Cloud to Device Messages static async Task Main(string[] args) { // Initialize the device client object DeviceClient deviceClient = DeviceClient.CreateFromConnectionString("Device_Connection_String"); // Register Method await deviceClient.SetMethodHandlerAsync("GetData", GetData, null); } private static Task<MethodResponse> GetData(MethodRequest request, object userContext) { string someData = "My Cool Response!"; byte[] dataBytes = Encoding.ASCII.GetBytes(someData); MethodResponse response = new MethodResponse(dataBytes, 200); return Task.FromResult(response); } Device
  • 39. @AlexPshul Cloud to Device Messages static async Task Main(string[] args) { // Initialize the service client object ServiceClient serviceClient = ServiceClient.CreateFromConnectionString("Service_Connection_String"); // Create method object var methodInvocation = new CloudToDeviceMethod("GetData"); methodInvocation.SetPayloadJson("10"); // Invoke the direct method asynchronously and get the response from the simulated device. CloudToDeviceMethodResult response = await serviceClient.InvokeDeviceMethodAsync("MyDotnetDevice", methodInvocation); Console.WriteLine($"Status: {response.Status}. Payload: {response.GetPayloadAsJson()}"); } Backend
  • 40. @AlexPshul Do Not Reinvent the Wheel C2D Messages Devices Management Security Message Routing Deployment D2C Messages C2D Messages
  • 41. @AlexPshul Devices Management – Twin Properties  Devices can have states  No feedback, unless subscribing to IoT Hub messages  Desired Properties  C2D  Shouldn’t represent device state  Reported Properties  D2C  Should reflect the current device state
  • 42. @AlexPshul Devices Management – Query Devices  Devices can be queried  Example: Get only the devices that were installed today  Supports queries by twin properties as well  Built in functions that allow more complex scenarios  Simple example  SELECT * FROM devices  Returns all devices and their data
  • 43. @AlexPshul Devices Management – Device Provisioning Service  Zero-Touch Provisioning  Single IoT Hub  Multitenancy  Solution Isolation  Geo-Sharding  Much more scenarios…
  • 44. @AlexPshul Devices Management – Device Provisioning Service Enrollment List Device Provisioning ServiceDevice IoT Hub
  • 45. @AlexPshul Do Not Reinvent the Wheel C2D Messages Devices Management Security Message Routing Deployment D2C Messages Devices Management
  • 46. @AlexPshul Security  Uses permissions to grant access to each IoT Hub endpoint  RegistryRead  RegistryReadWrite  ServiceConnect  DeviceConnect  X.509 certificates  Existing device certificate  CA-signed certificate  Self-generated and self-signed certificate
  • 47. @AlexPshul Security – Custom device authentication  Use the identity registry to configure credentials
  • 48. @AlexPshul Do Not Reinvent the Wheel C2D Messages Devices Management Security Message Routing Deployment D2C Messages Security
  • 49. @AlexPshul Message Routing  Messages have a common format across protocols  Routes send messages to different endpoints based on a query  IoT Hub handles routing duplication  Supports various endpoint types  Built-in endpoint  Azure Blob Storage  Service Bus Queues and Service Bus Topics  Event Hubs
  • 50. @AlexPshul Message Routing – Built-in endpoint & Event Hubs  The Build-in endpoint is just like any other Event Hub endpoint  Monitor build-in endpoint messages using Azure IoT Hub Toolkit extension for VS/VS Code  Stops receiving messages when another route is created  Unless a route to the default endpoint is created explicitly  Can add other Event Hubs for different routes
  • 51. @AlexPshul Message Routing – Azure Blob Storage  Writes batches of data to the blob storage  When size is reached  When a certain time windows has passed  Supports AVRO format only  JSON format available as a preview (Not supported in East US, West US and West Europe)  A file is created for each batch of data
  • 52. @AlexPshul Message Routing – Service Bus Queues and Topics  Session and Duplicate Detection must be disabled  Endpoint will appear as unreachable if above is not met
  • 53. @AlexPshul Do Not Reinvent the Wheel C2D Messages Devices Management Security Message Routing Deployment D2C Messages Message Routing
  • 56. @AlexPshul The Problem  It is hard to debug remote resources  Applications are built of small little modules  Resources can be created and disposed of according to scale  A monitoring approach is easier to achieve  And is needed in any case
  • 57. @AlexPshul Monitor – Azure Functions  Logging is your friend  An ILogger object can be injected to your function  Use Application Insights to view logs
  • 58. @AlexPshul Integration [FunctionName("UpdateUsers")] public static Task OnDeviceUpdated( [EventHubTrigger("device-updates", Connection = "EventHubConnectionAppSetting")] EventData myEventHubMessage, [SignalR(HubName = "updates")]IAsyncCollector<SignalRMessage> signalRMessages, ILogger log) { log.LogDebug($"Body received with {myEventHubMessage.Body.Count} bytes"); string message = Encoding.UTF8.GetString(myEventHubMessage.Body); log.LogInformation($"Message Extracted: {message}"); //Do something return signalRMessages.AddAsync(new SignalRMessage { Target = "updateReceived", Arguments = new[] { message } }); }
  • 61. @AlexPshul Traditional Architecture Devices communicators WebApp Service A Load balancer Service B Service C Backend Services Storage
  • 63. @AlexPshul Summary  Exists on all major cloud providers  Serverless is not always the option  But very useful  Saves money and time  IoT solutions are available as PaaS  Don’t reinvent the wheel  Debugging is not easy, but it is possible  Monitoring is your friend
  • 64. Alex Pshul Software Architect & Consultant @AlexPshul alex@pshul.com http://pshul.com http://codevalue.net