Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
WordPress Meetup
Karlsruhe
AutoScaling WordPress
with Docker & AWS
22. September 2016 Jan Löffler, CTO Plesk
0%
5%
10%
15%
20%
25%
30%
2011 2012 2013 2014 2015 2016
WordPress related to all websites worldwide
http://w3techs.com/tec...
# WEBSITES WORLDWIDE
1.058.544.813
http://www.internetlivestats.com/total-number-of-websites/
38% of E-Shops
26,6%
2,7%
2,2%
High Traffic Sites???
NEED
FOR
SPEED
my-wordpress-site.com
my-wordpress-site.com
MYSQL ServerLoad-Balancer
my-wordpress-site.com
MYSQL ServerLoad-Balancer
File Storage
my-wordpress-site.com
MYSQL Server
Load-Balancer
File Storage
CDN
MYSQL Server
Kommt ihr noch
mit?
DEPLOYMENT
0%
5%
10%
15%
20%
25%
30%
2015 2016
Nutzung von Docker
verdoppelt auf 30%
http://www.rightscale.com/blog/cloud-industry-in...
my-wordpress-site
Moderne
Web-Entwicklung
2016
IMMUTABLE
INFRASTRUCTURE
IMMUTABLE STACKS
ELB myapp-v1
app.example.org
EC2
+ Docker
EC2
+ Docker
EC2
+ Docker
100
%
IMMUTABLE STACKS
ELB myapp-v1
EC2
+ Docker
EC2
+ Docker
EC2
+ Docker
ELB myapp-v2
EC2
+ Docker
EC2
+ Docker
app.example.or...
IMMUTABLE STACKS
ELB myapp-v1
EC2
+ Docker
EC2
+ Docker
EC2
+ Docker
ELB myapp-v2
EC2
+ Docker
EC2
+ Docker
app.example.or...
APP INSTANCE
VM (EC2)
Basis Image (AMI)
Docker Container
Application
✓ VPC
✓ Security
Groups
✓ AutoScaling
✓ CloudWatch
✓ ...
AWS
API
Docker
Registry
docker pull
docker push
AMI
DER WUNSCH
DIE REALITÄT
$ accept-vpc-peering-connection$
$ allocate-address$
$ allocate-hosts$
$ assign-private-ip-addresses$
$ associate-address$...
$ accept-vpc-peering-connection$
$ allocate-address$
$ allocate-hosts$
$ assign-private-ip-addresses$
$ associate-address$...
PLESK WORDPRESS AWS SCALER
https://github.com/plesk/wordpress-aws-scaler
AWS
manage-
wordpress.sh
Docker
Registry
docker pull
docker push
AMI
PLESK WORDPRESS AWS SCALER
manage-wordpress.sh create
Too quick? How does it work internally?
Install AWS CLI (https://docs.aws.amazon.com/cli/latest/userguide/installing.html)...
List existing AWS resources
List existing AWS Resources
$ aws ec2 describe-vps
$ aws ec2 describe-security-groups
$ aws ec...
Create new resources
Create new AWS Resources
$ aws ec2 create-vpc
$ aws ec2 create-security-group
[...]
Do this for all A...
Create new Launch Configuration
Generate EC2-User-Data Script to run directly after booting EC2 VM
$ cat >ec2-user-data.sh...
You must love JSON !!! ;-)
{
"Reservations": [
{
"OwnerId": "699328319947",
"ReservationId": "r-041ac13209e0d4eef",
"Group...
Plesk Mission
“We simplify the lives of
web professionals.”
Jan Löffler
CTO Plesk
● @jlsoft2
● jan@plesk.com
● http://www.slideshare.net/jlsoft/
● https://about.me/jan.loeffler
code.talks 2016, Hamburg
Keynote:
“High traffic sites with WordPress,
Docker & AWS”
How to auto-scale WordPress on
AWS and...
BACKUP
We b D e v e l o p m e n t Ke y To o l s – w h a t w e b d e v e l o p e rs n e e d a n d
u s e
47
26,6% of all websites
w...
WordPress Management
Free SSL everywhere
http2 50+ extensions
CLI
Automatic Updates
Site Migration
Free support
30+ langua...
✔
Plesk Onyx: Continuous Delivery Deployment Pipeline (sample)
49
Jenkins runs as
Docker container
managed by Plesk
Plesk ...
AutoScaling WordPress with Docker & AWS - WordPress Meetup Karlsruhe - Plesk
AutoScaling WordPress with Docker & AWS - WordPress Meetup Karlsruhe - Plesk
AutoScaling WordPress with Docker & AWS - WordPress Meetup Karlsruhe - Plesk
AutoScaling WordPress with Docker & AWS - WordPress Meetup Karlsruhe - Plesk
AutoScaling WordPress with Docker & AWS - WordPress Meetup Karlsruhe - Plesk
AutoScaling WordPress with Docker & AWS - WordPress Meetup Karlsruhe - Plesk
AutoScaling WordPress with Docker & AWS - WordPress Meetup Karlsruhe - Plesk
Upcoming SlideShare
Loading in …5
×

AutoScaling WordPress with Docker & AWS - WordPress Meetup Karlsruhe - Plesk

441 views

Published on

26,6% of all websites worldwide are running on WordPress! Now that’s a lot of sites! For those of you who thought WordPress was still a CMS relegated to bloggers, think again.  38% of all online stores worldwide run wooCommerce (WordPress’ eCommerce plugin) on top of WordPress, yowzers!  But how do you scale WordPress for high traffic peaks?
In this talk, Jan Löffler (CTO at Plesk) will demonstrate how to scale WordPress on AWS and Docker using AutoScaling to make your apps and websites fly high!

Published in: Internet
  • DOWNLOAD FULL eBOOK INTO AVAILABLE FORMAT ......................................................................................................................... ......................................................................................................................... 1.DOWNLOAD FULL. PDF eBook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... 1.DOWNLOAD FULL. EPUB eBook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... 1.DOWNLOAD FULL. doc eBook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... 1.DOWNLOAD FULL. PDF eBook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... 1.DOWNLOAD FULL. EPUB eBook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... 1.DOWNLOAD FULL. doc eBook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, CookeBOOK Crime, eeBOOK Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

AutoScaling WordPress with Docker & AWS - WordPress Meetup Karlsruhe - Plesk

  1. 1. WordPress Meetup Karlsruhe AutoScaling WordPress with Docker & AWS 22. September 2016 Jan Löffler, CTO Plesk
  2. 2. 0% 5% 10% 15% 20% 25% 30% 2011 2012 2013 2014 2015 2016 WordPress related to all websites worldwide http://w3techs.com/technologies/history_overview/content_management/all/y
  3. 3. # WEBSITES WORLDWIDE 1.058.544.813 http://www.internetlivestats.com/total-number-of-websites/
  4. 4. 38% of E-Shops
  5. 5. 26,6% 2,7% 2,2%
  6. 6. High Traffic Sites???
  7. 7. NEED FOR SPEED
  8. 8. my-wordpress-site.com
  9. 9. my-wordpress-site.com MYSQL ServerLoad-Balancer
  10. 10. my-wordpress-site.com MYSQL ServerLoad-Balancer File Storage
  11. 11. my-wordpress-site.com MYSQL Server Load-Balancer File Storage CDN MYSQL Server
  12. 12. Kommt ihr noch mit?
  13. 13. DEPLOYMENT
  14. 14. 0% 5% 10% 15% 20% 25% 30% 2015 2016 Nutzung von Docker verdoppelt auf 30% http://www.rightscale.com/blog/cloud-industry-insights/cloud-computing-trends-2016-state-cloud-survey
  15. 15. my-wordpress-site
  16. 16. Moderne Web-Entwicklung 2016
  17. 17. IMMUTABLE INFRASTRUCTURE
  18. 18. IMMUTABLE STACKS ELB myapp-v1 app.example.org EC2 + Docker EC2 + Docker EC2 + Docker 100 %
  19. 19. IMMUTABLE STACKS ELB myapp-v1 EC2 + Docker EC2 + Docker EC2 + Docker ELB myapp-v2 EC2 + Docker EC2 + Docker app.example.org 90 % 10 %
  20. 20. IMMUTABLE STACKS ELB myapp-v1 EC2 + Docker EC2 + Docker EC2 + Docker ELB myapp-v2 EC2 + Docker EC2 + Docker app.example.org 0% 100 %
  21. 21. 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
  22. 22. AWS API Docker Registry docker pull docker push AMI DER WUNSCH
  23. 23. DIE REALITÄT
  24. 24. $ 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- $ describe-reserved- $ describe-reserved- modifications$ $ describe-reserved- $ describe-route-tab $ describe-scheduled $ describe-scheduled $ describe-security- $ describe-security- $ describe-snapshot- $ describe-snapshots $ describe-spot-data $ describe-spot-flee $ describe-spot-flee $ describe-spot-flee $ describe-spot-inst $ describe-spot-pric $ describe-stale-sec $ describe-subnets$ $ describe-tags$ $ describe-volume-at $ describe-volume-st $ describe-volumes$ $ describe-vpc-attri $ describe-vpc-class $ describe-vpc-class $ describe-vpc-endpo $ describe-vpc-endpo $ describe-vpc-peeri $ describe-vpcs$ $ describe-vpn-conne $ describe-vpn-gatew $ detach-classic-lin $ detach-internet-ga $ detach-network-int $ detach-volume$ 210 calls for EC2 only
  25. 25. $ 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- $ describe-reserved- $ describe-reserved- modifications$ $ describe-reserved- $ describe-route-tab $ describe-scheduled $ describe-scheduled $ describe-security- $ describe-security- $ describe-snapshot- $ describe-snapshots $ describe-spot-data $ describe-spot-flee $ describe-spot-flee $ describe-spot-flee $ describe-spot-inst $ describe-spot-pric $ describe-stale-sec $ describe-subnets$ $ describe-tags$ $ describe-volume-at $ describe-volume-st $ describe-volumes$ $ describe-vpc-attri $ describe-vpc-class $ describe-vpc-class $ describe-vpc-endpo $ describe-vpc-endpo $ describe-vpc-peeri $ describe-vpcs$ $ describe-vpn-conne $ describe-vpn-gatew $ detach-classic-lin $ detach-internet-ga $ detach-network-int $ detach-volume$ 210 calls for EC2 only S3 EL B RDS CloudFron t CloudWatc h AutoScalin Route5 3 Events IAM S3a pi SN S
  26. 26. PLESK WORDPRESS AWS SCALER
  27. 27. https://github.com/plesk/wordpress-aws-scaler
  28. 28. AWS manage- wordpress.sh Docker Registry docker pull docker push AMI
  29. 29. PLESK WORDPRESS AWS SCALER
  30. 30. manage-wordpress.sh create
  31. 31. 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 -t janloeffler/wordpress-aws-scaler:0.2 . $ docker push janloeffler/wordpress-aws-scaler:latest
  32. 32. 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
  33. 33. 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
  34. 34. Create new Launch Configuration Generate EC2-User-Data Script to run directly after booting EC2 VM $ cat >ec2-user-data.sh <<EOL #!/bin/bash docker pull janloeffler/wordpress-aws-scaler:latest docker 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:latest EOL 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
  35. 35. 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" }, […]
  36. 36. Plesk Mission “We simplify the lives of web professionals.”
  37. 37. Jan Löffler CTO Plesk ● @jlsoft2 ● jan@plesk.com ● http://www.slideshare.net/jlsoft/ ● https://about.me/jan.loeffler
  38. 38. code.talks 2016, Hamburg Keynote: “High traffic sites with WordPress, Docker & AWS” How to auto-scale WordPress on AWS and make it fly! Stay tuned! Jan Löffler Marko Heijnen
  39. 39. BACKUP
  40. 40. We b D e v e l o p m e n t Ke y To o l s – w h a t w e b d e v e l o p e rs n e e d a n d u s e 47 26,6% of all websites worldwide 2,7% 2,2% (high traffic sites) 70% of developers use git as primary source management solution Increasing usage by web agencies 38% of all online stores worldwide runs on top of WordPress as plugin developed by automattic used by 30% of IT companies increased from 13% to 30% in 12 months further 35% plan introduction Sources: w3techs.com, Rightscale, StackOverflow Survey 2015, 2016, Netcraft 311% growth 17.2% usage 26.8% growth 17.9% usage 14.9% growth 16% of all webservers 22% of all active sites continuously growing, while Apache is shrinking
  41. 41. WordPress Management Free SSL everywhere http2 50+ extensions CLI Automatic Updates Site Migration Free support 30+ languages nginx Server Security DNS
  42. 42. ✔ Plesk Onyx: Continuous Delivery Deployment Pipeline (sample) 49 Jenkins runs as Docker container managed by Plesk Plesk Multi Server Extension installs three environments Apps managed by Plesk via Docker

×