Architecting Cloud Native Applications
eBook - ePub

Architecting Cloud Native Applications

Design high-performing and cost-effective applications for the cloud

  1. 526 pages
  2. English
  3. ePUB (mobile friendly)
  4. Available on iOS & Android
eBook - ePub

Architecting Cloud Native Applications

Design high-performing and cost-effective applications for the cloud

Book details
Book preview
Table of contents
Citations

About This Book

Apply cloud native patterns and practices to deliver responsive, resilient, elastic, and message-driven systems with confidence

Key Features

  • Discover best practices for applying cloud native patterns to your cloud applications
  • Explore ways to effectively plan resources and technology stacks for high security and fault tolerance
  • Gain insight into core architectural principles using real-world examples

Book Description

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.

What you will learn

  • Understand the difference between cloud native and traditional architecture
  • Automate security controls and configuration management
  • Minimize risk by evolving your monolithic systems into cloud native applications
  • Explore the aspects of migration, when and why to use it
  • Apply modern delivery and testing methods to continuously deliver production code
  • Enable massive scaling by turning your database inside out

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.

Frequently asked questions

Simply head over to the account section in settings and click on “Cancel Subscription” - it’s as simple as that. After you cancel, your membership will stay active for the remainder of the time you’ve paid for. Learn more here.
At the moment all of our mobile-responsive ePub books are available to download via the app. Most of our PDFs are also available to download and we're working on making the final remaining ones downloadable now. Learn more here.
Both plans give you full access to the library and all of Perlego’s features. The only differences are the price and subscription period: With the annual plan you’ll save around 30% compared to 12 months on the monthly plan.
We are an online textbook subscription service, where you can get access to an entire online library for less than the price of a single book per month. With over 1 million books across 1000+ topics, we’ve got you covered! Learn more here.
Look out for the read-aloud symbol on your next book to see if you can listen to it. The read-aloud tool reads text aloud for you, highlighting the text as it is being read. You can pause it, speed it up and slow it down. Learn more here.
Yes, you can access Architecting Cloud Native Applications by Kamal Arora, Erik Farr, John Gilbert, Piyum Zonooz in PDF and/or ePUB format, as well as other popular books in Computer Science & Cloud Computing. We have over one million books available in our catalogue for you to explore.

Information

Year
2019
ISBN
9781838642396
Edition
1

Amazon Web Services

Amazon Web Services (AWS) is the pioneer in the cloud computing space. It started offering IT infrastructure services in 2006, when the term cloud computing hadn't even been coined! The first few services that AWS launched were Amazon Simple Queue Service (SQS), Amazon Simple Storage Service (S3), and Amazon Elastic Compute Cloud (EC2), and ever since there's been no stopping. Today, AWS is probably one of the most advanced and mature public cloud providers, with presence across 18 geographic regions, 130+ services, and has already announced plans to launch many more in the days ahead. Over a period of time, AWS has also diversified into various new technology and solutions spaces, that has even blurred the typical definitions of IaaS, PaaS, and SaaS. In this chapter, we will discuss some of these differentiators and new architectural patterns which can help you with a mature cloud-native experience by leveraging multiple AWS services. The following are some of the specific topics that you will learn about in this chapter:
  • AWS' cloud-native services, strengths, and differentiators around CI/CD, serverless, containers, and microservices concepts, and covering the following services:
    • AWS CodeCommit
    • AWS CodePipeline
    • AWS CodeBuild
    • AWS CodeDeploy
    • Amazon EC2 Container Service
    • AWS Lambda
    • Amazon API Gateway
  • Management and monitoring capabilities for AWS cloud-native application architectures
  • Patterns for moving off monolithic application architectures to AWS native architectures
  • Sample reference architectures and code snippets for CI/CD, serverless, and microservices application architectures
