Advantages of Service Fabric Microservices vs Collection of Azure Cloud services/web apps

shekhar picture shekhar · Sep 21, 2016 · Viewed 7.4k times · Source

I have a application that can be broken down into multiple communicating services. My current implementation is monolithic and I want to reorganize it so that individual components can be deployed,iterated upon, scaled independently. I see two ways to do this with Azure:

  1. Service Fabric service composed of set of communicating micro-services (stateless, web-api etc.)
  2. A collection of individual Azure Web Apps/ Cloud Services that call each other at the http end points.

Are there any obvious advantages of 1 over 2? Any rule of thumb to chose one over the other would also be very helpful.

Answer

Peter Bons picture Peter Bons · Oct 19, 2016

I think this page compares it well: https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-cloud-services-migration-differences/

I can't tell it better than this.

There is not really a rule of thumb. Service Fabric might seem more complex but offers some things that Cloud Services / Web Apps don't.

A quick summary (taken from the link provided):

Service Fabric itself is an application platform layer that runs on Windows or Linux, whereas Cloud Services is a system for deploying Azure-managed VMs with workloads attached. The Service Fabric application model has a number of advantages:

  • Fast deployment times. Creating VM instances can be time consuming. In Service Fabric, VMs are only deployed once to form a cluster that hosts the Service Fabric application platform. From that point on, application packages can be deployed to the cluster very quickly.
  • High-density hosting. In Cloud Services, a Worker Role VM hosts one workload. In Service Fabric, applications are separate from the VMs that run them, meaning you can deploy a large number of applications to a small number of VMs, which can lower overall cost for larger deployments.
  • The Service Fabric platform can run anywhere that has Windows Server or Linux machines, whether it's Azure or on-premises. The platform provides an abstraction layer over the underlying infrastructure so your application can run on different environments.
  • Distributed application management. Service Fabric is a platform that not only hosts distributed applications, but also helps manage their lifecycle independently of the hosting VM or machine lifecycle.