Azure Service Fabric is platform as a service (PaaS) offering from Microsoft for developers to build and host scalable distributed systems. Service Fabric is a core of many of the Microsoft Azure cloud services such as Cosmos DB, SQL Server, Azure Event Hub, Azure IOT Hub, Cortana, Skype for Business, Power BI and others. The same can be used to write your own highly available and highly scalable services.
The concept of Microservices is to decompose complex applications into independent services wherein each service is a self-contained, complete functional unit that can be evolved or even reconstructed without impacting other services.
- Introduction to Service Fabric-reliable services, allowing you to both lift and shift your applications, enables scaling, disaster recovery, resilience, and is a core to understanding Service Fabric.
- Introduction to Service Fabric-reliable actors, actors is an emergent program in paradigm, which simplifies programming of scalable applications used in massively parallel computing, online-games and other resource-demanding applications,, and Service Fabric makes it easier than ever.
- Storage and partitioning, we’ll take Service Fabric for a ride to try and to understand how to store enormous amounts of data, and you’ll get an understanding how software giants can serve so much data instantly on demand.
Available Options on Azure
Following are the options in Azure for building microservices:
Azure Container Service
Azure Container Service is Microsoft’s implementation of open-source container technologies based on Docker. Containers are one step forward from virtual machines, which allow you to create smaller isolated components without a need to run the whole operating system. This gives you faster, lighter, and cheaper components, and ability to pack more of them on single physical box. Essentially Azure Container service helps you to automate the running of containers in Microsoft Azure Clouds. However, Docker is just a container technology, and it becomes very hard to manage tons and hundreds of containers in terms of deployment, scaling, healing, configuration, storage, network, and all the important things which makes an application useful. Basically the same problems as with managing regular virtual machines. That’s where you need a technology called a container orchestrator, which helps you to solve many of them. There are a few popular open-source orchestration technologies, and the three of today’s major players are Docker Swarm developed by Docker itself, DC/OS, and Kubernetes, and the good new is that Microsoft Azure supports all three of these out of the box without you spending the value time trying to deploy this stuff yourself.
Azure Service Fabric
Similar to containerization technologies implemented by Azure Container Service, Azure Service Fabric also focuses on microservices. But the question here is why would you use Service Fabric compared to Docker, and I’ll tell you why. I mentioned earlier that Azure Container Service solves most of the problems and leaves the developer with the only task, write applications, and that’s where the challenges are. It’s not that easy to write a scalable application working on hundreds of machines in a distributed cluster, in fact it’s really hard. Containers solve most of the infrastructure problems, but you’re left on your own now to design the application. And even if you understand how to build them, it’s extremely time consuming to make things right.
- Some of the problems you have to think about are communication between services and instances of a service.
- Service discovery is another challenge, like how do you talk to another microservice when there are thousands of instances of them.
- Another challenge is monitoring application telemetry and collecting logs, or
- Provisioning and upgrading microservices, and figuring out what to do if one of them fails.
- Testing microservices locally is another huge challenge,
- Managing and recovering from downtimes,
- Scaling a particular services in and out, basically there is an endless list of problems and solutions you have to come up by yourself
Service Fabric solves if not most, then many of those problems. So in a way, Service Fabric is architecturally another step forward in microservice design.
Azure Functions allows you to write functions in a language of your choice directly on the Azure portal. Each function becomes a mini version of a microservice that can react to an external change such as a change in a Blob storage, message added to a servicebus queue or topic etc. They can even be called through a REST endpoint or can run on a specific schedule.