SlideShare a Scribd company logo
@zinimanboazz@amazon.com
Dev & Test on AWS
October 2017
Boaz Ziniman - Technical Evangelist - AWS
Local Events: https://aws.amazon.com/events/aws-israel/
Journey Through the Cloud
Learn from the journeys taken by other AWS
customers
Discover best practices that you can use to bootstrap your
projects
Common use cases and adoption models for the AWS Cloud
Development & Test on AWS
Explore the benefits of AWS with a ‘non-production’ use case
Create agility in development & test whilst ‘learning cloud’
Exercise elasticity and automation to real advantage
Agenda
Why AWS for development & test workloads?
AWS Services to support Dev & Test workloads
Developing & Testing Business Applications on AWS
Common Dev & Test Patterns
Resources you can use to learn more
WHY AWS FOR DEVELOPMENT
AND TEST WORKLOADS?
COMMON CONCEPTS
COMMON CONCEPTS
NUMEROUS
DISPOSABLE
COMMON CONCEPTS
NUMEROUS
DISPOSABLE
Projects start and stop frequently
Required for short period of time
Golden masters preferred
COMMON CONCEPTS
NUMEROUS
DISPOSABLE
Many environments support an app
Preservation of known configurations
Overlapping development cycles
DEVELOPMENT & TEST IN THE CLOUD
NUMEROUS
DISPOSABLE
Many environments support an app
Preservation of known configurations
Overlapping development cycles
Projects start and stop frequently
Required for short period of time
Golden masters preferred
DEVELOPMENT & TEST IN THE CLOUD
DEVELOPMENT & TEST IN THE CLOUD
Infrastructure as
Code
Deploy to a
known state,
quickly
DEVELOPMENT & TEST IN THE CLOUD
Unlimited Elastic
Capacity
Infrastructure as
Code
Take lots of it when
you need it
Deploy to a
known state,
quickly
DEVELOPMENT & TEST IN THE CLOUD
On-demand
Charging Model
Unlimited Elastic
Capacity
Infrastructure as
Code
Take lots of it when
you need it
Throw it away when
you don’t
Deploy to a
known state,
quickly
DEVELOPMENT & TEST IN THE CLOUD
On-demand
Charging Model
Unlimited Elastic
Capacity
Infrastructure as
Code
Durable Storage
Take lots of it when
you need it
Throw it away when
you don’t
Preserve it for future
reference & reuse
Deploy to a
known state,
quickly
AWS SERVICES TO SUPPORT
DEV & TEST WORKLOADS
EC2 + VPC + ECS CloudFormation
Tools to Create & Manage an Elastic
Datacenter
AMIs, snapshots,
Bootstrapping, containers
Elastic Beanstalk
Managed Standard
Application Containers
Declaratively define
AWS environments
Tools to Create & Manage an Elastic
Datacenter
AMIs, snapshots,
bootstrapping
Declaratively define
AWS environments
Using core AWS
features to set up
an environment to
meet your needs
Created using the
AWS console or
through simple
scripting
Managed Standard
Application Containers
Give development &
test environments to
developers, controlled
directly from IDEs
Configure containers
to meet your needs
through properties
Take full control of
complex environments
using Cloud Formation
template language
Generate environment
specifications as you
build software
Tools to Create & Manage an Elastic
Datacenter
AMIs, snapshots,
bootstrapping
Declaratively define
AWS environments
Using core AWS
features to set up
an environment to
meet your needs
Created using the
AWS console or
through simple
scripting
Managed Standard
Application Containers
Give development &
test environments to
developers, controlled
directly from IDEs
Configure containers
to meet your needs
through properties
Take full control of
complex environments
using Cloud Formation
template language
Generate environment
specifications as you
build software
Amazon EC2
Generic image
Customised
building block
Creating re-usable golden images
Extending an on-premises environment
Amazon VPC
Extending an on-premises environment
Amazon VPC
Extending an on-premises environment
Amazon VPC
Extending an on-premises environment
Amazon VPC
Amazon VPC
Extending an on-premises environment
Amazon ECS
ApplicationLoad Balancer
ECS Cluster
Autoscaling Group for cluster instances
Service
Dev & Test on AWS - Hebrew Webinar
Tools to Create & Manage an Elastic
Datacenter
AMIs, snapshots,
bootstrapping
Declaratively define
AWS environments
Using core AWS
features to set up
an environment to
meet your needs
Created using the
AWS console or
through simple
scripting
Managed Standard
Application Containers
Give development &
test environments to
developers, controlled
directly from IDEs
Configure containers
to meet your needs
through properties
Take full control of
complex environments
using Cloud Formation
template language
Generate environment
specifications as you
build software
AWS Elastic
Beanstalk
AWS Elastic
Beanstalk
GO
AWS Elastic
Beanstalk
AWS Elastic
Beanstalk
AWS Elastic
Beanstalk
AWS Elastic
Beanstalk
AWS Elastic
Beanstalk
AWS Elastic
Beanstalk
AWS Elastic
Beanstalk
Tools to Create & Manage an Elastic
Datacenter
AMIs, snapshots,
bootstrapping
Declaratively define
AWS environments
Using core AWS
features to set up
an environment to
meet your needs
Created using the
AWS console or
through simple
scripting
Managed Standard
Application Containers
Give development &
test environments to
developers, controlled
directly from IDEs
Configure containers
to meet your needs
through properties
Take full control of
complex environments
using Cloud Formation
template language
Generate environment
specifications as you
build software
CLOUDFORMATION
TEMPLATE
AWS
CloudFormation
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
they are just text files
CLOUDFORMATION
TEMPLATE
Find out more at : aws.amazon.com/cloudformation
{
"AWSTemplateFormatVersion" : "2010-09-09",
"Description" : "AWS CloudFormation Sample Template WordPress_Multi_AZ: WordPress is web software you can use to create a beautiful website or blog. This template
installs a highly-available, scalable WordPress deployment using a multi-az Amazon RDS database instance for storage. It demonstrates using the AWS CloudFormation
bootstrap scripts to deploy WordPress. **WARNING** This template creates an Amazon EC2 instance, an Elastic Load Balancer and an Amazon RDS database instance. You will be
billed for the AWS resources used if you create a stack from this template.",
"Parameters" : {
"KeyName": {
"Description" : "Name of an existing EC2 KeyPair to enable SSH access to the instances",
"Type": "AWS::EC2::KeyPair::KeyName",
"ConstraintDescription" : "must be the name of an existing EC2 KeyPair."
},
"InstanceType" : {
"Description" : "WebServer EC2 instance type",
"Type" : "String",
"Default" : "m1.small",
"AllowedValues" : [ "t1.micro", "t2.micro", "t2.small", "t2.medium", "m1.small", "m1.medium", "m1.large", "m1.xlarge", "m2.xlarge", "m2.2xlarge", "m2.4xlarge",
"m3.medium", "m3.large", "m3.xlarge", "m3.2xlarge", "c1.medium", "c1.xlarge", "c3.large", "c3.xlarge", "c3.2xlarge", "c3.4xlarge", "c3.8xlarge", "c4.large", "c4.xlarge",
"c4.2xlarge", "c4.4xlarge", "c4.8xlarge", "g2.2xlarge", "r3.large", "r3.xlarge", "r3.2xlarge", "r3.4xlarge", "r3.8xlarge", "i2.xlarge", "i2.2xlarge", "i2.4xlarge",
"i2.8xlarge", "hi1.4xlarge", "hs1.8xlarge", "cr1.8xlarge", "cc2.8xlarge", "cg1.4xlarge"]
,
"ConstraintDescription" : "must be a valid EC2 instance type."
},
"SSHLocation": {
"Description": "The IP address range that can be used to SSH to the EC2 instances",
"Type": "String",
"MinLength": "9",
"MaxLength": "18",
"Default": "0.0.0.0/0",
"AllowedPattern": "(d{1,3}).(d{1,3}).(d{1,3}).(d{1,3})/(d{1,2})",
"ConstraintDescription": "must be a valid IP CIDR range of the form x.x.x.x/x."
},
"DBClass" : {
"Description" : "Database instance class",
"Type" : "String",
"Default" : "db.m1.small",
"AllowedValues" : [ "db.t1.micro", "db.m1.small", "db.m1.medium", "db.m1.large", "db.m1.xlarge", "db.m2.xlarge", "db.m2.2xlarge", "db.m2.4xlarge", "db.m3.medium",
"db.m3.large", "db.m3.xlarge", "db.m3.2xlarge", "db.r3.large", "db.r3.xlarge", "db.r3.2xlarge", "db.r3.4xlarge", "db.r3.8xlarge", "db.m2.xlarge", "db.m2.2xlarge",
"db.m2.4xlarge", "db.cr1.8xlarge"]
,
"ConstraintDescription" : "must select a valid database instance type."
},
"DBName" : {
"Default": "wordpressdb",
"Description" : "The WordPress database name",
"Type": "String",
"MinLength": "1",
"MaxLength": "64",
"AllowedPattern" : "[a-zA-Z][a-zA-Z0-9]*",
"ConstraintDescription" : "must begin with a letter and contain only alphanumeric characters."
},
"DBUser" : {
"NoEcho": "true",
"Description" : "The WordPress database admin account username",
"Type": "String",
"MinLength": "1",
"MaxLength": "16",
"AllowedPattern" : "[a-zA-Z][a-zA-Z0-9]*",
"ConstraintDescription" : "must begin with a letter and contain only alphanumeric characters."
},
"DBPassword" : {
"NoEcho": "true",
"Description" : "The WordPress database admin account password",
"Type": "String",
"MinLength": "8",
"MaxLength": "41",
"AllowedPattern" : "[a-zA-Z0-9]*",
"ConstraintDescription" : "must contain only alphanumeric characters."
},
"MultiAZDatabase": {
"Default": "false",
"Description" : "Create a Multi-AZ MySQL Amazon RDS database instance",
"Type": "String",
"AllowedValues" : [ "true", "false" ],
"ConstraintDescription" : "must be either true or false."
},
"WebServerCapacity": {
"Default": "1",
"Description" : "The initial number of WebServer instances",
"Type": "Number",
"MinValue": "1",
"MaxValue": "5",
"ConstraintDescription" : "must be between 1 and 5 EC2 instances."
},
"DBAllocatedStorage" : {
"Default": "5",
"Description" : "The size of the database (Gb)",
"Type": "Number",
"MinValue": "5",
"MaxValue": "1024",
"ConstraintDescription" : "must be between 5 and 1024Gb."
}
},
"Mappings" : {
"AWSInstanceType2Arch" : {
"t1.micro" : { "Arch" : "PV64" },
"t2.micro" : { "Arch" : "HVM64" },
"t2.small" : { "Arch" : "HVM64" },
"t2.medium" : { "Arch" : "HVM64" },
"m1.small" : { "Arch" : "PV64" },
"m1.medium" : { "Arch" : "PV64" },
"m1.large" : { "Arch" : "PV64" },
"m1.xlarge" : { "Arch" : "PV64" },
"m2.xlarge" : { "Arch" : "PV64" },
"m2.2xlarge" : { "Arch" : "PV64" },
"m2.4xlarge" : { "Arch" : "PV64" },
"m3.medium" : { "Arch" : "HVM64" },
"m3.large" : { "Arch" : "HVM64" },
"m3.xlarge" : { "Arch" : "HVM64" },
"m3.2xlarge" : { "Arch" : "HVM64" },
"c1.medium" : { "Arch" : "PV64" },
"c1.xlarge" : { "Arch" : "PV64" },
"c3.large" : { "Arch" : "HVM64" },
"c3.xlarge" : { "Arch" : "HVM64" },
"c3.2xlarge" : { "Arch" : "HVM64" },
"c3.4xlarge" : { "Arch" : "HVM64" },
"c3.8xlarge" : { "Arch" : "HVM64" },
"c4.large" : { "Arch" : "HVM64" },
"c4.xlarge" : { "Arch" : "HVM64" },
"c4.2xlarge" : { "Arch" : "HVM64" },
"c4.4xlarge" : { "Arch" : "HVM64" },
"c4.8xlarge" : { "Arch" : "HVM64" },
"g2.2xlarge" : { "Arch" : "HVMG2" },
"r3.large" : { "Arch" : "HVM64" },
"r3.xlarge" : { "Arch" : "HVM64" },
"r3.2xlarge" : { "Arch" : "HVM64" },
"r3.4xlarge" : { "Arch" : "HVM64" },
"r3.8xlarge" : { "Arch" : "HVM64" },
"i2.xlarge" : { "Arch" : "HVM64" },
"i2.2xlarge" : { "Arch" : "HVM64" },
"i2.4xlarge" : { "Arch" : "HVM64" },
"i2.8xlarge" : { "Arch" : "HVM64" },
"hi1.4xlarge" : { "Arch" : "HVM64" },
"hs1.8xlarge" : { "Arch" : "HVM64" },
"cr1.8xlarge" : { "Arch" : "HVM64" },
"cc2.8xlarge" : { "Arch" : "HVM64" }
}
,
"AWSRegionArch2AMI" : {
"us-east-1" : {"PV64" : "ami-8e682ce6", "HVM64" : "ami-146e2a7c", "HVMG2" : "ami-7200461a"},
"us-west-2" : {"PV64" : "ami-9fc29baf", "HVM64" : "ami-dfc39aef", "HVMG2" : "ami-0b78203b"},
"us-west-1" : {"PV64" : "ami-f49089b1", "HVM64" : "ami-42908907", "HVMG2" : "ami-244b5361"},
"eu-west-1" : {"PV64" : "ami-7b3db00c", "HVM64" : "ami-9d23aeea", "HVMG2" : "ami-4d7cf03a"},
"eu-central-1" : {"PV64" : "ami-0600331b", "HVM64" : "ami-04003319", "HVMG2" : "NOT_SUPPORTED"},
"ap-northeast-1" : {"PV64" : "ami-3c87993d", "HVM64" : "ami-18869819", "HVMG2" : "ami-2e90892f"},
"ap-southeast-1" : {"PV64" : "ami-58ba910a", "HVM64" : "ami-96bb90c4", "HVMG2" : "ami-3e78526c"},
"ap-southeast-2" : {"PV64" : "ami-1500742f", "HVM64" : "ami-d50773ef", "HVMG2" : "ami-315e2a0b"},
"sa-east-1" : {"PV64" : "ami-fd9925e0", "HVM64" : "ami-af9925b2", "HVMG2" : "NOT_SUPPORTED"},
"cn-north-1" : {"PV64" : "ami-8a1d8fb3", "HVM64" : "ami-981d8fa1", "HVMG2" : "NOT_SUPPORTED"}
}
},
"Conditions" : {
"Is-EC2-VPC" : { "Fn::Or" : [ {"Fn::Equals" : [{"Ref" : "AWS::Region"}, "eu-central-1" ]},
{"Fn::Equals" : [{"Ref" : "AWS::Region"}, "cn-north-1" ]}]},
"Is-EC2-Classic" : { "Fn::Not" : [{ "Condition" : "Is-EC2-VPC"}]}
},
"Resources" : {
"ElasticLoadBalancer" : {
"Type" : "AWS::ElasticLoadBalancing::LoadBalancer",
"Properties" : {
"AvailabilityZones" : { "Fn::GetAZs" : "" },
"CrossZone" : "true",
"LBCookieStickinessPolicy" : [ {
"PolicyName" : "CookieBasedPolicy",
"CookieExpirationPeriod" : "30"
} ],
"Listeners" : [ {
"LoadBalancerPort" : "80",
"InstancePort" : "80",
"Protocol" : "HTTP",
"PolicyNames" : [ "CookieBasedPolicy" ]
} ],
"HealthCheck" : {
"Target" : "HTTP:80/wordpress/wp-admin/install.php",
"HealthyThreshold" : "2",
"UnhealthyThreshold" : "5",
"Interval" : "10",
"Timeout" : "5"
}
}
},
"WebServerSecurityGroup" : {
"Type" : "AWS::EC2::SecurityGroup",
"Properties" : {
"GroupDescription" : "Enable HTTP access via port 80 locked down to the load balancer + SSH access",
"SecurityGroupIngress" : [
{"IpProtocol" : "tcp", "FromPort" : "80", "ToPort" : "80", "SourceSecurityGroupOwnerId" : {"Fn::GetAtt" : ["ElasticLoadBalancer",
"SourceSecurityGroup.OwnerAlias"]},"SourceSecurityGroupName" : {"Fn::GetAtt" : ["ElasticLoadBalancer", "SourceSecurityGroup.GroupName"]}},
{"IpProtocol" : "tcp", "FromPort" : "22", "ToPort" : "22", "CidrIp" : { "Ref" : "SSHLocation"}}
]
}
},
"WebServerGroup" : {
"Type" : "AWS::AutoScaling::AutoScalingGroup",
"Properties" : {
"AvailabilityZones" : { "Fn::GetAZs" : "" },
"LaunchConfigurationName" : { "Ref" : "LaunchConfig" },
"MinSize" : "1",
"MaxSize" : "5",
"DesiredCapacity" : { "Ref" : "WebServerCapacity" },
"LoadBalancerNames" : [ { "Ref" : "ElasticLoadBalancer" } ]
},
"CreationPolicy" : {
"ResourceSignal" : {
"Timeout" : "PT15M"
}
},
"UpdatePolicy": {
"AutoScalingRollingUpdate": {
"MinInstancesInService": "1",
"MaxBatchSize": "1",
"PauseTime" : "PT15M",
"WaitOnResourceSignals": "true"
}
}
},
"LaunchConfig": {
"Type" : "AWS::AutoScaling::LaunchConfiguration",
"Metadata" : {
"AWS::CloudFormation::Init" : {
"configSets" : {
"wordpress_install" : ["install_cfn", "install_wordpress" ]
},
"install_cfn" : {
"files": {
"/etc/cfn/cfn-hup.conf": {
"content": { "Fn::Join": [ "", [
"[main]n",
"stack=", { "Ref": "AWS::StackId" }, "n",
"region=", { "Ref": "AWS::Region" }, "n"
]]},
"mode" : "000400",
"owner" : "root",
"group" : "root"
},
"/etc/cfn/hooks.d/cfn-auto-reloader.conf": {
"content": { "Fn::Join": [ "", [
"[cfn-auto-reloader-hook]n",
"triggers=post.updaten",
"path=Resources.LaunchConfig.Metadata.AWS::CloudFormation::Initn",
"action=/opt/aws/bin/cfn-init -v ",
" --stack ", { "Ref" : "AWS::StackName" },
" --resource LaunchConfig ",
" --configsets wordpress_install ",
" --region ", { "Ref" : "AWS::Region" }, "n"
]]},
"mode" : "000400",
"owner" : "root",
"group" : "root"
}
},
"services" : {
"sysvinit" : {
"cfn-hup" : { "enabled" : "true", "ensureRunning" : "true",
"files" : ["/etc/cfn/cfn-hup.conf", "/etc/cfn/hooks.d/cfn-auto-reloader.conf"]}
}
}
},
"install_wordpress" : {
"packages" : {
"yum" : {
"php" : [],
"php-mysql" : [],
"mysql" : [],
"httpd" : []
}
},
"sources" : {
"/var/www/html" : "http://wordpress.org/latest.tar.gz"
},
"files" : {
"/tmp/create-wp-config" : {
"content" : { "Fn::Join" : [ "", [
"#!/bin/bashn",
"cp /var/www/html/wordpress/wp-config-sample.php /var/www/html/wordpress/wp-config.phpn",
"sed -i "s/'database_name_here'/'",{ "Ref" : "DBName" }, "'/g" wp-config.phpn",
"sed -i "s/'username_here'/'",{ "Ref" : "DBUser" }, "'/g" wp-config.phpn",
"sed -i "s/'password_here'/'",{ "Ref" : "DBPassword" }, "'/g" wp-config.phpn",
"sed -i "s/'localhost'/'",{ "Fn::GetAtt" : [ "DBInstance", "Endpoint.Address" ] }, "'/g" wp-config.phpn"
]]},
"mode" : "000500",
"owner" : "root",
"group" : "root"
}
},
"commands" : {
"01_configure_wordpress" : {
"command" : "/tmp/create-wp-config",
"cwd" : "/var/www/html/wordpress"
}
},
"services" : {
"sysvinit" : {
"httpd" : { "enabled" : "true", "ensureRunning" : "true" }
}
}
}
}
},
"Properties": {
"ImageId" : { "Fn::FindInMap" : [ "AWSRegionArch2AMI", { "Ref" : "AWS::Region" },
{ "Fn::FindInMap" : [ "AWSInstanceType2Arch", { "Ref" : "InstanceType" }, "Arch" ] } ] },
"InstanceType" : { "Ref" : "InstanceType" },
"SecurityGroups" : [ {"Ref" : "WebServerSecurityGroup"} ],
"KeyName" : { "Ref" : "KeyName" },
"UserData" : { "Fn::Base64" : { "Fn::Join" : ["", [
"#!/bin/bash -xen",
"yum update -y aws-cfn-bootstrapn",
"/opt/aws/bin/cfn-init -v ",
" --stack ", { "Ref" : "AWS::StackName" },
" --resource LaunchConfig ",
" --configsets wordpress_install ",
" --region ", { "Ref" : "AWS::Region" }, "n",
"/opt/aws/bin/cfn-signal -e $? ",
" --stack ", { "Ref" : "AWS::StackName" },
" --resource WebServerGroup ",
" --region ", { "Ref" : "AWS::Region" }, "n"
]]}}
}
},
"DBSecurityGroup": {
"Type": "AWS::RDS::DBSecurityGroup",
"Condition" : "Is-EC2-Classic",
"Properties": {
"DBSecurityGroupIngress": {
"EC2SecurityGroupName": { "Ref": "WebServerSecurityGroup" }
},
"GroupDescription": "database access"
}
},
"DBEC2SecurityGroup": {
"Type": "AWS::EC2::SecurityGroup",
"Condition" : "Is-EC2-VPC",
"Properties" : {
"GroupDescription": "Open database for access",
"SecurityGroupIngress" : [{
"IpProtocol" : "tcp",
"FromPort" : "3306",
"ToPort" : "3306",
"SourceSecurityGroupName" : { "Ref" : "WebServerSecurityGroup" }
}]
}
},
"DBInstance" : {
"Type": "AWS::RDS::DBInstance",
"Properties": {
"DBName" : { "Ref" : "DBName" },
"Engine" : "MySQL",
"MultiAZ" : { "Ref": "MultiAZDatabase" },
"MasterUsername" : { "Ref" : "DBUser" },
"MasterUserPassword": { "Ref" : "DBPassword" },
"DBInstanceClass" : { "Ref" : "DBClass" },
"AllocatedStorage" : { "Ref" : "DBAllocatedStorage" },
"VPCSecurityGroups": { "Fn::If" : [ "Is-EC2-VPC", [ { "Fn::GetAtt": [ "DBEC2SecurityGroup", "GroupId" ] } ], { "Ref" : "AWS::NoValue"}]},
"DBSecurityGroups": { "Fn::If" : [ "Is-EC2-Classic", [ { "Ref": "DBSecurityGroup" } ], { "Ref" : "AWS::NoValue"}]}
}
}
},
"Outputs" : {
"WebsiteURL" : {
"Value" : { "Fn::Join" : ["", ["http://", { "Fn::GetAtt" : [ "ElasticLoadBalancer", "DNSName" ]}, "/wordpress" ]]},
"Description" : "WordPress Website"
}
}
}
CloudFormation Template to Deploy Wordpress
https://s3-us-west-1.amazonaws.com/cloudformation-templates-us-west-1/WordPress_Multi_AZ.template
CodeCommit CodeBuild
Developers Tools on AWS
Managed source control,
Highly scalable Git hosting,
Integrates with other AWS
services
CodePipeline
Continuous
integration/delivery
service
Managed build
service, Scales as
needed
CodeDeploy
Code deployment
automation to any
target (AWS/On
Prem)
DEVELOPING & TESTING BUSINESS
APPLICATIONS ON AWS
Install software in the AWS Cloud or use preconfigured images from the AWS
Marketplace
Microsoft SQL Server, Microsoft SharePoint, Microsoft Exchange, SAP HANA, SAP
HANA One, Oracle, PeopleSoft, IBM DB2, the IBM WebSphere family of products are
available
License portability allows you to move some existing licenses to the AWS Cloud, refer to
the appropriate pages on the AWS website for details
aws.amazon.com/microsoft
aws.amazon.com/oracle
aws.amazon.com/sap
aws.amazon.com/ibm
COMMON DEV & TEST PATTERNS
Frameworks & Environments
Source Control
Amazon EC2 to run popular source
control systems, integrate with GitHub or
use AWS CodeCommit
Project Management
Add integrated project management
and issue tracking applications from
the AWS Marketplace
Workstations
Provide standard build developer/test
workstations with Amazon WorkSpaces
CI/Build Servers
Use EC2 instances or AWS
CodeBuild, CodePipeline, etc. as
continuous integration and build
servers
SOURCE CODE
REPOSITORY
DNS
CONTINUOUS
INTEGRATION SERVER
PROJECT MANAGEMENT
SERVER
BUILDS
Dev & Test on AWS - Hebrew Webinar
CLOUDFORMATION
TEMPLATE
Docker Containers
Testing at Scale
Unit & Regression
Scale up and parallel run unit and
regression plans in a fraction of the time
Load & Performance
Use EC2 instances from the spot
market to generating load and test how
applications perform with auto-scaling
A/B
Run A/B scenario testing with multiple
replicated stacks
Security
Create sandboxes for aggressive
security testing
Parallel Testing
1 instance for 100 hours
==
100 instances for 1 hour
Dev & Test on AWS - Hebrew Webinar
Dev & Test on AWS - Hebrew Webinar
Dev & Test on AWS - Hebrew Webinar
Dev & Test on AWS - Hebrew Webinar
Dev & Test on AWS - Hebrew Webinar
Dev & Test on AWS - Hebrew Webinar
Dev & Test on AWS - Hebrew Webinar
2.4 MILLION PLAYERS
USING AMAZON EC2 TO SIMULATE
DEVELOPMENT & TEST IN THE CLOUD
On-demand
Charging Model
Unlimited Elastic
Capacity
Infrastructure as
Code
Durable Storage
Take lots of it when
you need it
Throw it away when
you don’t
Preserve it for future
reference & reuse
Deploy to a
known state,
quickly
00:00 01:00 02:00 03:00 04:00 05:00 06:00 07:00 08:00 09:00 10:00 11:00 12:00 13:00 14:00 15:00 16:00 17:00 18:00 19:00 20:00 21:00 22:00 23:00
Development Environment: CPU
Utilization/Time
00:00 01:00 02:00 03:00 04:00 05:00 06:00 07:00 08:00 09:00 10:00 11:00 12:00 13:00 14:00 15:00 16:00 17:00 18:00 19:00 20:00 21:00 22:00 23:00
Auto-scaling
by schedule
Auto-scaling
by schedule
Development Environment: CPU
Utilization/Time
00:00 01:00 02:00 03:00 04:00 05:00 06:00 07:00 08:00 09:00 10:00 11:00 12:00 13:00 14:00 15:00 16:00 17:00 18:00 19:00 20:00 21:00 22:00 23:00
46% Savings
Development Environment: CPU
Utilization/Time
DEVELOPMENT & TEST IN THE CLOUD
On-demand
Charging Model
Unlimited Elastic
Capacity
Infrastructure as
Code
Durable Storage
Take lots of it when
you need it
Throw it away when
you don’t
Preserve it for future
reference & reuse
Deploy to a
known state,
quickly
Durable Storage
AMIs
Create a catalog of AMIs for each
iteration of an application
Stored in Amazon S3
Templates
Source control infrastructure
templates with every application
version
Stored in Amazon S3
Snapshots
Save disk images with ‘frozen’ data sets
and attach to instances when needed
Stored in Amazon S3
Durable Storage
AMIs
Create a catalog of AMIs for each
iteration of an application
Stored in Amazon S3
Templates
Source control infrastructure
templates with every application
version
Snapshots
Save disk images with ‘frozen’ data sets
and attach to instances when needed
Stored in Amazon S3
Enables you to roll back and recreate an environment for any given application version
SUMMARY
The cloud makes software development & testing easy1
You can make significant savings by making use of elasticity2
AWS provides unique tools to help you create & manage environments3
Enables you to operate at a scale & speed beyond traditional infrastructure4
RESOURCES YOU CAN USE
TO LEARN MORE
aws.amazon.com/dev-test/
Certification
aws.amazon.com/certification
Self-Paced Labs
aws.amazon.com/training/
self-paced-labs
Try products, gain new skills,
and get hands-on practice
working with AWS technologies
aws.amazon.com/training
Training
Validate your proven skills and
expertise with the AWS platform
Build technical expertise to
design and operate scalable,
efficient applications on AWS
AWS Training & Certification
Storage & Backup in the Cloud
November 22th – 16:30
@zinimanboazz@amazon.com
Thank You!
October 2017
Boaz Ziniman - Technical Evangelist - AWS
@AWScloud for Global AWS News & Announcements
Local Events: https://aws.amazon.com/events/aws-israel/

