This document discusses various options for migrating applications to the AWS cloud. It begins by covering planning and strategy, then discusses common migration patterns like moving an entire application or individual tiers. Various AWS services for deployment are presented, including Elastic Beanstalk for simplified deployments, OpsWorks for configuration management, and CloudFormation for declarative infrastructure templates. The document provides examples and comparisons of how each service addresses deployment needs for different types of developers.
Dev Dives: Streamline document processing with UiPath Studio Web
Day 4 - Cloud Migration - But How?
1. Cloud Migration - But How?
#include <for application developers>
Peter ‘Dr Pete’ Stanski
Principal Solutions Architect
stanski@amazon.com
2. Agenda
v • Planning your Migration to AWS Cloud
• Selecting Migration Patterns for your applications
• Walk through your options and associated AWS Services
3. Planning Your Cloud Migration Strategy
v
White Paper: Migrating your Existing Apps to the AWS Cloud
http://bit.ly/CloudMigrationStrategy
4. Planning Your Cloud Migration Strategy
v
White Paper: Migrating your Existing Apps to the AWS Cloud
http://bit.ly/CloudMigrationStrategy
5. Early Candidate Targets
• Spikey workloads (e.g. web applications)
v
• Dev/Test applications and their environments
• Grid computing / 3D / Image Rendering Apps
• Analytics Applications
AND
• Explosive data growth
• Application backup and archiving
• App Disaster recovery options
6. Our Shared Security Model
Customer applications & content
v
Platform, Applications, Identity & Access Management
Operating System, Network, & Firewall Configuration
AWS Foundation Services
Compute Storage Database Networking
Availability Zones
AWS Global
Infrastructure Regions
Edge Locations
Client-side Data
Encryption
Server-side Data
Encryption
Network Traffic
Protection
Customers
Customers have
their choice of
security
configurations IN
the Cloud
AWS is
responsible for
the security OF
the Cloud
7. What We Are Trying to Achieve…
v
Corporate
Data Centers
On-Premises
Resources
Cloud
Resources
Integration
Network Connectivity (Internet, VPN or Direct Connect)
• Maintain Existing Compliance
• Leverage Previous Investments
• Maintain & Interoperate with Legacy workloads
8. Common Migration Patters: Move Entire Application
v
App
1
App
2
App
Corporate N
Data Center
Assumption:
• Application is a self contained atomic unit
• Application Tiers and Data can be moved all at one
9. Common Migration Patters: Move Application Tier(s)
v
Corporate
Data Center
Assumption:
App Web
App Middle
...
App DB
Application is well understood & latency is not an issue
10. What Kind of Developer, Coder or Software
Engineer Are You?
• Developer/Coder: v
• Wants to predominantly work on their application. And….
A) has little to do with infrastructure the application runs upon; OR
B) “lightly” involved in the underlying infrastructure their application runs on.
• Software Engineer/Architect:
• Intimately works on all application components and deeply involved in what
infrastructure the solution runs on.
• Jumps in and engineers under the hood for maximum solution performance.
• Dev Ops Engineer:
• Heavily involved in Continuous Integration/ Continuous Deployment (CI/CD).
• Automates anything and everything possible for maximum change velocity.
15. Application Deployment and Provisioning Options
v
Elastic Compute Cloud Application Container Application Automation Templated Provisioning
Elastic Beanstalk OpsWorks CloudFormation
Amazon EC2
You bring your application and AWS provide a managed runtime
16. Beanstalk supports a range of runtime containers
v
.Net Java Python NodeJS
Ruby PHP Docker
24. Automatically Deploy Web Solutions
• Example Wizard driven deployment from within Visual
Studio IDE (Eclipse also supported)
v
25. Application Deployment and Provisioning Options
v
Elastic Compute Cloud Application Container Application Automation Templated Provisioning
Elastic Beanstalk OpsWorks CloudFormation
Amazon EC2
You bring your application (Chef recipes) and AWS makes it easy to
deploy and operate applications of all shapes and sizes
26. v
AWS OpsWorks Primer
A stack represents your
application. One stack
might be used for
staging and another for
production.
A layer defines how to
setup and configure a
set of instances and
related resources such
as volumes
and software.
Simply tell OpsWorks
where it can find your
code and define any
additional deployment
tasks. Then OpsWorks
will take care of
deploying your app in
your desired
configuration.
Scale your stack based on
time or load. Clone your
production stack to a
different region. Set
up user permissions and
access. Automate
workflows for common
tasks.
27. The heart of the OpsWorks Service
v
Agent on each
EC2 instance
talks with OpsWorks
30. Application Deployment and Provisioning Options
v
Elastic Compute Cloud Application Container Application Automation Templated Provisioning
Elastic Beanstalk OpsWorks CloudFormation
Amazon EC2
Declaratively define your entire architecture, applications, OS
deployment scripts, databases and control other AWS services.
For those that want full control of everything – DevOps centric
31. CloudFormation Components
v
Template
JSON formatted file
Parameter definition
Resource creation
Configuration actions
CloudFormation
Framework
Stack creation
Stack updates
Error detection and rollback
Stack
Configured AWS services
Comprehensive service support
Service event aware
Customisable
33. User Input Driven
v
{
Snippet: Taking user defined parameters
"Parameters" : {
"KeyName" : {
"Description" : "Name of an existing EC2 KeyPair to enable SSH access to the
instance",
"Type" : "String"
}
},
}
Template
JSON formatted file
Parameter definition
Resource creation
Configuration actions
• Templates can take user input to feed configuration values for
other sections of the Template
34. What does a Database definition look like?
Snippet: Creating a SQL Server Express RDS instance
v
Template
JSON formatted file
Parameter definition
Resource creation
Configuration actions
“RDSmsSqlDB": {
"Type": "AWS::RDS::DBInstance",
"Properties": {
"AllocatedStorage": "20",
"BackupRetentionPeriod": "1",
"DBInstanceClass": "db.t1.micro",
"DBName": "MsSQLDatabase",
"DBParameterGroupName": "default.sqlserver-ex-10.5",
"Engine": "sqlserver-ex",
"EngineVersion": "10.50.2789.0.v1",
"MasterUsername": "xxxx",
"MasterUserPassword": "xxxx",
"Port": "1433",
"PreferredBackupWindow": "00:00-00:30",
"PreferredMaintenanceWindow": "mon:15:30-mon:16:00",
"DBSecurityGroups": [
{
"Ref": "dbsgdefault"
}
]
}
},
More Information at http://aws.amazon.com/documentation/cloudformation/
35. Benefits of Templated Environments
v
CloudFormation
Template
Procedural definition
Create it programmatically
Known configuration
Store stack configuration in source control
Parameter driven
Dynamic and user-driven templates
Collaboration
Share templates with ease as just files
36. Elastic Beanstalk & CloudFormation
“I just want my app to v
run, and I only want
access to machines if I
really need to”
“I want to source control
my entire datacenter
deployment like I would
my configuration files”
Growing
Requirements
Elastic
Beanstalk CloudFormation AWS
High level, shrink
wrapped rapid
approach
Fine grained,
declarative control
over all your assets
Platform
Tools
37. New Services coming from AWS for devs….
v
• Elastic Container Service
• High performance container management service that supports Docker containers and allows you to
easily run distributed applications on a managed cluster of Amazon EC2 instances.
• AWS Lambda
• Compute service that runs your code in response to events.
• Lambda starts your code within milliseconds of an event such as an image upload, in-app activity,
website click, or output from a connected device.
• CodeCommit, CodeDeply & CodePipeline
• CodeCommit is a secure, highly scalable, managed source control service that hosts private Git repositories.
• CodePipeline continuous delivery and release automation service that aids smooth deployments.
• CodeDeploy is a service that automates code deployments to Amazon EC2 instances.
CodeCommit
(Source Control)
CodePipeline
(CI/CD Workflow)
CodeDeploy
(Deployment)
38. Summary
• Covered how to plan your appvlication migration to AWS
• Explored application migration patters – horizontal & vertical
• Covered 4 main options & AWS services that assist developers
• Do It Yourself
• Automated managed environments & deployments
• Layered Architecture Stacks with recipe driven customizations
• DevOps centric – Declarative models
40. AWS Training & Certification
AWS offers Training and Certification to help you develop your skills and gain recognition for your technical experience
with AWS services and solutions.
v
Online Training
Gain confidence and hands-on
experience with AWS. Watch free
Instructional Videos and explore Self-
Paced Labs
Instructor Led Classes
Learn how to design, deploy and operate
highly available, cost-effective and secure
applications on AWS in courses led by
qualified AWS instructors
AWS Certification
Validate your technical expertise with
AWS and use practice exams to help you
prepare for AWS Certification
http://aws.amazon.com/training
Build complex, dynamic applications that adapt to changes
Configure instances and install software (e.g., PHP app server, …)
Deploy your apps
Update dependencies (e.g., load balancer, database, monitoring)
Manage who can control your app