100% found this document useful (1 vote)
252 views

PDF Microservices Patterns With examples in Java 1st Edition Chris Richardson download

Richardson

Uploaded by

heindkirban
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (1 vote)
252 views

PDF Microservices Patterns With examples in Java 1st Edition Chris Richardson download

Richardson

Uploaded by

heindkirban
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 65

Experience Seamless Full Ebook Downloads for Every Genre at textbookfull.

com

Microservices Patterns With examples in Java 1st


Edition Chris Richardson

https://textbookfull.com/product/microservices-patterns-
with-examples-in-java-1st-edition-chris-richardson-2/

OR CLICK BUTTON

DOWNLOAD NOW

Explore and download more ebook at https://textbookfull.com


Recommended digital products (PDF, EPUB, MOBI) that
you can download immediately if you are interested.

Microservices Patterns With examples in Java 1st Edition


Chris Richardson

https://textbookfull.com/product/microservices-patterns-with-examples-
in-java-1st-edition-chris-richardson-2/

textboxfull.com

SRE with Java Microservices Patterns for Reliable


Microservices in the Enterprise 1st Edition Jonathan
Schneider
https://textbookfull.com/product/sre-with-java-microservices-patterns-
for-reliable-microservices-in-the-enterprise-1st-edition-jonathan-
schneider/
textboxfull.com

Practical Microservices Architectural Patterns: Event-


Based Java Microservices with Spring Boot and Spring Cloud
Christudas
https://textbookfull.com/product/practical-microservices-
architectural-patterns-event-based-java-microservices-with-spring-
boot-and-spring-cloud-christudas/
textboxfull.com

Practical Microservices Architectural Patterns - Event-


Based Java Microservices with Spring Boot and Spring Cloud
1st Edition Binildas Christudas
https://textbookfull.com/product/practical-microservices-
architectural-patterns-event-based-java-microservices-with-spring-
boot-and-spring-cloud-1st-edition-binildas-christudas/
textboxfull.com
Java Design Patterns: A Hands-On Experience with Real-
World Examples 2nd Edition Vaskaran Sarcar

https://textbookfull.com/product/java-design-patterns-a-hands-on-
experience-with-real-world-examples-2nd-edition-vaskaran-sarcar/

textboxfull.com

Microservices in .NET Core, with Examples in Nancy 1st


Edition Christian Horsdal Gammelgaard

https://textbookfull.com/product/microservices-in-net-core-with-
examples-in-nancy-1st-edition-christian-horsdal-gammelgaard/

textboxfull.com

Traefik API Gateway for Microservices: With Java and


Python Microservices Deployed in Kubernetes 1st Edition
Rahul Sharma
https://textbookfull.com/product/traefik-api-gateway-for-
microservices-with-java-and-python-microservices-deployed-in-
kubernetes-1st-edition-rahul-sharma/
textboxfull.com

Enterprise Java Microservices 1st Edition Ken Finnigan

https://textbookfull.com/product/enterprise-java-microservices-1st-
edition-ken-finnigan/

textboxfull.com

Enterprise Java Microservices 1st Edition Ken Finnigan

https://textbookfull.com/product/enterprise-java-microservices-1st-
edition-ken-finnigan-2/

textboxfull.com
Chris Richardson

MANNING
List of Patterns

Application architecture patterns External API patterns


Monolithic architecture (40) API gateway (259)
Microservice architecture (40) Backends for frontends (265)

Decomposition patterns Testing patterns


Decompose by business capability (51) Consumer-driven contract test (302)
Decompose by subdomain (54) Consumer-side contract test (303)
Service component test (335)
Messaging style patterns
Messaging (85) Security patterns
Remote procedure invocation (72) Access token (354)

Reliable communications patterns Cross-cutting concerns patterns


Circuit breaker (78) Externalized configuration (361)
Microservice chassis (379)
Service discovery patterns
3rd party registration (85) Observability patterns
Client-side discovery (83) Application metrics (373)
Self-registration (82) Audit logging (377)
Server-side discovery (85) Distributed tracing (370)
Exception tracking (376)
Transactional messaging patterns Health check API (366)
Polling publisher (98) Log aggregation (368)
Transaction log tailing (99)
Transactional outbox (98) Deployment patterns
Deploy a service as a container (393)
Data consistency patterns Deploy a service as a VM (390)
Saga (114) Language-specific packaging format (387)
Service mesh (380)
Business logic design patterns Serverless deployment (416)
Aggregate (150) Sidecar (410)
Domain event (160)
Domain model (150) Refactoring to microservices patterns
Event sourcing (184) Anti-corruption layer (447)
Transaction script (149) Strangler application (432)

Querying patterns
API composition (223)
Command query responsibility segregation
(228)
Microservices Patterns
Microservices Patterns
WITH EXAMPLES IN JAVA

CHRIS RICHARDSON

MANNING
SHELTER ISLAND
For online information and ordering of this and other Manning books, please visit
www.manning.com. The publisher offers discounts on this book when ordered in quantity.
For more information, please contact
Special Sales Department
Manning Publications Co.
20 Baldwin Road
PO Box 761
Shelter Island, NY 11964
Email: [email protected]

©2019 by Chris Richardson. All rights reserved.

No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in


any form or by means electronic, mechanical, photocopying, or otherwise, without prior written
permission of the publisher.

Many of the designations used by manufacturers and sellers to distinguish their products are
claimed as trademarks. Where those designations appear in the book, and Manning
Publications was aware of a trademark claim, the designations have been printed in initial caps
or all caps.

Recognizing the importance of preserving what has been written, it is Manning’s policy to have
the books we publish printed on acid-free paper, and we exert our best efforts to that end.
Recognizing also our responsibility to conserve the resources of our planet, Manning books
are printed on paper that is at least 15 percent recycled and processed without the use of
elemental chlorine.

Manning Publications Co. Development editor: Marina Michaels


20 Baldwin Road Technical development editor: Christian Mennerich
PO Box 761 Review editor: Aleksandar Dragosavljević
Shelter Island, NY 11964 Project editor: Lori Weidert
Copy editor: Corbin Collins
Proofreader: Alyson Brener
Technical proofreader: Andy Miles
Typesetter: Dennis Dalinnik
Cover designer: Marija Tudor

ISBN: 9781617294549
Printed in the United States of America
1 2 3 4 5 6 7 8 9 10 – DP – 23 22 21 20 19 18
Where you see wrong or inequality or injustice, speak out, because this is your country.
This is your democracy. Make it. Protect it. Pass it on.
— Thurgood Marshall, Justice of the Supreme Court
brief contents
1 ■ Escaping monolithic hell 1
2 ■ Decomposition strategies 33
3 ■ Interprocess communication in a microservice
architecture 65
4 ■ Managing transactions with sagas 110
5 ■ Designing business logic in a microservice
architecture 146
6 ■ Developing business logic with event sourcing 183
7 ■ Implementing queries in a microservice architecture 220
8 ■ External API patterns 253
9 ■ Testing microservices: Part 1 292
10 ■ Testing microservices: Part 2 318
11 ■ Developing production-ready services 348
12 ■ Deploying microservices 383
13 ■ Refactoring to microservices 428

vii
contents
preface xvii
acknowledgments xx
about this book xxii
about the cover illustration xxvi

1 Escaping monolithic hell 1


1.1 The slow march toward monolithic hell 2
The architecture of the FTGO application 3 The benefits of the

monolithic architecture 4 Living in monolithic hell 4


1.2 Why this book is relevant to you 7


1.3 What you’ll learn in this book 7
1.4 Microservice architecture to the rescue 8
Scale cube and microservices 8 Microservices as a form of

modularity 11 Each service has its own database 12


The FTGO microservice architecture 12 Comparing the


microservice architecture and SOA 13


1.5 Benefits and drawbacks of the microservice
architecture 14
Benefits of the microservice architecture 14 ■
Drawbacks of the
microservice architecture 17

ix
x CONTENTS

1.6 The Microservice architecture pattern language 19


Microservice architecture is not a silver bullet 19 Patterns and ■

pattern languages 20 Overview of the Microservice architecture


pattern language 23
1.7 Beyond microservices: Process and organization 29
Software development and delivery organization 29 Software ■

development and delivery process 30 The human side of


adopting microservices 31

2 Decomposition strategies 33
2.1 What is the microservice architecture exactly? 34
What is software architecture and why does it matter? 34
Overview of architectural styles 37 The microservice architecture

is an architectural style 40
2.2 Defining an application’s microservice architecture 44
Identifying the system operations 45 Defining services by

applying the Decompose by business capability pattern 51


Defining services by applying the Decompose by sub-domain
pattern 54 Decomposition guidelines 56 Obstacles to
■ ■

decomposing an application into services 57 Defining service


APIs 61

3 Interprocess communication in a microservice architecture 65


3.1 Overview of interprocess communication in a microservice
architecture 66
Interaction styles 67 Defining APIs in a microservice

architecture 68 Evolving APIs 69 Message formats 71


■ ■

3.2 Communicating using the synchronous Remote


procedure invocation pattern 72
Using REST 73 Using gRPC 76 Handling partial failure
■ ■

using the Circuit breaker pattern 77 Using service discovery 80


3.3 Communicating using the Asynchronous messaging


pattern 85
Overview of messaging 86 Implementing the interaction styles

using messaging 87 Creating an API specification for a


messaging-based service API 89 Using a message broker 90


Competing receivers and message ordering 94 Handling ■

duplicate messages 95 Transactional messaging 97


Libraries and frameworks for messaging 100


CONTENTS xi

