Knowledge

Microservices

Source 📝

25: 78: 616:
does not disappear if it is re-implemented as a set of microservices. Some of the complexity gets translated into operational complexity. Other places where the complexity manifests itself are increased network traffic and resulting in slower performance. Also, an application made up of any number of
555:
Moving responsibilities between services is more difficult. It may involve communication between different teams, rewriting the functionality in another language or fitting it into a different infrastructure. However, microservices can be deployed independently from the rest of the application, while
905:
Packaging, deployment, and scheduling: Large-scale systems require robust package management, and deployment systems to manage rolling or blue-green deployments, and rollbacks if necessary. A scheduler helps determine which particular execution node a new set of services can be deployed to based on
566:
are regarded as an anti-pattern in microservices-based architectures, resulting in a tighter coupling of all the participants within the transaction. However, the lack of this technology causes awkward dances which have to be implemented by all the transaction participants in order to maintain data
377:
In May 2011, a workshop of software architects held near Venice used the term 'microservice' to describe a common architectural style that many participants had been recently exploring. By May 2012, the same group had decided that 'microservices' was the most appropriate name. James Lewis presented
163:
in the codebase, allowing developers to evolve their services with limited restrictions, and reducing additional complexity. Consequently, organizations can develop software with rapid growth and scalability, as well as implement off-the-shelf services more easily. These benefits come with the cost
796:
Kubernetes Service and Ingress resources, Istio, Ambassador are solutions that provide both north–south (traffic into and out of data center) as well as east–west (traffic across data centers or clouds or regions) API gateway functions. Zuul can also be implemented along with Kubernetes, providing
365:
which is a software design pattern that is used along with the microservices. This pattern makes the design of the microservice possible since it isolates in layers the business logic from the auxiliary services needed in order to deploy and run the microservice completely independent from others.
291:
with holistic service monitoring are necessary to effectively develop, maintain, and operate such applications. A consequence of (and rationale for) following this approach is that the individual microservices can be individually scaled. In the monolithic approach, an application supporting three
240:
A microservice is not a layer within a monolithic application (for example, the web controller or the backend-for-frontend). Rather, it is a self-contained piece of business functionality with clear interfaces, and may, through its own internal components, implement a layered architecture. From a
709:
In a service mesh, the service instances and their sidecar proxies are said to make up the data plane, which includes not only data management but also request processing and response. The service mesh also includes a control plane for managing the interaction between services, mediated by their
2461:
data formats. These mechanisms usually provide only partial and incomplete understanding of the semantics of the components themselves. In the presence of such complexity, it is not surprising that applications typically bake-in many assumptions about the expected behavior of the ecosystem they
663:
Computer microservices can be implemented in different programming languages and might use different infrastructures. Therefore, the most important technology choices are the way microservices communicate with each other (synchronous, asynchronous, UI integration) and the protocols used for the
444:
It is considered bad practice to make the service too small, as then the runtime overhead and the operational complexity can overwhelm the benefits of the approach. When services become too fine-grained, alternative approaches should be considered, such as packaging the function as a library or
382:
in March 2012 at 33rd Degree in Kraków in Microservices - Java, the Unix Way, as did Fred George about the same time. Adrian Cockcroft, former director for the Cloud Systems at Netflix, described this approach as "fine-grained SOA", pioneered the style at web-scale, as did many of the others
491:: microservices are considered a viable means for modernizing existing monolithic software application. There are experience reports of several companies who have successfully replaced parts of their existing software with microservices or are in the process of doing so. The process for 440:
In the context of software architecture, services dedicated to a single task, such as calling a specific backend system or performing a particular calculation, are known as atomic services. Services that call atomic services to consolidate an output are referred to as composite services.
582:
Data aggregation. In order to have a full view of a working system, it is required to extract data sets from the microservices repositories and aggregate them into a single schema. For example, to be able to create operational reports that are not possible using a single microservice
292:
functions would have to be scaled in its entirety even if only one of these functions had a resource constraint. With microservices, only the microservice supporting the function with resource constraints needs to be scaled out, thus providing resource and cost optimization benefits.
802:
Security concerns: Many security concerns are pushed to the API gateway implementation. With distributed microservice applications, it makes sense to not reinvent the security wheel and allow for policy definition and implementation in components that are shared by all services.
689:
In a service mesh, each service instance is paired with an instance of a reverse proxy server, called a service proxy, sidecar proxy, or sidecar. The service instance and sidecar proxy share a container, and the containers are managed by a container orchestration tool such as
559:
Viewing the size of services as the primary structuring mechanism can lead to too many services when the alternative of internal modularization may lead to a simpler design. This requires understanding the overall architecture of the applications and interdependencies between
863:
Distributed tracing: Per-process logging and metric monitoring have their place, but neither can reconstruct the complex paths that transactions take as they propagate across a distributed system. Distributed tracing is an essential tool for a microservices platform.
893:
Autoscaling and self-healing: Distributed systems respond to higher load by scaling horizontally: the platform must detect and auto-respond to such conditions. Furthermore, the system needs to detect failures and attempt auto-restarts without operator input.
789:
API gateway: The granularity of APIs provided by microservices is often different than what a service client needs. API Gateways implement facades and provide additional services like proxying, and protocol translation, and other management functions.
413:
A key step in defining a microservice architecture is figuring out how big an individual microservice has to be. There is no consensus or litmus test for this, as the right answer depends on the business and organizational context. For instance,
455:
In the granularity of microservices discussion, there is a spectrum. On one end are the Anaemic Services, which do not have a large number of responsibilities, and on the other end are the Modular Monolith, which are large modules of a system.
706:. The service proxies are responsible for communication with other service instances and can support capabilities such as service (instance) discovery, load balancing, authentication and authorization, secure communications, and others. 754:
Kubernetes ConfigMaps exposes the configuration stored in etcd via services. Kubernetes Secrets supports the service-based secure deployment and usage of sensitive configuration information (such as passwords, certificates, etc.).
369:
In 2007, Juval Löwy in his writing and speaking called for building systems in which every class was a service. Löwy realized this required the use of a technology that can support such granular use of services, and he extended
769:
Kubernetes Services provide deployment-time registration of instances of services that are internally available within the cluster. Ingress is a mechanism whereby a service can be exposed to clients outside the cluster.
730:
ecosystem with an equivalent from the Spring Cloud world. One noteworthy aspect of the Spring Cloud ecosystem is that they are all Java-based technologies, whereas Kubernetes is a polyglot runtime platform.
471:: This makes the application easier to understand, develop, test, and become more resilient to architecture erosion. This benefit is often argued in comparison to the complexity of monolithic architectures. 1788: 576:
While not specific to microservices, the decomposition methodology often uses functional decomposition, which does not handle changes in the requirements while still adding the complexity of services.
878:
Resilience and fault tolerance: Distributed systems must be capable of auto-routing around failures, and be capable of routing requests to the service instance that will provide an optimum response.
573:
The protocol typically used with microservices (HTTP) was designed for public-facing services, and as such is unsuitable for working internal microservices that often must be impeccably reliable.
570:
Development and support of many services are more challenging if they are built with different tools and technologies - this is especially a problem if engineers move between projects frequently.
1647:
Dragoni, Nicola; Giallorenzo, Saverio; Lafuente, Alberto Lluch; Mazzara, Manuel; Montesi, Fabrizio; Mustafin, Ruslan; Safina, Larisa (2017). "Microservices: Yesterday, Today, and Tomorrow".
814:
Centralized logging: It is important to have a centralized log gathering and analysis infrastructure to manage a plethora of services – many of which are operating in a distributed fashion.
766:
Spring Cloud Eureka allows clients to register to it, maintains a heartbeat with registered clients, and maps service names to hostnames for clients that lookup services by service name.
2453:"Access to system components and the interfaces between clients and their applications, however, are mediated via a number of often unrelated mechanisms, including informally documented 722:
developed a microservice framework to support their internal applications, and then open-sourced many portions of that framework. Many of these tools have been popularized via the
668:...). In a traditional system, most technology choices like the programming language impact the whole system. Therefore, the approach to choosing technologies is quite different. 778:: The key to scaling a distributed system is being able to run more than one instance of a component. Load has to be then distributed across those instances via a load balancer. 2096:
Chen, Lianping; Ali Babar, Muhammad (2014). "Towards an Evidence-Based Understanding of Emergence of Architecture through Continuous Refactoring in Agile Software Development".
335:
interfaces. Any service, at any granularity, can be exposed." He described how a well-designed microservices platform "applies the underlying architectural principles of the
726:– they have been re-implemented as Spring-based tools under the umbrella of the Spring Cloud project. The table below shows a comparison of an implementing feature from the 191:
There is no single definition for microservices. A consensus has evolved over time in the industry. Some of the defining characteristics that are frequently cited include:
849:
Centralized metrics: A centralized area where the health and performance of the individual services and overall system can be monitored is essential to proper operations.
479:: Since microservices are implemented and deployed independently of each other, i.e. they run within independent processes, they can be monitored and scaled independently. 1563: 287:
deployment. According to Fowler, because of the large number (when compared to monolithic application implementations) of services, decentralized continuous delivery and
452:
is being employed in modeling the domain for which the system is being built, then a microservice could be as small as an aggregate or as large as a bounded Context.
579:
The very concept of microservice is misleading since there are only services. There is no sound definition of when a service starts or stops being a microservice.
2745:
Christudas Binildas (June 27, 2019). Practical Microservices Architectural Patterns: Event-Based Java Microservices with Spring Boot and Spring Cloud. Apress.
339:
and REST services together with Unix-like scheduling and pipelines to provide radical flexibility and improved simplicity in service-oriented architectures.
748:
Configuration management: configuration for a microservice application needs to be externalized from the code and be retrievable via a simple service call.
2713: 1430:
Mendonca, Nabor C.; Jamshidi, Pooyan; Garlan, David; Pahl, Claus (2019-10-16). "Developing Self-Adaptive Microservice Systems: Challenges and Directions".
718:
Implementing a microservice architecture is very difficult. There are many concerns (see table below) that any microservice architecture needs to address.
784:
Kubernetes Service provides the ability for the service to be load-balanced across service instances. This is not the equivalent of what Ribbon provides.
257:
software development process. A change to a small part of the application only requires rebuilding and redeploying only one or a small number of services.
159:
their services independently, reduce code interdependency and increase readability and modularity within a codebase. This is achieved by reducing several
751:
Spring Config Server, Netflix Archaius both support a Git-repository—based location for configuration. Archaius supports data typing of configuration.
695: 3515: 2892: 2882: 1579: 401:
In February 2020, the Cloud Microservices Market Research Report predicted that the global microservice architecture market size will increase at a
386:
Microservices is a specialization of an implementation approach for service-oriented architectures used to build flexible, independently deployable
3520: 2255: 1789:"Cloud Microservices Market 2020 Trends, Market Share, Industry Size, Opportunities, Analysis and Forecast by 2026 – Instant Tech Market News" 1267:
Nadareishvili, I., Mitra, R., McLarty, M., Amundsen, M., Microservice Architecture: Aligning Principles, Practices, and Culture, O'Reilly 2016
622: 1387: 809:
The Kubernetes ecosystem provides service meshes like Istio, which are capable of providing security through their API gateway mechanisms.
506:
and scale their respective services independently. It also allows the architecture of an individual service to emerge through continuous
228:
Services are small in size, messaging-enabled, bounded by contexts, autonomously developed, independently deployable, decentralized and
164:
of needing to maintain a decoupled structure within the codebase, which means its initial implementation is more complex than that of a
2627: 2197: 2874: 2778: 1133: 374:
to do just that, taking every class and treating it as a service while maintaining the conventional programming model of classes.
44:
Please help improve this article by looking for better, more reliable sources. Unreliable citations may be challenged and removed.
300:
There are numerous claims as to the origin of the term microservices. As early as 2005, Peter Rodgers introduced the term "Micro-
2124: 534:
Inter-service calls over a network have a higher cost in terms of network latency and message processing time than in-process
2929: 2721: 1928: 1843: 1674: 1631: 1606: 1545: 1366: 284: 2292: 1479: 100: 88: 2309: 1583: 1042: 2750: 2731: 2536: 2481: 2347: 1986: 1961: 1181: 1156: 1105: 1076: 968: 1277: 928:
Singleton application: limit a specific service to run as the only instance of that service within the entire system.
331:). Services can call services (+multiple language run-times). Complex service assemblies are abstracted behind simple 2672: 2454: 2433: 1820: 1414: 1379: 362: 246: 118: 59: 651:
is often measured through "99th percentile" because median and average latencies can be misleading as they can miss
304:" during a presentation at the Web Services Edge conference. Against conventional thinking and at the height of the 2859: 1011: 433:. Architects need to take into account user requirements, responsibilities, and architectural characteristics (aka 371: 1886:
Dragoni, Nicola; Lanese, Ivan; Larsen, Stephan Thordal; Mazzara, Manuel; Mustafin, Ruslan; Safina, Larisa (2017).
3403: 2844: 989: 312: 160: 2038:"Microservices in agile software development: a workshop-based study into issues, advantages, and disadvantages" 3058: 2229: 1319: 983: 233: 1761: 781:
Spring Cloud Ribbon provides the ability for service clients to load balance across instances of the service.
3197: 2214: 995: 347: 308: 261: 2738: 1887: 2924: 2771: 1480:"Service-Oriented Development on NetKernel- Patterns, Processes & Products to Reduce System Complexity" 1343: 3413: 3078: 2934: 2914: 2437: 1807:
O. Zimmermann, Domain-Specific Service Decomposition with Microservice API Patterns, Microservices 2019,
402: 351: 2887: 2474:
Understanding Distributed Systems: What every developer should know about large distributed applications
3260: 2954: 2949: 775: 638: 605: 434: 38: 2363:
Pautasso, Cesare (2017). "Microservices in Practice, Part 2: Service Integration and Sustainability".
1808: 3477: 3247: 3160: 3054: 2256:"Understanding Software Evolution using a Combination of Software Visualization and Software Metrics" 1729: 1021: 563: 418:
uses a service-oriented architecture where service often maps 1:1 with a team of 3 to 10 engineers.
2839: 2266: 2101: 276: 33: 3138: 1714: 637:
According to O'Reilly, each microservice should have its own architectural characteristics (a.k.a
3482: 3280: 2764: 2707: 763:: maintain a list of service instances that are available for work within a microservice domain. 204: 2553: 2457:(APIs), idiosyncratic foreign function interfaces, complex ill-understood model definitions, or 1383: 1202:
Pautasso, Cesare (2017). "Microservices in Practice, Part 1: Reality Check and Service Design".
2966: 2804: 613: 511: 492: 390:. The microservices approach is the first realisation of SOA that followed the introduction of 165: 3202: 3155: 3085: 2854: 2653:. EuroMLSys '21. Online, United Kingdom: Association for Computing Machinery. pp. 7–14. 952: 648: 642: 593: 395: 140: 2398:
Pautasso, Cesare (2018). "Consistent Disaster Recovery for Microservices: the BAC Theorem".
346:, whose aim was to make code less brittle and to make large-scale, complex software systems 96: 3275: 3143: 2974: 2451:"BRASS Building Resource Adaptive Software Systems". U.S. Government. DARPA. April 7, 2015. 1908: 1016: 499: 449: 387: 343: 280: 268: 218: 180: 152: 132: 2182: 2004:"Drivers and Barriers for Microservice Adoption – A Survey among Professionals in Germany" 1510: 8: 3487: 3270: 3108: 2897: 592:
The architecture introduces additional complexity and new problems to deal with, such as
549: 515: 503: 468: 254: 196: 156: 2944: 1912: 464:
The benefit of decomposing an application into different smaller services are numerous:
3385: 3207: 3073: 2415: 2380: 2163: 2053: 1934: 1898: 1680: 1652: 1457: 1439: 1219: 917:
Job management: scheduled computations disconnected from any individual user requests.
672: 626: 621:, which increases the architectural complexity. Various organizing principles (such as 618: 484: 422: 316: 264: 24: 2072: 1747: 1129: 383:
mentioned in this article - Joe Walnes, Dan North, Evan Bottcher, and Graham Tackley.
3398: 3029: 2746: 2727: 2717: 2532: 2477: 2343: 2288: 2155: 2125:"Microservices Architecture Enables DevOps: Migration to a Cloud-Native Architecture" 2037: 2003: 1982: 1957: 1924: 1839: 1670: 1627: 1602: 1541: 1461: 1410: 1362: 1300: 1245: 1177: 1152: 1101: 1072: 871: 760: 699: 539: 426: 358: 2498: 2384: 2167: 2057: 1684: 3467: 3448: 3389: 3359: 3349: 2726:
S. Newman, Building Microservices – Designing Fine-Grained Systems, O'Reilly, 2015
2654: 2419: 2407: 2372: 2147: 2139: 2105: 2045: 2015: 1938: 1916: 1868: 1662: 1449: 1223: 1211: 909:
Spring Boot, Apache Maven. The Spring Cloud system does not have a true scheduler.
723: 545: 415: 229: 200: 2283:
Richardson, Chris (November 2018). "Chapter 4. Managing transactions with sagas".
675:
has published a specification for developing microservices, Eclipse MicroProfile.
249:
describes a microservices-based architecture as having the following properties:
3472: 3443: 2902: 2098:
Proceedings Working IEEE/IFIP Conference on Software Architecture 2014 WICSA 2014
1666: 1006: 947: 806:
Spring Cloud Security addresses many security concerns through Spring Cloud Zuul
609: 320: 242: 1920: 354:(ROC), a generalized computation abstraction in which REST is a special subset. 3265: 3237: 3192: 2411: 1487: 617:
microservices has a larger number of interface points to access its respective
597: 328: 144: 2319: 629:, etc.) have been applied to reduce the impact of such additional complexity. 319:
are Micro-Web-Services". He goes on to say "Micro-Services are composed using
3509: 3494: 3455: 3320: 3222: 3170: 2907: 2159: 1001: 833: 818: 535: 488: 2658: 2049: 1453: 3393: 3049: 2919: 2151: 703: 684: 641:), and architects should not define uniform characteristics for the entire 612:. All of these problems have to be addressed at scale. The complexity of a 527:
The microservices approach is subject to criticism for a number of issues:
2706:
Special theme issue on microservices, IEEE Software 35(3), May/June 2018,
2646: 2109: 2102:
The 11th Working IEEE/IFIP Conference on Software Architecture(WICSA 2014)
267:(to independently deployable services), business-driven development (e.g. 16:
Collection of loosely coupled services used to build computer applications
3290: 3227: 3121: 3099: 3045: 2795: 2611: 2036:
Taibi, Davide; Lenarduzzi, Valentina; Pahl, Claus; Janes, Andrea (2017).
1872: 507: 476: 315:-services" and on slide #4 of the conference presentation, he discusses " 301: 241:
strategic perspective, microservice architecture essentially follows the
148: 2019: 1699: 3232: 3212: 3187: 3133: 3126: 3014: 2994: 2714:
Microservices Architecture – Aligning Principles, Practices and Culture
2376: 2143: 1897:. Lecture Notes in Computer Science. Vol. 10742. pp. 95–104. 1406: 1304: 1215: 727: 691: 430: 379: 1252:
The IEEE International Conference on Software Architecture (ICSA 2018)
350:
to change. Ultimately this path of research led to the development of
3255: 3217: 3009: 2864: 2526: 1582:" (Microsoft TechEd Conference, May 2009), SOA206. Archived from the 1348: 957: 342:
Rodgers' work originated in 1999 with the Dexter research project at
1361:
Josuttis, N. (2007). SOA in Practice. Sebastopol, CA, US: O'Reilly.
1251: 3438: 3295: 3063: 3024: 3019: 2999: 2989: 2984: 1903: 1809:
https://www.conf-micro.services/2019/slides//keynotes/Zimmerman.pdf
1657: 1444: 822: 222: 2123:
Balalaie, Armin; Heydarnoori, Abbas; Jamshidi, Pooyan (May 2016).
556:
teams working on monoliths need to synchronize to deploy together.
225:, hardware and software environments, depending on what fits best. 3408: 3354: 3150: 3068: 2849: 2787: 2756: 2314: 2215:"Developing Microservices for PaaS with Spring and Cloud Foundry" 1646: 973: 856: 837: 719: 665: 652: 155:. A microservice-based architecture enables teams to develop and 3365: 3305: 3300: 3179: 2979: 2832: 2822: 2817: 2651:
Proceedings of the 1st Workshop on Machine Learning and Systems
2198:"Why unit testing is not enough when it comes to microservices" 1043:"Microservice architectures: more than the sum of their parts?" 963: 841: 826: 625:(HATEOAS), interface and data model documentation captured via 601: 391: 288: 275:
It is common for microservices architectures to be adopted for
2708:
https://ieeexplore.ieee.org/xpl/tocresult.jsp?isnumber=8354413
1247:
Microservices: Architecting for Continuous Delivery and DevOps
1098:
Fundamentals of Software Architecture: An Engineering Approach
3333: 3328: 3310: 3116: 2827: 2595: 2310:"10 Tips for failing badly at Microservices by David Schmitz" 495:
of legacy applications is done using an incremental approach.
405:
of 21.37% from 2019 to 2026 and reach $ 3.1 billion by 2026.
1715:"MicroService Architecture: A Personal Journey of Discovery" 3460: 2939: 2812: 2571: 2122: 978: 793:
Spring Cloud Zuul provides configuration-based API facades
305: 208: 2008:
Enterprise Modelling and Information Systems Architectures
1885: 1429: 168:. Interfaces need to be designed carefully and treated as 3285: 3004: 2263:
In Proceedings of LMO 2002 (Langages et Modèles à Objets)
1745: 1509:
Russell, Perry; Rodgers, Peter; Sellman, Royston (2004).
912:
Docker, Rkt, Kubernetes Scheduler & Deployment, Helm
336: 332: 324: 169: 2035: 1511:"Architecture and Design of an XML Application Platform" 1317: 2628:"Spring Cloud for Microservices Compared to Kubernetes" 2742:- University of Colombo School of Computing, Sri Lanka 1508: 1473: 1471: 214:
Services are organized around business capabilities.
2688: 2031: 2029: 1888:"Microservices: How to Make Your Application Scale" 2674:Managing microservices with the Istio service mesh 2333: 2331: 2329: 1468: 195:Services in a microservice architecture are often 2001: 3507: 2647:"Towards Optimal Configuration of Microservices" 2645:Somashekar, Gagan; Gandhi, Anshul (2021-04-26). 2644: 2026: 1318:Ford, N; Richards, M; Sadalage, P; Dehghani, Z. 421:To find the right level of service granularity, 143:that arranges an application as a collection of 2531:. CreateSpace Independent Publishing Platform. 2342:. Addison-Wesley Professional. pp. 73–75. 2326: 1069:Patterns of Enterprise Application Architecture 502:by enabling small autonomous teams to develop, 2042:Proceedings of the XP2017 Scientific Workshops 1174:Microservices: Flexible Software Architectures 1123: 1121: 1119: 1117: 510:. Microservice-based architectures facilitate 2772: 2183:"Experiences from Failing with Microservices" 2095: 2002:Knoche, Holger; Hasselbring, Wilhelm (2019). 1979:Microservices: Flexible Software Architecture 1378: 900:Health check, self-healing, and auto-scaling 623:hypermedia as the engine of application state 2253: 2209: 2207: 1239: 1237: 1235: 1233: 713: 217:Services can be implemented using different 203:to fulfill a goal using technology-agnostic 2356: 1712: 1114: 797:configuration at individual service level. 2779: 2765: 2282: 2254:Lanza, Michele; Ducasse, Stéphane (2002). 1400: 1197: 1195: 1193: 394:and is becoming more popular for building 2391: 2204: 1902: 1656: 1649:Present and Ulterior Software Engineering 1443: 1230: 1127: 522: 498:Distributed development: it parallelizes 445:integrating it into other microservices. 119:Learn how and when to remove this message 60:Learn how and when to remove this message 3516:Architectural pattern (computer science) 2739:Microservice Architecture, Lecture Notes 2397: 2362: 2230:"How small should your microservice be?" 2195: 2180: 2089: 1297:Microservices: Patterns and Applications 1294: 1263: 1261: 1201: 664:communication (RESTful HTTP, messaging, 95:Relevant discussion may be found on the 2513:The mean and median often mask outliers 2496: 2471: 2174: 1859:Yousif, Mazin (2016). "Microservices". 1697: 1566:". (Channel9, ARCast.TV, October 2007). 1477: 1320:"Software Architecture: The Hard Parts" 1190: 3508: 2307: 2227: 2070: 1951: 1858: 1833: 1727: 1146: 1136:from the original on 14 February 2018. 1066: 881:Spring Hystrix, Turbine, & Ribbon 408: 372:Windows Communication Foundation (WCF) 3521:Service-oriented (business computing) 2760: 2736:Wijesuriya, Viraj Brian (2016-08-29) 2552:Swart, Stephanie (14 December 2016). 2551: 2524: 1976: 1700:"Micro services - Java, the Unix Way" 1344:CI/CD for microservices architectures 1282:Microsoft Azure Cloud Design Patterns 1258: 1171: 960:, a domain-oriented data architecture 283:, and applications using lightweight 2337: 2189: 1786: 1621: 1596: 1540:. O’Reilly Media. pp. 543–553. 1535: 1243: 1092: 1090: 1088: 71: 18: 2228:Tilkov, Stefan (17 November 2014). 2073:"Microservice architecture pattern" 1762:"Continuous Deployment: Strategies" 1401:Richardson, Chris (November 2018). 923:Kubernetes Jobs and Scheduled Jobs 531:Services form information barriers. 13: 2786: 2700: 2455:application programming interfaces 2432: 2196:Calandra, Mariano (7 April 2021). 1895:Perspectives of System Informatics 1626:. O’Reilly Media. pp. 74–75. 1601:. O’Reilly Media. pp. 48–51. 969:Fallacies of distributed computing 245:of "Do one thing and do it well". 87:tone or style may not reflect the 14: 3532: 2528:Microservices - A Practical Guide 1390:from the original on Oct 3, 2023. 1085: 885: 632: 604:/availability/consistency (BAC), 234:released with automated processes 175:A microservice is analogous to a 2181:Stenberg, Jan (11 August 2014). 1624:Programming WCF Services, 3rd ed 1599:Programming WCF Services, 1st ed 1538:Programming WCF Services, 1st ed 1278:"Backends For Frontends Pattern" 1012:Self-contained system (software) 311:(SOA) hype curve he argued for " 151:services, communicating through 101:guide to writing better articles 76: 23: 2681: 2665: 2638: 2620: 2604: 2588: 2564: 2545: 2518: 2490: 2465: 2444: 2426: 2301: 2276: 2247: 2221: 2116: 2064: 1995: 1970: 1945: 1879: 1852: 1838:. Addison-Wesley Professional. 1827: 1813: 1801: 1780: 1754: 1746:James Lewis and Martin Fowler. 1739: 1730:"Netflix heads into the clouds" 1721: 1706: 1691: 1640: 1615: 1590: 1570: 1554: 1529: 1502: 1486:. SYS-CON Media. Archived from 1478:Rodgers, Peter (Feb 15, 2005). 1423: 1394: 1372: 1355: 1336: 1311: 1288: 1270: 1071:. Addison-Wesley Professional. 990:Representational state transfer 740:Spring Cloud & Netflix OSS 678: 658: 587: 186: 2690:The Kubernetes Package Manager 2525:Wolff, Eberhard (2018-04-15). 2497:Bhargav, Nikhil (2024-03-18). 1836:Domain-Driven Design Distilled 1405:. Manning Publications. 1.4.1 1346:", Azure Architecture Center, 1172:Wolff, Eberhard (2016-10-12). 1165: 1140: 1060: 1035: 984:Interface description language 260:Adheres to principles such as 1: 1029: 996:Service-oriented architecture 852:Spring Spectator & Atlas 429:their component designs with 309:service-oriented architecture 1667:10.1007/978-3-319-67425-4_12 1384:"Microservice Prerequisites" 855:Heapster, Prometheus, & 7: 1921:10.1007/978-3-319-74313-4_8 1787:Research, Verified Market. 1352:. Retrieved 9 January 2018. 940: 639:non functional requirements 459: 435:non-functional requirements 352:resource-oriented computing 10: 3537: 2412:10.1109/MCC.2018.011791714 1713:Fred George (2013-03-20). 1147:Newman, Sam (2015-02-20). 682: 295: 3426: 3378: 3342: 3319: 3246: 3178: 3169: 3107: 3098: 3038: 2965: 2873: 2803: 2794: 2712:I. Nadareishvili et al., 2499:"What's the P99 Latency?" 2472:Vitillo, Roberto (2021). 2438:"Microservice Trade-Offs" 2265:: 135–149. Archived from 1564:Every Class a WCF Service 1022:Web-oriented architecture 714:A comparison of platforms 378:some of those ideas as a 277:cloud-native applications 2340:Righting Software 1st ed 2287:. Manning Publications. 1977:Wolff, Eberhard (2016). 1580:Every Class As a Service 1100:. O'Reilly Media. 2020. 199:that communicate over a 2659:10.1145/3437984.3458828 2308:Devoxx (Aug 30, 2017). 2050:10.1145/3120459.3120483 1834:Vaughn, Vernon (2016). 1454:10.1109/MS.2019.2955937 1244:Chen, Lianping (2018). 1067:Fowler, Martin (2002). 32:Some of this article's 2677:, Kubernetes, May 2017 2554:"Eclipse MicroProfile" 1954:Building Microservices 1149:Building Microservices 737:Microservices concern 614:monolithic application 523:Criticism and concerns 512:continuous integration 493:software modernization 363:hexagonal architecture 2634:, Red hat, 2016-12-09 2285:Microservice Patterns 2110:10.1109/WICSA.2014.45 1403:Microservice Patterns 953:Cross-cutting concern 931:Spring Cloud Cluster 552:are more complicated. 487:of heterogeneous and 396:continuously deployed 219:programming languages 153:lightweight protocols 141:architectural pattern 2716:, O'Reilly, 2016, 2558:projects.eclipse.org 2400:IEEE Cloud Computing 2338:Löwy, Juval (2019). 1952:Newman, Sam (2015). 1873:10.1109/MCC.2016.101 1861:IEEE Cloud Computing 1821:"Amazon SOA mandate" 1728:Farrow, Rik (2012). 1651:. pp. 195–216. 1622:Löwy, Juval (2010). 1597:Löwy, Juval (2007). 1536:Löwy, Juval (2007). 1515:HP Technical Reports 1017:Serverless computing 906:current conditions. 867:Spring Cloud Sleuth 450:domain-driven design 427:continuously iterate 344:Hewlett Packard Labs 281:serverless computing 269:domain-driven design 181:domain-driven design 133:software engineering 2476:. Roberto Vitillo. 2071:Richardson, Chris. 2020:10.18417/emisa.14.1 1913:2017arXiv170207149D 1409:and microservices. 516:continuous delivery 409:Service granularity 321:Unix-like pipelines 317:Software components 255:continuous delivery 166:monolithic codebase 139:architecture is an 3074:Application server 2377:10.1109/MS.2017.56 2144:10.1109/ms.2016.64 1981:. Addison Wesley. 1823:. 13 October 2011. 1768:. 10 December 2014 1484:CloudComputingExpo 1382:(28 August 2014). 1216:10.1109/MS.2017.24 1176:. Addison-Wesley. 1151:. O'Reilly Media. 1047:IONOS Digitalguide 673:Eclipse Foundation 643:distributed system 564:Two-phased commits 327:meets Unix = true 253:Lends itself to a 99:. See Knowledge's 3503: 3502: 3422: 3421: 3399:Browser extension 3374: 3373: 3094: 3093: 3030:Phusion Passenger 2722:978-1-491-95979-4 2014:: 1:1–35–1:1–35. 1930:978-3-319-74312-7 1845:978-0-13-443442-1 1766:javacodegeeks.com 1676:978-3-319-67424-7 1633:978-0-596-80548-7 1608:978-0-596-52699-3 1547:978-0-596-52699-3 1367:978-0-596-52955-0 938: 937: 888:(example: Istio) 761:Service discovery 710:sidecar proxies. 359:Alistair Cockburn 129: 128: 121: 91:used on Knowledge 89:encyclopedic tone 70: 69: 62: 3528: 3468:Web API security 3390:Remote scripting 3360:Web SQL Database 3176: 3175: 3105: 3104: 2801: 2800: 2781: 2774: 2767: 2758: 2757: 2695: 2694: 2685: 2679: 2678: 2669: 2663: 2662: 2642: 2636: 2635: 2624: 2618: 2617: 2608: 2602: 2601: 2592: 2586: 2585: 2583: 2582: 2568: 2562: 2561: 2549: 2543: 2542: 2522: 2516: 2515: 2510: 2509: 2494: 2488: 2487: 2469: 2463: 2452: 2448: 2442: 2441: 2430: 2424: 2423: 2395: 2389: 2388: 2360: 2354: 2353: 2335: 2324: 2323: 2322:on Apr 22, 2021. 2318:. Archived from 2305: 2299: 2298: 2294:978-1-61729454-9 2280: 2274: 2273: 2272:on Feb 27, 2021. 2271: 2260: 2251: 2245: 2244: 2242: 2240: 2225: 2219: 2218: 2211: 2202: 2201: 2193: 2187: 2186: 2178: 2172: 2171: 2129: 2120: 2114: 2113: 2093: 2087: 2086: 2084: 2083: 2077:microservices.io 2068: 2062: 2061: 2033: 2024: 2023: 1999: 1993: 1992: 1974: 1968: 1967: 1949: 1943: 1942: 1906: 1892: 1883: 1877: 1876: 1856: 1850: 1849: 1831: 1825: 1824: 1817: 1811: 1805: 1799: 1798: 1796: 1795: 1784: 1778: 1777: 1775: 1773: 1758: 1752: 1751: 1743: 1737: 1736: 1734: 1725: 1719: 1718: 1710: 1704: 1703: 1695: 1689: 1688: 1660: 1644: 1638: 1637: 1619: 1613: 1612: 1594: 1588: 1574: 1568: 1558: 1552: 1551: 1533: 1527: 1526: 1524: 1522: 1506: 1500: 1499: 1497: 1495: 1475: 1466: 1465: 1447: 1427: 1421: 1420: 1398: 1392: 1391: 1376: 1370: 1359: 1353: 1340: 1334: 1333: 1331: 1330: 1315: 1309: 1308: 1292: 1286: 1285: 1274: 1268: 1265: 1256: 1255: 1241: 1228: 1227: 1199: 1188: 1187: 1169: 1163: 1162: 1144: 1138: 1137: 1125: 1112: 1111: 1094: 1083: 1082: 1064: 1058: 1057: 1055: 1054: 1039: 934:Kubernetes Pods 734: 733: 724:Spring Framework 542:service process. 388:software systems 124: 117: 113: 110: 104: 103:for suggestions. 80: 79: 72: 65: 58: 54: 51: 45: 27: 19: 3536: 3535: 3531: 3530: 3529: 3527: 3526: 3525: 3506: 3505: 3504: 3499: 3473:Web application 3418: 3370: 3338: 3315: 3242: 3165: 3090: 3034: 2961: 2940:JavaScript JSGI 2920:ASP.NET Handler 2903:Jakarta Servlet 2869: 2790: 2785: 2703: 2701:Further reading 2698: 2687: 2686: 2682: 2671: 2670: 2666: 2643: 2639: 2626: 2625: 2621: 2610: 2609: 2605: 2594: 2593: 2589: 2580: 2578: 2570: 2569: 2565: 2550: 2546: 2539: 2523: 2519: 2507: 2505: 2495: 2491: 2484: 2470: 2466: 2462:interact with". 2450: 2449: 2445: 2431: 2427: 2396: 2392: 2361: 2357: 2350: 2336: 2327: 2306: 2302: 2295: 2281: 2277: 2269: 2258: 2252: 2248: 2238: 2236: 2226: 2222: 2213: 2212: 2205: 2194: 2190: 2179: 2175: 2127: 2121: 2117: 2094: 2090: 2081: 2079: 2069: 2065: 2034: 2027: 2000: 1996: 1989: 1975: 1971: 1964: 1950: 1946: 1931: 1890: 1884: 1880: 1857: 1853: 1846: 1832: 1828: 1819: 1818: 1814: 1806: 1802: 1793: 1791: 1785: 1781: 1771: 1769: 1760: 1759: 1755: 1748:"Microservices" 1744: 1740: 1732: 1726: 1722: 1711: 1707: 1696: 1692: 1677: 1645: 1641: 1634: 1620: 1616: 1609: 1595: 1591: 1575: 1571: 1559: 1555: 1548: 1534: 1530: 1520: 1518: 1507: 1503: 1493: 1491: 1476: 1469: 1428: 1424: 1417: 1399: 1395: 1377: 1373: 1360: 1356: 1341: 1337: 1328: 1326: 1316: 1312: 1293: 1289: 1276: 1275: 1271: 1266: 1259: 1242: 1231: 1200: 1191: 1184: 1170: 1166: 1159: 1145: 1141: 1130:"Microservices" 1128:Martin Fowler. 1126: 1115: 1108: 1096: 1095: 1086: 1079: 1065: 1061: 1052: 1050: 1041: 1040: 1036: 1032: 1027: 1007:Unix philosophy 943: 716: 687: 681: 661: 635: 610:fault tolerance 590: 525: 518:and deployment. 462: 411: 298: 243:Unix philosophy 189: 177:bounded context 145:loosely coupled 125: 114: 108: 105: 94: 85:This section's 81: 77: 66: 55: 49: 46: 43: 28: 17: 12: 11: 5: 3534: 3524: 3523: 3518: 3501: 3500: 3498: 3497: 3492: 3491: 3490: 3485: 3480: 3470: 3465: 3464: 3463: 3453: 3452: 3451: 3446: 3436: 3430: 3428: 3424: 3423: 3420: 3419: 3417: 3416: 3411: 3406: 3401: 3396: 3382: 3380: 3376: 3375: 3372: 3371: 3369: 3368: 3363: 3362:(formerly W3C) 3357: 3352: 3346: 3344: 3340: 3339: 3337: 3336: 3331: 3325: 3323: 3317: 3316: 3314: 3313: 3308: 3303: 3298: 3293: 3288: 3283: 3278: 3273: 3268: 3263: 3258: 3252: 3250: 3244: 3243: 3241: 3240: 3238:XMLHttpRequest 3235: 3230: 3225: 3220: 3215: 3210: 3205: 3200: 3195: 3190: 3184: 3182: 3173: 3167: 3166: 3164: 3163: 3158: 3153: 3148: 3147: 3146: 3136: 3131: 3130: 3129: 3124: 3113: 3111: 3102: 3096: 3095: 3092: 3091: 3089: 3088: 3083: 3082: 3081: 3071: 3066: 3061: 3052: 3042: 3040: 3036: 3035: 3033: 3032: 3027: 3022: 3017: 3012: 3007: 3002: 2997: 2992: 2987: 2982: 2977: 2971: 2969: 2967:Apache modules 2963: 2962: 2960: 2959: 2958: 2957: 2947: 2942: 2937: 2932: 2927: 2922: 2917: 2912: 2911: 2910: 2900: 2895: 2890: 2885: 2879: 2877: 2871: 2870: 2868: 2867: 2862: 2857: 2852: 2847: 2842: 2837: 2836: 2835: 2830: 2825: 2820: 2809: 2807: 2798: 2792: 2791: 2788:Web interfaces 2784: 2783: 2776: 2769: 2761: 2755: 2754: 2751:978-1484245002 2743: 2734: 2732:978-1491950357 2724: 2710: 2702: 2699: 2697: 2696: 2680: 2664: 2637: 2619: 2603: 2587: 2572:"MicroProfile" 2563: 2544: 2538:978-1717075901 2537: 2517: 2489: 2483:978-1838430207 2482: 2464: 2443: 2434:Fowler, Martin 2425: 2390: 2355: 2349:978-0136524038 2348: 2325: 2300: 2293: 2275: 2246: 2220: 2203: 2188: 2173: 2115: 2088: 2063: 2025: 1994: 1988:978-0134602417 1987: 1969: 1963:978-1491950357 1962: 1944: 1929: 1878: 1851: 1844: 1826: 1812: 1800: 1779: 1753: 1738: 1720: 1705: 1690: 1675: 1639: 1632: 1614: 1607: 1589: 1569: 1553: 1546: 1528: 1501: 1490:on 20 May 2018 1467: 1422: 1415: 1393: 1371: 1354: 1335: 1310: 1295:Lucas Krause. 1287: 1269: 1257: 1229: 1189: 1183:978-0134602417 1182: 1164: 1158:978-1491950357 1157: 1139: 1113: 1107:978-1492043454 1106: 1084: 1078:978-0321127426 1077: 1059: 1049:. 2 March 2020 1033: 1031: 1028: 1026: 1025: 1019: 1014: 1009: 1004: 999: 993: 987: 981: 976: 971: 966: 961: 955: 950: 944: 942: 939: 936: 935: 932: 929: 925: 924: 921: 918: 914: 913: 910: 907: 902: 901: 898: 895: 890: 889: 886:service meshes 884:Health check, 882: 879: 875: 874: 868: 865: 860: 859: 853: 850: 846: 845: 830: 815: 811: 810: 807: 804: 799: 798: 794: 791: 786: 785: 782: 779: 776:Load balancing 772: 771: 767: 764: 757: 756: 752: 749: 745: 744: 741: 738: 715: 712: 680: 677: 660: 657: 634: 633:Best practices 631: 606:load balancing 598:message format 589: 586: 585: 584: 580: 577: 574: 571: 568: 561: 557: 553: 543: 532: 524: 521: 520: 519: 496: 489:legacy systems 481: 480: 473: 472: 461: 458: 410: 407: 329:loose-coupling 297: 294: 273: 272: 258: 238: 237: 226: 215: 212: 188: 185: 127: 126: 84: 82: 75: 68: 67: 34:listed sources 31: 29: 22: 15: 9: 6: 4: 3: 2: 3533: 3522: 3519: 3517: 3514: 3513: 3511: 3496: 3495:Web framework 3493: 3489: 3486: 3484: 3481: 3479: 3476: 3475: 3474: 3471: 3469: 3466: 3462: 3459: 3458: 3457: 3456:Web standards 3454: 3450: 3447: 3445: 3442: 3441: 3440: 3437: 3435: 3434:Microservices 3432: 3431: 3429: 3425: 3415: 3412: 3410: 3407: 3405: 3402: 3400: 3397: 3395: 3391: 3387: 3384: 3383: 3381: 3377: 3367: 3364: 3361: 3358: 3356: 3353: 3351: 3348: 3347: 3345: 3341: 3335: 3332: 3330: 3327: 3326: 3324: 3322: 3318: 3312: 3309: 3307: 3304: 3302: 3299: 3297: 3294: 3292: 3289: 3287: 3284: 3282: 3279: 3277: 3274: 3272: 3269: 3267: 3264: 3262: 3259: 3257: 3254: 3253: 3251: 3249: 3245: 3239: 3236: 3234: 3231: 3229: 3226: 3224: 3223:Web messaging 3221: 3219: 3216: 3214: 3211: 3209: 3206: 3204: 3201: 3199: 3196: 3194: 3191: 3189: 3186: 3185: 3183: 3181: 3177: 3174: 3172: 3168: 3162: 3159: 3157: 3154: 3152: 3149: 3145: 3142: 3141: 3140: 3137: 3135: 3132: 3128: 3125: 3123: 3120: 3119: 3118: 3115: 3114: 3112: 3110: 3106: 3103: 3101: 3097: 3087: 3084: 3080: 3077: 3076: 3075: 3072: 3070: 3067: 3065: 3062: 3060: 3056: 3053: 3051: 3047: 3044: 3043: 3041: 3037: 3031: 3028: 3026: 3023: 3021: 3018: 3016: 3013: 3011: 3008: 3006: 3003: 3001: 2998: 2996: 2993: 2991: 2988: 2986: 2983: 2981: 2978: 2976: 2973: 2972: 2970: 2968: 2964: 2956: 2953: 2952: 2951: 2948: 2946: 2943: 2941: 2938: 2936: 2933: 2931: 2928: 2926: 2923: 2921: 2918: 2916: 2913: 2909: 2906: 2905: 2904: 2901: 2899: 2896: 2894: 2891: 2889: 2886: 2884: 2881: 2880: 2878: 2876: 2872: 2866: 2863: 2861: 2858: 2856: 2853: 2851: 2848: 2846: 2843: 2841: 2838: 2834: 2831: 2829: 2826: 2824: 2821: 2819: 2816: 2815: 2814: 2811: 2810: 2808: 2806: 2802: 2799: 2797: 2793: 2789: 2782: 2777: 2775: 2770: 2768: 2763: 2762: 2759: 2752: 2748: 2744: 2741: 2740: 2735: 2733: 2729: 2725: 2723: 2719: 2715: 2711: 2709: 2705: 2704: 2692: 2691: 2684: 2676: 2675: 2668: 2660: 2656: 2652: 2648: 2641: 2633: 2629: 2623: 2615: 2614: 2607: 2599: 2598: 2591: 2577: 2573: 2567: 2559: 2555: 2548: 2540: 2534: 2530: 2529: 2521: 2514: 2504: 2500: 2493: 2485: 2479: 2475: 2468: 2460: 2456: 2447: 2439: 2435: 2429: 2421: 2417: 2413: 2409: 2405: 2401: 2394: 2386: 2382: 2378: 2374: 2371:(2): 97–104. 2370: 2366: 2365:IEEE Software 2359: 2351: 2345: 2341: 2334: 2332: 2330: 2321: 2317: 2316: 2311: 2304: 2296: 2290: 2286: 2279: 2268: 2264: 2257: 2250: 2235: 2231: 2224: 2216: 2210: 2208: 2199: 2192: 2184: 2177: 2169: 2165: 2161: 2157: 2153: 2152:10044/1/40557 2149: 2145: 2141: 2137: 2133: 2132:IEEE Software 2126: 2119: 2111: 2107: 2103: 2099: 2092: 2078: 2074: 2067: 2059: 2055: 2051: 2047: 2043: 2039: 2032: 2030: 2021: 2017: 2013: 2009: 2005: 1998: 1990: 1984: 1980: 1973: 1965: 1959: 1955: 1948: 1940: 1936: 1932: 1926: 1922: 1918: 1914: 1910: 1905: 1900: 1896: 1889: 1882: 1874: 1870: 1866: 1862: 1855: 1847: 1841: 1837: 1830: 1822: 1816: 1810: 1804: 1790: 1783: 1767: 1763: 1757: 1749: 1742: 1731: 1724: 1716: 1709: 1701: 1698:James Lewis. 1694: 1686: 1682: 1678: 1672: 1668: 1664: 1659: 1654: 1650: 1643: 1635: 1629: 1625: 1618: 1610: 1604: 1600: 1593: 1587: 1585: 1581: 1573: 1567: 1565: 1557: 1549: 1543: 1539: 1532: 1516: 1512: 1505: 1489: 1485: 1481: 1474: 1472: 1463: 1459: 1455: 1451: 1446: 1441: 1437: 1433: 1432:IEEE Software 1426: 1418: 1416:9781617294549 1412: 1408: 1404: 1397: 1389: 1385: 1381: 1380:Martin Fowler 1375: 1368: 1364: 1358: 1351: 1350: 1345: 1339: 1325: 1321: 1314: 1306: 1302: 1298: 1291: 1283: 1279: 1273: 1264: 1262: 1253: 1249: 1248: 1240: 1238: 1236: 1234: 1225: 1221: 1217: 1213: 1209: 1205: 1204:IEEE Software 1198: 1196: 1194: 1185: 1179: 1175: 1168: 1160: 1154: 1150: 1143: 1135: 1131: 1124: 1122: 1120: 1118: 1109: 1103: 1099: 1093: 1091: 1089: 1080: 1074: 1070: 1063: 1048: 1044: 1038: 1034: 1023: 1020: 1018: 1015: 1013: 1010: 1008: 1005: 1003: 1002:Microfrontend 1000: 997: 994: 991: 988: 985: 982: 980: 977: 975: 972: 970: 967: 965: 962: 959: 956: 954: 951: 949: 946: 945: 933: 930: 927: 926: 922: 920:Spring Batch 919: 916: 915: 911: 908: 904: 903: 899: 896: 892: 891: 887: 883: 880: 877: 876: 873: 869: 866: 862: 861: 858: 854: 851: 848: 847: 843: 839: 835: 834:Elasticsearch 831: 828: 824: 820: 819:Elasticsearch 816: 813: 812: 808: 805: 801: 800: 795: 792: 788: 787: 783: 780: 777: 774: 773: 768: 765: 762: 759: 758: 753: 750: 747: 746: 742: 739: 736: 735: 732: 729: 725: 721: 711: 707: 705: 701: 697: 693: 686: 676: 674: 669: 667: 656: 654: 650: 646: 644: 640: 630: 628: 624: 620: 615: 611: 607: 603: 599: 595: 581: 578: 575: 572: 569: 565: 562: 558: 554: 551: 547: 544: 541: 537: 533: 530: 529: 528: 517: 513: 509: 505: 501: 497: 494: 490: 486: 483: 482: 478: 475: 474: 470: 467: 466: 465: 457: 453: 451: 446: 442: 438: 436: 432: 428: 424: 419: 417: 406: 404: 399: 397: 393: 389: 384: 381: 375: 373: 367: 364: 360: 355: 353: 349: 345: 340: 338: 334: 330: 326: 322: 318: 314: 310: 307: 303: 293: 290: 286: 282: 278: 270: 266: 263: 259: 256: 252: 251: 250: 248: 247:Martin Fowler 244: 235: 231: 227: 224: 220: 216: 213: 210: 206: 202: 198: 194: 193: 192: 184: 182: 178: 173: 171: 167: 162: 158: 154: 150: 146: 142: 138: 134: 123: 120: 112: 102: 98: 92: 90: 83: 74: 73: 64: 61: 53: 41: 40: 35: 30: 26: 21: 20: 3433: 3109:Browser APIs 3050:Web resource 2737: 2689: 2683: 2673: 2667: 2650: 2640: 2631: 2622: 2612: 2606: 2596: 2590: 2579:. Retrieved 2576:MicroProfile 2575: 2566: 2557: 2547: 2527: 2520: 2512: 2506:. Retrieved 2503:baeldung.com 2502: 2492: 2473: 2467: 2458: 2446: 2428: 2406:(1): 49–59. 2403: 2399: 2393: 2368: 2364: 2358: 2339: 2320:the original 2313: 2303: 2284: 2278: 2267:the original 2262: 2249: 2237:. Retrieved 2233: 2223: 2191: 2176: 2138:(3): 42–52. 2135: 2131: 2118: 2097: 2091: 2080:. Retrieved 2076: 2066: 2041: 2011: 2007: 1997: 1978: 1972: 1956:. O'Reilly. 1953: 1947: 1894: 1881: 1864: 1860: 1854: 1835: 1829: 1815: 1803: 1792:. Retrieved 1782: 1770:. Retrieved 1765: 1756: 1741: 1723: 1708: 1693: 1648: 1642: 1623: 1617: 1598: 1592: 1577: 1572: 1561: 1556: 1537: 1531: 1519:. Retrieved 1517:. p. 62 1514: 1504: 1492:. Retrieved 1488:the original 1483: 1438:(2): 70–79. 1435: 1431: 1425: 1402: 1396: 1374: 1357: 1347: 1338: 1327:. Retrieved 1324:Thoughtworks 1323: 1313: 1296: 1290: 1284:. Microsoft. 1281: 1272: 1246: 1210:(1): 91–98. 1207: 1203: 1173: 1167: 1148: 1142: 1097: 1068: 1062: 1051:. Retrieved 1046: 1037: 948:Conway's law 717: 708: 700:Docker Swarm 688: 685:Service mesh 679:Service mesh 670: 662: 659:Technologies 647: 636: 591: 588:Complexities 567:consistency. 526: 463: 454: 447: 443: 439: 420: 412: 400: 385: 376: 368: 361:wrote about 356: 341: 302:Web-Services 299: 274: 262:fine-grained 239: 190: 187:Introduction 176: 174: 161:dependencies 149:fine-grained 137:microservice 136: 130: 115: 106: 86: 56: 50:October 2018 47: 36: 3488:Progressive 3483:Single-page 3291:WebAssembly 3271:Geolocation 3228:Web storage 3134:C NPRuntime 3122:LiveConnect 3100:Client-side 3046:Web service 2975:mod_include 2930:Python ASGI 2925:Python WSGI 2875:Server APIs 2796:Server-side 2597:Netflix OSS 1772:28 December 1576:Juval Löwy 1560:Juval Löwy 832:EFK Stack ( 817:ELK Stack ( 743:Kubernetes 583:repository. 560:components. 508:refactoring 500:development 485:Integration 477:Scalability 431:programmers 37:may not be 3510:Categories 3256:DOM events 3233:Web worker 3218:WebSockets 3079:comparison 3015:mod_python 2995:mod_parrot 2828:Encryption 2632:Developers 2581:2021-04-11 2508:2024-06-08 2082:2017-03-19 1904:1702.07149 1867:(5): 4–5. 1794:2020-02-18 1658:1606.04036 1445:1910.07660 1407:Scale cube 1329:2023-01-20 1305:B00VJ3NP4A 1053:2022-03-29 1030:References 870:Hawkular, 728:Kubernetes 692:Kubernetes 683:See also: 550:deployment 540:monolithic 469:Modularity 423:architects 380:case study 265:interfaces 3414:Scripting 3276:IndexedDB 3127:XPConnect 3086:Scripting 3010:mod_proxy 2955:container 2945:Perl PSGI 2935:Ruby Rack 2908:container 2865:WebSocket 2805:Protocols 2600:, Git Hub 2239:4 January 2160:0740-7459 1521:20 August 1494:19 August 1462:204744007 1349:Microsoft 958:Data mesh 619:ecosystem 538:within a 398:systems. 285:container 223:databases 205:protocols 197:processes 109:June 2024 97:talk page 3439:Web page 3296:WebAuthn 3171:Web APIs 3064:Open API 3025:mod_ruby 3020:mod_wsgi 3000:mod_perl 2990:mod_mono 2985:mod_lisp 2915:CLI OWIN 2616:, Spring 2385:30256045 2168:18802650 2104:. IEEE. 2058:28134110 1685:14612986 1586:on 2010. 1584:original 1388:Archived 1134:Archived 941:See also 823:Logstash 653:outliers 600:design, 460:Benefits 425:have to 357:In 2005 207:such as 39:reliable 3449:Dynamic 3409:Web IDL 3355:GraphQL 3321:Khronos 3151:ActiveX 3139:C PPAPI 3117:C NPAPI 3069:Webhook 3005:mod_php 2950:Portlet 2898:COM ASP 2893:C ISAPI 2888:C ASAPI 2883:C NSAPI 2420:4560021 2315:YouTube 1939:1643730 1909:Bibcode 1254:. IEEE. 1224:5635705 974:GraphQL 857:Grafana 838:Fluentd 720:Netflix 666:GraphQL 649:Latency 627:Swagger 594:latency 546:Testing 296:History 201:network 3444:Static 3427:Topics 3404:Mashup 3379:Topics 3366:WebUSB 3343:Others 3306:WebRTC 3301:WebGPU 3193:Canvas 3180:WHATWG 3039:Topics 2980:mod_jk 2833:WebDAV 2749:  2730:  2720:  2693:, Helm 2535:  2480:  2459:ad hoc 2418:  2383:  2346:  2291:  2166:  2158:  2056:  1985:  1960:  1937:  1927:  1842:  1683:  1673:  1630:  1605:  1544:  1460:  1413:  1365:  1303:  1222:  1180:  1155:  1104:  1075:  992:(REST) 964:DevOps 872:Jaeger 842:Kibana 827:Kibana 602:backup 504:deploy 416:Amazon 392:DevOps 348:robust 289:DevOps 157:deploy 3394:DHTML 3350:Gears 3334:WebGL 3329:WebCL 3311:WebXR 3213:Video 3188:Audio 2613:Cloud 2416:S2CID 2381:S2CID 2270:(PDF) 2259:(PDF) 2234:Innoq 2164:S2CID 2128:(PDF) 2054:S2CID 1935:S2CID 1899:arXiv 1891:(PDF) 1733:(PDF) 1681:S2CID 1653:arXiv 1458:S2CID 1440:arXiv 1220:S2CID 1024:(WOA) 998:(SOA) 986:(IDL) 704:DC/OS 702:, or 696:Nomad 536:calls 323:(the 230:built 170:API's 3478:Rich 3461:REST 3392:vs. 3388:and 3386:Ajax 3266:File 3198:CORS 3161:XBAP 3144:NaCl 3057:vs. 3048:vs. 2860:WSRP 2850:FCGI 2845:SCGI 2813:HTTP 2747:ISBN 2728:ISBN 2718:ISBN 2533:ISBN 2478:ISBN 2344:ISBN 2289:ISBN 2241:2017 2156:ISSN 1983:ISBN 1958:ISBN 1925:ISBN 1840:ISBN 1774:2016 1671:ISBN 1628:ISBN 1603:ISBN 1542:ISBN 1523:2015 1496:2015 1411:ISBN 1363:ISBN 1301:ASIN 1178:ISBN 1153:ISBN 1102:ISBN 1073:ISBN 979:gRPC 671:The 608:and 548:and 403:CAGR 313:REST 306:SOAP 232:and 209:HTTP 135:, a 3286:SVG 3281:MSE 3261:EME 3248:W3C 3208:SSE 3203:DOM 3156:BHO 3059:ROA 3055:WOA 2855:AJP 2840:CGI 2655:doi 2408:doi 2373:doi 2148:hdl 2140:doi 2106:doi 2046:doi 2016:doi 1917:doi 1869:doi 1663:doi 1450:doi 1212:doi 655:. 448:If 437:). 337:Web 333:URI 325:Web 179:in 131:In 3512:: 2823:v3 2818:v2 2649:. 2630:, 2574:. 2556:. 2511:. 2501:. 2436:. 2414:. 2402:. 2379:. 2369:34 2367:. 2328:^ 2312:. 2261:. 2232:. 2206:^ 2162:. 2154:. 2146:. 2136:33 2134:. 2130:. 2100:. 2075:. 2052:. 2044:. 2040:. 2028:^ 2012:14 2010:. 2006:. 1933:. 1923:. 1915:. 1907:. 1893:. 1863:. 1764:. 1679:. 1669:. 1661:. 1513:. 1482:. 1470:^ 1456:. 1448:. 1436:38 1434:. 1386:. 1322:. 1299:. 1280:. 1260:^ 1250:. 1232:^ 1218:. 1208:34 1206:. 1192:^ 1132:. 1116:^ 1087:^ 1045:. 897:- 844:) 840:, 836:, 829:) 825:, 821:, 698:, 694:, 645:. 596:, 514:, 279:, 271:). 221:, 183:. 172:. 147:, 2780:e 2773:t 2766:v 2753:. 2661:. 2657:: 2584:. 2560:. 2541:. 2486:. 2440:. 2422:. 2410:: 2404:5 2387:. 2375:: 2352:. 2297:. 2243:. 2217:. 2200:. 2185:. 2170:. 2150:: 2142:: 2112:. 2108:: 2085:. 2060:. 2048:: 2022:. 2018:: 1991:. 1966:. 1941:. 1919:: 1911:: 1901:: 1875:. 1871:: 1865:3 1848:. 1797:. 1776:. 1750:. 1735:. 1717:. 1702:. 1687:. 1665:: 1655:: 1636:. 1611:. 1578:" 1562:" 1550:. 1525:. 1498:. 1464:. 1452:: 1442:: 1419:. 1369:. 1342:" 1332:. 1307:. 1226:. 1214:: 1186:. 1161:. 1110:. 1081:. 1056:. 236:. 211:. 122:) 116:( 111:) 107:( 93:. 63:) 57:( 52:) 48:( 42:.

Index


listed sources
reliable
Learn how and when to remove this message
encyclopedic tone
talk page
guide to writing better articles
Learn how and when to remove this message
software engineering
architectural pattern
loosely coupled
fine-grained
lightweight protocols
deploy
dependencies
monolithic codebase
API's
domain-driven design
processes
network
protocols
HTTP
programming languages
databases
built
released with automated processes
Unix philosophy
Martin Fowler
continuous delivery
fine-grained

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.