What happens when you build applications from microservices as opposed to creating one big, monolithic application? You avoid redundant coding, banish a bunch of messy dependencies, and make developers happier by empowering them.
The downside is that you end up with a very big bucket of microservices without mature tooling to manage them, which is a showstopper for many enterprises.
Today, Microsoft jumps into this breach with Azure Service Fabric, a PaaS solution for microservices that Azure CTO Mark Russinovich described to InfoWorld as "a quantum leap ahead of anything that’s out there," including Kubernetes, Mesos, and Swarm. The SDK for Service Fabric, which will be released at the upcoming Microsoft Build conference for developers, will run on Azure or on premises -- in the latter case, on Windows Server 2012 or later versions.
Service Fabric will also support Windows Server Containers and Hyper-V Containers, both of which will debut in the next version of Windows Server scheduled to ship in 2016. Eventually, Service Fabric will add support Linux containers, too. Asked whether Microsoft might make Service Fabric available under an open source license, Russinovich told InfoWorld: "It’s something that we’re discussing."
Part of what makes Service Fabric a unique offering, says Russinovich, is that it has been "battle hardened" by developers inside Microsoft who have been using it to build Azure applications as services for five years, including Azure Database, Skype for Business (formerly Lync), Bing Cortana, Service Bus, Event Hubs, Power BI, Azure Machine Learning, Intune, and DocumentDB. He emphasizes that:
[Service Fabric] is not a version of something that we have powering those services I mentioned. It is not just taking the concepts and creating something new and then saying, “Hey, this is bringing the same kind of stuff to you that we are using internally.” These are … the exact bits that we’re running internally underneath all those services.
A partial list of features includes rolling updates of microservices, health monitoring of microservices, auto-scaling, load-balancing, and automatic rollback if updates fail.
But the feature that excites Russinovich most is support for stateful microservices, which he says no competing solutions "even touch." Today, the microservices powering Web and mobile apps are typically stateless. With Service Fabric, developers can assemble stateful microservices into heavy-duty applications such as database back ends -- in the same fashion that Microsoft built Azure Database and DocumentDB.
In general, but particularly for applications composed of stateful microservices, Service Fabric takes care of "all the super-hard rocket science of distributed systems" behind the scenes, Russinovich says. Developers can concentrate on building applications, while Service Fabric does the heavy lifting of replication, partitioning, transactional integrity, fault tolerance, high availability, and more.
Service Fabric will support multiple programming models, including the actor model, which Russinovich describes as an extremely simple way of developing microservice-based applications:
You can really think of [the actor model] as object-oriented microservices. It’s a model where microservices get activated when they receive a message … a message comes in, the programmer writes some code that modifies some of that data, and then issues a response or sends a message to another actor.
Microsoft's Halo Online, for example, is built using the actor model, where every game player is represented as an actor -- as are game sessions, high scorers, and so on.
The SDK to be released at Build will support C++ and .Net, but Service Fabric will eventually support other languages in the same way Azure has added support for Java, PHP, Python, and Node.js over time.
Service Fabric will also integrate with Visual Studio. Developers will be able to build and test microservices applications on one box and simulate clusters of multiple nodes -- and deploy on either their own servers or to Azure or other clouds. Russinovich notes that with Service Fabric, you could easily run hundreds of microservices on a single server.
Microsoft's announcement of Service Fabric speaks to the ambition of the company's cloud vision. With one stroke, it has jumped to the front of the microservices parade and offered a new twist on openness -- offering to any interested developer the tools it uses internally to dev, test, and deploy its own microservices-based cloud applications.
The big question is whether Service Fabric will be limited to Microsoft shops. PaaS in general has not taken off the way many expected, mainly because in making things easier for developers, PaaS also constrains them to a particular working style and feature set. The promised features of Service Fabric are highly advanced, but time will tell whether developers outside of the Microsoft faithful will be happy with what it offers.