Building the perfect PHP app for the enterprise Episode 5: Deploying PHP apps on the cloud Boaz Ziniman & Dmitry Zbarski
2 Series overview Keeping up with PHP Developing apps faster Resolving problems and high availability Optimizing performance Now: Deploying PHP applications on AWS ←
Dmitry Zbarski Senior cloud integration engineer Rogue Wave Software Boaz Ziniman Senior director, cloud strategy Rogue Wave Software
4 Agenda 1. Introduction to deployment 2. PHP application deployment options 3. Demos 4. Q&A
Introduction to deployment
6 What is deployment? “Software deployment is all of the activities that make a software system available for use.” • OS level configuration (i.e., NFS mounts) • Web server (Apache) configuration • PHP installation and configuration including PHP extensions • Delivery of code and/or data files to server(s) • Create/upgrade database schema and/or data
7 What is a good deployment process? • Simple and fast • Consistent and repeatable • Automation • Continuous • Reduce the human error factor • Perform as many steps as possible
Poll #1 Which of the following cloud providers do you use? - Amazon Web Services - Google Cloud Platform - Microsoft Azure - DigitalOcean - None of the above or do not use a cloud provider
PHP application deployment options
10 Choose what’s right for you • Manual deployment • rsync and other basic copy methods • Git – get code from Git repository • S3 – get code from AWS S3 bucket • AMI snapshot (aka “Frozen pizza” method) • Shared file system- NFS/EFS • AWS Beanstalk • Zend Deployment
11 Manual deployment • Copy files manually to server over network • Best practice – Use Composer to satisfy dependencies • Git and S3 are special cases in which delivery of files is changed • Upon successful deployment, you can create AMI to ease deployment of multiple instances (if needed) • Probably easiest method • Everything is manual – easy control of each step and commandPros • Everything is manual – easy to make mistakes and/or forget something • Server replacement/addition may require manual rebuild from scratch • Auto scaling in most cases is impossible • Complex to setup CI/CD (Git – hooks can be used; S3 – SNS can be used) Cons
12 Shared file system (EFS) deployment • Elastic File System(EFS) - A service on AWS that allows mounting network file system (using NFSv4.1 protocol) on one or more instances • To use it - Create a file system in the AWS Console and then mount it on any instance where you want to use it • All files stored on single file system are shared between all instances that has that file system mounted • Pay per data size stored on file system • Update files on EFS and all instances immediately get new files • Only one copy of files (in cases of multiple instances) • Easy management Pros • Single point of failure • Only accessible by instances in same VPC • Performance - In the case of a large number of instances (solvable by system) • File locking is not supported Cons
13 AWS Beanstalk • A PaaS solution that can deploy PHP applications • Upload your code and AWS Beanstalk will take care of everything else (load balancer, instances, configuration) • All PHP options are configurable • Supports deploying Docker containers too, therefore you can pack your PHP application as a Docker container and deploy it • You do not have to manage instances at all • Easy to setup • Supports Docker Pros • Customizations are harder to implement • Vendor lock-inCons
14 Zend Deployment • Developed by Zend, supports packaging of both applications and libraries • Applications and libraries are packaged in ZPK files • Supports optional scripts that can be run on install/remove of application • Supports Zend Server cluster out-of-box • Has many different hooks that can be customized (pre-install, post-install etc.) • Allows rollback of applications one version backwards • Very customizable • Zend Server AMI allows specifying ZPK to deploy in user data • Supports requirements of PHP extensions and libraries • Supports parameters which can be passed during deployment • Build of ZPK to deploy can be easily automated using scripts • Can be used in CI/CD flow to fully automate deployment Pros • Supported only by Zend Server • Can be complex • You must learn to use it Cons
Poll #2 What do you think is the biggest barrier to cloud deployment for organizations? - Cost - Lack of security or privacy - Loss of control over systems - Lack of knowledge or skills
16 Watch on demand • Watch this webinar on demand • Read the recap blog to see the results of the polls and Q&A session
Questions?
Building the perfect PHP app for the enterprise Episode 5: Deploying PHP apps on the cloud Boaz Ziniman & Dmitry Zbarski

