.NET DevOps for Azure: A Developer's Guide to DevOps Architecture the Right Way 1st Edition Jeffrey Palermo instant download
.NET DevOps for Azure: A Developer's Guide to DevOps Architecture the Right Way 1st Edition Jeffrey Palermo instant download
https://ebookmeta.com/product/net-devops-for-azure-a-developers-
guide-to-devops-architecture-the-right-way-1st-edition-jeffrey-
palermo/
https://ebookmeta.com/product/the-definitive-guide-to-azure-data-
engineering-modern-elt-devops-and-analytics-on-the-azure-cloud-
platform-1st-edition-ron-c-lesteve-2/
https://ebookmeta.com/product/the-definitive-guide-to-azure-data-
engineering-modern-elt-devops-and-analytics-on-the-azure-cloud-
platform-1st-edition-ron-c-lesteve/
https://ebookmeta.com/product/1200-devops-developer-interview-
questions-and-answers-mcq-format-1st-edition-manish-salunke/
https://ebookmeta.com/product/perturbed-semi-markov-type-
processes-i-limit-theorems-for-rare-event-times-and-processes-
dmitrii-silvestrov/
A Family of His Own Stories Of Us Book 3 1st Edition
Rheland Richmond
https://ebookmeta.com/product/a-family-of-his-own-stories-of-us-
book-3-1st-edition-rheland-richmond/
https://ebookmeta.com/product/oedipus-rex-in-the-genomic-era-
human-behaviour-law-and-society-1st-edition-yulia-kovas/
https://ebookmeta.com/product/modularizing-legacy-projects-using-
tdd-test-driven-development-with-xctest-for-ios-1st-edition-
khaled-el-morabea/
https://ebookmeta.com/product/teaching-english-language-
learners-43-strategies-for-successful-k-8-classrooms-1st-edition-
michaela-colombo/
https://ebookmeta.com/product/cryptography-and-cryptanalysis-in-
matlab-creating-and-programming-advanced-algorithms-1st-edition-
marius-iulian-mihailescu/
Comedy in Crises Weaponising Humour in Contemporary Art
1st Edition Chrisoula Lionis
https://ebookmeta.com/product/comedy-in-crises-weaponising-
humour-in-contemporary-art-1st-edition-chrisoula-lionis/
.NET DevOps
for Azure
A Developer’s Guide to DevOps
Architecture the Right Way
—
Jef frey Palermo
www.allitebooks.com
.NET DevOps for Azure
A Developer’s Guide to DevOps
Architecture the Right Way
Jeffrey Palermo
www.allitebooks.com
.NET DevOps for Azure: A Developer’s Guide to DevOps Architecture the Right Way
Jeffrey Palermo
Austin, TX, USA
www.allitebooks.com
To my wonderful wife Liana.
Thank you for your help, your smile, and for keeping
the kids out of my office while I finished the last chapter.
www.allitebooks.com
Table of Contents
About the Author����������������������������������������������������������������������������������������������������� xi
Acknowledgments������������������������������������������������������������������������������������������������� xiii
Introduction�����������������������������������������������������������������������������������������������������������xvii
Chapter 1: Introduction�������������������������������������������������������������������������������������������� 1
The Problem���������������������������������������������������������������������������������������������������������������������������������� 1
The Challenge of Explosive Growth����������������������������������������������������������������������������������������� 2
No End-to-end Reference Implementation������������������������������������������������������������������������������ 4
The Solution���������������������������������������������������������������������������������������������������������������������������������� 4
DevOps Architecture���������������������������������������������������������������������������������������������������������������� 5
DevOps Methodology������������������������������������������������������������������������������������������������������������� 15
How to Get Started���������������������������������������������������������������������������������������������������������������������� 17
Application Runtime Architectures���������������������������������������������������������������������������������������� 18
The Necessary Tools�������������������������������������������������������������������������������������������������������������� 19
The Sample Application��������������������������������������������������������������������������������������������������������� 19
About the Book���������������������������������������������������������������������������������������������������������������������������� 22
Wrap Up�������������������������������������������������������������������������������������������������������������������������������������� 23
Bibliography�������������������������������������������������������������������������������������������������������������������������������� 24
www.allitebooks.com
Table of Contents
vi
Table of Contents
Production Environment�������������������������������������������������������������������������������������������������������� 82
Production Monitoring and Diagnostics�������������������������������������������������������������������������������� 82
Tools of the Professional DevOps Environment��������������������������������������������������������������������������� 83
Azure DevOps Services��������������������������������������������������������������������������������������������������������� 84
Azure Subscription���������������������������������������������������������������������������������������������������������������� 85
Visual Studio 2019����������������������������������������������������������������������������������������������������������������� 86
A DevOps-Centered Application�������������������������������������������������������������������������������������������������� 86
Using Onion Architecture to Enable DevOps�������������������������������������������������������������������������� 87
Implementing Onion Architecture in .NET Core��������������������������������������������������������������������� 90
Integrating DevOps Assets����������������������������������������������������������������������������������������������������� 92
Wrap Up�������������������������������������������������������������������������������������������������������������������������������������� 94
Bibliography�������������������������������������������������������������������������������������������������������������������������������� 94
vii
Table of Contents
viii
Table of Contents
Afterword�������������������������������������������������������������������������������������������������������������� 265
Index��������������������������������������������������������������������������������������������������������������������� 269
ix
About the Author
Jeffrey Palermo is currently the Chief Architect and CEO of Clear Measure, Inc., a
DevOps-centered software engineering company. He is also the founder of the Azure
DevOps Podcast and the Azure DevOps User Group. Previously he was a founding board
member of AgileAustin, the founder of AzureAustin, and a leader in the Austin .NET User
Group.
Jeffrey is a well-known author and international public speaker. He has received
13 Most Valuable Professional awards from Microsoft and has spoken at industry
conferences such as Microsoft TechEd, Microsoft Ignite, Microsoft Build, DevTeach,
VSLive, and various other regional conferences. Jeffrey has other books in the ASP.NET
MVC in Action series as well as two video books on ASP.NET MVC and nearly a dozen
magazine articles on various .NET development topics.
Jeffrey resides just outside of Austin, TX, with his wife, three children,
and various livestock.
xi
Acknowledgments
First, I must thank God and his son, Jesus, for giving me the ability to think and
write. Next, I’d like to thank my beautiful wife, Liana, for being awesome at her job
and affording me the flexibility to go away and concentrate for long periods of time
while writing this text. With three kids in the household, she is an expert mother and
homemaker, and this book would not exist without her expert work. Thank you to my
kids, Gwyneth Rose, Xander Jeffrey-Boris, and Annika Noel. Thanks also to my parents,
Peter and Rosemary Palermo, for instilling in me a love of books and learning from
an early age. I also need to recognize my college professor at Texas A&M, Mike Hnatt,
who, through his programming courses, business coaching, and ongoing friendship,
has continued to mentor me. Additionally, I’d like to acknowledge Jack Welch, of whose
MBA program I am a graduate. From him, his books, and his curriculum, I learned to use
fewer words when presenting ideas and information.
To Steve Hickman, thank you for being my first and longest-tenured software mentor.
Steve was my first boss. He hired me for my first programming position 22 years ago. He
now mentors the software engineers and architects at Clear Measure, Inc. He has been
instrumental in forming the vision for how to simplify software engineering on the .NET
platform.
To Megan Beutler, thank you for your ongoing encouragement. Megan has
been a part of Clear Measure for over five years and has been a constant source of
encouragement and positivity. She brightens the day of anyone in her path.
To the engineers and architects at Clear Measure, Inc., who are blazing the trail of
better .NET software methods and the DevOps approach illustrated in this book. Without
the learning from the many client projects, the guidance of this book would not exist.
Thank you to Rayne Fulton, Tony Fauss, Nick Becker, Scott Wilson, Troy Vinson, Danny
Vandergriff, Vlad Serafimov, Eric Fleming, Colin Pear, Corey Keller, Kyle Nunery, Eric
Williams, Mike Alpert, Mike Sigsworth, Zeeshan Ansari, Joe Lockbaum, Valerie Gurka,
Haley Akchurin, Trish Polay, Eric Farr, Richard Hartness, Monica Pritchard, Jim Wallace,
Justin Basinger, and Chris Thomas.
To Scott Guthrie, whose leadership at Microsoft not only with .NET but also
with the Azure platform has made it the leading computing platform on the planet.
xiii
Acknowledgments
I’ve considered Scott a friend since 2006. In 2017, I met with Scott at his office for
almost an hour talking about the problem that is addressed in this book. That most
.NET developers have too many options, too many disconnected tools, and that the
DevOps environment for .NET and Azure isn’t defined in a cohesive, simple way. Scott
encouraged me to build the model that would show developers how to bring everything
together.
To Scott Hunter, who heads up the .NET platform at Microsoft. Scott and I discussed
this book in mid-2018 over lunch, mulling over the complexity of choices developers need
to make when choosing how to bring together the different elements of the Microsoft
platform in order to create an environment that causes the “pit of success” – where things
fall into place because everything is integrated properly. Thank you, Scott, for being the
sponsor of this book.
Finally, I’d like to mention some influential people who have taught me, knowingly
or not, some key skills and habits along my career. Each of these has had either a direct
or indirect impact on the synthesis of ideas and patterns in this book. First, Robbie
McDonald, who took a chance on a cold resume for an internship at Dell. Through
the chance he took on me, I was exposed very early in my career to very complex,
sophisticated, and high-scale computer systems. Next, Eric Brand was the first architect
I worked under. At that time, I didn’t understand the difference between a software
developer and a software architect. Eric was patient, encouraging, and always had
time for questions. Under his projects, I became deeply adept with the .NET runtime
and SQL Server, much more than I had been in the past. When the Iraq war started in
2003, my Army Reserve unit was called up for back-to-back tours in Iraq for 15 months.
I was paired with Brett Rogers as co-truck-commanders in our HET tank transport
company. Brett was also a .NET developer. Thanks, Brett, for the welcome .NET pair
programming out in the Iraq desert. Next, I’d like to acknowledge Steve Donie. Steve
taught me continuous integration and the mechanisms of build scripts. The build script
in this book is an adaptation of build scripts he authored many years ago in both Ant and
NAnt. Additionally, Jeremy Miller taught me dependency management and test-driven
development. As the author of StructureMap, Jeremy afforded me an opportunity to
contribute to that open source project as well as the deep learning applying it on some
complex software projects. Paul Leury also played a key role in some of the patterns in
this book. Paul hired me into my first management position. The team I managed under
Paul built a significant native Windows desktop application. During that project, my
thoughts on hub and spoke architecture and application buses solidified. The learning
xiv
Acknowledgments
on that project made its way into the application bus pattern in the MvcContrib open
source library as well as some projects that contributed to Jimmy Bogard’s Mediatr
library. Code in this example application is adapted from both of those open source
projects. I next must thank Eric Hexter and Stephen Balkum for hiring me as an
independent consultant advising one of their team architects, Blake Caraway, who has
remained a good friend. Through that work, the guidance on team workflow and process
emerged. Additionally, Eric has been a thought leader on deployment automation and
production operations. I learned a great deal in those areas from him. He was a terrific
asset as a cofounder of the MvcContrib OSS project as well as a coauthor with me on
previous books in the “ASP.NET MVC in Action” series. Some of his work is cited in this
book. Additionally, I thank my previous coauthors of various books. In working with
them I became better at authoring larger bodies of work. Thanks to Ben Scheirman,
Jimmy Bogard, Jeremy Skinner, Matt Hinze, and Eric Hexter. Finally, thanks to all the
great people in the Microsoft MVP program. I’ve learned something from each of you
since my time in the program from 2006 until now. Specifically, thanks to Carl Franklin,
for helping me start the Azure DevOps Podcast and for your friendship.
My final acknowledgment goes to Kevin Hurwitz. We made the transition from
developer to architect at a similar time. Kevin was instrumental as a sounding board,
challenger, and coprofessional with me as we developed some of the ideas in this book
while working on mutual projects. Notably was when Kevin introduced me to the SQL
schema migration pattern that has now become industry standard and implemented
by multiple libraries and products. The pattern he taught me is now recognized across
the DevOps community and is in this book. Kevin has also contributed to many of the
other ideas that have made their way into this book. Thank you, Kevin, for your ideas,
innovation, and your friendship over the years.
xv
Introduction
This book has been a culmination of long-time vision, some key leadership, and a
confluence of industry events. Almost 15 years ago, the author gained a passion for
helping developers succeed, for making the complex simple, and for finding rules of
thumb that would work for 80% of situations. With too many options in the software world
and too many answers of “it depends,” the industry has been starved for the ability to do
something “by the book.” This book seeks to provide that text where a .NET developer
can say “I’m doing DevOps with .NET and Azure by the book.” In this manner, one would
know what models and patterns were in play and what to expect from said environment.
This book is being released while .NET Core 3 is in preview status; therefore, the version
of the book should be considered preview as well. The examples largely use Visual Studio
2019 preview edition. The code itself and the Azure DevOps Services pipeline function
perfectly well with .NET Core 2.2, however, and can be used to implement applications
immediately. It is the intent of the author to release a .NET Core 3 edition aligning with
Microsoft’s release schedule. The example configuration used throughout this book
can be leveraged through a public project and source code repository online
at https://dev.azure.com/clearmeasurelabs/Onion-DevOps-Architecture.
xvii
CHAPTER 1
Introduction
You, dear reader, are starting down the path of excellence. By picking up this book, you
are showing your leadership and resolve to equip your development organization to be
world class, competing with any other development group on the planet. You are taking
initiative. You are a software leader. You are confronting the challenge head-on. This
book is for you. This book is a synthesis of practices, tools, and processes that, together,
can equip a software organization to move fast and deliver software of the highest
quality. In this chapter, we cover the relevant common problem our industry faces, the
solution to that problem, and how to implement it for your team. This text goes hand in
hand with a fully implemented example publicly available at https://dev.azure.com/
clearmeasurelabs/Onion-DevOps-Architecture.
T he Problem
Every day, millions of developers use .NET to build and operate mission-critical software
systems for organizations around the world. Visual Studio, .NET, and Windows Server,
whether on-premise or in Azure, provide astounding capabilities that enable any
kind of software. The marketplace has scores of books, online courses, and tutorials
teaching every technology framework and language feature. Microsoft’s own online
documentation is broad and comprehensive. The Microsoft platform, along with the
marketplaces, extensions, and packages, has a building block for everything you can
imagine. BUT, it is completely up to you to put it all the blocks together in just the right
way for YOUR environment. This book seeks to change that.
1
© Jeffrey Palermo 2019
J. Palermo, .NET DevOps for Azure, https://doi.org/10.1007/978-1-4842-5343-4_1
Another Random Scribd Document
with Unrelated Content
were violent denunciations of any liberty to Nonconformists, and
they again voted the continuance of the Conventicle Act. They then
adjourned from the 8th of May to the 11th of August.
Buckingham, who, during the session of Parliament, had not found
himself very popular, now the object of driving out Clarendon was
accomplished, in seeking to strengthen his party by removing such
as were not favourable to him, drove his plans almost too far. He
had a dread of Clarendon returning through the influence of his
daughter, the Duchess of York, and he endeavoured to undermine
the duke with the king. He blamed the conduct of the Admiralty, at
the head of which James was; he displaced James's friends, and put
his own dependents into offices in James's own department, in spite
of his remonstrances; he spread rumours that the duke had lost the
royal favour, and was about to be dismissed from the office of Lord
Admiral. He even affected to go about with armed followers, on the
plea of being in danger from the duke. But Charles soon convinced
the minister that these attempts were vain, and then Buckingham
began to pay court to the duke, which was repelled with contempt.
The only mode of maintaining favour with Charles was to find plenty
of money, and as Buckingham had failed in that, he recommended
retrenchment and economy, which suited Charles still less. For the
rest, both Court and minister went on their way of open profligacy,
and it would have been difficult to say which was the most void of
shame or principle, the king or his chief servant. Charles was
surrounded by Sedley, Buckhurst, and other libertines, who treated
all the decencies of life with contempt, and the monarch laughed
and encouraged them. Though Miss Stewart had become Duchess of
Richmond, he continued his attentions to her. He had elevated
actresses to places in his harem, who bore the familiar names of
Moll Davies and Nell Gwynn. Moll Davies was a dancer, Nelly was an
actress of much popularity, and was a gay, merry, and witty girl, who
extremely amused the king by her wild sallies. By Mary Davies he
had a daughter, who afterwards married into the noble family of
Radclyffe. Nell was the mother of the first Duke of St. Albans; and
Castlemaine, who had now a whole troop of little Fitzroys, was
during the next year made Duchess of Cleveland. Another lady was
already on the way from France, sent by the cunning Louis XIV. for
his own purposes. As for Buckingham, he very successfully imitated
his royal master. In January of this year he fought a duel with Lord
Shrewsbury, whose wife he had seduced; and Pepys says that it was
reported that Lady Shrewsbury, in the dress of a page, held the
duke's horse whilst he killed her husband. He then took her to his
own house, and on his wife remarking that it was not fit for herself
and his mistress to live together, he replied, "Why, so I have been
thinking, madame, and therefore I have ordered your coach to carry
you to your father's."