Azure Service Fabric vs Azure Container Services

I understand that both Azure Service Fabric and Azure Container Services can be used to host microservices through containers.

In what scenarios is it practical & cost effective to use one over the other? What are some strong use cases for Azure Service Fabric and Azure Container Services models of hosting

I read this comparison but did not find it comprehensive

Update: A comparison table like one in this diagram would help keep the points "sticky" & memorable while deciding which option to use

Acronyms used in the table - AF - Azure Functions, ASF - Azure Service Fabric, ASE - App Service Environment, ACS - Azure Container Service, VMSS - Virtual Machine Scale Set

The “rank” should not be misconstrued as good or bad


Solution 1:

Beside the link you pasted for "Choosing between Azure Container Service, Azure Service Fabric and Azure Functions" - Following is what I have found out.

Azure Service Fabric (ASF) is more of a PaaS offering while Azure Container Service (ACS) is more like an IaaS offering.

  • ASF gives you its own specific programming model, which if you follow then you will be able to take advantage of ASF features. That is why there is an ASF SDK for C#/Java you need to use. However ASF additionally allows guest executables and orchestrating Docker containers (not sure how much will they be leveraged compared to ACS or will they be at par).
  • At the moment ASF is Windows only (ASF on Linux preview now available @ Feb 2017) (it smells vendor tie-in)
  • ASF offers you Actor model which is good for IoT solution (maybe quicker to implement than to DIY on ACS)

  • ACS in this sense is more open; it provides only container based model and heavily relies and support docker ecosystem. And once its a container its pretty much technology agnostic. This could also be the reason for Microsoft's push for Windows Nano which is a basis for the windows based (server level) containers (my opinion). So with ACS you can either have Windows or Linux containers or both.

  • ACS also allows you to use the open source, industry famous container orchestrators including Docker Swarm, DC/OS-Mesos. While ASF provides sort of its own orchestration. In other words ASF provides more integrated, easier to use feature rich model but ACS gives you much more openness and flexibility.

MS guys in some conference also mentioned that it could be considered that ASF is more of a Microsoft oriented shop while ACS is more oriented towards open source technologies.

Solution 2:

[Feb 2019 Update]

It's a difficult comparison as Azure Service Fabric also exposes an application framework. It's pretty opinionated about the way applications should be built, which doesn't necessarily fit well with notions of 12-factor, cloud-native container apps.

This is an ever-moving feast, but there are a growing number of container runtimes in Azure:

  • Azure Kubernetes Service is the container orchestrator that replaced ACS. It seems to be moving very much in a PaaS direction.
  • Azure Container Instances are useful for small jobs and burst scale
  • Azure Batch is optimised for large, repetitive compute jobs
  • Azure Service Fabric is an IaaS offering geared more around lifting and shifting Windows applications to the cloud
  • Azure Service Fabric Mesh is the new kid on the block - a PaaS service for Service Fabric apps.

All in all, if you're starting with containers then I would give Service Fabric a miss and head for Kubernetes. You can run containers in Service Fabric, but you can be made to feel like a second-class citizen. IMHO, OFC.

Solution 3:

Gross over simplification. If your a Linux guy ACS will probably match what you want better. If you are a Windows dev writing windows code ASF will probably serve you better.