Development nightmares... 
a survival guide... 
jun 
Jun 2014
Geronimo Orozco 
Cloud Automation Engineer 
Free software developer 
@patux
AA ddeevveellooppeerr''ss ssttoorryy 
● Want to know what openstack is... 
● Want to learn openstack... 
● Want to implement openstack... 
● Want to extend openstack... 
● Want to contribute to openstack...
WWhhaatt ddoo II nneeeedd?? 
Where is an environment I 
can use ?
WWhhaatt ddoo II nneeeedd?? 
Can you give me access to 
the environment ?
OOkkaayy!! 
How can I install openstack? 
apt-get install openstack ?
HHaavvee yyoouu wwoorrkkeedd wwiitthh:: 
Multiple projects 
+ 
Dependencies on various kinds of software in various 
degrees of stability 
= 
YYoouurr ddeevveellooppmmeenntt mmaacchhiinnee iiss bbeeccoommiinngg ffuullll ooff ccrraapp
HHaavvee yyoouu wwoorrkkeedd wwiitthh:: 
Multiple projects 
+ 
Dependencies on the same software but with different 
versions 
= 
YYoouurr ddeevveellooppmmeenntt mmaacchhiinnee iiss bbeeccoommiinngg ffuullll ooff ccrraapp...... 
AAggaaiinn!!!!!!
HHaavvee yyoouu wwoorrkkeedd wwiitthh:: 
Existing developer with (partial and no up to date) info on 
how to reproduce a development environment 
+ 
New developer on the team (with a shiny new machine) 
= 
HHaarrdd ttoo rreepprroodduuccee tthhee ssaammee ddeevveellooppmmeenntt eennvviirroonnmmeenntt
HHaavvee yyoouu wwoorrkkeedd wwiitthh:: 
Development environment 
≠ 
Production/CI environment
LLooookkss ffaammiilliiaarr??
LLooookkss ffaammiilliiaarr??
5500 ttiimmeess llaatttteerr........ 
aanndd mmaannyy ddiiffffeerreenntt cchhaannggeess aaccrroossss eennvviirroonnmmeennttss......
IIff tthhaatt iiss nnoott eennoouugghh........
AAnndd......
RReeccaapp 
● Using production environment is not recommended 
● Very often development environment not reflects what are in productions 
● Setting up an environment is pain in the butt 
● Consistent environment is hard to archive across multiple sites, and 
developers 
● Setting up an environment is boring 
● An environment sometimes is unreproducible 
● Setting up an environment is Full of tedious crap 
● Testing on production is a bad practice 
● Setting up an environment time consumer 
● Testing on development environment does not guarantee that works the same 
on production 
● Setting up a environment is very detail oriented 
● An environment sometimes is unreproducible 
● Developers setting up its own environment on his own way.. 
● Setting up consistent environments is a nightmare 
● Products have deadlines to accomplish 
● Developers are tied to a deadline 
● Time is what developers need the most
IIss tthheerree aannyy ppaatttteerrnn??
$ git clone git://path/to/myapp.git 
$ cd myapp 
$ magic command 
$ ssh myenvironment 
. . . hack . . .
$ git clone git://path/to/myapp.git 
$ cd myapp 
$ vagrant up 
$ ssh myenvironment 
. . . hack . . .
VVaaggrraanntt 
An opensource software 
for creating and 
configuring portable 
development 
environments. 
http://www.vagrantup.com/about.html 
●
EEnnvviirroonnmmeenntt
SSccrriipptteedd
MMuullttiippllee eennvviirroonnmmeennttss
Virtualize 
Isolate 
Don't repeat yourself 
Infrastructure as a code 
Profit
Thanks!!!!! 
Twitter: @patux 
http://patux.net 
http://github.com/patux
GGooiinngg ffuurrtthheerr 
● Create your own base boxes 
– http://vagrantup.com/docs/base_boxes.html 
● Share your base boxes 
– http://vagrantbox.es 
● Multi-VM configuration 
– http://vagrantup.com/docs/multivm.html 
● Use it on your CI server 
– Ex: http://travis-ci.org 
– https://wiki.jenkins-ci.org/display/JENKINS/Vagrant+Plugin 
● Extend with plugins 
– http://vagrantup.com/docs/plugins.html

