Book Image

Architecting Cloud Native Applications

By : Kamal Arora, Erik Farr, John Gilbert, Piyum Zonooz
Book Image

Architecting Cloud Native Applications

By: Kamal Arora, Erik Farr, John Gilbert, Piyum Zonooz

Overview of this book

Cloud computing has proven to be the most revolutionary IT development since virtualization. Cloud native architectures give you the benefit of more flexibility over legacy systems. This Learning Path teaches you everything you need to know for designing industry-grade cloud applications and efficiently migrating your business to the cloud. It begins by exploring the basic patterns that turn your database inside out to achieve massive scalability. You’ll learn how to develop cloud native architectures using microservices and serverless computing as your design principles. Then, you’ll explore ways to continuously deliver production code by implementing continuous observability in production. In the concluding chapters, you’ll learn about various public cloud architectures ranging from AWS and Azure to the Google Cloud Platform, and understand the future trends and expectations of cloud providers. By the end of this Learning Path, you’ll have learned the techniques to adopt cloud native architectures that meet your business requirements. This Learning Path includes content from the following Packt products: • Cloud Native Development Patterns and Best Practices by John Gilbert • Cloud Native Architectures by Erik Farr et al.
Table of Contents (24 chapters)
Title Page
Copyright and Credits
About Packt
Contributors
Preface
Index

Preface

Cloud computing has proven to be the most revolutionary IT development since virtualization. Cloud native architectures give you the benefit of more flexibility over legacy systems.This Learning Path teaches you everything you need to know for designing industry-grade cloud applications and efficiently migrating your business to the cloud. It begins by exploring the basic patterns that turn your database inside out to achieve massive scalability. You’ll learn how to develop cloud native architectures using microservices and serverless computing as your design principles. Then, you’ll explore ways to continuously deliver production code by implementing continuous observability in production. In the concluding chapters, you’ll learn about various public cloud architectures ranging from AWS and Azure to the Google Cloud Platform, and understand the future trends and expectations of cloud providers.By the end of this Learning Path, you’ll have learned the techniques to adopt cloud native architectures that meet your business requirements. This Learning Path includes content from the following Packt products:

  • Cloud Native Development Patterns and Best Practices by John Gilbert
  • Cloud Native Architectures by Erik  Farr et al.

Who this book is for

This Learning Path is designed for developers who want to progress into building cloud native systems and are keen to learn the patterns involved. Software architects, who are keen on designing scalable and highly available cloud native applications, will also find this Learning Path very useful. To easily grasp these concepts, you will need basic knowledge of programming and cloud computing.

 

What this book covers

Chapter 1, Understanding Cloud Native Concepts, covers the promise of cloud-native: to enable companies to continuously deliver innovation with confidence. It reveals the core concepts and answers the fundamental question: what is cloud-native?

Chapter 2The Anatomy of Cloud Native Systems, begins our deep dive into the architectural aspects of cloud-native systems. It covers the important role that asynchronous, message-driven communication plays in creating proper bulkheads to build a reactive, cloud-native system that is responsive, resilient, and elastic. You will learn how cloud-native turns the database inside out and ultimately turns the cloud into the database.

Chapter 3, Foundation Patterns, covers the patterns that provide the foundation for creating bounded isolated components. We eliminate all synchronous inter-component communication and build our foundation on asynchronous inter-component communication, replication, and eventual consistency.

Chapter 4, Boundary Patterns, covers the patterns that operate at the boundaries of cloud-native systems. The boundaries are where the system interacts with everything that is external to the system, including humans and other systems.

Chapter 5, Control Patterns, covers the patterns that provide the flow of control for collaboration between the boundary components. It is with these collaborations that we ultimately realize the intended functionality of a system.

Chapter 6, Deployment, describes how we shift deployments all the way to the left and decouple deployment from release to help enable teams to continuously deploy changes to production and continuously deliver innovation to customers with confidence.

Chapter 7, Testing, describes how we shift testing all the way to the left, weave it into the CI/CD pipeline, and leverage isolated and transitive testing techniques to help enable teams to continuously deploy changes to production and deliver innovation to customers with confidence.

Chapter 8, Monitoring, describes how we shift some aspects of testing all the way to the right into production to assert the success of continuous deployments and instill team confidence by increasing observability, leveraging synthetic transaction monitoring, and placing our focus on the mean time to recovery.

Chapter 9, Security, describes how we leverage the shared responsibility model of cloud-native security and adopt the practice of security-by-design to implement secure systems.

Chapter 10, Cloud Native Application Design, dives deep into the development of cloud native architectures, using microservices and serverless computing as a design principle.  

Chapter 11, How to Choose Technology Stacks, explores the common technology that is used to create cloud native architectures, from open source to licensed software. It will explore marketplaces that can be used to consume resources in the cloud. Finally, it will discuss the procurement process and licensing models that are common in the cloud.

