Virtualizing Development

957 views
880 views

Published on

Modern developers use virtualized "single use" development environments to reduce time tweaking servers, allowing more time developing. Teams share configurations to eliminate endless "works for me" debug loops, while rebuilding and/or setup is a simple command taking minutes, not hours or days. This intro talk will create a base for attendees to build from and investigate the various technologies like Vagrant, VirtualBox, Puppet, Containers, and Virtual PHP. If your development environment is not virtualized, catch up, it's what all the "cool kids" are doing.

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
957
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
3
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Virtualizing Development

  1. 1. 1 Virtualizing Development By: Adam Culp Twitter: @adamculp https://joind.in/11662
  2. 2. 2 Virtualizing Development ● About me – PHP 5.3 Certified – Consultant at Zend Technologies – Zend Certification Advisory Board – Organizer SoFloPHP (South Florida) – Organized SunshinePHP (Miami) – Long distance (ultra) runner – Judo Black Belt Instructor
  3. 3. 3 Virtualizing Development ● Traditional environments – “Development”, “testing”, “staging” and “production” setup. Server Linux / Windows / MAC Apache / Nginx MySQL PHP X 4
  4. 4. 4 Virtualizing Development ● Shortfalls of development environments – Different “Development”,“testing”, “staging” and “production” setup. Development Staging Testing Production
  5. 5. 5 Virtualizing Development ● Shortfalls of development environments – Each developer has a different one. ● Easily out of sync with standards ● Many versions of (php, mysql, apache, etc.) Dev #1 Apache 2.2.3 PHP 5.5.1 MySQL 5.4.3 Dev #2 Apache 2.2.15 PHP 5.5.4 MySQL 5.4.5 Dev #3 Apache 2.2.24 PHP 5.4.3 MySQL 5.2.5 Dev #4 Apache 2.1.8 PHP 5.3.24 MySQL 5.1.6
  6. 6. 6 Virtualizing Development ● Shortfalls of development environments – Long ramp-up/training for new developers Configure Hardware Install Apache Install PHP Install MySQL Install More, more, more Configure ALL The Things! Get Code Configure, Configure, Configure
  7. 7. 7 Virtualizing Development ● Shortfalls of development environments – Works for me!
  8. 8. 8 Virtualizing Development ● Automated Provisioning – Create scripts to push to servers Script Server Server Server Server Server Server Server Server
  9. 9. 9 Virtualizing Development ● Provisioner – Puppet – manifests, puppetmaster – Chef – recipes, cook books – Ansible – Others...
  10. 10. 10 Virtualizing Development ● Puppet – http://puppetlabs.com – Many learning resources – Large community – http://forge.puppetlabs.com – Free and paid plans
  11. 11. 11 Virtualizing Development ● Chef – http://getchef.com – Nice learning and getting started resources – Free and paid plans
  12. 12. 12 Virtualizing Development ● Ansible – http://ansible.com
  13. 13. 13 Virtualizing Development ● Hardware Bound – Tied to hardware
  14. 14. 14 Virtualizing Development ● Virtual Machines – Virtualization
  15. 15. 15 Virtualizing Development ● Benefits – Managing Data Centers ● Space ● Hardware $$$ ● Energy $$$ – Security and Backup ● Backup entire image, not just certain files ● Quick re-deployment ● Limit access – Manage hardware ● Move VM to different hardware ● Faster Deployment ● More flexible infrastructure
  16. 16. 16 Virtualizing Development ● Multiple servers, one hardware computer Hardware LAMP Server LAMP Server LAMP Server LAMP Server LAMP Server LAMP Server LAMP Server
  17. 17. 17 Virtualizing Development ● Downside – Time consuming – Loading ● OS ● Apps (Apache, MySQL, PHP, etc.) – Distribute – Update, redistribute – Inconvenient – Works on my machine is back! – End up back to local dev environments
  18. 18. 18 Virtualizing Development ● Enter virtualization managers – Many available for PHP developers ● Each has strengths
  19. 19. 19 Virtualizing Development ● Vagrant - http://vagrantup.com – Virtualized development environments made easy ● Command line tool ● Lowers setup time ● Fully control entire environments and versions ● Eliminates “works on my machine” excuse ● Uses: – VirtualBox – VMWare – AWS – Others.... ● Can use Puppet or Chef ● FREE and open source
  20. 20. 20 Virtualizing Development ● Host Based Project Files – Uses shared folders – Application files on host OS – VM is totally disposable – Script out DB generation – Editor on host machine faster than in VM
  21. 21. 21 Virtualizing Development ● PuPHPet - http://puPHPet.com – Web-based tool – Creates Puppet manifests – To be used with Vagrant – Advanced setups – Files downloaded as script runs ● Internet required – Open source
  22. 22. 22 Virtualizing Development ● Rove – http://rove.io – Web-based tool – Creates Chef recipes – To be used with Vagrant – Simple setups
  23. 23. 23 Virtualizing Development ● Docker – http://docker.com – Manages Linux containers ● Packaging ● Hub ● Cloud service ● Automating workflow – Very small, lightweight versus large VM files – Able to be versioned
  24. 24. 24 Virtualizing Development ● VirtPHP – http://virtphp.org – CLI – Multiple PHP environments ● Creates/Manages ● Different PEAR packages ● Different PECL extensions ● Isolated ● Single machine
  25. 25. 25 Virtualizing Development ● Composer – http://getcomposer.org – Dependency manager for PHP – Easily keep same versions
  26. 26. 26 Virtualizing Development ● Packagist – http://packagist.org – Archive of available packages – Can be a git, SVN, or Hg repo
  27. 27. 27 Virtualizing Development ● Now we have – Easy to share ● Create scripts, distribute – Same versions across multiple systems – Consistency – Faster ramp-up – Easier promotion to testing, staging, production – “Works on OUR machine”
  28. 28. 28 Virtualizing Development ● Continuous Delivery – Why not make it totally hands free – Automate scale-up/down
  29. 29. 29 Virtualizing Development ● Available Scripts/Services – http://github.com/zend-patterns – http://www.zend.com/en/services/continuous-delivery
  30. 30. 30 Virtualizing Development ● Be Professional – Embrace new technologies – Owe it to our employers
  31. 31. 31 Vagrant for Virtualized Development ● Resources – http://vagrantup.com – http://puppetlabs.com – http://opscode.com/chef/ – http://virtualbox.org – http://vmware.com – http://puPHPet.com – http://rove.io – http://docker.com – http://virtphp.org – http://getcomposer.org – http://github.com
  32. 32. ● Thank you Adam Culp http://www.geekyboy.com http://github.com/adamculp Twitter @adamculp View details, slides, and rate at https://joind.in/11662

×