More Related Content

PPTX
Programando sua infraestrutura com o AWS CloudFormation
Amazon Web Services LATAM
 
PPTX
Infrastructure as Code - AWS CloudFormation
Chamila de Alwis
 
PPTX
Destination DevOps: Evolving from VMware lab management to cloud-based agile ...
shrutib
 
PDF
Deployment and Management on AWS:
 A Deep Dive on Options and Tools
Danilo Poccia
 
PPT
Create Secure Test and Dev Environments in the Cloud
RightScale
 
PDF
오토스케일링 제대로 활용하기 (김일호) - AWS 웨비나 시리즈 2015
Amazon Web Services Korea
 
PDF
AWS re:Invent 2016 recap (part 1)
Julien SIMON
 
PDF
ECS & ECR Deep Dive - 김기완 솔루션즈 아키텍트 :: AWS Container Day
Amazon Web Services Korea
 
Programando sua infraestrutura com o AWS CloudFormation
Amazon Web Services LATAM
 
Infrastructure as Code - AWS CloudFormation
Chamila de Alwis
 
Destination DevOps: Evolving from VMware lab management to cloud-based agile ...
shrutib
 
Deployment and Management on AWS:
 A Deep Dive on Options and Tools
Danilo Poccia
 
Create Secure Test and Dev Environments in the Cloud
RightScale
 
