Wednesday, April 24, 2019

Azure Service Fabric & Azure Kubernetes Service: Comparative Analysis

Hello Folks! in today's blog I will highlight the key main differences between Azure's (of Microsoft's) two widely popular container Orchestration services. Please remember that these differences are analyzed as per today's date. As we know that services on cloud keep evolving and points described here may not be relevant after sometime.
So let's start rolling ---- 
Those who don't know about Azure Service Fabric (ASF) and Azure Kubernetes Service (AKS), I strongly recommend them to look into starting points to get to know more about these services at high level.


Azure Service Fabric from the Microsoft's documentation:

Trust a proven platform for mission-critical applications
Focus on building applications and business logic, and let Azure solve the hard distributed systems problems such as reliability, scalability, management, and latency. Service Fabric is an open source project and it powers core Azure infrastructure as well as other Microsoft services such as Skype for Business, Intune, Azure Event Hubs, Azure Data Factory, Azure Cosmos DB, Azure SQL Database, Dynamics 365, and Cortana. Designed to deliver highly available and durable services at cloud-scale, Azure Service Fabric intrinsically understands the available infrastructure and resource needs of applications, enabling automatic scale, rolling upgrades, and self-healing from faults when they occur.

Choose from a variety of productive programming models and languages including .NET Core 2.0, C#, and Java to build your microservice and container-based applications.



Azure Kubernetes Service from the Microsoft's documentation:

Deploy and manage Kubernetes with ease, scale and run applications with confidence, secure your Kubernetes environment, Accelerate containerized application development.


Brief Overview

Azure Service Fabric - 

  • High affinity with Microsoft's (Visual Studio) product and tools.
  • It is an orchestration engine and a framework to build micro services using mostly .NET. It also includes and support programming models.
  • Application not necessarily to be hosted in containers.
  • Unable to support traditional ASP.Net applications for as is deployment.
  • It is typically a PaaS offering.
  • Support hybrid deployments to run applications hosted on Service Fabric on Azure and onpremise

Azure Kubernetes Service - 

  • It is mostly likely a PaaS and an IaaS offering
  • The configuration is a bit more complex because you have to define all components in your cluster such as load balancers and endpoints. In Service Fabric more of it is done for you automatically. 
  • Store images in Docker Hub or Azure Container Registry and deploy to your preferred targets.
  • When you use an AKS cluster the Kubernetes master nodes are hidden from you and are operated by Microsoft, the only VM resources you see are the worker nodes, which are still IaaS and need to be managed and updated as usual. In AKS, you are only paying for the worker nodes, the managed part is free.
  • It can easily be used for lift and shift architectural styles and large-scale projects


Key Similarities

Native Cloud Features


  • Open source standards of cloud-native foundation
  • Powerful native cluster orchestration, cluster management, auto-scaling, self-healing
  • Open-source Interoperable (while using Service Fabric with Net-Core)
  • Azure Cloud Native: log analytics, managed service identity, encryption

Architectural Patterns

  • Micro-service and event-driven architecture
  • Multi-tenancy, orchestration, discovery, advanced clustering
  • lift and shift architectural styles and large-scale projects
  • Suited for Large scale complex prod apps 

DevOps, Language & Tools

  • Standard support for widely used DevOps methods and tooling, e.g., Jenkins, HELMS
  • Support remote debugging


Comparative Analysis

Following is the gist of overall key differences identified and experienced so far while using these two:


. Azure Service Fabric Azure Kubernetes Service
 Cloud feature  Native dev framework: "stateful/stateless reactive" & " 12-factor applications"  It’s a container orchestrator
 PaaS: Infrastructure is abstracted  IaaS & PaaS: low level control on infrastructure; resource quota, infra placement.
 Legacy Migration  Refactor legacy .Net application; unsupported Nuget Pkg  Rewrite/Refactor/Lift&Shift
 Containerization  Containers are just guest executables  Containers are primary need
 Language/platform and tools  Primarily Open Source support for .Net Core  Language agnostic
 DevOps  Affinity with MS tools and stack, e.g Visual Studio  Integration with wide range of OS tools and extension
 Vendor support  Indirect vendor lockin; SF is   not manages service with any other cloud provider  Supported by all leading cloud provider
 Community Support  Limited and MS dependent  Extensive and mature
 Practical challenges  Remote debugging is tedious
 Inaccessible logs to diagnose errors and issue
 Co-ordination with MS to raise and resolve issues. Service tickets and difficult SLAs
 Inconsistent services upgrade from local to portal

Conclusion

In this article I have tried to explain the key differences and basic similarities between the two container orchestration services (or framework) provided by Microsoft Azure. Hence, this will certainly help decide among these two depending upon the technical and architectural needs of the application. Feel free to provide suggestions in the comment section below.

No comments:

Post a Comment

Autoscaling: Azure HDInsight Cluster