Muutke küpsiste eelistusi

Essentials of Microservices Architecture: Paradigms, Applications, and Techniques [Kõva köide]

  • Formaat: Hardback, 314 pages, kõrgus x laius: 234x156 mm, kaal: 600 g, 1 Tables, black and white
  • Ilmumisaeg: 06-Sep-2019
  • Kirjastus: CRC Press
  • ISBN-10: 0367249952
  • ISBN-13: 9780367249953
  • Kõva köide
  • Hind: 73,11 €*
  • * hind on lõplik, st. muud allahindlused enam ei rakendu
  • Tavahind: 97,49 €
  • Säästad 25%
  • Raamatu kohalejõudmiseks kirjastusest kulub orienteeruvalt 3-4 nädalat
  • Kogus:
  • Lisa ostukorvi
  • Tasuta tarne
  • Tellimisaeg 2-4 nädalat
  • Lisa soovinimekirja
  • Raamatukogudele
  • Formaat: Hardback, 314 pages, kõrgus x laius: 234x156 mm, kaal: 600 g, 1 Tables, black and white
  • Ilmumisaeg: 06-Sep-2019
  • Kirjastus: CRC Press
  • ISBN-10: 0367249952
  • ISBN-13: 9780367249953

Microservices architecture (MSA) is increasingly popular with software architects and engineers as it accelerates software solution design, development, and deployment in a risk-free manner. Placing a software system into a production environment is elegantly simplified and sped up with the use of MSA development platforms, runtime environments, acceleration engines, design patterns, integrated frameworks, and related tools. The MSA ecosystem is expanding with third-party products that automate as many tasks as possible. MSA is being positioned as the enterprise-grade and agile-application design method. This book covers in-depth the features and facilities that make up the MSA ecosystem.

Beginning with an overview of Service-Oriented Architecture (SOA) that covers the Common Object Request Broker Architecture (CORBA), Distributed Component Object Model (DCOM), and Remote Method Invocation (RMI), the book explains the basic essentials of MSA and the continuous delivery of applications to customers. The book gives software developers insight into:

  • Current and emerging communication models
  • Key architectural elements of MSA-based applications
  • Designing efficient APIs for microservices
  • MSA middleware platforms such as REST, SOAP, Apache Thrift, and gRPC
  • Microservice discovery and the API gateway
  • Service orchestration and choreography for composing individual services to achieve a useful business process
  • Database transactions in MSA-centric applications
  • Design, composition, security, and deployment patterns
  • MSA security
  • Modernizing legacy applications

The book concludes with a chapter on composing and building powerful microservices. With the exponential growth of IoT devices, microservices are being developed and deployed on resource-constrained but resource-intensive devices in order to provide people-centric applications. The book discusses the challenges of these applications. Finally, the book looks at the role of microservices in smart environments and upcoming trends including ubiquitous yet disappearing microservices.