오토스케일링 제대로 활용하기 (김일호) - AWS 웨비나 시리즈 2015
Amazon Web Services Korea
 
AWS re:Invent 2016 recap (part 1)
Julien SIMON
 
ECS & ECR Deep Dive - 김기완 솔루션즈 아키텍트 :: AWS Container Day
Amazon Web Services Korea
 

Similar to Dev & Test on AWS - Hebrew Webinar (20)

PDF
Dev & Test on AWS - Journey Through the Cloud
Ian Massingham
 
PPTX
Migrating enterprise workloads to AWS
Tom Laszewski
 
PDF
AMAZON CLOUD Course Content
Varnaaz Technologies
 
PPTX
AWS 101
Monica Rut Avellino
 
PDF
Microservices Architecture with AWS @ AnyMind Group
Giang Tran
 
PDF
AnyMind Group Tech Talk - Microservices architecture with AWS
Nhân Nguyễn
 
PPTX
Introduction to DevOps on AWS
Shiva Narayanaswamy
 
PPTX
AWS Services.pptx
LearnTechnology2
 
PPTX
Architecting for AWS Cloud - let's do it right!
Misha Hanin
 
PPTX
How Easy to Automate Application Deployment on AWS
Institut Teknologi Sepuluh Nopember Surabaya
 
PDF
AWS Certified Solutions Architect Associate Notes.pdf
fayoyiwababajide
 
PPTX
Migrating enterprise workloads to AWS
Tom Laszewski
 
PPTX
Scalable Application Development on AWS
Mikalai Alimenkou
 
PDF
Running Open Source Platforms on AWS (November 2016)
Julien SIMON
 
PPTX
Introduction to amazon web services for developers
Ciklum Ukraine
 
PDF
Fundamentals of Cloud Computing & AWS
Bhuvaneswari Subramani
 
