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

Learn Microservices with Spring Boot 3: A Practical Approach Using Event-Driven Architecture, Cloud-Native Patterns, and Containerization 3rd Edition Moisés Macero García download

The document provides information about the book 'Learn Microservices with Spring Boot 3' by Moisés Macero García and Tarun Telang, which focuses on practical approaches to microservices using event-driven architecture and cloud-native patterns. It includes various chapters covering basic concepts, application setup, frontend development, and data layers. Additionally, it offers links to download the book and other related resources.

Uploaded by

vissiaixcajo38
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (1 vote)
262 views

Learn Microservices with Spring Boot 3: A Practical Approach Using Event-Driven Architecture, Cloud-Native Patterns, and Containerization 3rd Edition Moisés Macero García download

The document provides information about the book 'Learn Microservices with Spring Boot 3' by Moisés Macero García and Tarun Telang, which focuses on practical approaches to microservices using event-driven architecture and cloud-native patterns. It includes various chapters covering basic concepts, application setup, frontend development, and data layers. Additionally, it offers links to download the book and other related resources.

Uploaded by

vissiaixcajo38
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 40

Learn Microservices with Spring Boot 3: A

Practical Approach Using Event-Driven


Architecture, Cloud-Native Patterns, and
Containerization 3rd Edition Moisés Macero
García pdf download
https://ebookmeta.com/product/learn-microservices-with-spring-
boot-3-a-practical-approach-using-event-driven-architecture-
cloud-native-patterns-and-containerization-3rd-edition-moises-
macero-garcia-2/

Download more ebook from https://ebookmeta.com


We believe these products will be a great fit for you. Click
the link to download now, or visit ebookmeta.com
to discover even more!

Learn Microservices with Spring Boot 3: A Practical


Approach Using Event-Driven Architecture, Cloud-Native
Patterns, and Containerization 3rd Edition Moisés
Macero García
https://ebookmeta.com/product/learn-microservices-with-spring-
boot-3-a-practical-approach-using-event-driven-architecture-
cloud-native-patterns-and-containerization-3rd-edition-moises-
macero-garcia-2/

Learn Microservices with Spring Boot 3 Moises Macero


Garcia

https://ebookmeta.com/product/learn-microservices-with-spring-
boot-3-moises-macero-garcia/

Practical Event-Driven Microservices Architecture:


Building Sustainable and Highly Scalable Event-Driven
Microservices Oliveira Rocha

https://ebookmeta.com/product/practical-event-driven-
microservices-architecture-building-sustainable-and-highly-
scalable-event-driven-microservices-oliveira-rocha/

Portraits of Wittgenstein Ian Ground Editor F A Flowers


Iii Editor

https://ebookmeta.com/product/portraits-of-wittgenstein-ian-
ground-editor-f-a-flowers-iii-editor/
Implication 1st Edition Ray Clark

https://ebookmeta.com/product/implication-1st-edition-ray-clark/

The 15 Commitments of Conscious Leadership A New


Paradigm for Sustainable Success 1st Edition Jim
Dethmer Diana Chapman Kaley Klemp

https://ebookmeta.com/product/the-15-commitments-of-conscious-
leadership-a-new-paradigm-for-sustainable-success-1st-edition-
jim-dethmer-diana-chapman-kaley-klemp/

Analysis and Design of Geotechnical Structures First


Edition Manuel Matos Fernandes

https://ebookmeta.com/product/analysis-and-design-of-
geotechnical-structures-first-edition-manuel-matos-fernandes/

Decolonial Feminism in Abya Yala Caribbean Meso and


South American Contributions and Challenges 1st Edition
María Lugones

https://ebookmeta.com/product/decolonial-feminism-in-abya-yala-
caribbean-meso-and-south-american-contributions-and-
challenges-1st-edition-maria-lugones/

What Makes the Systems Engineer Successful? Various


Surveys Suggest An Answer 1st Edition Howard Eisner

https://ebookmeta.com/product/what-makes-the-systems-engineer-
successful-various-surveys-suggest-an-answer-1st-edition-howard-
eisner/
Psychoanalytic Investigations in Philosophy An
Interdisciplinary Exploration of Current Existential
Challenges 1st Edition Dorit Lemberger

https://ebookmeta.com/product/psychoanalytic-investigations-in-
philosophy-an-interdisciplinary-exploration-of-current-
existential-challenges-1st-edition-dorit-lemberger/
Learn Microservices
with Spring Boot 3
A Practical Approach Using Event-Driven
Architecture, Cloud-Native Patterns, and
Containerization

Third Edition

Moisés Macero García
Tarun Telang
Learn Microservices
with Spring Boot 3
A Practical Approach Using
Event-­Driven Architecture,
Cloud-Native Patterns,
and Containerization
Third Edition

Moisés Macero García


Tarun Telang
Learn Microservices with Spring Boot 3: A Practical Approach Using Event-Driven
Architecture, Cloud-Native Patterns, and Containerization, Third Edition
Moisés Macero García Tarun Telang
New York, NY, USA Hyderabad, Telangana, India

ISBN-13 (pbk): 978-1-4842-9756-8 ISBN-13 (electronic): 978-1-4842-9757-5


https://doi.org/10.1007/978-1-4842-9757-5

Copyright © 2023 by Moisés Macero García and Tarun Telang