Foreword xi
Preface xiii
Acknowledgments xvii
About the Authors xix
1 An Introduction to Service-Oriented Architecture
1(28)
1.1 Common Object Request Broker Architecture (CORBA)
3(3)
1.2 Distributed Component Object Model (DCOM)
6(1)
1.3 Remote Method Invocation
6(2)
1.4 Prerequisites for CORBA, DCOM, and RMI
8(1)
1.5 Typical Use Cases and Confined Focuses of CORBA, DCOM, and RMI
9(1)
1.6 Concept of Service-Oriented Architecture
10(3)
1.7 Web Services
13(15)
1.7.1 High-Level Architecture of Application to Application Interaction Using Web Services
15(1)
1.7.2 Unique Capabilities of Web Services
15(1)
1.7.3 Can Web Services Replace CORBA/DCOM/RMI?
16(1)
1.7.4 Why Do We Need Web Services?
16(1)
1.7.5 Typical Use Cases of Web Services
17(7)
1.7.6 Distinction between Web Services and CORBA/DCOM/RMI
24(2)
1.7.7 Why Have Web Services Become Obsolete? What Are the Issues with Web Services? Are We Still in Need of Yet Another Architecture to Meet Business Requirements?
26(2)
References
28(1)
2 Demystifying MSA
29(32)
2.1 Need for Microservices Architecture
30(1)
2.2 Issues with Traditional Enterprise Applications
31(2)
2.3 How Does MSA Handle the Issues with Monolithic Applications?
33(3)
2.4 Capabilities, Features, and Benefits of MSA
36(2)
2.5 Key Enablers for MSA
38(7)
2.6 Drawbacks of MSA
45(1)
2.7 Differences between SOA and MSA
46(4)
2.8 Where Do SOA and MSA Fit into Business Enterprises?
50(1)
2.9 Applicability of MSA in Contrast to SOA
51(6)
2.9.1 Typical Use Cases of MSA
52(1)
2.9.1.1 How Amazon Uses MSA and the Cloud
52(1)
2.9.1.2 How Netflix Uses Microservices
52(1)
2.9.1.3 How Capital One Uses Microservices
53(1)
2.9.1.4 Microservices Are the Perfect Choice for Developing Cloud-Native/Optimized Applications
53(1)
2.9.1.5 Microservices for E-Commerce Applications
54(1)
2.9.1.6 Microservices for Developing Web Applications
55(1)
2.9.1.7 Microservices for CPU/RAM Intensive Parts of Applications
55(1)
2.9.1.8 Applications Having Multiple Teams Working on the Same Product
55(1)
2.9.1.9 Microservices as Enablers for Cloud Adoption
56(1)
2.9.1.10 Identifying Microservices Use Cases from Classic SOA
56(1)
2.10 Trade-Offs in MSA
57(2)
2.10.1 Gain the Benefit of Strong Service Boundaries at the Cost of Distribution
57(1)
2.10.2 Gain the Benefit of Individual Deployment at the Cost of Eventual Consistency
57(1)
2.10.3 Avail Independent Deployment at the Cost of Operational Complexity
58(1)
2.10.4 Avail the Benefit of Technology Diversity at the Cost of Interface Issues
58(1)
References
59(2)
3 Communication Models for Microservices
61(50)
3.1 Key Architectural Elements of MSA
62(6)
3.2 Design Principles of Microservices
68(2)
3.3 Prerequisites for Service Interaction/Communication
70(2)
3.4 Communication Models for Microservices
72(2)
3.5 Synchronous Communication
74(6)
3.5.1 Representational State Transfer (REST) Architecture
75(2)
3.5.2 REST and HTTP Methods for Synchronous Communication
77(3)
3.5.3 Why Synchronous Communication Is Not Encouraged in Microservices?
80(1)
3.6 Asynchronous Communication
80(3)
3.7 Asynchronous Communication with Rabbit MQ Message Broker
83(11)
3.7.1 AMQ Model
84(5)
3.7.2 Advanced Message Queuing Protocol
89(1)
3.7.2.1 AMQP Command Architecture
89(1)
3.7.2.2 AMQP Transport Architecture
90(2)
3.7.2.3 AMQP Client Architecture
92(1)
3.7.3 Where to Use RabbitMQ
92(2)
3.7.4 AMQP and JMS
94(1)
3.8 Asynchronous Communication with an Apache Kafka Message Broker
94(14)
3.8.1 Need for Apache Kafka (High Throughput Message Broker)
94(2)
3.8.2 Comparing the Origin of Kafka with RabbitMQ
96(2)
3.8.2.1 Primary Objectives of Kafka---High Scalability, Availability, and Throughput (The Concept of Partitions in Kafka)
98(1)
3.8.3 Kafka Architecture
99(3)
3.8.4 How Consumers Read Data from Kafka with Message Ordering?
102(2)
3.8.5 Kafka and Message Producers
104(1)
3.8.6 Important Features of the Kafka Broker
105(1)
3.8.7 Typical Use Cases of the Kafka Broker
106(2)
References
108(3)
4 Designing APIs and Developing Middleware Platforms for Microservices
111(38)
4.1 API Design Mechanisms and Middleware Platforms
112(1)
4.2 WSDL and SOAP (Traditional API and Middleware Platform for Web Services)
113(7)
4.2.1 Web Service Description Language
114(2)
4.2.2 Simple Object Access Protocol
116(4)
4.3 API Design and Middleware Platforms for Microservices
120(18)
4.3.1 REST API
120(1)
4.3.1.1 REST API Design Using a URL Template
120(2)
4.3.1.2 The Need for REST API Standardization/Limitations with URL Template Design
122(1)
4.3.2 Standard REST API Specifications
123(1)
4.3.2.1 Open API Specification (Swagger)
123(5)
4.3.2.2 REST API Modeling Language
128(2)
4.3.2.3 API BluePrint
130(2)
4.3.3 Apache Thrift API Design and Middleware Platform
132(1)
4.3.3.1 Apache Thrift IDL and Code Generation
132(1)
4.3.3.2 Thrift Layers of Communication
133(1)
4.3.3.3 How to Use Thrift API and Tools
134(2)
4.3.3.4 When to Use Thrift
136(1)
4.3.4 Google Protocol Buffers (Protobuf, GPB) and Google RPC
136(1)
4.3.4.1 Google Protobuf
136(1)
4.3.4.2 Google RPC with Google Protobuf
137(1)
4.4 Data Serialization Formats for Inter-Service Communication
138(10)
4.4.1 XML
139(1)
4.4.2 JavaScript Object Notation (JSON)
140(2)
4.4.3 YAML Ain't Markup Language
142(2)
4.4.4 Apache Avro
144(4)
References
148(1)
5 Service Discovery and API Gateways
149(26)
5.1 The Need for Dynamic Configuration for Microservices Discovery
150(1)
5.2 Service Registry
150(1)
5.3 Service Registration
151(2)
5.4 Service Discovery
153(2)
5.4.1 Client-Side Discovery
153(1)
5.4.2 Server-Side Service Discovery
154(1)
5.5 Service Discovery Tools
155(5)
5.5.1 General Purpose Discovery Tools
155(3)
5.5.2 Single-Purpose Service Registry Tools
158(2)
5.6 API Gateway
160(13)
5.6.1 The Need for an API Gateway (Single-Entry Point to MSA Applications)
160(1)
5.6.2 Key Functions of the API Gateway
161(1)
5.6.2.1 Creation of Client-Specific APIs at API Gateway
162(1)
5.6.2.2 Service Composition at the API Gateway
163(1)
5.6.2.3 Security Implementation
164(2)
5.6.2.4 Service Discovery and Routing with an API Gateway
166(1)
5.6.2.5 Data Aggregation with an API Gateway
167(1)
5.6.2.6 Data Format/Protocol Conversion at the API Gateway
167(1)
5.6.2.7 Edge Functions at the API Gateway
168(1)
5.6.2.8 API Gateway---Monitoring and Other Design Considerations
169(2)
5.6.2.9 Open Source Tools for an API Gateway
171(2)
References
173(2)
6 Service Orchestration and Choreography
175(24)
6.1 Service Composition
176(1)
6.2 Service Orchestration
177(8)
6.2.1 Orchestration Languages
177(4)
6.2.2 Service Orchestration in Detail (with BPEL)
181(2)
6.2.3 Service Orchestration in Microservices
183(2)
6.3 Service Choreography
185(4)
6.3.1 Choreography Languages
186(3)
6.4 The Need for Orchestration and Choreography Platforms for Microservices
189(8)
6.4.1 Camunda
189(2)
6.4.2 Zeebe
191(1)
6.4.3 Event-Based Choreography Using Apache Kafka and Zeebe Workflow Engine Zeebe
192(2)
6.4.4 RockScript
194(1)
6.4.5 Conductor
194(1)
6.4.6 JOLIE
195(1)
6.4.7 Jexia
196(1)
References
197(2)
7 Database Transactions in MSA
199(22)
7.1 Database Transactions and ACID Properties
200(2)
7.2 Distributed Transactions and Two-Phase-Commit Protocol (in Conventional Systems)
202(2)
7.3 Nature of Databases and Database Access in MSA
204(15)
7.3.1 Why Avoid ACID Transactions with 2PC in MSA?
206(1)
7.3.2 BASE Transactions in MSA
207(1)
7.3.2.1 How to Achieve the Basically Available Property in MSA
208(8)
7.3.2.2 How the Consistency is Brought in MSA (Saga Pattern)
216(3)
References
219(2)
8 Patterns for Microservices-Centric Applications
221(30)
8.1 A Macro-Level View of Microservices Architecture
222(1)
8.2 The Need for Patterns for Microservices Architecture
223(27)
8.2.1 Decomposition Patterns
225(2)
8.2.2 Composition Patterns
227(4)
8.2.3 Database Patterns
231(5)
8.2.4 Observability Patterns
236(3)
8.2.5 Cross-Cutting Concern Patterns
239(4)
8.2.6 Additional Database Architecture Patterns
243(3)
8.2.7 Deployment Patterns
246(4)
References
250(1)
9 MSA Security and Migration
251(18)
9.1 Basic Security Requirements
252(2)
9.2 Pragmatic Architecture for Secure MSA
254(2)
9.3 Security Mechanisms for MSA Applications
256(3)
9.4 MSA Migration
259(8)
9.4.1 The Advantages of MSA
260(1)
9.4.2 Motivating Drivers for MSA Migration
261(3)
9.4.3 Issues in MSA Migration
264(1)
9.4.4 Migration Process Using Strangler Pattern
265(1)
9.4.5 Disadvantages of MSA Migration
265(1)
9.4.6 Candidate Applications for MSA Migration
266(1)
References
267(2)
10 Platform Solutions for Microservices Architecture
269(16)
Introduction
270(1)
10.1 Challenges in a MSA Approach/The Need for Microservices Platforms
270(1)
10.2 Foundational Capabilities of Microservices Platforms
271(3)
10.3 Classification of Microservices Platforms
274(9)
10.3.1 Microservices Deployment Platforms
275(1)
10.3.1.1 Overview of Kubernetes
276(2)
10.3.2 Microservices Security Platform and ServiceResiliency Platform
278(1)
10.3.3 API Platforms
279(1)
10.3.4 Microservices Development Platforms
280(3)
References
283(2)
Index 285
Chellammal Surianarayanan is an Assistant Professor of Computer Science at the Bharathidasan University, Constituent Arts and Science College, Tiruchirappalli, Tamil Nadu, India. She has earned a Master of Science in Physics, a Master of Technology in Information Technology, and a doctoral degree in Computer Science. She has researched and developed software for the discovery and selection of semantic web services, as well embedded systems and applications. Dr. Surianarayanan has published research papers in such journals as Service-Oriented Computing and Applications, IEEE Transactions on Services Computing, and International Journal of Computational Science. Before working in academia, she served as a scientific officer at the Indira Gandhi Centre for Atomic Research, Tamil Nadu, India.

Gopinath Ganapathy is the registrar of Bharathidasan University, Tiruchirappalli, Tamil Nadu, India. He has 30 years of experience in academia, industry, research, and consultancy services in the U.S., U.K., and India. During that time, he served as a consultant to Fortune 500 companies that include IBM, Lucent-Bell Labs, Merrill Lynch, and Toyota. His areas of research include the Semantic Web, artificial intelligence, auto programming, ontology, and text mining. He has published and presented nearly 100 research papers, serves on academic and technology councils at various Indian universities in India, and is a journal referee and editorial.

Pethuru Raj is the chief architect and vice president of the Site Reliability Engineering Center of Excellence, Reliance Jio Infocomm Ltd., Bangalore, India. His previous positions were at the IBM Cloud Center of Excellence, Wipro Consulting Services, and Robert Bosch Corporate Research. He has more than 17 years of IT industry experience and eight years of research experience. He earned a Ph.D. degree at Anna University, Chennai, India, and conducted postdoctoral research at the Department of Computer Science and Automation, Indian Institute of Science, Bangalore. He has authored 10 books and 30 book chapters on various topics in computing technology.