Development nightmares

  • 1.
    Development nightmares... asurvival guide... jun Jun 2014
  • 2.
    Geronimo Orozco CloudAutomation Engineer Free software developer @patux
  • 3.
    AA ddeevveellooppeerr''ss ssttoorryy ● Want to know what openstack is... ● Want to learn openstack... ● Want to implement openstack... ● Want to extend openstack... ● Want to contribute to openstack...
  • 4.
    WWhhaatt ddoo IInneeeedd?? Where is an environment I can use ?
  • 6.
    WWhhaatt ddoo IInneeeedd?? Can you give me access to the environment ?
  • 8.
    OOkkaayy!! How canI install openstack? apt-get install openstack ?
  • 10.
    HHaavvee yyoouu wwoorrkkeeddwwiitthh:: Multiple projects + Dependencies on various kinds of software in various degrees of stability = YYoouurr ddeevveellooppmmeenntt mmaacchhiinnee iiss bbeeccoommiinngg ffuullll ooff ccrraapp
  • 12.
    HHaavvee yyoouu wwoorrkkeeddwwiitthh:: Multiple projects + Dependencies on the same software but with different versions = YYoouurr ddeevveellooppmmeenntt mmaacchhiinnee iiss bbeeccoommiinngg ffuullll ooff ccrraapp...... AAggaaiinn!!!!!!
  • 14.
    HHaavvee yyoouu wwoorrkkeeddwwiitthh:: Existing developer with (partial and no up to date) info on how to reproduce a development environment + New developer on the team (with a shiny new machine) = HHaarrdd ttoo rreepprroodduuccee tthhee ssaammee ddeevveellooppmmeenntt eennvviirroonnmmeenntt
  • 16.
    HHaavvee yyoouu wwoorrkkeeddwwiitthh:: Development environment ≠ Production/CI environment
  • 18.
  • 19.
  • 20.
    5500 ttiimmeess llaatttteerr........ aanndd mmaannyy ddiiffffeerreenntt cchhaannggeess aaccrroossss eennvviirroonnmmeennttss......
  • 22.
    IIff tthhaatt iissnnoott eennoouugghh........
  • 25.
  • 28.
    RReeccaapp ● Usingproduction environment is not recommended ● Very often development environment not reflects what are in productions ● Setting up an environment is pain in the butt ● Consistent environment is hard to archive across multiple sites, and developers ● Setting up an environment is boring ● An environment sometimes is unreproducible ● Setting up an environment is Full of tedious crap ● Testing on production is a bad practice ● Setting up an environment time consumer ● Testing on development environment does not guarantee that works the same on production ● Setting up a environment is very detail oriented ● An environment sometimes is unreproducible ● Developers setting up its own environment on his own way.. ● Setting up consistent environments is a nightmare ● Products have deadlines to accomplish ● Developers are tied to a deadline ● Time is what developers need the most
  • 29.
    IIss tthheerree aannyyppaatttteerrnn??
  • 31.
    $ git clonegit://path/to/myapp.git $ cd myapp $ magic command $ ssh myenvironment . . . hack . . .
  • 32.
    $ git clonegit://path/to/myapp.git $ cd myapp $ vagrant up $ ssh myenvironment . . . hack . . .
  • 33.
    VVaaggrraanntt An opensourcesoftware for creating and configuring portable development environments. http://www.vagrantup.com/about.html ●
  • 35.
  • 36.
  • 37.
  • 39.
    Virtualize Isolate Don'trepeat yourself Infrastructure as a code Profit
  • 41.
    Thanks!!!!! Twitter: @patux http://patux.net http://github.com/patux
  • 42.
    GGooiinngg ffuurrtthheerr ●Create your own base boxes – http://vagrantup.com/docs/base_boxes.html ● Share your base boxes – http://vagrantbox.es ● Multi-VM configuration – http://vagrantup.com/docs/multivm.html ● Use it on your CI server – Ex: http://travis-ci.org – https://wiki.jenkins-ci.org/display/JENKINS/Vagrant+Plugin ● Extend with plugins – http://vagrantup.com/docs/plugins.html