Architecture Decisions And Guidelines

When an organization moves away from a centralized monolith to more decentralized and distributed architectures, such as microservices, the development culture, and therefore, the culture around the system’s architecture also changes. It too must become more distributed and less centralized. Development teams, because they are ideally autonomous in a microservices environment, require more freedom than … Read more

Macroservices

Or, Partial Microservices There has been much discussion lately around how microservices may not actually be the appropriate architecture for many teams and companies, especially those working on legacy applications. The idea behind this is that while microservices may perhaps be ideal in some circumstances, they most definitely have their limitations, and really are not … Read more

Refactoring Microservices – Error Codes

Do you have legacy microservices?  It’s not surprising if you do, especially if some of those microservices (or macroservices, or miniliths) were really just a lift-and-shift of some already legacy software into a microservice structure and deployment.  Microservices present a unique challenge for refactoring, because the clients are so much harder to find than in … Read more

Resilient Transactions

It is very desirable for microservices to embrace the ACID 2.0 paradigm, where transactions can come in out of order, and the end result will still be in the same state as if the transactions were processed in the correct order. Imagine you have an update transaction come in for a Person’s name.  If that … Read more

Versioning Microservice APIs

Let’s start with a simple question.  Do you need to version microservice APIs?  I think the near-unanimous answer here is ‘yes’.  You need to version microservice APIs, because each service is independent, you can’t update all the services that call a certain API all at once.  You need a mechanism to introduce some new functionality, … Read more

Sizing Up Microservices

How big should microservices be? Should their size be based on lines of code? Developer hours? REST endpoints? Data entities? About the only real solid guiding principle you can find is “it should do one thing, and do it well.” But what is that “one thing” for a microservice? Is it that it can handle … Read more