29Beyond microservices: Process and organizationarchitecture in order to successfully develop software, but it’s not the only concern.You must also consider process and organization. 1.7Beyond microservices: Process and organizationFor a large, complex application, the microservice architecture is usually the bestchoice. But in addition to having the right architecture, successful software develop-ment requires you to also have organization, and development and delivery processes.Figure 1.16 shows the relationships between process, organization, and architecture.I’ve already described the microservice architecture. Let’s look at organization andprocess.1.7.1Software development and delivery organizationSuccess inevitably means that the engineering team will grow. On the one hand, that’sa good thing because more developers can get more done. The trouble with largeteams is, as Fred Brooks wrote in The Mythical Man-Month, the communication over-head of a team of size Nis O(N2). If the team gets too large, it will become inefficient,due to the communication overhead. Imagine, for example, trying to do a daily standupwith 20 people.The solution is to refactor a large single team into a team of teams. Each team issmall, consisting of no more than 8–12 people. It has a clearly defined business-orientedmission: developing and possibly operating one or more services that implement afeature or a business capability. The team is cross-functional and can develop, test,and deploy its services without having to frequently communicate or coordinate withother teams.EnablesEnablesArchitecture:MicroservicearchitectureOrganization:Small, autonomous,cross-functional teamsProcess:DevOps/continuous delivery/deploymentEnablesRapid, frequent,and reliable deliveryof softwareFigure 1.16The rapid, frequent, and reliable delivery of large, complex applications requires a combination of DevOps, which includes continuous delivery/deployment, small, autonomous teams, and the microservice architecture.