I’ve been trying to conceptualize the difference between Azure Container Services (ACS), Azure Service Fabric (ASF) and Azure Functions (AF) and when to use what.  I found a great article from Mahesh Kshirsagar of Microsoft who published a neat little blog on some basic points to consider when needing to choose between the three options of Azure Container Services, Azure Service Fabric and Azure Functions.  I’ve tried to summarize this here along with some other key ingredients you should consider.

Use Azure Container Service (ACS) when:

  • You are comfortable with leveraging open-source technologies based on Linux/Windows
  • You need small modular applications and/or services
  • You are looking for an application-aligned infrastructure that can be scaled up or down based on the needs of each application itself (i.e. Orchestration)
  • You require quick deployments across your environments through application portability and to ensure there are no missing dependencies for running your application
  • You don’t want the headache of managing any underlying infrastructure (i.e. you are looking for Infrastructure as a service – IaaS offerings)
  • You already have experience with some open source orchestration solutions (i.e.  Docker Swarm, Google Kubernetes, Marathon, Nomad, Docker Swarm, Mesosphere DC/OS)
  • You organization has heavily adopted in DevOps technologies
  • You have the need to develop applications on-premises in your own datacenters or have the flexibility of easily having them ported over and hosted in the Cloud
  • You want quick start-up times and quick provisioning of your container based application (within seconds!)
  • You have the need to almost instantaneously scale up or down your container infrastructure on an as needed basis (i.e. increase during peak and decrease during non-peak times)
  • You don’t want the extra cost and usage of your infrastructure overhead when your container is not being used

Use Azure Service Fabric (ASF) when:

  • You prefer to be more Microsoft technology and code focused rather than open source focused
  • You want to build large scale applications and services
  • You are more interested in leveraging Platform as a Service (PaaS) aspects for hosting your application
  • You have the need to run on premise as well as on any cloud
  • You want to follow prescriptive guidance on how your application should be written using a full blown programming model (i.e. it has it’s own type of Orchestration)
  • You want to build and manage scalable, reliable applications made of microservices running on machine clusters
  • You want to scale different parts of your application depending on the needs of the application
  • You want simplified deployment on premise or on the cloud
  • You require stateful services where the state is to be maintained alongside compute resources
  • Your developers need more control of the underlying infrastructure of your application
  • You have the need to run long running services that must have their states saved
  • You want to run services using the Actor model  (which are great for IoT projects)
  • You want to spend less and use less compute power on an on needed basis
  • You don’t want any downtime during upgrades with detailed diagnostics
  • You want to build micro services on Linux or Windows
  • Your development teams want to be more agile and roll out changes to customers faster and more frequently

Use Azure Functions (AF) when:

  • You need specific application service logic based on triggers or schedules
  • You need simple but flexible programming models (i.e. C#, F#, Node, PHP, etc.)
  • You require a Software as a Service (SaaS) “Serverless” model
  • You need to run small pieces of code or “functions”
  • You don’t need any elaborate infrastructure
  • You want low cost billing on a per execution basis while your code runs
  • You require an HTTP endpoint to run specific tasks
  • You require an extension for an existing application
  • You require integrated security with OAuth
  • You require flexible development options (Azure Portal, Visual Studio, GitHub, etc.)







Leave a Reply

Your email address will not be published. Required fields are marked *