Presentation is loading. Please wait.

Presentation is loading. Please wait.

PaaSing Your Code Around Oct 8 2013 ZendCon 2013 1.

Similar presentations


Presentation on theme: "PaaSing Your Code Around Oct 8 2013 ZendCon 2013 1."— Presentation transcript:

1 PaaSing Your Code Around EMAIL: CHRIS@CTANKERSLEY.COMCHRIS@CTANKERSLEY.COM TWITTER: @DRAGONMANTANK Oct 8 2013 ZendCon 2013 1

2 Who Am I? Chris Tankersley Been Doing PHP for 9+ Years Lots of projects no one uses, and a few that some do: https://github.com/dragonman tank https://github.com/dragonman tank ZendCon 2013 Oct 8 2013 2

3 What is PaaS? Oct 8 2013 ZendCon 2013 3

4 Software as a Service (SaaS) Software Package Platform as a Service Platform as a Service (PaaS) Server LanguageDeployment Scripts Infrastructure as a Service (IaaS) Server InfrastructureStorageNetwork Oct 8 2013 ZendCon 2013 4

5 Why use a PaaS? Offload the work to someone else Possibly (maybe) more cost effective Small shops dont have to hire as many people Scalability, both up and down Oct 8 2013 ZendCon 2013 5

6 PaaS Workflow Git repo Feature Branch Run Paas Deployment Your App Runs! Oct 8 2013 ZendCon 2013 6

7 Basic Knowledge Just about all of them use git Just about all of them work best with a command line Your OS doesnt matter, they all pretty much support everything A server-side scripting language Bash, Ruby, Python Oct 8 2013 ZendCon 2013 7

8 Other Considerations Where will uploaded files live? Does my app scale across multiple servers? How well does my application perform? Can I automate everything? Oct 8 2013 ZendCon 2013 8

9 Oct 8 2013 ZendCon 2013 9

10 Lets set up a site on a PaaS https://github.com/dragonmantank/paasing- your-code-around https://github.com/dragonmantank/paasing- your-code-around Oct 8 2013 ZendCon 2013 10

11 What I built Silex App that displayed user-supplied texts from drunk elephants Silex Symfony Forms Ruckusing Migrations Twig Oct 8 2013 ZendCon 2013 11

12 What did I want to find out? How much code I had to change to get it to work How much of a pain was it to get the deployment process set up How long the deployments took How easy the deployments were How easy things were to manage Oct 8 2013 ZendCon 2013 12

13 What I did Created the basic app in vagrant Signed up for a PaaS Heroku Engineyard Redhat OpenShift Amazon ElasticBeanstalk Made the app work Each set of code is in paas/[service] You can fork the repo, checkout the branch, and set up the config Oct 8 2013 ZendCon 2013 13

14 Heroku Oct 8 2013 ZendCon 2013 14

15 Heroku Heroku is a container-based PaaS Each container (dyno) is a little virtualized environment Supports PHP 5.3.27 and Apache 2.2.25 out of the box Has a command line interface for working with your apps Oct 8 2013 ZendCon 2013 15

16 Heroku – Creating an Application Oct 8 2013 ZendCon 2013 16

17 Heroku – Deploying an App Push your branch to Herokus master branch Oct 8 2013 ZendCon 2013 17

18 Heroku – Getting it to Work Heroku will only detect a PHP app if there is an index.php file in the root Docroot is automatically set to the root of your repo PHP is supported via a partnership with Facebook, not that youll find that on their site Had to add a custom Procfile, bootstrap files, and Buildpack Composer is slooooooow. Sites took 2-15 minutes to bootstrap Deploy hooks are done via the Procfile Oct 8 2013 ZendCon 2013 18

19 Heroku – General Notes Extension support is hit or miss. You might need to compile your own Since buildpacks actually set up an entire environment, really study what buildpack you use Might want to commit vendor/ to your deploy branch to speed things up While PHP 5.3.27 is the base install, you can actually install any PHP via a buildpack Heroku uses ephemeral storage, so make sure all your files are saved to something like S3 Oct 8 2013 ZendCon 2013 19

20 Engineyard Oct 8 2013 ZendCon 2013 20

21 Engineyard Engineyard is an AWS-based PaaS You set up Environments, which are groups of EC2 instances Supports PHP 5.4.17 and MySQL 5.5 out of the box Has a command line interface for working with your apps Works with your VCS host to pull down and deploy code Oct 8 2013 ZendCon 2013 21

