Microservices in .NET Core: Introduction
Over the next few months, I hope to share with you a fairly wide range of posts specifically for implementing a quality Microservice in .NET Core.
I will incorporate Microsoft's best practice, much of which is influenced by the Microservice architecture guru Martin Fowler. I will also share the practical challenges I have personally faced, and insight into the solutions I chose to address them.
Practical? So no theory?
I will cover as much basic theory as possible. Many of these lessons don't make sense unless you understand the why?. Before you begin, it's worth being aware of the fundamental benefits of Microservice architecture patterns.
You will quickly see that coding patterns are critical to Microservices, as are SOLID design principles.
Still with me?
Now, if you've gotten this far - you may be asking... There seems to be a lot of noise about the disadvantages of Microservices...? Aren't they just too complex...? Is it just another passing hype...?
It is complex though?
While there can be a lot of moving parts, it's really not so difficult. Also, wasn't CSS difficult before we all started hacking MySpace pages? And SOAP was a nightmare until you were using it in every job you ever had in 2008 and 2009 (thanks SharePoint)!
The great thing about learning Microservices is that you get exposed to many different tools and patterns. It's not a one-trick pony that you have to sell your soul to for the next 3 years!
Everything is reusable. If you bail out halfway through, you'll still be better than when you started.
Oh, and it's not going away anytime soon...
Moving to Microservices is not just another tech stack. It is a fundamental cultural shift in how we approach building business technical capabilities.
The truth is, any service today that requires highly scalable and distributed systems almost universally rely on various forms of Microservice patterns. Think Netflix, SalesForce, Uber, eBay, Google, YouTube, GroupOn, iHeartRadio - even cloud service management platforms like Azure and AWS are underpinned by Microservice management.
Isn't it only good for large scale services?
Now while the key drivers may be scalability and distribution, the ability to break down very complex capabilities into much smaller components is a much-understated benefit of the pattern. Just like most of our society - no one small cog does it all, but all the small cogs together can send us to the moon.
A quality Microservice does approximately 1 well-sized Job - it's sole objective is to do that 1 Job very WELL!
Follow me on this journey of learning practical Microservice development in .NET Core, and I assure you the lessons you learn about the patterns will be of benefit across any other tech stack in the future.