SlideShare ist ein Scribd-Unternehmen logo
1 von 92
Stephane Lapointe, Orckestra - stephane@stephanelapointe.net / @s_lapointe
Guy Barrette, freelance Architect/Developer - guy@guybarrette.com / @GuyBarrette
Francois Boucher, Lixar IT - fboucher@frankysnotes.com / @fboucheros
Alexandre Brisebois, Microsoft – alexandre.brisebois@microsoft.com / @brisebois
Today we’re going to learn about how
Microservices enable development and management
flexibility
Service Fabric is the platform for building applications with
a microservices design approach
Service Fabric is battle tested and provides a rich platform
for both development and management of services at
scale
1 Trillion
Messages delivered every
month with Event Hubs
100,000
New Azure customer
subscriptions/month
20Million
SQL database hours
used every day
>5Trillion
Storage transactions
every month
60Billion
Hits to Websites run on
Azure Web App Service
425Million
Azure Active
Directory Users
Azure Momentum
57%
Of Fortune 500 Companies
use Microsoft Azure
>50Trillion
Storage objects
in Azure
1.4 Million
SQL Databases Deployed
In Azure
“Microsoft is
growing its cloud
revenue faster than
Amazon” – Business
Insider 2016
AWS revenue grew about
69% but Microsoft Azure
revenue grew by 127%
What do these have in common?
Microservices
• Scales by cloning the app on multiple
servers/VMs/Containers
Monolithic application approach Microservices application approach
• A microservice application
separates functionality into
separate smaller services.
• Scales out by deploying each service
independently creating instances of these services
across servers/VMs/containers
• A monolith app contains domain
specific functionality and is
normally divided by functional
layers such as web, business and
data
App 1 App 2App 1
• Single monolithic database
• Tiers of specific technologies
State in Monolithic approach State in Microservices approach
• Graph of interconnected microservices
• State typically scoped to the microservice
• Variety of technologies used
• Remote Storage for cold data
stateless services with
separate stores
stateful
services
stateless
presentation
services
stateless
services
Plan
1 Monitor + Learn
ReleaseDevelop + Test
2
Development Production
4
3
Design/
Develop
Operate
Upgrade
•
•
•
•
A Microservice Platform
Public Cloud Other CloudsOn Premises
Private cloud
A Microservice Platform
Setting-up a
Cluster in AzureWhat Is
Azure Service Fabric?
 Next generation of PaaS on Azure
 Elastic scale, OS updates, SF updates
 Microservices platform for Windows and Linux
 DevOps, rolling upgrades, etc.
 Polycloud including on-premises
 Programming models
 Stateless Win32 apps written in any language (some feature not supported)
 Reliable Services: Stateless & stateful (for hot data; gives low-latency reads)
 OWIN/ASP.NET Core*
 Service Fabric is free of charge
 SDK: http://aka.ms/ServiceFabricSDK
Service Fabric is
• 1 role instance per VM
• Uneven utilization
• Low density
• Slow deployment & upgrade (bound to VM)
• Slow scaling and failure recovery
• Limited fault tolerance
• Many microservices per VM
• Even Utilization (by default, customizable)
• High density (customizable)
• Fast deployment & upgrade
• Fast scaling of independent microservices
• Tunable fast fault tolerance
Cloud Services vs Service Fabric
Azure Cloud Services
(Web & Worker Roles)
Azure Service Fabric
(Services)
Microsoft Azure Service Fabric
A platform for reliable, hyperscale, microservice-based applications
Azure
Windows
Server
Linux
Hosted Clouds
Windows
Server
Linux
Service Fabric
Private Clouds
Windows
Server
Linux
High Availability
Hyper-Scale
Hybrid Operations
High Density
microservices
Rolling Upgrades
Stateful services
Low Latency
Fast startup &
shutdown
Container Orchestration
& lifecycle management
Replication &
Failover
Simple
programming
models
Load balancing
Self-healingData Partitioning
Automated Rollback
Health
Monitoring
Placement
Constraints
Service Fabric Subsystems
Service discovery Reliability, Availability,
Replication, Service
Orchestration
Application lifecycle
Fault Inject,
Test in production
Federates a set of nodes to form a consistent scalable fabric
Secure point-to-point communication
Deployment,
Upgrade and
Monitoring
microservices
Windows OS
Windows OS Windows OS
Windows OS
Windows OS
Windows OS
Fabric
Node
Fabric
Node
Fabric
Node
Fabric
Node
Fabric
Node
Fabric
Node
 Set of OS instances (real or virtual) stitched together to form a pool of resources
 Cluster can scale to 1000s of machines, is self repairing, and scales-up or down
 Acts as environment-independent abstraction layer
Cluster
Datacenter (Azure, On Premises, Other Clouds )
Load
Balancer
PC/VM #1
Service Fabric
Your code, etc.
PC/VM #2
Service Fabric
Your code, etc. PC/VM #3
Service Fabric
Your code, etc.
PC/VM #4
Service Fabric
Your code, etc.
PC/VM #5
Service Fabric
Your code, etc.
Management to deploy
your code, etc.
(Port: 19080)
App Web Request
(Port: 80/443/?)
 Cluster Manager (ports 19080 [REST] & 19000 [TCP])
Performs cluster REST & PowerShell/FabricClient operations
 Failover Manager
Rebalances resources as nodes come/go
 Naming
Maps service instances to endpoints
 Image store (not on OneBox)
Contains your Application packages
 Upgrade Service (Azure only)
Coordinates upgrading SF itself with Azure’s SFRP
Service Fabric’s Infrastructure Services
Node #1
F
Node #2
C N I
Node #3
C F
Node #4
N I
Node #5
C
I
F
N
U
U
U
N F U
IC
Setting-up a
Cluster in AzureMicroservices with
Azure Service Fabric
App1 App2
Service Fabric Microservices
App Type Packages Service Fabric Cluster VMs
Guest Executables
• Bring any exe
• Any language
• Any programming model
• Packaged as Application
• Gets versioning, upgrade,
monitoring, health, etc.
Reliable Services
• Stateless & stateful services
• Concurrent, granular state
changes
• Use of the Reliable
Collections
• Transactions across
collections
• Full platform integration
Reliable Actors
• Stateless & stateful actor
objects
• Simplified programming
model
• Single Threaded model
• Great for scaled out compute
and state
• Reliable collections make it easy to build stateful services
• An evolution of .NET collections - for the cloud
• ReliableDictionary<T1,T2> and ReliableQueue<T>
Programming models: Reliable Services
Collections
• Single machine
• Single-threaded
Concurrent Collections
• Single machine
• Multi-threaded
Reliable Collections
• Multi-machine
• Replicated (HA)
• Persistence (durable)
• Asynchronous
• Transactional