This work is subject to copyright. All rights are reserved by the Publisher, whether the whole or part of the
material is concerned, specifically the rights of translation, reprinting, reuse of illustrations, recitation,
broadcasting, reproduction on microfilms or in any other physical way, and transmission or information
storage and retrieval, electronic adaptation, computer software, or by similar or dissimilar methodology now
known or hereafter developed.
Trademarked names, logos, and images may appear in this book. Rather than use a trademark symbol with
every occurrence of a trademarked name, logo, or image we use the names, logos, and images only in an
editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the
trademark.
The use in this publication of trade names, trademarks, service marks, and similar terms, even if they are not
identified as such, is not to be taken as an expression of opinion as to whether or not they are subject to
proprietary rights.
While the advice and information in this book are believed to be true and accurate at the date of publication,
neither the authors nor the editors nor the publisher can accept any legal responsibility for any errors or
omissions that may be made. The publisher makes no warranty, express or implied, with respect to the
material contained herein.
Managing Director, Apress Media LLC: Welmoed Spahr
Acquisitions Editor: Melissa Duffy
Development Editor: Laura Berendson
Coordinating Editor: Gryffin Winkler
Copy Editor: Kezia Endsley
Cover designed by eStudioCalamar
Cover image by Image by James DeMers on Pixabay (www.pixabay.com)
Distributed to the book trade worldwide by Apress Media, LLC, 1 New York Plaza, New York, NY 10004,
U.S.A. Phone 1-800-SPRINGER, fax (201) 348-4505, e-mail [email protected], or visit
www.springeronline.com. Apress Media, LLC is a California LLC and the sole member (owner) is Springer
Science + Business Media Finance Inc (SSBM Finance Inc). SSBM Finance Inc is a Delaware corporation.
For information on translations, please e-mail [email protected]; for reprint,
paperback, or audio rights, please e-mail [email protected].
Apress titles may be purchased in bulk for academic, corporate, or promotional use. eBook versions and
licenses are also available for most titles. For more information, reference our Print and eBook Bulk Sales
web page at http://www.apress.com/bulk-sales.
Any source code or other supplementary material referenced by the author in this book is available to
readers on GitHub (https://github.com/Apress). For more detailed information, please visit https://www.
apress.com/gp/services/source-code.
Paper in this product is recyclable
This book is dedicated to my grandparents, parents, wife Nikita, and
son Vihan. They have always been a source of inspiration and
encouragement to me. It’s also for all of the software and technology
creators who work hard to make our planet a better place to live.
—Tarun Telang
Table of Contents
About the Authors�������������������������������������������������������������������������������������������������� xiii

About the Technical Reviewer���������������������������������������������������������������������������������xv

Acknowledgments�������������������������������������������������������������������������������������������������xvii

About this Book������������������������������������������������������������������������������������������������������xix

Chapter 1: Setting the Scene������������������������������������������������������������������������������������ 1


Who Are You?�������������������������������������������������������������������������������������������������������������������������������� 3
How Is This Book Different from Other Books and Guides?���������������������������������������������������������� 5
Learning: An Incremental Process������������������������������������������������������������������������������������������� 5
Is This a Guide or a Book?������������������������������������������������������������������������������������������������������� 5
From Basics to Advanced Topics��������������������������������������������������������������������������������������������������� 6
Skeleton with Spring Boot, the Professional Way�������������������������������������������������������������������� 7
Test-Driven Development�������������������������������������������������������������������������������������������������������� 7
Microservices�������������������������������������������������������������������������������������������������������������������������� 7
Event-Driven Systems������������������������������������������������������������������������������������������������������������� 8
Nonfunctional Requirements��������������������������������������������������������������������������������������������������� 8
Online Content������������������������������������������������������������������������������������������������������������������������������ 9
Summary�������������������������������������������������������������������������������������������������������������������������������������� 9

Chapter 2: Basic Concepts�������������������������������������������������������������������������������������� 11


Spring����������������������������������������������������������������������������������������������������������������������������������������� 11
Spring Boot��������������������������������������������������������������������������������������������������������������������������������� 16
Lombok and Java������������������������������������������������������������������������������������������������������������������������ 18
Testing Basics����������������������������������������������������������������������������������������������������������������������������� 21
Test-Driven Development������������������������������������������������������������������������������������������������������ 21
Behavior-Driven Development����������������������������������������������������������������������������������������������� 22

v
Table of Contents

JUnit 5����������������������������������������������������������������������������������������������������������������������������������� 23
Mockito���������������������������������������������������������������������������������������������������������������������������������� 23
AssertJ���������������������������������������������������������������������������������������������������������������������������������� 27
Testing in Spring Boot����������������������������������������������������������������������������������������������������������������� 28
Logging��������������������������������������������������������������������������������������������������������������������������������������� 29
Summary and Achievements������������������������������������������������������������������������������������������������������ 30

Chapter 3: A Basic Spring Boot Application����������������������������������������������������������� 33


Setting Up the Development Environment���������������������������������������������������������������������������������� 34
Java Development Kit 17������������������������������������������������������������������������������������������������������� 34
Integrated Development Environment (IDE)��������������������������������������������������������������������������� 34
HTTPie����������������������������������������������������������������������������������������������������������������������������������� 35
POST Request������������������������������������������������������������������������������������������������������������������������ 36
cURL�������������������������������������������������������������������������������������������������������������������������������������� 36
The Skeleton Web App���������������������������������������������������������������������������������������������������������������� 36
Spring Boot Autoconfiguration���������������������������������������������������������������������������������������������������� 41
Three-Tier, Three-Layer Architecture������������������������������������������������������������������������������������������ 47
Modeling the Domain������������������������������������������������������������������������������������������������������������������ 50
Domain Definition and Domain-Driven Design���������������������������������������������������������������������� 50
Domain Classes��������������������������������������������������������������������������������������������������������������������� 52
Business Logic���������������������������������������������������������������������������������������������������������������������������� 55
What You Need���������������������������������������������������������������������������������������������������������������������� 55
Random Challenges��������������������������������������������������������������������������������������������������������������� 55
Attempt Verification��������������������������������������������������������������������������������������������������������������� 59
Presentation Layer���������������������������������������������������������������������������������������������������������������������� 64
REST�������������������������������������������������������������������������������������������������������������������������������������� 64
REST APIs with Spring Boot��������������������������������������������������������������������������������������������������� 65
Designing the APIs����������������������������������������������������������������������������������������������������������������� 66
Your First Controller��������������������������������������������������������������������������������������������������������������� 67
How Automatic Serialization Works��������������������������������������������������������������������������������������� 69
Testing Controllers with Spring Boot������������������������������������������������������������������������������������� 73
Summary and Achievements������������������������������������������������������������������������������������������������������ 86

vi
Table of Contents

Chapter 4: A Minimal Frontend with React������������������������������������������������������������� 89


A Quick Intro to React and Node������������������������������������������������������������������������������������������������� 90
Setting Up the Development Environment���������������������������������������������������������������������������������� 91
The React Skeleton��������������������������������������������������������������������������������������������������������������������� 92
A JavaScript Client���������������������������������������������������������������������������������������������������������������������� 94
The Challenge Component���������������������������������������������������������������������������������������������������������� 96
The Main Structure of a Component�������������������������������������������������������������������������������������� 99
Rendering���������������������������������������������������������������������������������������������������������������������������� 101
Integration with the App������������������������������������������������������������������������������������������������������ 104
Running the Frontend the First Time����������������������������������������������������������������������������������������� 105
Debugging��������������������������������������������������������������������������������������������������������������������������������� 105
Adding CORS Configuration to the Spring Boot App������������������������������������������������������������������ 107
Playing with the Application������������������������������������������������������������������������������������������������������ 108
Deploying the React App����������������������������������������������������������������������������������������������������������� 109
Summary and Achievements���������������������������������������������������������������������������������������������������� 112

Chapter 5: The Data Layer������������������������������������������������������������������������������������ 115


The Data Model������������������������������������������������������������������������������������������������������������������������� 117
Choosing a Database���������������������������������������������������������������������������������������������������������������� 119
SQL vs. NoSQL��������������������������������������������������������������������������������������������������������������������� 121
H2, Hibernate, and JPA�������������������������������������������������������������������������������������������������������� 122
Spring Boot Data JPA���������������������������������������������������������������������������������������������������������������� 123
Dependencies and Autoconfiguration���������������������������������������������������������������������������������� 123
Spring Boot Data JPA Technology Stack������������������������������������������������������������������������������ 128
Data Source (Auto)configuration����������������������������������������������������������������������������������������� 130
Entities�������������������������������������������������������������������������������������������������������������������������������������� 132
Repositories������������������������������������������������������������������������������������������������������������������������������ 137
Storing Users and Attempts������������������������������������������������������������������������������������������������������ 141
Displaying Last Attempts���������������������������������������������������������������������������������������������������������� 147
Service Layer����������������������������������������������������������������������������������������������������������������������� 147

vii
Table of Contents

Controller Layer������������������������������������������������������������������������������������������������������������������� 149


User Interface���������������������������������������������������������������������������������������������������������������������� 155
Playing with the New Feature��������������������������������������������������������������������������������������������������� 163
Summary and Achievements���������������������������������������������������������������������������������������������������� 165

Chapter 6: Starting with Microservices���������������������������������������������������������������� 169


The Small Monolith Approach��������������������������������������������������������������������������������������������������� 170
Why a Small Monolith?������������������������������������������������������������������������������������������������������������� 170
The Problems with Microservices from Day Zero���������������������������������������������������������������� 170
Small Monoliths Are for Small Teams���������������������������������������������������������������������������������� 171
Embracing Refactoring�������������������������������������������������������������������������������������������������������� 172
Planning the Small Monolith for a Future Split������������������������������������������������������������������������� 173
New Requirements and Gamification��������������������������������������������������������������������������������������� 174
Gamification: Points, Badges, and Leaderboards���������������������������������������������������������������� 175
Moving to Microservices����������������������������������������������������������������������������������������������������������� 176
Independent Workflows������������������������������������������������������������������������������������������������������� 177
Horizontal vs. Vertical Scalability���������������������������������������������������������������������������������������� 178
Fine-Grained Nonfunctional Requirements������������������������������������������������������������������������� 180
Other Advantages���������������������������������������������������������������������������������������������������������������� 180
Disadvantages��������������������������������������������������������������������������������������������������������������������� 181
Architecture Overview�������������������������������������������������������������������������������������������������������������� 183
Designing and Implementing the New Service������������������������������������������������������������������������� 185
Interfaces���������������������������������������������������������������������������������������������������������������������������� 186
The Spring Boot Skeleton for Gamification������������������������������������������������������������������������� 186
Domain�������������������������������������������������������������������������������������������������������������������������������� 187
Service�������������������������������������������������������������������������������������������������������������������������������� 192
Data������������������������������������������������������������������������������������������������������������������������������������� 204
Controller����������������������������������������������������������������������������������������������������������������������������� 207
Configuration����������������������������������������������������������������������������������������������������������������������� 209
Changes in Multiplication Microservice������������������������������������������������������������������������������ 211
UI����������������������������������������������������������������������������������������������������������������������������������������� 216
Playing with the System����������������������������������������������������������������������������������������������������������� 222

viii
Table of Contents

Fault Tolerance�������������������������������������������������������������������������������������������������������������������������� 224


The Challenges Ahead��������������������������������������������������������������������������������������������������������������� 226
Tight Coupling���������������������������������������������������������������������������������������������������������������������� 227
Synchronous Interfaces vs. Eventual Consistency�������������������������������������������������������������� 227
Transactions������������������������������������������������������������������������������������������������������������������������ 232
API Exposure������������������������������������������������������������������������������������������������������������������������ 234
Summary and Achievements���������������������������������������������������������������������������������������������������� 234

Chapter 7: Event-Driven Architectures����������������������������������������������������������������� 237


Core Concepts��������������������������������������������������������������������������������������������������������������������������� 238
The Message Broker������������������������������������������������������������������������������������������������������������ 238
Events and Messages���������������������������������������������������������������������������������������������������������� 242
Thinking in Events��������������������������������������������������������������������������������������������������������������� 242
Asynchronous Messaging���������������������������������������������������������������������������������������������������� 248
Reactive Systems���������������������������������������������������������������������������������������������������������������� 251
Pros and Cons of Going Event-Driven��������������������������������������������������������������������������������������� 252
Messaging Patterns������������������������������������������������������������������������������������������������������������������ 255
Publish-Subscribe��������������������������������������������������������������������������������������������������������������� 256
Work Queues����������������������������������������������������������������������������������������������������������������������� 256
Filtering������������������������������������������������������������������������������������������������������������������������������� 256
Data Durability��������������������������������������������������������������������������������������������������������������������� 256
Message Broker Protocols, Standards, and Tools��������������������������������������������������������������������� 257
AMQP and RabbitMQ����������������������������������������������������������������������������������������������������������������� 259
Overall Description�������������������������������������������������������������������������������������������������������������� 259
Exchange Types and Routing����������������������������������������������������������������������������������������������� 260
Message Acknowledgments and Rejection������������������������������������������������������������������������� 263
Setting Up RabbitMQ����������������������������������������������������������������������������������������������������������������� 264
Spring AMQP and Spring Boot�������������������������������������������������������������������������������������������������� 266
Solution Design������������������������������������������������������������������������������������������������������������������������� 266
Adding the AMQP Starter����������������������������������������������������������������������������������������������������� 269
Event Publishing from Multiplication����������������������������������������������������������������������������������� 270
Gamification as a Subscriber���������������������������������������������������������������������������������������������� 277

ix
Table of Contents

Analysis of Scenarios���������������������������������������������������������������������������������������������������������������� 286


Happy Flow�������������������������������������������������������������������������������������������������������������������������� 288
Gamification Becomes Unavailable������������������������������������������������������������������������������������� 296
The Message Broker Becomes Unavailable������������������������������������������������������������������������ 298
Transactionality������������������������������������������������������������������������������������������������������������������� 300
Scaling Up Microservices���������������������������������������������������������������������������������������������������� 303
Summary and Achievements���������������������������������������������������������������������������������������������������� 309

Chapter 8: Common Patterns in Microservice Architectures������������������������������� 313


Gateway������������������������������������������������������������������������������������������������������������������������������������ 314
Spring Cloud Gateway��������������������������������������������������������������������������������������������������������� 316
The Gateway Microservice�������������������������������������������������������������������������������������������������� 321
Changes in Other Projects��������������������������������������������������������������������������������������������������� 326
Running the Gateway Microservice������������������������������������������������������������������������������������� 327
Next Steps��������������������������������������������������������������������������������������������������������������������������� 329
Health���������������������������������������������������������������������������������������������������������������������������������������� 330
Spring Boot Actuator����������������������������������������������������������������������������������������������������������� 331
Including Actuator in Your Microservices���������������������������������������������������������������������������� 334
Service Discovery and Load Balancing������������������������������������������������������������������������������������� 337
Consul���������������������������������������������������������������������������������������������������������������������������������� 343
Spring Cloud Consul������������������������������������������������������������������������������������������������������������ 345
Spring Cloud Load Balancer������������������������������������������������������������������������������������������������ 354
Service Discovery and Load Balancing in the Gateway������������������������������������������������������� 358
Playing with Service Discovery and Load Balancing����������������������������������������������������������� 362
Configuration per Environment������������������������������������������������������������������������������������������������� 372
Configuration in Consul������������������������������������������������������������������������������������������������������� 375
Spring Cloud Consul Config������������������������������������������������������������������������������������������������� 376
Implementing Centralized Configuration����������������������������������������������������������������������������� 378
Centralized Configuration in Practice���������������������������������������������������������������������������������� 382

x
Table of Contents

Centralized Logs����������������������������������������������������������������������������������������������������������������������� 389


Log Aggregation Pattern������������������������������������������������������������������������������������������������������ 389
A Simple Solution for Log Centralization����������������������������������������������������������������������������� 391
Consuming Logs and Printing Them������������������������������������������������������������������������������������ 395
Distributed Tracing�������������������������������������������������������������������������������������������������������������������� 402
Spring Cloud Sleuth������������������������������������������������������������������������������������������������������������� 403
Implementing Distributed Tracing��������������������������������������������������������������������������������������� 405
Containerization������������������������������������������������������������������������������������������������������������������������ 407
Docker��������������������������������������������������������������������������������������������������������������������������������� 410
Spring Boot and Buildpacks������������������������������������������������������������������������������������������������ 413
Running Your System in Docker������������������������������������������������������������������������������������������ 415
Dockerizing Microservices�������������������������������������������������������������������������������������������������� 417
Dockerizing the UI��������������������������������������������������������������������������������������������������������������� 417
Dockerizing the Configuration Importer������������������������������������������������������������������������������ 418
Docker Compose����������������������������������������������������������������������������������������������������������������� 421
Scaling Up the System with Docker������������������������������������������������������������������������������������ 435
Sharing Docker Images������������������������������������������������������������������������������������������������������� 438
Platforms and Cloud-Native Microservices������������������������������������������������������������������������������� 442
Container Platforms������������������������������������������������������������������������������������������������������������� 442
Application Platforms���������������������������������������������������������������������������������������������������������� 444
Cloud Providers������������������������������������������������������������������������������������������������������������������� 444
Making a Decision��������������������������������������������������������������������������������������������������������������� 446
Cloud-Native Microservices������������������������������������������������������������������������������������������������ 447
Conclusions������������������������������������������������������������������������������������������������������������������������������� 447

Index��������������������������������������������������������������������������������������������������������������������� 451

xi
About the Authors
Moisés Macero García has been a software developer since he was a kid, when he
started playing around with BASIC on his ZX Spectrum. During his career, Moisés has
most often worked in development and architecture for small and large projects, and
for his own startups as well. He enjoys making software problems simple, and he likes
working in teams, where he can coach others as well as learn from them. Moisés is the
author of the blog thepracticaldeveloper.com, where he shares solutions to technical
challenges, guides, and his view on different ways of working in IT companies. He
also organizes workshops for companies that need a practical approach to software
engineering. In his free time, he enjoys traveling and hiking.

Tarun Telang is a seasoned and hands-on technologist


with a wealth of experience in designing and implementing
highly scalable software applications. With an impressive
career spanning over 18 years, Tarun has been a valuable
contributor to renowned companies such as Microsoft,
Oracle, Polycom, and SAP. He began his career as an
enterprise Java developer at SAP, where he honed his skills
in crafting distributed business applications tailored for
large enterprises. Through his dedication to continuous
learning and professional development, he became an
Oracle Certified Java Programmer and SAP Certified Development Consultant for
Enterprise Java.
As a prolific author, Tarun frequently writes on Java and related technologies, and he
has authored many books and online courses. His earlier books Java EE to Jakarta EE 10
Recipes, and Beginning cloud-native development using MicroProfile, Jakarta EE and
Kubernetes have been well-received by the tech community. He has also been a sought-
after speaker at developer conferences like SAP TechEd and the Great Indian Developer
Summit, sharing his technical expertise with enthusiastic audiences. Tarun regularly
shares technological insights at www.practicaldeveloper.com.

xiii
About the Authors

Tarun’s expertise lies in architecting and developing large scale applications, with a
particular focus on cloud-­native solutions using cutting-edge architectural patterns like
microservices and event-driven architecture. He has led the development of numerous
end-to-end cloud-based solutions, demonstrating his deep technical understanding to
deliver high-performing, reliable, large-scale applications.
An advocate of agile methodologies, Tarun excels at applying domain-driven design
and behavioral-driven development principles, ensuring seamless project management
and collaboration across cross-functional teams in different geographical locations. His
international experience, having worked in India, Canada and Germany, has enriched
his global perspective and ability to adapt to diverse environments. Tarun lives in
Hyderabad, India, and he enjoys spending time with his wife and child when he’s not
indulging in his love of technology. You can follow Tarun or contact him on his Twitter
account: @taruntelang.

xiv
About the Technical Reviewer
Manuel Jordan Elera is an autodidactic developer and
researcher who enjoys learning new technologies for his
own experiments and creating new integrations. Manuel
won the Springy Award 2013 Community Champion and
Spring Champion. In his little free time, he reads the Bible
and composes music on his guitar. Manuel is known as
dr_pompeii. He has tech-reviewed numerous books,
including Pro Spring MVC with WebFlux (Apress, 2020),
Pro Spring Boot 2 (Apress, 2019), Rapid Java Persistence
and Microservices (Apress, 2019), Java Language Features
(Apress, 2018), Spring Boot 2 Recipes (Apress, 2018), and Java APIs, Extensions and
Libraries (Apress, 2018). You can read his detailed tutorials on Spring technologies and
contact him through his blog at www.manueljordanelera.blogspot.com. You can follow
Manuel on his Twitter account, @­ dr_pompeii.

xv
Acknowledgments
I would like to thank my wife, Nikita, and son, Vihan, for their patience
and love throughout the process of writing this book. I am indebted to all
my mentors and friends who always encouraged me to keep growing in
every phase of my professional career.
I’d like to thank my parents for pushing me in the right direction with tech-
nology and always supporting me every step of the way, even when I decided
to do something completely different than they expected. It’s also important
to note that without them, I probably wouldn’t have become a developer
and had such a great career. Lastly, thanks again go out to my wife (and
soulmate), Nikita. It’s an incredible feeling to be with someone who keeps
you motivated and challenges you, not only professionally but personally
as well.

Thank you for always being there for me!


I’d like to send a special thanks to Manuel Jordan (the technical reviewer),
for their impeccable work on this book. I also greatly appreciate Mark
Powers, and everyone at Apress Media (apress.com) for their support in
getting this book published.
Last, but not least, I would like to thank you, the reader, for taking the time
to read this book. We have tried our best through this book to offer you a
comprehensive, up-to-date, and practical guide that empowers you to build
sophisticated and resilient microservices architectures using Spring Boot.
—Tarun Telang

xvii
Exploring the Variety of Random
Documents with Different Content
raisons d’ordre philosophique, légal, esthétique, sentimental ou
même hygiénique... Toutes sont fort respectables.
«Si l’on veut donner cette destination nationale à la cathédrale
de Reims, dit M. Aulard, il faudra, comme on dit, la désaffecter. On
ne pourra le faire que si les consciences catholiques y consentent.
Il ne faut pas que notre future victoire, par aucun de ses effets
puisse attrister aucune conscience française. Notre joie devra être
unanime.»
Et M. Aulard conclut en formulant un espoir qui est aussi le
nôtre: «Espérons que très spontanément et très librement, les
catholiques diront oui—à ce beau et national projet.»
Mais si sur ce point assez délicat, j’en conviens, les consciences
catholiques se montraient dogmatiquement irréductibles, ne
pourrait-on pas, sans porter une atteinte profonde à la grandeur du
projet initial, élever sur l’emplacement même où fut l’Archevêché,
tout à côté de la cathédrale, solidement consolidée et riche de ses
glorieuses blessures, le monument commémorant aux héros
inconnus morts pour la patrie, le Panthéon ossuaire, le tumulus
honorarius sous lequel, dans de cryptes profondes, reposeraient
pour l’éternité les ossements épars sur l’immensité du sol.
J’entends bien l’objection de M. Henri Lapauze: «Les ossuaires
seront constitués sur le champ de bataille. C’est bien le moins que
les restes de nos glorieux soldats attestent leur héroïsme, là où il se
manifesta.»
Sans doute, mais je me demande, avec une certaine anxiété, ce
que deviendront tous ces restes humains qui gisent aujourd’hui,
deçà delà, des bords de l’Yser aux forêts des Vosges, sous des
tertres hâtivement élevés, lorsque les socs impitoyables des plus
formidables charrues et les dents des herses perfectionnées auront
rétabli l’ordre dans le sol chaotique des batailles à travers les débris
de fer et les ossements confondus:

«Ayez pitié des morts des sauvages assauts,


«Pêle-mêle enfouis sous terre par monceaux.»
Et, puis, en admettant même qu’à l’aide de réglementations
municipales très sévères ces tertres mortuaires puissent être
préservés contre toute injure involontaire, quel spectacle de
désolations éternelles à travers nos campagnes de la Somme, de
l’Aisne, de la Marne, de la Meuse... que celui de ces ondulations
funèbres sur lesquelles le voile de l’oubli «double linceul des morts»
s’étendrait d’année en année. Les restes identifiés seraient ramenés
au pays natal et y reposeraient entourés des soins les plus pieux.
Quand au Panthéon ossuaire de Reims, il ne renfermerait lui, dans
ses cryptes profondes, véritables catacombes, dont l’hermétisme
calmerait les appréhensions hygiéniques de M. Louis Bonnier,
l’éminent architecte, que les restes des héros inconnus. Et, alors
même que ces souterrains ne serviraient d’éternel refuge qu’aux
pauvres restes dispersés seulement dans les plaines de la
Champagne, leur suprême destination suffirait à justifier le
pèlerinage dont parle l’auteur de la lettre anonyme citée plus haut
et qui, suivant la belle expression de la comtesse de Noailles,
deviendrait: «la fête de la douleur et de la gloire française».
Je vois déjà, vision poignante et sublime, se dérouler au milieu
du frisson des drapeaux, au bruit des marches funèbres ou
triomphales, le cortège immense des foules silencieuses, à l’ombre
même de la cathédrale mutilée, mais toujours debout comme une
éternelle protestation contre l’infamie des Barbares. Et cela dans la
plus noble des cités, dans la ville martyre, qui fut, pendant
l’interminable bataille, comme le cœur toujours saignant de la
patrie envahie. Aujourd’hui, plus que jamais, s’affirme le devoir d’en
faire le lieu sacré du pèlerinage annuel à la gloire des soldats du
peuple, des héros morts pour la patrie.
C’est une nouvelle cérémonie du sacre qui aura aussi sa
grandeur.
Et j’ose affirmer que bon nombre de projets de commémoration
patriotique déjà sur le chantier et dont la réalisation constituerait
un désastre artistique pour notre pays, projets pour la plupart
d’une conception très déconcertante s’évanouiraient à jamais, si le
principe de cette solennité annuelle d’une expression à la fois si
émouvante et si synthétique, d’un symbolisme si clair et si noble
était favorablement accueilli par l’opinion du pays et surtout par les
braves habitants de l’héroïque cité.
Je n’ignore pas que le vénérable archevêque de Reims s’élève
contre tout projet qui consisterait à s’opposer à la restauration de la
cathédrale. «Nous réparerons la cathédrale, a-t-il déclaré—cela il le
faut—nous avons les moulages de ses statues, les photographies
en couleurs de ses verrières..... Puis le jour viendra où les portes se
rouvriront pour l’exercice du culte, car je tiens, avant toute chose,
que la cathédrale où fut baptisé le premier roi chrétien, reste la
première église de France.»
Que Son Éminence me permette de lui faire observer qu’aux
yeux de l’humanité toute entière, la basilique de Reims est
aujourd’hui même, avec ses glorieuses mutilations, non seulement
la première église de France, mais encore la première église de la
Chrétienté. N’est-ce pas elle, en effet, que visait le geste
incendiaire de l’impérial iconoclaste lorsqu’il s’écriait dans un accès
de piétisme hypocrite: «Les églises catholiques du romanisme papal
dont on vous impose l’admiration excessive sont parfois des injures
au Tout-Puissant. Dieu y est injurieusement oublié au profit de
saints imaginaires, véritables idoles substituées à la divinité par la
superstition latine. Des maîtres allemands dignes de notre race ne
doivent pas décrire de telles églises sans s’élever avec indignation
contre les superstitions du romanisme...»
Il faut que la Ruine subsiste éternellement. Jamais, dans
l’histoire de l’humanité, symbole de protestation ne se dressa avec
une plus terrible éloquence contre les crimes des Barbares. Voilà
vraiment le grand monument du souvenir national.
«L’insulte, le crime ont placé une âme nouvelle dans le lieu
profané. La Ruine est et sera le Témoin devant l’humanité. Elle ne
doit pas plus être soignée et guérie, sous peine de perdre tout son
sens, qu’un Christ dont on fermerait les cinq plaies...[4]
«Oh! non, n’y touchez pas! s’écrie avec une véhémence
indignée, M. Antonin Mercié, l’illustre statuaire, l’auteur du Gloria
victis et du Quand même! quelques jours à peine avant sa mort.
Vous n’en avez pas le droit. Il ne faut pas la restaurer, voyez
l’horrible travail qu’on fait à Saint-Sulpice tous les Viollet le Duc—
ah! n’y touchez pas!»
Nous pourrions multiplier ici, les protestations, chaque jour plus
nombreuses, venues, de partout, s’ajouter à la nôtre, pressantes,
souvent très éloquentes. Mais la discussion désormais largement
ouverte sur ce sujet passionnant, est loin d’être close, car, comme
l’a si justement dit M. Jean de Bonnefon, «s’il faut haïr les
Vandales, il faut craindre les architectes».
Veillons...
Mais pourquoi, dès aujourd’hui, les opinions contradictoires ne
communieraient-elles pas dans le projet suivant, qui, nous semble-
t-il, est de nature à donner satisfaction à tous:—Aucune
restauration ne porterait atteinte à la majesté des ruines, mais une
ou plusieurs chapelles latérales seraient consacrées aux cérémonies
du culte, attestant ainsi la pérennité du caractère sacré de l’antique
basilique. La ville et le chapitre de Reims pourraient prendre
l’initiative de la construction d’une autre cathédrale. L’emplacement
serait facile à trouver—plus facile peut-être que l’architecte rêvé—et
les millions, on peut l’affirmer, afflueraient bien vite, de toutes les
parties du monde.
Voici une des dernières protestations en date. Il s’en dégage
une vive émotion. On sent que la pensée qui l’anime vient du plus
profond du cœur, et comme on peut en juger, cette pensée
s’exprime de bien jolie façon. Toutes nos cordiales félicitations au
brave petit sergent de la ligne, qui dans le périlleux
accomplissement de son âpre mission, au milieu des ruines
fumantes et des misères sans nom, sous la menace constante de la
mort et de l’anéantissement total, garde encore assez de sérénité
d’âme pour enseigner le devoir et rêver de l’éternelle beauté.

A. D.
Aux Armées.

Monsieur,

Laissez-moi vous dire combien l’initiative que vous avez


prise, au sujet de la Cathédrale de Reims, a intéressé les
soldats qui ont vécu à son ombre tourmentée, et qui, des
tranchées ou du cantonnement, chaque jour, au fond de
l’admirable plaine fauve où gît la cité meurtrie, apercevaient
les tours de l’église qui ne veut pas mourir.
Elle ne veut pas mourir parce que, n’en dût-il rester
qu’un chapiteau, à la volute de l’acanthe ou à l’enroulement
de la vigne s’accrochera la chaîne des souvenirs qui relie la
ferveur d’autrefois au réalisme sentimental d’aujourd’hui. Le
moindre de ses fleurons projettera dans l’avenir des rayons
comparables à ceux de n’importe quelle pierre arrachée aux
édifices qui sont les jalons de la pensée, de la civilisation ou
de la foi. Il me semble que tous vos correspondants sont
d’accord sur cette question de principe.
Vous vous êtes adressé à des artistes, à des érudits, à
des critiques. Vous serait-il agréable d’écouter un soldat? Un
soldat qui a compté, aux douloureux battements de son
cœur, les obus lancés sur la basilique, qui a, pendant près de
trois ans, entendu siffler la mitraille au-dessus de la ville, et
connu les nuits rouges durant lesquelles les quartiers
flambaient comme des torches? Cette ville, dont nous
occupions les faubourgs, est devenue un peu nôtre, nous
l’avons veillée à la lueur de la lune ou des incendies, nous
éprouvons pour elle le sentiment du bon infirmier pour son
malade; nous voudrions que notre protection continuât,
même lorsque le grand péril aura été écarté.
Or, la ville, c’est d’abord la Cathédrale, et il y a pour elle
un «autre danger», celui de la restauration. Je n’envisage
pas une restauration maladroite, meurtre déshonorant, mais
une restauration intègre.
J’admets le monument rebâti ou consolidé avec un soin
pieux, je suppose qu’il renaisse, double fidèle de sa
splendeur pacifique, ce ne sera jamais qu’un maquillage
indigne des blessures qu’il porte «comme des croix de
Guerre». Quand le temps aura étendu sa patine, armure de
l’oubli, sur les pansements de mortier et les onguents de
ciment, les historiographes auront recours, pour dénombrer
les plaies et insérer les désastres, aux archives
photographiques; mais la masse ira répétant, toutes haines
assouvies:
«On dit qu’en 1914, la Cathédrale fut brûlée pendant une
guerre avec l’Allemagne...»
Et ce sera tout...
M. Lenglet, maire de Reims, soucieux de la résurrection
de la cité, reproche à d’Annunzio s’écriant que «jamais la
Cathédrale n’a été plus belle», de parler en poète. Il veut un
programme d’action.
L’action d’une ruine est immense, la ruine prolonge dans
le temps une leçon historique et morale, un enseignement
philosophique insigne. Je garde vive l’impression produite
sur mon cerveau d’enfant par les vestiges de la Cour des
Comptes. Je ne peux entendre parler de guerre civile sans
voir, entre des maisons claires, le carré de verdure où
s’effritaient les murs calcinés. Aucun livre, aucun dessin,
aucun récit concernant la Commune, n’a exercé sur moi une
telle vigueur d’évocation.
Quelle ruine saurait être plus agissante que la Cathédrale
de Reims?
La conserver avec ses blessures! Mais le voilà le
programme d’action! Et quel programme! Éterniser aux yeux
de la postérité le spectacle de la destruction imbécile; confier
aux pierres la tâche de clamer à travers les âges le thrène de
la raison outragée! Peut-on espérer un plus farouche
anathème contre la guerre? Car il ne sera plus question, en
ces temps futurs, il faut l’espérer, des hordes incendiaires du
Kaiser. L’Allemagne se sera rachetée, sera rentrée dans la
Société des Nations, avec des penseurs, des poètes, des
artistes, dont les œuvres voileront les horreurs anciennes.
Songions-nous à Attila, en lisant Gœthe, avant la guerre?
Réprimer le désir de guerre sera la besogne que nous
léguerons à nos enfants, en mourant de la guerre.
L’Allemagne incarne depuis cinquante ans le satanisme
guerrier. Il est possible que ce satanisme s’empare, un jour,
d’un autre peuple. Aussi n’entourons pas la basilique de
canons allemands. Remplacés par d’autres engins, les
canons tomberont au rang des catapultes. Il ne faut pas
qu’on sourie devant la ruine. Une ceinture de canons
rapetisserait l’église qui doit dominer, non seulement notre
Guerre, mais toutes les Guerres.
Aussi, nous demandons qu’elle ne soit pas restaurée,
indépendamment des travaux nécessaires à sa conservation
(voûte, toiture, contreforts).
Qu’elle soit entretenue ainsi qu’une relique.
Qu’elle demeure le témoin du triomphe momentané, mais
toujours redoutable, de la passion belliqueuse.
Tel est le souhait formé par la plupart des soldats, depuis
celui qui conseille lourdement, en une sorte de respect
superstitieux: «Faut pas qu’on y touche», jusqu’à l’artiste qui
pâlit à l’idée que, peut-être, on «ravalerait» le Christ du
portail Nord, le Dieu de lumineuse beauté, dont un éclat
d’obus a balafré la joue droite.
Au long de nos tranchées, vous l’avez sans doute
constaté vous-même, lors de vos missions dans la zone de
guerre, a poussé, drue, une moisson de croix. Dans la fièvre
des premiers combats, on a creusé des tombes collectives.
Des héros anonymes y sont confondus. Parfois, sur le tertre,
un clairon, un képi, des lambeaux de vêtement: rien d’autre.
Que de berges de canaux et de rivières, que de talus de
chemins de fer et de routes, enferment des ossements dont
une baïonnette rouillée marque la place!
Le soldat de la Grande Guerre dort sur un cimetière. Il vit
avec la mort. Il en parle familièrement, comme d’un
camarade avec lequel il entreprendra la suprême étape. Il a
appris à la respecter sans la craindre. Dans la certitude que
sa formidable épreuve terrestre lui assurait l’immensité
paradisiaque, et grâce au voisinage des troupes indigènes, il
a accommodé le quia pulvis es des chrétiens et un doux
fatalisme oriental. Il se paganise sans le savoir. Il fait
l’impossible pour ne pas gêner le copain qui repose à deux
pas de lui sous une légère couche d’humus; il se prive de feu
pour donner un cercueil aux tués de la journée. Il fleurit les
tombes, y sème des graines de plantes rares. Demain, il
déposera des offrandes au pied des frêles sarcophages de
sapin.
Alors, quoi d’étonnant à ce qu’il accueille favorablement
la si noble pensée de consacrer aux morts éparpillés qui
grelottent dans les champs, le profond caveau de Reims?
Qu’importe la désaffection de l’église?
Le canon ne l’a-t-il pas consommée déjà?
Quelle conscience catholique protesterait contre la
réunion des cendres des soldats catholiques, protestants,
israélites ou mahométans? N’ont-ils pas été frappés, tous,
pour la Justice! la Fraternité dans le devoir humain qui
dépasse les dogmes, doit-elle cesser dans la mort?
Et pourquoi la vie rentrerait-elle dans le temple? La
divinité, qui en a été chassée, n’y rentrera-t-elle pas avec les
morts?
La vie? Quelle vie? Des cérémonies? Des Te Deum
officiels? Des enterrements prétentieux? Des tentures à
crépine d’or «habilleraient» les piliers criblés d’éclats? Des
indifférents écraseraient les dernières larmes d’azur tombées
des vitraux pulvérisés? La vanité s’étalerait là même où la
flamme a purifié le sanctuaire?
Désormais, un seul encens y doit brûler: celui des
absoutes; une seule musique y vibrer: le chœur des
lamentations; une seule prière y monter: l’hommage aux
martyrs dont le sacrifice n’aura pas été vain.
On a trouvé des millions pour la construction du Sacré-
Cœur, on en trouvera encore bien davantage, pour
l’édification d’une Basilique nouvelle en un point choisi de
Reims.
Et tandis que les portes de l’Eglise s’ouvriront à la vie
d’après-guerre, dans l’éclat, la pompe, le faste et même la
joie par quoi sera célébré un renouveau rédempteur.....
sublime, avec les trous béants de ses verrières éteintes, ses
cicatrices innombrables, ses statues mutilées, ses
colonnettes tordues, la grande aînée refermera le mystère
auguste de son ombre et de son silence sur les Braves qui,
de leur sang, ont signé le chapitre le plus terrible de
l’Histoire du monde.
Je vous prie, Monsieur, de bien vouloir excuser la liberté
que j’ai prise et, de recevoir l’expression de ma haute
considération.

P. L., SERGENT,
Secteur 155.
LOUIS ORR.—INTÉRIEUR DE LA CATHÉDRALE DE REIMS, EN JANVIER 1918
(d’après une eau-forte).

LA FUITE
(d’après un lavis original).
LE RETOUR, «C’EST ICI CHEZ NOUS!»
(d’après une lithographie).
NOTES

[1] Nous devons à M. Dalignan, éditeur des œuvres de


Steinlen (10, rue Auber), la gracieuse communication des
dessins, eau-fortes, lithographies du grand artiste, publiés
dans ce numéro spécial de l’Art et les Artistes.

N. D. L. D.
[2] La Revue, 45, rue Jacob.
[3] Les Vandales en France (page 15).
[4] Camille Mauclair.
TABLE DES MATIÈRES

TEXTES
Pages
L’ŒUVRE DE GUERRE DE STEINLEN, par Camille Mauclair 3
LA CATHÉDRALE DE REIMS.—UNE LETTRE DU FRONT, par A. D. 41

ILLUSTRATIONS
CINQUANTE-SEPT ILLUSTRATIONS DONT:
CINQUANTE-DEUX D’APRÈS DES DESSINS ORIGINAUX, LITHOGRAPHIES, EAUX-
FORTES, LAVIS ET CROQUIS DE STEINLEN.
UNE D’APRÈS UNE EAU-FORTE DE Louis ORR.
ET QUATRE D’APRÈS LES EN-TÊTES DE CHAPITRES ET LETTRES ORNÉES,
SPÉCIALEMENT EXÉCUTÉS POUR L’OUVRAGE, PAR J. MOSSO.

ÉPREUVES D’ART
COUVERTURE D’APRÈS UN LAVIS ORIGINAL: “LA FUITE”, DE STEINLEN.
“LA VIEILLE DES RUINES”, HORS TEXTE D’APRÈS UNE LITHOGRAPHIE DE
STEINLEN.
“INTÉRIEUR DE LA CATHÉDRALE DE REIMS, EN JANVIER 1918”,
HORS TEXTE D’APRÈS UNE EAU-FORTE DE Louis ORR.
Au lecteur

Cette version numérisée reproduit dans son intégralité la version


originale, à l’exception des publicités du début et de la fin du livre.
La ponctuation n’a pas été modifiée hormis quelques corrections
mineures.
L’orthographe a été conservée. Seules les erreurs évidentes de
typographie ont été corrigées.
Les illustrations hors texte ont été rassemblées à la suite de
chaque chapitre.
La version électronique html restitue le mieux la présentation
du livre papier.
En cliquant sur les liens suivants, vous accédez directement aux
livres français publiés sur gutenberg.org et qui sont classés par
popularité, genre, auteurs.
*** END OF THE PROJECT GUTENBERG EBOOK LA GUERRE ***

Updated editions will replace the previous one—the old editions


will be renamed.

Creating the works from print editions not protected by U.S.


copyright law means that no one owns a United States
copyright in these works, so the Foundation (and you!) can copy
and distribute it in the United States without permission and
without paying copyright royalties. Special rules, set forth in the
General Terms of Use part of this license, apply to copying and
distributing Project Gutenberg™ electronic works to protect the
PROJECT GUTENBERG™ concept and trademark. Project
Gutenberg is a registered trademark, and may not be used if
you charge for an eBook, except by following the terms of the
trademark license, including paying royalties for use of the
Project Gutenberg trademark. If you do not charge anything for
copies of this eBook, complying with the trademark license is
very easy. You may use this eBook for nearly any purpose such
as creation of derivative works, reports, performances and
research. Project Gutenberg eBooks may be modified and
printed and given away—you may do practically ANYTHING in
the United States with eBooks not protected by U.S. copyright
law. Redistribution is subject to the trademark license, especially
commercial redistribution.

START: FULL LICENSE


THE FULL PROJECT GUTENBERG LICENSE

You might also like