Ever since I joined Twiga, there has been talk of switching to a microservice architecture. This idea had been baked into the product from the beginning so the switch should not be as hard.
I don’t actively code so there is no technical satisfaction but am still excited about what is coming next.
In this entry, will be talking about what I foresee coming.
The project becomes more expressive
In a previous entry, we delved into what it means to properly name entities in your code.
Having a big vocabulary is useful because we are better able to attend to concepts we have a name for.
By breaking up our system into microservices, we are able to have multiple entities to talk about. For example, it will be possible to have a meeting to discuss authentication and have its code cast in the background that is functionally separate from the rest of the system.
This tallies well with our brain which is wired up for affordance. Briefly described, the theory of affordance states we don’t see things as they are but as what they mean to us. Eg a cup as something to reach towards. Thus our code will now express meaning.
Evolution on multiple timelines becomes possible
Working for a fast growing startup has turned out to require far more versatility than I originally thought. The core product needs to serve multiple parties each having their own goals, values and tech readiness.
We could always work out what would be the best processes for the organization and then code it but of what value would that be to the person using it?
To ensure the product we deliver actually has value to a human, we need to evolve the product to better serve them, when we have multiple classes of users with fundamentally different needs, we are in effect building out a suite of products.
Microservices should help this flow much easier by enabling us to evolve at the rate of the relevant party.
Easier to scale the team
As I briefly explained in the entry How managers cripple their best team members new team members are inherently destabilizing.
Yet a feature of a growing startup is an influx of new team members.
The switch then should enable us to set up independent teams to work on different services while preserving the integrity of existing high performing teams.
Furthermore, it’s now possible to use multiple languages across the system growing our hiring talent pool and enabling us to use the best language for any specific use case.
Do you use microservices in your own organization? Talk to me in the comment section below or on my twitter @jchex