#135 - Microservice Reflection & Scaling Complex Adaptive System - James Lewis


NEW EPISODE #135
Microservice Reflection & Scaling Complex Adaptive System


“Spend some time looking at the system in which you work. Understand how the work is working. Understand how flow is for your organization. And then you can work to optimize that.”

James Lewis is a Director at ThoughtWorks and a pioneer of microservice architecture. In this episode, we went back memory lane to the time when James first coined and popularized the microservice architecture. James described his definition of a microservice and its important characteristics. He also shared the recent microservice evolution, including the swing between microservice and monolith. In the second half, James shared his insights from complexity science related to different scaling patterns. Particularly, he explained how different hierarchy types can affect an organization’s growth rate. Towards the end, James gave some tips on how organization can detect signs of suboptimal growth and what we can do to maintain organizational agility.

Listen out for:

  • Coining Microservices
  • Definition of Microservices
  • Microservices Swing
  • Scaling Law and Complexity Science
  • Complex and Adaptive System
  • Examining Sublinear Growth

Show notes & transcript: techleadjournal.dev/episodes/135.
Follow @techleadjournal on LinkedIn, Twitter, and Instagram.
Buy me a coffee ☕ or become a patron 😎.



3 Key Takeaways

How do you preserve exponential growth of output, even when your organization’s size continues to double?

  1. Be conscious of the type of network adopted in your organization & teams.

    A hierarchical network scales based on a sublinear scaling law.
    Even when the organization doubles in size, it doesn’t double the amount of output, e.g. revenue.
    Organization adopting this type of network uses hierarchy to manage constraints and processes.
    As a result, things start to slow down, and it becomes more difficult to get things done.

    A social network scales based on a super-linear scaling law.
    When the organization doubles in size, it gets more than double the output, e.g. revenue.
    Organization adopting this type of network uses independent self-organized teams to achieve outcomes.
    They get things done autonomously without relying on expensive coordination and tight dependencies.
  2. Spend some time to understand your system, way of working, and how information flows.

    Often we get so busy doing the work and don’t have the time to optimize the system we are working in.

    We need to allocate our time frequently to understand and visualize our system.
    • Understand the way of working and flow of information within the organization
    • Understand the common frictions people experience in day-to-day delivery
    • Understand whether the current metrics actually provide good signals for feedback
  3. Focus on both the technical and business capabilities when implementing microservice architecture.

    A microservice implementation often stops at just the technical capabilities.

    Microservice architecture provides greater opportunities when we also implement the business capabilities, such as
    • Organizing around business domains, e.g. based on DDD’s bounded context
    • Delivering as products rather than projects
    • Understanding how Conway’s law influences system architecture


2 Quotes



1 Key Concept

Characteristics of a Microservice Architecture

A good microservice architecture exhibits the following characteristics (James Lewis & Martin Fowler, 2014):

  • Componentization via Services that are independently deployable
  • Organized around Business Capabilities
  • Products not Projects
  • Smart endpoints and dumb pipes
  • Decentralized Governance
  • Decentralized Data Management
  • Infrastructure Automation
  • Design for failure
  • Evolutionary Design

❓ Do your microservices exhibit most of the above characteristics?

References:
https://martinfowler.com/articles/microservices.html

☎️ Book a 1:1 session with me

Tech Lead Journal Podcast

A weekly podcast about technical leadership and excellence. Check out on techleadjournal.dev. Find out more about me: links.henrysuryawirawan.com.

Read more from Tech Lead Journal Podcast

NEW EPISODE #175 “All data scientists and analysts should spend more time in the business, outside the data sets, just to see how the actual business works. Because then you have the context, and then you understand the columns you’re seeing in the data.” David Asboth, author of “Solve Any Data Analysis Problem” and co-host of the “Half Stack Data Science” podcast, shares practical tips for solving real-world data analysis challenges. He highlights the gap between academic training and...

NEW EPISODE #174 “Raise the bar of the team so that they bring sustainable practices. If your code stinks, no matter how you desire to be agile, you cannot respond to the change.” Dr. Venkat Subramaniam is a renowned figure in the software development community, an award-winning author and founder of Agile Developer, Inc. In this episode, Venkat sheds light on the frequently overlooked challenges of software development and provides valuable insights for succeeding in the field. We delve into...

NEW EPISODE #173 “Three characteristics of an organization that is operating with maximal effectiveness are value, clarity, and flow.” Are you feeling the strain of growth? Struggling to maintain alignment and efficiency as your organization scales? In this episode, I sit down with Steve Pereira and Andrew Davis, authors of the groundbreaking new book, “Flow Engineering”. Learn why traditional scaling methods focusing on rigid coordination can actually hinder progress and how flow engineering...