100% found this document useful (4 votes)
37 views

Instant ebooks textbook Cloud Debugging and Profiling in Microsoft Azure: Application Performance Management in the Cloud 1st Edition Jeffrey Chilberto download all chapters

Jeffrey

Uploaded by

nabloobornpr
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (4 votes)
37 views

Instant ebooks textbook Cloud Debugging and Profiling in Microsoft Azure: Application Performance Management in the Cloud 1st Edition Jeffrey Chilberto download all chapters

Jeffrey

Uploaded by

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

Download the Full Version of textbook for Fast Typing at textbookfull.

com

Cloud Debugging and Profiling in Microsoft Azure:


Application Performance Management in the Cloud
1st Edition Jeffrey Chilberto

https://textbookfull.com/product/cloud-debugging-and-
profiling-in-microsoft-azure-application-performance-
management-in-the-cloud-1st-edition-jeffrey-chilberto/

OR CLICK BUTTON

DOWNLOAD NOW

Download More textbook Instantly Today - Get Yours Now at textbookfull.com


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

Zen of Cloud Learning Cloud Computing by Examples on


Microsoft Azure 1st Edition Bai

https://textbookfull.com/product/zen-of-cloud-learning-cloud-
computing-by-examples-on-microsoft-azure-1st-edition-bai/

textboxfull.com

Pro PowerShell for Microsoft Azure Make The Leap to The


Microsoft Cloud Ishac

https://textbookfull.com/product/pro-powershell-for-microsoft-azure-
make-the-leap-to-the-microsoft-cloud-ishac/

textboxfull.com

Microsoft Azure: Planning, deploying, and managing the


Cloud 2nd Edition Julian Soh

https://textbookfull.com/product/microsoft-azure-planning-deploying-
and-managing-the-cloud-2nd-edition-julian-soh/

textboxfull.com

Practical Azure SQL Database for Modern Developers:


Building Applications in the Microsoft Cloud Davide Mauri

https://textbookfull.com/product/practical-azure-sql-database-for-
modern-developers-building-applications-in-the-microsoft-cloud-davide-
mauri/
textboxfull.com
Cloud Data Design, Orchestration, and Management Using
Microsoft Azure: Master and Design a Solution Leveraging
the Azure Data Platform Francesco Diaz
https://textbookfull.com/product/cloud-data-design-orchestration-and-
management-using-microsoft-azure-master-and-design-a-solution-
leveraging-the-azure-data-platform-francesco-diaz/
textboxfull.com

Practical Azure SQL Database for Modern Developers:


Building Applications in the Microsoft Cloud 1st Edition
Davide Mauri
https://textbookfull.com/product/practical-azure-sql-database-for-
modern-developers-building-applications-in-the-microsoft-cloud-1st-
edition-davide-mauri/
textboxfull.com

Beginning MLOps with MLFlow: Deploy Models in AWS


SageMaker, Google Cloud, and Microsoft Azure Sridhar Alla

https://textbookfull.com/product/beginning-mlops-with-mlflow-deploy-
models-in-aws-sagemaker-google-cloud-and-microsoft-azure-sridhar-alla/

textboxfull.com

Microsoft Azure Infrastructure Services for Architects


Designing Cloud Solutions 1st Edition John Savill

https://textbookfull.com/product/microsoft-azure-infrastructure-
services-for-architects-designing-cloud-solutions-1st-edition-john-
savill/
textboxfull.com

Beginning MLOps with MLFlow : Deploy Models in AWS


SageMaker, Google Cloud, and Microsoft Azure 1st Edition
Sridhar Alla
https://textbookfull.com/product/beginning-mlops-with-mlflow-deploy-
models-in-aws-sagemaker-google-cloud-and-microsoft-azure-1st-edition-
sridhar-alla/
textboxfull.com
Cloud Debugging
and Profiling in
Microsoft Azure
Application Performance Management
in the Cloud

Jeffrey Chilberto
Sjoukje Zaal
Gaurav Aroraa
Ed Price
Cloud Debugging and
Profiling in Microsoft Azure
Application Performance
Management in the Cloud

Jeffrey Chilberto
Sjoukje Zaal
Gaurav Aroraa
Ed Price
Cloud Debugging and Profiling in Microsoft Azure: Application Performance
Management in the Cloud
Jeffrey Chilberto Sjoukje Zaal
Auckland, New Zealand Lisse, The Netherlands
Gaurav Aroraa Ed Price
Ghaziabad, India Redmond, WA, USA

ISBN-13 (pbk): 978-1-4842-5436-3 ISBN-13 (electronic): 978-1-4842-5437-0


https://doi.org/10.1007/978-1-4842-5437-0

Copyright © 2020 by Jeffrey Chilberto, Sjoukje Zaal, Gaurav Aroraa and Ed Price
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: Smriti Srivastava
Development Editor: Laura Berendson
Coordinating Editor: Shrikant Vishwakarma
Cover designed by eStudioCalamar
Cover image designed by Freepik (www.freepik.com)
Distributed to the book trade worldwide by Springer Science+Business Media New York, 233 Spring Street,
6th Floor, New York, NY 10013. Phone 1-800-SPRINGER, fax (201) 348-4505, e-mail orders-ny@springer-
sbm.com, 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], or visit www.apress.com/
rights-permissions.
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 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 via the book’s product page, located at www.apress.com/9781484254363. For more
detailed information, please visit www.apress.com/source-code.
Printed on acid-free paper
To my family, whose love and support give me strength and purpose.
—Jeffrey Chilberto

To my younger brother, Amit Kumar, who taught me to remain


hopeful, even in situations that are not favorable.
—Gaurav Aroraa
To the Azure development community: Thank you for your
dedication, passion, and innovation, as we seek to build a
collaborative ecosystem of tools and resources.
—Ed Price
Table of Contents
About the Authors���������������������������������������������������������������������������������������������������� xi

About the Technical Reviewer������������������������������������������������������������������������������� xiii


Acknowledgments���������������������������������������������������������������������������������������������������xv

Introduction�����������������������������������������������������������������������������������������������������������xvii

Chapter 1: Building Solutions in the Azure Cloud����������������������������������������������������� 1


Introduction to Microsoft Azure����������������������������������������������������������������������������������������������������� 2
Services����������������������������������������������������������������������������������������������������������������������������������� 2
Categories of Cloud-Based Solutions�������������������������������������������������������������������������������������������� 8
FaaS—Function as a Service�������������������������������������������������������������������������������������������������� 8
SaaS—Software as a Service������������������������������������������������������������������������������������������������� 8
PaaS—Platform as a Service�������������������������������������������������������������������������������������������������� 9
IaaS—Infrastructure as a Service������������������������������������������������������������������������������������������� 9
DBaaS—Database as a Service���������������������������������������������������������������������������������������������� 9
Building for the Cloud������������������������������������������������������������������������������������������������������������������� 9
Architectural Solutions���������������������������������������������������������������������������������������������������������� 10
Event-Driven Architecture����������������������������������������������������������������������������������������������������� 10
Microservices������������������������������������������������������������������������������������������������������������������������ 12
Architecture Summary���������������������������������������������������������������������������������������������������������� 13
Profiling and Debugging Strategies�������������������������������������������������������������������������������������������� 13
CoffeeFix�������������������������������������������������������������������������������������������������������������������������������� 14
CoffeeFix in Chapters������������������������������������������������������������������������������������������������������������ 17
Summary������������������������������������������������������������������������������������������������������������������������������������ 19

v
Table of Contents

Chapter 2: Exploring the Azure Portal�������������������������������������������������������������������� 21


Azure Portal�������������������������������������������������������������������������������������������������������������������������������� 21
Subscriptions������������������������������������������������������������������������������������������������������������������������� 21
Getting Started—Creating a Subscription����������������������������������������������������������������������������� 22
Portal Settings����������������������������������������������������������������������������������������������������������������������� 26
What Is an Azure Blade?�������������������������������������������������������������������������������������������������������� 29
Dashboard����������������������������������������������������������������������������������������������������������������������������������� 29
Tiles—Resizing and Positioning�������������������������������������������������������������������������������������������� 30
Creating a New Dashboard���������������������������������������������������������������������������������������������������� 32
Sharing Dashboards�������������������������������������������������������������������������������������������������������������� 33
Navigation����������������������������������������������������������������������������������������������������������������������������������� 35
Setting Favorites������������������������������������������������������������������������������������������������������������������� 35
Searching for a Resource, Service, and Docs������������������������������������������������������������������������ 37
You’re Not Alone—Help and Support������������������������������������������������������������������������������������������ 40
Help + Support���������������������������������������������������������������������������������������������������������������������� 41
Azure Roadmap��������������������������������������������������������������������������������������������������������������������� 45
Launch Guided Tour��������������������������������������������������������������������������������������������������������������� 47
Cloud Shell���������������������������������������������������������������������������������������������������������������������������������� 48
Summary������������������������������������������������������������������������������������������������������������������������������������ 51

Chapter 3: Services in the Cloud���������������������������������������������������������������������������� 53