PPTX
Architecting Cloud Apps
jineshvaria
 
PDF
Migrate and Govern Applications on Cloud Infrastructure
Manuj Bawa
 
PPTX
Introduction to AWS and Docker on ECS
CloudHesive
 
PPTX
AWS 101 - An Introduction to the Amazon Cloud
CloudHesive
 
Dev & Test on AWS - Journey Through the Cloud
Ian Massingham
 
Migrating enterprise workloads to AWS
Tom Laszewski
 
AMAZON CLOUD Course Content
Varnaaz Technologies
 
Microservices Architecture with AWS @ AnyMind Group
Giang Tran
 
AnyMind Group Tech Talk - Microservices architecture with AWS
Nhân Nguyễn
 
Introduction to DevOps on AWS
Shiva Narayanaswamy
 
AWS Services.pptx
LearnTechnology2
 
Architecting for AWS Cloud - let's do it right!
Misha Hanin
 
How Easy to Automate Application Deployment on AWS
Institut Teknologi Sepuluh Nopember Surabaya
 
AWS Certified Solutions Architect Associate Notes.pdf
fayoyiwababajide
 
Migrating enterprise workloads to AWS
Tom Laszewski
 
Scalable Application Development on AWS
Mikalai Alimenkou
 
Running Open Source Platforms on AWS (November 2016)
Julien SIMON
 
Introduction to amazon web services for developers
Ciklum Ukraine
 
Fundamentals of Cloud Computing & AWS
Bhuvaneswari Subramani
 
Architecting Cloud Apps
jineshvaria
 
Migrate and Govern Applications on Cloud Infrastructure
Manuj Bawa
 
Introduction to AWS and Docker on ECS
CloudHesive
 
AWS 101 - An Introduction to the Amazon Cloud
CloudHesive
 
Ad

More from Boaz Ziniman (20)

PDF
AWS Cost Optimization - JLM
Boaz Ziniman
 
PDF
What can you do with Serverless in 2020
Boaz Ziniman
 
PDF
Six ways to reduce your AWS bill
Boaz Ziniman
 
PDF
From Cloud to Edge & back again
Boaz Ziniman
 
PDF
Modern Applications Development on AWS
Boaz Ziniman
 
PDF
Enriching your app with Image recognition and AWS AI services Hebrew Webinar
Boaz Ziniman
 
PDF
AI Services and Serverless Workshop
Boaz Ziniman
 
PDF
Drive Down the Cost of your Data Lake by Using the Right Data Tiering
Boaz Ziniman
 
PDF
Breaking Voice and Language Barriers with AI - Chatbot Summit Tel Aviv
Boaz Ziniman
 
PDF
Serverless Beyond Functions - CTO Club Made in JLM
Boaz Ziniman
 
PDF
Websites Go Serverless - ServerlessDays TLV 2019
Boaz Ziniman
 
PDF
SKL208 - Turbocharge your Business with AI and Machine Learning - Tel Aviv Su...
Boaz Ziniman
 
PDF
AIM301 - Breaking Language Barriers With AI - Tel Aviv Summit 2019
Boaz Ziniman
 
PDF
Breaking Language Barriers with AI - AWS Summit
Boaz Ziniman
 
PDF
Websites go Serverless - AWS Summit Berlin
Boaz Ziniman
 
PDF
AWS Lambda updates from re:Invent
Boaz Ziniman
 
PDF
Artificial Intelligence for Developers - OOP Munich
Boaz Ziniman
 
PDF
Introduction to Serverless Computing - OOP Munich
Boaz Ziniman
 
PDF
IoT from Cloud to Edge & Back Again - WebSummit 2018
Boaz Ziniman
 
PDF
Breaking Language Barriers with AI - Web Summit 2018
Boaz Ziniman
 
AWS Cost Optimization - JLM
Boaz Ziniman
 
What can you do with Serverless in 2020
Boaz Ziniman
 
Six ways to reduce your AWS bill
Boaz Ziniman
 
From Cloud to Edge & back again
Boaz Ziniman
 
Modern Applications Development on AWS
Boaz Ziniman
 
Enriching your app with Image recognition and AWS AI services Hebrew Webinar
Boaz Ziniman
 
AI Services and Serverless Workshop
Boaz Ziniman
 
Drive Down the Cost of your Data Lake by Using the Right Data Tiering
Boaz Ziniman
 
Breaking Voice and Language Barriers with AI - Chatbot Summit Tel Aviv
Boaz Ziniman
 
Serverless Beyond Functions - CTO Club Made in JLM
Boaz Ziniman
 
Websites Go Serverless - ServerlessDays TLV 2019
Boaz Ziniman
 
SKL208 - Turbocharge your Business with AI and Machine Learning - Tel Aviv Su...
Boaz Ziniman
 
AIM301 - Breaking Language Barriers With AI - Tel Aviv Summit 2019
Boaz Ziniman
 
Breaking Language Barriers with AI - AWS Summit
Boaz Ziniman
 
Websites go Serverless - AWS Summit Berlin
Boaz Ziniman
 
AWS Lambda updates from re:Invent
Boaz Ziniman
 
Artificial Intelligence for Developers - OOP Munich
Boaz Ziniman
 
Introduction to Serverless Computing - OOP Munich
Boaz Ziniman
 
IoT from Cloud to Edge & Back Again - WebSummit 2018
Boaz Ziniman
 
Breaking Language Barriers with AI - Web Summit 2018
Boaz Ziniman
 
Ad

Recently uploaded (20)

PDF
CIFDAQ's Market Wrap : Bears Back in Control?
CIFDAQ
 
PDF
GDG Cloud Munich - Intro - Luiz Carneiro - #BuildWithAI - July - Abdel.pdf
Luiz Carneiro
 
PPTX
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
PDF
Research-Fundamentals-and-Topic-Development.pdf
ayesha butalia
 
PDF
Software Development Methodologies in 2025
KodekX
 
PPTX
Agile Chennai 18-19 July 2025 | Emerging patterns in Agentic AI by Bharani Su...
AgileNetwork
 
PDF
NewMind AI Weekly Chronicles - July'25 - Week IV
NewMind AI
 