3.4 Using asynchronous messaging to improve


availability 103
Synchronous communication reduces availability 103
Eliminating synchronous interaction 104

4 Managing transactions with sagas 110


4.1 Transaction management in a microservice
architecture 111
The need for distributed transactions in a microservice
architecture 112 The trouble with distributed

transactions 112 Using the Saga pattern to maintain


data consistency 114


4.2 Coordinating sagas 117
Choreography-based sagas 118 ■
Orchestration-based sagas 121
4.3 Handling the lack of isolation 126
Overview of anomalies 127 ■
Countermeasures for handling the
lack of isolation 128
4.4 The design of the Order Service and
the Create Order Saga 132
The OrderService class 133 The implementation of the Create

Order Saga 135 The OrderCommandHandlers class 142


The OrderServiceConfiguration class 143

5 Designing business logic in a microservice architecture 146


5.1 Business logic organization patterns 147
Designing business logic using the Transaction script pattern 149
Designing business logic using the Domain model pattern 150
About Domain-driven design 151
5.2 Designing a domain model using the
DDD aggregate pattern 152
The problem with fuzzy boundaries 153 Aggregates have

explicit boundaries 154 Aggregate rules 155 Aggregate


■ ■

granularity 158 Designing business logic with aggregates 159


5.3 Publishing domain events 160


Why publish change events? 160 What is a domain

event? 161 Event enrichment 161 Identifying domain


■ ■

events 162 Generating and publishing domain events 164


Consuming domain events 167


xii CONTENTS

5.4 Kitchen Service business logic 168


The Ticket aggregate 169
5.5 Order Service business logic 173
The Order Aggregate 175 ■ The OrderService class 180

6 Developing business logic with event sourcing 183


6.1 Developing business logic using event sourcing 184
The trouble with traditional persistence 185 Overview of event

sourcing 186 Handling concurrent updates using optimistic


locking 193 Event sourcing and publishing events 194


Using snapshots to improve performance 195 Idempotent ■

message processing 197 Evolving domain events 198


Benefits of event sourcing 199 Drawbacks of event


sourcing 200
6.2 Implementing an event store 202
How the Eventuate Local event store works 203 ■
The Eventuate
client framework for Java 205
6.3 Using sagas and event sourcing together 209
Implementing choreography-based sagas using event sourcing 210
Creating an orchestration-based saga 211 Implementing an

event sourcing-based saga participant 213 Implementing saga


orchestrators using event sourcing 216

7 Implementing queries in a microservice architecture 220


7.1 Querying using the API composition pattern 221
The findOrder() query operation 221 Overview of the API

composition pattern 222 Implementing the findOrder() query


operation using the API composition pattern 224 API ■

composition design issues 225 The benefits and drawbacks


of the API composition pattern 227


7.2 Using the CQRS pattern 228
Motivations for using CQRS 229 Overview of CQRS 232

The benefits of CQRS 235 The drawbacks of CQRS 236


7.3 Designing CQRS views 236


Choosing a view datastore 237 Data access module design 239

Adding and updating CQRS views 241


7.4 Implementing a CQRS view with AWS DynamoDB 242
The OrderHistoryEventHandlers module 243
Data modeling and query design with DynamoDB 244
The OrderHistoryDaoDynamoDb class 249
CONTENTS xiii

8 External API patterns 253


8.1 External API design issues 254
API design issues for the FTGO mobile client 255 ■ API design
issues for other kinds of clients 258
8.2 The API gateway pattern 259
Overview of the API gateway pattern 259 Benefits and ■

drawbacks of an API gateway 267 Netflix as an example


of an API gateway 267 API gateway design issues 268


8.3 Implementing an API gateway 271


Using an off-the-shelf API gateway product/service 271
Developing your own API gateway 273 Implementing an ■

API gateway using GraphQL 279

9 Testing microservices: Part 1 292


9.1 Testing strategies for microservice architectures 294
Overview of testing 294 The challenge of testing

microservices 299 The deployment pipeline 305


9.2 Writing unit tests for a service 307


Developing unit tests for entities 309 Writing unit tests for value

objects 310 Developing unit tests for sagas 310 Writing


■ ■

unit tests for domain services 312 Developing unit tests for

controllers 313 Writing unit tests for event and message


handlers 315

10 Testing microservices: Part 2 318


10.1 Writing integration tests 319
Persistence integration tests 321 Integration testing REST-based

request/response style interactions 322 Integration testing


publish/subscribe-style interactions 326 Integration contract ■

tests for asynchronous request/response interactions 330


10.2 Developing component tests 335
Defining acceptance tests 336 Writing acceptance tests using

Gherkin 337 Designing component tests 339 Writing


■ ■

component tests for the FTGO Order Service 340


10.3 Writing end-to-end tests 345
Designing end-to-end tests 345 ■ Writing end-to-end tests 346
Running end-to-end tests 346
xiv CONTENTS

11 Developing production-ready services 348


11.1 Developing secure services 349
Overview of security in a traditional monolithic application 350
Implementing security in a microservice architecture 353
11.2 Designing configurable services 360
Using push-based externalized configuration 362 ■ Using pull-
based externalized configuration 363
11.3 Designing observable services 364
Using the Health check API pattern 366 Applying the Log ■

aggregation pattern 368 Using the Distributed tracing


pattern 370 Applying the Application metrics pattern 373


Using the Exception tracking pattern 376 Applying the Audit ■

logging pattern 377


11.4 Developing services using the Microservice chassis
pattern 378
Using a microservice chassis 379 ■
From microservice chassis to
service mesh 380

12 Deploying microservices 383


12.1 Deploying services using the Language-specific packaging
format pattern 386
Benefits of the Service as a language-specific package pattern 388
Drawbacks of the Service as a language-specific package
pattern 389
12.2 Deploying services using the Service as a virtual machine
pattern 390
The benefits of deploying services as VMs 392 ■
The drawbacks of
deploying services as VMs 392
12.3 Deploying services using the Service as a container
pattern 393
Deploying services using Docker 395 Benefits of deploying

services as containers 398 Drawbacks of deploying services


as containers 399
12.4 Deploying the FTGO application with Kubernetes 399
Overview of Kubernetes 399 Deploying the Restaurant service

on Kubernetes 402 Deploying the API gateway 405


Zero-downtime deployments 406 Using a service mesh


to separate deployment from release 407


CONTENTS xv

12.5 Deploying services using the Serverless deployment


pattern 415
Overview of serverless deployment with AWS Lambda 416
Developing a lambda function 417 Invoking lambda

functions 417 Benefits of using lambda functions 418


Drawbacks of using lambda functions 419


12.6 Deploying a RESTful service using AWS Lambda
and AWS Gateway 419
The design of the AWS Lambda version of Restaurant Service 419
Packaging the service as ZIP file 424 Deploying lambda

functions using the Serverless framework 425

13 Refactoring to microservices 428


13.1 Overview of refactoring to microservices 429
Why refactor a monolith? 429 ■
Strangling the monolith 430
13.2 Strategies for refactoring a monolith to
microservices 433
Implement new features as services 434 Separate presentation

tier from the backend 436 Extract business capabilities into


services 437
13.3 Designing how the service and the monolith
collaborate 443
Designing the integration glue 444 Maintaining data

consistency across a service and a monolith 449 Handling ■

authentication and authorization 453


13.4 Implementing a new feature as a service: handling
misdelivered orders 455
The design of Delayed Delivery Service 456 Designing the

integration glue for Delayed Delivery Service 457


13.5 Breaking apart the monolith: extracting delivery
management 459
Overview of existing delivery management functionality 460
Overview of Delivery Service 462 Designing the Delivery Service

domain model 463 The design of the Delivery Service integration


glue 465 Changing the FTGO monolith to interact with Delivery


Service 467

index 473
preface
One of my favorite quotes is

The future is already here—it’s just not very evenly distributed.

—William Gibson, science fiction author

The essence of that quote is that new ideas and technology take a while to diffuse
through a community and become widely adopted. A good example of the slow diffu-
sion of ideas is the story of how I discovered microservices. It began in 2006, when,
after being inspired by a talk given by an AWS evangelist, I started down a path that
ultimately led to my creating the original Cloud Foundry. (The only thing in common
with today’s Cloud Foundry is the name.) Cloud Foundry was a Platform-as-a-Service
(PaaS) for automating the deployment of Java applications on EC2. Like every other
enterprise Java application that I’d built, my Cloud Foundry had a monolith architec-
ture consisting of a single Java Web Application Archive (WAR) file.
Bundling a diverse and complex set of functions such as provisioning, configura-
tion, monitoring, and management into a monolith created both development and
operations challenges. You couldn’t, for example, change the UI without testing and
redeploying the entire application. And because the monitoring and management
component relied on a Complex Event Processing (CEP) engine which maintained
in-memory state we couldn’t run multiple instances of the application! That’s embar-
rassing to admit, but all I can say is that I am a software developer, and, “let he who is
without sin cast the first stone.”

xvii
xviii PREFACE