Technical Requirements�������������������������������������������������������������������������������������������������������������� 53
What Is Serverless?�������������������������������������������������������������������������������������������������������������������� 54
Why Develop Serverless Applications?��������������������������������������������������������������������������������� 56
An Overview of Azure for Serverless Applications����������������������������������������������������������������� 56
Requirements������������������������������������������������������������������������������������������������������������������������������ 57
Azure Functions�������������������������������������������������������������������������������������������������������������������������� 59
Creating a Function App�������������������������������������������������������������������������������������������������������� 60
Logic Apps����������������������������������������������������������������������������������������������������������������������������������� 71
Creating a Logic App�������������������������������������������������������������������������������������������������������������� 72
Back to the CoffeeFix Console App��������������������������������������������������������������������������������������������� 84
Test CoffeeFix Console App��������������������������������������������������������������������������������������������������� 86
vi
Table of Contents

An Overview of API Management Services��������������������������������������������������������������������������������� 91


Creating an API Management Service����������������������������������������������������������������������������������� 92
Using Tags for Billing������������������������������������������������������������������������������������������������������������������ 99
Summary���������������������������������������������������������������������������������������������������������������������������������� 100

Chapter 4: Application Insights���������������������������������������������������������������������������� 103


CoffeeFix����������������������������������������������������������������������������������������������������������������������������������� 104
Creating Application Insights���������������������������������������������������������������������������������������������������� 104
Adding Insights to the CoffeeFix Console Application��������������������������������������������������������������� 105
Adding Custom Properties to Events����������������������������������������������������������������������������������� 109
Adding a Telemetry Initializer���������������������������������������������������������������������������������������������� 112
Tracking Dependencies������������������������������������������������������������������������������������������������������� 114
Tracking Exceptions������������������������������������������������������������������������������������������������������������� 116
Additional Telemetry Processing����������������������������������������������������������������������������������������� 119
Disabling Tracing When Developing������������������������������������������������������������������������������������� 120
Example Test Suite�������������������������������������������������������������������������������������������������������������� 121
Viewing Application Insights Data in the Portal������������������������������������������������������������������������ 123
Application Map������������������������������������������������������������������������������������������������������������������� 123
Metrics�������������������������������������������������������������������������������������������������������������������������������� 125
Search��������������������������������������������������������������������������������������������������������������������������������� 130
Application Insights Blade��������������������������������������������������������������������������������������������������� 134
View Analytics��������������������������������������������������������������������������������������������������������������������������� 135
Table View��������������������������������������������������������������������������������������������������������������������������� 135
Common KQL Expressions��������������������������������������������������������������������������������������������������� 138
Features������������������������������������������������������������������������������������������������������������������������������ 143
Analytics Summary������������������������������������������������������������������������������������������������������������� 146
Summary���������������������������������������������������������������������������������������������������������������������������������� 146

Chapter 5: Azure Web Apps���������������������������������������������������������������������������������� 147


Azure Web Apps������������������������������������������������������������������������������������������������������������������������ 147
App Service Plans���������������������������������������������������������������������������������������������������������������� 147
Application Insights������������������������������������������������������������������������������������������������������������������� 151

vii
Table of Contents

Adding Logging to the CoffeeFix Web App�������������������������������������������������������������������������������� 152


Adding Application Insights to the Web App������������������������������������������������������������������������ 152
Deploy the Web App������������������������������������������������������������������������������������������������������������� 156
Monitoring Your App Using Application Insights and Azure Monitor������������������������������������������ 159
Live Metrics������������������������������������������������������������������������������������������������������������������������� 160
Performance������������������������������������������������������������������������������������������������������������������������ 161
Monitoring Apps in App Service Plans�������������������������������������������������������������������������������������� 162
Quotas��������������������������������������������������������������������������������������������������������������������������������� 162
Metrics�������������������������������������������������������������������������������������������������������������������������������� 163
Alerts����������������������������������������������������������������������������������������������������������������������������������� 164
Remote Debugging and Profiling���������������������������������������������������������������������������������������������� 168
Setting Up Remote Debugging�������������������������������������������������������������������������������������������� 168
Setting Up Remote Profiling������������������������������������������������������������������������������������������������ 171
Summary���������������������������������������������������������������������������������������������������������������������������������� 174
Useful Links������������������������������������������������������������������������������������������������������������������������������ 174

Chapter 6: Databases and Storage����������������������������������������������������������������������� 177


Databases��������������������������������������������������������������������������������������������������������������������������������� 177
Azure SQL Database������������������������������������������������������������������������������������������������������������ 177
Azure Database for MySQL�������������������������������������������������������������������������������������������������� 178
Azure Database for PostgreSQL������������������������������������������������������������������������������������������ 179
Cosmos DB�������������������������������������������������������������������������������������������������������������������������� 180
Creating an Azure SQL Database from the Azure Portal������������������������������������������������������������ 181
Managing Your Azure SQL Database from the Azure Portal������������������������������������������������������ 185
Specifying a Server-Level IP Firewall Rule�������������������������������������������������������������������������� 185
Scaling Your Database��������������������������������������������������������������������������������������������������������� 187
Updating the CoffeeFix Application������������������������������������������������������������������������������������������� 189
Ingesting Some Sample Data Using the Query Editor��������������������������������������������������������� 196
Monitoring and Performance Tuning for the Azure SQL Database�������������������������������������������� 197
Monitoring Database Performance�������������������������������������������������������������������������������������� 198
Troubleshooting Performance Problems����������������������������������������������������������������������������� 200

viii
Table of Contents

Azure Storage��������������������������������������������������������������������������������������������������������������������������� 203


Azure Blob Storage�������������������������������������������������������������������������������������������������������������� 204
Access Tiers������������������������������������������������������������������������������������������������������������������������ 206
Azure Table Storage������������������������������������������������������������������������������������������������������������� 207
Azure Queue Storage����������������������������������������������������������������������������������������������������������� 207
Azure File Storage��������������������������������������������������������������������������������������������������������������� 207
Azure Disk Storage�������������������������������������������������������������������������������������������������������������� 208
Creating an Azure Storage Account with a Blob Container Using CLI��������������������������������������� 208
Monitoring Your Storage Services��������������������������������������������������������������������������������������������� 210
Monitoring Your Storage Account with Azure Monitor for Storage�������������������������������������� 211
Summary���������������������������������������������������������������������������������������������������������������������������������� 213
Useful Links������������������������������������������������������������������������������������������������������������������������������ 214

Chapter 7: Identity Security with Azure Active Directory������������������������������������� 215


Azure Active Directory��������������������������������������������������������������������������������������������������������������� 215
Microsoft Graph������������������������������������������������������������������������������������������������������������������������ 217
Azure Active Directory Business-to-Business��������������������������������������������������������������������������� 217
Azure Active Directory Business-to-Consumer������������������������������������������������������������������������� 218
Adding Users and Groups to Azure AD�������������������������������������������������������������������������������������� 219
Securing the CoffeeFix Web App Using Azure Active Directory������������������������������������������������� 223
Adding Azure AD Authentication to the CoffeeFix Web App������������������������������������������������� 224
Registering the CoffeeFix Web App in Azure AD������������������������������������������������������������������ 227
Azure Active Directory Reports������������������������������������������������������������������������������������������������� 232
Security Reports������������������������������������������������������������������������������������������������������������������ 232
Activity Reports������������������������������������������������������������������������������������������������������������������� 232
Azure Active Directory Monitoring�������������������������������������������������������������������������������������������� 233
Summary���������������������������������������������������������������������������������������������������������������������������������� 234
Useful Links������������������������������������������������������������������������������������������������������������������������������ 234

Chapter 8: Build and Release Automation������������������������������������������������������������ 235


Azure DevOps���������������������������������������������������������������������������������������������������������������������������� 236
Getting Started�������������������������������������������������������������������������������������������������������������������� 236
Overview of DevOps������������������������������������������������������������������������������������������������������������ 240
ix
Table of Contents

Putting CoffeeFix in a Container����������������������������������������������������������������������������������������������� 243


Docker��������������������������������������������������������������������������������������������������������������������������������� 244
Adding Docker Support�������������������������������������������������������������������������������������������������������� 247
Using a Container Registry�������������������������������������������������������������������������������������������������� 252
Releasing CoffeeFix.Console����������������������������������������������������������������������������������������������� 256
Adding CoffeeFix.Console to Azure DevOps������������������������������������������������������������������������������ 257
Creating Pipelines���������������������������������������������������������������������������������������������������������������� 260
Profiling and Debugging in Azure DevOps��������������������������������������������������������������������������������� 291
Sending Notifications—E-mail�������������������������������������������������������������������������������������������� 291
Sending Notifications—Webhook��������������������������������������������������������������������������������������� 297
Build Conditions������������������������������������������������������������������������������������������������������������������ 309
Setting Up Dashboards�������������������������������������������������������������������������������������������������������� 312
Summary���������������������������������������������������������������������������������������������������������������������������������� 317

Chapter 9: External Tooling���������������������������������������������������������������������������������� 319


Technical Requirements������������������������������������������������������������������������������������������������������������ 319
Azure Portal Dashboard—Tiles/Widgets����������������������������������������������������������������������������������� 320
Azure DevOps—Plug-ins���������������������������������������������������������������������������������������������������������� 326
Azure DevOps and Jenkins�������������������������������������������������������������������������������������������������� 327
Summary���������������������������������������������������������������������������������������������������������������������������������� 335

