Start with microservices today and be ready for future challenges
Our website is not that complex. It’s only the blog subsystem that requires a database in the backend, which can be trickier to scale horizontally. We want to be able to move a website between nodes, data centers, providers, even running it in multiple regions, and do all that on demand. Wooo hoo!
Obviously we had to introduce a new architecture for our website. Considering that we are always pushing something new, the best web architecture to start with might be the one that enables continuous delivery. Perhaps, we should make it easier —let’s start as soon as possible and make everything else an ongoing process.
We need something that doesn’t imply rewriting everything tomorrow. Basic microservice patterns implemented today play an important role for the things coming tomorrow.
The idea comes to the surface —The simplest website with microservice playground. Let’s put that on the whiteboard and have some extra fun.
Q: How to start with microservices if you can’t see the Sun because of all those technical decisions standing in your way?
A: Well, the answer is easy.
Microservices are loosely coupled software components responsible for some part of business logic that is self-contained. It means that changing a microservice doesn’t require changing any other part of the system. And you don’t need to know the whole system to implement one.
You can look at microservice as an independent product and the team behind it as the self-sufficient vendor. With microservice architecture you can expect many benefits, such as, boosting productivity, or achieving shorter time to value.
Technology decisions on monolithic or microservice architecture can be challenging. When you consider scaling with microservices there are plenty of yet more complexities to come. It might send you away at start; such as containers orchestration, security, clustered logging, continuous delivery, or even moving to the cloud. But, back to the beginning…
Premature optimization is the root of all evil.
— Donald Knuth
The major goal is to unlock our web platform for continuous delivery; to spin up cloud resources efficiently on demand in cost-effective manner; and to significantly improve time-to-market for new sections on our website.
The simplest website with microservice playground.
All layers can be easily scaled out, or containerized independently of each other.
It’s important to be in cloud and have infrastructure resources just few clicks away. Amazon AWS is our preferred cloud provider.
Service discovery, cluster management, and inter-component security are out of consideration right now. However, it all can be implemented as part of an ongoing process later.
For start, all above layers can be run as separate system processes on single machine instance. We can grow from there and be happy with it.
Jump with website all over the cloud space.
The little piece of software also enables a time machine for blog posts and other kind of online documentation.
All changes are tracked with public versioning system. It’s the transparent way of dealing with modifications, which might be an additional benefit ensuring trusted relationship with our readers.