Clearly, the application had quickly outgrown its monolith architecture, but what was
the alternative? The answer had been out in the software community for some time at
companies such as eBay and Amazon. Amazon had, for example, started to migrate away
from the monolith around 2002 (https://plus.google.com/110981030061712822816/
posts/AaygmbzVeRq). The new architecture replaced the monolith with a collection
of loosely coupled services. Services are owned by what Amazon calls two-pizza teams—
teams small enough to be fed by two pizzas.
Amazon had adopted this architecture to accelerate the rate of software develop-
ment so that the company could innovate faster and compete more effectively. The
results are impressive: Amazon reportedly deploys changes into production every 11.6
seconds!
In early 2010, after I’d moved on to other projects, the future of software architec-
ture finally caught up with me. That’s when I read the book The Art of Scalability:
Scalable Web Architecture, Processes, and Organizations for the Modern Enterprise (Addison-
Wesley Professional, 2009) by Michael T. Fisher and Martin L. Abbott. A key idea in
that book is the scale cube, which, as described in chapter 2, is a three-dimensional
model for scaling an application. The Y-axis scaling defined by the scale cube func-
tionally decomposes an application into services. In hindsight, this was quite obvious,
but for me at the time, it was an a-ha moment! I could have solved the challenges I was
facing two years earlier by architecting Cloud Foundry as a set of services!
In April 2012, I gave my first talk on this architectural approach, called “Decom-
posing Applications of Deployability and Scalability” (www.slideshare.net/chris.e
.richardson/decomposing-applications-for-scalability-and-deployability-april-2012). At
the time, there wasn’t a generally accepted term for this kind of architecture. I some-
times called it modular, polyglot architecture, because the services could be written in
different languages.
But in another example of how the future is unevenly distributed, the term micro-
service was used at a software architecture workshop in 2011 to describe this kind of
architecture (https://en.wikipedia.org/wiki/Microservices). I first encountered the
term when I heard Fred George give a talk at Oredev 2013, and I liked it!
In January 2014, I created the https://microservices.io website to document archi-
tecture and design patterns that I had encountered. Then in March 2014, James Lewis
and Martin Fowler published a blog post about microservices (https://martinfowler
.com/articles/microservices.html). By popularizing the term microservices, the blog
post caused the software community to consolidate around the concept.
The idea of small, loosely coupled teams, rapidly and reliably developing and deliv-
ering microservices is slowly diffusing through the software community. But it’s likely
that this vision of the future is quite different from your daily reality. Today, business-
critical enterprise applications are typically large monoliths developed by large teams.
Software releases occur infrequently and are often painful for everyone involved. IT
often struggles to keep up with the needs of the business. You’re wondering how on
earth you can adopt the microservice architecture.
PREFACE xix

The goal of this book is to answer that question. It will give you a good understand-
ing of the microservice architecture, its benefits and drawbacks, and when to use it.
The book describes how to solve the numerous design challenges you’ll face, includ-
ing how to manage distributed data. It also covers how to refactor a monolithic appli-
cation to a microservice architecture. But this book is not a microservices manifesto.
Instead, it’s organized around a collection of patterns. A pattern is a reusable solution
to a problem that occurs in a particular context. The beauty of a pattern is that
besides describing the benefits of the solution, it also describes the drawbacks and the
issues you must address in order to successfully implement a solution. In my experi-
ence, this kind of objectivity when thinking about solutions leads to much better deci-
sion making. I hope you’ll enjoy reading this book and that it teaches you how to
successfully develop microservices.
acknowledgments
Although writing is a solitary activity, it takes a large number of people to turn rough
drafts into a finished book.
First, I want to thank Erin Twohey and Michael Stevens from Manning for their
persistent encouragement to write another book. I would also like to thank my devel-
opment editors, Cynthia Kane and Marina Michaels. Cynthia Kane got me started and
worked with me on the first few chapters. Marina Michaels took over from Cynthia
and worked with me to the end. I’ll be forever grateful for Marina’s meticulous and
constructive critiques of my chapters. And I want to thank the rest of the Manning
team who’s been involved in getting this book published.
I’d like to thank my technical development editor, Christian Mennerich, my tech-
nical proofreader, Andy Miles, and all my external reviewers: Andy Kirsch, Antonio
Pessolano, Areg Melik-Adamyan, Cage Slagel, Carlos Curotto, Dror Helper, Eros
Pedrini, Hugo Cruz, Irina Romanenko, Jesse Rosalia, Joe Justesen, John Guthrie,
Keerthi Shetty, Michele Mauro, Paul Grebenc, Pethuru Raj, Potito Coluccelli, Shobha
Iyer, Simeon Leyzerzon, Srihari Sridharan, Tim Moore, Tony Sweets, Trent Whiteley,
Wes Shaddix, William E. Wheeler, and Zoltan Hamori.
I also want to thank everyone who purchased the MEAP and provided feedback in
the forum or to me directly.
I want to thank the organizers and attendees of all of the conferences and meetups
at which I’ve spoken for the chance to present and revise my ideas. And I want to
thank my consulting and training clients around the world for giving me the opportu-
nity to help them put my ideas into practice.

xx
ACKNOWLEDGMENTS xxi

I want to thank my colleagues Andrew, Valentin, Artem, and Stanislav at Eventuate,


Inc., for their contributions to the Eventuate product and open source projects.
Finally, I’d like to thank my wife, Laura, and my children, Ellie, Thomas, and Janet
for their support and understanding over the last 18 months. While I’ve been glued to
my laptop, I’ve missed out on going to Ellie’s soccer games, watching Thomas learn-
ing to fly on his flight simulator, and trying new restaurants with Janet.
Thank you all!
about this book
The goal of this book is to teach you how to successfully develop applications using
the microservice architecture.
Not only does it discuss the benefits of the microservice architecture, it also
describes the drawbacks. You’ll learn when you should consider using the monolithic
architecture and when it makes sense to use microservices.

Who should read this book


The focus of this book is on architecture and development. It’s meant for anyone
responsible for developing and delivering software, such as developers, architects,
CTOs, or VPs of engineering.
The book focuses on explaining the microservice architecture patterns and other
concepts. My goal is for you to find this material accessible, regardless of the technol-
ogy stack you use. You only need to be familiar with the basics of enterprise applica-
tion architecture and design. In particular, you need to understand concepts like
three-tier architecture, web application design, relational databases, interprocess com-
munication using messaging and REST, and the basics of application security. The
code examples, though, use Java and the Spring framework. In order to get the most
out of them, you should be familiar with the Spring framework.

xxii
ABOUT THIS BOOK xxiii

Roadmap
This book consists of 13 chapters:
■ Chapter 1 describes the symptoms of monolithic hell, which occurs when a
monolithic application outgrows its architecture, and advises on how to escape
by adopting the microservice architecture. It also provides an overview of the
microservice architecture pattern language, which is the organizing theme for
most of the book.
■ Chapter 2 explains why software architecture is important and describes the
patterns you can use to decompose an application into a collection of services.
It also explains how to overcome the various obstacles you typically encounter
along the way.
■ Chapter 3 describes the different patterns for robust, interprocess communica-
tion in a microservice architecture. It explains why asynchronous, message-
based communication is often the best choice.
■ Chapter 4 explains how to maintain data consistency across services by using
the Saga pattern. A saga is a sequence of local transactions coordinated using
asynchronous messaging.
■ Chapter 5 describes how to design the business logic for a service using the
domain-driven design (DDD) Aggregate and Domain event patterns.
■ Chapter 6 builds on chapter 5 and explains how to develop business logic using
the Event sourcing pattern, an event-centric way to structure the business logic
and persist domain objects.
■ Chapter 7 describes how to implement queries that retrieve data scattered
across multiple services by using either the API composition pattern or the
Command query responsibility segregation (CQRS) pattern.
■ Chapter 8 covers the external API patterns for handling requests from a diverse
collection of external clients, such as mobile applications, browser-based Java-
Script applications, and third-party applications.
■ Chapter 9 is the first of two chapters on automated testing techniques for micro-
services. It introduces important testing concepts such as the test pyramid, which
describes the relative proportions of each type of test in your test suite. It also
shows how to write unit tests, which form the base of the testing pyramid.
■ Chapter 10 builds on chapter 9 and describes how to write other types of tests in
the test pyramid, including integration tests, consumer contract tests, and com-
ponent tests.
■ Chapter 11 covers various aspects of developing production-ready services,
including security, the Externalized configuration pattern, and the service
observability patterns. The service observability patterns include Log aggrega-
tion, Application metrics, and Distributed tracing.
■ Chapter 12 describes the various deployment patterns that you can use to
deploy services, including virtual machines, containers, and serverless. It also
xxiv ABOUT THIS BOOK

discusses the benefits of using a service mesh, a layer of networking software


that mediates communication in a microservice architecture.
■ Chapter 13 explains how to incrementally refactor a monolithic architecture to
a microservice architecture by applying the Strangler application pattern: imple-
menting new features as services and extracting modules out of the monolith
and converting them to services.
As you progress through these chapters, you’ll learn about different aspects of the
microservice architecture.

About the code


This book contains many examples of source code both in numbered listings and
inline with normal text. In both cases, source code is formatted in a fixed-width font
like this to separate it from ordinary text. Sometimes code is also in bold to high-
light code that has changed from previous steps in the chapter, such as when a new
feature adds to an existing line of code. In many cases, the original source code has
been reformatted; the publisher has added line breaks and reworked indentation to
accommodate the available page space in the book. In rare cases, even this was not
enough, and listings include line-continuation markers (➥). Additionally, comments
in the source code have often been removed from the listings when the code is
described in the text. Code annotations accompany many of the listings, highlighting
important concepts.
Every chapter, except chapters 1, 2, and 13, contains code from the companion
example application. You can find the code for this application in a GitHub reposi-
tory: https://github.com/microservices-patterns/ftgo-application.

Book forum
The purchase of Microservices Patterns includes free access to a private web forum
run by Manning Publications where you can make comments about the book, ask
technical questions, share your solutions to exercises, and receive help from the
author and from other users. To access the forum and subscribe to it, point your web
browser to https://forums.manning.com/forums/microservices-patterns. You can
also learn more about Manning’s forums and the rules of conduct at https://forums
.manning.com/forums/about.
Manning’s commitment to our readers is to provide a venue where a meaningful
dialogue between individual readers and between readers and the author can take
place. It’s not a commitment to any specific amount of participation on the part of the
author, whose contribution to the forum remains voluntary (and unpaid). We suggest
you try asking the author some challenging questions lest his interest stray! The forum
and the archives of previous discussions will be accessible from the publisher’s website
as long as the book is in print.
ABOUT THIS BOOK xxv

Other online resources


Another great resource for learning the microservice architecture is my website http://
microservices.io.
Not only does it contain the complete pattern language, it also has links to other
resources such as articles, presentations, and example code.

About the author


Chris Richardson is a developer and architect. He is a Java Champion, a JavaOne rock
star, and the author of POJOs in Action (Manning, 2006), which describes how to build
enterprise Java applications with frameworks such as Spring and Hibernate.
Chris was also the founder of the original CloudFoundry.com, an early Java PaaS
for Amazon EC2.
Today, he is a recognized thought leader in microservices and speaks regularly at
international conferences. Chris is the creator of Microservices.io, a pattern language
for microservices. He provides microservices consulting and training to organizations
around the world that are adopting the microservice architecture. Chris is working on
his third startup: Eventuate.io, an application platform for developing transactional
microservices.
about the cover illustration
Jefferys
The figure on the cover of Microservices Patterns is captioned “Habit of a Morisco
Slave in 1568.” The illustration is taken from Thomas Jefferys’ A Collection of the Dresses
of Different Nations, Ancient and Modern (four volumes), London, published between
1757 and 1772. The title page states that these are hand-colored copperplate engrav-
ings, heightened with gum arabic.
Thomas Jefferys (1719–1771) was called “Geographer to King George III.” He was
an English cartographer who was the leading map supplier of his day. He engraved
and printed maps for government and other official bodies and produced a wide
range of commercial maps and atlases, especially of North America. His work as a map
maker sparked an interest in local dress customs of the lands he surveyed and
mapped, which are brilliantly displayed in this collection. Fascination with faraway
lands and travel for pleasure were relatively new phenomena in the late 18th century,
and collections such as this one were popular, introducing both the tourist as well as
the armchair traveler to the inhabitants of other countries.
The diversity of the drawings in Jefferys’ volumes speaks vividly of the uniqueness
and individuality of the world’s nations some 200 years ago. Dress codes have changed
since then, and the diversity by region and country, so rich at the time, has faded away.
It’s now often hard to tell the inhabitants of one continent from another. Perhaps, try-
ing to view it optimistically, we’ve traded a cultural and visual diversity for a more var-
ied personal life—or a more varied and interesting intellectual and technical life.

xxvi
ABOUT THE COVER ILLUSTRATION xxvii

At a time when it’s difficult to tell one computer book from another, Manning cel-
ebrates the inventiveness and initiative of the computer business with book covers
based on the rich diversity of regional life of two centuries ago, brought back to life by
Jeffreys’ pictures.
Other documents randomly have
different content
and comfort.

At length, in the second year after they came out of Egypt, they reached the wilderness of
Paran. And now God told Moses to take one chief man out of each of the twelve tribes of
Israel, and he was to send them into the land of Canaan to bring back a report of what
they found there.

There were twelve men chosen, but of these only two, Caleb and Joshua, were faithful to
God all through.

The twelve men set out, and at the end of forty days they returned with their report of all
they had seen.

They brought with them pomegranates and figs; and the grapes were so plentiful, that
from one place called Eshcol they brought a bunch which required two men to carry it on a
pole between them.

For God had promised when they left Egypt, that He would bring them to a land flowing
with milk and honey, and that He would drive out all their enemies before them.

If only they had remembered this!

So the messengers began to tell their tale. They said that indeed it was a rich land, flowing
with milk and honey. "And see," said they, "here is some of the fruit of it."

You can imagine for yourselves how Caleb and Joshua stood by, listening to the eager
words of the other ten.

And now came another word, which made those two faithful men tremble—and it was an
unbelieving, faithless word!

"Nevertheless," the ten spies went on, "the cities are walled, there are giants there, and
numbers of enemies dwell on every side; we are not able to go up against the people, for
they are stronger than we are!"

Then you can imagine Caleb and Joshua starting forward to still the people, and they cried:
"Let us go up at once and possess the land, for we are well able to overcome it!"

But the ten spies persisted that they could not go up, and all the people mourned and
wept, and told Moses that they had better return to Egypt, for they would die in the
wilderness, and their wives and their children would be a prey for their enemies.

Oh, how sad is want of faith! They forgot the power of God and the promises of God! They
let Satan whisper in their hearts that, after all, God would fail them, and though the land
was beautiful and full of food and plenty—"Nevertheless" there were too many enemies to
face.

God was very grieved at the unbelief of the people, and He said that none of those who
had distrusted Him should enter into the land of Canaan, but their children should in due
time enter in and possess it.

This is a solemn lesson for us all. There are right times to say "Nevertheless."
Peter said to Jesus: "Nevertheless at Thy word I will let down the net," and they got a
great draught of fishes!

Paul said: Nevertheless the Lord stood by me, "and strengthened me," and he fought a
good fight to the end!

God did not forget the faithfulness of Caleb and Joshua; for Joshua was chosen, years
afterwards, to lead the people into the land and to fight the Lord's battles; and Caleb,
"because he had wholly followed the Lord," entered with his children into the Promised
Land, and had a happy possession in it.

It was true of them both: "None of them that trust in Him shall be desolate."

IX. MOSES HIDDEN IN THE CLEFT OF THE ROCK


EXODUS 33.17-23

FOR forty years, Moses, the little boy who had been taken out of the water by Pharaoh's
daughter, was brought up in Pharaoh's Palace in Egypt, where he learned the wisdom of
the Egyptians, and was mighty in word and deed.

He evidently knew that he belonged to the Israelites or Hebrews, as they were called; but
it was not till he had reached forty years of age that he began to look upon the sad plight
of his own people.

The Egyptians had gradually made the Hebrews into slaves, and were using them with
great cruelty; but at length Moses understood that God was going to deliver the people by
his hand.
However, the first effort he made, was that he killed an Egyptian who was hurting a
Hebrew man; and this came to the ears of Pharaoh, and he was so angry that Moses fled
away, and never stopped till he reached the land of Midian.

Here he remained for another forty years. He married a wife and had two sons, and he
tended the flocks of his father-in-law, and lived a very peaceful life.

But one day God came down and spoke to him. He told Moses that in Egypt, the condition
of God's people was getting worse and worse, and that He had chosen Moses to be their
deliverer.

God said that He would go with him, and help him through; and promised that they should
all serve God on this very Mountain in Horeb, where God was now speaking to him.

It would take too long to tell you all the wonders that God had to do to set His people free
from their bondage; but at length they escaped from Egypt—every one of them—they
went through the Red Sea on dry land, because God kept back the water on each side of
them; and as they passed in to the dry pathway God had made for them, He took His Pillar
of Cloud, which used to lead them, and He put it behind them, so that it was between
them and their enemies. And it was a cloud of darkness to the Egyptians, but it was a
bright light to the Israelites, all night.

When they had passed over, God took the cloud away, and the Egyptians followed through
the Sea, but God let the waters go back on Pharaoh and his host, and they were all
drowned in the sea, and the Israelites were all safe on the other side.

This is a glorious lesson for us, to show us how God will conquer our great enemy, Satan,
and will bring us safely through, if we trust Him.

When the Children of Israel came to Horeb, God called Moses up on the Mountain to
receive His Commandments, and to listen to all that God wished him to do; but the people
began to get restless and disobedient.

Moses had been on the Mountain for forty days, and they said to Aaron, the brother of
Moses, who was the High Priest, "Up! Make us gods, which shall go before us, for as for
this Moses we know not what is become of him!"

Then Aaron made a Golden Calf for them to worship!

When Moses came down from talking with God, and found what had happened, he threw
the slabs of stone on which God had written His law, over the edge of a precipice, and they
were broken in pieces beneath the mountain.

The Lord was very grieved and angry at the disobedience of the people. And Moses
besought the Lord to forgive them; and he even asked God to blot his name out of the
Book where He had written it, sooner than that the whole Congregation should perish.

And God heard his prayer for the forgiveness of the people, and told Moses to go forward
and lead them to the Land. And God said, "My Presence shall go with thee, and I will give
thee rest."

Now Moses loved God very much, and he answered the Lord, "If Thy Presence go not with
me, carry us not up hence, for wherein shall it be known here, that I and Thy people have
found grace in Thy sight? Is it not in that Thou goest with us?"

And the Lord said unto Moses, "I will do this thing also that thou hast spoken."
And then Moses, emboldened by God's wonderful kindness in answering his prayer, made a
yet further request. "I beseech Thee, show me Thy Glory!" he said.

And the Lord promised to shew Moses all His Goodness, and all His Mercy; but God told
him he could not see His face, for the Glory of it would be too much. The Lord pointed out
a place on the mountainside where there was a clift, or cleft, in a rock, and He told Moses
he might stand within that cleft, and God would put His hand over him, so that the glory of
His face should not be seen.

So Moses hastened into that cleft of the rock, and the Glory of the Lord passed by, and
after He had passed by, Moses was allowed to see His back, but His face might not be
seen.

It is a wonderful story; and I think it should dwell in our hearts, that the Holiness of God is
great beyond what any words of ours can picture.

There is a prayer of the Lord Jesus in the Gospel of John, which is very comforting when
we think with solemn awe about the Holiness of God.

"Father I will that they also, whom Thou hast given me, be with me where I am: that they
may behold my glory, which Thou hast given me; for Thou lovedst me before the
foundation of the world."

God gave His own beloved Son, Jesus our Lord, to wash away our sins, and make us fit to
see his Glory by and bye.

And in the Book of the Revelation we are told, that in Heaven, God's servants shall serve
Him, and they shall see His face.
MOSES SEES THE GLORY OF GOD.

X. AARON'S ROD THAT BUDDED


NUMBERS 16 AND 17

BEFORE we begin to talk about the pleasant happy story of Aaron's Rod, and how it came
out into buds and flowers, there is a very dark and sorrowful story which we must think of
first.

The Lord told Moses to make a beautiful Tabernacle or Tent, where He would speak to him
face to face; and He appointed the different Tribes to pitch their tents round it.

God choose Aaron, the elder brother of Moses, to be the High Priest. Aaron was the head
of the tribe of Levi, and his family were the only ones who were allowed to approach God
in the offerings which were to be presented for sin; and to offer the sweet Incense on the
Golden Altar of Incense, which was in the Holy Place in the Tabernacle.

God said this Incense was to be made in a special way, and no one was to make any like it.
And the Lord warns the people that "the stranger that cometh nigh shall be put to death."

Even Aaron's two elder sons, Nadab and Abihu, died before the Lord in the wilderness of
Sinai, when they took their censers, "and put fire therein, and put incense thereon, and
offered strange fire before the Lord, which he commanded them not."

These things were well known, and understood by the Israelites; but so evil are men's
hearts and so easily excited to jealousy, that three men named Korah, Dathan and Abiram,
gathered together a number of the Princes of the Congregation, and came to Moses and
Aaron with complaints, that Moses and Aaron were taking too much upon themselves, and
that all the Congregation were equally fit to draw near to God, and to do those parts of the
Holy Service, which God had appointed that only Aaron and his sons should do.

Moses was dreadfully grieved, and he fell on his face in bitter sorrow.

Then he told Korah and the Princes that they were to present themselves at the door of
the Tabernacle on the following day.

The earth opened her mouth, and swallowed up Dathan and Abiram.
He said to them, "This do: Take you censers, Korah and all his company, and put fire
therein, and put incense in them before the Lord to-morrow."

But Moses warned them that the Lord would choose who was holy, and who should draw
near to Him.

Korah and his company would not heed the warning. They had time to think over and
repent of their sin, for the Lord is a God ready to pardon. But they went on in their proud
arrogance, and oh! to what a dreadful end it led them.

So the next day Korah gathered all the Congregation together against Moses and Aaron, at
the door of the Tabernacle. But Dathan and Abiram, who specially strove against the
authority of Moses, would not come up, but remained in their tents.

Then the Lord told Moses and Aaron to separate themselves quickly from the Congregation
that He might consume them all in His anger.

But once more Moses and Aaron fell on their faces, and interceded with the Lord for those
people who had not joined in the rebellion; and the Lord heard their prayer, and told Moses
to send the people to a distance, lest they should be consumed in the sins of these
rebellious men.

So the people fled from round about the tents of Korah, Dathan, and Abiram.

And then God sent an earthquake, and the Earth opened her mouth, and swallowed up
Dathan and Abiram, and their families and their tents.

And as the Congregation fled still further from the awful cry of them, a fire came out from
the Lord, and destroyed Korah, and the two hundred and fifty Princes, who had offered
Incense.

It is an awful thing to risk God's punishment.

This is a very, very sad story; but it is written down in the Bible, to show that we must
obey God's commands, and seek Him in the way He has provided.

In the Old Testament times, the way to approach God was by the Priests whom God had
appointed to present the Offerings for sin, and to burn the Incense; but now, since God
sent His dear Son, Jesus Christ, to make atonement for our sins, Jesus is the Way to God.
He is "the Lamb of God which taketh away the sin of the world."

After all these dreadful things happened, the Lord spoke to Moses again. God told him that
each of the Princes at the head of the Twelve Tribes, was to bring a rod, with his name
clearly marked on it, and Moses was to take the twelve rods and place them in the
Tabernacle before the Ark of the Testimony.

Aaron the High Priest was the head of the Tribe of Levi, and his rod, with his name on it,
was to be sent in with the others.

And God said, "The man's rod whom I shall choose, shall blossom; and I will make to
cease the murmurings of the Children of Israel, whereby they murmur against you."

Moses did this, and went in on the morrow to look at the rods; and "behold the rod of
Aaron, for the house of Levi, was budded, and brought forth buds, and bloomed blossoms,
and yielded Almonds."

AARON'S ROD THAT BUDDED.

Then Moses carried all the rods out for the children of Israel to see, and the Lord said,
"Bring Aaron's rod again before the Testimony, to be kept for a token against the rebels;
and thou shalt quite take away their murmurings from me, that they die not."
XI. TO THE CITY OF REFUGE

WEARY and spent, the man ran; traversing the hot desert roads in the daytime; and
hurrying on through the night if perchance there were a moon or stars to guide him; or
else crouching in some corner behind some rock, till daylight enabled him to hurry forward
once more!

Why was the man running over the ground at his topmost speed? Was he carrying a
message, or bringing bad news, or what could it be?

No, he was hurrying to a place of safety!

But why? you may ask. Was he being pursued, or what was it?

Yes, he was being pursued by a man who was called "The Avenger of blood."

For God's law was, that a man who had hated his neighbour and had planned to kill him
and had carried out his purpose should surely be put to death.

So if any one was killed among the Children of Israel, at once "the Avenger of blood"
hurried to the spot and seized the murderer, who was then examined before the priests
and the judges; and witnesses were called to give evidence as to whether the prisoner had
intended to kill his neighbour, so that the judges might decide whether he were guilty or
not. God's law made it necessary that there should be more than one witness before a
man could be condemned.

But if a death were caused by an accident, God provided a way of escape for the
manslayer, and it is this way of escape that I am going to tell you about.

When the Children of Israel had wandered in the wilderness for forty years—for their
murmuring and disobedience, as God had said—they came at length to the land of
Canaan; and here God told Moses to divide the land among the different tribes, and
instructed him to separate Six Cities in different parts of the land, three on one side of the
River Jordan, and three on the other side.

These six cities were to be called "cities of refuge," and God told Moses to make good
roads leading to them, so that if any one killed a man by accident or at unawares, he
might flee to one of those six cities, at his utmost speed, and not lose his way in his haste;
for when once there, he would be sheltered, and in safety, so that the Avenger of blood
might not catch him and kill him.

You will find in the 19th chapter of Deuteronomy the wonderful directions which God gave
Moses about these cities.

God said, that any one who killed his neighbour ignorantly, and had not intended to hurt
him, might flee to the city of refuge, and be safe.

If a man and his neighbour went into a wood to cut down a tree, and the axe-head of one
of them flew off and struck the other man, so that he died, then the manslayer as he was
called could flee to one of those cities, and live! Or if a man let a stone fall upon his
neighbour by accident, and it killed him, he could flee to the city of refuge, and live!
For when once there, he would be sheltered and in safety.

As soon as he entered the city of refuge, the elders of the city came forward and inquired
into the circumstances which had made him fly there; and so soon as they were satisfied
that the death of his neighbour was an accident, and that he was not worthy of death, they
made him welcome to their city, and henceforward the city of refuge was to be his shelter.

But if any man hated his neighbour, and laid in wait for him, and rose up against him, and
smote him mortally, so that he died, and were to flee into one of these cities, then the
elders of his city should send and fetch him from there, and deliver him unto the hand of
the Avenger of blood that he should die. These were the rules which God made.

The man who hurried to that city of refuge knew in his own heart whether he was guilty or
not; and if he knew that it was an accident which had happened, then when he reached
the city how gladly did he pass the gate, and get safely inside!

You can imagine how he sank down breathless and faint within that portal, and how
thankful he was in his own heart that God had provided a way of escape for him!

In this city of refuge, he must stay; nor was he free to leave it for a single moment, till the
death of the High Priest who might be living in those days. It might be many years, or it
might be only a short time; but whether long or short there was no safety for him outside
those walls. If he ventured out, if the Avenger should meet him, he would certainly be
killed.
And it seems to me that there are one or two lessons which we may learn from this story,
which God has written for our learning.

May we not think of Jesus Christ our Saviour as our City of Refuge?

And if He is, shall we not, beneath the Sheltering Walls of His Salvation, be at rest from all
our fears?

We read, in the 6th of Hebrews: "That . . . we might have a strong consolation, who have
fled for refuge to lay hold upon the hope set before us."

That man, running from the Avenger, wanted life!

And if we fly to Jesus Christ to get life, we find that He, Himself, is the Way—the plainly
marked, loving path to safety.

He is the Truth, for His promises are faithful.

He is the Life, for there is no eternal life apart from Him.

How tenderly He says to us: "Come unto Me, all ye that labour and are heavy laden, and I
will give you Rest."

XII. THE LETTER THAT WAS LAID BEFORE THE LORD,


AND THE LORD'S ANSWER

HEZEKIAH, King of Judah, did that which was right in the sight of the Lord. He trusted in
the Lord God of Israel; so that after him was none like him among all the Kings of Judah,
nor any that were before him.
Immediately after he came to the throne, he destroyed all the high places where the
people had worshipped false gods, and he broke their images; and he followed the
commandments of the Lord with all his heart.

And the Lord was with him, and he prospered in all he set his hand to.

He defeated the Philistines, and rebelled against the yoke of the King of Assyria, and
refused to serve him.

Meanwhile, however, Hoshea, who was then King of Israel, was very much harassed by the
Assyrians, and God permitted them to come into the land of Israel and besiege Samaria
for three years. They took it, and carried numbers of captives into the land of Assyria,
because His people had transgressed His commandments.

The Assyrians, having gained these victories, turned their attention to the land of Judah,
over which the good King Hezekiah reigned, and they fought against and took some of the
fenced cities.

Then Hezekiah sent a present to the King of Assyria, hoping to bribe him not to pursue the
war any further.

To make this payment Hezekiah cut off the gold from the doors of the Temple of the Lord,
and sent all the money that was in the Treasury.

But the riches which were known to belong to the Kings of Judah and Israel were an
immense attraction to their enemies: so that instead of turning back, the King of Assyria
sent his greatest generals with a host of soldiers to surround Jerusalem and besiege it.

When they reached the conduit of the upper pool, which supplied water to the city,
Rabshakeh called to King Hezekiah to come out to them.

Then Hilkiah, and Shebna, and Joah came forward to hear what Rabshakeh had to say.

And Rabshakeh's first words were full of pride and threatening: "Thus saith the great King,
the King of Assyria, 'What confidence is this wherein thou trusteth? In whom dost thou
trust? If ye say, "We trust in the Lord our God," Hezekiah has broken down His altars and
told Judah they are to worship in Jerusalem!'

"Now therefore ... I will deliver thee two thousand horses, if thou canst on thy part put
riders upon them!"

Then Hezekiah's messengers begged Rabshakeh to speak in the Assyrian language, and
not in Hebrew, which the people understood.

But Rabshakeh was more insulting than ever; and told all who listened to him, that it was
vain for Hezekiah to say "The Lord will deliver you!" Sennacherib had conquered other
nations, and their gods had not delivered them! And the Lord would not deliver Jerusalem
out of his hand.

But Eliakim told the people not to answer a word. Then they returned to the king with their
clothes rent, and told him the words of Rabshakeh.

Then Hezekiah rent his clothes and put on sackcloth, and went up into the house of the
Lord, and sent his messengers to Isaiah the Prophet, saying that it was indeed a day of
trouble, and surely the Lord had heard the words of Rabshakeh.
But the Prophet Isaiah sent this message to Hezekiah: "Thus saith the Lord, Be not afraid
of the words which thou hast heard, with which the servants of the King of Assyria have
blasphemed Me. Behold, I will send a blast upon him, and he shall hear a rumour, and
shall return to his own land; and I will cause him to fall by the sword in his own land."

So Rabshakeh returned, and when he found fresh troubles in his own land, he sent a
message by letter to Hezekiah, saying they were not to rejoice that they had escaped their
enemy! For they would surely come and fight against them another time!

Then Hezekiah received the letter and read it, and carried it up into the House of the Lord
and spread it before the Lord. And he prayed to the Lord, and told Him it was quite true
that other nations had been defeated by the cruel King of Assyria, but they had not the
Lord God of Israel to trust in; and then he ended with these words: "O Lord our God, I
beseech Thee, save Thou us out of his hand, that all the kingdoms of the earth may know,
that Thou art the Lord God, and Thou only!"

And then the Lord gave His long glorious answer: "Thus saith the Lord concerning the King
of Assyria, He shall not come into this city, nor shoot an arrow there, nor come before it
with shield, nor cast a bank against it. By the way that he came, by the same shall he
return, and shall not come into this city, saith the Lord. For I will defend this city, to save
it, for Mine Own Sake, and for My servant David's sake."

"And it came to pass that night, that the angel of the Lord went out, and smote in the
camp of the Assyrians an hundred and eighty-five thousand men: and when they arose
early in the morning they were all dead corpses."

So Sennacherib, King of Assyria, departed and returned to Nineveh; and as he was


worshipping in the house of Nisroch, his god, his two sons smote him and killed him.

God's words had come true.


XIII. THE QUEEN OF SHEBA

WHEN David grew old, one of his sons, named Adonijah, exalted himself, to make himself
king instead of his father.

He conferred with Joab the captain and with Abiathar the priest, and it was arranged that
all the sons of the king should be invited to a great feast; but when the invitations were
given, it was found that he had not included his brother Solomon, nor Zadok the priest,
nor Benaiah the soldier, nor Nathan the prophet, who were all devoted friends of King
David.

So Nathan the prophet spoke to Bathsheba, the mother of Solomon, and begged her to go
to King David and tell him that Adonijah had set himself up as king; and to remind David
that he had promised her that he would give the kingdom to Solomon his son.

David was very much troubled with what Bathsheba and Nathan told him, and he solemnly
assured them that God had promised the throne to Solomon, and to no one else; and he
then sent for Zadok, and he told him and Nathan to anoint Solomon King over Israel at
once, and to blow with the trumpet and say, "Solomon is King!"

And he told them that Solomon was to ride on the king's own mule, and sit on the king's
throne.

So they took a horn of oil out of the Tabernacle and anointed Solomon. And they blew the
trumpet, and all the people said: "God save King Solomon!" And the people came up after
him, rejoicing with music and great joy, so that the earth rent with the sound of them.

Thus Solomon was established in his kingdom, and reigned over all Israel and Judah.

Now Solomon loved the Lord—and it says "the Lord loved Solomon."

One day he went up to the high place at Gibeon to sacrifice to the Lord there; and he
offered a thousand burnt offerings upon the altar. And the Lord appeared to Solomon in a
dream; and God said:
"Ask what I shall give thee!"

Then Solomon thanked God for the great kindness which He had shown David his father, in
giving him a son to sit on his throne; and acknowledged how David had walked before the
Lord in uprightness of heart. And then he added: "O Lord my God . . . I am but a little
child . . . give me therefore an understanding heart to judge Thy people; for who is able to
judge so great a people?"

And the Lord was pleased with Solomon's request, and He told him that because he had
asked this thing, and not asked for himself riches or honour or long life, God would grant
his prayer for an understanding heart, and would add besides riches and honour, so that
there should be no king like Solomon in all the world, nor ever would be again.

And then, after these gracious and wonderful assurances, the Lord God added this warning
—and it seems to me that the warning comes home to every one of us now: "If thou wilt
walk in My ways to keep My statutes and My commandments, as thy father David did walk,
then I will lengthen thy days."

Then Solomon awoke from his dream, and he came to Jerusalem and offered burnt
offerings unto the Lord there.

He at once set about ruling his kingdom and exercising the wonderful wisdom which God
had given him.

And this was why, when he had built cities and palaces, and gathered gold and silver and
spices in abundance; when he had been permitted to build a magnificent Temple for the
Lord, the Queen of Sheba heard of his fame, concerning the Name of the Lord, and
travelled many hundreds of miles from the south below Egypt, to prove Solomon with hard
questions and to see the glories of his kingdom.
She gave Solomon gold, and a very great store of spices.

And Solomon answered all her questions, and showed her all his work and his riches.
When she had seen the house he had built and the food daily spread on his table, and the
number of his servants, and the ascent which he had built to go up to the House of the
Lord, the queen seemed to have no more strength in her, and she exclaimed:

"It was a true report that I heard in mine own country, but the half was
not told me!"

"Happy are thy men, happy are these thy servants, which stand
continually before thee, and hear thy wisdom."

"Blessed be the Lord thy God, which delighteth in thee, to set thee on
the throne of Israel . . . to do judgment and justice."

And she gave King Solomon gold, and a very great store of spices and precious stones,
which she had brought on her camels from afar.

And Solomon gave her whatever she asked of him, besides the royal presents which, as a
great king, he bestowed upon her unasked.

There is a verse in Isaiah and another in the Psalms which I love to read, which seem to
remind us not only of the Queen of Sheba, but of that glorious day which is coming by and
by for those who are the children of God through faith in our Lord Jesus Christ:—

"For since the beginning of the world men have not heard, nor perceived by the ear,
neither hath the eye seen, O God, beside Thee, what He hath prepared for him that
waiteth for Him."

"Thou wilt show me the path of life; in Thy presence is fullness of joy: at Thy right hand
there are pleasures for evermore."
XIV. THREE COMMANDMENTS
ABOUT EARTHLY THINGS

V. "Honour thy father and thy mother: that thy days may be long upon the land which
the Lord thy God hath given thee."

OUR best and most beautiful example of this loving, dutiful obedience is given us in the
early days of our Lord's life on earth.

We read of it in the second chapter of Luke.

Jesus was twelve years old, and He knew that His Heavenly Father had given Him a great
work to do here in this world. One day in Jerusalem He had stayed in the Temple talking to
the learned Doctors of the Law, and Joseph and His mother missed Him from among the
company who were journeying homewards to Nazareth; and when they found Him in the
Temple, His mother said, "Thy father and I have sought Thee, sorrowing!"

And His gentle answer is a pattern to all of us: "Wist ye not—" (Did you not know)—"that I
must be about My Father's business?" He was reminding her then of God, Who had sent
Him, His only begotten Son, into the world to save sinners.

But with all that in His heart, the Bible goes on to tell us, "Jesus went down with them to
Nazareth, and was subject unto them." That means that He was perfectly obedient in His
earthly home.

Then we have the sweet example of Ruth the Moabitess.

Her husband was dead. But Ruth was devoted to her mother-in-law, and when Naomi
wished to return to the land of Israel, though all Ruth's friends lived in Moab, she
entreated to be allowed to take that long journey with Naomi, and to stay with her always.

And as you can read for yourselves in the Book of Ruth, she was wonderfully blessed
through her goodness to her mother-in-law. God watched her sweet and dutiful behaviour,
and He gave her the great honour of being one of the ancestors of King David, and then,
through him, of the Lord Jesus Christ, who was born at David's city, Bethlehem, thirteen
hundred years afterwards.

Thus the Commandment that contained a promise of blessing was fulfilled.

VI. "Thou shalt do no murder."

What is murder? It is hatred in the heart, cherished and unpardoned, unconfessed to God,
which ends in a cruel deed.

If we find in our own hearts an unforgiving spirit—a grudge against any one—a wish,
perhaps, to do them harm or pay them back—let us beware!
Our Lord says: "When ye stand praying, forgive, if ye have aught against any one!"

Now I am going to tell you about a murder, which was a very sad one.

David, as you know, loved God very much; but he had grown very rich and powerful, and
he had begun to value earthly things more than God's Commandments.

Uriah, in the forefront of the battle.

He wanted to get rid of one of his soldiers, who was at the war fighting for him. Why did
he want to get rid of him? Because David had taken from him something which that soldier
valued beyond all other things! I will tell you what that thing was afterwards.

So David told his great captain, Joab, to set this soldier, called Uriah, in the forefront of the
battle, and then to retire from him, so that he should get killed. So Joab, who was an
unscrupulous, untrustworthy man, did as the king commanded him. Then he sent back
word to David at Jerusalem about the great battle, and mentioned that Uriah was killed.

"But the thing that David had done displeased the Lord."

The precious possession which David had taken for himself, while Uriah was at the war,
was Uriah's dearly loved wife: and David had broken two of God's direct commands—one
was, "Thou shalt do no murder," the other was:

VII. "Thou shalt not commit adultery."

—Which is taking another man's wife away from him.


Then there came another messenger to David. Not from the battlefield, where Uriah lay
dead, but a message from God Himself, sent by the Prophet Nathan to the king.

And the Prophet told David this story: "There were two men in one city: one was rich, and
the other poor."

"The rich man had exceeding many flocks and herds: the poor man had only one little ewe
lamb, that he had brought up at home, and that played with his children and drank out of
his own cup."

"And a traveller came to see that rich man; and the rich man grudged to take any out of
his own flocks to feed the traveller, but took the poor man's ewe lamb!"

When David heard this story he was very angry with the rich man, and told Nathan he
ought to be punished.

And then Nathan said to the king: "Thou art the man!"

"Wherefore hast thou despised the commandment of the Lord, to do evil in His sight? Thou
hast killed Uriah with the sword, and hast taken his wife to be thy wife."

"Therefore the sword shall never depart from thy house."

Then David was dreadfully sorry. He saw his great sin in the sight of the Lord, and he
earnestly asked to be forgiven.

If you read the fifty-first Psalm you will see how sorry he was.

And the Lord did forgive him; but David had to bear the effects of his sin the whole of his
life afterwards.

XV. THREE COMMANDMENTS


ABOUT OUR HANDS—OUR TONGUES—AND OUR HEARTS
VIII. "Thou shalt not steal."

PERHAPS you draw back, and say, "Steal! Surely no one would think I would steal!"

But when we come to think it over, there are a good many ways of stealing; or being
tempted to steal. There are little unfairnesses that many practise, without in the least
realizing that they lead to dishonesty. A boy who cheats over his lessons goes very near
the mark! A girl who borrows from her class-mate a sixpence to buy a hair ribbon, and
does not return it, goes very near the mark too!

Satan is so wary, and we are so un-wary!

I heard of a dear, good woman the other day.

She had a very hard life to make both ends meet. And one day, the person who was
lodging with her left her purse on the table.

The woman would never have thought of opening the purse and taking out her neighbour's
money! Oh no!

Satan was too wary to suggest that!

The dear woman went to move the purse to a place of safety, and it was very full of
money, and fell open, and the contents in a moment lay scattered on the floor: shillings,
sixpences, half-crowns!

Then Satan saw his opportunity. As the dear woman stooped to gather the money, the
thought crossed her heart: "She would never miss one of these coins! And I do need them
so—"

And then the dreadfulness of the temptation came upon her, and she fell on her knees.

"Dear Lord, forgive me!" she murmured, and hurried to gather up the money, and to
restore the purse to its owner. God had helped her to be brave!

What made Judas betray his Lord?

Was it not that he was a thief, and had the bag, and carried about with him what was in it?

He thought if the chief priests would give him those thirty pieces of silver, he would be a
rich man all his days instead of a poor man!

Did he ever enjoy those thirty pieces of silver?

There was a boy I heard of lately, who was tempted: and he took an orange from a
greengrocer's shop. But his heart smote him; and that evening he wrote this letter to the
greengrocer's wife in a round, boyish hand:—

"Dear Madam,—I am very sorry for stealing an orange from you


yesterday, while in your shop. I must apologize as I am a Christian, but
was tempted."

Signed . . .
"I enclose a penny stamp for the cost of same."

That confession must have cost that boy a great deal to do! But he was "more than
conqueror through Him who loved him!"

IX. "Thou shalt not bear false witness against thy neighbour."

How did the wicked queen Jezebel manage to get Naboth's vineyard for her husband? It
was by means of false witnesses!

She sent letters sealed with the king's seal to the nobles and elders who were in the city
where Naboth lived, and ordered them to proclaim a fast, to set him up on high where all
the people could see him, and to get two wicked men to give false witness against him, to
accuse him of blaspheming God and the king. Then he was to be carried out of the city and
stoned.

So the elders did as Jezebel told them, and poor Naboth, who had done no wrong, was
cruelly killed.

And now I am going to tell you the story of the sin which brought this about.

God said in His Tenth Commandment—

X. "Thou shall not covet thy neighbour's house, thou shall not covet thy neighbour's
wife, nor his manservant, nor his maidservant, nor his ox, nor his ass, nor anything that is
his."

Covetousness is one of the sins that hides deep in a man's heart, and if given way to may
spoil all his happiness.

King Ahab had a palace at Jezreel; and near to the palace was Naboth's vineyard, which
was his family possession.

As the king passed to and fro, he began to covet the vineyard of Naboth in order to make
himself a garden; and at length he asked Naboth to exchange his vineyard with him for
another better one, or offered to buy it from Naboth for money.

This seemed at first sight a reasonable offer; but Ahab knew perfectly well that no Jew
would sell his father's inheritance, and that he valued it almost like his own life.

So Naboth refused, and the king went back to his palace heavy and displeased, and went
and lay upon his bed and would not eat.

When Jezebel found out what was the matter, she begged Ahab to get up and eat; and she
promised that she would get the vineyard for him!

And this was how it came to pass that those false witnesses swore away Naboth's life!

When Ahab knew that Naboth was dead, he went down to take possession of the vineyard.
But the Lord sent this message to the king by Elijah, His Prophet—

"Thus saith the Lord: Hast thou killed, and also taken possession? Thus saith the Lord: In
the Place where dogs licked the blood of Naboth, shall dogs lick thy blood, even thine."

It is a very solemn thing to break God's commands. Shall we not pray, as we think of
them: "With my whole heart have I sought Thee: O let me not wander from Thy
Commandments!"

XVI. TAKEN FROM THE BROOK


I SAMUEL 17.12-52

A GREAT Giant had come out of the land of the Philistines to fight against the Israelites.
He was about 11 feet high-that is higher than a tall doorway, and no ordinary man could
attempt to fight with him, with any hope of victory, be he ever so brave.

This Giant, Goliath of Gath, appeared every day for forty days, defying the Armies of
Israel, and challenging them to send out a man to fight with him.

The Giant struck terror into the hearts of the Armies of Israel.

Now there was a youth named David, ruddy and beautiful, who was on the Mountains of
Palestine, tending his father's flocks.

As he sat watching the sheep, the Holy Spirit taught him many of the Psalms we all love,
such as, "The Lord is my Shepherd."

One day a lion came out of his lair and took a lamb of the flock, and David, knowing that
God was his strong Helper, went out after the lion, and smote him and got the lamb out of
his mouth, and when the lion turned on him, David caught him by the beard and killed
him. And a bear came in the same way, and he killed him too.

One day David's father, Jesse, sent him to see how his brothers, who were at the war,
were getting on; and when he reached the Camp, the first thing that he heard was the
news of this dreadful Giant, who was defying the Israelites every morning and every
evening.

And David said, "Who is this heathen Philistine, that he should defy the Armies of the
Living God?"

David's eldest brother was angry with him for what he said; but David's words were heard
by the other soldiers, and they repeated them to King Saul.

And Saul sent for him, and when David came into his presence, he said to the King, "Let
no man's heart fail him because of the Giant, I will go and fight with him!"
The giant struck terror into the hearts of the armies of Israel.

But Saul looked at David and said, "You are not able to fight with the Giant."

Then David told the King about the lion and bear, and he said, "The Lord that delivered me
out of the paw of the lion, and out of the paw of the bear, He will deliver me out of the
hand of this Philistine."

So Saul agreed to his going, and put some armour on him; but David told the King he
could not go with these, for he was not used to armour.

Then David took his staff in his hand, and went to the brook and chose out five smooth
stones, and he put them in his shepherd's bag that hung at his side.

Before we go on to what David did with those stones, there are two or three interesting
things in this story which we shall do well to notice; for they will be, if we think of them, a
great help to us in our own lives.

We all have, like David, a tremendous enemy to face. This is Satan; and he comes to us
every day, like the Giant Goliath, and he tries to make us afraid. He wants us to live
without thinking about God; he wants us to forget that there is a great Helper for us in
every time of need.

But David truly loved God with his whole heart, and he was very brave; but it was in God's
strength that he had determined to meet the Giant.

So he went to the brook, and chose some of the smooth stones that he was accustomed to
use.

It was a very simple weapon; and doubtless he had often practised slinging stones, as he
sat watching his sheep, and knew how to aim well.
And, if we want to conquer Satan when he tempts us to do wrong, we must take the
weapon God has given us to use—which is His own word. Just say, "Lord, help me!" or
"Lord, save me!" and Satan will be driven away.

I shall never forget being called to comfort a dear dying girl, who was much worried by
Satan's suggestions. I stood by her bedside and quietly repeated these words of God to
her, from Isaiah 59.19: "When the enemy shall come in like a flood, the Spirit of the Lord
shall lift up a standard against him."

In a moment the cloud of sorrow and fear passed from her face; and God never let Satan
worry her again!

So you will find God's words will be just like David's smooth stones, when he went up to
meet the Giant!

DAVID GOES TO MEET GOLIATH.

And Goliath said, "Am I a dog that thou comest to me with staves? Come to me, and I will
give thy flesh to the fowls of the air, and to the beasts of the field!"

Then David answered, "Thou comest to me with a sword and with a shield, but I come to
thee in the Name of the Lord of hosts, the God of the armies of Israel whom thou hast
defied. This day will the Lord deliver thee into my hand . . . and I will smite thee, and take
thy head from thee. For the battle is the Lord's."
So, as the Giant came forward towards David, David ran to meet him, and put his hand
into his bag and took a stone, and slang it, and it hit the Giant on his forehead, so that he
sank down on the ground on his face. Then David ran, and took Goliath's own sword, and
cut off his head with it.

And when the Philistines saw that their Champion was dead, they fled, and the Israelites
followed after them and the Victory was won.

XVII. THE FIRST AND SECOND COMMANDMENTS:


AND HOW THEY WERE BROKEN

"I am the Lord thy God, Which have brought thee out of the land of Egypt, out of the
house of bondage."

I. "Thou shalt have no other gods before Me."

II. "Thou shalt not make unto thee any graven image, or any likeness of any thing that
is in heaven above, or that is in the earth beneath, or that is in the water under the earth:
thou shalt not bow down thyself to them, nor serve them: for I the Lord thy God am a
jealous God."

THE Children of Israel had left Egypt. God had brought them out with a strong hand. They
had left their enemies the Egyptians, some of them dead in their houses, for all the
firstborn were dead; and some of them overwhelmed in the Red Sea, where they had
attempted to follow the Israelites, for whom God had made a way on dry ground, through
the midst of the waters.

And now God had led them about in the wilderness, for they were obstinate and
disobedient, and He could not let them go into the Promised Land of Blessing, because
their hearts were too hard to learn His great lessons.
In the third month after leaving Egypt, they came into the wilderness of Sinai, and the
whole congregation camped before the mount.

Then God called Moses to come to Him to the top of the mountain; and here God spoke to
him, and sent him down to repeat to the congregation all the words which He had told
him.

And God told Moses that it was a very solemn thing for Him to speak in their hearing, so
they were to set bounds round the mount, that no one should come too close.

God said that He would come to Moses in a thick cloud; but that the people should hear
His Voice when He spoke, and should believe Moses for ever.

While God was telling Moses all these Commandments, on the top of the mountain, there
were thunderings and lightnings, and the voice of a trumpet exceeding loud, so that all the
people in the camp trembled.

Mount Sinai was covered with smoke, because the Lord Jehovah descended upon it in fire;
and even the mountain trembled at the Presence of the Holy God.

And this was the First Commandment—

"Thou shalt have no other gods before ME!"

Nothing else in the world nearer and dearer to us than God!

I heard the other day of a terribly injured soldier, who sent this message to one who had
written to sympathize in his great deprivation: "Don't pity me; the sacrifice has been worth
it; for I have found God!"

Oh! What it is to learn that!

Now we come to the Second Commandment—"Thou shalt not make unto thee any graven
image."
Moses cast down the two Tablets which God had written.

When the Children of Israel stood round that mount, and heard God say that, if they would
obey His voice, they should be a peculiar treasure to Him, they promised that they would
faithfully keep all that the Lord said.

But I am sorry to tell you that they soon forgot their promises, and did the very thing God
had told them not to do. And this was how it all happened.

Moses was up on the mount with God for forty days and forty nights, and God gave Moses
the two Tablets of stone, on which God Himself had written His Ten Commandments.

But forty days and forty nights seemed a long time to the thousands of people waiting
below on the plains; and they "gathered themselves together unto Aaron, and said, Up!
make us gods, which shall go before us; for as for this Moses, the man who brought us out
of the land of Egypt, we do not know what has become of him!"

Then Aaron bade them bring him gold from their ornaments, and he cast the gold into the
fire, and it melted down into a great piece of gold, which looked like a calf.

Aaron took a tool and moulded it, and the people said, "These be thy gods, O Israel, which
brought thee up out of the land of Egypt!"

Then they offered sacrifices to the golden calf, and feasted, and rose up to dance.

"And the Lord said unto Moses, Go, get thee down; for the people have turned aside
quickly out of the way that I commanded them. Now, therefore . . . let Me alone, that I
may consume them!"

But Moses besought the Lord most earnestly to turn from His anger, and asked Him to
remember His servants, Abraham, Isaac and Jacob; and begged Him to forgive the sin of
His people.
So Moses went down the mountain with God's Law in his hands. But when he and Joshua,
who was with him, saw from the mount what had happened, and that the people had
already broken God's two first commandments, Moses cast down the two Tablets which
God had written with His own Hand, and they fell beneath the mountain and were broken
to pieces.

And the Lord sent a sore punishment to the people who had sinned, and three thousand of
them died.

The next day Moses went up to the Lord again, and his words of entreaty are most
touching—

"Oh, this people have sinned a great sin, and have made them gods of gold. Yet now, if
Thou wilt forgive their sin—; and if not, blot me, I pray thee, out of Thy Book which Thou
hast written."

"And the Lord said unto Moses, Whosoever hath sinned against Me, him will I blot out of
My Book."

This is an awfully solemn story. We do not read that the people themselves repented—if
they had, the Holy God would have forgiven them out and out.

For He says in the 55th of Isaiah—

"Let him return unto the Lord, and He will have mercy upon him; and to our God, for He
will abundantly pardon."

XVIII. THE NEXT TWO COMMANDMENTS:


AND HOW THEY MAY BE KEPT
III. "Thou shalt not take the Name of the Lord My God in vain; for the Lord will not hold
him guiltless that taketh His Name in vain."

THINK of the name of the person whom you love the best in the world, and then think how
you would feel if you heard any one speak against that name. Would not you feel grieved?
Would you not turn away from the one who spoke against that loved name? And say: "I
cannot hear you speak like that—I love that name above any on earth."

Yes; if you think of it, you will see that it is so.

And if we feel so about an earthly love, and an earthly name, what ought we to feel about
that "Name which is above every name"?

No wonder God says in His Holy Law: "Thou shalt not take the Name of the Lord thy God in
vain!"

And our Lord, in the Prayer which He has told us all to use, says—

"Our Father, which art in Heaven, Hallowed be Thy Name!" It is the first request of that
wonderful prayer.

Do you see the baby boy in your home? He has hurt himself, or got into some difficulty. He
can just say one single word, and that word is the only name he knows; and you hear him
calling out in his distress, "Mother! Mother!" Over and over, till she comes running in, and
in a moment he is in her arms!

And this brings me to a text I am very very fond of: "The Name of the Lord is a Strong
Tower! The righteous runneth into it and is safe."

A few years ago a sister of mine was walking on a lonely road, and just as she was
crossing a railway bridge between two brick walls a man sprang out and seized her watch
and chain.

No one was in sight, and she knew she was utterly helpless, and that the man's strength
would soon wrench the watch away.

Then she bethought herself of the Name of Jesus! And she called to Him aloud, "Lord, help
me!"

In an instant the man relaxed his hold, dropped the watch and chain, and made off as fast
as he could, and she saw him no more! Surely to her the Name of the Lord had been a
strong tower, she had run into it and was safe!

And this is only one instance of very many that I have known, when the Holy Name of our
God, or of our dear Saviour, is all-powerful to help us in our greatest need.

If we hallow the Name of our God in our lives now, there will be a time when we shall see
His Face, and His Name shall be in our foreheads, as a token that we are His for ever.

And now we come to another thought, about another Commandment—

IV. "Remember the sabbath day to keep it holy. Six days shalt thou labour and do all
thy work: but the seventh day is the sabbath of the Lord thy God . . . For in six days the
Welcome to our website – the ideal destination for book lovers and
knowledge seekers. With a mission to inspire endlessly, we offer a
vast collection of books, ranging from classic literary works to
specialized publications, self-development books, and children's
literature. Each book is a new journey of discovery, expanding
knowledge and enriching the soul of the reade

Our website is not just a platform for buying books, but a bridge
connecting readers to the timeless values of culture and wisdom. With
an elegant, user-friendly interface and an intelligent search system,
we are committed to providing a quick and convenient shopping
experience. Additionally, our special promotions and home delivery
services ensure that you save time and fully enjoy the joy of reading.

Let us accompany you on the journey of exploring knowledge and


personal growth!

textbookfull.com

You might also like