protected override async Task RunAsync(CancellationToken cancellationToke)
{
var requestQueue = await this.StateManager.GetOrAddAsync<IReliableQueue<CustomerRecord>>(“requests");
var locationDictionary = await this.StateManager.GetOrAddAsync<IReliableDictionary<Guid, LocationInfo>>(“locs");
var personDictionary = await this.StateManager.GetOrAddAsync<IReliableDictionary<Guid, Person>>(“ppl");
var customerListDictionary = await this.StateManager.GetOrAddAsync<IReliableDictionary<Guid, object>>(“customers");
while (true)
{
cancellationToke.ThrowIfCancellationRequested();
Guid customerId = Guid.NewGuid();
using (var tx = this.StateManager.CreateTransaction())
{
var customerRequestResult = await requestQueue.TryDequeueAsync(tx);
await customerListDictionary.AddAsync(tx, customerId, new object());
await personDictionary.AddAsync(tx, customerId, customerRequestResult.Value.person);
await locationDictionary.AddAsync(tx, customerId, customerRequestResult.Value.locInfo);
await tx.CommitAsync();
}
}
}
Everything
happens or
nothing
happens!
Programming models: Reliable Actors
• Independent units of compute and state
• Large number of them executing in parallel
• Communicates using asynchronous messaging
• Single threaded execution
• Automatically created and dehydrated as necessary
Reliable Actors APIs Reliable Services APIs
Your problem space involves many small independent
units of state and logic
You need to maintain logic across multiple components
You want to work with single-threaded objects while still
being able to scale and maintain consistency
You want to use reliable collections (like .NET Dictionary
and Queue) to store and manage your state
You want the framework to manage the concurrency and
granularity of state
You want to control the granularity and concurrency of
your state
You want the platform to manage communication for
you
You want to manage the communication and control the
partitioning scheme for your service
Comparing Reliable Actors & Reliable Service
http://bit.ly/sf-setup
http://bit.ly/sf-lab-2
Setting-up a
Cluster in AzureApplication Packaging
& Deployment





<ServiceManifest Name="QueueService" Version="1.0">
<ServiceTypes>
<StatefulServiceType ServiceTypeName="QueueServiceType" HasPersistedState="true" />
</ServiceTypes>
<CodePackage Name="Code" Version="1.0">
<EntryPoint>
<ExeHost>
<Program>ServiceHost.exe</Program>
</ExeHost>
</EntryPoint>
</CodePackage>
<ConfigPackage Name="Config" Version="1.0" />
<DataPackage Name="Data" Version="1.0" />
</ServiceManifest>








Cluster
“Fabrikam” eStore App
“G” Gallery Svc
“P” Payment Svc
eStore App Type
Gallery Svc Type
Payment Svc Type
“Contoso” eStore App
“G” Gallery Svc
“P” Payment Svc
<ApplicationManifest
ApplicationTypeName="eStoreAppType"
ApplicationTypeVersion="1.0" ...>
<ServiceManifestImport>
<ServiceManifestRef
ServiceManifestName="GalleryServicePkg"
ServiceManifestVersion="1.0" ... />
<ServiceManifestRef
ServiceManifestName="PaymentServicePkg"
ServiceManifestVersion="1.0" ... />
...
</ServiceManifestImport>
</ApplicationManifest>
C:eStoreAppTypePkg
│ ApplicationManifest.xml
│
├───GalleryServicePkg
│ │ ServiceManifest.xml
│ │
│ └───CodePkg
│ Gallery.exe
│ GalleryLib.dll
│ Setup.bat
│
└───PaymentServicePkg
│ ServiceManifest.xml
│
└───CodePkg
Payment.exe
<ServiceManifest Name="GalleryServicePkg"
Version="1.0">
<ServiceTypes>
<StatelessServiceType
ServiceTypeName="GalleryServiceType" ... >
</StatelessServiceType>
</ServiceTypes>
<CodePackage Name="CodePkg" Version="1.0">
<EntryPoint> <ExeHost>
<Program>Gallery.exe</Program>
</ExeHost> </EntryPoint>
</CodePackage>
<Resources> <Endpoints>
<Endpoint Name="GalleryEndpoint"
Type="Input" Protocol="http" Port="8080" />
</Endpoints> </Resources>
</ServiceManifest>
C:eStoreAppTypePkg
│ ApplicationManifest.xml
│
├───GalleryServicePkg
│ │ ServiceManifest.xml
│ │
│ └───CodePkg
│ Gallery.exe
│ GalleryLib.dll
│
└───PaymentServicePkg
│ ServiceManifest.xml
│
└───CodePkg
Payment.exe
Cluster
Management, Billing (VMs), Geolocation, Multitenancy
1+ Named Applications
Isolation, Multitenancy, Unit of versioning/config
1+ Named Services
Code package(s), Multitenancy (w/o isolation)
Stateless: 1 Partition
No value
1+ Instances
Scale, Availability
Stateful: 1+ Partitions
Addressability, Scale
1+ Replicas
Availability
• You can dynamically start/remove named
apps/services and instances; not partitions.
• The # instances is set per named service;
all partitions have the same # of instances




Node #1
Node #2
Node #3
Node #4
Node #5
f:/A1/S1, P1, I1
f:/A1/S2, P1, I1
f:/A1/S1, P1, I2
f:/A1/S1, P1, I3
f:/A1/S2, P1, I2
f:/A1/S2, P2, I2
f:/A1/S2, P2, I1
App
Name
Service
Type
Service
Name
#
Partitions
#
Instances
fabric:/A1 “S” fabric:/A1/S1 1 3
fabric:/A1 “S” fabric:/A1/S2 2 2
App Type App Version App Name
“A” 1.0 fabric:/A1
NOTE: When using SF programming models, instances
from same named app/service are in the same process
“fabric:/Contoso”
Named App
“fabric:/Contoso/Payment”
Named Svc (Stateful)
“fabric:/Contoso/Gallery”
Named Svc (Stateless)
Partition-1 Partition-2
Replica-1
Replica-2
Replica-3
Replica-1
Replica-2
Replica-3
Partition-1
Instance-1
Instance-2
Replica-4
Deploy
Application Type
& Create App
Instance
 Copy-ServiceFabricApplicationPackage (to image store)
 Register-ServiceFabricApplicationType (in image store)
 Remove-ServiceFabricApplicationPackage (from image store)
 New-ServiceFabricApplication (named app)
 New-ServiceFabricService (named svc)
 Remove-ServiceFabricService (named svc)
 Remove-ServiceFabricApplication (named app & its named svcs)
 Unregister-ServiceFabricApplicationType (from image store)
 No named app can be running
PowerShell App Pkg & Named App/Service Ops
http://bit.ly/sf-lab-3
Add a web front-end to
your application
http://bit.ly/sf-lab-4
Setting-up a
Cluster in AzureRunning Microservices
at Scale!
Node 5Node 4Node 3 Node 6Node 2Node 1
P2
S
S
S
P4
S
P1
S
P3S
S
S
• Services can be partitioned for scale-out.
• You can choose your own partitioning scheme.
• Service partitions are striped across machines in the cluster.
• Replicas automatically scale out & in on cluster changes
Performance and stress response
• Rich built-in metrics for Actors and Services programming models
• Easy to add custom application performance metrics
Health status monitoring
• Built-in health status for cluster and services
• Flexible and extensible health store for custom app health reporting
• Allows continuous monitoring for real-time alerting on problems in production
• Repair suggestions. Examples: Slow RunAsync cancellations, RunAsync failures
• All important events logged. Examples: App creation, deploy and upgrade records. All Actor method
calls.
Detailed
System
Optics
• ETW == Fast Industry Standard Logging Technology
• Works across environments. Same tracing code runs on devbox and also on production clusters on
Azure.
• Easy to add and system appends all the needed metadata such as node, app, service, and partition.
Custom
Application
Tracing
• Visual Studio Diagnostics Events Viewer
• Windows Event Viewer
• Windows Azure Diagnostics + Operational Insights
• Easy to plug in your preferred tools: Kibana, Elasticsearch and more
Choice of
Tools
Scalability
High Availability
Reliability
Resiliency
Durability
Time = t1
83
76 50
46
64 New Node arrived61
Time = t2
83
61
50
46
Failures Detected
cluster reconfigured
83
76
64
50
46
Time = t0
Nodes failed
Stateful Microservices - Replication
Service Fabric Cluster VMs
Primary
Secondary
Replication


P
S
S
S
S
WriteWrite
WriteWrite
AckAck Ack
Ack
Read
Value
Write
Ack
App1 App2
Handling Machine Failures
App Type Packages Service Fabric Cluster VMs










P
S
S
S
S
S
Must be safe in the presence
of cascading failures
B P
X
Failed
X
Failed
Monitor
http://bit.ly/sf-lab-5
Health
Cluster
Partitions










Nodes Applications
Deployed
Applications
Instances/
Replicas
Services
Deployed Service
Packages






<FabricSettings>
<Section Name="HealthManager/ClusterHealthPolicy">
<Parameter Name="MaxPercentUnhealthyApplications" Value="0"/>
<Parameter Name="MaxPercentUnhealthyNodes" Value="20"/>
</Section>
</FabricSettings>
<Policies>
<HealthPolicy MaxPercentUnhealthyDeployedApplications="20">
<DefaultServiceTypeHealthPolicy
MaxPercentUnhealthyServices="0"
MaxPercentUnhealthyPartitionsPerService="10"
MaxPercentUnhealthyReplicasPerPartition="0"/>
<ServiceTypeHealthPolicy ServiceTypeName="FrontEndSvcType"
MaxPercentUnhealthyServices="0"
MaxPercentUnhealthyPartitionsPerService="20"
MaxPercentUnhealthyReplicasPerPartition="0"/>
</HealthPolicy>
</Policies>
 Health Policies
MaxPercentUnhealthyServices, MaxPercentUnhelathyDeployedApplications, ConsiderWarningsasError
 UpgradeTimeout
If an entire upgrade hits this timeout, the upgrade is failed.
 Upgrade DomainTimeout
If upgrading a UD hits this timeout, the upgrade is failed.
 HealthCheckWaitDuration
After an UD is upgraded, wait for this time before checking health of nodes in that UD.
 HealthCheckStableDuration
Even if the last health check passed, keep checking the health for this duration to ensure the upgrade is stable. If stable, upgrade the next UD.
 UpgradeHealthCheckInterval
Keep checking health periodically with this interval until HealthCheckStableDuration is hit.
 HealthCheckRetryTimeout
Once this time out is hit, stop checking health and fail the upgrade.
Health Policies & Timeouts



































































Submitting a
Health Report

Mandatory Data Description
Entity Cluster, Node, App, Service, Partition, Replica, Deployed App, Deployed Service Pkg
SourceId String uniquely identifies reporter
Property Category (ex: “Storage” or “Connectivity”)
HealthState Ok, Warning, Error
Optional Data Default Description
Description “” Human readable info
TimeToLive Infinite # seconds before report is expired
RemoveWhenExpired False Useful if TTL != Infinite. If false, report’s entity is in Error; else report
removed after expiration.
SequenceNumber Auto-
generated
Increasing integer. Use to replace old reports when reporting state
transitions.

Property Description
HealthInformation The original health report
SourceUtcTimetamp The time the health report was originally submitted
LastModifiedUtcTimestamp The last time the report was modified
IsExpired True if TTL expired and RemoveWhenExpired=false
LastOkTransitionAt
LastWarningTransitionAt
LastErrorTransitionAt
These give a history of the event’s health states.
Ex: Alert if !Ok > 5 minutes









Report
http://bit.ly/sf-lab-6
Setting-up a
Cluster in AzureReal Customers
Real Workloads
Independent games studio specializing in massively
multiplayer games
http://web.ageofascent.com/category/development/service-
fabric/
Testability
 Two main test scenarios provided out of the box
 Chaos tests
 Failover tests
 Tools
 C# APIs (System.Fabric.Testability.dll)
 PowerShell commandlets (runtime required)
Testability in Service Fabric
 Generates faults across the entire Service Fabric
cluster
 Compresses faults generally seen in months or years
to a few hours
 Combination of interleaved faults with the high fault
rate finds corner cases that are otherwise missed
 Leads to a significant improvement in the code
quality of the service
What do we get from this Testability
Actions Description Managed API Powershell Cmdlet
Graceful/
UnGraceful
Faults
CleanTestState
Removes all the test state from the cluster in case of a bad
shutdown of the test driver.
CleanTestStateAsync Remove-ServiceFabricTestState Not Applicable
InvokeDataLoss Induces data loss into a service partition. InvokeDataLossAsync Invoke-ServiceFabricPartitionDataLoss Graceful
InvokeQuorumLoss Puts a given stateful service partition in to quorum loss. InvokeQuorumLossAsync Invoke-ServiceFabricQuorumLoss Graceful
Move Primary
Moves the specified primary replica of stateful service to the
specified cluster node.
MovePrimaryAsync Move-ServiceFabricPrimaryReplica Graceful
Move Secondary
Moves the current secondary replica of a stateful service to a
different cluster node.
MoveSecondaryAsync Move-ServiceFabricSecondaryReplica Graceful
RemoveReplica
Simulates a replica failure by removing a replica from a cluster. This
will close the replica and will transition it to role 'None', removing
all of its state from the cluster.
RemoveReplicaAsync Remove-ServiceFabricReplica Graceful
RestartDeployedCodeP
ackage
Simulates a code package process failure by restarting a code
package deployed on a node in a cluster. This aborts the code
package process which will restart all the user service replicas
hosted in that process.
RestartDeployedCodePac
kageAsync
Restart-
ServiceFabricDeployedCodePackage
Ungraceful
RestartNode Simulates a Service Fabric cluster node failure by restarting a node. RestartNodeAsync Restart-ServiceFabricNode Ungraceful
RestartPartition
Simulates a data center blackout or cluster blackout scenario by
restarting some or all replicas of a partition.
RestartPartitionAsync Restart-ServiceFabricPartition Graceful
RestartReplica
Simulates a replica failure by restarting a persisted replica in a
cluster, closing the replica and then reopening it.
RestartReplicaAsync Restart-ServiceFabricReplica Graceful
StartNode Starts a node in a cluster which is already stopped. StartNodeAsync Start-ServiceFabricNode Not Applicable
StopNode
Simulates a node failure by stopping a node in a cluster. The node
will stay down until StartNode is called.
StopNodeAsync Stop-ServiceFabricNode Ungraceful
ValidateApplication
Validates the availability and health of all Service Fabric services
within an application, usually after inducing some fault into the
system.
ValidateApplicationAsync Test-ServiceFabricApplication Not Applicable
ValidateService
Validates the availability and health of a Service Fabric service,
usually after inducing some fault into the system.
ValidateServiceAsync Test-ServiceFabricService Not Applicable
Testability Actions
 Stateless:
 Stop node (ungraceful)
 Start node (N/A)
 Restart node (ungraceful)
 Validate application (N/A)
 Validate service (N/A)
 RestartDeployedCodePackage (ungraceful)
 Restart partition (graceful)
 Restart replica (graceful)
 CleanTestState (N/A)
 Failover/chaos tests
Testability
 Stateful:
 Move primary replica (graceful)
 Move secondary replica (graceful)
 Remove Replica (graceful)
 InvokeQuorumLoss (graceful)
 InvokeDataLoss (graceful)
http://bit.ly/sf-lab-7
Simulate
http://bit.ly/sf-lab-8
Upgrading a
Named Application
1. Put new code in code
package
2. Update ver strings
(#s are not required)
3. Copy new app package
to image store
4. Register new app type/
version
5. Select named app(s) to
upgrade to new version
Updating Your App’s Service’s Code
<ServiceManifest Name="WebServer" Version="2.0">
<ServiceTypes>
<StatelessServiceType ServiceTypeName="WebServer" ...>
<Extensions> ... </Extensions>
</StatelessServiceType>
</ServiceTypes>
<CodePackage Name="CodePkg" Version="1.1">
<EntryPoint> ... </EntryPoint>
</CodePackage>
<Resources><Endpoints> ... </Endpoints></Resources>
</ServiceManifest>
<ApplicationManifest ApplicationTypeName="DemoAppType"
ApplicationTypeVersion="3.0" ...>
<ServiceManifestImport>
<ServiceManifestRef ServiceManifestName="WebServer"
ServiceManifestVersion="2.0" .../>
</ServiceManifestImport>
</ApplicationManifest>
A
B1
C
B2
 Prevent complete service outage while upgrading
 More UDs  less loss of scale but more time to upgrade
 # UD set when cluster created via cluster manifest; ARM template
 Default=5; 20% down at a time
 IMPORTANT: 2 versions of your code run side-by-side simultaneously
 Beware of data/schema/protocol changes; use 2-phase upgrade
 Below shows 9 nodes spread across 5 UDs
Upgrade Domains
UD #1 UD #2 UD #3 UD #4 Node #5
Node-1
Node-8
Node-2 Node-3 Node-4 Node-5
Node-9Node-6 Node-7
 Isolate cluster from a single point of
hardware failure (fault)
 Determined by hardware topology (datacenter, rack, blade)
Fault Domains
fd:/DC1/R1/B1
fd:/DC1/R1/B2
fd:/DC1/R1/B3
fd:/DC1/R2/B1
fd:/DC1/R2/B2
fd:/DC1/R2/B3
fd:/DC2/R1/B1
fd:/DC2/R1/B2
fd:/DC2/R1/B3
fd:/DC2/R2/B1
fd:/DC2/R2/B2
fd:/DC2/R2/B3
…
DC1
R1
B1
B2
B3
R2
B1
B2
B3
DC2
R1
B1
B2
B3
R2
B1
B2
B3
DC3
R1
B1
B2
B3
R2
B1
B2
B3
Start-ServiceFabricApplicationUpgrade
Parameter Default Description
ApplicationName N/A Application Instance name
TargetApplicationTypeVersion N/A The version string you want to upgrade to
FailureAction N/A Rollback (to last version) or
Manual (stop upgrade & switch to manual)
UpgradeDomainTimeoutSec Infinite If any UD takes more than this time, FailureAction
UpgradeTimeout Infinite If all UDs take more than this time, FailureAction
HealthCheckWaitDurationSec 0 After UD, SF waits this long before initiating health check
UpgradeHealthCheckInterval 60 If health check fails, SF waits this long before checking
again
(set in cluster manifest; not PowerShell)
HealthCheckRetryTimeoutSec 600 Maximum time SF waits for app to be healthy
HealthCheckStableDurationSec 0 How long app must be healthy before upgrading next UD
Optional Health Criteria Policies
Parameter Default Description
ConsiderWarningAsError False Warning health events are considered errors
stopping the upgrade
MaxPercentUnhealthyDeployedApplications 0 TODO: Max unhealthy before app is declared
unhealthy
MaxPercentUnhealthyServices 0 Max service instances unhealthy before app is
declared unhealthy
MaxPercentUnhealthyPartitionsPerService 0 Max partitions unhealthy before service instance is
declared unhealthy
MaxPercentUnhealthyReplicasPerPartition 0 Max partition replicas unhealthy before partition is
declared unhealthy
UpgradeReplicaSetCheckTimeout Infinite
900 (rollback)
Stateless: How long SF waits for target instances
before next UD
Stateful: How long SF waits for quorum before next
UD
ForceRestart False Forces service restart when updating config/data
 Get progress via Get-ServiceFabricApplicationUpgrade
 Most problems are timing related
 Instances/replicas not going down quickly
 UDs not coming up in time
 Failing health checks
 If FailureAction is “Manual”, you can:
 Optional: After all named apps upgrade,
unregister old app type
Managing Named Application Upgrades
Action PowerShell Command
Rollback Start-ServiceFabricApplicationRollback
Start next UD Resume-ServiceFabricApplicationUpgrade
Resume monitored upgrade Update-ServiceFabricApplicationUpgrade
Windows OS
Windows OS Windows OS
Windows OS
Windows OS
Windows OS
Fabric
Node
Fabric
Node
Fabric
Node
Fabric
Node
Fabric
Node
Fabric
Node
App B v2
App B v2
App B v2
App A v1
App A v1
App A v1
App C v1
App C v1
App C v1
App Repository
App A v1
App C v1
App B v2
App C v2
App C v2
App C v2
App C v2
Perform
http://bit.ly/sf-lab-9
Clone repository in VS
https://github.com/Azure-Samples/service-fabric-dotnet-getting-started.git
StatefulVisualObjectActor.cs is now VisualObjectActor.cs
Updates Since //Build 2015
Now Globaly Available
Create Clusters via ARM & Portal
Hosted Clusters in Azure
Many Performance, Density, & Scale Improvements
Many API Improvements
 New Previews
 Linux Support
 Java Support
 Docker & Windows Containers
 On Premises Clusters
http://aka.ms/ServiceFabricSDK
http://aka.ms/ServiceFabricWS2012R2
http://aka.ms/ServiceFabricSamples
http://aka.ms/SFlinuxpreview
http://aka.ms/ServiceFabricForum
• Learn from the tutorials and videos
• http://aka.ms/ServiceFabricDocs
Stephane Lapointe, Orckestra - stephane@stephanelapointe.net / @s_lapointe
Guy Barrette, freelance Architect/Developer - guy@guybarrette.com / @GuyBarrette
Francois Boucher, Lixar IT - fboucher@frankysnotes.com / @fboucheros
Alexandre Brisebois, Microsoft – alexandre.brisebois@microsoft.com / @brisebois

Weitere ähnliche Inhalte

Was ist angesagt?

Going serverless with azure functions
Going serverless with azure functionsGoing serverless with azure functions
Going serverless with azure functionsgjuljo
 
Microservices with Java, Spring Boot and Spring Cloud
Microservices with Java, Spring Boot and Spring CloudMicroservices with Java, Spring Boot and Spring Cloud
Microservices with Java, Spring Boot and Spring CloudEberhard Wolff
 
Develop enterprise-ready applications for Microsoft Teams
Develop enterprise-ready applications for Microsoft TeamsDevelop enterprise-ready applications for Microsoft Teams
Develop enterprise-ready applications for Microsoft TeamsMarkus Moeller
 
Innovations of .NET and Azure (Recaps of Build 2017 selected sessions)
Innovations of .NET and Azure (Recaps of Build 2017 selected sessions)Innovations of .NET and Azure (Recaps of Build 2017 selected sessions)
Innovations of .NET and Azure (Recaps of Build 2017 selected sessions)Jeff Chu
 
Azure in Developer Perspective
Azure in Developer PerspectiveAzure in Developer Perspective
Azure in Developer Perspectiverizaon
 
Lets talk about: Azure Kubernetes Service (AKS)
Lets talk about: Azure Kubernetes Service (AKS)Lets talk about: Azure Kubernetes Service (AKS)
Lets talk about: Azure Kubernetes Service (AKS)Pedro Sousa
 
Deep dive into service fabric after 2 years
Deep dive into service fabric after 2 yearsDeep dive into service fabric after 2 years
Deep dive into service fabric after 2 yearsTomasz Kopacz
 
Automating Your Microsoft Azure Environment (DevLink 2014)
Automating Your Microsoft Azure Environment (DevLink 2014)Automating Your Microsoft Azure Environment (DevLink 2014)
Automating Your Microsoft Azure Environment (DevLink 2014)Michael Collier
 
Devteach 2016: A practical overview of actors in service fabric
Devteach 2016: A practical overview of actors in service fabricDevteach 2016: A practical overview of actors in service fabric
Devteach 2016: A practical overview of actors in service fabricBrisebois
 
Spring Cloud Netflix OSS
Spring Cloud Netflix OSSSpring Cloud Netflix OSS
Spring Cloud Netflix OSSSteve Hall
 
Network security with Azure PaaS services by Erwin Staal from 4DotNet at Azur...
Network security with Azure PaaS services by Erwin Staal from 4DotNet at Azur...Network security with Azure PaaS services by Erwin Staal from 4DotNet at Azur...
Network security with Azure PaaS services by Erwin Staal from 4DotNet at Azur...DevClub_lv
 
Using Windows Azure for Solving Identity Management Challenges
Using Windows Azure for Solving Identity Management ChallengesUsing Windows Azure for Solving Identity Management Challenges
Using Windows Azure for Solving Identity Management ChallengesMichael Collier
 
.NET microservices with Azure Service Fabric
.NET microservices with Azure Service Fabric.NET microservices with Azure Service Fabric
.NET microservices with Azure Service FabricDavide Benvegnù
 
2011.05.31 super mondays-servicebus-demo
2011.05.31 super mondays-servicebus-demo2011.05.31 super mondays-servicebus-demo
2011.05.31 super mondays-servicebus-demodaveingham
 
Using Azure Managed Identities for your App Services by Jan de Vries from 4Do...
Using Azure Managed Identities for your App Services by Jan de Vries from 4Do...Using Azure Managed Identities for your App Services by Jan de Vries from 4Do...
Using Azure Managed Identities for your App Services by Jan de Vries from 4Do...DevClub_lv
 

Was ist angesagt? (20)

App fabric introduction
App fabric introductionApp fabric introduction
App fabric introduction
 
Going serverless with azure functions
Going serverless with azure functionsGoing serverless with azure functions
Going serverless with azure functions
 
Microservices with Java, Spring Boot and Spring Cloud
Microservices with Java, Spring Boot and Spring CloudMicroservices with Java, Spring Boot and Spring Cloud
Microservices with Java, Spring Boot and Spring Cloud
 
Presentation Tier optimizations
Presentation Tier optimizationsPresentation Tier optimizations
Presentation Tier optimizations
 
Introduction to Microservices
Introduction to MicroservicesIntroduction to Microservices
Introduction to Microservices
 
Develop enterprise-ready applications for Microsoft Teams
Develop enterprise-ready applications for Microsoft TeamsDevelop enterprise-ready applications for Microsoft Teams
Develop enterprise-ready applications for Microsoft Teams
 
Azure Logic Apps
Azure Logic AppsAzure Logic Apps
Azure Logic Apps
 
Innovations of .NET and Azure (Recaps of Build 2017 selected sessions)
Innovations of .NET and Azure (Recaps of Build 2017 selected sessions)Innovations of .NET and Azure (Recaps of Build 2017 selected sessions)
Innovations of .NET and Azure (Recaps of Build 2017 selected sessions)
 
Azure in Developer Perspective
Azure in Developer PerspectiveAzure in Developer Perspective
Azure in Developer Perspective
 
Lets talk about: Azure Kubernetes Service (AKS)
Lets talk about: Azure Kubernetes Service (AKS)Lets talk about: Azure Kubernetes Service (AKS)
Lets talk about: Azure Kubernetes Service (AKS)
 
Praveen Kumar Resume
Praveen Kumar ResumePraveen Kumar Resume
Praveen Kumar Resume
 
Deep dive into service fabric after 2 years
Deep dive into service fabric after 2 yearsDeep dive into service fabric after 2 years
Deep dive into service fabric after 2 years
 
Automating Your Microsoft Azure Environment (DevLink 2014)
Automating Your Microsoft Azure Environment (DevLink 2014)Automating Your Microsoft Azure Environment (DevLink 2014)
Automating Your Microsoft Azure Environment (DevLink 2014)
 
Devteach 2016: A practical overview of actors in service fabric
Devteach 2016: A practical overview of actors in service fabricDevteach 2016: A practical overview of actors in service fabric
Devteach 2016: A practical overview of actors in service fabric
 
Spring Cloud Netflix OSS
Spring Cloud Netflix OSSSpring Cloud Netflix OSS
Spring Cloud Netflix OSS
 
Network security with Azure PaaS services by Erwin Staal from 4DotNet at Azur...
Network security with Azure PaaS services by Erwin Staal from 4DotNet at Azur...Network security with Azure PaaS services by Erwin Staal from 4DotNet at Azur...
Network security with Azure PaaS services by Erwin Staal from 4DotNet at Azur...
 
Using Windows Azure for Solving Identity Management Challenges
Using Windows Azure for Solving Identity Management ChallengesUsing Windows Azure for Solving Identity Management Challenges
Using Windows Azure for Solving Identity Management Challenges
 
.NET microservices with Azure Service Fabric
.NET microservices with Azure Service Fabric.NET microservices with Azure Service Fabric
.NET microservices with Azure Service Fabric
 
2011.05.31 super mondays-servicebus-demo
2011.05.31 super mondays-servicebus-demo2011.05.31 super mondays-servicebus-demo
2011.05.31 super mondays-servicebus-demo
 
Using Azure Managed Identities for your App Services by Jan de Vries from 4Do...
Using Azure Managed Identities for your App Services by Jan de Vries from 4Do...Using Azure Managed Identities for your App Services by Jan de Vries from 4Do...
Using Azure Managed Identities for your App Services by Jan de Vries from 4Do...
 

Andere mochten auch

Tokyo Azure Meetup #5 - Microservices and Azure Service Fabric
Tokyo Azure Meetup #5 - Microservices and Azure Service FabricTokyo Azure Meetup #5 - Microservices and Azure Service Fabric
Tokyo Azure Meetup #5 - Microservices and Azure Service FabricTokyo Azure Meetup
 
Azure paa s v2 – microservices, microsoft (azure) service fabric, .apps and o...
Azure paa s v2 – microservices, microsoft (azure) service fabric, .apps and o...Azure paa s v2 – microservices, microsoft (azure) service fabric, .apps and o...
Azure paa s v2 – microservices, microsoft (azure) service fabric, .apps and o...Tomasz Kopacz
 
SQL Server 2016 SSRS and BI
SQL Server 2016 SSRS and BISQL Server 2016 SSRS and BI
SQL Server 2016 SSRS and BIMSDEVMTL
 
Ssis 2016 RC3
Ssis 2016 RC3Ssis 2016 RC3
Ssis 2016 RC3MSDEVMTL
 
Introduction à Application Insights
Introduction à Application InsightsIntroduction à Application Insights
Introduction à Application InsightsMSDEVMTL
 
Les micro orm, alternatives à entity framework
Les micro orm, alternatives à entity frameworkLes micro orm, alternatives à entity framework
Les micro orm, alternatives à entity frameworkMSDEVMTL
 
Azure Service Fabric pour les développeurs
Azure Service Fabric pour les développeursAzure Service Fabric pour les développeurs
Azure Service Fabric pour les développeursMicrosoft
 
How ddd, cqrs and event sourcing constitute the architecture of the future
How ddd, cqrs and event sourcing constitute the architecture of the futureHow ddd, cqrs and event sourcing constitute the architecture of the future
How ddd, cqrs and event sourcing constitute the architecture of the futureMSDEVMTL
 
Introduction à la sécurité dans ASP.NET Core
Introduction à la sécurité dans ASP.NET CoreIntroduction à la sécurité dans ASP.NET Core
Introduction à la sécurité dans ASP.NET CoreMSDEVMTL
 
.Net Core Fall update
.Net Core Fall update.Net Core Fall update
.Net Core Fall updateMSDEVMTL
 
Cathy Monier: Power Query et Power BI
Cathy Monier: Power Query et Power BICathy Monier: Power Query et Power BI
Cathy Monier: Power Query et Power BIMSDEVMTL
 
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...MSDEVMTL
 
Le Microsoft Graph et le développement Office 365
Le Microsoft Graph et le développement Office 365Le Microsoft Graph et le développement Office 365
Le Microsoft Graph et le développement Office 365MSDEVMTL
 
Advanced analytics with R and SQL
Advanced analytics with R and SQLAdvanced analytics with R and SQL
Advanced analytics with R and SQLMSDEVMTL
 
Microsoft Modern Analytics
Microsoft Modern AnalyticsMicrosoft Modern Analytics
Microsoft Modern AnalyticsMSDEVMTL
 
Robert Luong: Analyse prédictive dans Excel
Robert Luong: Analyse prédictive dans ExcelRobert Luong: Analyse prédictive dans Excel
Robert Luong: Analyse prédictive dans ExcelMSDEVMTL
 
SQL Server 2016 novelties
SQL Server 2016 noveltiesSQL Server 2016 novelties
SQL Server 2016 noveltiesMSDEVMTL
 
Tokyo azure meetup #12 service fabric internals
Tokyo azure meetup #12   service fabric internalsTokyo azure meetup #12   service fabric internals
Tokyo azure meetup #12 service fabric internalsTokyo Azure Meetup
 
Guy Barrette: Afficher des données en temps réel dans PowerBI
Guy Barrette: Afficher des données en temps réel dans PowerBIGuy Barrette: Afficher des données en temps réel dans PowerBI
Guy Barrette: Afficher des données en temps réel dans PowerBIMSDEVMTL
 

Andere mochten auch (20)

Tokyo Azure Meetup #5 - Microservices and Azure Service Fabric
Tokyo Azure Meetup #5 - Microservices and Azure Service FabricTokyo Azure Meetup #5 - Microservices and Azure Service Fabric
Tokyo Azure Meetup #5 - Microservices and Azure Service Fabric
 
Azure paa s v2 – microservices, microsoft (azure) service fabric, .apps and o...
Azure paa s v2 – microservices, microsoft (azure) service fabric, .apps and o...Azure paa s v2 – microservices, microsoft (azure) service fabric, .apps and o...
Azure paa s v2 – microservices, microsoft (azure) service fabric, .apps and o...
 
SQL Server 2016 SSRS and BI
SQL Server 2016 SSRS and BISQL Server 2016 SSRS and BI
SQL Server 2016 SSRS and BI
 
Azure Service Fabric Overview
Azure Service Fabric OverviewAzure Service Fabric Overview
Azure Service Fabric Overview
 
Ssis 2016 RC3
Ssis 2016 RC3Ssis 2016 RC3
Ssis 2016 RC3
 
Introduction à Application Insights
Introduction à Application InsightsIntroduction à Application Insights
Introduction à Application Insights
 
Les micro orm, alternatives à entity framework
Les micro orm, alternatives à entity frameworkLes micro orm, alternatives à entity framework
Les micro orm, alternatives à entity framework
 
Azure Service Fabric pour les développeurs
Azure Service Fabric pour les développeursAzure Service Fabric pour les développeurs
Azure Service Fabric pour les développeurs
 
How ddd, cqrs and event sourcing constitute the architecture of the future
How ddd, cqrs and event sourcing constitute the architecture of the futureHow ddd, cqrs and event sourcing constitute the architecture of the future
How ddd, cqrs and event sourcing constitute the architecture of the future
 
Introduction à la sécurité dans ASP.NET Core
Introduction à la sécurité dans ASP.NET CoreIntroduction à la sécurité dans ASP.NET Core
Introduction à la sécurité dans ASP.NET Core
 
.Net Core Fall update
.Net Core Fall update.Net Core Fall update
.Net Core Fall update
 
Cathy Monier: Power Query et Power BI
Cathy Monier: Power Query et Power BICathy Monier: Power Query et Power BI
Cathy Monier: Power Query et Power BI
 
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
 
Le Microsoft Graph et le développement Office 365
Le Microsoft Graph et le développement Office 365Le Microsoft Graph et le développement Office 365
Le Microsoft Graph et le développement Office 365
 
Advanced analytics with R and SQL
Advanced analytics with R and SQLAdvanced analytics with R and SQL
Advanced analytics with R and SQL
 
Microsoft Modern Analytics
Microsoft Modern AnalyticsMicrosoft Modern Analytics
Microsoft Modern Analytics
 
Robert Luong: Analyse prédictive dans Excel
Robert Luong: Analyse prédictive dans ExcelRobert Luong: Analyse prédictive dans Excel
Robert Luong: Analyse prédictive dans Excel
 
SQL Server 2016 novelties
SQL Server 2016 noveltiesSQL Server 2016 novelties
SQL Server 2016 novelties
 
Tokyo azure meetup #12 service fabric internals
Tokyo azure meetup #12   service fabric internalsTokyo azure meetup #12   service fabric internals
Tokyo azure meetup #12 service fabric internals
 
Guy Barrette: Afficher des données en temps réel dans PowerBI
Guy Barrette: Afficher des données en temps réel dans PowerBIGuy Barrette: Afficher des données en temps réel dans PowerBI
Guy Barrette: Afficher des données en temps réel dans PowerBI
 

Ähnlich wie Stephane Lapointe, Frank Boucher & Alexandre Brisebois: Les micro-services et Azure Service Fabric (Global Azure Bootcamp 2016)

Cloud computing and the Windows Azure Services Platform (KU Leuven)
Cloud computing and the Windows Azure Services Platform (KU Leuven)Cloud computing and the Windows Azure Services Platform (KU Leuven)
Cloud computing and the Windows Azure Services Platform (KU Leuven)Maarten Balliauw
 
Clouds clouds everywhere
Clouds clouds everywhereClouds clouds everywhere
Clouds clouds everywhereMatt Deacon
 
Microsoft Azure in der Praxis
Microsoft Azure in der PraxisMicrosoft Azure in der Praxis
Microsoft Azure in der PraxisYvette Teiken
 
Understanding The Azure Platform March 2010
Understanding The Azure Platform   March 2010Understanding The Azure Platform   March 2010
Understanding The Azure Platform March 2010DavidGristwood
 
20170209 dev day-websites_vs_cloudservices_vsservicefabric_scenarios
20170209 dev day-websites_vs_cloudservices_vsservicefabric_scenarios20170209 dev day-websites_vs_cloudservices_vsservicefabric_scenarios
20170209 dev day-websites_vs_cloudservices_vsservicefabric_scenariosRicardo González
 
Windows Azure and a little SQL Data Services
Windows Azure and a little SQL Data ServicesWindows Azure and a little SQL Data Services
Windows Azure and a little SQL Data Servicesukdpe
 
PCF: Platform for a New Era - Kubernetes for the Enterprise - London
PCF: Platform for a New Era - Kubernetes for the Enterprise - LondonPCF: Platform for a New Era - Kubernetes for the Enterprise - London
PCF: Platform for a New Era - Kubernetes for the Enterprise - LondonVMware Tanzu
 
Build intelligent solutions using Azure
Build intelligent solutions using AzureBuild intelligent solutions using Azure
Build intelligent solutions using AzureMostafa
 
Cloud Powered Mobile Apps with Azure
Cloud Powered Mobile Apps  with AzureCloud Powered Mobile Apps  with Azure
Cloud Powered Mobile Apps with AzureKris Wagner
 
CloudStack DC Meetup - Apache CloudStack Overview and 4.1/4.2 Preview
CloudStack DC Meetup - Apache CloudStack Overview and 4.1/4.2 PreviewCloudStack DC Meetup - Apache CloudStack Overview and 4.1/4.2 Preview
CloudStack DC Meetup - Apache CloudStack Overview and 4.1/4.2 PreviewChip Childers
 
Cloud Powered Mobile Apps with Azure
Cloud Powered Mobile Apps with AzureCloud Powered Mobile Apps with Azure
Cloud Powered Mobile Apps with AzureKen Cenerelli
 
Ukfs Snr Dev Arch Forum Pres2 St
Ukfs Snr Dev Arch Forum Pres2 StUkfs Snr Dev Arch Forum Pres2 St
Ukfs Snr Dev Arch Forum Pres2 StAllyWick
 
How to build streaming data pipelines with Akka Streams, Flink, and Spark usi...
How to build streaming data pipelines with Akka Streams, Flink, and Spark usi...How to build streaming data pipelines with Akka Streams, Flink, and Spark usi...
How to build streaming data pipelines with Akka Streams, Flink, and Spark usi...Lightbend
 
Understanding the Windows Azure Platform - Dec 2010
Understanding the Windows Azure Platform - Dec 2010Understanding the Windows Azure Platform - Dec 2010
Understanding the Windows Azure Platform - Dec 2010DavidGristwood
 

Ähnlich wie Stephane Lapointe, Frank Boucher & Alexandre Brisebois: Les micro-services et Azure Service Fabric (Global Azure Bootcamp 2016) (20)

Cloud computing and the Windows Azure Services Platform (KU Leuven)
Cloud computing and the Windows Azure Services Platform (KU Leuven)Cloud computing and the Windows Azure Services Platform (KU Leuven)
Cloud computing and the Windows Azure Services Platform (KU Leuven)
 
App Modernization with Microsoft Azure
App Modernization with Microsoft AzureApp Modernization with Microsoft Azure
App Modernization with Microsoft Azure
 
Clouds clouds everywhere
Clouds clouds everywhereClouds clouds everywhere
Clouds clouds everywhere
 
Azure Umbraco workshop
Azure Umbraco workshopAzure Umbraco workshop
Azure Umbraco workshop
 
Microsoft Azure in der Praxis
Microsoft Azure in der PraxisMicrosoft Azure in der Praxis
Microsoft Azure in der Praxis
 
Understanding The Azure Platform March 2010
Understanding The Azure Platform   March 2010Understanding The Azure Platform   March 2010
Understanding The Azure Platform March 2010
 
20170209 dev day-websites_vs_cloudservices_vsservicefabric_scenarios
20170209 dev day-websites_vs_cloudservices_vsservicefabric_scenarios20170209 dev day-websites_vs_cloudservices_vsservicefabric_scenarios
20170209 dev day-websites_vs_cloudservices_vsservicefabric_scenarios
 
Windows Azure and a little SQL Data Services
Windows Azure and a little SQL Data ServicesWindows Azure and a little SQL Data Services
Windows Azure and a little SQL Data Services
 
Migrating Apps To Azure
Migrating Apps To AzureMigrating Apps To Azure
Migrating Apps To Azure
 
PCF: Platform for a New Era - Kubernetes for the Enterprise - London
PCF: Platform for a New Era - Kubernetes for the Enterprise - LondonPCF: Platform for a New Era - Kubernetes for the Enterprise - London
PCF: Platform for a New Era - Kubernetes for the Enterprise - London
 
Build intelligent solutions using Azure
Build intelligent solutions using AzureBuild intelligent solutions using Azure
Build intelligent solutions using Azure
 
Cloud Powered Mobile Apps with Azure
Cloud Powered Mobile Apps  with AzureCloud Powered Mobile Apps  with Azure
Cloud Powered Mobile Apps with Azure
 
CloudStack DC Meetup - Apache CloudStack Overview and 4.1/4.2 Preview
CloudStack DC Meetup - Apache CloudStack Overview and 4.1/4.2 PreviewCloudStack DC Meetup - Apache CloudStack Overview and 4.1/4.2 Preview
CloudStack DC Meetup - Apache CloudStack Overview and 4.1/4.2 Preview
 
Aplicaciones distribuidas con Dapr
Aplicaciones distribuidas con DaprAplicaciones distribuidas con Dapr
Aplicaciones distribuidas con Dapr
 
Cloud Powered Mobile Apps with Azure
Cloud Powered Mobile Apps with AzureCloud Powered Mobile Apps with Azure
Cloud Powered Mobile Apps with Azure
 
Ukfs Snr Dev Arch Forum Pres2 St
Ukfs Snr Dev Arch Forum Pres2 StUkfs Snr Dev Arch Forum Pres2 St
Ukfs Snr Dev Arch Forum Pres2 St
 
How to build streaming data pipelines with Akka Streams, Flink, and Spark usi...
How to build streaming data pipelines with Akka Streams, Flink, and Spark usi...How to build streaming data pipelines with Akka Streams, Flink, and Spark usi...
How to build streaming data pipelines with Akka Streams, Flink, and Spark usi...
 
Understanding the Windows Azure Platform - Dec 2010
Understanding the Windows Azure Platform - Dec 2010Understanding the Windows Azure Platform - Dec 2010
Understanding the Windows Azure Platform - Dec 2010
 
Azure
AzureAzure
Azure
 
Sky High With Azure
Sky High With AzureSky High With Azure
Sky High With Azure
 

Mehr von MSDEVMTL

Intro grpc.net
Intro  grpc.netIntro  grpc.net
Intro grpc.netMSDEVMTL
 
Grpc and asp.net partie 2
Grpc and asp.net partie 2Grpc and asp.net partie 2
Grpc and asp.net partie 2MSDEVMTL
 
Property based testing
Property based testingProperty based testing
Property based testingMSDEVMTL
 
Improve cloud visibility and cost in Microsoft Azure
Improve cloud visibility and cost in Microsoft AzureImprove cloud visibility and cost in Microsoft Azure
Improve cloud visibility and cost in Microsoft AzureMSDEVMTL
 
Return on Ignite 2019: Azure, .NET, A.I. & Data
Return on Ignite 2019: Azure, .NET, A.I. & DataReturn on Ignite 2019: Azure, .NET, A.I. & Data
Return on Ignite 2019: Azure, .NET, A.I. & DataMSDEVMTL
 
C sharp 8.0 new features
C sharp 8.0 new featuresC sharp 8.0 new features
C sharp 8.0 new featuresMSDEVMTL
 
Asp.net core 3
Asp.net core 3Asp.net core 3
Asp.net core 3MSDEVMTL
 
MSDEVMTL Informations 2019
MSDEVMTL Informations 2019MSDEVMTL Informations 2019
MSDEVMTL Informations 2019MSDEVMTL
 
Common features in webapi aspnetcore
Common features in webapi aspnetcoreCommon features in webapi aspnetcore
Common features in webapi aspnetcoreMSDEVMTL
 
Groupe Excel et Power BI - Rencontre du 25 septembre 2018
Groupe Excel et Power BI  - Rencontre du 25 septembre 2018Groupe Excel et Power BI  - Rencontre du 25 septembre 2018
Groupe Excel et Power BI - Rencontre du 25 septembre 2018MSDEVMTL
 
Api gateway
Api gatewayApi gateway
Api gatewayMSDEVMTL
 
Common features in webapi aspnetcore
Common features in webapi aspnetcoreCommon features in webapi aspnetcore
Common features in webapi aspnetcoreMSDEVMTL
 
Stephane Lapointe: Governance in Azure, keep control of your environments
Stephane Lapointe: Governance in Azure, keep control of your environmentsStephane Lapointe: Governance in Azure, keep control of your environments
Stephane Lapointe: Governance in Azure, keep control of your environmentsMSDEVMTL
 
Eric Routhier: Garder le contrôle sur vos coûts Azure
Eric Routhier: Garder le contrôle sur vos coûts AzureEric Routhier: Garder le contrôle sur vos coûts Azure
Eric Routhier: Garder le contrôle sur vos coûts AzureMSDEVMTL
 
Data science presentation
Data science presentationData science presentation
Data science presentationMSDEVMTL
 
Michel Ouellette + Gabriel Lainesse: Process Automation & Data Analytics at S...
Michel Ouellette + Gabriel Lainesse: Process Automation & Data Analytics at S...Michel Ouellette + Gabriel Lainesse: Process Automation & Data Analytics at S...
Michel Ouellette + Gabriel Lainesse: Process Automation & Data Analytics at S...MSDEVMTL
 
Open id connect, azure ad, angular 5, web api core
Open id connect, azure ad, angular 5, web api coreOpen id connect, azure ad, angular 5, web api core
Open id connect, azure ad, angular 5, web api coreMSDEVMTL
 
Yoann Clombe : Fail fast, iterate quickly with power bi and google analytics
Yoann Clombe : Fail fast, iterate quickly with power bi and google analyticsYoann Clombe : Fail fast, iterate quickly with power bi and google analytics
Yoann Clombe : Fail fast, iterate quickly with power bi and google analyticsMSDEVMTL
 
CAE: etude de cas - Rolling Average
CAE: etude de cas - Rolling AverageCAE: etude de cas - Rolling Average
CAE: etude de cas - Rolling AverageMSDEVMTL
 
CAE: etude de cas
CAE: etude de casCAE: etude de cas
CAE: etude de casMSDEVMTL
 

Mehr von MSDEVMTL (20)

Intro grpc.net
Intro  grpc.netIntro  grpc.net
Intro grpc.net
 
Grpc and asp.net partie 2
Grpc and asp.net partie 2Grpc and asp.net partie 2
Grpc and asp.net partie 2
 
Property based testing
Property based testingProperty based testing
Property based testing
 
Improve cloud visibility and cost in Microsoft Azure
Improve cloud visibility and cost in Microsoft AzureImprove cloud visibility and cost in Microsoft Azure
Improve cloud visibility and cost in Microsoft Azure
 
Return on Ignite 2019: Azure, .NET, A.I. & Data
Return on Ignite 2019: Azure, .NET, A.I. & DataReturn on Ignite 2019: Azure, .NET, A.I. & Data
Return on Ignite 2019: Azure, .NET, A.I. & Data
 
C sharp 8.0 new features
C sharp 8.0 new featuresC sharp 8.0 new features
C sharp 8.0 new features
 
Asp.net core 3
Asp.net core 3Asp.net core 3
Asp.net core 3
 
MSDEVMTL Informations 2019
MSDEVMTL Informations 2019MSDEVMTL Informations 2019
MSDEVMTL Informations 2019
 
Common features in webapi aspnetcore
Common features in webapi aspnetcoreCommon features in webapi aspnetcore
Common features in webapi aspnetcore
 
Groupe Excel et Power BI - Rencontre du 25 septembre 2018
Groupe Excel et Power BI  - Rencontre du 25 septembre 2018Groupe Excel et Power BI  - Rencontre du 25 septembre 2018
Groupe Excel et Power BI - Rencontre du 25 septembre 2018
 
Api gateway
Api gatewayApi gateway
Api gateway
 
Common features in webapi aspnetcore
Common features in webapi aspnetcoreCommon features in webapi aspnetcore
Common features in webapi aspnetcore
 
Stephane Lapointe: Governance in Azure, keep control of your environments
Stephane Lapointe: Governance in Azure, keep control of your environmentsStephane Lapointe: Governance in Azure, keep control of your environments
Stephane Lapointe: Governance in Azure, keep control of your environments
 
Eric Routhier: Garder le contrôle sur vos coûts Azure
Eric Routhier: Garder le contrôle sur vos coûts AzureEric Routhier: Garder le contrôle sur vos coûts Azure
Eric Routhier: Garder le contrôle sur vos coûts Azure
 
Data science presentation
Data science presentationData science presentation
Data science presentation
 
Michel Ouellette + Gabriel Lainesse: Process Automation & Data Analytics at S...
Michel Ouellette + Gabriel Lainesse: Process Automation & Data Analytics at S...Michel Ouellette + Gabriel Lainesse: Process Automation & Data Analytics at S...
Michel Ouellette + Gabriel Lainesse: Process Automation & Data Analytics at S...
 
Open id connect, azure ad, angular 5, web api core
Open id connect, azure ad, angular 5, web api coreOpen id connect, azure ad, angular 5, web api core
Open id connect, azure ad, angular 5, web api core
 
Yoann Clombe : Fail fast, iterate quickly with power bi and google analytics
Yoann Clombe : Fail fast, iterate quickly with power bi and google analyticsYoann Clombe : Fail fast, iterate quickly with power bi and google analytics
Yoann Clombe : Fail fast, iterate quickly with power bi and google analytics
 
CAE: etude de cas - Rolling Average
CAE: etude de cas - Rolling AverageCAE: etude de cas - Rolling Average
CAE: etude de cas - Rolling Average
 
CAE: etude de cas
CAE: etude de casCAE: etude de cas
CAE: etude de cas
 

Kürzlich hochgeladen

Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
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
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfSeasiaInfotech2
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 

Kürzlich hochgeladen (20)

Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
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!
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdf
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 

Stephane Lapointe, Frank Boucher & Alexandre Brisebois: Les micro-services et Azure Service Fabric (Global Azure Bootcamp 2016)

  • 1. Stephane Lapointe, Orckestra - stephane@stephanelapointe.net / @s_lapointe Guy Barrette, freelance Architect/Developer - guy@guybarrette.com / @GuyBarrette Francois Boucher, Lixar IT - fboucher@frankysnotes.com / @fboucheros Alexandre Brisebois, Microsoft – alexandre.brisebois@microsoft.com / @brisebois
  • 2.
  • 3. Today we’re going to learn about how Microservices enable development and management flexibility Service Fabric is the platform for building applications with a microservices design approach Service Fabric is battle tested and provides a rich platform for both development and management of services at scale
  • 4.
  • 5. 1 Trillion Messages delivered every month with Event Hubs 100,000 New Azure customer subscriptions/month 20Million SQL database hours used every day >5Trillion Storage transactions every month 60Billion Hits to Websites run on Azure Web App Service 425Million Azure Active Directory Users Azure Momentum 57% Of Fortune 500 Companies use Microsoft Azure >50Trillion Storage objects in Azure 1.4 Million SQL Databases Deployed In Azure “Microsoft is growing its cloud revenue faster than Amazon” – Business Insider 2016 AWS revenue grew about 69% but Microsoft Azure revenue grew by 127%
  • 6. What do these have in common?
  • 8. • Scales by cloning the app on multiple servers/VMs/Containers Monolithic application approach Microservices application approach • A microservice application separates functionality into separate smaller services. • Scales out by deploying each service independently creating instances of these services across servers/VMs/containers • A monolith app contains domain specific functionality and is normally divided by functional layers such as web, business and data App 1 App 2App 1
  • 9. • Single monolithic database • Tiers of specific technologies State in Monolithic approach State in Microservices approach • Graph of interconnected microservices • State typically scoped to the microservice • Variety of technologies used • Remote Storage for cold data stateless services with separate stores stateful services stateless presentation services stateless services
  • 10. Plan 1 Monitor + Learn ReleaseDevelop + Test 2 Development Production 4 3
  • 13. Public Cloud Other CloudsOn Premises Private cloud A Microservice Platform
  • 14. Setting-up a Cluster in AzureWhat Is Azure Service Fabric?
  • 15.  Next generation of PaaS on Azure  Elastic scale, OS updates, SF updates  Microservices platform for Windows and Linux  DevOps, rolling upgrades, etc.  Polycloud including on-premises  Programming models  Stateless Win32 apps written in any language (some feature not supported)  Reliable Services: Stateless & stateful (for hot data; gives low-latency reads)  OWIN/ASP.NET Core*  Service Fabric is free of charge  SDK: http://aka.ms/ServiceFabricSDK Service Fabric is
  • 16. • 1 role instance per VM • Uneven utilization • Low density • Slow deployment & upgrade (bound to VM) • Slow scaling and failure recovery • Limited fault tolerance • Many microservices per VM • Even Utilization (by default, customizable) • High density (customizable) • Fast deployment & upgrade • Fast scaling of independent microservices • Tunable fast fault tolerance Cloud Services vs Service Fabric Azure Cloud Services (Web & Worker Roles) Azure Service Fabric (Services)
  • 17. Microsoft Azure Service Fabric A platform for reliable, hyperscale, microservice-based applications Azure Windows Server Linux Hosted Clouds Windows Server Linux Service Fabric Private Clouds Windows Server Linux High Availability Hyper-Scale Hybrid Operations High Density microservices Rolling Upgrades Stateful services Low Latency Fast startup & shutdown Container Orchestration & lifecycle management Replication & Failover Simple programming models Load balancing Self-healingData Partitioning Automated Rollback Health Monitoring Placement Constraints
  • 18. Service Fabric Subsystems Service discovery Reliability, Availability, Replication, Service Orchestration Application lifecycle Fault Inject, Test in production Federates a set of nodes to form a consistent scalable fabric Secure point-to-point communication Deployment, Upgrade and Monitoring microservices
  • 19. Windows OS Windows OS Windows OS Windows OS Windows OS Windows OS Fabric Node Fabric Node Fabric Node Fabric Node Fabric Node Fabric Node  Set of OS instances (real or virtual) stitched together to form a pool of resources  Cluster can scale to 1000s of machines, is self repairing, and scales-up or down  Acts as environment-independent abstraction layer Cluster
  • 20. Datacenter (Azure, On Premises, Other Clouds ) Load Balancer PC/VM #1 Service Fabric Your code, etc. PC/VM #2 Service Fabric Your code, etc. PC/VM #3 Service Fabric Your code, etc. PC/VM #4 Service Fabric Your code, etc. PC/VM #5 Service Fabric Your code, etc. Management to deploy your code, etc. (Port: 19080) App Web Request (Port: 80/443/?)
  • 21.  Cluster Manager (ports 19080 [REST] & 19000 [TCP]) Performs cluster REST & PowerShell/FabricClient operations  Failover Manager Rebalances resources as nodes come/go  Naming Maps service instances to endpoints  Image store (not on OneBox) Contains your Application packages  Upgrade Service (Azure only) Coordinates upgrading SF itself with Azure’s SFRP Service Fabric’s Infrastructure Services Node #1 F Node #2 C N I Node #3 C F Node #4 N I Node #5 C I F N U U U N F U IC
  • 22. Setting-up a Cluster in AzureMicroservices with Azure Service Fabric
  • 23. App1 App2 Service Fabric Microservices App Type Packages Service Fabric Cluster VMs
  • 24. Guest Executables • Bring any exe • Any language • Any programming model • Packaged as Application • Gets versioning, upgrade, monitoring, health, etc. Reliable Services • Stateless & stateful services • Concurrent, granular state changes • Use of the Reliable Collections • Transactions across collections • Full platform integration Reliable Actors • Stateless & stateful actor objects • Simplified programming model • Single Threaded model • Great for scaled out compute and state
  • 25. • Reliable collections make it easy to build stateful services • An evolution of .NET collections - for the cloud • ReliableDictionary<T1,T2> and ReliableQueue<T> Programming models: Reliable Services Collections • Single machine • Single-threaded Concurrent Collections • Single machine • Multi-threaded Reliable Collections • Multi-machine • Replicated (HA) • Persistence (durable) • Asynchronous • Transactional
  • 27. protected override async Task RunAsync(CancellationToken cancellationToke) { var requestQueue = await this.StateManager.GetOrAddAsync<IReliableQueue<CustomerRecord>>(“requests"); var locationDictionary = await this.StateManager.GetOrAddAsync<IReliableDictionary<Guid, LocationInfo>>(“locs"); var personDictionary = await this.StateManager.GetOrAddAsync<IReliableDictionary<Guid, Person>>(“ppl"); var customerListDictionary = await this.StateManager.GetOrAddAsync<IReliableDictionary<Guid, object>>(“customers"); while (true) { cancellationToke.ThrowIfCancellationRequested(); Guid customerId = Guid.NewGuid(); using (var tx = this.StateManager.CreateTransaction()) { var customerRequestResult = await requestQueue.TryDequeueAsync(tx); await customerListDictionary.AddAsync(tx, customerId, new object()); await personDictionary.AddAsync(tx, customerId, customerRequestResult.Value.person); await locationDictionary.AddAsync(tx, customerId, customerRequestResult.Value.locInfo); await tx.CommitAsync(); } } } Everything happens or nothing happens!
  • 28. Programming models: Reliable Actors • Independent units of compute and state • Large number of them executing in parallel • Communicates using asynchronous messaging • Single threaded execution • Automatically created and dehydrated as necessary
  • 29. Reliable Actors APIs Reliable Services APIs Your problem space involves many small independent units of state and logic You need to maintain logic across multiple components You want to work with single-threaded objects while still being able to scale and maintain consistency You want to use reliable collections (like .NET Dictionary and Queue) to store and manage your state You want the framework to manage the concurrency and granularity of state You want to control the granularity and concurrency of your state You want the platform to manage communication for you You want to manage the communication and control the partitioning scheme for your service Comparing Reliable Actors & Reliable Service
  • 31. Setting-up a Cluster in AzureApplication Packaging & Deployment
  • 32.      <ServiceManifest Name="QueueService" Version="1.0"> <ServiceTypes> <StatefulServiceType ServiceTypeName="QueueServiceType" HasPersistedState="true" /> </ServiceTypes> <CodePackage Name="Code" Version="1.0"> <EntryPoint> <ExeHost> <Program>ServiceHost.exe</Program> </ExeHost> </EntryPoint> </CodePackage> <ConfigPackage Name="Config" Version="1.0" /> <DataPackage Name="Data" Version="1.0" /> </ServiceManifest>
  • 34.      Cluster “Fabrikam” eStore App “G” Gallery Svc “P” Payment Svc eStore App Type Gallery Svc Type Payment Svc Type “Contoso” eStore App “G” Gallery Svc “P” Payment Svc
  • 35. <ApplicationManifest ApplicationTypeName="eStoreAppType" ApplicationTypeVersion="1.0" ...> <ServiceManifestImport> <ServiceManifestRef ServiceManifestName="GalleryServicePkg" ServiceManifestVersion="1.0" ... /> <ServiceManifestRef ServiceManifestName="PaymentServicePkg" ServiceManifestVersion="1.0" ... /> ... </ServiceManifestImport> </ApplicationManifest> C:eStoreAppTypePkg │ ApplicationManifest.xml │ ├───GalleryServicePkg │ │ ServiceManifest.xml │ │ │ └───CodePkg │ Gallery.exe │ GalleryLib.dll │ Setup.bat │ └───PaymentServicePkg │ ServiceManifest.xml │ └───CodePkg Payment.exe
  • 36. <ServiceManifest Name="GalleryServicePkg" Version="1.0"> <ServiceTypes> <StatelessServiceType ServiceTypeName="GalleryServiceType" ... > </StatelessServiceType> </ServiceTypes> <CodePackage Name="CodePkg" Version="1.0"> <EntryPoint> <ExeHost> <Program>Gallery.exe</Program> </ExeHost> </EntryPoint> </CodePackage> <Resources> <Endpoints> <Endpoint Name="GalleryEndpoint" Type="Input" Protocol="http" Port="8080" /> </Endpoints> </Resources> </ServiceManifest> C:eStoreAppTypePkg │ ApplicationManifest.xml │ ├───GalleryServicePkg │ │ ServiceManifest.xml │ │ │ └───CodePkg │ Gallery.exe │ GalleryLib.dll │ └───PaymentServicePkg │ ServiceManifest.xml │ └───CodePkg Payment.exe
  • 37. Cluster Management, Billing (VMs), Geolocation, Multitenancy 1+ Named Applications Isolation, Multitenancy, Unit of versioning/config 1+ Named Services Code package(s), Multitenancy (w/o isolation) Stateless: 1 Partition No value 1+ Instances Scale, Availability Stateful: 1+ Partitions Addressability, Scale 1+ Replicas Availability • You can dynamically start/remove named apps/services and instances; not partitions. • The # instances is set per named service; all partitions have the same # of instances
  • 38.     Node #1 Node #2 Node #3 Node #4 Node #5 f:/A1/S1, P1, I1 f:/A1/S2, P1, I1 f:/A1/S1, P1, I2 f:/A1/S1, P1, I3 f:/A1/S2, P1, I2 f:/A1/S2, P2, I2 f:/A1/S2, P2, I1 App Name Service Type Service Name # Partitions # Instances fabric:/A1 “S” fabric:/A1/S1 1 3 fabric:/A1 “S” fabric:/A1/S2 2 2 App Type App Version App Name “A” 1.0 fabric:/A1 NOTE: When using SF programming models, instances from same named app/service are in the same process
  • 39. “fabric:/Contoso” Named App “fabric:/Contoso/Payment” Named Svc (Stateful) “fabric:/Contoso/Gallery” Named Svc (Stateless) Partition-1 Partition-2 Replica-1 Replica-2 Replica-3 Replica-1 Replica-2 Replica-3 Partition-1 Instance-1 Instance-2 Replica-4
  • 41.  Copy-ServiceFabricApplicationPackage (to image store)  Register-ServiceFabricApplicationType (in image store)  Remove-ServiceFabricApplicationPackage (from image store)  New-ServiceFabricApplication (named app)  New-ServiceFabricService (named svc)  Remove-ServiceFabricService (named svc)  Remove-ServiceFabricApplication (named app & its named svcs)  Unregister-ServiceFabricApplicationType (from image store)  No named app can be running PowerShell App Pkg & Named App/Service Ops
  • 42. http://bit.ly/sf-lab-3 Add a web front-end to your application http://bit.ly/sf-lab-4
  • 43. Setting-up a Cluster in AzureRunning Microservices at Scale!
  • 44.
  • 45. Node 5Node 4Node 3 Node 6Node 2Node 1 P2 S S S P4 S P1 S P3S S S • Services can be partitioned for scale-out. • You can choose your own partitioning scheme. • Service partitions are striped across machines in the cluster. • Replicas automatically scale out & in on cluster changes
  • 46. Performance and stress response • Rich built-in metrics for Actors and Services programming models • Easy to add custom application performance metrics Health status monitoring • Built-in health status for cluster and services • Flexible and extensible health store for custom app health reporting • Allows continuous monitoring for real-time alerting on problems in production
  • 47. • Repair suggestions. Examples: Slow RunAsync cancellations, RunAsync failures • All important events logged. Examples: App creation, deploy and upgrade records. All Actor method calls. Detailed System Optics • ETW == Fast Industry Standard Logging Technology • Works across environments. Same tracing code runs on devbox and also on production clusters on Azure. • Easy to add and system appends all the needed metadata such as node, app, service, and partition. Custom Application Tracing • Visual Studio Diagnostics Events Viewer • Windows Event Viewer • Windows Azure Diagnostics + Operational Insights • Easy to plug in your preferred tools: Kibana, Elasticsearch and more Choice of Tools
  • 49. Time = t1 83 76 50 46 64 New Node arrived61 Time = t2 83 61 50 46 Failures Detected cluster reconfigured 83 76 64 50 46 Time = t0 Nodes failed
  • 50. Stateful Microservices - Replication Service Fabric Cluster VMs Primary Secondary Replication
  • 52. App1 App2 Handling Machine Failures App Type Packages Service Fabric Cluster VMs
  • 53.           P S S S S S Must be safe in the presence of cascading failures B P X Failed X Failed
  • 57.       <FabricSettings> <Section Name="HealthManager/ClusterHealthPolicy"> <Parameter Name="MaxPercentUnhealthyApplications" Value="0"/> <Parameter Name="MaxPercentUnhealthyNodes" Value="20"/> </Section> </FabricSettings> <Policies> <HealthPolicy MaxPercentUnhealthyDeployedApplications="20"> <DefaultServiceTypeHealthPolicy MaxPercentUnhealthyServices="0" MaxPercentUnhealthyPartitionsPerService="10" MaxPercentUnhealthyReplicasPerPartition="0"/> <ServiceTypeHealthPolicy ServiceTypeName="FrontEndSvcType" MaxPercentUnhealthyServices="0" MaxPercentUnhealthyPartitionsPerService="20" MaxPercentUnhealthyReplicasPerPartition="0"/> </HealthPolicy> </Policies>
  • 58.  Health Policies MaxPercentUnhealthyServices, MaxPercentUnhelathyDeployedApplications, ConsiderWarningsasError  UpgradeTimeout If an entire upgrade hits this timeout, the upgrade is failed.  Upgrade DomainTimeout If upgrading a UD hits this timeout, the upgrade is failed.  HealthCheckWaitDuration After an UD is upgraded, wait for this time before checking health of nodes in that UD.  HealthCheckStableDuration Even if the last health check passed, keep checking the health for this duration to ensure the upgrade is stable. If stable, upgrade the next UD.  UpgradeHealthCheckInterval Keep checking health periodically with this interval until HealthCheckStableDuration is hit.  HealthCheckRetryTimeout Once this time out is hit, stop checking health and fail the upgrade. Health Policies & Timeouts
  • 60.
  • 66.  Mandatory Data Description Entity Cluster, Node, App, Service, Partition, Replica, Deployed App, Deployed Service Pkg SourceId String uniquely identifies reporter Property Category (ex: “Storage” or “Connectivity”) HealthState Ok, Warning, Error Optional Data Default Description Description “” Human readable info TimeToLive Infinite # seconds before report is expired RemoveWhenExpired False Useful if TTL != Infinite. If false, report’s entity is in Error; else report removed after expiration. SequenceNumber Auto- generated Increasing integer. Use to replace old reports when reporting state transitions.
  • 67.  Property Description HealthInformation The original health report SourceUtcTimetamp The time the health report was originally submitted LastModifiedUtcTimestamp The last time the report was modified IsExpired True if TTL expired and RemoveWhenExpired=false LastOkTransitionAt LastWarningTransitionAt LastErrorTransitionAt These give a history of the event’s health states. Ex: Alert if !Ok > 5 minutes
  • 70. Setting-up a Cluster in AzureReal Customers Real Workloads
  • 71.
  • 72.
  • 73.
  • 74. Independent games studio specializing in massively multiplayer games http://web.ageofascent.com/category/development/service- fabric/
  • 76.  Two main test scenarios provided out of the box  Chaos tests  Failover tests  Tools  C# APIs (System.Fabric.Testability.dll)  PowerShell commandlets (runtime required) Testability in Service Fabric
  • 77.  Generates faults across the entire Service Fabric cluster  Compresses faults generally seen in months or years to a few hours  Combination of interleaved faults with the high fault rate finds corner cases that are otherwise missed  Leads to a significant improvement in the code quality of the service What do we get from this Testability
  • 78. Actions Description Managed API Powershell Cmdlet Graceful/ UnGraceful Faults CleanTestState Removes all the test state from the cluster in case of a bad shutdown of the test driver. CleanTestStateAsync Remove-ServiceFabricTestState Not Applicable InvokeDataLoss Induces data loss into a service partition. InvokeDataLossAsync Invoke-ServiceFabricPartitionDataLoss Graceful InvokeQuorumLoss Puts a given stateful service partition in to quorum loss. InvokeQuorumLossAsync Invoke-ServiceFabricQuorumLoss Graceful Move Primary Moves the specified primary replica of stateful service to the specified cluster node. MovePrimaryAsync Move-ServiceFabricPrimaryReplica Graceful Move Secondary Moves the current secondary replica of a stateful service to a different cluster node. MoveSecondaryAsync Move-ServiceFabricSecondaryReplica Graceful RemoveReplica Simulates a replica failure by removing a replica from a cluster. This will close the replica and will transition it to role 'None', removing all of its state from the cluster. RemoveReplicaAsync Remove-ServiceFabricReplica Graceful RestartDeployedCodeP ackage Simulates a code package process failure by restarting a code package deployed on a node in a cluster. This aborts the code package process which will restart all the user service replicas hosted in that process. RestartDeployedCodePac kageAsync Restart- ServiceFabricDeployedCodePackage Ungraceful RestartNode Simulates a Service Fabric cluster node failure by restarting a node. RestartNodeAsync Restart-ServiceFabricNode Ungraceful RestartPartition Simulates a data center blackout or cluster blackout scenario by restarting some or all replicas of a partition. RestartPartitionAsync Restart-ServiceFabricPartition Graceful RestartReplica Simulates a replica failure by restarting a persisted replica in a cluster, closing the replica and then reopening it. RestartReplicaAsync Restart-ServiceFabricReplica Graceful StartNode Starts a node in a cluster which is already stopped. StartNodeAsync Start-ServiceFabricNode Not Applicable StopNode Simulates a node failure by stopping a node in a cluster. The node will stay down until StartNode is called. StopNodeAsync Stop-ServiceFabricNode Ungraceful ValidateApplication Validates the availability and health of all Service Fabric services within an application, usually after inducing some fault into the system. ValidateApplicationAsync Test-ServiceFabricApplication Not Applicable ValidateService Validates the availability and health of a Service Fabric service, usually after inducing some fault into the system. ValidateServiceAsync Test-ServiceFabricService Not Applicable Testability Actions
  • 79.  Stateless:  Stop node (ungraceful)  Start node (N/A)  Restart node (ungraceful)  Validate application (N/A)  Validate service (N/A)  RestartDeployedCodePackage (ungraceful)  Restart partition (graceful)  Restart replica (graceful)  CleanTestState (N/A)  Failover/chaos tests Testability  Stateful:  Move primary replica (graceful)  Move secondary replica (graceful)  Remove Replica (graceful)  InvokeQuorumLoss (graceful)  InvokeDataLoss (graceful)
  • 82. 1. Put new code in code package 2. Update ver strings (#s are not required) 3. Copy new app package to image store 4. Register new app type/ version 5. Select named app(s) to upgrade to new version Updating Your App’s Service’s Code <ServiceManifest Name="WebServer" Version="2.0"> <ServiceTypes> <StatelessServiceType ServiceTypeName="WebServer" ...> <Extensions> ... </Extensions> </StatelessServiceType> </ServiceTypes> <CodePackage Name="CodePkg" Version="1.1"> <EntryPoint> ... </EntryPoint> </CodePackage> <Resources><Endpoints> ... </Endpoints></Resources> </ServiceManifest> <ApplicationManifest ApplicationTypeName="DemoAppType" ApplicationTypeVersion="3.0" ...> <ServiceManifestImport> <ServiceManifestRef ServiceManifestName="WebServer" ServiceManifestVersion="2.0" .../> </ServiceManifestImport> </ApplicationManifest> A B1 C B2
  • 83.  Prevent complete service outage while upgrading  More UDs  less loss of scale but more time to upgrade  # UD set when cluster created via cluster manifest; ARM template  Default=5; 20% down at a time  IMPORTANT: 2 versions of your code run side-by-side simultaneously  Beware of data/schema/protocol changes; use 2-phase upgrade  Below shows 9 nodes spread across 5 UDs Upgrade Domains UD #1 UD #2 UD #3 UD #4 Node #5 Node-1 Node-8 Node-2 Node-3 Node-4 Node-5 Node-9Node-6 Node-7
  • 84.  Isolate cluster from a single point of hardware failure (fault)  Determined by hardware topology (datacenter, rack, blade) Fault Domains fd:/DC1/R1/B1 fd:/DC1/R1/B2 fd:/DC1/R1/B3 fd:/DC1/R2/B1 fd:/DC1/R2/B2 fd:/DC1/R2/B3 fd:/DC2/R1/B1 fd:/DC2/R1/B2 fd:/DC2/R1/B3 fd:/DC2/R2/B1 fd:/DC2/R2/B2 fd:/DC2/R2/B3 … DC1 R1 B1 B2 B3 R2 B1 B2 B3 DC2 R1 B1 B2 B3 R2 B1 B2 B3 DC3 R1 B1 B2 B3 R2 B1 B2 B3
  • 85. Start-ServiceFabricApplicationUpgrade Parameter Default Description ApplicationName N/A Application Instance name TargetApplicationTypeVersion N/A The version string you want to upgrade to FailureAction N/A Rollback (to last version) or Manual (stop upgrade & switch to manual) UpgradeDomainTimeoutSec Infinite If any UD takes more than this time, FailureAction UpgradeTimeout Infinite If all UDs take more than this time, FailureAction HealthCheckWaitDurationSec 0 After UD, SF waits this long before initiating health check UpgradeHealthCheckInterval 60 If health check fails, SF waits this long before checking again (set in cluster manifest; not PowerShell) HealthCheckRetryTimeoutSec 600 Maximum time SF waits for app to be healthy HealthCheckStableDurationSec 0 How long app must be healthy before upgrading next UD
  • 86. Optional Health Criteria Policies Parameter Default Description ConsiderWarningAsError False Warning health events are considered errors stopping the upgrade MaxPercentUnhealthyDeployedApplications 0 TODO: Max unhealthy before app is declared unhealthy MaxPercentUnhealthyServices 0 Max service instances unhealthy before app is declared unhealthy MaxPercentUnhealthyPartitionsPerService 0 Max partitions unhealthy before service instance is declared unhealthy MaxPercentUnhealthyReplicasPerPartition 0 Max partition replicas unhealthy before partition is declared unhealthy UpgradeReplicaSetCheckTimeout Infinite 900 (rollback) Stateless: How long SF waits for target instances before next UD Stateful: How long SF waits for quorum before next UD ForceRestart False Forces service restart when updating config/data
  • 87.  Get progress via Get-ServiceFabricApplicationUpgrade  Most problems are timing related  Instances/replicas not going down quickly  UDs not coming up in time  Failing health checks  If FailureAction is “Manual”, you can:  Optional: After all named apps upgrade, unregister old app type Managing Named Application Upgrades Action PowerShell Command Rollback Start-ServiceFabricApplicationRollback Start next UD Resume-ServiceFabricApplicationUpgrade Resume monitored upgrade Update-ServiceFabricApplicationUpgrade
  • 88. Windows OS Windows OS Windows OS Windows OS Windows OS Windows OS Fabric Node Fabric Node Fabric Node Fabric Node Fabric Node Fabric Node App B v2 App B v2 App B v2 App A v1 App A v1 App A v1 App C v1 App C v1 App C v1 App Repository App A v1 App C v1 App B v2 App C v2 App C v2 App C v2 App C v2
  • 89. Perform http://bit.ly/sf-lab-9 Clone repository in VS https://github.com/Azure-Samples/service-fabric-dotnet-getting-started.git StatefulVisualObjectActor.cs is now VisualObjectActor.cs
  • 90. Updates Since //Build 2015 Now Globaly Available Create Clusters via ARM & Portal Hosted Clusters in Azure Many Performance, Density, & Scale Improvements Many API Improvements  New Previews  Linux Support  Java Support  Docker & Windows Containers  On Premises Clusters
  • 92. Stephane Lapointe, Orckestra - stephane@stephanelapointe.net / @s_lapointe Guy Barrette, freelance Architect/Developer - guy@guybarrette.com / @GuyBarrette Francois Boucher, Lixar IT - fboucher@frankysnotes.com / @fboucheros Alexandre Brisebois, Microsoft – alexandre.brisebois@microsoft.com / @brisebois