Chapter 10: Visualizing the Health of a Solution�������������������������������������������������� 337


Technical Requirements������������������������������������������������������������������������������������������������������������ 337
Visualizing and Analyzing the Virtual Machine Data����������������������������������������������������������������� 340
Health Monitoring of CoffeeFix Virtual Machines���������������������������������������������������������������� 342
Disaster Recovery for CoffeeFixDev������������������������������������������������������������������������������������ 365
Monitoring the CoffeeFixWeb Application���������������������������������������������������������������������������� 366
Summary���������������������������������������������������������������������������������������������������������������������������������� 367

Index��������������������������������������������������������������������������������������������������������������������� 369

x
About the Authors
Jeffrey Chilberto is a software consultant specializing
in the Microsoft technical stack, including Azure,
BizTalk, MVC, WCF, and SQL Server. He has enterprise
development experience in a wide range of industries,
including banking, telecommunications, and health care,
in the United States, Europe, Australia, and
New Zealand.

Sjoukje Zaal is a managing consultant, Microsoft Cloud


architect, and Microsoft Azure MVP, with more than 15
years’ experience providing architecture, development,
consultancy, and design expertise. She works at Capgemini,
a global leader in consulting, technology services, and
digital transformation.

Gaurav Aroraa is a serial entrepreneur and startup mentor.


He holds an MPhil in computer science and is a Microsoft
MVP award recipient. He is a lifetime member of the
Computer Society of India (CSI), an advisory member
and senior mentor of IndiaMentor, certified as a Scrum
trainer/coach, ITIL-F certified, and PRINCE-F & PRINCE-P
certified. He is an open source developer and contributor
to the Microsoft TechNet community. Gaurav was named
“Icon of the year—excellence in mentoring technology
startups” for 2018–19 by Radio City—a Jagran Initiative, for his extraordinary work
spanning a 22-year career in the field of technology mentoring.

xi
About the Authors

Ed Price, a senior program manager in engineering at


Microsoft, holds an MBA in technology management.
He ran Microsoft customer feedback programs for Azure
Development and Visual Studio. He also was a technical
writer at Microsoft for six years and helped lead TechNet
Wiki. He now leads efforts to publish key guidance from
AzureCAT (Customer Advisory Team).

xii
About the Technical Reviewer
Samuel Rowe is a technologist specializing in application
innovation and problem-solving. An agile advocate with
extensive experience in DevOps and cloud practices, he
is currently employed at Microsoft as a solution architect,
having worked previously for IBM and CodeWeavers.

xiii
Acknowledgments
Life teaches each of us in its own way. Sometimes its lessons are difficult to understand,
and sometimes you don’t find support. I am among the lucky ones who is blessed with
a lovely and supportive family, which always inspires and supports me. My wife, Shuby
Arora, and my little angel daughter, Aarchi Arora, permitted me to steal time for this
book, which I should have spent with them. Thanks to the entire Apress team, especially
Shrikant, whose coordination and communication during the period of writing this
book was tremendous. Special thanks to our technical reviewer, Samuel Rowe, for all
of his valuable suggestions, which improved and polished the contents. Thanks also to
my fellow coauthors, Ed Price, Jeffrey Chilberto, and Sjoukje Zaal, for their support in
completing the book.
—Gaurav Aroraa

xv
Introduction
Cloud Debugging and Profiling in Microsoft Azure is both a primer and handbook for
working in Azure. Every organization’s and individual’s adoption and experience of
cloud-based software development is unique, so this book aims to strike a balance
between providing content relevant to introductory users as well as more experienced
ones. As the many services and features of Azure are constantly evolving, it is not
possible to provide a manual addressing all aspects of Azure, so this book highlights
some of the more common features, including samples of services from the major
categories: Functions as a Service (FaaS), Software as a Service (SaaS), Platform as a
Service (PaaS), Infrastructure as a Service (IaaS), and Database as a Service (DaaS).
To aid in the discussion of the many topics, a fictitious company’s journey through
Azure is used to illustrate how cloud adoption can benefit many enterprises. The journey
involves moving many on-premises components to similar Azure services, as well as
highlighting some of the benefits and advanced tooling offered as part of the Azure
ecosystem.
This book is for developers and DevOps engineers looking for insight into the
complexities of distributed systems and the features available, to enable a better
understanding of how to profile and debug cloud-based solutions in Azure.

xvii
CHAPTER 1

Building Solutions in the


Azure Cloud
There are many different facets and considerations for developing on Microsoft Azure.
This chapter discusses why and how building for the cloud differs from on-premises
development. It introduces you to different terms that will be explored further as we
explain their blades in the Azure portal, including Function as a Service (FaaS), Software
as a Service (SaaS), Platform as a Service (PaaS), and Infrastructure as a Service (IaaS).
Then we will explain why you need a comprehensive strategy for debugging and profiling
in Azure, as well as the basics of what that entails. Throughout the chapters, we will use a
fictitious company to illustrate different scenarios, and in this chapter, we will introduce
the company, its business objectives, and how we will use Azure to achieve them. The
goal of this chapter is to provide a high-level view of development on Azure, as well as
to set the tone of the book, in explaining an introductory perspective on debugging and
profiling.
When considering how to profile and debug on Microsoft Azure, you should first
explore all your options for building solutions in this cloud platform. This chapter
discusses why and how building for the cloud differs from on-premises development.
We’ll progress through different terms that will be explained further in later chapters,
including FaaS, SaaS, PaaS, and IaaS. Then we will show you why you’ll require a
comprehensive strategy for debugging and profiling in Azure, and we’ll cover the general
structure of that strategy.

1
© Jeffrey Chilberto, Sjoukje Zaal, Gaurav Aroraa and Ed Price 2020
J. Chilberto et al., Cloud Debugging and Profiling in Microsoft Azure,
https://doi.org/10.1007/978-1-4842-5437-0_1
Chapter 1 Building Solutions in the Azure Cloud

Introduction to Microsoft Azure


Microsoft Azure is a collection of cloud services that is constantly improving and
expanding to cover additional development and platform requirements, integrations,
and deployments. Using the Azure cloud-computing infrastructure and platform, you
can build, deploy, and manage your applications, services, and IT solutions in the
cloud, using Microsoft’s worldwide network of data centers. Microsoft manages more
data centers (directly and with partners) than any other cloud service provider, which
includes 54 regions worldwide, making Azure available in 140 countries (as of the writing
of this book). More data centers results in an increasing scale, preserving data residency,
compliance, resiliency, and global consistency.
With on-premises software development and deployment, enterprise companies
hold the responsibility for building, maintaining, and upgrading all the layers and levels
in their software and its underlying infrastructure. Microsoft Azure provides a massive
library of services that gives you more options and control of your solution and software
architecture, without the infrastructure maintenance.
Azure utilizes virtualization, which entails creating an emulation layer to map the
software instructions to the hardware instructions. Through this process, the virtualized
hardware executes in software as if it was the physical hardware. And then the user can
run this virtualized hardware on the physical servers.

Services
As of this writing, Microsoft Azure is composed of more than 180 services and products.
Those products are typically and currently broken down into 22 categories: AI + Machine
Learning, Analytics, Blockchain, Compute, Containers, Databases, Developer Tools,
DevOps, Hybrid, Identity, Integration, Internet of Things (IoT), Management and
Governance, Media, Migration, Mixed Reality, Mobile, Networking, Security, Storage,
Web, and Windows Virtual Desktop.
The following provides a summary of the different categories.

AI + Machine Learning


With machine learning, computers use data to forecast future events, including
behaviors, outcomes, and trends. Computers can learn without being directly
programmed for that learning outcome. For example, when you purchase an item at a

2
Chapter 1 Building Solutions in the Azure Cloud

store, machine learning can compare your purchase to all your previous purchases and
all the similar purchases made by other customers, thus determining which coupons to
give you, knowing which ones you’re most likely to use.
Another example is predictive maintenance. You can use AI to predict future failures
and then prevent them, to maximize the life and uptime of your product, service, app,
or web site. You can minimize unscheduled equipment downtime and detect anomalies
(such as when devices will fail). You can prevent expensive failures and outages.
Azure Machine Learning Services provides a scalable platform of model management.
Azure Databricks leverages the Apache Spark analytics platform. Cognitive Services
provides a library of API capabilities for contextual interactions (such as image-­processing
algorithms to identify, alter, and moderate photos). And Azure Bot Service allows you to
build intelligent bots that interact naturally with users on web sites or in apps. There are 35
services in this category.

Analytics
Now that you have some data options, you must explore solutions that will transform
that data into actionable insights. SQL Data Warehouse, Azure Databricks, and Machine
Learning all provide analytics. There are 15 services in this category.
HDInsight is a managed Hadoop and Spark service. Data Factory is an integration
service that orchestrates and automates your data movement. Stream Analytics provides
real-time data stream processing, which can be from millions of IoT devices. Data Lake
Analytics is on-demand and pay-per-job. Azure Analytics Services is an enterprise grade
analytics engine.

