Fundamental IDEAS for designing modern service-based systems

By Paulo Merson

Elevator Pitch

See talk description.

Description

Yes, IDEAS is yet another silly mnemonic acronym: Interface segregation, Deployability, Event-driven, Availability over consistency, Single responsibility. But these are the core principles for microservice design and in 15 minutes we’ll relate them to techniques, tools and technologies we use today to develop modern service-based distributed systems.

Notes

Both speakers have already presented at SATURN at different occasions:

  • Paulo Merson (https://www.youtube.com/watch?v=UbTQgyW0eHA)

  • Joe Yoder (https://www.youtube.com/watch?v=5658VuYiRxs)

The SOLID principles remain a solid foundation for object-oriented design and implementation. For this DEV@SATURN talk we thought about what principles are fundamental at the microservice design level. Of course there’s more behind each principle label:

  • Interface segregation: this is the classic Interface Segregation Principle, which is very much present in the microservice world and translates to, for example, API standardization, and the use of API gateways and BFFs.

  • Deployability: the design of microservices requires a lot of effort to enhance deployability, using things such as DevOps, Continuous Delivery, containerization.

  • Event-driven: whenever possible we want to use asynchronous services that communicate via events (reactive services) to promote scalability.

  • Availability over consistency: often we’ll use data replication to improve autonomy and scalability of microservices at the price of transactional consistency (we choose eventual consistency).

  • Single responsibility: for microservices, SRP translates to finding the right-size functional scope for microservices. DDD is a technique that can help to address that challenge.