22 Engineyard – Creating an Application Create a new application Select the Language Give it a Repo to pull from Give it a Name Tell it the docroot Add your deploy key to your git server Set up an Environment Give it a name Give it a type (Production, Development, etc) Select a DB Set up SSH keys Oct 8 2013 ZendCon 2013 22

23 Engineyard – Deploying an App Give it a branch name and click Deploy Oct 8 2013 ZendCon 2013 23

24 Engineyard – Getting it to Work Had to add a deploy/ script to get the database migrations to work Oct 8 2013 ZendCon 2013 24

25 Engineyard – General Notes You need to set up SSH keys to get into the boxes DB credentials are in /data/[app_name]/shared/config/databases.yml They are also exposed through the $_SERVER array When you stop an instance without a public IP, the IPs will change Since its booting an EC2 instance, its slow. Takes 10-15 minutes to provision the environment (Deploys are much quicker) Natively supports Composer! Oct 8 2013 ZendCon 2013 25

26 Redhat OpenShift Oct 8 2013 ZendCon 2013 26

27 OpenShift OpenShift is a cartridge (container) PaaS Supports PHP 5.3.17 and MySQL 5.1 when using the Zend Server cartridge Has a command line interface for working with your apps The largest offering of platforms out of the test PaaSs Oct 8 2013 ZendCon 2013 27

28 OpenShift – Creating an Application Oct 8 2013 ZendCon 2013 28

29 OpenShift – Deploying an App Push your branch to OpenShifts master branch Oct 8 2013 ZendCon 2013 29

30 OpenShift– Getting it to Work Had to fetch and merge their master branch Docroot is php/, so our deploy script changes that php-intl extension had too old of an ICU version, so had to downgrade it through Composer Could have completely redone PHP, like in Heroku Composer is not natively supported, so do it via the deploy script Deploy script is bash, so fairly easy to work with Oct 8 2013 ZendCon 2013 30

31 OpenShift – General Notes You need to set up SSH keys to get into the boxes Cartridge system is interesting and works well Does offer persistent storage, in the $OPENSHIFT_DATA_DIR Oct 8 2013 ZendCon 2013 31

32 AWS ElasticBeanstalk Oct 8 2013 ZendCon 2013 32

33 ElasticBeanStalk Its a Rackspace-based PaaS! Oct 8 2013 ZendCon 2013 33

34 ElasticBeanStalk Its a Rackspace-based PaaS! Its an AWS-based PaaS Supports PHP 5.4 out of the box, and Amazon RDS for DB Has a nice command line interface Oct 8 2013 ZendCon 2013 34

35 ElasticBeanstalk – Creating an Application Log in AWS and go to ElasticBeanstalk Create an Application through their eb tool Go to your repo Run eb init and answer the questions Oct 8 2013 ZendCon 2013 35

36 ElasticBeanstalk – Deploying an App Run eb branch to assign your branch to an environment Run git aws.push to deploy Oct 8 2013 ZendCon 2013 36

37 ElasticBeanstalk – Getting it to Work Had to run eb init and run through their setup, even though the environment existed Had to run eb branch to assign the current branch to an environment so that git aws.push would work Oct 8 2013 ZendCon 2013 37

38 ElasticBeanstalk – General Notes Its AWS, so provisioning the servers can take 10-15 minutes Supports Composer out of the box, which is nice Deploy hooks are done via their container_commands Oct 8 2013 ZendCon 2013 38

39 So What did I Learn? Oct 8 2013 ZendCon 2013 39

40 Deploy Scripts Are Your Friend While youve got shell access, you still dont want to do stuff manually Knowing Bash scripting was incredibly helpful Oct 8 2013 ZendCon 2013 40

41 Understand Your Type of PaaS Usually either container-based OpenShift Heroku Or Server-based ElasticBeanstalk Engineyard These work internally differently, so understand how each works makes your life easier Oct 8 2013 ZendCon 2013 41

42 Your Code Should Just Work A good PaaS wont need you to modify your code My code modifications were changing DB- backends or making assumptions I shouldnt have Most of the differences in the sample code are deploy scripts and the config file Thats ignoring storage issues, which you might need to work on Oct 8 2013 ZendCon 2013 42

43 Questions? Oct 8 2013 ZendCon 2013 43

44 Thank You! chris@ctankersley.com @dragonmantank https://joind.in/9070 Oct 8 2013 ZendCon 2013 44


Download ppt "PaaSing Your Code Around Oct 8 2013 ZendCon 2013 1."

Similar presentations


Ads by Google