Deploying PHP apps on the cloud

  • 1.
    Building the perfectPHP app for the enterprise Episode 5: Deploying PHP apps on the cloud Boaz Ziniman & Dmitry Zbarski
  • 2.
    2 Series overview Keeping upwith PHP Developing apps faster Resolving problems and high availability Optimizing performance Now: Deploying PHP applications on AWS ←
  • 3.
    Dmitry Zbarski Senior cloudintegration engineer Rogue Wave Software Boaz Ziniman Senior director, cloud strategy Rogue Wave Software
  • 4.
    4 Agenda 1. Introduction todeployment 2. PHP application deployment options 3. Demos 4. Q&A
  • 5.
  • 6.
    6 What is deployment? “Softwaredeployment is all of the activities that make a software system available for use.” • OS level configuration (i.e., NFS mounts) • Web server (Apache) configuration • PHP installation and configuration including PHP extensions • Delivery of code and/or data files to server(s) • Create/upgrade database schema and/or data
  • 7.
    7 What is agood deployment process? • Simple and fast • Consistent and repeatable • Automation • Continuous • Reduce the human error factor • Perform as many steps as possible
  • 8.
    Poll #1 Which ofthe following cloud providers do you use? - Amazon Web Services - Google Cloud Platform - Microsoft Azure - DigitalOcean - None of the above or do not use a cloud provider
  • 9.
  • 10.
    10 Choose what’s rightfor you • Manual deployment • rsync and other basic copy methods • Git – get code from Git repository • S3 – get code from AWS S3 bucket • AMI snapshot (aka “Frozen pizza” method) • Shared file system- NFS/EFS • AWS Beanstalk • Zend Deployment
  • 11.
    11 Manual deployment • Copyfiles manually to server over network • Best practice – Use Composer to satisfy dependencies • Git and S3 are special cases in which delivery of files is changed • Upon successful deployment, you can create AMI to ease deployment of multiple instances (if needed) • Probably easiest method • Everything is manual – easy control of each step and commandPros • Everything is manual – easy to make mistakes and/or forget something • Server replacement/addition may require manual rebuild from scratch • Auto scaling in most cases is impossible • Complex to setup CI/CD (Git – hooks can be used; S3 – SNS can be used) Cons
  • 12.
    12 Shared file system(EFS) deployment • Elastic File System(EFS) - A service on AWS that allows mounting network file system (using NFSv4.1 protocol) on one or more instances • To use it - Create a file system in the AWS Console and then mount it on any instance where you want to use it • All files stored on single file system are shared between all instances that has that file system mounted • Pay per data size stored on file system • Update files on EFS and all instances immediately get new files • Only one copy of files (in cases of multiple instances) • Easy management Pros • Single point of failure • Only accessible by instances in same VPC • Performance - In the case of a large number of instances (solvable by system) • File locking is not supported Cons
  • 13.
    13 AWS Beanstalk • APaaS solution that can deploy PHP applications • Upload your code and AWS Beanstalk will take care of everything else (load balancer, instances, configuration) • All PHP options are configurable • Supports deploying Docker containers too, therefore you can pack your PHP application as a Docker container and deploy it • You do not have to manage instances at all • Easy to setup • Supports Docker Pros • Customizations are harder to implement • Vendor lock-inCons
  • 14.
    14 Zend Deployment • Developedby Zend, supports packaging of both applications and libraries • Applications and libraries are packaged in ZPK files • Supports optional scripts that can be run on install/remove of application • Supports Zend Server cluster out-of-box • Has many different hooks that can be customized (pre-install, post-install etc.) • Allows rollback of applications one version backwards • Very customizable • Zend Server AMI allows specifying ZPK to deploy in user data • Supports requirements of PHP extensions and libraries • Supports parameters which can be passed during deployment • Build of ZPK to deploy can be easily automated using scripts • Can be used in CI/CD flow to fully automate deployment Pros • Supported only by Zend Server • Can be complex • You must learn to use it Cons
  • 15.
    Poll #2 What doyou think is the biggest barrier to cloud deployment for organizations? - Cost - Lack of security or privacy - Loss of control over systems - Lack of knowledge or skills
  • 16.
    16 Watch on demand •Watch this webinar on demand • Read the recap blog to see the results of the polls and Q&A session
  • 17.
  • 18.
    Building the perfectPHP app for the enterprise Episode 5: Deploying PHP apps on the cloud Boaz Ziniman & Dmitry Zbarski