Learning AWS - Second Edition

Book description

Discover techniques and tools for building serverless applications with AWS

About This Book

  • Get well-versed with building and deploying serverless APIs with microservices
  • Learn to build distributed applications and microservices with AWS Step Functions
  • A step-by-step guide that will get you up and running with building and managing applications on the AWS platform

Who This Book Is For

If you are an I.T. professional or a system architect who wants to improve infrastructure using AWS, then this book is for you. It is also for programmers who are new to AWS and want to build highly efficient, scalable applications.

What You Will Learn

  • Set up your AWS account and get started with the basic concepts of AWS
  • Learn about AWS terminology and identity access management
  • Acquaint yourself with important elements of the cloud with features such as computing, ELB, and VPC
  • Back up your database and ensure high availability by having an understanding of database-related services in the AWS cloud
  • Integrate AWS services with your application to meet and exceed non-functional requirements
  • Create and automate infrastructure to design cost-effective, highly available applications

In Detail

Amazon Web Services (AWS) is the most popular and widely-used cloud platform. Administering and deploying application on AWS makes the applications resilient and robust. The main focus of the book is to cover the basic concepts of cloud-based development followed by running solutions in AWS Cloud, which will help the solutions run at scale.

This book not only guides you through the trade-offs and ideas behind efficient cloud applications, but is a comprehensive guide to getting the most out of AWS. In the first section, you will begin by looking at the key concepts of AWS, setting up your AWS account, and operating it. This guide also covers cloud service models, which will help you build highly scalable and secure applications on the AWS platform. We will then dive deep into concepts of cloud computing with S3 storage, RDS and EC2. Next, this book will walk you through VPC, building realtime serverless environments, and deploying serverless APIs with microservices. Finally, this book will teach you to monitor your applications, and automate your infrastructure and deploy with CloudFormation.

By the end of this book, you will be well-versed with the various services that AWS provides and will be able to leverage AWS infrastructure to accelerate the development process.

Style and approach

  • Learn to write, run, and deploy applications in the AWS cloud
  • Make the most of AWS to build scalable and cost-efficient systems
  • A practical guide to developing serverless services and make the applications run faster

Publisher resources

View/Submit Errata

