Building Microservices: [designing fine-grained systems]
Gespeichert in:
1. Verfasser: | |
---|---|
Format: | Buch |
Sprache: | English |
Veröffentlicht: |
Beijing [u.a.]
O'Reilly
2015
|
Ausgabe: | 1. ed. |
Schlagworte: | |
Online-Zugang: | Inhaltstext Inhaltsverzeichnis |
Beschreibung: | XVIII, 259 S. graf. Darst. |
ISBN: | 9781491950357 1491950358 |
Internformat
MARC
LEADER | 00000nam a22000008c 4500 | ||
---|---|---|---|
001 | BV042380905 | ||
003 | DE-604 | ||
005 | 20171026 | ||
007 | t | ||
008 | 150226s2015 xxu|||| |||| 00||| eng d | ||
015 | |a 15,N03 |2 dnb | ||
016 | 7 | |a 1064277535 |2 DE-101 | |
020 | |a 9781491950357 |c Pb. : EUR 41.00 (DE) (freier Pr.), EUR 42.20 (AT) (freier Pr.) |9 978-1-4919-5035-7 | ||
020 | |a 1491950358 |9 1-4919-5035-8 | ||
024 | 3 | |a 9781491950357 | |
035 | |a (OCoLC)907452524 | ||
035 | |a (DE-599)DNB1064277535 | ||
040 | |a DE-604 |b ger |e rakddb | ||
041 | 0 | |a eng | |
044 | |a xxu |c XD-US | ||
049 | |a DE-473 |a DE-11 |a DE-83 |a DE-2070s |a DE-523 |a DE-Aug4 |a DE-M382 |a DE-1043 |a DE-739 |a DE-859 |a DE-B768 | ||
082 | 0 | |a 004 | |
084 | |a QH 500 |0 (DE-625)141607: |2 rvk | ||
084 | |a ST 200 |0 (DE-625)143611: |2 rvk | ||
084 | |a ST 230 |0 (DE-625)143617: |2 rvk | ||
084 | |a 004 |2 sdnb | ||
100 | 1 | |a Newman, Sam |e Verfasser |0 (DE-588)1068835788 |4 aut | |
245 | 1 | 0 | |a Building Microservices |b [designing fine-grained systems] |c Sam Newman |
250 | |a 1. ed. | ||
264 | 1 | |a Beijing [u.a.] |b O'Reilly |c 2015 | |
300 | |a XVIII, 259 S. |b graf. Darst. | ||
336 | |b txt |2 rdacontent | ||
337 | |b n |2 rdamedia | ||
338 | |b nc |2 rdacarrier | ||
650 | 0 | 7 | |a Mikroservice |0 (DE-588)1073948900 |2 gnd |9 rswk-swf |
650 | 0 | 7 | |a Verteiltes System |0 (DE-588)4238872-7 |2 gnd |9 rswk-swf |
689 | 0 | 0 | |a Verteiltes System |0 (DE-588)4238872-7 |D s |
689 | 0 | |5 DE-604 | |
689 | 1 | 0 | |a Mikroservice |0 (DE-588)1073948900 |D s |
689 | 1 | |8 1\p |5 DE-604 | |
856 | 4 | 2 | |m X:MVB |q text/html |u http://deposit.dnb.de/cgi-bin/dokserv?id=5119297&prov=M&dok_var=1&dok_ext=htm |3 Inhaltstext |
856 | 4 | 2 | |m Digitalisierung UB Bamberg - ADAM Catalogue Enrichment |q application/pdf |u http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=027816996&sequence=000002&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |3 Inhaltsverzeichnis |
883 | 1 | |8 1\p |a cgwrk |d 20201028 |q DE-101 |u https://d-nb.info/provenance/plan#cgwrk | |
943 | 1 | |a oai:aleph.bib-bvb.de:BVB01-027816996 |
Datensatz im Suchindex
_version_ | 1806330607528050688 |
---|---|
adam_text |
Table
of
Contents
Preface
. xiii
1.
Microservices
. 1
What Are
Microservices?
2
Small, and Focused on Doing One Thing Well
2
Autonomous
3
Key Benefits
4
Technology Heterogeneity
4
Resilience
5
Scaling
5
Ease of Deployment
6
Organizational Alignment
7
Composability
7
Optimizing for Replaceability
7
What About Service-Oriented Architecture?
8
Other Decompositional Techniques
9
Shared Libraries
9
Modules
10
No Silver Bullet
11
Summary
11
2.
The Evolutionary Architect
. 13
Inaccurate Comparisons
13
An Evolutionary Vision for the Architect
15
Zoning
16
A Principled Approach
17
Strategic Goals
18
Principles
lö
19
Practices
Combining Principles and Practices l y
A Real-World Example l9
The Required Standard
Monitoring
Interfaces
Architectural Safety 21
Governance Through Code 22
Exemplars
Tailored Service Template 22
Technical Debt 24
Exception Handling 24
Governance and Leading from the Center
25
Building a Team
2ť>
Summary 2?
3.
How to Model Services
. 29
Introducing MusicCorp
29
What Makes a Good Service?
30
Loose Coupling
30
High Cohesion
30
The Bounded Context
31
Shared and Hidden Models
31
Modules and Services
33
Premature Decomposition
33
Business Capabilities
34
Turtles All the Way Down
34
Communication in Terms of Business Concepts
36
The Technical Boundary
36
Summary
37
4.
Integration
. 39
Looking for the Ideal Integration Technology
39
Avoid Breaking Changes
39
Keep Your APIs Technology-Agnostic
39
Make Your Service Simple for Consumers
40
Hide Internal Implementation Detail
40
Interfacing with Customers
40
The Shared Database
4
1
Synchronous Versus Asynchronous
42
Orchestration
Versus Choreography
43
Remote Procedure Calls
Technology
Coupling
47
Local Calls Are Not Like Remote Calls
47
Brittleness
47
Is RPC Terrible?
49
REST
49
REST and HTTP
50
Hypermedia As the Engine of Application State
51
JSON, XML, or Something Else?
53
Beware Too Much Convenience
54
Downsides to REST Over HTTP
54
Implementing Asynchronous Event-Based Collaboration
55
Technology Choices
55
Complexities of Asynchronous Architectures
57
Services as State Machines
58
Reactive Extensions
58
DRY and the Perils of Code Reuse in
a Microservice
World
59
Client Libraries
59
Access by Reference
60
Version ing
62
Defer It for as Long as Possible
62
Catch Breaking Changes Early
63
Use Semantic
Versioning
64
Coexist Different
Endpoints
64
Use Multiple Concurrent Service Versions
66
User Interfaces
67
Toward Digital
67
Constraints
68
API Composition
68
UI Fragment Composition
69
Backends for Frontends
71
A Hybrid Approach
73
Integrating with Third-Party Software
73
Lack of Control
74
Customization
74
Integration Spaghetti
74
On Your Own Terms
75
The
Strangler
Pattern
77
Summary
78
5
Solittina the Monolith
.
. 79
It's All About Seams
79
Breaking Apart MusicCorp
80
Table of
Contons
I v
The Reasons to Split the Monolith 8
j
Pace of Change
Team Structure
Security j"
Technology
Tangled Dependencies 82
The Database 82
Getting to Grips with the Problem 82
Example: Breaking Foreign Key Relationships
84
Example: Shared Static Data 85
Example: Shared Data 86
Example: Shared Tables 87
Refactoring
Databases 88
Staging the Break 89
Transactional Boundaries 89
Try Again Later
91
Abort the Entire Operation
91
Distributed Transactions
92
So What to Do?
93
Reporting
93
The Reporting Database
93
Data Retrieval via Service Calls
95
Data Pumps
96
Alternative Destinations
98
Event Data Pump
98
Backup Data Pump
99
Toward Real Time
100
Cost of Change
100
Understanding Root Causes
101
Summary
102
6.
Deployment
. 103
A Brief Introduction to Continuous Integration
103
Are You Really Doing It?
104
Mapping Continuous Integration to
Microservices
105
Build Pipelines and Continuous Delivery
107
And the Inevitable Exceptions
108
Platform-Specific Artifacts
109
Operating System Artifacts
1
1 ο
Custom Images
щ
Images as Artifacts
ţ
j
3
Immutable Servers
Environments 1J4
Service
Configuration
1
1
5
Service-to-Host
Mapping
116
Multiple Services Per Host 116
Application Containers 1
1
8
Single Service Per Host 119
Platform
as a
Service 120
Automation 121
Two Case Studies on the Power of Automation
122
From Physical to Virtual
122
Traditional Virtualization
123
Vagrant
124
Linux Containers
124
Docker
126
A Deployment Interface
127
Environment Definition
128
Summary
130
7.
Testing
. 131
Types of Tests
131
Test Scope
132
Unit Tests
134
Service Tests
134
End-to-End Tests
135
Trade-Offs
135
How Many?
136
Implementing Service Tests
136
Mocking or Stubbing
137
A Smarter Stub Service
138
Those Tricky End-to-End Tests
138
Downsides to End-to-End Testing
140
Flaky and Brittle Tests
140
Who Writes These Tests?
141
How Long?
141
The Great Pile-up
142
The
Metaversion 143
Test Journeys, Not Stories
143
Consumer-Driven Tests to the Rescue
144
Pact
145
Its About Conversations
147
So Should You Use End-to-End Tests?
147
Testing After Production
148
ТаЫе
of Contents |
vi
Separating Deployment from Release 148
Canary Releasing
*
Mean Time to Repair Over Mean Time Between Failures?
150
Cross-Functional Testing 151
Performance Tests 152
Summary iDD
8.
Monitoring
.
Ί55
Single Service, Single Server 156
Single Service, Multiple Servers 156
Multiple Services, Multiple Servers
1
57
Logs, Logs, and Yet More Logs.
. ! 58
Metric Tracking Across Multiple Services
!59
Service Metrics
160
Synthetic Monitoring
161
Implementing Semantic Monitoring
162
Correlation IDs
162
The Cascade
164
Standardization
165
Consider the Audience
165
The Future
166
Summary
167
9.
Security
.169
Authentication and Authorization
169
Common Single Sign-On Implementations
170
Single Sign-On Gateway
171
Fine-Grained Authorization
172
Service-to-Service Authentication and Authorization
173
Allow Everything Inside the Perimeter
173
HTTP(S) Basic Authentication
174
Use SAML or OpenID Connect
174
Client Certificates
175
HMAC Over HTTP
176
API Keys
177
The Deputy Problem
178
Securing
Dato
at Rest
1 80
Go with the WeU Known
180
Its All About the Keys 181
Pick Your Targets 181
Decrypt on Demand 181
Encrypt Backups
ш
m
1
u*
Defense in Depth
182
Firewalls
182
Logging
182
Intrusion Detection (and Prevention) System
182
Network Segregation
183
Operating System
183
A Worked Example
184
Be Frugal
186
The Human Element
187
The Golden Rule
187
Baking Security In
187
External Verification
188
Summary
188
10.
Conway's Law and System Design
.191
Evidence
191
Loose and Tightly Coupled Organizations
192
Windows Vista
192
Netflix and Amazon
192
What Can We Do with This?
193
Adapting to Communication Pathways
193
Service Ownership
194
Drivers for Shared Services
195
Too Hard to Split
195
Feature Teams
195
Delivery Bottlenecks 1
96
Internal Open Source
196
Role of the Custodians
197
Maturity
197
Tooling
198
Bounded Contexts and Team Structures
198
The Orphaned Service?
198
Case Study: RealEstate.com.au
199
Conway's Law in Reverse
201
People
202
Summary
203
11.
Mkroservkes at Scale
.205
Failure Is Everywhere
205
How Much Is Too Much?
206
Degrading Functionality
207
Architectural Safety Measures
208
Т*Ые
of Contents
210
The Antifragile
Organization
Timeouts
Circuit Breakers
Bulkheads
214
ι ι
.· 215
Isolation
Idempotency
Scaling
Go Bigger
217
Splitting Workloads 11
'
Spreading Your Risk 217
Load Balancing 219
Worker-Based Systems
220
Starting Again
221
Scaling Databases
222
Availability of Service Versus Durability of Data
222
Scaling for Reads
222
Scaling for Writes
223
Shared Database Infrastructure
224
CQRS
224
Caching
225
Client-Side, Proxy, and Server-Side Caching
226
Caching in HTTP
226
Caching for Writes
228
Caching for Resilience
228
Hiding the Origin
228
Keep It Simple
229
Cache Poisoning: A Cautionary Tale
230
Autoscaling
230
CAP Theorem
232
Sacrificing Consistency
233
Sacrificing Availability
233
Sacrificing Partition Tolerance?
234
AP or CP?
235
Its Not All or Nothing
235
And the Real World
236
Service Discovery
236
DNS
237
Dynamic Service Registries
238
Zookeeper
238
Consul
239
Eureka
240
Rotting Your Own
241
■
I
Don't Forget the Humans!
241
Documenting Services
241
Swagger
242
HAL and the HAL Browser
242
The Self- Desc rib ing System
243
Summary
243
12.
Bringing It All Together
. 245
Principles of
Microservices
245
Model Around Business Concepts
246
Adopt a Culture of Automation
246
Hide Internal Implementation Details
247
Decentralize All the Things
247
Independently
Déployable
248
Isolate Failure
248
Highly Observable
249
When Shouldn't You Use
Microservices?
249
Parting Words
250
Index
. 251
ТаЫе
of Contents |
any_adam_object | 1 |
author | Newman, Sam |
author_GND | (DE-588)1068835788 |
author_facet | Newman, Sam |
author_role | aut |
author_sort | Newman, Sam |
author_variant | s n sn |
building | Verbundindex |
bvnumber | BV042380905 |
classification_rvk | QH 500 ST 200 ST 230 |
ctrlnum | (OCoLC)907452524 (DE-599)DNB1064277535 |
dewey-full | 004 |
dewey-hundreds | 000 - Computer science, information, general works |
dewey-ones | 004 - Computer science |
dewey-raw | 004 |
dewey-search | 004 |
dewey-sort | 14 |
dewey-tens | 000 - Computer science, information, general works |
discipline | Informatik Wirtschaftswissenschaften |
edition | 1. ed. |
format | Book |
fullrecord | <?xml version="1.0" encoding="UTF-8"?><collection xmlns="http://www.loc.gov/MARC21/slim"><record><leader>00000nam a22000008c 4500</leader><controlfield tag="001">BV042380905</controlfield><controlfield tag="003">DE-604</controlfield><controlfield tag="005">20171026</controlfield><controlfield tag="007">t</controlfield><controlfield tag="008">150226s2015 xxu|||| |||| 00||| eng d</controlfield><datafield tag="015" ind1=" " ind2=" "><subfield code="a">15,N03</subfield><subfield code="2">dnb</subfield></datafield><datafield tag="016" ind1="7" ind2=" "><subfield code="a">1064277535</subfield><subfield code="2">DE-101</subfield></datafield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">9781491950357</subfield><subfield code="c">Pb. : EUR 41.00 (DE) (freier Pr.), EUR 42.20 (AT) (freier Pr.)</subfield><subfield code="9">978-1-4919-5035-7</subfield></datafield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">1491950358</subfield><subfield code="9">1-4919-5035-8</subfield></datafield><datafield tag="024" ind1="3" ind2=" "><subfield code="a">9781491950357</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(OCoLC)907452524</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(DE-599)DNB1064277535</subfield></datafield><datafield tag="040" ind1=" " ind2=" "><subfield code="a">DE-604</subfield><subfield code="b">ger</subfield><subfield code="e">rakddb</subfield></datafield><datafield tag="041" ind1="0" ind2=" "><subfield code="a">eng</subfield></datafield><datafield tag="044" ind1=" " ind2=" "><subfield code="a">xxu</subfield><subfield code="c">XD-US</subfield></datafield><datafield tag="049" ind1=" " ind2=" "><subfield code="a">DE-473</subfield><subfield code="a">DE-11</subfield><subfield code="a">DE-83</subfield><subfield code="a">DE-2070s</subfield><subfield code="a">DE-523</subfield><subfield code="a">DE-Aug4</subfield><subfield code="a">DE-M382</subfield><subfield code="a">DE-1043</subfield><subfield code="a">DE-739</subfield><subfield code="a">DE-859</subfield><subfield code="a">DE-B768</subfield></datafield><datafield tag="082" ind1="0" ind2=" "><subfield code="a">004</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">QH 500</subfield><subfield code="0">(DE-625)141607:</subfield><subfield code="2">rvk</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">ST 200</subfield><subfield code="0">(DE-625)143611:</subfield><subfield code="2">rvk</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">ST 230</subfield><subfield code="0">(DE-625)143617:</subfield><subfield code="2">rvk</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">004</subfield><subfield code="2">sdnb</subfield></datafield><datafield tag="100" ind1="1" ind2=" "><subfield code="a">Newman, Sam</subfield><subfield code="e">Verfasser</subfield><subfield code="0">(DE-588)1068835788</subfield><subfield code="4">aut</subfield></datafield><datafield tag="245" ind1="1" ind2="0"><subfield code="a">Building Microservices</subfield><subfield code="b">[designing fine-grained systems]</subfield><subfield code="c">Sam Newman</subfield></datafield><datafield tag="250" ind1=" " ind2=" "><subfield code="a">1. ed.</subfield></datafield><datafield tag="264" ind1=" " ind2="1"><subfield code="a">Beijing [u.a.]</subfield><subfield code="b">O'Reilly</subfield><subfield code="c">2015</subfield></datafield><datafield tag="300" ind1=" " ind2=" "><subfield code="a">XVIII, 259 S.</subfield><subfield code="b">graf. Darst.</subfield></datafield><datafield tag="336" ind1=" " ind2=" "><subfield code="b">txt</subfield><subfield code="2">rdacontent</subfield></datafield><datafield tag="337" ind1=" " ind2=" "><subfield code="b">n</subfield><subfield code="2">rdamedia</subfield></datafield><datafield tag="338" ind1=" " ind2=" "><subfield code="b">nc</subfield><subfield code="2">rdacarrier</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Mikroservice</subfield><subfield code="0">(DE-588)1073948900</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Verteiltes System</subfield><subfield code="0">(DE-588)4238872-7</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="689" ind1="0" ind2="0"><subfield code="a">Verteiltes System</subfield><subfield code="0">(DE-588)4238872-7</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="0" ind2=" "><subfield code="5">DE-604</subfield></datafield><datafield tag="689" ind1="1" ind2="0"><subfield code="a">Mikroservice</subfield><subfield code="0">(DE-588)1073948900</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="1" ind2=" "><subfield code="8">1\p</subfield><subfield code="5">DE-604</subfield></datafield><datafield tag="856" ind1="4" ind2="2"><subfield code="m">X:MVB</subfield><subfield code="q">text/html</subfield><subfield code="u">http://deposit.dnb.de/cgi-bin/dokserv?id=5119297&prov=M&dok_var=1&dok_ext=htm</subfield><subfield code="3">Inhaltstext</subfield></datafield><datafield tag="856" ind1="4" ind2="2"><subfield code="m">Digitalisierung UB Bamberg - ADAM Catalogue Enrichment</subfield><subfield code="q">application/pdf</subfield><subfield code="u">http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=027816996&sequence=000002&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA</subfield><subfield code="3">Inhaltsverzeichnis</subfield></datafield><datafield tag="883" ind1="1" ind2=" "><subfield code="8">1\p</subfield><subfield code="a">cgwrk</subfield><subfield code="d">20201028</subfield><subfield code="q">DE-101</subfield><subfield code="u">https://d-nb.info/provenance/plan#cgwrk</subfield></datafield><datafield tag="943" ind1="1" ind2=" "><subfield code="a">oai:aleph.bib-bvb.de:BVB01-027816996</subfield></datafield></record></collection> |
id | DE-604.BV042380905 |
illustrated | Not Illustrated |
indexdate | 2024-08-03T02:11:47Z |
institution | BVB |
isbn | 9781491950357 1491950358 |
language | English |
oai_aleph_id | oai:aleph.bib-bvb.de:BVB01-027816996 |
oclc_num | 907452524 |
open_access_boolean | |
owner | DE-473 DE-BY-UBG DE-11 DE-83 DE-2070s DE-523 DE-Aug4 DE-M382 DE-1043 DE-739 DE-859 DE-B768 |
owner_facet | DE-473 DE-BY-UBG DE-11 DE-83 DE-2070s DE-523 DE-Aug4 DE-M382 DE-1043 DE-739 DE-859 DE-B768 |
physical | XVIII, 259 S. graf. Darst. |
publishDate | 2015 |
publishDateSearch | 2015 |
publishDateSort | 2015 |
publisher | O'Reilly |
record_format | marc |
spelling | Newman, Sam Verfasser (DE-588)1068835788 aut Building Microservices [designing fine-grained systems] Sam Newman 1. ed. Beijing [u.a.] O'Reilly 2015 XVIII, 259 S. graf. Darst. txt rdacontent n rdamedia nc rdacarrier Mikroservice (DE-588)1073948900 gnd rswk-swf Verteiltes System (DE-588)4238872-7 gnd rswk-swf Verteiltes System (DE-588)4238872-7 s DE-604 Mikroservice (DE-588)1073948900 s 1\p DE-604 X:MVB text/html http://deposit.dnb.de/cgi-bin/dokserv?id=5119297&prov=M&dok_var=1&dok_ext=htm Inhaltstext Digitalisierung UB Bamberg - ADAM Catalogue Enrichment application/pdf http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=027816996&sequence=000002&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA Inhaltsverzeichnis 1\p cgwrk 20201028 DE-101 https://d-nb.info/provenance/plan#cgwrk |
spellingShingle | Newman, Sam Building Microservices [designing fine-grained systems] Mikroservice (DE-588)1073948900 gnd Verteiltes System (DE-588)4238872-7 gnd |
subject_GND | (DE-588)1073948900 (DE-588)4238872-7 |
title | Building Microservices [designing fine-grained systems] |
title_auth | Building Microservices [designing fine-grained systems] |
title_exact_search | Building Microservices [designing fine-grained systems] |
title_full | Building Microservices [designing fine-grained systems] Sam Newman |
title_fullStr | Building Microservices [designing fine-grained systems] Sam Newman |
title_full_unstemmed | Building Microservices [designing fine-grained systems] Sam Newman |
title_short | Building Microservices |
title_sort | building microservices designing fine grained systems |
title_sub | [designing fine-grained systems] |
topic | Mikroservice (DE-588)1073948900 gnd Verteiltes System (DE-588)4238872-7 gnd |
topic_facet | Mikroservice Verteiltes System |
url | http://deposit.dnb.de/cgi-bin/dokserv?id=5119297&prov=M&dok_var=1&dok_ext=htm http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=027816996&sequence=000002&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |
work_keys_str_mv | AT newmansam buildingmicroservicesdesigningfinegrainedsystems |