- Microservices with Azure
- Namit Tanasseri Rahul Rai
- 467字
- 2021-07-02 22:18:24
Conway's law
Melvin Edward Conway, an American computer scientist, coined a law that generally guides the design of the applications built by an organization.
– Melvyn Conway 1967
An important aspect of the law that should be noted is that the communication structure mentioned in the law is not the same as organizational hierarchy but rather how the various teams in the organization communicate with each other. For instance, an e-commerce company might have a product team and an invoicing team. Any application designed by this organization will have a product module and an invoicing module that will communicate with each other through a common interface.
For a large enterprise with many communication channels, the application architecture will be very complex and nearly impossible to maintain.
Using the law in conjunction with principles of domain driven design can actually help an organization enhance agility and design scalable and maintainable solutions. For instance, in an e-commerce company, teams may be structured around the domain components rather than the application layers that they specialize in, for instance, user interface, business logic, and database:

Since the domains are clearly defined, the teams across domains will not need to interact too frequently. Also, the interfaces between teams would not be too complex and rigid. Such team layouts are commonly employed by large organizations such as Amazon, where each team is responsible for creating and maintaining a part of a domain.
Microservices work better when coupled with the principles of domain driven design rather than communication channels. In the application architecture that we designed earlier, we could have ignored the domains of the application and classified teams by communication structure; for instance, two Microservices may be created, each of which handles product listing and product inventory. Such a distribution might lead to each of the teams to develop components independently of each other and will make moving functionalities between them very difficult if the communication hierarchy changes, such as when the two services need to be merged.
- 程序員修煉之道:程序設計入門30講
- 測試驅動開發:入門、實戰與進階
- HTML5 and CSS3 Transition,Transformation,and Animation
- Python數據結構與算法(視頻教學版)
- Instant Nancy Web Development
- 深度學習程序設計實戰
- Functional Python Programming
- 計算機應用基礎案例教程(第二版)
- 現代C++語言核心特性解析
- Kohana 3.0 Beginner's Guide
- 深入理解MySQL主從原理
- Office VBA開發經典:中級進階卷
- Building Microservices with .NET Core 2.0(Second Edition)
- GitHub Essentials
- 編程改變生活:用PySide6/PyQt6創建GUI程序(進階篇·微課視頻版)