One of my main goals at BUILD this year was to get a better understanding of how Microsoft is recommending to build microservices with .NET. The term “microservices” was thrown around quite a bit during the keynotes and sessions but there was very little detail offered beyond these references.
The context of these references was usually in conjunction with references to Docker, containers, Azure Container Service (ACS) and/or ServiceFabric. All these technologies can be used to build/deploy microservices and its great that Microsoft is creating an integration story but the architectural design and best practices were always missing. The only full length session from Microsoft with “microservices” in the title was centered around ServiceFabric.
There was, however, a short 30 min presentation in the expo hall from Cesar De la Torre Llorente and Glenn Condron called “Microservices Architecture with .NET Core”. BINGO!
Apparently these are the guys, that are working on the microservices story for .NET. They even released a preview of a book entitled “.NET Microservices: Architecture for Containerized .NET Applications”.
So they have definitely been thinking deeply about how to make it easy for .NET developers to use .NET Core to build and be successful with microservices architectures.
Work in Progress
Later I went by some of the .NET/ASP.NET booths to get more info and was told they’ve been working on this book and others for 6+ months and are currently soliciting feedback from microservices “experts” to make sure they are solid before releasing them publicly. This makes a ton of sense. The last thing we want is for them to declare the new microservices architecture best practices and it be immediately met with negative feedback from the community.
Not only are they working on books but also reference applications that serve as a working example of the guidance. Check out their work on Github and try it out:
What I Learned at Build
Based on Cesar’s presentation and various conversations with different Microsoft engineers here is what I learned.
- .NET Core is the framework to use for Microservices
- It’s fast
- It’s small
- It’s the future
- Containers/Docker for packaging applications
- It’s the next step in infrastructure abstraction at the application level
- Great development and release stories
- Use a container orchestrator
- Azure Container Service is a great cloud option offering many management APIs (Kubernetes, Mesos, Swarm)
- ServiceFabric is the microservices framework that Azure uses internally
- Microsoft doesn’t care if you use one of their orchestrators/services, they want .NET Core to work great with all of them
- .NET Core microservices will work with outside services
- Microsoft knows customers already have investments in other vendors/products
- This isn’t a lock-in play, they just want customers to be successful with .NET Core
- They will remove any barriers to that end, including integrating/supporting 3rd party vendors/providers/services
Microsoft is thinking hard about how to make customers with .NET Core to build microservices. We can all participate with them on Github as their guidance materializes. We can expect to hear a more polished story in the coming months. I’m guessing around the .NET Core 2.0 GA timeframe this fall.
What do you think about Microsoft approach? Are you excited about where they are heading? I’m considering writing a series of posts about building microservices on .NET core, are you interested? Please leave comments below to continue the conversation and add you two cents.