Build Real-World Event-Driven Enterprise Microservices system from Scratch — Part 2 — Big picture

Filip Kovář
4 min readDec 12, 2023

--

You can watch this article here:

Today, I’m super excited to share something special with you. We’re going to build a real-world enterprise-level microservices system. And guess what? We’re using the coolest and most modern tech stack, including Kubernetes, Dapr, and a bunch of other awesome tools.

Now, this series is going to be a bit different from the others out there. Why? Because we’re taking a hands-on, practical approach.

Here’s the story: my wife is an incredible tattoo artist, and she needs a system to manage her customers. Think of it as a special CRM for Tattoo studios, Hair & Beauty Salons, and more.”

Check out her amazing work: https://www.facebook.com/Janina.Lukesova

Now, together, we’re going to build this app. And the best part? The approach and patterns we use can be applied to any enterprise or global system.” Let’s dive into the big picture of our application

Architecture — Big picture

The first part which I’ll describe is Kubernetes

🌐 Kubernetes — The Power Behind the Scenes:

We’ve chosen Kubernetes because, well, it’s the rockstar of orchestration. Hold tight, because in the next video, I’ll spill all the details about why Kubernetes is our go-to choice.

🌐 Ingress Controller — Skipping for Now:

Before you get too curious, we’re skipping the Ingress Controller this time. It’s part of Kubernetes, and we’ll save it for a special feature down the road.

💬 API Management and Gateway — Our central point of Communication:

We’re rolling with Ocelot for our app, but hey, you’ve got options! Choose from KrakenD, Microsoft Azure API Management, Apigee, and more.

💌 Apache Kafka — For asynchronous communication, we’ve got Apache Kafka. It’s our messaging system, making sure things flow seamlessly behind the scenes.

🖥️ SPA — Our App’s Beautiful Face: (May be not in my case but definitely in your case)

Say hello to the Single Page Application (SPA). It’s the face of our app, and we’re building it with Microsoft Blazor. If that’s not your jam, feel free to go for React, Angular, Vue, or any other frontend framework.

📂 Mongo DB — Is our NoSQL document database. Perfect for a Document kind of data.

🗃️ PostgreSQL — For all relational things, we’ve got PostgreSQL. It’s the perfect place for our relational data.

🔧 Client/XY Services — Meet the heart of our application. These are our microservices, each doing its superhero thing.

🌐 Dapr — Dapr, is Distributed Application Runtime, is the unifier for our microservices development. We’ll unravel its magic in a future chat.

🌐 Istio — Istio is service mesh which is responsible for managing traffic flow across our microservices.

🔐Identity Management -Handling authorization and authentication. We decided to use the open source system Keycloak. But hey, feel free to choose another system if it suits your stack.

🛠️ Another Layer of Tech Stack:

Open Telemetry — We’re diving into metrics, logs, and traces with Open Telemetry. Our choice? New Relic, but there are plenty of other awesome implementations out there.

CI/CD — Automated Deployment Magic:

Continuous integration and continuous delivery/deployment (CI/CD) is our automated deployment magic. Thanks to Kubernetes and Helm, it’s going to be a breeze. We’re rolling with Microsoft DevOps for this one.

Dev Platform — Our development platform is Microsoft .NET, but feel free to wander into any other platform. Thanks to Microservices architecture, you can mix and match languages and platforms. Here are some components we’ll be flexing:

  • REST API: ASP.NET Core
  • UI: Blazor
  • ORM: EF Core
  • Mapping: AutoMapper
  • CQRS: MediatR
  • Validation: FluentValidation

…and a few more surprises in store!

Testing — I prefer integration tests over simple unit tests. Postman and Newman are our trusted allies, making sure everything is on point.

🏰 Last Stop: Architecture and Design:

External Architecture — Event-Driven Microservices. We’re crafting our external architecture with an event-driven approach for our microservices.

Internal Architecture — N-Layered, CQRS, and More

Persistency: Relational, NoSQL Document DB, Event Sourcing

Business Logic Organization: DDD, Transaction Script for simpler services

Analysis: Event Storming, UML, Archimate

Synchronous Communication: REST API, gRPC

Asynchronous Communication: Messaging

So, if you’re ready to build something awesome, learn cutting-edge tech, and maybe even impress your friends with your new skills, hit that subscribe button, and let’s get started on this exciting journey together.

I’m Filip, and I can’t wait to see what we’ll create together. Stay tuned!

--

--

Filip Kovář
Filip Kovář

Written by Filip Kovář

Software architect , technology enthusiast, Musician, Content creator

No responses yet