Table of contents

  1. Title Page
  2. Copyright and Credits
    1. Learning AWS Second Edition
  3. Packt Upsell
    1. Why subscribe?
    2. PacktPub.com
  4. Contributors
    1. About the authors
    2. About the reviewer
    3. Packt is searching for authors like you
  5. Preface
    1. Who this book is for
    2. What this book covers
    3. To get the most out of this book
      1. Download the color images
      2. Conventions used
    4. Get in touch
      1. Reviews
  6. Cloud 101 – Understanding the Basics
    1. Defining cloud computing
    2. Introducing public, private, and hybrid clouds
    3. Introducing cloud service models – IaaS, PaaS, and SaaS
    4. Introducing multi-tenancy models
    5. Understanding cloud-based workloads
      1. Migrating on-premise applications to the cloud
      2. Building cloud-native applications
    6. Setting up your AWS account 
      1. Creating a new AWS account
      2. Exploring the AWS management console 
    7. Summary 
  7. Designing Cloud Applications
    1. Introducing cloud-based multitier architecture
    2. Designing for multi-tenancy 
      1. Addressing data-at-rest security requirements
      2. Addressing data extensibility requirements
    3. Understanding cloud applications design principles
      1. Designing for scale
      2. Automating cloud infrastructure
      3. Designing for failure
      4. Designing for parallel processing
      5. Designing for performance
      6. Designing for eventual consistency
    4. Understanding emerging cloud-based application architectures
      1. Understanding polyglot persistence
      2. Understanding Lambda architecture
      3. Understanding Kappa architecture
      4. Deploying cloud-based machine learning pipelines
      5. Deploying cloud-based machine learning models
    5. Estimating your cloud computing costs
    6. A typical e-commerce web application
      1. Setting up your development environment
        1. Running the application
        2. Building a war file for deployment
        3. Application structure
    7. Summary
  8. Introducing AWS Components
    1. AWS components
      1. Amazon compute-related services
        1. Amazon EC2
        2. Amazon EC2 container service
        3. AWS Lambda
      2. Amazon storage-related services
        1. Amazon S3
        2. Amazon EBS
        3. Amazon Glacier
      3. Amazon database-related services
        1. Amazon Relational Database Service (RDS)
        2. Amazon DynamoDB
        3. Amazon Redshift
        4. Amazon ElastiCache
      4. Amazon messaging-related services
        1. Amazon SQS
        2. Amazon SNS
        3. Amazon SES
        4. Amazon Pinpoint
      5. Amazon networking and content delivery services
        1. Amazon VPC (Virtual Private Cloud)
        2. Amazon Elastic Load Balancing
        3. Amazon Route 53
        4. Amazon CloudFront
        5. AWS Direct Connect
      6. Amazon management tools
        1. AWS CloudFormation
        2. Amazon CloudWatch
        3. AWS CloudTrail
      7. Amazon security, identity, and compliance services
        1. AWS Identity and Access Management (IAM)
        2. AWS Directory Service
        3. Amazon Certificate Manager
        4. AWS Key Management Service
        5. AWS WAF
      8. Amazon analytics-related services
        1. Amazon EMR
        2. Amazon Kinesis
      9. Amazon machine learning/AI-related services
        1. Amazon Machine Learning
        2. Other Amazon AI-related services 
      10. Other Amazon services
    2. Managing costs on AWS cloud
      1. Setting costs-related objectives
      2. Optimizing costs on the cloud
      3. Strategies to lower AWS costs
        1. Monitoring and analyzing costs
        2. Choosing the right EC2 Instance
        3. Turn-off unused instances
        4. Using Auto Scaling
        5. Using reserved instances
        6. Using spot instances
        7. Using Amazon S3 storage
        8. Optimizing database utilization and costs
        9. Using AWS services
        10. Using queues
    3. Application development environments
      1. Development environment
      2. QA/test environment
      3. Staging environment
      4. Production environment
    4. Setting up the AWS infrastructure
      1. AWS Cloud deployment architecture
      2. AWS cloud construction
        1. Creating security groups
        2. Creating EC2 instance key pairs
        3. Creating roles
        4. Creating an EC2 instance
        5. Creating and associating Elastic IPs (EIP)
        6. Configuring the Amazon Relational Database Service (RDS)
        7. Installing and verifying the software stack  
    5. Summary
  9. Designing for and Implementing Scalability
    1. Defining scalability objectives
    2. Designing scalable application architectures
      1. Using AWS services for out-of-the-box scalability
      2. Using a scale-out approach
      3. Implementing loosely-coupled components
      4. Implementing asynchronous processing 
    3. Leveraging AWS infrastructure services for scalability
      1. Using AWS CloudFront to distribute content
      2. Using AWS ELB to scale without service interruptions
      3. Using Amazon CloudWatch for Auto Scaling
      4. Scaling data services
      5. Scaling proactively
      6. Using the EC2 container service
    4. Evolving architecture against increasing loads
      1. Scaling from one to half a million users
      2. Scaling from half a million to a million users
      3. Scaling from a million to ten million users
    5. Event handling at scale
      1. Implementing a large-scale API-based architecture with AWS services
        1. Using Amazon API Gateway
        2. Using AWS Lambda
        3. Using Kinesis Streams
        4. Using Elasticsearch
      2. Analyzing streaming data in real time with Amazon Kinesis Analytics
        1. Using Amazon Kinesis Firehose
        2. Using Amazon Kinesis Analytics
        3. Building real-time applications with Amazon Kinesis Analytics
    6. Setting up Auto Scaling
      1. AWS Auto Scaling construction
        1. Creating an AMI
        2. Creating the Elastic Load Balancer
        3. Creating launch configuration
        4. Creating an Auto Scaling group
      2. Testing Auto Scaling groups
    7. Summary 
  10. Designing for and Implementing High Availability
    1. Defining availability objectives
    2. Nature of failures
      1. Setting up VPC for high availability
      2. Using ELB and Route 53 for high availability
        1. Instance availability
        2. Auto Scaling for increased availability and reliability
        3. Zonal Availability or Availability Zone Redundancy
        4. Region availability or regional redundancy
      3. Setting up high availability for application and data layers
        1. Implementing high availability in the application
      4. Using AWS for disaster recovery
        1. Using a backup and restore DR strategy
        2. Using a Pilot Light architecture for DR
        3. Using a warm standby architecture for DR
        4. Using a Multi-Site architecture for DR
      5. Testing disaster recovery strategy
    3. Setting up high availability
      1. AWS high availability architecture 
        1. HA support for Elastic Load Balancer
        2. HA support for the Relational Database Service
    4. Summary
  11. Designing for and Implementing Security
    1. Defining security objectives
    2. Understanding the security responsibilities
    3. Best practices in implementing AWS security
      1. Security considerations while using CloudFront
        1. CloudFront and ACM integration
        2. Understanding access control options
        3. Web Application Firewall
        4. Securing the application
      2. Implementing Identity Lifecycle Management
      3. Tracking AWS API activity using CloudTrail
      4. Logging for security analysis
      5. Using third-party security solutions
      6. Reviewing and auditing security configuration
    4. Setting up security
      1. Using AWS IAM to secure an infrastructure
        1. Understanding IAM roles
      2. Using the AWS Key Management Service
        1. Creating KMS keys
        2. Using the KMS key
      3. Application security
        1. Implementing transport security
        2. Generating self-signed certificates
        3. Configuring ELB for SSL
      4. Securing data at rest
        1. Securing data on S3
        2. Using the S3 console for server-side encryption
        3. Securing data on RDS
    5. Summary
  12. Deploying to Production and Going Live
    1. Managing infrastructure, deployments, and support at scale
    2. Creating and managing AWS environments using CloudFormation
      1. Creating CloudFormation templates
      2. Building a DevOps pipeline with CloudFormation
      3. Updating stacks
      4. Extending CloudFormation
    3. Using CloudWatch for monitoring
    4. Using AWS solutions for backup and archiving
    5. Planning for production go-live activities
    6. Setting up for production
      1. AWS production deployment architecture
        1. VPC subnets
        2. Private subnet
        3. Bastion subnet
        4. Bastion host
        5. Security groups
      2. Infrastructure as Code
        1. Setting up CloudFormation
      3. Centralized logging
      4. Setting up CloudWatch
    7. Summary
  13. Designing a Big Data Application
    1. Introducing big data applications
      1. AWS components used in big data applications
    2. Analyzing streaming data with Amazon Kinesis
    3. Best practices for serverless big data applications
    4. Best practices for using Amazon EMR
      1. Understanding common EMR use cases
      2. Lowering EMR costs
        1. Using Amazon EC2 Spot and Auto Scaling
    5. Best practices for distributed machine learning and predictive analytics
      1. Using Amazon SageMaker for machine learning
      2. Understanding Amazon SageMaker algorithms and features 
    6. Security overview for big data applications
      1. Securing the EMR cluster
        1. Encryption
        2. Authentication
        3. Authorization
      2. Securing serverless applications
        1. Understanding serverless application authentication and authorization
    7. Configuring and using EMR-Spark clusters
    8. Summary
  14. Implementing a Big Data Application
    1. Setting up an Amazon Kinesis Stream
    2. Creating an AWS Lambda function
    3. Using Amazon Kinesis Firehose
    4. Using AWS Glue and Amazon Athena
    5. Using Amazon SageMaker
    6. Summary
  15. Deploying a Big Data System
    1. Using CloudFormation templates
      1. Creating a data lake using a CloudFormation template
    2. Authoring and deploying serverless applications
      1. Understanding AWS SAM 
        1. Understanding the SAM template
        2. Introducing SAM Local
        3. Developing serverless applications using AWS Cloud9
      2. Automating serverless application deployments
    3. Using AWS Serverless Application Repository
    4. Summary
  16. Other Books You May Enjoy
    1. Leave a review - let other readers know what you think

Product information

  • Title: Learning AWS - Second Edition
  • Author(s): Aurobindo Sarkar, Amit Shah
  • Release date: February 2018
  • Publisher(s): Packt Publishing
  • ISBN: 9781787281066