(Micro)Services Playground is my attempt to provide an environment for designing and building example applications and system components using the microservices architecture.
There are so many techniques, design patterns, and frameworks for building software systems that you might feel lost sometimes. However, using the right tools and architectural design patterns is crucial in creating scalable, maintainable, and efficient applications.
Status: work in progress | Last updated: 8 Mar 2024
My approach:
- Have a list of example systems and components where microservices architecture makes sense.
- Select an idea, zoom in, write technical and non-technical requirements, and prepare a high-level design.
- Create an actual project and build a working demo project.
Currently in progress:
As I design and build these systems, I embrace the following ideas:
- Keep it simple, stupid. For example, even if it is called microservices, I might have all services under the same project, so it is easier to navigate in the source code.
- Keep it runnable and working. Use Docker and Docker Compose setup, so it is easier to run and play with it.
- Use best practices when designing (domain-driven design, event storming) and writing code (clean, tested code).
- Use or build helper tools: troubleshooting, automated tests, bencharms.
Disclaimer about Microservices vs Monolith
It is not the goal of this writing to promote the idea of micro-services or monolith. It is out of scope for this project and I do not plan on comparing or evaluating these ideas. I will default to micro-services approach as it serves my interest the best, within the scope of this project.