Blockchain
Blockchain solutions provide a trusted means for organizations to collaborate without
requiring a central authority. Azure Blockchain Service, Azure Blockchain Workbench, and
Azure Blockchain Tokens are services to build and manage blockchain-based applications.

Compute
The services offered in Compute range across FaaS, IaaS, and PaaS services. As a
FaaS service, Azure Functions provide serverless application development. Offering
more control over the environment but letting the developer concentrate more on the
application instead of the hardware, cloud services provide a scalable PaaS offering. IaaS

3
Chapter 1 Building Solutions in the Azure Cloud

services offer a wide range of virtual machines across Windows and Linux operating
systems, with an assortment of base images. Later in this chapter, we will explore each
category of cloud-based solutions.

C
 ontainers
Using containers is an effective way of bundling and managing applications that use
OS-level virtualization to support efficient application isolation. Azure offers a range of
services for managing and hosting containers, including the Azure Kubernetes Service,
Container Instances, Service Fabric, Azure Container Registry, and Web App for
Containers.

D
 atabases
Azure has more than 10 fully managed database services that free you from managing a
database. You can scale quickly and distribute globally, without experiencing downtime.
SQL Database is a fully managed relational database that provisions and scales very
quickly. You can find similar high-availability and security in Azure Database for MySQL,
as well as Azure Database for PostgreSQL.
Cosmos DB is multi-model and supports NoSQL. Or you can use virtual machines to
host enterprise SQL Server apps. SQL Data Warehouse is an elastic data warehouse with
security built into every level of scale. For an exhaustive architectural tour of Azure data
options, see the Azure Data Architecture Guide on the Azure Architecture Center web site
(http://aka.ms/DataArchitecture).

D
 eveloper Tools
Azure provides many developer tools for exploring, building, managing, and monitoring
Azure services, including Visual Studio, Azure Lab Services, Azure DevTest Labs,
software development kits (SDKs), and command-line interfaces (CLIs).

D
 evOps
Azure DevOps is Microsoft’s suite of tools for managing an application Software
Development Lifecycle (SDLC), including Azure Boards for planning and tracking tasks
across teams, Azure Repos for secure and reliable source control repositories, Azure
Pipelines for managing the build and release process, and Azure Test Plans for managing
and monitoring automated tests, load tests, and test scripts.
4
Chapter 1 Building Solutions in the Azure Cloud

Hybrid
Azure supports many services that allow for solutions to span both on-premises data
centers and cloud data centers. These services vary greatly and include, but are not
limited to, Storage, Identity, DevOps, AI + Machine Learning, Networking, Security, and
Storage. Additionally, Azure provides the ability to host many cloud services in private
data centers by using Azure Stack.

Identity
Azure Active Directory (AD), Azure Active Directory Domain Services, and Azure Active
Directory B2C are examples of services Azure provides for managing user identity and
securing applications and data.

Integration
Azure supports integration in the cloud and on-premises, and some services allow
the integration to span across both. Logic Apps allow complex business processes and
workflows to be developed in an intuitive cloud service. Azure Service Bus and Event Grid
are powerful services that provide reliable cloud messaging and event-based solutions.

Internet of Things
Azure offers many services that support Internet of Things (IoT) devices, and it provides
both a flexible and comprehensive platform for building scalable IoT solutions. Azure
IoT Hub, Azure IoT Central, and Windows 10 IoT Core Services provide support for
connecting and managing billions of IoT assets in a secure and reliable manner. Azure
Sphere and Azure IoT Edge allow you to extend the cloud out to the smallest of devices.
When these IoT services are combined with other Azure services, Azure has excellent
and leading-edge support for building IoT solutions.

Management and Governance


Many Azure services are provided to simplify and automate the management,
compliance, and monitoring of cloud resources. These include services for protecting
data, such as Azure Backup and Azure Site Recovery, as well as services for monitoring
applications and infrastructure, such as Azure Monitor, Azure Service Health, Network
Watcher, and the Azure portal. Services for automating many tasks include Scheduler,

5
Chapter 1 Building Solutions in the Azure Cloud

Cloud Shell, and Automation. Traffic Manager and Azure Lighthouse provide control
to allow a customer to protect, manage, and scale a cloud network. Cost Management
+ Billing has many views and features to support how costs are managed, including
detailed interactive views, alerts, and integration support to monitor cloud spending.

Media
Azure provides several services for delivering high-quality video content globally. These
include Content Delivery Network and Media Services for delivering content, as well
as services for encoding and streaming. Content Protection, Video Indexer, and the
Encoding service allow for scalable services for handling media content. The Azure Media
Player simplifies playback by providing a single player for a wide range of media formats.

Migration
Migrating solutions to the cloud, disaster recovery, and data transfer are supported by
many services, including Azure Site Recovery, Azure Database Migration Service, Data
Box, and Azure Migration.

Mixed Reality
Immersive interaction is supported in Azure, using cutting-edge technologies, including
Azure Digital Twins and Spatial Anchors, for building mixed-reality experiences. Remote
Rendering allows for rendering high-quality 3D content, and the Kinect Development
Kit provides building solutions with advanced AI sensors.

Mobile
Building and deploying cross-platform and native mobile applications is supported
in Azure. Services for building mobile applications include Xamarin, which supports
cross-platform development, while Mobile Apps simplify building back-end services for
mobile applications. Visual Studio App Center allows you to continuously build, test,
release, and monitor mobile applications.

Networking
Services are provided to support connecting cloud and on-premises infrastructure and
services. Services for managing network security include Azure Firewall Manager and

6
Chapter 1 Building Solutions in the Azure Cloud

Traffic Manager, while Azure Firewall, Azure DDoS Protection, and Web Application
Firewall provide powerful and scalable protection. Azure ExpressRoute, VPN Gateway,
Virtual WAN, and Azure Bastion provide secure connectivity options to data centers,
virtual machines, and cloud services.

Security
Security is a primary concern for Azure, and many services are available to monitor, detect
threats, and keep customer data safe. Security Center and Azure Sentinel are examples of
security management services provided to protect enterprise data. Key Vault provides a
best-practice approach to maintaining secure control of sensitive keys and other secrets.

Storage
Azure Storage has a range of solutions to fit any size enterprise’s requirements.
Supporting both SMB 3.0 and HTTPS, Azure File storage provides an inexpensive and
simple storage solution designed for lifting and shifting migrations of on-premises data
to the cloud. Designed as a cost-effective solution for massive volumes of data, Azure
Blob storage provides a scalable storage solution for unstructured data. Also, part of the
storage suite of services is Azure Table storage, which provides a simple, low-cost service
for schemaless storage of data. Optimized for Apache Spark and Hadoop analytics
engines, Azure Data Lake Storage provides secure data lake storage. These are just
highlights of some of the storage-related services provided by both Microsoft and other
vendors, including massively scalable cloud repositories, archiving services, as well as
storage designed for high-performance computing.

Web
Azure has many services for building scalable web applications. Azure App Service
and Web Apps allow for hosting scalable, global cloud web applications. Azure
SignalR Service, Notification Hubs, and API Apps provide specialized services for web
application development.

Windows Virtual Desktop


Windows Virtual Desktop provides a comprehensive desktop virtualization service that
runs in the cloud, allowing for a highly scalable, always up-to-date experience that is
available on any device.
7
Chapter 1 Building Solutions in the Azure Cloud

Categories of Cloud-Based Solutions


This section uses five general categories to discuss cloud-based solutions, in order to
provide more background context.

F aaS—Function as a Service
Function as a Service (FaaS), also known as Serverless, is an offering of services that
provides a platform for running and managing functionality (i.e., code) in the cloud,
without any of the complexity of the infrastructure required to run the functionality.
This is where the term serverless comes in, as the detail of the servers that run the
functionality have been abstracted away, thus no longer making it the concern of the
application developer.
Serverless has many benefits for cloud-based solutions. In general, serverless
applications are easier and faster to deploy. They tend to support modern architectures,
such as microservice architecture, very well. As their scope is limited to the functionality
required, they tend to be quicker and less costly to develop than traditional applications.
With built-in scalability, serverless applications are a cost-effective way of hosting
reliable and resilient functionality.
Azure FaaS offerings are under Azure Functions. They will be covered in more detail
in Chapter 3.

S
 aaS—Software as a Service
Software as a Service (SaaS) consists of products that are consumed directly where the
building and hosting of the service are not handled by the consumer. This includes
services such as Dynamics 365, SharePoint Online, and Office 365. The Azure portal and
Azure DevOps themselves can be viewed as SaaS offerings, as they function to provide
a view of the Azure services customers have access to. The details of hosting the two
portals are completely managed by Microsoft.
The Azure portal is primarily covered in Chapter 2, although it is referenced
throughout the chapters. Azure DevOps is covered in Chapter 8. Application Insights, an
SaaS for recording and viewing application telemetry, is covered in Chapter 4.

8
Chapter 1 Building Solutions in the Azure Cloud

P
 aaS—Platform as a Service
Customers can build upon a Platform as a Service (PaaS) without being concerned about
the infrastructure used to support the service. This includes Cloud Services and App
Service, wherein the customer is responsible for building the service but does not have
to be concerned about the infrastructure that hosts the solution.
Azure App Service is covered in Chapter 6.

I aaS—Infrastructure as a Service
Infrastructure as a Service (IaaS) provides essential infrastructure to cloud-based
solutions. From networking to storage, IaaS powers many of the other Azure services
and provides secure and reliable communication to on-premises solutions. Many of the
cloud-based infrastructures mirror on-premises components and allow for cloud-based
networks to be defined, linking virtual machines, storage repositories, and other services
running in and external to the Azure data center.
Azure Storage is covered in Chapters 3 and 5.

D
 BaaS—Database as a Service
Database as a Service (DBaaS) provides repositories that run in the cloud and include
RDBMS and schemaless databases. Azure SQL provides a managed cloud-based SQL
Server repository that includes many features tailored to running in the cloud, including
encryption, auditing, and automated backup support using Azure Blob storage. Azure
Cosmos DB provides a multi-model database service that has been designed to support
globally distributed applications.
Azure SQL and Azure Cosmos DB are covered in Chapter 5.

B
 uilding for the Cloud
Previously, monolithic, single-tiered applications formed one program on a dedicated
platform. This design made it easier to be predictably scalable and consistent. Now, with
a cloud-based architecture, your application can be built as small independent services,
which leverage APIs to send messages and events. This is a new microservices approach
to application development.

9
Chapter 1 Building Solutions in the Azure Cloud

Your application can grow as much as necessary, by adding new instances. Your
application can now scale elastically, as required. Rather than fewer large updates, you
have the agility to regularly make smaller updates. Rather than a manually managed
system, you’re now looking to design automated self-management.
Knowing how to profile and debug cloud-based solutions is essential to gaining the
most value from running solutions in Azure. We will explain these topics in the subsequent
chapters, but the following sections cover another aspect of gaining the benefits of the
cloud: architecture.

Architectural Solutions
A successful cloud-based solution must take into consideration the cost vs. the value
gained, the application’s resiliency, disaster recovery, scalability, and security. In
addition, you want to build a DevOps process to ensure predic table and reliable
automated deployments. In order to achieve this, you’ll need a system of monitoring,
diagnostics, and testing.
In general terms, architecting cloud-based solutions does require a shift in designing
and developing solutions to take advantage of the cloud’s many benefits, including
elastic infrastructure, improved accessibility, more resilient availability, improved
security, and more rapid application development. For some organizations, the initial
move to the cloud will include moving applications from on-premises infrastructure with
little or no modification. This is referred to as lifting and shifting. Though this approach
is cost-effective and reduces the risk of potential regression, in many situations, it will
require additional effort to gain the benefits of running in the cloud.
Solutions architected with the cloud in mind, known as cloud-native solutions,
tend to be made up of smaller, distributed services and applications. There are many
architectural patterns that fit this profile, and we will cover event-driven architecture and
microservice architecture as examples.

Event-Driven Architecture
A solution made up of applications and services that responds to changes in state can
be termed as event-driven architecture (EDA). As an example of EDA, let’s consider
the scenario of a customer’s address changing. In this example, the system will take
three actions: send an acknowledgment e-mail, update the customer’s address in the

10
Chapter 1 Building Solutions in the Azure Cloud

database, and create a log of the address change. In a more monolithic application,
this might be comprised of a single web page that performs these three steps in a single
method, as illustrated in Figure 1-1.

Figure 1-1. Monolithic architecture

In EDA, this might be changed to use the publish-subscribe pattern, or pub-sub.


In this pattern, an event is published to a shared service, known as a service bus.
Applications interested in events subscribe to the service bus to be notified when
events of a certain type are published. In our example, this is the change address event.
Figure 1-2 illustrates how this might look in Azure.

Figure 1-2. Event-driven architecture


11
Chapter 1 Building Solutions in the Azure Cloud

In this diagram, a request is still made to the changeAddress web method, but
instead of handling the functionality in the web application, an event is published to the
service bus. Three subscribers are then triggered by this event. The first sends an e-mail;
the second updates the customer; and the third creates a log entry.
The monolithic version does have some merit over the EDA example, in its
simplicity, but in cloud-based solutions, a more distributed approach is better. First, by
separating the functionality into smaller components, we can handle change better. For
example, if additional functionality is required, this can be added into this architecture
relatively simply, by adding another listener for the event.

M
 icroservices
The microservice architecture is a popular architecture for cloud development. You can
build apps that are scalable and resilient and that you can easily automate and deploy. This
is achieved by designing smaller services that are autonomous and independent. Each of
your services is given a singular purpose. Rather than rebuilding and then redeploying your
application, you can update the services individually and independently. And rather than
creating a data layer to persist the data, each service persists its own data.
If we revisit the EDA sample, we can illustrate microservice architecture, as shown in
Figure 1-3.

Figure 1-3. Microservice architecture


12
Chapter 1 Building Solutions in the Azure Cloud

In the diagram, each service becomes independent, including its persistence layer.
As you will have noticed, the difference between the diagram for EDA and microservices
is not significant. This is intentional, as the two architectures complement each other.

A
 rchitecture Summary
EDA and microservice architecture lend themselves to cloud-based solutions in
many ways. As the coupling between areas of the solution is reduced, multiple teams
contributing to the same solution are less likely to run into conflicts as the solution evolves.
Also, as the solution is made up of independent and isolated components, different areas
of the solution can be scaled independently, allowing for both improved reliability as
well as improved cost-effectiveness, as only the areas of the system requiring additional
resources are increased. Another important consideration: in general, multiple smaller
components are less costly in cloud-based solutions than a single larger component.
There are other architectures that are relevant, and the following are provided as
additional resources to explore:

• Azure Customer Advisory Team: http://aka.ms/CAT

• Azure Architecture Center: https://docs.microsoft.com/en-us/


azure/architecture/

• Azure solution architectures: https://azure.microsoft.com/en-us/


solutions/architecture/

Profiling and Debugging Strategies


As cloud-based solutions benefit from different architectures rather than traditional
solutions, the profiling and debugging strategies used for cloud-based solutions also
change. The following chapters will progress through different categories of cloud-­based
development, and for each one, different profiling and debugging strategies will be
discussed. Because cloud-based solution development is vast, so is the range of strategies
that could be shown. We strove to provide a collection of the most effective and helpful
strategies for a wide range of teams.

13
Chapter 1 Building Solutions in the Azure Cloud

To aid in the discussion of the different strategies, a fictitious organization will be


used to illustrate one company’s journey into the cloud, from an on-premises solution.
Our focus is to provide context for the different categories of cloud-based solutions and
not how to develop a solution. Because of this, we have made the samples as simple as
possible but complex enough to provide useful scenarios.
The following section will introduce the fictitious company, followed by a summary
of the chapters and how they relate to the company’s journey into the cloud.

C
 offeeFix
Throughout the chapters we will use a fictitious company, CoffeeFix, to illustrate
different profiling and debugging aspects of Azure. CoffeeFix is a manufacturer of
high-­quality coffeemakers (machines and pots that brew coffee), used in the most
prestigious coffeehouses in the world. Its signature feature is a sensor-controlled brewing
process that is designed to produce consistently full-flavored coffee. Because of the
competitiveness of the coffeemaker market, CoffeeFix coffeemakers send information
back to a central system, to be analyzed, in case the coffeemakers are showing signs of
requiring maintenance.
For our purposes, the company has been very successful and now has coffeemakers
installed across the globe. Unfortunately, the current solution has not been able to scale as
smoothly as the business, and CoffeeFix is looking to invest in scaling their current solution.

C
 urrent Solution
The current CoffeeFix solution consists of an application that runs on the coffeemakers,
a central web site, and a database. Both the web site and the database are currently
hosted in a server at CoffeeFix headquarters. Figure 1-4 illustrates the current solution.

14
Random documents with unrelated
content Scribd suggests to you:
since threadbare in the salons, Mme. d'Etioles, bourgeoise though she was,
seemed to stand a fair chance for the post. Thereafter, periodically, she had
been rumored as being separated from her husband, of living now at Paris,
now at Sénart, again at Versailles—perhaps in the palace itself. Nothing
definite was known in the Œil or the Queen's circle. D'Argenson looked
wise, and Bachelier blinked occasionally, but the matter got no further, and
nothing was proclaimed. All this, however, was later, through the last of
March and the beginning of April. Some time since, during the first week in
March, indeed, the Cabinet du Conseil learned something of royal intentions
in another quarter. On a certain Friday some orders were given, a paper
made out at Majesty's command by de Berryer, and from Maurepas certain
others demanded, the subject of which made even that imperturbable person
start with surprise. Such papers were expected to be in readiness by Saturday
afternoon.

Upon the momentous Friday young d'Argenson and Phélippeaux de


Maurepas encountered each other, by chance, in the vaisselier. These two,
who were never to be found talking together in the public rooms, were of
necessity so intimate in private that the one could fairly read the other's
thoughts by the curve of the lips or the shape of the brow. To-day, both
minds being on the same subject, both mouths formed into the same peculiar
smile of greeting as the two found themselves alone in this inner room.
Maurepas was on his way to the grand gallery. D'Argenson, to his great
disgust, was at work enumerating candlesticks (the King being prone to
periodic spells of household economy). At one end of the table Maurepas
stopped, looking down in some amusement at his comrade's task.

"You would make a woeful housekeeper, Marc. Now I—have been


occupied in a more engrossing way."

"Eh? Oh, something apropos of the little de Mailly."

"Your astuteness is unsurpassed. Can you guess the next thing—the


subject of my labors?"

"I thought that I had guessed it," was the reply.

"Oh, no. Mme. de Mailly is their object."


"I am, then, at a loss."

"I have been occupied, my dear Count, in making the estates of


Châteauroux, together with the duchy, fall, by a peculiar line of heredity,
from the deceased Duchess to her living cousin-german, Mistress Deborah
Travis, otherwise the Comtesse de Mailly."

"Mordi! You have my compassion. My task is as nothing to yours."

"Oh, you are wrong. The matter is nearly arranged. We shall see, my dear
Count—we shall see—"

"When?"

"At no later period than to-morrow evening."

"Ah! Then his Majesty is to escape from the levee?"

"Yes, probably. Monseigneur the Dauphin will be asked to take his place
after the fourth minuet. And you, Marc—do you know what part in the affair
is to fall to you?"

"Alas, yes—I can conjecture it. I had not feared that it would come so
soon. The husband—Claude—will be my task."

"I am, indeed, sorry for it. Once before, you remember, he fell to me.
Mon Dieu! He took it manfully enough then; but this is worse. Unhappily, he
is fond of his wife."

"Monsieur le Ministre—you of the school of Montesquieu—have you


ever been able to picture to yourself an honest woman—one who would
refuse the—post?"

"Never, Monsieur of the Interior. In heaven there may be such. But then,
in heaven, I am told, there are no kings."

With which regretfully sincere bit of pessimism de Maurepas passed on,


leaving his friend to mingle thoughts of Claude and Deborah and the King's
way with bronze pairs and single silvers.
Saturday evening saw the great Gallery of Mirrors filled with its
customary brilliant throng. Claude and his wife were present as a matter of
course, and were able to dance the second minuet together, since in that their
Majesties were companions. Thereafter they were separated, probably for
the remainder of the evening. Deborah was surrounded by many would-be
partners, for she had long since been able to choose as she liked from the
men of the Court. But the one who might command a dance, he whom she
expected to be seen with at least once during the evening, did not,
apparently, look at her to-night. The Court perceived this as quickly as she
did; and, in consequence, certain gentlemen left her side. Richelieu, who
dared not approach her, smiled cynically at their want of foresight, and saw,
with a nod of approval, that de Gêvres, d'Epernon, de Sauvré and Penthièvre
became more than ever assiduous in their attentions. If Deborah were
disappointed, certainly none could have guessed it. Her manner was just as
usual—quiet, eminently unaffected, and punctiliously gracious. It was
becoming the best manner in the kingdom, de Gêvres observed to his
neighbor, d'Epernon, as she entered the King's set with Penthièvre.
D'Epernon weakly tapped his snuff-box, but said nothing for a time.

"De Bernis is across the room," he observed, finally.

"Yes, and there will soon be thrushes in the bosquet of the Queen!"

The other smiled and shifted his position. "It is more apropos than you
think. Observe—there is de Coigny returned."

"Ah! True! He is accepting snuff from the abbé!"

"We shall not be seconds after all, then. Let us go and speak with Jules."

"I cannot now. I wait here for Mme. de Mailly."

"Au revoir, then."

"Au revoir. The Maréchal looks well in black."

Thus the evening wore on in customary fashion, and, as the hour for
supper approached, a little quiver of expectation fell upon the hearts of
certain people in the great room, who, so far as an outsider could have
determined, were in no way connected with each other. D'Argenson had
been missing during the early part of the evening, but made his appearance
at eleven o'clock. De Berryer and Maurepas, during the ensuing quarter of an
hour, each approached and casually addressed him. De Gêvres did not go
near him, but received a nod from across the room that seemed to be
satisfactory to both. The King himself, during a promenade, paused for an
instant on his way to whisper something that his partner herself could not
hear, into the ear of Marc Antoine. The answer was simply, "Yes, Sire," but
the King moved on with new gayety after hearing it.

Shortly afterwards supper was announced, and the brilliant company


leisurely prepared to get them to table. During the recessional from the salon
there were likewise three or four incidents, which, put properly together,
formed an intricate little drama. Claude, who had just relinquished his last
partner, Mme. de Grammont, to her new escort, was looking, somewhat half-
heartedly, for an unattended dame, when, to his great satisfaction, Henri
appeared beside him and held him back for a moment or two of
conversation, it being some days since they had met. For an instant the
cousins eyed each other in silence. Then, as they drew aside from the
doorway, Claude observed:

"Henri, you are not well."

The Marquis gave a slight, cynical smile. "On the contrary, dear Claude,
I have now lost my last excuse for worry, care, or melancholy. What more
could the gods devise for me?"

"Ah! I know!" returned the other, very gently, as he laid one hand upon
Henri's shoulder. "You must think—only—that she is happier now."

Henri quivered suddenly and shook the hand away. "Stop, Claude. I—I
—no, not even from you," he ejaculated, harshly.

"Forgive me."

"Good-evening, gentlemen."

Henri faced quickly about as Claude bowed to the man who had
approached them. It was d'Argenson.
"You look very serious, Monsieur le Comte. What is the matter? Do the
powers of Europe threaten the last treaty, or is one of the King's lapdogs
dead?" inquired Claude, with his most catching smile, and anxious to give
Henri a moment to change his thought.

D'Argenson's expression did not brighten. Rather, it grew still more


gloomy. It seemed difficult for him to answer the laughing question. At this
moment, in fact, he would have preferred being in the thick of Dettingen to
standing here, where he was about to inflict a merciless blow on a
defenceless head. "Monsieur le Comte," he began, looking steadily at
Claude, "I wish you to believe me when I say that never before, in all my
life, have I so regretted my duty. In speaking to you I am obeying an
absolute command. Monsieur—my friend—Claude—I have been this
evening to the Rue d'Anjou. I left there—a letter—from the King—which
you—"

He stopped. Maurepas had told him that this man would behave well. It
was not so. Claude had turned deathly white. Both hands had flown to his
head, and he reeled where he stood. Henri sprang forward and caught him
about the body.

"Let me alone," muttered Claude, thickly. "I sha'n't fall."

"I will bring some wine," said d'Argenson, gently.

"No. I will have nothing." For a moment the three stood motionless and
silent. Then Claude opened his eyes and looked upon the King's minister.
"The letter—invites me—to travel?"

D'Argenson bowed.

Claude slowly drew a handkerchief from his pocket and wiped his lips
with it. "May God damn to hell the King of France! All the armies in his
kingdom shall not drive me from it till I've got back my wife!"

"Claude! Claude! Come away!" said Henri, sharply.

"No. Not till I have Deborah to go with me."


"Monsieur—monsieur, that is not possible," whispered d'Argenson,
anxiously. "Mme. de Mailly will be granted her choice. She will not be in
any way forced. His Majesty will merely offer."

After he had spoken these words d'Argenson was not sure that Claude
had heard them. The young man stood for a minute or two staring at him
stupidly, with a look of heavy indifference. Then his body began to
straighten, he breathed sharply two or three times, and d'Argenson's muscles
stiffened as he prepared to avoid an attack. Claude's hand opened and shut
convulsively, but he made no move forward. After a long time, when the
tension had grown almost past bearing to his cousin and the minister, de
Mailly, with a dignity that Louis himself could not have equalled, said,
measuredly: "Well, messieurs, I go home to await my wife. If her choice is
free, if she is not forced, she will return to me. This is inevitable. Henri, let
us go."

The Marquis, with a melancholy glance at d'Argenson's astonished face,


grasped his cousin's arm. Before they went away, however, Claude turned
once more to the Count.

"Monsieur, if Mme. de Mailly does remain, all the bolts, all the bars and
walls of the Bastille will not be enough to save Louis of France from death
at my hands. Tell him so."

D'Argenson bowed low, and Claude, stumbling in his walk like a


drunken man, left the room on Henri's arm.

In the mean time Deborah had not reached the supper-room. De Gêvres
was her escort from the Hall of Mirrors, supposedly to the Salle du Grand
Couvert; but, when they stood upon the threshold of the first corridor, he
bent over her, saying, in a low voice: "Madame, the public room will be
crowded and disagreeable. In the Salle des Pendules there is to be a little
supper, to which I am instructed to invite you. Will you do me the honor to
accompany me?"

And Deborah, to whom these private parties so frequently arranged for


six or eight in some courtier's suite were far preferable to the general feast,
accepted the invitation with cordial good-will. Thereupon they turned from
the procession and passed through various courts, halls, and antechambers
till they reached the Grande Galerie. Down the still, empty length of this,
into the long corridor opening out of it at the other end, and finally into the
passage of the Salle du Jeu, they walked.

"It must be a small party, or are we the first?" asked Deborah, as they
entered the room and paused before a closed door.

De Gêvres did not answer. Instead, he knocked twice upon the panel.

"Enter," came a voice from within.

The Duke pulled open the door, and Deborah passed before him. The
door closed again, softly, behind her. She was alone with the King.

"Sire!" she cried, with a little gasp.

Louis, who stood at the end of the room, his back to the fire, smiled at
her. "Oh, there are no terms of etiquette to-night. We are only very good
friends, you and I, my dear little Countess. Do you see? Now let us sit down
together at this little table, where Mouthier has prepared a most delicate
repast; and as we eat and quaff together some of the golden wine of
Champagne, we will talk. Will you not thus honor me, madame?"

Deborah, who had grown very white during the King's speech, looked
anxiously about her.

"We are utterly alone. None can hear us," observed his Majesty again,
with the idea of being reassuring. He did his companion unguessed injustice.
She had been thrown into a sudden panic of fear.

"Pardon, your Majesty, I—I do not desire to eat. I am not hungry. When
M. de Gêvres conducted me here, I did not understand what he meant. If you
will grant me permission, I will go."

This speech pleased the King incredibly. Here at last was a woman who
would not fall at his feet, whom it were worth his while to win. Her fear was
certainly genuine. She was actually moving towards the door. He did not stir
from his place, wishing not to alarm her further.
"My dear Mme. de Mailly, how cruel to leave me quite alone! As your
sovereign, I might command. As a man, however, I only entreat. Try, for me,
one of these rissoles, which I myself assisted in making. Ah! That is better."

Deborah, something reassured by the quiet tone and the apparent liberty
which was hers, looked doubtfully over to the little table whose glass and
gold shone brightly under the great chandelier. The King was holding a chair
for her. Flight now, were there really nothing intended by this gallantry,
might be a little awkward to explain next day. After a moment's thought,
Deborah went slowly over and sat down at the table. Louis, with a sigh of
comfort and relief, placed himself beside her; and, taking her plate, filled it
with portions from a number of dishes. The girl looked down at them with a
troubled expression. She was thinking of Choisy.

"Madame—pledge me in this," murmured the King, filling her broad-


bowled glass with the sparkling wine which she did not very much like.
Wetting her lips with it, however, she said, demurely: "To your Majesty."

"Oh—that is a cold toast indeed. See, I will do better." He lifted his


glass. "I drink to Deborah de Mailly, lady of the palace of the Queen, and
beloved comrade of his Gracious Majesty the Fifteenth Louis of France. Eh,
little one, is it not better?"

"Lady of the palace of the Queen," repeated Deborah, slowly, her large
eyes fixed upon the King's face.

"Yes, I have said it. Your appointment is here," he replied, tapping the
breast of his coat. "Now tell me what else there is in the world that you wish
for. Ah—there is something, I know. Estates—money—servants—what will
you have, my little one?"

Deborah shivered with cold. She realized the situation now, and the
nerves beneath her flesh were quivering. Pulling herself together with a
strong mental effort, she sat up, rigid and stiff, before her untouched food.
Her mind was quite clear, her path well defined.

"What is it that you want? I read desire in your eyes," repeated the King,
thinking to win his suit more easily than he had at first believed.
"No, no. There is nothing. I—thank your Majesty for your kindness.
There is nothing that I want. Indeed, indeed, there is nothing."

"Happiest of humankind! To want nothing! Yet there is something that I


desire. I, King of France, am not like you. Can you guess, Deborah, what it
is that I long for more than I wanted my crown?"

"Another rissole, Sire, I think."

He was put out, and yet there was a little twinkle in her eyes that became
her wonderfully, and seemed, too, to give him hope. After an instant he felt
that anger was unnecessary, and thus recovered his ardent dignity as best he
could. "I beg of you—be serious. Since you will name for me nothing that
you wish, I will at least tell you in what you are lacking. When you hear
these things—desire will be born. Madame—read this."

From his coat Louis took a broad paper, folded and royally sealed.
Deborah, her face troubled and her hands shaking slightly, rose to receive it,
and, after a moment of hesitation, at a most impatient nod from the King,
broke the seals, and found the inside of the document covered with the neat,
legible writing of Maurepas. She glanced quickly over its lines:

"The right to confer titles of honor being one of the most sublime
attributes of supreme power, the Kings, our predecessors, have left us divers
monuments of the use they have made of it in favor of persons whose virtues
and merits they desired to extol and make illustrious. Considering that our
very dear and well-beloved cousin, Deborah Travis, wife of the Comte de
Mailly, issues from one of the greatest families of a nation closely allied to
us, whom we delight to honor; that she is attached as lady of the palace to
the Queen, our very dear companion; that she is united by marriage to one of
the most ancient and illustrious families in our realm, whose ancestors have,
for several centuries, rendered important services to our crown; and that she
joins to all these advantages those virtues and qualities of heart and mind
which have gained for her a just and universal consideration, we take the
highest satisfaction in proclaiming her succession to the title and estate of
that esteemed and honored lady, her cousin, Marie Anne de Mailly, and we
hereby invest her with the Duchy of Châteauroux, together with all its
appurtenances and dependencies, situated in Berry,"*
* This form is taken from the letters-patent used in the case of Marie
Anne de Mailly.

Deborah, having finished the perusal of this document, let it float from
her fingers to the floor, while she stood perfectly still, staring at the face of
the man seated before her. Her expression, first of amazement, then of
horror, was changing now to something puzzled and undecided, which the
King beheld with relief.

"Madame," he observed, "you should thank me. I make you first lady of
the Court. I give you title, wealth, power. I place a Queen below you in my
own esteem. I give you ministers to command, no one to obey. I make your
antechamber a room more frequented than my own cabinet. I leave it for
you, if you wish it, to rule France. And what is it that I ask in return?
Nothing! Nothing that your own generosity will not grant without the asking.
Think of what you are, and of what you will become. Have you, then, no
word in which to thank me?"

He also had risen now, and was looking at her, as she stood, with a
mixture of curiosity, admiration, and impatience.

Deborah was still—so still that she might have been taken for a man-
made thing. And by the expression of her face Louis knew that he must not
speak more now. She was fighting her battle; his forces must win or lose as
they stood, augmented no further. Before her had risen the picture of two
lives, the one that was opening to her and the one that she had thought to
live. As she thought, the real life, for a little, grew dim, distant, unimportant.
The other, with its scarce imaginable power, glory, position, became clearer
and still more clear till she could see into its inmost depths. Adulation,
pleasure, riches, ease, universal sway, a court at her feet, a King to bar
malice from her door, an existence of beauty, culture, laughter, light,
founded on—what? ending—how? Yes, these questions came, inevitably. To
answer the first, she looked slowly over the man before her, as he stood in all
the beauty of his young manhood and majesty. Nevertheless, through that
beauty his true nature was readable, showing plainly through his eyes, in the
expression of his heavy lower lip, in his too weak chin—that sullen, morose,
pettish, carnal, warped nature, best fitted for the peasant's hut, destined by
Fate, lover of grim comedy, for the greatest palace of earth. This man, who
had no place in her soul-life, must build her pedestal, must place her thereon.
And the end of all—when end should come—ah! Now Deborah saw again
the bed of Marie Anne de Châteauroux, with the Duchess upon it, as she had
lain there for the last time. And Marie Anne de Mailly had been Claude's
cousin—Claude's—

"Mme. de Châteauroux, will you examine to-night your apartments in


the little courts? Will you take possession at—"

"Oh!—O God!—Help me!"

"What are you saying!" uttered the King, sharply.

Then she turned upon him with that which for the moment she had let lie
dormant in her heart, now all awake and quivering with life—her love for
Claude. It was, perhaps, God, who was helping as she asked.

"I am saying that I refuse to listen any more to your insults. I am saying
that I am ashamed—utterly ashamed—that you should so have thought of
me that you dare offer them. I am not Duchess of Châteauroux!" She placed
her foot on the fallen paper, and stammered over the French words as she
spoke, for she was thinking in English now. "God save me from it! I am no
lady of the palace of the Queen—I am not of Versailles, nor of France. I owe
allegiance to no French King. I come from a country that is true and sweet
and pure, where they hate and despise your French ways, your unholy
customs, your laws, your manners, your dishonoring of honest things, your
treatment of women. I am honest. I hate myself for having lived among you
for months as I have done. I am going away, I will leave here, this place, to-
night. If my—my husband will not take me—I shall go back alone, by the
way I came, to my country, where the men, if they are awkward, are upright,
if the women have not etiquette, they are pure.—Let me go!—Let me go!"
"'I AM NOT THE DUCHESS OF CHATEAUROUX'"

Louis, in a sudden access of fury, had sprung forward and seized her by
the wrists. Deborah's temper was fully roused at last; her blood poured hotly
through her veins. Her life had become a little thing in comparison to the
laws for which she was speaking, the sense of right which seemed to hold no
part in this French order of things. Bracing herself as she might in her high-
heeled slippers, she suddenly threw all her weight forward against the man,
taking him off his guard, and so forcing him back that he was obliged to
loosen his hold of her in order to regain equilibrium. The instant that she was
free Deborah turned and fled to the door. She flung herself bodily against it.
It was locked from the outside.

"Good Heaven!" muttered the girl, in English.

"What is it you say, dear madame?" inquired the King, smiling in


amused triumph as she turned to him, still grasping the handle of the door.
"You are unfair! This is unlawful! I am not to blame!" she said, her voice
quivering.

"Madame—my dear Deborah—who could be unfair with you?" He came


towards her, looking not too well pleased that she shrank back as far as
possible at his approach. When she was close against the immovable door,
and he just before her, he stopped, looked at her for a long moment with a
peculiar, half-patronizing smile, then suddenly fell upon his knee at her feet,
and captured one of her unwilling hands.

"Deborah—my Deborah—quel drôle de nom!—let us now forget locked


doors, let us forget Majesties and riches and favors, and let us think only that
here am I, Louis, thus before you, declaring my love. Let us make as though
we were two peasants. I swear to you that to me you are all in all. Without
you I cannot live. All the days of my life I will work for you, will cherish
you. Now tell me if you will not accept such love?"

Deborah looked into the uplifted face of the King. Certainly it was
marvellously handsome—beautiful enough to have turned the heads of many
women. Perhaps, after all, there was excuse for those poor creatures, the
three sisters, who had yielded to him. Perhaps, after all, pity was their only
just measure. But she—Deborah Travis—had known handsome faces before.
Indeed, she had come near to life-long unhappiness through that which she
had known best. Suddenly, as in a picture, she beheld there, beside the King,
the head of Charles Fairfield. Yes, Louis was the finer-featured of the two.
Nevertheless, all temptation was gone.

"Monsieur le Roi," she said, clearly, and with a kind of cynicism even
through her nervousness, "you are too late. I have been courted before, and
I've plighted my troth and given my heart into some one's keeping. You are
too late."

"Diable! Dix milles diables!" cried his Majesty, scrambling awkwardly


to his feet and backing away from her. "Do you know who I am?—what I
can do, madame? Do you know that, with one word, I can exile you? Bah!
Who—who—is the man you prefer to me?"

"My husband," was the demure reply.


"Oh! It is an insult! Already your husband has his commands. He leaves
Versailles to-night, forever. Do not be afraid."

"Leaves to-night!" A dark flush spread over Deborah's face. "Leaves to-
night! Mon Dieu! When—where—how? Oh, I will go now! You shall let me
go to him, do you hear? At once! Why, I shall be left here alone! I—I—shall
be like Mme. de Coigny. Your Majesty—" suddenly she grew calm, and her
voice gently sweet—"Your Majesty, let me go."

"As you have seen, the door is locked."

"Open it, then, or—there is another!" she pointed across the room to the
door in the opposite wall which led into the royal suite.

The King moved about quickly, placing himself in front of it. The act
was sufficient. It showed Deborah that she had neither pity nor mercy to
hope for, nothing but her own determination on which to depend. And, as the
knowledge of helplessness became more certain, so did her will become
stronger, her brain more alert. She looked about the room. Was there a
weapon of defence or of attack anywhere within reach? On the supper-table
were knives and forks of gold—dull, useless things. On one side of the room
was a great clock; on the mantel stood another. There were also stiff chairs,
tabourets, an escritoire, and the table—these were all. What to do? She must
get home, get to Claude, as rapidly as possible. Would he be there? Would he
have trusted and waited for her? If not—what? She would not think of that
now. She must first escape through that unlocked door guarded by the King.
How to do it? Strategy, perhaps.

"Well, madame, have you decided?" inquired the King, coolly.

Deborah gave a slight, pretty smile. "I have only decided that I should
like to finish Mouthier's comfits. We have not even touched the cream," she
said, coquettishly.

Louis laughed. "Ah! That is well, that! Let us sit down."

Pardonable vanity, considering his experiences heretofore, had thrown


him easily off his guard. So the two seated themselves again at the little
table, Deborah, for an added bit of flattery, as he thought, taking the chair
which he had used before, and which was nearest the door of escape. The
King helped her bountifully to the smooth cream, which she began upon
with apparent avidity.

"Louis," she said, suddenly, looking at him with a significant smile and
eyes half closed, "pick up for me the paper that I dropped upon the floor. I—
have not finished reading it."

The King was enchanted. She was surrendering at last. If she chose to
make it easier for her vanity by treating him like a servant—why, he was
willing. He rose at once and went back to the spot where Maurepas'
document had fallen and been spurned by Deborah's heel. He stooped to pick
it up. There was a crisp rustle of stiff, silk petticoats. He looked up just in
time to behold his prize fling open the north door and hurry through it into
the room beyond. This was the King's bedroom, and in it, at this hour, were
only Bachelier, Levet, and two under-footmen. These four, in open-mouthed
amazement, beheld the flying figure of a lady burst in from the Salle des
Pendules, run across the royal room, and escape into the council-chamber,
just as the King, purple with anger, shouted from the doorway: "Beasts!
Fools! Idiots! Could you not hold her?"

Bachelier started up. "Shall I follow, your Majesty?"

"No, imbecile! Should the King's valet be seen chasing a woman through
the corridors of Versailles at midnight? Ah! It is abominable!"

Thereupon his gracious Majesty threw himself into an arm-chair with an


expression on his royal countenance which plainly told his valet that it
would be many days ere an unnecessary word again passed the master's lips.

Once more, as a year ago, Henri de Mailly-Nesle sat in Claude's


bedroom, on the eve of that young man's departure from Versailles. But the
situation was different enough this time. Now it was Henri who, with a
strong effort, sat trying to calm the feverish excitement and anxiety of the
other. Upon the floor an open coffer stood ready; but nothing had yet been
put into it. Claude would not admit a servant to the room. He was pacing
rapidly up and down, up and down the apartment, talking sometimes wildly
to Henri, sometimes silent, sometimesfx muttering incoherently to himself.
His dress was disordered, his wig awry; one slipper and his sword had been
tossed together into a corner. He was for the time bereft of reason. It was
now half an hour since the return from the palace. D'Argenson's letter had
been found awaiting them, but Claude had not read it. What need was there
to do so?

"Henri, two hundred thousand is too much for the estate. The château is
impossible—you are giving me money. I'll not have it—"

"Chut, child! Do you think—"

"Ah! She has not come—she does not come—she does not come! I shall
go mad. I shall shoot myself if she does not return! Mon Dieu!—Mon Dieu!"

"Claude, be calm. There is time. She could not yet have got away. Be
calm. She will come, of course."

Henri spoke soothingly, but, as the minutes passed, and still Deborah
delayed, his heart sank. What to do with his cousin? Claude would, in a little
time, be actually unbalanced, he feared.

"Henri, the château might be repaired. I should like to live in it again. I


should like to be buried there. Ah, if she is not here in ten minutes, I shall
use my pistol. Then I will be buried there, in the vault, beside Alexandre.
Poor Alexandre! You remember—he never knew her. He knew what it
meant to lose his—Deborah!—Deborah!—Deborah! Mon Dieu, Henri, I
have been brutal to her. She will not come back. The time is come—the time
is come—I will put an end to myself!"

Claude made a quick dash for the table, on which, amid a pile of varied
articles, were his duelling pistols. He picked one of them up. Henri sprang
from his place and seized his cousin round the shoulders.

"Idiot!—Put it down!—Stop!"

Claude was struggling to free himself from the grasp. The strength of a
madman seemed to be in his arms. Henri felt his hold weakening. He was
being repulsed.

"Armand!" shouted the Marquis hoarsely. "Armand! A moi! Au secours!


Monsieur le Comte—"

"Mordi! you shall not!" growled Claude, furiously. "I tell you she is not
coming! I will kill myself! Let me—let me go!"

With a mighty wrench Claude pulled himself free, overbalancing his


cousin, who fell heavily to the floor. Claude had the pistol in his hand. The
valet had not appeared. For just the shade of an instant de Mailly hesitated.

"Claude!" came a tremulous, quivering voice from the doorway.

The weapon clattered to the floor. Claude held out both arms, and
Deborah, dazed, weary, utterly happy, went into them and was clasped close
to his heart.

"Claude—we must go away," she whispered, her lips close to his ear.

"We will go,"

"Where—where—Claude?"

"I have no longer a country, my wife. But I know that which is there for
us over the sea—that wherein I found you first."

Deborah gave a little sob of relief; and, as her lips met those of her
husband, Henri de Mailly, who had kept him for her, sharply turned away.

EPILOGUE

A Trail on the Water


And thus at last we come down to the sea—black, murmurous waste—
rolling vastly under the evening sky, and against the far golden horizon. In
this swift approaching night all that has been, all the base dishonesty, the
foulness, the little-visible much-felt, shall be washed away, for it is the world
that was. When the dripping sun flashes up again out of the east, 'twill be to
send a shower of golden beams down the wind that is bearing a white-
winged bark westward over the blue expanse. What two souls this vessel
bears, whence—from what darkness of the Old—whither—to what
brightness of the New—need scarce be told. The trial of their faith and love
is over. Obedient to the victory call, out of the depths that have so long
surrounded them, the future, star-crowned, rises up at last.

THE END
*** END OF THE PROJECT GUTENBERG EBOOK THE HOUSE
OF DE MAILLY ***

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
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