© 2015, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Johnathon Meichtry
Principal Solutions Architect APAC
Twitter: @cloudguyapac
5th November 2015
Migrating Applications to the
AWS Cloud
Planning your Migration to AWS Cloud
Selecting Migration Patterns for your applications
Walk through your options and associated AWS Services
Sections
Planning Your Cloud Migration Strategy
http://bit.ly/CloudMigrationStrategy
White Paper: Migrating your Existing Apps to the AWS Cloud
Planning Your Cloud Migration Strategy
http://bit.ly/CloudMigrationStrategy
White Paper: Migrating your Existing Apps to the AWS Cloud
Early Candidate Targets
• Spikey workloads (e.g. web applications)
• 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
Our Shared Security Model
AWS Foundation Services
Compute Storage Database Networking
AWS Global
Infrastructure Regions
Availability
Zones Edge
Locations
Client-side Data
Encryption
Server-side Data
EncryptionNetwork Traffic
Protection
Platform, Applications, Identity & Access Management
Operating System, Network, & Firewall Configuration
Customer applications & content
Custo
mers
Customers have
their choice of
security
configurations
IN the Cloud
AWS is
responsible for
the security OF
the Cloud
What We Are Trying to Achieve…
Corporate
Data Centers
On-Premises
Resources
Cloud
ResourcesIntegration
• Maintain Existing Compliance
• Leverage Previous Investments
• Maintain & Interoperate with Legacy workloads
Network Connectivity (Internet, VPN or Direct Connect)
Assumption:
Application is a self contained atomic unit
Application Tiers and Data can be moved all at one
Common Migration Patters: Move Entire
Application
App
1
App
2
App
NCorporate
Data Center
Assumption:
Application is well understood & latency is not an issue
Common Migration Patters: Move Application Tier(s)
...
Corporate
Data Center
App Web
App Middle
App DB
Developer/Coder:• 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.
What Kind of Developer, Coder or Software
Engineer Are You?
Application Deployment and Provisioning Options
Elastic Beanstalk OpsWorks CloudFormation
Elastic Compute Cloud Application Container Application Automation Templated Provisioning
Amazon
EC2Developer / Coder
Dev Ops Engineer
Software Engineer/Architect
Higher-level Services
Application Deployment and Provisioning Options
Elastic Beanstalk OpsWorks CloudFormation
Elastic Compute Cloud Application Container Application Automation Templated Provisioning
Amazon
EC2
Do it yourself (DIY) application deployment – on a virtual machine
EC2 (Virtual Machine) Instance Families
General Purpose: M1, M3 (, T2)
Compute Optimized: C1, CC2, C3, C4
Memory Optimized: M2, CR1, R3
Storage Optimized: HI1, HS1, I2
GPU: CG1, G2
Micro: T1, T2
Application Deployment and Provisioning Options
Elastic Beanstalk OpsWorks CloudFormation
Elastic Compute Cloud Application Container Application Automation Templated Provisioning
Amazon
EC2
You bring your application and AWS provide a managed runtime
.Net Java Python
NodeJS Ruby PHP
Docker
Beanstalk supports a range of runtime containers
User Application
Application Service
HTTP Service
Language Interpreter
Operating System
Host
…all wired into the Beanstalk framework
Example Wizard driven deployment from within Visual Studio IDE
(Eclipse also supported)
Automatically Deploy Web Solutions
Application Deployment and Provisioning Options
Elastic Beanstalk OpsWorks CloudFormation
Elastic Compute Cloud Application Container Application Automation Templated Provisioning
Amazon
EC2
You bring your application (Chef recipes) and AWS makes it easy to
deploy and operate applications of all shapes and sizes
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.
The heart of the OpsWorks Service
Agent on each
EC2 instanceOpsWorkstalks with
Instance Lifecycle and Configuration Hooks
Deploying you Apps via OpsWorks
Application Deployment and Provisioning Options
Elastic Beanstalk OpsWorks CloudFormation
Elastic Compute Cloud Application Container Application Automation Templated Provisioning
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
CloudFormation Components
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
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
{
"Parameters" : {
"KeyName" : {
"Description" : "Name of an existing EC2 KeyPair to enable SSH access to the
instance",
"Type" : "String"
}
},
}
Snippet: Taking user defined parameters
Template
JSON formatted file
Parameter definition
Resource creation
Configuration actions
User Input Driven
What does a Database definition look like?
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"
}
]
}
},
Snippet: Creating a SQL Server Express RDS instance
More Information at http://aws.amazon.com/documentation/cloudformation/
Benefits of Templated Environments
CloudFormation
Template
Procedural definitionCreate it programmatically
Known configurationStore stack configuration in source
control
Parameter drivenDynamic and user-driven templates
CollaborationShare templates with ease as just
files
“I just want my app to
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”
Elastic Beanstalk & CloudFormation
Growing
Requirements
High level, shrink
wrapped rapid
approach
Fine grained,
declarative control
over all your assets
Elastic
Beanstalk CloudFormationAWS
Platform
Tools
Others Services to consider….
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)
Covered how to plan your application 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
Summary
Thank you
Migrating Applications to the AWS Cloud
Johnathon Meichtry
@cloudguyapac