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 applicationsFocus 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:
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