Yesterday, the third edition of the .NET Conf: Focus series took place, this time featuring microservices development with .NET. The event targeted developers of all stripes, with live coding demonstrations and comprehensive coverage on related concepts and tools. The focus conferences are free, one-day livestream events featuring speakers from the community and .NET product teams. The other two events of the series took place earlier this year, respectively focusing on Blazor and Xamarin.
The focus series is a branch of the original .NET Conf, an annual event organized by the .NET community and Microsoft that showcases the latest developments for the .NET platform. The 2019 edition of .NET Conf was a three-day event where Microsoft officially released .NET Core, ASP.NET, and EF Core 3.0, together with C# 8.0 and F# 4.7. In opposition, each focus event targets a specific .NET-related technology, providing a series of in-depth, hands-on sessions aimed at .NET developers.
.NET Conf: Microservices was the first of the focus series covering a broader topic (rather than a Microsoft platform or framework), and probably the best event of the series up to this point. The conference started with an overview of the .NET Core features and tools for building microservices with .NET. In this context, after presenting numbers on .NET adoption and .NET 5 performance improvements, Scott Hunter and David Fowler (both at Microsoft) presented an excellent overview of the concepts of microservices, containers, and orchestration. They also presented Project Tye, a tool for building, debugging, and deploying microservices released by Microsoft as "experimental" earlier this year.
The following session was perhaps the most important session in the whole event. Presented by Brendan Burns, Kubernetes co-founder and engineer at the Azure team, he started talking about why one should care about implementing microservices for the sake of the people involved, rather than for technical reasons. Burns then went on to discuss which reasons and considerations should be involved in the decision of adopting microservices, providing great insights on scaling teams and building on a shared infrastructure.
Two other great sessions were presented by Clemens Vasters (architect at the Azure Messaging team) and Julie Lerman (regional director at Microsoft). Both being very technical, the first one detailed different aspects of asynchronous communication between services and messaging patterns. During his presentation, Vasters highlighted the differences between synchronous and asynchronous messaging, communication patterns, and messaging protocols. He then detailed the services available in the Azure Messaging Suite, and how each of them was related to the previously explained concepts. The slides of this session can be found here.
Following Vasters's session, Lerman presented a brief overview of Domain-Driven Design and how it can be used to determine boundaries and interactions between microservices. Her practical demonstration, based on these concepts, showed how to persist the data used by microservices. This session was a great demonstration, at the same time, of the application of DDD principles in practice, and the new features of EF Core. The source code for this demonstration can be found here.
Another interesting session, short but very important as an external perspective on .NET, was presented by Kelsey Hightower, a staff developer advocate at Google. The session was a live demonstration on creating and deploying a .NET microservice into the cloud. While not technically dense as many of the other sessions, it was enriched with observations and considerations related to the process at hand, such as the importance of the size of deployments (which may not be obvious for a developer just starting with microservices) and best practices in developing microservices in light of the twelve-factor app methodology.
Other great sessions also included the showcasing of tools and frameworks related to microservices development in .NET. David Dieruf talked about the Steeltoe project, an open-source framework that aims at increasing productivity for developing microservices and web apps. Reuben Bond, a developer at Microsoft, presented Orleans, Microsoft's framework for building distributed applications. Other frameworks and tools presented included DAPR and Project Tye. The remainder of the sessions included different aspects of microservices development with Azure and Visual Studio.
A very relevant takeaway from the event is how important the decision of adopting microservices is, and what is involved in this decision. It is clear that .NET adoption is growing in the development community, as is its focus on performance, and how developers can easily build and deploy microservices using it. But understanding the motivation behind adopting any new technology and what should be used in which scenario still takes precedence, regardless of the technology stack in place. For this reason, while all sessions complemented each other in terms of technical aspects, the sessions presented by Burns and Vasters were the key to the whole event.
All concepts and tools presented in the event will be explored today, in a post-conference workshop focused on building microservices with .NET on Azure. You can find the complete schedule for the workshops here.
The next .NET Conf event is scheduled for mid-November, focusing on the .NET 5 launch. Differently from the Focus series, this will be a three-day event, with sessions targeting all different aspects of the new .NET release. Recordings of all .NET Conf and .NET Conf: Focus events are available in curated playlists on MSDN Channel 9. Session decks and demos will be available here.