Advanced Microservices: a hand-on approach to microservices infrastructure and tooling
Gespeichert in:
1. Verfasser: | |
---|---|
Format: | Buch |
Sprache: | English |
Veröffentlicht: |
New York
Apress
[2017]
|
Schlagworte: | |
Online-Zugang: | Inhaltsverzeichnis |
Beschreibung: | XVIII, 181 Seiten |
ISBN: | 9781484228869 |
Internformat
MARC
LEADER | 00000nam a2200000 c 4500 | ||
---|---|---|---|
001 | BV044309460 | ||
003 | DE-604 | ||
005 | 20170717 | ||
007 | t | ||
008 | 170515s2017 |||| 00||| eng d | ||
020 | |a 9781484228869 |9 978-1-4842-2886-9 | ||
035 | |a (OCoLC)1002261612 | ||
035 | |a (DE-599)BVBBV044309460 | ||
040 | |a DE-604 |b ger |e rda | ||
041 | 0 | |a eng | |
049 | |a DE-473 | ||
084 | |a ST 230 |0 (DE-625)143617: |2 rvk | ||
100 | 0 | |a Hunter, Thomas |b II. |e Verfasser |0 (DE-588)113630889X |4 aut | |
245 | 1 | 0 | |a Advanced Microservices |b a hand-on approach to microservices infrastructure and tooling |c Thomas Hunter II |
264 | 1 | |a New York |b Apress |c [2017] | |
264 | 4 | |c © 2017 | |
300 | |a XVIII, 181 Seiten | ||
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 |
689 | 0 | 0 | |a Mikroservice |0 (DE-588)1073948900 |D s |
689 | 0 | |5 DE-604 | |
776 | 0 | 8 | |i Erscheint auch als |n Onlineausgabe |z 978-1-4842-2887-6 |
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=029713151&sequence=000002&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |3 Inhaltsverzeichnis |
999 | |a oai:aleph.bib-bvb.de:BVB01-029713151 |
Datensatz im Suchindex
_version_ | 1804177520247963648 |
---|---|
adam_text | Contents at a Glance
About the Author.......................................... xiii
About the Technical Reviewers............................... xv
Preface................................................... xvii
tl Chapter 1:
■Chapter 2:
El Chapter 3:
I Chapter 4:
■Chapter 5:
■Chapter 6:
■Chapter 7:
■Chapter 8:
»Chapter 9:
References..
Introduction......
HTTP API Design..,
Deployments.......
Service Discovery
Service State.....
Consumers.........
Monitoring........
Documentation....,
Collaboration....
Index
,...1
.13
,.55
,.73
,.89
119
131
151
157
171
175
iii
Contents
About the Author.................................................... xiii
About the Technical Reviewers.............................................xv
Preface........................................................... xvii
■Chapter 1: Introduction............................................. 1
Why Use Microservices?..................................................1
Forced Separation of Concerns........................................1
Natural Team Ownership...............................................1
Frequent Deployments.................................................2
Heterogeneous Selection of Languages.................................2
Organization Buy-In.....................................................2
Separation of Concerns..................................................3
Nouns (Entities).....................................................3
Verbs (Actions/Relationships)........................................3
Example Microservice Breakdown.......................................4
Team Structure.......................................................5
Splitting a Monolith....................................................6
Terminology..............................................................7
Networking Basics.......................................................8
Hostnames and IP Addresses...........................................8
Network Interfaces...................................................9
Ports...............................................................10
Protocols...........................................................11
■ CONTENTS
■Chapter 2: HTTP API Design................................................13
Data Design and Abstraction.............................................13
Examples of Abstraction..............................................14
Real-World Examples..................................................16
Anatomy of an HTTP Message..............................................17
Debugging HTTP Traffic...............................................18
API Entrypoint..........................................................19
Choosing an Entrypoint for a Public API..............................19
Content Located at the Root..........................................20
API Requests............................................................21
HTTP Methods.........................................................21
URL Endpoints........................................................23
Filtering Resources..................................................25
White-Listing Attributes.............................................26
Requesting Arrays via URL Parameters.................................27
Body Formats.........................................................28
HTTP Headers.........................................................30
API Responses...........................................................31
HTTP Status Codes....................................................31
Content Types........................................................33
Expected Body Content................................................34
JSON Attribute Conventions...........................................36
Error Reporting......................................................40
Responses Should Mimic Requests......................................43
HTTP Headers.........................................................44
API Standards...........................................................44
Simple Response Envelope.............................................45
JSON Schema..........................................................46
vi
CONTENTS
JSONAPI..............................................................46
GraphQL..............................................................47
Hypermedia APIs......................................................49
API Transports..........................................................51
JSON RPC.............................................................51
SOAP.................................................................52
MessagePack (Binary).................................................53
Apache Thrift (Binary)...............................................54
Chapter 3: Deployments..................................................55
Automated Testing.......................................................55
Unit Tests...........................................................55
Smoke Tests..........................................................56
Integration Tests....................................................56
Acceptance Tests.....................................................56
Performance Tests....................................................56
Regression Tests.....................................................56
Containers..............................................................57
Docker Containers....................................................58
Managing Containers with Kübemetes...................................62
Further Reading: Mesos and Marathon..................................63
Build Pipeline..........................................................64
Continuous Integration and Deployment................................64
Choosing Environments................................................64
Designing a Build Pipeline...........................................65
Building with Jenkins................................................67
Testing Contributions................................................70
Further Reading: TeamCity and Circled................................72
VÜ
CONTENTS
■Chapter 4: Service Discovery.................................................73
Why Do You Need Service Discovery?.........................................73
Client Side vs. Server Side................................................74
Client-Side Discovery..................................................75
Server-Side Discovery..................................................75
Example implementation.....................................................76
Get Entire State.......................................................76
Register Provider Instance.............................................77
Deregister Provider Instance...........................................77
Finding a Provider.....................................................78
Periodic Health Checks in Provider.....................................79
Application Discovery with Consul..........................................79
Registering a Service Instance.........................................80
Passing a Health Check.................................................81
Deregistering a Service Instance.......................................81
Subscribing to Updates.................................................81
HTTP Routing with Consul...................................................83
Limitations of Common Web Servers......................................83
Consul, Consul Template, HAProxy.......................................84
Further Reading............................................................86
Apache ZooKeeper and Apache Curator....................................86
Netflix Eureka.........................................................86
Etcd...................................................................87
Elastic Load Balancer (ELB)............................................87
* Chapter 5: Service State................................................. 89
Relational Storage with PostgreSQL.........................................89
RETURNING Clause.......................................................94
When to Use PostgreSQL.................................................94
viii
CONTENTS
When Not to Use PostgreSQL...........................................94
Further Reading: MySQL...............................................95
Document Storage with MongoDB...........................................95
When to Use MongoDB.................................................100
When Not to Use MongoDB.............................................100
Further Reading: CouchDB............................................100
Fast Data Structures with Redis........................................100
Data Types..........................................................101
Atomic Operations with MULTI/EXEC...................................105
Execute Lua Scripts on Redis Server............................... 106
Caching.............................................................107
Pub/Sub with PUBLISH/SUBSCRIBE.....................................111
When to Use Redis...................................................113
When Not to Use Redis...............................................113
Further Reading: Memcached..........................................113
Document Search with Elasticsearch.....................................113
Populating Elasticsearch............................................117
Chapter 6: Consumers...................................................119
User Agents............................................................119
API Versioning.........................................................120
Versioning via URL Segment.........................................121
Versioning via the Accept Header....................................122
Versioning via a Custom Header......................................122
API Deprecation........................................................122
Authentication and Authorization..................................... 123
Two-Legged Authentication (2LA).....................................123
Three-Legged Authentication (3LA)...................................126
Real-World Usage....................................................127
ix
■ CONTENTS
Consumer Permissions.....................................................127
Per-Authorization Permissions........................................128
Default Consumer Permissions.........................................129
Rate Limiting........................................................... 130
■Chapter 7: Monitoring.....................................................131
Logging.................................................................131
ELK: Elasticsearch, Logstash, Kibana.................................131
Transmitting Logs via Logstash.......................................132
Querying Logs via Kibana.............................................134
Request UUID Tracking................................................135
Dynamic Log Verbosity................................................136
Analytics...............................................................136
Grafana, Graphite, and StatsD........................................137
Transmitting Data via StatsD.........................................137
Querying Data via Grafana............................................139
Tracking Overall Incoming Requests...................................141
Tracking Outbound Requests...........................................143
Track Everything.....................................................145
Alerting................................................................145
When Not to Alert....................................................146
Error Thresholds.....................................................147
Having Someone Else Respond..........................................147
External Tools (Software as a Service)...............................148
Internal Tools (Self-Hosted).........................................149
SChapter 8: Documentation.............................................. 151
Good Documentation Principles...........................................151
Convenience of Developer Testing........................................152
Web-Based Developer Console..........................................152
Providing cURL Commands..............................................152
X
« CONTENTS
Discovering Documentation....................................... 153
Documentation Generators..........................................154
Swagger........................................................154
fi Chapter 9: Collaboration.........................................157
The Importance of Collaboration...................................157
Common Debugging Tools............................................157
cURL and jq....................................................157
Postman........................................................162
Paw (Mac Shops)................................................164
Fiddler 2 (Windows Shops)......................................165
Shared Modules....................................................165
Minimize Languages and Frameworks..............................166
Be Precise When Reporting Bugs....................................166
Example of a Poorly Described Bug..............................167
Example of a Nicely Described Bug..............................167
Generate cURLs Programmatically................................168
Patches Welcome...................................................169
References........................................................171
Index..............................................................175
xi
|
any_adam_object | 1 |
author | Hunter, Thomas II |
author_GND | (DE-588)113630889X |
author_facet | Hunter, Thomas II |
author_role | aut |
author_sort | Hunter, Thomas II |
author_variant | t h th |
building | Verbundindex |
bvnumber | BV044309460 |
classification_rvk | ST 230 |
ctrlnum | (OCoLC)1002261612 (DE-599)BVBBV044309460 |
discipline | Informatik |
format | Book |
fullrecord | <?xml version="1.0" encoding="UTF-8"?><collection xmlns="http://www.loc.gov/MARC21/slim"><record><leader>01334nam a2200337 c 4500</leader><controlfield tag="001">BV044309460</controlfield><controlfield tag="003">DE-604</controlfield><controlfield tag="005">20170717 </controlfield><controlfield tag="007">t</controlfield><controlfield tag="008">170515s2017 |||| 00||| eng d</controlfield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">9781484228869</subfield><subfield code="9">978-1-4842-2886-9</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(OCoLC)1002261612</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(DE-599)BVBBV044309460</subfield></datafield><datafield tag="040" ind1=" " ind2=" "><subfield code="a">DE-604</subfield><subfield code="b">ger</subfield><subfield code="e">rda</subfield></datafield><datafield tag="041" ind1="0" ind2=" "><subfield code="a">eng</subfield></datafield><datafield tag="049" ind1=" " ind2=" "><subfield code="a">DE-473</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="100" ind1="0" ind2=" "><subfield code="a">Hunter, Thomas</subfield><subfield code="b">II.</subfield><subfield code="e">Verfasser</subfield><subfield code="0">(DE-588)113630889X</subfield><subfield code="4">aut</subfield></datafield><datafield tag="245" ind1="1" ind2="0"><subfield code="a">Advanced Microservices</subfield><subfield code="b">a hand-on approach to microservices infrastructure and tooling</subfield><subfield code="c">Thomas Hunter II</subfield></datafield><datafield tag="264" ind1=" " ind2="1"><subfield code="a">New York</subfield><subfield code="b">Apress</subfield><subfield code="c">[2017]</subfield></datafield><datafield tag="264" ind1=" " ind2="4"><subfield code="c">© 2017</subfield></datafield><datafield tag="300" ind1=" " ind2=" "><subfield code="a">XVIII, 181 Seiten</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="689" ind1="0" ind2="0"><subfield code="a">Mikroservice</subfield><subfield code="0">(DE-588)1073948900</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="0" ind2=" "><subfield code="5">DE-604</subfield></datafield><datafield tag="776" ind1="0" ind2="8"><subfield code="i">Erscheint auch als</subfield><subfield code="n">Onlineausgabe</subfield><subfield code="z">978-1-4842-2887-6</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=029713151&sequence=000002&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA</subfield><subfield code="3">Inhaltsverzeichnis</subfield></datafield><datafield tag="999" ind1=" " ind2=" "><subfield code="a">oai:aleph.bib-bvb.de:BVB01-029713151</subfield></datafield></record></collection> |
id | DE-604.BV044309460 |
illustrated | Not Illustrated |
indexdate | 2024-07-10T07:49:23Z |
institution | BVB |
isbn | 9781484228869 |
language | English |
oai_aleph_id | oai:aleph.bib-bvb.de:BVB01-029713151 |
oclc_num | 1002261612 |
open_access_boolean | |
owner | DE-473 DE-BY-UBG |
owner_facet | DE-473 DE-BY-UBG |
physical | XVIII, 181 Seiten |
publishDate | 2017 |
publishDateSearch | 2017 |
publishDateSort | 2017 |
publisher | Apress |
record_format | marc |
spelling | Hunter, Thomas II. Verfasser (DE-588)113630889X aut Advanced Microservices a hand-on approach to microservices infrastructure and tooling Thomas Hunter II New York Apress [2017] © 2017 XVIII, 181 Seiten txt rdacontent n rdamedia nc rdacarrier Mikroservice (DE-588)1073948900 gnd rswk-swf Mikroservice (DE-588)1073948900 s DE-604 Erscheint auch als Onlineausgabe 978-1-4842-2887-6 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=029713151&sequence=000002&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA Inhaltsverzeichnis |
spellingShingle | Hunter, Thomas II Advanced Microservices a hand-on approach to microservices infrastructure and tooling Mikroservice (DE-588)1073948900 gnd |
subject_GND | (DE-588)1073948900 |
title | Advanced Microservices a hand-on approach to microservices infrastructure and tooling |
title_auth | Advanced Microservices a hand-on approach to microservices infrastructure and tooling |
title_exact_search | Advanced Microservices a hand-on approach to microservices infrastructure and tooling |
title_full | Advanced Microservices a hand-on approach to microservices infrastructure and tooling Thomas Hunter II |
title_fullStr | Advanced Microservices a hand-on approach to microservices infrastructure and tooling Thomas Hunter II |
title_full_unstemmed | Advanced Microservices a hand-on approach to microservices infrastructure and tooling Thomas Hunter II |
title_short | Advanced Microservices |
title_sort | advanced microservices a hand on approach to microservices infrastructure and tooling |
title_sub | a hand-on approach to microservices infrastructure and tooling |
topic | Mikroservice (DE-588)1073948900 gnd |
topic_facet | Mikroservice |
url | http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=029713151&sequence=000002&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |
work_keys_str_mv | AT hunterthomasii advancedmicroservicesahandonapproachtomicroservicesinfrastructureandtooling |