To keep yourself updated on the latest AWS announcements and service launches news, subscribe to the following resources:
  • What's new page (https://aws.amazon.com/new)
  • AWS blog (https://aws.amazon.com/blogs/aws)

AWS' cloud native services (CNMM Axis-1)

As a start, let's look at the core services that AWS has to offer, which will be relevant to creating your applications in a cloud-native way.

Introduction

AWS offers a very rich portfolio of services that includes core components around infrastructure capabilities, such as Amazon EC2 (virtual servers in the cloud), Amazon EBS (block storage for EC2), Amazon S3 (cloud-based object storage), and Amazon VPC (isolated cloud resources using virtualized networks). These services have existed for multiple years now and are pretty mature for an enterprise-scale deployment level as well. Apart from scale, these services have very deep feature sets that provide ample options to the end customers to pick and choose configurations as per their specific business requirements. As an example, Amazon EC2 offers more than 50 different types of instances to cater to various possible workloads and use cases. So, if a customer to host a high-performance computing (HPC) workload, then there's an option to use compute optimized instances, whereas if you have a NoSQL database that is hungry for high IOPS with low storage latency, then storage optimized instances come in handy.
In fact, AWS has been adding newer instances types as well as updating to newer, faster processors with larger memory footprints every year, which makes it easier for the customers to leverage the latest and greatest compute configurations without having to worry about typical data center procurement and upgrade cycles. Likewise, on the storage and networking front, Amazon EBS, Amazon S3, and Amazon VPC provide multiple configuration options that can provide flexibility when required.
Couple of the biggest benefits that cloud provides are Elasticity and Agility, which basically means that you can spin up and down your infrastructure in lines with your application's needs. This is very different from the traditional data center approach, where everything had to provisioned for peaks, because of which the infrastructure resources were either way too underutilized or were not scalable for some unpredictable peaks. This has radically changed with the cloud, where providers such as AWS have come up with innovative services such as Auto Scaling, wherein you can automatically change your compute fleet size based on certain application behaviors, such as increased CPU utilization or even custom application monitoring metrics. Apart from triggers based on scaling, you can also autoscale the compute capacity based on time-based usage patterns, for example, hourly, daily, or weekly variability in usage. Very similar to compute autoscaling, AWS also offers Elastic EBS volumes, wherein you can increase volume size, adjust performance, or change the volume type while the volume is in use. These types of services and capabilities are definitely differentiators for the cloud and have in fact become the new normal to build web-scale applications. However, in order to use some of these autoscaling features, applications also need to be ready from an architecture standpoint. As an example, if you want to use autoscaling capabilities for your web server fleet to accommodate increased load on your website, then one of the core changes needed from an application standpoint is that you should not have session state information stored locally on any web server. The same should be externalized in a cache (such as Amazon ElastiCache) or even a database (such as Amazon DynamoDB), so that you can seamlessly scale up or down your webservers fleet without having to worry about a users' session disruption because of that.
The following is a sample architecture that AWS publishes for auto-scalable web applications using various core services:
Now, over and above the core building blocks, such as the ones mentioned in the preceding diagram, AWS offers various higher-level managed services that make it easier for the end user to quickly start deploying their applications without having to worry too much about the underlying infrastructure. As an example, there's Amazon RDS, which is a managed relational database service for MySQL, PostgreSQL, Oracle, SQL Server, and MariaDB. Amazon RDS provides flexibility to set up and operate a relational database while automating time-consuming administration tasks, such as hardware provisioning, database setup, patching, and backups. So, by using this service, you can quickly get started with your database deployments without requiring any specific database administrator level skills. Apart from this, AWS also offers many other services, such as AWS Elastic Beanstalk (to run and manage web apps) and Amazon OpsWorks (to automate operations with Chef), which are like higher-level services in the category of PaaS.
Using these services, you can quickly get your applications running on AWS without getting into the nitty-gritty of the underlying infrastructure. With Amazon OpsWorks, you get an extra set of controls as well, wherein if you want to automate a specific application setup/launch procedure, then you have the capabilities to do that using your own custom Chef recipes.
Other than the preceding points, AWS also offers PaaS services in the big data / analytics and AI space, such as Amazon EMR (hosted Hadoop framework), Amazon Kinesis (works with real-time streaming data), Amazon Lex (builds voice and text chatbots), Amazon Rekognition (searches and analyzes images), and Amazon Polly (turns text into lifelike speech). Using these types of service, developers and data architects can easily create their applications by focusing more on the business logic than the underlying infrastructure management aspects.
Over the last few years, AWS has aggressively moved much further in terms of offering totally newer types of services, which are closer to SaaS. These are mainly the services as part of its business productivity category, such as Amazon Chime (a managed service for video calls and chat), Amazon WorkDocs (enterprise storage and sharing service), and Amazon Connect (managed contact center service). This is a fairly new area for AWS as well, but as these services along with the ecosystem matures, it will create new possibilities for end users to look at the cloud, not just from an infrastructure or platform perspective, but to also utilize productivity software in a pay-as-you-go model.

AWS platform – differentiators

CNMM is a maturity model wherein if you are using only core building blocks from the cloud (such as, infrastructure components), then you are also cloud-native, but might be less mature than someone else who might be using services higher up the stack to actually get the full benefits of Cloud. So, based on this concept, if you have to truly leverage the power of AWS cloud, then you ...

Table of contents

  1. Title Page
  2. Copyright and Credits
  3. About Packt
  4. Contributors
  5. Preface
  6. Understanding Cloud Native Concepts
  7. The Anatomy of Cloud Native Systems
  8. Foundation Patterns
  9. Boundary Patterns
  10. Control Patterns
  11. Deployment
  12. Testing
  13. Monitoring
  14. Security
  15. Cloud Native Application Design
  16. How to Choose Technology Stacks
  17. Optimizing Cost
  18. Scalable and Available
  19. Amazon Web Services
  20. Microsoft Azure
  21. Google Cloud Platform
  22. What's Next? Cloud Native Application Architecture Trends
  23. Other Books You May Enjoy