code.talks 2016 hamburg - plesk - autoscaling wordpress with docker & aws - by jan löffler
TRANSCRIPT
![Page 1: code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - by Jan Löffler](https://reader031.vdocuments.us/reader031/viewer/2022030305/587164921a28ab58758b5147/html5/thumbnails/1.jpg)
Jan Löffler, CTO Plesk
AutoScaling WordPress with Docker & AWS
code.talks 2016
![Page 2: code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - by Jan Löffler](https://reader031.vdocuments.us/reader031/viewer/2022030305/587164921a28ab58758b5147/html5/thumbnails/2.jpg)
Sebastian Vettel
![Page 3: code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - by Jan Löffler](https://reader031.vdocuments.us/reader031/viewer/2022030305/587164921a28ab58758b5147/html5/thumbnails/3.jpg)
![Page 4: code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - by Jan Löffler](https://reader031.vdocuments.us/reader031/viewer/2022030305/587164921a28ab58758b5147/html5/thumbnails/4.jpg)
![Page 5: code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - by Jan Löffler](https://reader031.vdocuments.us/reader031/viewer/2022030305/587164921a28ab58758b5147/html5/thumbnails/5.jpg)
Who uses WordPress?
![Page 6: code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - by Jan Löffler](https://reader031.vdocuments.us/reader031/viewer/2022030305/587164921a28ab58758b5147/html5/thumbnails/6.jpg)
Usain Bolt Katy Perry Snoop Dog LL Cool J
Kim Kardashian The Rolling Stones Sylvester Stallone Mötley Crüe
Beyoncé Justin Bieber Justin Timberlake Alanis Morissette
![Page 7: code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - by Jan Löffler](https://reader031.vdocuments.us/reader031/viewer/2022030305/587164921a28ab58758b5147/html5/thumbnails/7.jpg)
Usain Bolt Katy Perry Snoop Dog LL Cool J
Kim Kardashian Mötley Crüe
Beyoncé Alanis MorissetteJustin Bieber
![Page 8: code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - by Jan Löffler](https://reader031.vdocuments.us/reader031/viewer/2022030305/587164921a28ab58758b5147/html5/thumbnails/8.jpg)
TechCrunch Metro The New Yorker BBC America
MTV News The Official Star Wars Blog Sony Music Facebook Newsroom
Time.com CNN UPS Mozilla Blog
![Page 9: code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - by Jan Löffler](https://reader031.vdocuments.us/reader031/viewer/2022030305/587164921a28ab58758b5147/html5/thumbnails/9.jpg)
http://w3techs.com/technologies/history_overview/content_management/all/y
![Page 10: code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - by Jan Löffler](https://reader031.vdocuments.us/reader031/viewer/2022030305/587164921a28ab58758b5147/html5/thumbnails/10.jpg)
# WEBSITES WORLDWIDE
1.085.358.537http://www.internetlivestats.com/total-number-of-websites/
![Page 11: code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - by Jan Löffler](https://reader031.vdocuments.us/reader031/viewer/2022030305/587164921a28ab58758b5147/html5/thumbnails/11.jpg)
# WEBSITES WORLDWIDE
1.085.358.692http://www.internetlivestats.com/total-number-of-websites/
![Page 12: code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - by Jan Löffler](https://reader031.vdocuments.us/reader031/viewer/2022030305/587164921a28ab58758b5147/html5/thumbnails/12.jpg)
38% of E-Shops
![Page 13: code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - by Jan Löffler](https://reader031.vdocuments.us/reader031/viewer/2022030305/587164921a28ab58758b5147/html5/thumbnails/13.jpg)
26,6%
2,7%
2,2%
![Page 14: code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - by Jan Löffler](https://reader031.vdocuments.us/reader031/viewer/2022030305/587164921a28ab58758b5147/html5/thumbnails/14.jpg)
#SPEED
![Page 15: code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - by Jan Löffler](https://reader031.vdocuments.us/reader031/viewer/2022030305/587164921a28ab58758b5147/html5/thumbnails/15.jpg)
High Traffic Sites???
![Page 16: code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - by Jan Löffler](https://reader031.vdocuments.us/reader031/viewer/2022030305/587164921a28ab58758b5147/html5/thumbnails/16.jpg)
NEED
FOR
SPEED
![Page 17: code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - by Jan Löffler](https://reader031.vdocuments.us/reader031/viewer/2022030305/587164921a28ab58758b5147/html5/thumbnails/17.jpg)
![Page 18: code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - by Jan Löffler](https://reader031.vdocuments.us/reader031/viewer/2022030305/587164921a28ab58758b5147/html5/thumbnails/18.jpg)
my-wordpress-site.com
![Page 19: code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - by Jan Löffler](https://reader031.vdocuments.us/reader031/viewer/2022030305/587164921a28ab58758b5147/html5/thumbnails/19.jpg)
my-wordpress-site.com
MYSQL ServerLoad-Balancer
![Page 20: code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - by Jan Löffler](https://reader031.vdocuments.us/reader031/viewer/2022030305/587164921a28ab58758b5147/html5/thumbnails/20.jpg)
my-wordpress-site.com
MYSQL ServerLoad-Balancer
File Storage
![Page 21: code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - by Jan Löffler](https://reader031.vdocuments.us/reader031/viewer/2022030305/587164921a28ab58758b5147/html5/thumbnails/21.jpg)
my-wordpress-site.com
MYSQL Server
Load-Balancer
File Storage
CDN
MYSQL Server
![Page 22: code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - by Jan Löffler](https://reader031.vdocuments.us/reader031/viewer/2022030305/587164921a28ab58758b5147/html5/thumbnails/22.jpg)
Easy-peasy, isn’t it?
![Page 23: code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - by Jan Löffler](https://reader031.vdocuments.us/reader031/viewer/2022030305/587164921a28ab58758b5147/html5/thumbnails/23.jpg)
DEPLOYMENT
![Page 24: code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - by Jan Löffler](https://reader031.vdocuments.us/reader031/viewer/2022030305/587164921a28ab58758b5147/html5/thumbnails/24.jpg)
![Page 25: code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - by Jan Löffler](https://reader031.vdocuments.us/reader031/viewer/2022030305/587164921a28ab58758b5147/html5/thumbnails/25.jpg)
doubled to 30%http://www.rightscale.com/blog/cloud-industry-insights/cloud-computing-trends-2016-state-cloud-survey
![Page 26: code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - by Jan Löffler](https://reader031.vdocuments.us/reader031/viewer/2022030305/587164921a28ab58758b5147/html5/thumbnails/26.jpg)
my-wordpress-site
![Page 27: code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - by Jan Löffler](https://reader031.vdocuments.us/reader031/viewer/2022030305/587164921a28ab58758b5147/html5/thumbnails/27.jpg)
Modern Web-Development
2016
![Page 28: code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - by Jan Löffler](https://reader031.vdocuments.us/reader031/viewer/2022030305/587164921a28ab58758b5147/html5/thumbnails/28.jpg)
IMMUTABLE INFRASTRUCTURE
![Page 29: code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - by Jan Löffler](https://reader031.vdocuments.us/reader031/viewer/2022030305/587164921a28ab58758b5147/html5/thumbnails/29.jpg)
![Page 30: code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - by Jan Löffler](https://reader031.vdocuments.us/reader031/viewer/2022030305/587164921a28ab58758b5147/html5/thumbnails/30.jpg)
![Page 31: code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - by Jan Löffler](https://reader031.vdocuments.us/reader031/viewer/2022030305/587164921a28ab58758b5147/html5/thumbnails/31.jpg)
IMMUTABLE STACKS
ELB myapp-v1
jans-wordpress.com
EC2+ Docker
EC2+ Docker
EC2+ Docker
100%
![Page 32: code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - by Jan Löffler](https://reader031.vdocuments.us/reader031/viewer/2022030305/587164921a28ab58758b5147/html5/thumbnails/32.jpg)
IMMUTABLE STACKS
ELB myapp-v1
EC2+ Docker
EC2+ Docker
EC2+ Docker
ELB myapp-v2
EC2+ Docker
EC2+ Docker
jans-wordpress.com
90% 10%
![Page 33: code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - by Jan Löffler](https://reader031.vdocuments.us/reader031/viewer/2022030305/587164921a28ab58758b5147/html5/thumbnails/33.jpg)
IMMUTABLE STACKS
ELB myapp-v1
EC2+ Docker
EC2+ Docker
EC2+ Docker
ELB myapp-v2
EC2+ Docker
EC2+ Docker
jans-wordpress.com
0% 100%
![Page 34: code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - by Jan Löffler](https://reader031.vdocuments.us/reader031/viewer/2022030305/587164921a28ab58758b5147/html5/thumbnails/34.jpg)
APP INSTANCE
VM (EC2)
Basis Image (AMI)
Docker Container
Application
✓ VPC✓ Security
Groups✓ AutoScaling✓ CloudWatch✓ CloudFront✓ Route53
✓ Docker Runtime✓ Logging✓ Monitoring✓ Security config
✓ Debian✓ Nginx✓ php7-fpm✓ NewRelic
![Page 35: code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - by Jan Löffler](https://reader031.vdocuments.us/reader031/viewer/2022030305/587164921a28ab58758b5147/html5/thumbnails/35.jpg)
AWS
API
Docker Registry
docker pull
docker push
AMI
THE WISH
![Page 36: code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - by Jan Löffler](https://reader031.vdocuments.us/reader031/viewer/2022030305/587164921a28ab58758b5147/html5/thumbnails/36.jpg)
THE REALITY
![Page 37: code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - by Jan Löffler](https://reader031.vdocuments.us/reader031/viewer/2022030305/587164921a28ab58758b5147/html5/thumbnails/37.jpg)
$ accept-vpc-peering-connection$ $ allocate-address$ $ allocate-hosts$ $ assign-private-ip-addresses$ $ associate-address$ $ associate-dhcp-options$ $ associate-route-table$ $ attach-classic-link-vpc$ $ attach-internet-gateway$ $ attach-network-interface$ $ attach-volume$ $ attach-vpn-gateway$ $ authorize-security-group-egress$ $ authorize-security-group-ingress$ $ bundle-instance$ $ cancel-bundle-task$ $ cancel-conversion-task$ $ cancel-export-task$ $ cancel-import-task$ $ cancel-reserved-instances-listing$ $ cancel-spot-fleet-requests$ $ cancel-spot-instance-requests$ $ confirm-product-instance$ $ copy-image$ $ copy-snapshot$ $ create-customer-gateway$ $ create-dhcp-options$ $ create-flow-logs$ $ create-image$ $ create-instance-export-task$ $ create-internet-gateway$ $ create-key-pair$ $ create-nat-gateway$ $ create-network-acl$ $ create-network-acl-entry$ $ create-network-interface
$ create-reserved-instances-listing$ $ create-route$ $ create-route-table$ $ create-security-group$ $ create-snapshot$ $ create-spot-datafeed-subscription$ $ create-subnet$ $ create-tags$ $ create-volume$ $ create-vpc$ $ create-vpc-endpoint$ $ create-vpc-peering-connection$ $ create-vpn-connection$ $ create-vpn-connection-route$ $ create-vpn-gateway$ $ delete-customer-gateway$ $ delete-dhcp-options$ $ delete-flow-logs$ $ delete-internet-gateway$ $ delete-key-pair$ $ delete-nat-gateway$ $ delete-network-acl$ $ delete-network-acl-entry$ $ delete-network-interface$ $ delete-placement-group$ $ delete-route$ $ delete-route-table$ $ delete-security-group$ $ delete-snapshot$ $ delete-spot-datafeed-subscription$ $ delete-subnet$ $ delete-tags$ $ delete-volume$ $ delete-vpc$ $ delete-vpc-endpoints$ $ delete-vpc-peering-connection$
$ delete-vpn-connection$ $ delete-vpn-connection-route$ $ delete-vpn-gateway$ $ deregister-image$ $ describe-account-attributes$ $ describe-addresses$ $ describe-availability-zones$ $ describe-bundle-tasks$ $ describe-classic-link-instances$ $ describe-conversion-tasks$ $ describe-customer-gateways$ $ describe-dhcp-options$ $ describe-export-tasks$ $ describe-flow-logs$ $ describe-host-reservation-offerings$ $ describe-host-reservations$ $ describe-hosts$ $ describe-id-format$ $ describe-identity-id-format$ $ describe-image-attribute$ $ describe-images$ $ describe-import-image-tasks$ $ describe-import-snapshot-tasks$ $ describe-instance-attribute$ $ describe-instance-status$ $ describe-instances$ $ describe-internet-gateways$ $ describe-key-pairs$ $ describe-moving-addresses$ $ describe-nat-gateways$ $ describe-network-acls$ $ describe-network-interface-attribute$ $ describe-network-interfaces$ $ describe-placement-groups$ $ describe-prefix-lists$ $ describe-regions$
$ describe-reserved-instances$ $ describe-reserved-instances$ describe-reserved-instancesmodifications$ $ describe-reserved-instances$ describe-route-tables$ $ describe-scheduled-$ describe-scheduled-$ describe-security-group$ describe-security-groups$ $ describe-snapshot-attribute$ $ describe-snapshots$ $ describe-spot-datafeed$ describe-spot-fleet$ describe-spot-fleet$ describe-spot-fleet$ describe-spot-instance$ describe-spot-price$ describe-stale-security$ describe-subnets$ $ describe-tags$ $ describe-volume-attribute$ $ describe-volume-status$ $ describe-volumes$ $ describe-vpc-attribute$ $ describe-vpc-classic$ describe-vpc-classic$ describe-vpc-endpoint$ describe-vpc-endpoints$ $ describe-vpc-peering$ describe-vpcs$ $ describe-vpn-connections$ $ describe-vpn-gateways$ $ detach-classic-link$ detach-internet-gateway$ $ detach-network-interface$ $ detach-volume$ $ detach-vpn-gateway$
210 calls for EC2 only
![Page 38: code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - by Jan Löffler](https://reader031.vdocuments.us/reader031/viewer/2022030305/587164921a28ab58758b5147/html5/thumbnails/38.jpg)
$ accept-vpc-peering-connection$ $ allocate-address$ $ allocate-hosts$ $ assign-private-ip-addresses$ $ associate-address$ $ associate-dhcp-options$ $ associate-route-table$ $ attach-classic-link-vpc$ $ attach-internet-gateway$ $ attach-network-interface$ $ attach-volume$ $ attach-vpn-gateway$ $ authorize-security-group-egress$ $ authorize-security-group-ingress$ $ bundle-instance$ $ cancel-bundle-task$ $ cancel-conversion-task$ $ cancel-export-task$ $ cancel-import-task$ $ cancel-reserved-instances-listing$ $ cancel-spot-fleet-requests$ $ cancel-spot-instance-requests$ $ confirm-product-instance$ $ copy-image$ $ copy-snapshot$ $ create-customer-gateway$ $ create-dhcp-options$ $ create-flow-logs$ $ create-image$ $ create-instance-export-task$ $ create-internet-gateway$ $ create-key-pair$ $ create-nat-gateway$ $ create-network-acl$ $ create-network-acl-entry$ $ create-network-interface
$ create-reserved-instances-listing$ $ create-route$ $ create-route-table$ $ create-security-group$ $ create-snapshot$ $ create-spot-datafeed-subscription$ $ create-subnet$ $ create-tags$ $ create-volume$ $ create-vpc$ $ create-vpc-endpoint$ $ create-vpc-peering-connection$ $ create-vpn-connection$ $ create-vpn-connection-route$ $ create-vpn-gateway$ $ delete-customer-gateway$ $ delete-dhcp-options$ $ delete-flow-logs$ $ delete-internet-gateway$ $ delete-key-pair$ $ delete-nat-gateway$ $ delete-network-acl$ $ delete-network-acl-entry$ $ delete-network-interface$ $ delete-placement-group$ $ delete-route$ $ delete-route-table$ $ delete-security-group$ $ delete-snapshot$ $ delete-spot-datafeed-subscription$ $ delete-subnet$ $ delete-tags$ $ delete-volume$ $ delete-vpc$ $ delete-vpc-endpoints$ $ delete-vpc-peering-connection$
$ delete-vpn-connection$ $ delete-vpn-connection-route$ $ delete-vpn-gateway$ $ deregister-image$ $ describe-account-attributes$ $ describe-addresses$ $ describe-availability-zones$ $ describe-bundle-tasks$ $ describe-classic-link-instances$ $ describe-conversion-tasks$ $ describe-customer-gateways$ $ describe-dhcp-options$ $ describe-export-tasks$ $ describe-flow-logs$ $ describe-host-reservation-offerings$ $ describe-host-reservations$ $ describe-hosts$ $ describe-id-format$ $ describe-identity-id-format$ $ describe-image-attribute$ $ describe-images$ $ describe-import-image-tasks$ $ describe-import-snapshot-tasks$ $ describe-instance-attribute$ $ describe-instance-status$ $ describe-instances$ $ describe-internet-gateways$ $ describe-key-pairs$ $ describe-moving-addresses$ $ describe-nat-gateways$ $ describe-network-acls$ $ describe-network-interface-attribute$ $ describe-network-interfaces$ $ describe-placement-groups$ $ describe-prefix-lists$ $ describe-regions$
$ describe-reserved-instances$ $ describe-reserved-instances$ describe-reserved-instancesmodifications$ $ describe-reserved-instances$ describe-route-tables$ $ describe-scheduled-$ describe-scheduled-$ describe-security-group$ describe-security-groups$ $ describe-snapshot-attribute$ $ describe-snapshots$ $ describe-spot-datafeed$ describe-spot-fleet$ describe-spot-fleet$ describe-spot-fleet$ describe-spot-instance$ describe-spot-price$ describe-stale-security$ describe-subnets$ $ describe-tags$ $ describe-volume-attribute$ $ describe-volume-status$ $ describe-volumes$ $ describe-vpc-attribute$ $ describe-vpc-classic$ describe-vpc-classic$ describe-vpc-endpoint$ describe-vpc-endpoints$ $ describe-vpc-peering$ describe-vpcs$ $ describe-vpn-connections$ $ describe-vpn-gateways$ $ detach-classic-link$ detach-internet-gateway$ $ detach-network-interface$ $ detach-volume$ $ detach-vpn-gateway$
210 calls for EC2 only
S3ELB
RDS
CloudFrontCloudWatch
AutoScaling
Route53
Events
IAM
S3api
SNS
![Page 39: code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - by Jan Löffler](https://reader031.vdocuments.us/reader031/viewer/2022030305/587164921a28ab58758b5147/html5/thumbnails/39.jpg)
PLESK WORDPRESS AWS SCALER
![Page 40: code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - by Jan Löffler](https://reader031.vdocuments.us/reader031/viewer/2022030305/587164921a28ab58758b5147/html5/thumbnails/40.jpg)
https://github.com/plesk/wordpress-aws-scaler
![Page 41: code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - by Jan Löffler](https://reader031.vdocuments.us/reader031/viewer/2022030305/587164921a28ab58758b5147/html5/thumbnails/41.jpg)
AWS
manage-wordpress.sh
Docker Registry
docker pull
docker push
AMI
![Page 42: code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - by Jan Löffler](https://reader031.vdocuments.us/reader031/viewer/2022030305/587164921a28ab58758b5147/html5/thumbnails/42.jpg)
PLESK WORDPRESS AWS SCALER
![Page 43: code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - by Jan Löffler](https://reader031.vdocuments.us/reader031/viewer/2022030305/587164921a28ab58758b5147/html5/thumbnails/43.jpg)
manage-wordpress.sh create
![Page 44: code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - by Jan Löffler](https://reader031.vdocuments.us/reader031/viewer/2022030305/587164921a28ab58758b5147/html5/thumbnails/44.jpg)
Too quick? How does it work internally?Install AWS CLI (https://docs.aws.amazon.com/cli/latest/userguide/installing.html)
$ sudo pip install awscli$ aws configure$ aws --version
Clone WordPress AWS Scaler git repo (https://github.com/plesk/wordpress-aws-scaler)
$ git clone https://github.com/plesk/wordpress-aws-scaler.git$ cd wordpress-aws-scaler
Build Docker Image and Upload to Docker Hub (https://hub.docker.com/explore/)
$ docker build -t janloeffler/wordpress-aws-scaler:latest .$ docker push janloeffler/wordpress-aws-scaler:latest
![Page 45: code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - by Jan Löffler](https://reader031.vdocuments.us/reader031/viewer/2022030305/587164921a28ab58758b5147/html5/thumbnails/45.jpg)
List existing AWS resources
List existing AWS Resources
$ aws ec2 describe-vps $ aws ec2 describe-security-groups $ aws ec2 describe-instances$ aws rds describe-db-instances[...]
Do this for all AWS components
$ aws autoscaling $ aws ec2 $ aws cloudfront $ aws cloudwatch $ aws elb $ aws rds $ aws s3 $ aws route53 $ aws events
![Page 46: code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - by Jan Löffler](https://reader031.vdocuments.us/reader031/viewer/2022030305/587164921a28ab58758b5147/html5/thumbnails/46.jpg)
Create new resources
Create new AWS Resources
$ aws ec2 create-vpc$ aws ec2 create-security-group[...]
Do this for all AWS components
$ aws autoscaling $ aws ec2 $ aws cloudfront $ aws cloudwatch $ aws elb $ aws rds $ aws s3 $ aws route53 $ aws events
![Page 47: code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - by Jan Löffler](https://reader031.vdocuments.us/reader031/viewer/2022030305/587164921a28ab58758b5147/html5/thumbnails/47.jpg)
Create new Launch ConfigurationGenerate EC2-User-Data Script to run directly after booting EC2 VM
$ cat >ec2-user-data.sh <<EOL#!/bin/bashdocker pull janloeffler/wordpress-aws-scaler:latestdocker run -d -p 80:80 -p 443:443 -e WORDPRESS_DB_HOST='${DB}' -e WORDPRESS_DB_USER='${DB_USERNAME}' -e WORDPRESS_DB_PASSWORD='${DB_PASSWORD}' -e WORDPRESS_DB_NAME='${DB_NAME}' -e WORDPRESS_DB_PREFIX='${WORDPRESS_DB_PREFIX}' -e WORDPRESS_URL='http://${ELB}' -e WORDPRESS_TITLE='${WORDPRESS_TITLE}' -e WORDPRESS_USER_EMAIL='${WORDPRESS_USER_EMAIL}' -e NEWRELIC_KEY='${NEWRELIC_KEY}' -e NEWRELIC_NAME='${NEWRELIC_NAME}' -e S3_KEY='${IAM_USER_KEY}' -e S3_SECRET='${IAM_USER_SECRET}' -e S3_BUCKET='${S3_BUCKET_NAME}' -e S3_BUCKET_URL='${S3_URL}' -it janloeffler/wordpress-aws-scaler:latestEOL
Create new Launch Configuration for AutoScaling
$ aws autoscaling create-launch-configuration --launch-configuration-name $LC_NAME --image-id $AMI --instance-type $INSTANCE_TYPE --key-name $KEYNAME --security-groups $SEC_GROUP_ID --user-data file://ec2-user-data.sh
![Page 48: code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - by Jan Löffler](https://reader031.vdocuments.us/reader031/viewer/2022030305/587164921a28ab58758b5147/html5/thumbnails/48.jpg)
You must love JSON !!! ;-){
"Reservations": [{
"OwnerId": "699328319947","ReservationId": "r-041ac13209e0d4eef",
"Groups": [],
"RequesterId": "226008221399","Instances": [
{"Monitoring": {
"State": "enabled"
},"PublicDnsName": "ec2-52-210-200-157.eu-west-1.compute.amazonaws.com",
"State": {"Code": 16,
"Name": "running"
},"EbsOptimized": false,
"LaunchTime": "2016-09-05T12:19:54.000Z","PublicIpAddress": "52.210.200.157",
"PrivateIpAddress": "172.31.25.83",
"ProductCodes": [{
"ProductCodeId": "4jvb72q6a56js2x7jzd24jar5","ProductCodeType": "marketplace"
}
],"VpcId": "vpc-fffbe19a",
"StateTransitionReason": "","InstanceId": "i-0ea3384a24a3c6aba",
"ImageId": "ami-64385917",
"PrivateDnsName": "ip-172-31-25-83.eu-west-1.compute.internal","KeyName": "Marko Heijnen",
"SecurityGroups": [{
"GroupName": "WordPress-Docker-Test",
"GroupId": "sg-1b8dde7c"}
],
"ClientToken": "70aa81e1-10a3-4b83-acc7-62702015d06e_subnet-cff90cb9_1",
"SubnetId": "subnet-cff90cb9","InstanceType": "m3.medium",
"NetworkInterfaces": [{
"Status": "in-use",
"MacAddress": "06:c0:22:65:b4:ed","SourceDestCheck": true,
"VpcId": "vpc-fffbe19a","Description": "",
"Association": {
"PublicIp": "52.210.200.157","PublicDnsName": "ec2-52-210-200-157.eu-west-1.compute.amazonaws.com",
"IpOwnerId": "amazon"},
"NetworkInterfaceId": "eni-2f4efa63",
"PrivateIpAddresses": [{
"PrivateDnsName": "ip-172-31-25-83.eu-west-1.compute.internal","Association": {
"PublicIp": "52.210.200.157",
"PublicDnsName": "ec2-52-210-200-157.eu-west-1.compute.amazonaws.com","IpOwnerId": "amazon"
},"Primary": true,
"PrivateIpAddress": "172.31.25.83"
}],
"PrivateDnsName": "ip-172-31-25-83.eu-west-1.compute.internal","Attachment": {
"Status": "attached",
"DeviceIndex": 0,"DeleteOnTermination": true,
"AttachmentId": "eni-attach-7f9031a0","AttachTime": "2016-09-05T12:19:54.000Z"
},
[…]
![Page 49: code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - by Jan Löffler](https://reader031.vdocuments.us/reader031/viewer/2022030305/587164921a28ab58758b5147/html5/thumbnails/49.jpg)
WP CUP – RACE DAY 1
single-server
avg 3.86 sec for 947 hits
auto-scaling
avg 1.45 sec for 9.866 hits
Fastest Lap 216 ms180 RPS < 3sec
Fastest Lap 99 ms1.000 RPS < sec
No Caching!!!
![Page 50: code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - by Jan Löffler](https://reader031.vdocuments.us/reader031/viewer/2022030305/587164921a28ab58758b5147/html5/thumbnails/50.jpg)
Plesk Mission
“We simplify the lives of web professionals.”
![Page 51: code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - by Jan Löffler](https://reader031.vdocuments.us/reader031/viewer/2022030305/587164921a28ab58758b5147/html5/thumbnails/51.jpg)
Docker
WordPress CDN
ELB & AutoScaling
DB
Route53
![Page 52: code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - by Jan Löffler](https://reader031.vdocuments.us/reader031/viewer/2022030305/587164921a28ab58758b5147/html5/thumbnails/52.jpg)
code.talks 2016, Hamburg
“High traffic sites with WordPress, Docker & AWS”
How to auto-scale WordPress on AWS and make it fly!
Passion for Web Development
Jan Löffler
CTO Plesk
● @jlsoft2
Marko Heijnen
WordPress Contributor
● @markoheijnen
![Page 53: code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - by Jan Löffler](https://reader031.vdocuments.us/reader031/viewer/2022030305/587164921a28ab58758b5147/html5/thumbnails/53.jpg)
https://github.com/plesk/wordpress-aws-scaler
https://www.slideshare.net/plesk
![Page 54: code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - by Jan Löffler](https://reader031.vdocuments.us/reader031/viewer/2022030305/587164921a28ab58758b5147/html5/thumbnails/54.jpg)
![Page 55: code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - by Jan Löffler](https://reader031.vdocuments.us/reader031/viewer/2022030305/587164921a28ab58758b5147/html5/thumbnails/55.jpg)
![Page 56: code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - by Jan Löffler](https://reader031.vdocuments.us/reader031/viewer/2022030305/587164921a28ab58758b5147/html5/thumbnails/56.jpg)
“When you walk through your website architecture and you wonder who could be so stupid to test it with 10.000 parallel requests per second. But if you want to be successful and play in the first league, it is important to think about it before your traffic increases”
Jan Löffler @jlsoft2
![Page 57: code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - by Jan Löffler](https://reader031.vdocuments.us/reader031/viewer/2022030305/587164921a28ab58758b5147/html5/thumbnails/57.jpg)
https://github.com/plesk/wordpress-aws-scaler
![Page 58: code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - by Jan Löffler](https://reader031.vdocuments.us/reader031/viewer/2022030305/587164921a28ab58758b5147/html5/thumbnails/58.jpg)
BACKUP
![Page 59: code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - by Jan Löffler](https://reader031.vdocuments.us/reader031/viewer/2022030305/587164921a28ab58758b5147/html5/thumbnails/59.jpg)
Web Development Key Tools – what web developers need and use
59
26,6% of all websites worldwide
2,7% 2,2%(high traffic sites)
70% of developers use git as primary source management solutionIncreasing usage by web agencies
38% of all online stores worldwide
runs on top of WordPress as plugindeveloped by automattic
used by 30% of IT companiesincreased from 13% to 30% in 12 monthsfurther 35% plan introduction
Sources: w3techs.com, Rightscale, StackOverflow Survey 2015, 2016, Netcraft
311% growth
17.2% usage26.8% growth
17.9% usage14.9% growth
16% of all webservers22% of all active sites
continuously growing, while Apache is shrinking
![Page 60: code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - by Jan Löffler](https://reader031.vdocuments.us/reader031/viewer/2022030305/587164921a28ab58758b5147/html5/thumbnails/60.jpg)
WordPress Management
Free SSL everywhere
http2 50+ extensions
CLI
Automatic Updates
Site Migration Free support
30+ languages nginxServer Security DNS
![Page 61: code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - by Jan Löffler](https://reader031.vdocuments.us/reader031/viewer/2022030305/587164921a28ab58758b5147/html5/thumbnails/61.jpg)
✔
Plesk Onyx: Continuous Delivery Deployment Pipeline (sample)
61
Jenkins runs as Docker container managed by Plesk
Plesk Multi Server Extension installs three environments
Apps managed by Plesk via Docker