Chapter 12, Scalable and Available, talks about available tools/features and strategies to employ when designing cloud native systems for scale and HA. The chapter will explore how these tools/features work, how they enable cloud native applications and how to deploy them.

 Chapter 13, Optimizing Cost, covers the pricing model for Cloud environments. We will then discuss how to approach costing exercises as well as the differences between the old and cloud models.

Chapter 14, Amazon Web Services, focuses on providing a perspective on Amazon Web Services' cloud native application development capabilities, strengths, ecosystem maturity, and overall approach.

Chapter 15, Microsoft Azure, focuses on providing a perspective on Microsoft Azure's cloud native application development capabilities, strengths, ecosystem maturity, and overall approach.

Chapter 16, Google Cloud Platform, focuses on providing a perspective on Google Cloud Platform's cloud native application development capabilities, strengths, ecosystem maturity, and overall approach.

Chapter 17, What's Next? Cloud Native Application Architecture Trends, looks at future trends and what to expect from various cloud providers in this space.

To get the most out of this book

Cloud experience is not a prerequisite for this book, but experienced readers will find the content readily applicable. The examples used in this book require an AWS account. You can sign up for a free trial account via the AWS website (https://aws.amazon.com/free). The examples are written in NodeJS (https://nodejs.org) and leverage the Serverless Framework (https://serverless.com/framework). The README file in the code bundle contains installation instructions. The examples leverage the powerful HighlandJS (http://highlandjs.org) streaming library.

Download the example code files

You can download the example code files for this book from your account at www.packt.com. If you purchased this book elsewhere, you can visit www.packt.com/support and register to have the files emailed directly to you.

You can download the code files by following these steps:

  1. Log in or register at www.packt.com.
  2. Select the SUPPORT tab.
  3. Click on Code Downloads & Errata.
  4. Enter the name of the book in the Search box and follow the onscreen instructions.

Once the file is downloaded, please make sure that you unzip or extract the folder using the latest version of:

  • WinRAR/7-Zip for Windows
  • Zipeg/iZip/UnRarX for Mac
  • 7-Zip/PeaZip for Linux

The code bundle for the book is also hosted on GitHub at https://github.com/PacktPublishing/-Architecting-Cloud-Native-Applications. In case there's an update to the code, it will be updated on the existing GitHub repository.

We also have other code bundles from our rich catalog of books and videos available at https://github.com/PacktPublishing/. Check them out!

Conventions used

There are a number of text conventions used throughout this book.

CodeInText: Indicates code words in text, database table names, folder names, filenames, file extensions, pathnames, dummy URLs, user input, and Twitter handles. Here is an example: "Notice that the ItemChangeEvent format includes both the old and new image of the data."

 

A block of code is set as follows:

const raiseTestError = () => {
   if (Math.floor((Math.random() * 5) + 1) === 3) {
     throw new Error('Test Error'); // unhandled
   }
 }

Bold: Indicates a new term, an important word, or words that you see onscreen. 

There is a concise diagramming convention used throughout this book. Cloud-native components have many moving parts, which can clutter diagrams with a lot of arrows connecting the various parts. The following sample diagram demonstrates how we minimize the number of arrows by placing related parts adjacent to each other so that they appear to touch. The nearest arrow implies the flow of execution or data. In the sample diagram, the arrow on the left indicates that the flow moves through the API gateway to a function and into the database, while the arrow on the right indicates the flow of data out of the database stream to a function and into the event stream. These diagrams are creating using Cloudcraft (https://cloudcraft.co).

Note

Warnings or important notes appear like this.

Note

Tips and tricks appear like this.

 

 

Get in touch

Feedback from our readers is always welcome.

General feedback: If you have questions about any aspect of this book, mention the book title in the subject of your message and email us at [email protected].

Errata: Although we have taken every care to ensure the accuracy of our content, mistakes do happen. If you have found a mistake in this book, we would be grateful if you would report this to us. Please visit www.packt.com/submit-errata, selecting your book, clicking on the Errata Submission Form link, and entering the details.

Piracy: If you come across any illegal copies of our works in any form on the Internet, we would be grateful if you would provide us with the location address or website name. Please contact us at [email protected] with a link to the material.

If you are interested in becoming an author: If there is a topic that you have expertise in and you are interested in either writing or contributing to a book, please visit authors.packtpub.com.

Reviews

Please leave a review. Once you have read and used this book, why not leave a review on the site that you purchased it from? Potential readers can then see and use your unbiased opinion to make purchase decisions, we at Packt can understand what you think about our products, and our authors can see your feedback on their book. Thank you!

For more information about Packt, please visit packt.com.