PDF
Orbitly Pitch Deck|A Mission-Driven Platform for Side Project Collaboration (...
zz41354899
 
PPTX
cloud computing vai.pptx for the project
vaibhavdobariyal79
 
PPTX
AI in Daily Life: How Artificial Intelligence Helps Us Every Day
vanshrpatil7
 
PDF
Automating ArcGIS Content Discovery with FME: A Real World Use Case
Safe Software
 
PDF
SparkLabs Primer on Artificial Intelligence 2025
SparkLabs Group
 
PDF
AI Unleashed - Shaping the Future -Starting Today - AIOUG Yatra 2025 - For Co...
Sandesh Rao
 
PDF
How ETL Control Logic Keeps Your Pipelines Safe and Reliable.pdf
Stryv Solutions Pvt. Ltd.
 
PDF
Responsible AI and AI Ethics - By Sylvester Ebhonu
Sylvester Ebhonu
 
PDF
The Future of Mobile Is Context-Aware—Are You Ready?
iProgrammer Solutions Private Limited
 
PDF
Economic Impact of Data Centres to the Malaysian Economy
flintglobalapac
 
PDF
AI-Cloud-Business-Management-Platforms-The-Key-to-Efficiency-Growth.pdf
Artjoker Software Development Company
 
PDF
Google I/O Extended 2025 Baku - all ppts
HusseinMalikMammadli
 
PDF
Security features in Dell, HP, and Lenovo PC systems: A research-based compar...
Principled Technologies
 
CIFDAQ's Market Wrap : Bears Back in Control?
CIFDAQ
 
GDG Cloud Munich - Intro - Luiz Carneiro - #BuildWithAI - July - Abdel.pdf
Luiz Carneiro
 
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
Research-Fundamentals-and-Topic-Development.pdf
ayesha butalia
 
Software Development Methodologies in 2025
KodekX
 
Agile Chennai 18-19 July 2025 | Emerging patterns in Agentic AI by Bharani Su...
AgileNetwork
 
NewMind AI Weekly Chronicles - July'25 - Week IV
NewMind AI
 
Orbitly Pitch Deck|A Mission-Driven Platform for Side Project Collaboration (...
zz41354899
 
cloud computing vai.pptx for the project
vaibhavdobariyal79
 
AI in Daily Life: How Artificial Intelligence Helps Us Every Day
vanshrpatil7
 
Automating ArcGIS Content Discovery with FME: A Real World Use Case
Safe Software
 
SparkLabs Primer on Artificial Intelligence 2025
SparkLabs Group
 
AI Unleashed - Shaping the Future -Starting Today - AIOUG Yatra 2025 - For Co...
Sandesh Rao
 
How ETL Control Logic Keeps Your Pipelines Safe and Reliable.pdf
Stryv Solutions Pvt. Ltd.
 
Responsible AI and AI Ethics - By Sylvester Ebhonu
Sylvester Ebhonu
 
The Future of Mobile Is Context-Aware—Are You Ready?
iProgrammer Solutions Private Limited
 
Economic Impact of Data Centres to the Malaysian Economy
flintglobalapac
 
AI-Cloud-Business-Management-Platforms-The-Key-to-Efficiency-Growth.pdf
Artjoker Software Development Company
 
Google I/O Extended 2025 Baku - all ppts
HusseinMalikMammadli
 
Security features in Dell, HP, and Lenovo PC systems: A research-based compar...
Principled Technologies
 

Dev & Test on AWS - Hebrew Webinar

  • 1. @[email protected] Dev & Test on AWS October 2017 Boaz Ziniman - Technical Evangelist - AWS Local Events: https://aws.amazon.com/events/aws-israel/
  • 2. Journey Through the Cloud Learn from the journeys taken by other AWS customers Discover best practices that you can use to bootstrap your projects Common use cases and adoption models for the AWS Cloud
  • 3. Development & Test on AWS Explore the benefits of AWS with a ‘non-production’ use case Create agility in development & test whilst ‘learning cloud’ Exercise elasticity and automation to real advantage
  • 4. Agenda Why AWS for development & test workloads? AWS Services to support Dev & Test workloads Developing & Testing Business Applications on AWS Common Dev & Test Patterns Resources you can use to learn more
  • 5. WHY AWS FOR DEVELOPMENT AND TEST WORKLOADS?
  • 8. COMMON CONCEPTS NUMEROUS DISPOSABLE Projects start and stop frequently Required for short period of time Golden masters preferred
  • 9. COMMON CONCEPTS NUMEROUS DISPOSABLE Many environments support an app Preservation of known configurations Overlapping development cycles
  • 10. DEVELOPMENT & TEST IN THE CLOUD NUMEROUS DISPOSABLE Many environments support an app Preservation of known configurations Overlapping development cycles Projects start and stop frequently Required for short period of time Golden masters preferred
  • 11. DEVELOPMENT & TEST IN THE CLOUD
  • 12. DEVELOPMENT & TEST IN THE CLOUD Infrastructure as Code Deploy to a known state, quickly
  • 13. DEVELOPMENT & TEST IN THE CLOUD Unlimited Elastic Capacity Infrastructure as Code Take lots of it when you need it Deploy to a known state, quickly
  • 14. DEVELOPMENT & TEST IN THE CLOUD On-demand Charging Model Unlimited Elastic Capacity Infrastructure as Code Take lots of it when you need it Throw it away when you don’t Deploy to a known state, quickly
  • 15. DEVELOPMENT & TEST IN THE CLOUD On-demand Charging Model Unlimited Elastic Capacity Infrastructure as Code Durable Storage Take lots of it when you need it Throw it away when you don’t Preserve it for future reference & reuse Deploy to a known state, quickly
  • 16. AWS SERVICES TO SUPPORT DEV & TEST WORKLOADS
  • 17. EC2 + VPC + ECS CloudFormation Tools to Create & Manage an Elastic Datacenter AMIs, snapshots, Bootstrapping, containers Elastic Beanstalk Managed Standard Application Containers Declaratively define AWS environments
  • 18. Tools to Create & Manage an Elastic Datacenter AMIs, snapshots, bootstrapping Declaratively define AWS environments Using core AWS features to set up an environment to meet your needs Created using the AWS console or through simple scripting Managed Standard Application Containers Give development & test environments to developers, controlled directly from IDEs Configure containers to meet your needs through properties Take full control of complex environments using Cloud Formation template language Generate environment specifications as you build software
  • 19. Tools to Create & Manage an Elastic Datacenter AMIs, snapshots, bootstrapping Declaratively define AWS environments Using core AWS features to set up an environment to meet your needs Created using the AWS console or through simple scripting Managed Standard Application Containers Give development & test environments to developers, controlled directly from IDEs Configure containers to meet your needs through properties Take full control of complex environments using Cloud Formation template language Generate environment specifications as you build software
  • 20. Amazon EC2 Generic image Customised building block Creating re-usable golden images
  • 21. Extending an on-premises environment Amazon VPC
  • 22. Extending an on-premises environment Amazon VPC
  • 23. Extending an on-premises environment Amazon VPC
  • 24. Extending an on-premises environment Amazon VPC
  • 25. Amazon VPC Extending an on-premises environment
  • 26. Amazon ECS ApplicationLoad Balancer ECS Cluster Autoscaling Group for cluster instances Service
  • 28. Tools to Create & Manage an Elastic Datacenter AMIs, snapshots, bootstrapping Declaratively define AWS environments Using core AWS features to set up an environment to meet your needs Created using the AWS console or through simple scripting Managed Standard Application Containers Give development & test environments to developers, controlled directly from IDEs Configure containers to meet your needs through properties Take full control of complex environments using Cloud Formation template language Generate environment specifications as you build software
  • 38. Tools to Create & Manage an Elastic Datacenter AMIs, snapshots, bootstrapping Declaratively define AWS environments Using core AWS features to set up an environment to meet your needs Created using the AWS console or through simple scripting Managed Standard Application Containers Give development & test environments to developers, controlled directly from IDEs Configure containers to meet your needs through properties Take full control of complex environments using Cloud Formation template language Generate environment specifications as you build software
  • 40. 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 they are just text files CLOUDFORMATION TEMPLATE Find out more at : aws.amazon.com/cloudformation
  • 41. { "AWSTemplateFormatVersion" : "2010-09-09", "Description" : "AWS CloudFormation Sample Template WordPress_Multi_AZ: WordPress is web software you can use to create a beautiful website or blog. This template installs a highly-available, scalable WordPress deployment using a multi-az Amazon RDS database instance for storage. It demonstrates using the AWS CloudFormation bootstrap scripts to deploy WordPress. **WARNING** This template creates an Amazon EC2 instance, an Elastic Load Balancer and an Amazon RDS database instance. You will be billed for the AWS resources used if you create a stack from this template.", "Parameters" : { "KeyName": { "Description" : "Name of an existing EC2 KeyPair to enable SSH access to the instances", "Type": "AWS::EC2::KeyPair::KeyName", "ConstraintDescription" : "must be the name of an existing EC2 KeyPair." }, "InstanceType" : { "Description" : "WebServer EC2 instance type", "Type" : "String", "Default" : "m1.small", "AllowedValues" : [ "t1.micro", "t2.micro", "t2.small", "t2.medium", "m1.small", "m1.medium", "m1.large", "m1.xlarge", "m2.xlarge", "m2.2xlarge", "m2.4xlarge", "m3.medium", "m3.large", "m3.xlarge", "m3.2xlarge", "c1.medium", "c1.xlarge", "c3.large", "c3.xlarge", "c3.2xlarge", "c3.4xlarge", "c3.8xlarge", "c4.large", "c4.xlarge", "c4.2xlarge", "c4.4xlarge", "c4.8xlarge", "g2.2xlarge", "r3.large", "r3.xlarge", "r3.2xlarge", "r3.4xlarge", "r3.8xlarge", "i2.xlarge", "i2.2xlarge", "i2.4xlarge", "i2.8xlarge", "hi1.4xlarge", "hs1.8xlarge", "cr1.8xlarge", "cc2.8xlarge", "cg1.4xlarge"] , "ConstraintDescription" : "must be a valid EC2 instance type." }, "SSHLocation": { "Description": "The IP address range that can be used to SSH to the EC2 instances", "Type": "String", "MinLength": "9", "MaxLength": "18", "Default": "0.0.0.0/0", "AllowedPattern": "(d{1,3}).(d{1,3}).(d{1,3}).(d{1,3})/(d{1,2})", "ConstraintDescription": "must be a valid IP CIDR range of the form x.x.x.x/x." }, "DBClass" : { "Description" : "Database instance class", "Type" : "String", "Default" : "db.m1.small", "AllowedValues" : [ "db.t1.micro", "db.m1.small", "db.m1.medium", "db.m1.large", "db.m1.xlarge", "db.m2.xlarge", "db.m2.2xlarge", "db.m2.4xlarge", "db.m3.medium", "db.m3.large", "db.m3.xlarge", "db.m3.2xlarge", "db.r3.large", "db.r3.xlarge", "db.r3.2xlarge", "db.r3.4xlarge", "db.r3.8xlarge", "db.m2.xlarge", "db.m2.2xlarge", "db.m2.4xlarge", "db.cr1.8xlarge"] , "ConstraintDescription" : "must select a valid database instance type." }, "DBName" : { "Default": "wordpressdb", "Description" : "The WordPress database name", "Type": "String", "MinLength": "1", "MaxLength": "64", "AllowedPattern" : "[a-zA-Z][a-zA-Z0-9]*", "ConstraintDescription" : "must begin with a letter and contain only alphanumeric characters." }, "DBUser" : { "NoEcho": "true", "Description" : "The WordPress database admin account username", "Type": "String", "MinLength": "1", "MaxLength": "16", "AllowedPattern" : "[a-zA-Z][a-zA-Z0-9]*", "ConstraintDescription" : "must begin with a letter and contain only alphanumeric characters." }, "DBPassword" : { "NoEcho": "true", "Description" : "The WordPress database admin account password", "Type": "String", "MinLength": "8", "MaxLength": "41", "AllowedPattern" : "[a-zA-Z0-9]*", "ConstraintDescription" : "must contain only alphanumeric characters." }, "MultiAZDatabase": { "Default": "false", "Description" : "Create a Multi-AZ MySQL Amazon RDS database instance", "Type": "String", "AllowedValues" : [ "true", "false" ], "ConstraintDescription" : "must be either true or false." }, "WebServerCapacity": { "Default": "1", "Description" : "The initial number of WebServer instances", "Type": "Number", "MinValue": "1", "MaxValue": "5", "ConstraintDescription" : "must be between 1 and 5 EC2 instances." }, "DBAllocatedStorage" : { "Default": "5", "Description" : "The size of the database (Gb)", "Type": "Number", "MinValue": "5", "MaxValue": "1024", "ConstraintDescription" : "must be between 5 and 1024Gb." } }, "Mappings" : { "AWSInstanceType2Arch" : { "t1.micro" : { "Arch" : "PV64" }, "t2.micro" : { "Arch" : "HVM64" }, "t2.small" : { "Arch" : "HVM64" }, "t2.medium" : { "Arch" : "HVM64" }, "m1.small" : { "Arch" : "PV64" }, "m1.medium" : { "Arch" : "PV64" }, "m1.large" : { "Arch" : "PV64" }, "m1.xlarge" : { "Arch" : "PV64" }, "m2.xlarge" : { "Arch" : "PV64" }, "m2.2xlarge" : { "Arch" : "PV64" }, "m2.4xlarge" : { "Arch" : "PV64" }, "m3.medium" : { "Arch" : "HVM64" }, "m3.large" : { "Arch" : "HVM64" }, "m3.xlarge" : { "Arch" : "HVM64" }, "m3.2xlarge" : { "Arch" : "HVM64" }, "c1.medium" : { "Arch" : "PV64" }, "c1.xlarge" : { "Arch" : "PV64" }, "c3.large" : { "Arch" : "HVM64" }, "c3.xlarge" : { "Arch" : "HVM64" }, "c3.2xlarge" : { "Arch" : "HVM64" }, "c3.4xlarge" : { "Arch" : "HVM64" }, "c3.8xlarge" : { "Arch" : "HVM64" }, "c4.large" : { "Arch" : "HVM64" }, "c4.xlarge" : { "Arch" : "HVM64" }, "c4.2xlarge" : { "Arch" : "HVM64" }, "c4.4xlarge" : { "Arch" : "HVM64" }, "c4.8xlarge" : { "Arch" : "HVM64" }, "g2.2xlarge" : { "Arch" : "HVMG2" }, "r3.large" : { "Arch" : "HVM64" }, "r3.xlarge" : { "Arch" : "HVM64" }, "r3.2xlarge" : { "Arch" : "HVM64" }, "r3.4xlarge" : { "Arch" : "HVM64" }, "r3.8xlarge" : { "Arch" : "HVM64" }, "i2.xlarge" : { "Arch" : "HVM64" }, "i2.2xlarge" : { "Arch" : "HVM64" }, "i2.4xlarge" : { "Arch" : "HVM64" }, "i2.8xlarge" : { "Arch" : "HVM64" }, "hi1.4xlarge" : { "Arch" : "HVM64" }, "hs1.8xlarge" : { "Arch" : "HVM64" }, "cr1.8xlarge" : { "Arch" : "HVM64" }, "cc2.8xlarge" : { "Arch" : "HVM64" } } , "AWSRegionArch2AMI" : { "us-east-1" : {"PV64" : "ami-8e682ce6", "HVM64" : "ami-146e2a7c", "HVMG2" : "ami-7200461a"}, "us-west-2" : {"PV64" : "ami-9fc29baf", "HVM64" : "ami-dfc39aef", "HVMG2" : "ami-0b78203b"}, "us-west-1" : {"PV64" : "ami-f49089b1", "HVM64" : "ami-42908907", "HVMG2" : "ami-244b5361"}, "eu-west-1" : {"PV64" : "ami-7b3db00c", "HVM64" : "ami-9d23aeea", "HVMG2" : "ami-4d7cf03a"}, "eu-central-1" : {"PV64" : "ami-0600331b", "HVM64" : "ami-04003319", "HVMG2" : "NOT_SUPPORTED"}, "ap-northeast-1" : {"PV64" : "ami-3c87993d", "HVM64" : "ami-18869819", "HVMG2" : "ami-2e90892f"}, "ap-southeast-1" : {"PV64" : "ami-58ba910a", "HVM64" : "ami-96bb90c4", "HVMG2" : "ami-3e78526c"}, "ap-southeast-2" : {"PV64" : "ami-1500742f", "HVM64" : "ami-d50773ef", "HVMG2" : "ami-315e2a0b"}, "sa-east-1" : {"PV64" : "ami-fd9925e0", "HVM64" : "ami-af9925b2", "HVMG2" : "NOT_SUPPORTED"}, "cn-north-1" : {"PV64" : "ami-8a1d8fb3", "HVM64" : "ami-981d8fa1", "HVMG2" : "NOT_SUPPORTED"} } }, "Conditions" : { "Is-EC2-VPC" : { "Fn::Or" : [ {"Fn::Equals" : [{"Ref" : "AWS::Region"}, "eu-central-1" ]}, {"Fn::Equals" : [{"Ref" : "AWS::Region"}, "cn-north-1" ]}]}, "Is-EC2-Classic" : { "Fn::Not" : [{ "Condition" : "Is-EC2-VPC"}]} }, "Resources" : { "ElasticLoadBalancer" : { "Type" : "AWS::ElasticLoadBalancing::LoadBalancer", "Properties" : { "AvailabilityZones" : { "Fn::GetAZs" : "" }, "CrossZone" : "true", "LBCookieStickinessPolicy" : [ { "PolicyName" : "CookieBasedPolicy", "CookieExpirationPeriod" : "30" } ], "Listeners" : [ { "LoadBalancerPort" : "80", "InstancePort" : "80", "Protocol" : "HTTP", "PolicyNames" : [ "CookieBasedPolicy" ] } ], "HealthCheck" : { "Target" : "HTTP:80/wordpress/wp-admin/install.php", "HealthyThreshold" : "2", "UnhealthyThreshold" : "5", "Interval" : "10", "Timeout" : "5" } } }, "WebServerSecurityGroup" : { "Type" : "AWS::EC2::SecurityGroup", "Properties" : { "GroupDescription" : "Enable HTTP access via port 80 locked down to the load balancer + SSH access", "SecurityGroupIngress" : [ {"IpProtocol" : "tcp", "FromPort" : "80", "ToPort" : "80", "SourceSecurityGroupOwnerId" : {"Fn::GetAtt" : ["ElasticLoadBalancer", "SourceSecurityGroup.OwnerAlias"]},"SourceSecurityGroupName" : {"Fn::GetAtt" : ["ElasticLoadBalancer", "SourceSecurityGroup.GroupName"]}}, {"IpProtocol" : "tcp", "FromPort" : "22", "ToPort" : "22", "CidrIp" : { "Ref" : "SSHLocation"}} ] } }, "WebServerGroup" : { "Type" : "AWS::AutoScaling::AutoScalingGroup", "Properties" : { "AvailabilityZones" : { "Fn::GetAZs" : "" }, "LaunchConfigurationName" : { "Ref" : "LaunchConfig" }, "MinSize" : "1", "MaxSize" : "5", "DesiredCapacity" : { "Ref" : "WebServerCapacity" }, "LoadBalancerNames" : [ { "Ref" : "ElasticLoadBalancer" } ] }, "CreationPolicy" : { "ResourceSignal" : { "Timeout" : "PT15M" } }, "UpdatePolicy": { "AutoScalingRollingUpdate": { "MinInstancesInService": "1", "MaxBatchSize": "1", "PauseTime" : "PT15M", "WaitOnResourceSignals": "true" } } }, "LaunchConfig": { "Type" : "AWS::AutoScaling::LaunchConfiguration", "Metadata" : { "AWS::CloudFormation::Init" : { "configSets" : { "wordpress_install" : ["install_cfn", "install_wordpress" ] }, "install_cfn" : { "files": { "/etc/cfn/cfn-hup.conf": { "content": { "Fn::Join": [ "", [ "[main]n", "stack=", { "Ref": "AWS::StackId" }, "n", "region=", { "Ref": "AWS::Region" }, "n" ]]}, "mode" : "000400", "owner" : "root", "group" : "root" }, "/etc/cfn/hooks.d/cfn-auto-reloader.conf": { "content": { "Fn::Join": [ "", [ "[cfn-auto-reloader-hook]n", "triggers=post.updaten", "path=Resources.LaunchConfig.Metadata.AWS::CloudFormation::Initn", "action=/opt/aws/bin/cfn-init -v ", " --stack ", { "Ref" : "AWS::StackName" }, " --resource LaunchConfig ", " --configsets wordpress_install ", " --region ", { "Ref" : "AWS::Region" }, "n" ]]}, "mode" : "000400", "owner" : "root", "group" : "root" } }, "services" : { "sysvinit" : { "cfn-hup" : { "enabled" : "true", "ensureRunning" : "true", "files" : ["/etc/cfn/cfn-hup.conf", "/etc/cfn/hooks.d/cfn-auto-reloader.conf"]} } } }, "install_wordpress" : { "packages" : { "yum" : { "php" : [], "php-mysql" : [], "mysql" : [], "httpd" : [] } }, "sources" : { "/var/www/html" : "http://wordpress.org/latest.tar.gz" }, "files" : { "/tmp/create-wp-config" : { "content" : { "Fn::Join" : [ "", [ "#!/bin/bashn", "cp /var/www/html/wordpress/wp-config-sample.php /var/www/html/wordpress/wp-config.phpn", "sed -i "s/'database_name_here'/'",{ "Ref" : "DBName" }, "'/g" wp-config.phpn", "sed -i "s/'username_here'/'",{ "Ref" : "DBUser" }, "'/g" wp-config.phpn", "sed -i "s/'password_here'/'",{ "Ref" : "DBPassword" }, "'/g" wp-config.phpn", "sed -i "s/'localhost'/'",{ "Fn::GetAtt" : [ "DBInstance", "Endpoint.Address" ] }, "'/g" wp-config.phpn" ]]}, "mode" : "000500", "owner" : "root", "group" : "root" } }, "commands" : { "01_configure_wordpress" : { "command" : "/tmp/create-wp-config", "cwd" : "/var/www/html/wordpress" } }, "services" : { "sysvinit" : { "httpd" : { "enabled" : "true", "ensureRunning" : "true" } } } } } }, "Properties": { "ImageId" : { "Fn::FindInMap" : [ "AWSRegionArch2AMI", { "Ref" : "AWS::Region" }, { "Fn::FindInMap" : [ "AWSInstanceType2Arch", { "Ref" : "InstanceType" }, "Arch" ] } ] }, "InstanceType" : { "Ref" : "InstanceType" }, "SecurityGroups" : [ {"Ref" : "WebServerSecurityGroup"} ], "KeyName" : { "Ref" : "KeyName" }, "UserData" : { "Fn::Base64" : { "Fn::Join" : ["", [ "#!/bin/bash -xen", "yum update -y aws-cfn-bootstrapn", "/opt/aws/bin/cfn-init -v ", " --stack ", { "Ref" : "AWS::StackName" }, " --resource LaunchConfig ", " --configsets wordpress_install ", " --region ", { "Ref" : "AWS::Region" }, "n", "/opt/aws/bin/cfn-signal -e $? ", " --stack ", { "Ref" : "AWS::StackName" }, " --resource WebServerGroup ", " --region ", { "Ref" : "AWS::Region" }, "n" ]]}} } }, "DBSecurityGroup": { "Type": "AWS::RDS::DBSecurityGroup", "Condition" : "Is-EC2-Classic", "Properties": { "DBSecurityGroupIngress": { "EC2SecurityGroupName": { "Ref": "WebServerSecurityGroup" } }, "GroupDescription": "database access" } }, "DBEC2SecurityGroup": { "Type": "AWS::EC2::SecurityGroup", "Condition" : "Is-EC2-VPC", "Properties" : { "GroupDescription": "Open database for access", "SecurityGroupIngress" : [{ "IpProtocol" : "tcp", "FromPort" : "3306", "ToPort" : "3306", "SourceSecurityGroupName" : { "Ref" : "WebServerSecurityGroup" } }] } }, "DBInstance" : { "Type": "AWS::RDS::DBInstance", "Properties": { "DBName" : { "Ref" : "DBName" }, "Engine" : "MySQL", "MultiAZ" : { "Ref": "MultiAZDatabase" }, "MasterUsername" : { "Ref" : "DBUser" }, "MasterUserPassword": { "Ref" : "DBPassword" }, "DBInstanceClass" : { "Ref" : "DBClass" }, "AllocatedStorage" : { "Ref" : "DBAllocatedStorage" }, "VPCSecurityGroups": { "Fn::If" : [ "Is-EC2-VPC", [ { "Fn::GetAtt": [ "DBEC2SecurityGroup", "GroupId" ] } ], { "Ref" : "AWS::NoValue"}]}, "DBSecurityGroups": { "Fn::If" : [ "Is-EC2-Classic", [ { "Ref": "DBSecurityGroup" } ], { "Ref" : "AWS::NoValue"}]} } } }, "Outputs" : { "WebsiteURL" : { "Value" : { "Fn::Join" : ["", ["http://", { "Fn::GetAtt" : [ "ElasticLoadBalancer", "DNSName" ]}, "/wordpress" ]]}, "Description" : "WordPress Website" } } } CloudFormation Template to Deploy Wordpress https://s3-us-west-1.amazonaws.com/cloudformation-templates-us-west-1/WordPress_Multi_AZ.template
  • 42. CodeCommit CodeBuild Developers Tools on AWS Managed source control, Highly scalable Git hosting, Integrates with other AWS services CodePipeline Continuous integration/delivery service Managed build service, Scales as needed CodeDeploy Code deployment automation to any target (AWS/On Prem)
  • 43. DEVELOPING & TESTING BUSINESS APPLICATIONS ON AWS
  • 44. Install software in the AWS Cloud or use preconfigured images from the AWS Marketplace Microsoft SQL Server, Microsoft SharePoint, Microsoft Exchange, SAP HANA, SAP HANA One, Oracle, PeopleSoft, IBM DB2, the IBM WebSphere family of products are available License portability allows you to move some existing licenses to the AWS Cloud, refer to the appropriate pages on the AWS website for details aws.amazon.com/microsoft aws.amazon.com/oracle aws.amazon.com/sap aws.amazon.com/ibm
  • 45. COMMON DEV & TEST PATTERNS
  • 46. Frameworks & Environments Source Control Amazon EC2 to run popular source control systems, integrate with GitHub or use AWS CodeCommit Project Management Add integrated project management and issue tracking applications from the AWS Marketplace Workstations Provide standard build developer/test workstations with Amazon WorkSpaces CI/Build Servers Use EC2 instances or AWS CodeBuild, CodePipeline, etc. as continuous integration and build servers
  • 51. Testing at Scale Unit & Regression Scale up and parallel run unit and regression plans in a fraction of the time Load & Performance Use EC2 instances from the spot market to generating load and test how applications perform with auto-scaling A/B Run A/B scenario testing with multiple replicated stacks Security Create sandboxes for aggressive security testing
  • 52. Parallel Testing 1 instance for 100 hours == 100 instances for 1 hour
  • 60. 2.4 MILLION PLAYERS USING AMAZON EC2 TO SIMULATE
  • 61. DEVELOPMENT & TEST IN THE CLOUD On-demand Charging Model Unlimited Elastic Capacity Infrastructure as Code Durable Storage Take lots of it when you need it Throw it away when you don’t Preserve it for future reference & reuse Deploy to a known state, quickly
  • 62. 00:00 01:00 02:00 03:00 04:00 05:00 06:00 07:00 08:00 09:00 10:00 11:00 12:00 13:00 14:00 15:00 16:00 17:00 18:00 19:00 20:00 21:00 22:00 23:00 Development Environment: CPU Utilization/Time
  • 63. 00:00 01:00 02:00 03:00 04:00 05:00 06:00 07:00 08:00 09:00 10:00 11:00 12:00 13:00 14:00 15:00 16:00 17:00 18:00 19:00 20:00 21:00 22:00 23:00 Auto-scaling by schedule Auto-scaling by schedule Development Environment: CPU Utilization/Time
  • 64. 00:00 01:00 02:00 03:00 04:00 05:00 06:00 07:00 08:00 09:00 10:00 11:00 12:00 13:00 14:00 15:00 16:00 17:00 18:00 19:00 20:00 21:00 22:00 23:00 46% Savings Development Environment: CPU Utilization/Time
  • 65. DEVELOPMENT & TEST IN THE CLOUD On-demand Charging Model Unlimited Elastic Capacity Infrastructure as Code Durable Storage Take lots of it when you need it Throw it away when you don’t Preserve it for future reference & reuse Deploy to a known state, quickly
  • 66. Durable Storage AMIs Create a catalog of AMIs for each iteration of an application Stored in Amazon S3 Templates Source control infrastructure templates with every application version Stored in Amazon S3 Snapshots Save disk images with ‘frozen’ data sets and attach to instances when needed Stored in Amazon S3
  • 67. Durable Storage AMIs Create a catalog of AMIs for each iteration of an application Stored in Amazon S3 Templates Source control infrastructure templates with every application version Snapshots Save disk images with ‘frozen’ data sets and attach to instances when needed Stored in Amazon S3 Enables you to roll back and recreate an environment for any given application version
  • 69. The cloud makes software development & testing easy1 You can make significant savings by making use of elasticity2 AWS provides unique tools to help you create & manage environments3 Enables you to operate at a scale & speed beyond traditional infrastructure4
  • 70. RESOURCES YOU CAN USE TO LEARN MORE
  • 72. Certification aws.amazon.com/certification Self-Paced Labs aws.amazon.com/training/ self-paced-labs Try products, gain new skills, and get hands-on practice working with AWS technologies aws.amazon.com/training Training Validate your proven skills and expertise with the AWS platform Build technical expertise to design and operate scalable, efficient applications on AWS AWS Training & Certification
  • 73. Storage & Backup in the Cloud November 22th – 16:30
  • 74. @[email protected] Thank You! October 2017 Boaz Ziniman - Technical Evangelist - AWS @AWScloud for Global AWS News & Announcements Local Events: https://aws.amazon.com/events/aws-israel/

Editor's Notes

  • #2: ברוכים הבאים למפגש הרביעי שלנו בסדרה של וביינרים הנקראת Journey through the Cloud. לפני שנתחיל, כרגיל, ק׌ת הודעות מנהלה - המצגת וההקלטה של הובינר יהיו זמינים בעמוד האירועים הישראלי של AWS (בכתובת...) תוך מספר ימים ואנחנו נעדכן את כל מי ׊נר׊ם ברגע שנפרסם את זה. למי שיש שאלות, כפי שליבת הסבירה קודם, אנא השתמשו בפנל ה – Q&A מצד ימין. אנחנו נשתדל לענות על כמה שיותר שאלות בסוף הובינר. אתם יותר ממוזמנים לשלוח אלינו פידבקים ולעקוב אחרי ב – Twitter על מנת שנוכל לשפר את התכנים שאנחנו מעבירים לכם. אז זהו - אחרי כל ההקדמה הזאת, בואו נתחיל
  • #3: אז כמו שאמרתי קודם, המפגש היום הוא חלק מסדרה הנקראת Journey Through the Cloud המטרות של הסדרה הן להציג דרכים שונות, באמצעות Use Cases ספציפיים, כמו הדוגמא של Tev & Test היום, איך להשתמש בכלים של AWS, ללמוד מניסיון של לקוחות אחרים שלנו שהעבירו את סביבות הפיתוח והבדיקות שלהם לענן וכמובן להראות איך להשתמש נכון בכלים אלו באמצעות Best Practices על מנת להבטיח שיהיה לכם קל להעביר את סביבת הפיתוח והבדיקות שלכם ל - AWS.
  • #4: אני רוצה להתחיל לדבר למה לקוחות רבים מתחילים לעבוד עם AWS דווקא עם סביבות אלו, משהו מאד בולט אצל לא מעט לקוחות שעושים את צעדיהם הראשונים על גבי הפלטפורמה שלנו אחת הסיבות המרכזיות היא שזה מאפ׊ר לכם לנצל את היתרונות הרבים של AWS בסביבה שהיא לא Production. זה לא אומר שאלו סביבות לא חשובות, אבל הן נותנות לכם את האפשרות ללמוד ולהתפתח מבלי להשפיע על לקוחות הקצה שלכם. להבין איך עובדים הכלים השונים, ה – CLI וה – SDKs הרבים שיש לנו וללמוד איך בונים סביבה אג׳ילית תוך כדי עבודה. הסיבה השנייה היא האפשרות להנות מהאלסטיות והאוטומציה ׊ – AWS מאפשרים לכל לקוח, יתרון מאד משמעותי כשמדובר על סביבות דינמיות כמו Dev & Test ואנחנו נדגים בדיוק במה מדובר במהלך המפגש שלנו היום.
  • #5: אז היום אנחנו נדבר על: למה להריץ את סביבות ה – Dev & Test שלכם על AWS אילו כלים, מתוך ארסנל הכלים המאד גדול שלנו, יתאימו לסביבה שלכם איך ניתן להשתמש בפלטפורמה שלנו על מנת לפתח ולבדוק Business Application כגון SAP HANA או Microsoft Sharepoint בקלות ובמהירות אנחנו נבחן מספר דרכים ושיטות להטמיע סביבות Dev & Test על AWS וכרגיל, נסיים במספר הפניות לאיפה ניתן ללמוד עוד על נושא זה. אם יש לכם שאלות שעולות תוך כדי הדברים, כתבו אותן בפנל ה – Q&A מצד ימין וננסה לענות עליהם לקראת סוף המפגש. הרבה חומר לכסות היום - בואו נ׌א לדרך
  • #6: אז כרגיל, בואו נתחיל עם הלמה – למה להשתמש ב – AWS עבור תשתיות הפיתוח והבדיקות שלכם?
  • #7: על מנת לענות על שאלה זו, אנחנו צריכים להסתכל על המאפיינים של סביבות פיתוח ובדיקות ***CLICK***
  • #8: ושני מאפיינים מאד בולטים הם העובדה שסביבות אלו, במקרים רבים, הן סביבות זמניות והצורך שלנו במספר רב של סביבות לצרכים שונים, במקרים רבים, בו זמנית.
  • #9: אז מצד אחד אנחנו מתחלים ומפסיקים תהליכים בצורה תכופה מאד – למשל בכל מה שקשור לבדיקות. סביבת בדיקות עולה, מבצעת את מה שנדרש ממנה וזהו. אין לנו צורך בה יותר. במקרים רבים מדובר על סביבות שירוצו לזמן ק׌ר של מספר שעות ואפילו פחות מזה. ועדיין הייתם רוצים את היכולת לשחזר סביבה מסוימת בקלות – אם זה בשביל לחזור על פעולה מהעבר או היכולת לשחזר באג או אינטראקציה ספציפית מול המוצר שלכם וכאן בה לעזרתכם השיטה של Golden Masters – המאפשרת לכם לשמור עותקים בצורה של Snapshots של הסביבות שלכם בכל רגע נתון ולהרים אותם בלחיצת כפתור.
  • #10: ומהצד של ריבוי סביבות אנחנו יכולים לציין סביבות בדיקה למערכות הפעלה שונות או בקונפיגורציות שונות חזרה למצב נתון על ידי שימוש ב – Snapshots או בדיקה מול מספר סביבות בו זמנית וכמובן תמיכה במספר מאמצי פיתוח בו זמנית, כמו למשל עבודה על גרסה חדשה של מוצר עם צוות אחד בעוד, בו זמנית, צוות אחר עובד על תיקוני באגים או שיפורים לגרסה קיימת. עבודה מסוג זה יכולה לייצר כפילויות והשימוש בסביבות פיתוח נפרדות במקביל מקלה מאד על תהליך הפיתוח.
  • #11: הענן מאד מתאים לתרחיש זה ולמעשה מתאים מאד לשני התרחישים שציינו. העובדה שאתם יכולים לעלות ולהוריד סביבות בקלות, בכל רגע נתון ולעשות את זה למספר בלתי מוגבל של סביבות, היא תכונה שמאד מאפיינת Workloads ב – AWS.
  • #12: אז מה למעשה מאפ׊ר זאת? מהן התכונות של הענן שנותנות לנו את הגמישות הזאת? יש ארבעה תחומים שאני רוצה לגעת בהם.
  • #17: לפני שנתקדם לדבר על השרותים השונים של AWS בתחום, הייתי שמח אם תספרו לנו, באמצעות ץקר ק׌ר, מהיא סביבת הפיתוח והבדיקות שלכם. POLL אז אילו שירותים של AWS עוזרים לכם בארבעת התחומים הללו?
  • #18: נתחיל עם כלים המאפשרים לכם להקים ולתפעל Datacenter וירטואלי בהתאם לצרכי ה – Dev & Test שלכם. אז הבסיס הוא EC2, מכונות וירטואליות המאפשרות לכם להריץ את היישומים שלכם, בסביבות שונות וב – Capacity המתאים לצרכים שלכם ובשילוב עם VPC – Virtual Private Network, המאפשר לכם ליצור את טופולוגיית הרשת שלכם ולהגדיר Subnets, הגדרות גישה בדומה ל – Firewalls ואפילו חיבור לסביבת ה – On Premise שלכם, במידה ויש בכך צורך, יוצרים את הבסיס לתשתית הוירטואלית שלכם. בנוסף, לפני מספר שנים, חברות רבות החלו לאמץ סביבות עבודה מבוססות Docker Containers, עליהם נרחיב יותר בהמשך ו – ECS מאפ׊ר לכם לנהל Docker על גבי AWS בצורה פשוטה ויעילה. השני הוא Elastic Beanstalk המאפשר לכם לנהל אפליקציות בצורה של Containers וגם בו ניגע ק׌ת יותר בהרחבה עוד רגע ואחרון חביב – CloudFormation שהנו כלי שבאמצעותו ניתן להגדיר סביבות שלמות, לא משנה עד כמה הן מורכבות, על גבי AWS ולפרוס אותן בלחיצת כפתור.
  • #19: Order is EC2 + VPC + ECS Elastic Beanstalk CloudFormation OK
  • #20: אז בואו נתמקד בנושא של מכונות וירטואליות ומה אפ׊ר לבנות איתן
  • #21: OK
  • #22: יצירת Elastic Datacenters
  • #25: Using IPSEC VPN Or DirectConnect
  • #28: Yelp, חברה מסן פרנסיסקו, עם סניפים בכל העולם, המספקת המלצות בעיקר (אבל לא רק) על מסעדות, עברה להשתמש ב – Containers על גבי AWS עבור סביבת הבדיקות שלה (ובשלב מאוחר יותר גם ל - Production). השימוש של Yelp בתשתית של AWS, מאפ׊ר לה להקצות משאבים בהתאם לצורך של צוותי הבדיקות וכמות האנשים שעובדים על בדיקות אלו בכל רגע נתון. התוצאה היא ירידה של 90% בזמן שלוקח לבצע תהליכי בדיקות שונים למוצרים של Yelp, משהו שמאד קשה להשיג עם תשתית On Prem.
  • #29: הכלי השני שלנו הוא elastic Beanstalck
  • #30: אז Elastic Beanstalk מאפ׊ר לכם לבנות סביבות של האפליקציה שלכם ואפילו לשמור גרסאות שונות של סביבות, למשל לפי השימוש שלהם, אם זה לבדיקות או ל – Production....
  • #32: מה שזה נאפ׊ר לכם הוא ליצור את ה – Resources השונים שדרושים לכם להרצת האפליקציה שלכם
  • #33: זה יכול להיות Load Balancers
  • #34: Autoscaling Groups
  • #35: EC2 Instances
  • #36: וברגע שהסביבה שלכם מוכנה ונשלטת על ידי Beanstalk...
  • #37: אתם יכולים לשחרר גרסאות של האפליקציה שלכם לסביבה הזאת או לעדכן גרסה של האפליקציה, תלוי אם אתם עושים את זה פעם ראשונה או לא
  • #38: גרסאות שונות של האפלקציה שלכם יכולות להיות זמינות דרך Endpoints ב – Elastic Load Balancer וכל הגרסאות של האפליקציה והלוגים השונים ישמרו על S3. שימוש ב – Elastic Beanstalk היא דרך מצויינת למפתחים לגשת לגרסאות שונות של האפליקציה מבלי לדאוג כל פעם מחדש להקמת הסביבה הדרושה על מנת להריץ אפליקציות אלו ויכולה לחסוך לכם הרבה מאד זמן בתהליך הפיתוח והבדיקות. Log files and application versions in S3
  • #39: ואחרון במסגרת הכלים לבניית Elastic Data Centers הוא AWS CloudFormation ***CLICK***
  • #40: המאפשר לכם לבנות Templates של סביבות מורכבות ב – AWS ולפרוס סביבות אלו בלחיצת כפתור
  • #41: המאפיינים של CloudFormation הם...
  • #43: בנוסף לכל למה שקשור לבניית תשתית המחשוב שלכם עבור הפיתוח והבדיקות, AWS מספקים מגוון של כלים, חדשים יחסית, לתהליך הפיתוח עצמו.
  • #44: אז החלק הזה היה קשור לניהול תשתית עבור האפליקציות שלכם. אבל מה אם אתם בונים אפליקציות שמבוססות על CLICK
  • #45: אפליקציות של Microsoft, Oracle, SAP או IBM? והייתם רוצים לעשות פיתוח ובדיקות על גבי פלטפורמה זו, משהו שהוא מאד פופולרי אצל לקוחות רבים שלנו. אנחנו מספקים פרטים לגבי עבודה עם פלטפורמות אלו ב - Resource Center לכל אחת מהחברות בכתובות... אתם יכולים להתקין את המוצרים השונים מתוך ה – Marketplace של AWS ולהשתמש במוצרים כגון... ועוד רבים אחרים מידע חשוב נוסף בנושא של Licensing ובעיקר License Portability נמצא בעמודי המוצר השונים חשוב לזכור שאתם נהנים מכל היתרונות של Cloud Computing ויכולים להחליט בכל רגע נתון כמה מכונות אתם צריכים ולכמה זמן ולשלם רק עבור השימוש שלכם, להרחיב את התשתית הקיימת של מוצרים אלו בחברה שלכם ולהאיץ פרויקטים של פיתוח ובדיקה של מוצרים ופלטפורמות חדשות.
  • #46: בואו ונעבור לחלק האחרון של ה – Webinar שלנו היום ונדבר על תבניות נפוצות שאנחנו רואים אצל לקוחות שלנו שמטמיעים פתרונות Dev & Test על גבי AWS
  • #47: אנחנו רואים לקוחות רבים שבונים את כל סביבת העבודה שלהם על גבי AWS ולא רק את הפיתוח והבדיקות החל מ...
  • #48: זאת ארכיטקטורה מאד מקובלת אצל לקוחות שלנו שכוללת...
  • #50: לקוחות רבים משתמשים ב – CloudFormation כתוצר של תהליך ה – Build שלהם על מנת לפרוס גרסאות חדשות של המוצר שלהם בצורה פשוטה ויעילה. אתם יכולים לראות כאן תהליך פיתוח שלם בחלק העליון של המסך, שהתוצר של ה – Build הוא CloudFormation Template שכולל, בנוסף לקוד של המוצר, גם את הגדרות הסביבה עליה המוצר יפרס. זה מאפ׊ר למפתחים של המוצר, בצורה אוטומטית או ידנית, לפרוס סביבת בדיקות לגרסה חדשה בלחיצת כפתור ולקבל את כל המשאבים שדרושים להם על מנת לבדוק גרסאות חדשות אלו.
  • #52: סוג שני של פתרונות שאנחנו רואים אלו פתרונות של בדיקות ב – Scale מאד גבוהה שמאד קשה לעשות בתשתיות מסורתיות On premis כמה דוגמאות ששווה להזכיר הן נושא של בדיקת גרסאות מרובות בתהליכי Test Driven Development – אם אני רוצה לבדוק 50 גרסאות של המוצר שלי, אין שום מניעה להרים 50 מכונות EC2 ולבדוק את כל הגרסאות במקביל. נושא Load Testing מאפ׊ר לכם גם להרים סביבות ענק ליצירת Load וגם לבחון איך האפליקציה שלכם מגיבה ל – Load ואיך ה – Autoscaling Policy שלכם עובד בעומס אמיתי. שימוש ב – Spot Instance עבור מכונות ליצירת Load מאפ׊ר לכם לעשות בדיקות כאלו במחיר מאד נמוך אתם יכולים בכל רגע נתון ליצר העתק של סביבת ה – Production שלכם ולבצע בדיקות Security אגרסיביות, מה שברוב המקרים לא הייתם עושים על הסביבה שמשרתת את הלקוחות שלכם ואחרון הוא נושא ה – A/B Testing ׊מאפ׊ר לכם לעשות ניסויים בגרסאות שונות של המערכת בקלות רבה
  • #53: חשוב לזכור שכשמדובר על Parallel Testing מכונה אחת ל – 100 שעות שווה בעלות שלה ל – 100 מכונות לשעה ולכן אין כל משמעות, מבחינת מחיר, למקביליות. מה שאתם כן מקבלים זה קיצור משמעותי של זמן הבדיקות שלכם והיום עם חיוב לפי שניה, אתם משלמים בדיוק על הזמן שלוקח למערכת שלכם לסיים את סייקל הבדיקות. רק לא לשכח לנקות אחריכם ולהוריד סביבות שאין בהם שימוש
  • #54: Each autoscaling group uses a different set of AMI AMI-B contains the test code.
  • #55: Each autoscaling group uses a different set of AMI AMI-B contains the test code.
  • #60: Activision- Modern Warfare 3
  • #61: מאד מקובל בתעשיית המשחקים
  • #62: אז בחזרה לארבעת היתרונות של מחשוב ענן לצורכי פיתוח ובדיקות, דיברנו לא מעט על שימוש בכמויות מאד גדולות של Resources בהתאם לצרכים שלנו, מה לגבי שחרור משאבים כשאתם לא צריכים אותם?
  • #65: ... קחו בחשבון שבסופי שבוע החסכון עולה ל – 100% אם הצוות שלכם לא עובד בשישי שבת
  • #74: ולפני שאסיים ונעבור לשאלות, אתם מוזמנים לעקוב אחרי הפרסומים שלנו לפרק הבא בסדרת ה – Webinars שלנו שישודר ב – 22 לנובמבר בשעה 4:30 והפעם Storage & Backup שבו נדבר על שיקולים שונים לבניית אסטרטגיית Storage & Backup ושימוש בשירותים השונים של AWS בתחום הזה.
  • #75: תודה רבה לכולכם על ההשתתפות ועל הזמן שאתם משקיעים ללמוד עוד על השרותים השונים של AWS! אתם מוזמנים לעקוב אחרי החשבון של AWSCloud בטוויטר על מנת לקבל את כל האירועים וההכרזות שלנו בעולם וליצור איתי ק׊ר או לעקוב אחרי לעידכונים לגבי מה שקורה כאן בישראל. חשוב לנו מאד הפידבק שלכם ובעוד כמה שניות, לפני שנעבור לשאלות הקהל, נעלה ץקר ק׌ר על הווביר ונשמח מאד לקבל את המשוב שלכם. אם יש משהו שאתם רוצים להגיד לנו בנוסף לשאלת הסקר, נשמח אם תשתפו אותנו באמצעות תיבת הצ׳ט.