Part 2: Microservices: Technical, Organizational, or Business Architecture? Yes

January 18, 2020 Joe Chung

Organizations which design systems…are constrained to produce designs which are copies of the communication structures of these organizations.
— M. Conway

In a previous post, I covered what microservices are and their benefits. My aim was to help non-technical executives understand what microservices are and the role they play in supporting business objectives. Implemented correctly, a microservices architecture allows technology to move at the speed of the business. Today, that can mean reacting to customer needs in seconds and minutes as opposed to months and years.

Imagine it’s possible, with a snap of a finger, to take that gnarly mess of a system that powers your business capabilities and break it up into individual modules that can change independently. The question that often comes up is, How do you break it up? How do you decide what the individual components are? Who does the work?

Let’s start with an example where the components appear somewhat obvious: an ecommerce site. To make it more real, let’s use the example of Amazon.com. To start, I’ve highlighted some natural seams in the product detail page.

If you group the red boxes by their function, you’ll observe things like product images, product detail, promotions, shopping cart, inventory availability, recommended items, delivery, search, account, categories, product family items, etc. Notice these groupings are not technical in nature; rather, they describe business functions or domains. These business domains are typically independent of each other but of course interplay, interact, and interface to create an online shopping experience.

Here’s a thought experiment: If you were to peer into the organization and business functions behind any company’s ecommerce site, what would the organization look like? Would all these functions be tied up in a large ecommerce team? Conway’s law would predict that the ecommerce site would map to an ecommerce organization. The site would likely be a welded-together amalgamation of all the functions called out earlier. If a company operated in several parts of the world, Conway’s law would predict there would likely be several sites, each with its own organization.

What’s the potential drawback? What if the search function wanted to improve how results were displayed to users? Or the promotions team wants to change how information is displayed on the website for an upcoming holiday sale? The way I’ve seen it work with most companies is that each of the business functions would send a list of requests to the technology team, who would then have to prioritize and manage the changes across the site. This means it could take a while to implement desired changes, requiring business stakeholders to submit requests far in advance.

Let’s go back to the point after we snapped our fingers and the ecommerce site is broken up into individual modules that can each change without coordinating with other business domains. What would those organizations look like now? If the desire is for each business domain to evolve, innovate, and change their respective functions, it’s reasonable to assume each function would need the business owner of that function to work very closely with their technical counterparts—they might need to be on the very same team. If each business function, of which there could be hundreds, needed this same ability to innovate, then you’d end up with an organization of hundreds of independent teams.

As someone who has led application and technical architecture teams, I’ve spent a fair amount of time designing systems using domain driven design principles. The idea is that if systems are designed reflecting how the business is architected in its functions (e.g. payment, delivery, etc.) and objects (e.g. customer, items, etc.), then the system will be more durable and flexible. We would agonize to make sure the system was as modular as possible, but what we often did not consider is who and what team would be driving those changes in perpetuity. But if the systems are a reflection of an organization, which should be a reflection of the business architecture, as stated by Conway’s law, then why don’t we start systems by designing the organization and business architecture first?

If you believe in the value of modular components to build agile, innovative, and scalable systems, why not start with modular teams who can drive the necessary innovation from both business and technical perspectives? It’s why I argue that microservices is not just about a technical approach but an approach to business and organization architectures.

Never stop innovating,

Joe

Previous Article
Best of Both Worlds: Building an Entrepreneurial Culture in the Enterprise
Best of Both Worlds: Building an Entrepreneurial Culture in the Enterprise

In our Executive Summit roundtable session at re:Invent 2019, Phil Potloff and I discussed the topic of inn...

Next Article
Drive Change but Avoid the Chasms
Drive Change but Avoid the Chasms

Every change will be met with an equal, opposite, unpredictable change of its own. —Inspired by Isaac Newto...

×

Interested in learning more? Let us know!

First Name
Last Name
Phone Number
Company Name
Country/Region
State/Province
State/Province
Postal Code
Industry
Job Role
Job Title
Level of AWS Usage
Company Type
Company Size
I am completing this form in connection with my:
Yes
I'd like to receive information from Amazon Web Services, Inc. and its affiliates (AWS) related to their services, events and any special offers by email or post.

You may unsubscribe at any time by following the instructions in the communications received. Your information will be handled in accordance with the AWS Privacy Notice.
By completing this form, I agree that I'd like to receive information from Amazon Web Services, Inc. and its affiliates (AWS) related to their services, events and any special offers by email, post, or other forms of communication.

You may unsubscribe at any time by following the instructions in the communications received. Your information will be handled in accordance with the AWS Privacy Notice.
I'd like to receive marketing information from Amazon Web Services, Inc. and its affiliates (AWS) related to their services, events and any special offers by email or post.

You may unsubscribe from the sender at any time by following the instructions in the communications received. Your information will be handled in accordance with the AWS Privacy Notice.
I agree that Amazon Web Services, Inc. (AWS) collects and uses my information and to receive information from AWS and its affiliates related to their services, events and any special offers by email or post.

You may unsubscribe at any time by following the instructions in the communications received. Your information will be handled in accordance with the AWS Privacy Notice.
I'd like to receive marketing information from Amazon Web Services, Inc. and its affiliates (AWS) related to their services, events and any special offers including by email or post.

You may unsubscribe from receiving further marketing communications from the sender at any time by following the instructions in the communications received. Your information will be handled in accordance with the AWS Privacy Notice.
I'd like to receive marketing information from Amazon Web Services, Inc. and its affiliates (AWS) related to their services, events and any special offers by email or post.

You may unsubscribe from the sender at any time by following the instructions in the communications received. Your information will be handled in accordance with the AWS Privacy Notice.
I'd like to receive information, including marketing information, from Amazon Web Services, Inc. and its affiliates (AWS) related to their services, events and any special offers by email or post.

You may unsubscribe from the sender at any time by following the instructions in the communications received. Your information will be handled in accordance with the AWS Privacy Notice.
I'd like to receive marketing information from Amazon Web Services, Inc. and its affiliates (AWS) related to their services, events and any special offers by email or post and telephone.

You may unsubscribe from receiving further marketing communications from the sender at any time by following the instructions in the communications received. Your information will be handled in accordance with the AWS Privacy Notice.
I'd like to receive information from AWS and its affiliates related to their services, events and any special offers by email or post.

You may unsubscribe at any time by following the instructions in the communications received. Your information will be handled in accordance with the AWS Privacy Notice.
I'd like to receive information from AWS related to AWS cloud services, events and any special offers by email, post, or other forms of communication.

I understand that Amazon Web Services, Inc. and its affiliates (AWS) intend to use and transfer my name and contact information for direct marketing purposes and that AWS requires my consent in order to do so. You may unsubscribe at any time by following the instructions in the communications received. Your information will be handled in accordance with the 
AWS Privacy Notice.
I have reviewed the AWS Privacy Notice and I agree to the collection, processing and use of my personal data on the terms and conditions in the AWS Privacy Notice. I specifically agree to receive information from Amazon Web Services, Inc. and its affiliates (AWS) related to their services, events and any special offers by email or post. You may unsubscribe at any time by following the instructions in the communications received. Your information will be handled in accordance with the AWS Privacy Notice.  
Thank you!
Error - something went wrong!