官术网_书友最值得收藏!

What are microservices?

When an application is maintained by many different developers over a longer period of time, it tends to get more and more complex. Bug fixes, new or changing requirements, and constant technological changes result in your software continually growing and changing. When left unchecked, this software evolution will lead to your application getting more complex and increasingly difficult to maintain.

Preventing this kind of software erosion is the objective of the microservice architecture paradigm that has emerged over the past few years. In a microservice architecture, a software system is split into a set of (potentially a lot of) independent and isolated services. These run as separate processes and communicate using network protocols (of course, each of these services should in itself be a twelve-factor app). For a more thorough introduction to the topic, we can recommend the original article on the microservice architecture by Lewis and Fowler at https://martinfowler.com/articles/microservices.html.

In contrast to traditional Service-Oriented Architectures (SOA), which have been around for quite a while, microservice architectures focus on simplicity. Complex infrastructure components such as ESBs are avoided at all costs, and instead of complicated communication protocols such as SOAP, simpler means of communication such as REST web services (about which you will learn more in Chapter 2, Building Microservices Using Rest APIs) or AMQP messaging (refer to Chapter 4, Asynchronous Microservice Architectures Using Message Queues) are preferred.

Splitting complex software into separate components has several benefits. For instance, different services can be built on different technology stacks. For one service, using Go as runtime and MongoDB as persistence layer may be the optimal choice, whereas a Node.js runtime with a MySQL persistence might be a better choice for other components. Encapsulating functionality in separate services allows developer teams to choose the right tool for the right job. Other advantages of microservices on an organizational level are that each microservice can be owned by different teams within an organization. Each team can develop, deploy, and operate their services independently, allowing them to adjust their software in a very flexible way.

主站蜘蛛池模板: 开远市| 抚宁县| 禄丰县| 丹江口市| 米脂县| 喀喇沁旗| 临湘市| 渝中区| 娱乐| 永清县| 澎湖县| 句容市| 宜昌市| 宜阳县| 灵宝市| 绥芬河市| 萝北县| 江达县| 万宁市| 东兴市| 克什克腾旗| 海丰县| 怀远县| 晴隆县| 蒲江县| 虹口区| 晋江市| 陵川县| 嘉鱼县| 静海县| 茶陵县| 庆安县| 延庆县| 迭部县| 成武县| 大埔区| 石狮市| 连州市| 纳雍县| 固安县| 罗源县|