Search icon CANCEL
Subscription
0
Cart icon
Your Cart (0 item)
Close icon
You have no products in your basket yet
Arrow left icon
Explore Products
Best Sellers
New Releases
Books
Videos
Audiobooks
Learning Hub
Free Learning
Arrow right icon
Arrow up icon
GO TO TOP
Software Architecture with Kotlin

You're reading from   Software Architecture with Kotlin Analyze, combine, and terraform various architecture styles for sustainable and scalable software

Arrow left icon
Product type Paperback
Published in Dec 2024
Publisher Packt
ISBN-13 9781835461860
Length
Edition 1st Edition
Languages
Arrow right icon
Author (1):
Arrow left icon
Mr. Jason Chow Mr. Jason Chow
Author Profile Icon Mr. Jason Chow
Mr. Jason Chow
Arrow right icon
View More author details
Toc

Table of Contents (18) Chapters Close

Preface 1. Chapter 1: The Essence of Software Architecture 2. Chapter 2: Principles of Software Architecture FREE CHAPTER 3. Chapter 3: Polymorphism and Alternatives 4. Chapter 4: Peer-to-Peer and Client-Server Architecture 5. Chapter 5: Exploring MVC, MVP, and MVVM 6. Chapter 6: Microservices, Serverless, and Microfrontends 7. Chapter 7: Modular and Layered Architectures 8. Chapter 8: Domain-Driven Design (DDD) 9. Chapter 9: Event Sourcing and CQRS 10. Chapter 10: Idempotency, Replication, and Recovery Models 11. Chapter 11: Auditing and Monitoring Models 12. Chapter 12: Performance and Scalability 13. Chapter 13: Testing 14. Chapter 14: Security 15. Chapter 15: Beyond Architecture 16. Index 17. Other Books You May Enjoy

Conway’s law

Conway’s law is an observation that the system design of an organization mirrors the organizational structure. A computer programmer called Melvin Conway introduced this idea in 1967, and his original wording is as follows:

“Any organization that designs a system (defined broadly) will produce a design whose structure is a copy of the organization’s communication structure.”

In the context of software systems, software architecture mirrors the organization structure. The classic example can be illustrated in this diagram:

Figure 1.1 – A company organized by skill set

Figure 1.1 – A company organized by skill set

The company has a backend engineering (BE) team, a frontend engineering (BE) team, and a database engineering (DE) team. This organization groups people by their skill set. Everyone in a team is responsible for all business functions. This structure is likely to produce a monolithic system, which usually manifests in a single source code repository or one single logical process.

Figure 1.2 – A company organized by business functions

Figure 1.2 – A company organized by business functions

The organization in Figure 1.2 groups people by their business functions. So, everyone in a team is responsible for a designated business function, but each member may not have the same skill set. This structure is likely to produce a modular system, which contains multiple logical processes that interact with each other. Usually, there are dedicated source code repositories for each team.

Systems scale better when the team size is small because the number of communication channels required for people to talk to each other is n (n – 1) / 2 so it is exponentially scaled up. Jeff Bezos from Amazon proposed his two-pizza rule:

“If you can’t feed your team with two large pizzas in a meeting, you’re in trouble.”

So, if teams cannot be too big to scale the organization as well as the system, then it usually ends up with many teams. This resonates a lot with the architectural concepts we will cover very soon.

On the other hand, despite best efforts in modernizing the architecture of a legacy system, if the organization structure refuses to align with it, it is likely that the new architecture will eventually fall back to its old habitual structure.

This is something that should be solved by engineering management and upward. It is beyond what software architects can solve. However, it is worth understanding this phenomenon so the issue can be escalated as soon as possible.

Some big organizations found it extremely difficult to change their structures. And they even created start-up companies to run with modern organization structures alongside modern software architecture.

lock icon The rest of the chapter is locked
Register for a free Packt account to unlock a world of extra content!
A free Packt account unlocks extra newsletters, articles, discounted offers, and much more. Start advancing your knowledge today.
Unlock this book and the full library FREE for 7 days
Get unlimited access to 7000+ expert-authored eBooks and videos courses covering every tech area you can think of
Renews at $19.99/month. Cancel anytime
Banner background image