SlideShare a Scribd company logo
LONG LIFE TO VAGRANT…
VAGRANT IS DEAD
federico.panini@fazland.com - CTO
Development boxes and modern software
lifecycle development techniques.
How our development
team grew up and how we evolved
our development stack.
federico.panini@fazland.com - CTO
Federico Panini
CTO @Fazland.com
Team Manager of 8 people
PHP Developer with lots of
years of experience ….
Ops @Fazland.com
federico.panini@fazland.com - CTO
Maya
CHO @Fazland.com
Chief Happiness Officier
Spreading love all over the
company :)
federico.panini@fazland.com - CTO
Fazland is a marketplace where customers
find the right professional for all their daily
projects and smart professionals find new
clients, while promoting quality, merit and
transparency
How many of you use Vagrant ?
federico.panini@fazland.com - CTO
How many of you don’t use Vagrant ?
federico.panini@fazland.com - CTO
federico.panini@fazland.com - CTO
Martin Fawler
“…This kind of delivery thinking has long been a forgotten corner
of software development, falling into a hole between developers
and operations teams. So it’s no surprise that the techniques in this
book rest upon bringing these teams together—a harbinger of the
nascent but growing DevOps movement.”
Foreword by Martin Fawler in 

Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation. 

by David Farley; Jez Humble
federico.panini@fazland.com - CTO
Continuous Integration:
Improving Software Quality and
Reducing Risk.
by Andrew Glover , Steve
Matyas , Paul M. Duvall
Publisher: Addison-Wesley
Professional Published: June
2007
federico.panini@fazland.com - CTO
Continuous Delivery: Reliable
Software Releases through
Build, Test, and Deployment
Automation.



by David Farley; Jez Humble



Published by Addison-Wesley
Professional, 2010
federico.panini@fazland.com - CTO
What is this talk about
Development Workstations
federico.panini@fazland.com - CTO
Federico Panini
federico.panini@fazland.com - CTO
Development Workstations
https://raygun.com/blog/developer-workstations/
https://nickcraver.com/desktop-build/
(StackOverflow)
federico.panini@fazland.com - CTO
Development TEAMS
Operation TEAMS
federico.panini@fazland.com - CTO
REALLY ?!?!?
Software Development Lifecycle
federico.panini@fazland.com - CTO
Software Development Lifecycle
federico.panini@fazland.com - CTO
Our Experience with Vagrant
Ranting against Vagrant
federico.panini@fazland.com - CTO
What is not this talk about
Vagrant configuration
federico.panini@fazland.com - CTO
What is not this talk about
Vagrant provisioning
federico.panini@fazland.com - CTO
What is not this talk about
Docker, LXC, Ansible
federico.panini@fazland.com - CTO
What is not this talk about
let’s Begin!
federico.panini@fazland.com - CTO
federico.panini@fazland.com - CTO
Virtual Machines
federico.panini@fazland.com - CTO
Virtual Machines
Type 1 hypervisor: hypervisors run directly on the system
hardware. A “bare metal” embedded hypervisor
Type 2 hypervisor: hypervisors run on a host operating system
that provides virtualisation services, such as I/O device support
and memory management.
Vagrant is responsible for managing and build efficiently Virtual
Machines from the CLI. This is has been for years the most used tools
for DEVELOPERS to create consistent development environments.
federico.panini@fazland.com - CTO
What is Vagrant ?
Dependencies and Configuration Isolation
federico.panini@fazland.com - CTO
What is Vagrant ? (DEVS PofV)
All the dependencies and all the configurations files are
isolated from the host OS.
Single Disposable Environment
federico.panini@fazland.com - CTO
VM’s are managed in a single place by a single scripting file
What is Vagrant ? (DEVS PofV)
Consistent Environment
federico.panini@fazland.com - CTO
The guest environment could be recreated with ease by a bunch of
scripting files
What is Vagrant ? (DEVS PofV)
Testing Management Infrastructure
Scripts of your Consistent Workflows
federico.panini@fazland.com - CTO
What is Vagrant ? (OPS PofV)
You could test your infrastructure script with a solid, efficient
environment, you can tests your chef or puppet scripts. You can also
tests the same stuff on the cloud, AWS or other providers, which have
the same workflow.
VAGRANT
federico.panini@fazland.com - CTO
Recap #1
federico.panini@fazland.com - CTO
Recap #1
Vm’s and Vagrant
federico.panini@fazland.com - CTO
FAZLAND … the story so far
Fazland was born 6 years ago.
I joined Fazland 5 years ago.
F
A
Z
L
A
N
D
2
0
1
3
federico.panini@fazland.com - CTO
No source control repo
source files managed in a folder backed up with ZIP files
F
A
Z
L
A
N
D
2
0
1
3
FAZLAND … the story so far
federico.panini@fazland.com - CTO
No development environment
the very first source files were from another developer
F
A
Z
L
A
N
D
2
0
1
3
FAZLAND … the story so far
federico.panini@fazland.com - CTO
1 developer, 1 CTO, 1 ops, 1 ….
just me!
F
A
Z
L
A
N
D
2
0
1
3
no need to change this stack….
FAZLAND … the story so far
wrong
federico.panini@fazland.com - CTO
A little bit of history
federico.panini@fazland.com - CTO
how to manage source files ?
how to manage development environment ?
what about server configuration ?
what about application library dependencies ?
how can I remember all the configurations lost ?
what about if my development MAC will crash ?
what about the time and cost of restoring all the environment ?
F
A
Z
L
A
N
D
2
0
1
3
FAZLAND … the story so far
what about if my development MAC will
crash ?
federico.panini@fazland.com - CTO
FAZLAND … the story so far
F
A
Z
L
A
N
D
2
0
1
3
federico.panini@fazland.com - CTO
immediately I implemented git as source control and a
virtual machine based on VirtualBox
F
A
Z
L
A
N
D
2
0
1
3
FAZLAND … the story so far
federico.panini@fazland.com - CTO
I started managing source code consistently.
I started managing development environment consistently and
isolated…. A black box with all the “secrets” about configuration
& co. hidden to the developer. A solid env with clear
dependencies and configuration.
F
A
Z
L
A
N
D
2
0
1
3
FAZLAND … the story so far
federico.panini@fazland.com - CTO
FAZLAND … the story so far
F
A
Z
L
A
N
D
2
0
1
3
federico.panini@fazland.com - CTO
FAZLAND … the story so far
F
A
Z
L
A
N
D
2
0
1
3
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
# All Vagrant configuration is done here. The most common configuration
# options are documented and commented below. For a complete reference,
# please see the online documentation at vagrantup.com.
config.vm.box = “ubuntu/precise64"
config.vm.box_url = "http://files.vagrantup.com/precise64.box"
config.vm.network :forwarded_port, guest: 80, host: 8383
config.vm.network :forwarded_port, guest: 3306, host: 3306
config.vm.network :forwarded_port, guest: 27017, host: 27017
config.vm.network :private_network, ip: "192.168.0.10"
config.vm.provider :virtualbox do |vb|
vb.customize ["modifyvm", :id, "--memory", "1024"]
end
config.vm.provision :puppet do |puppet|
puppet.manifests_path = "puppet/manifests"
end
end
application in 2013 — Monolith development stack and application
federico.panini@fazland.com - CTO
FAZLAND … the story so far
F
A
Z
L
A
N
D
2
0
1
3
federico.panini@fazland.com - CTO
FAZLAND … the story so far
F
A
Z
L
A
N
D
2
0
1
5
# -*- mode: ruby -*-
# vi: set ft=ruby :
# All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
Vagrant.configure(2) do |config|
config.vm.box = "ubuntu/trusty64"
config.ssh.forward_agent = true
config.vm.network "private_network", ip: "192.168.33.10"
config.vm.base_mac="0800271AB2AC"
config.vm.provider "virtualbox" do |vb|
# vb.gui = true
vb.customize ["modifyvm", :id, "--memory", “8192"]
vb.customize ["modifyvm", :id, "--cpus", "4"]
end
config.vm.provision :ansible do |ansible|
ansible.playbook = "provision/mainVagrant.yml"
ansible.verbose = "vvvv"
end
end
application in 2015 — Monolith + first micro services
federico.panini@fazland.com - CTO
FAZLAND … the story so far
F
A
Z
L
A
N
D
2
0
1
5
federico.panini@fazland.com - CTO
FAZLAND … the story so far
F
A
Z
L
A
N
D
2
0
1
6
# -*- mode: ruby -*-
# vi: set ft=ruby :
# All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
Vagrant.configure(2) do |config|
config.vm.box = “ubuntu/xenial64”
config.ssh.forward_agent = true
config.vm.network "private_network", ip: "192.168.33.50"
config.vm.base_mac="0800271AB2AC"
config.vm.synced_folder "./", "/vagrant", :nfs => true
config.vm.provider "virtualbox" do |vb|
# vb.gui = true
vb.customize ["modifyvm", :id, "--memory", "4096"]
vb.customize ["modifyvm", :id, "--cpus", "4"]
end
config.vm.provision :ansible do |ansible|
ansible.playbook = "provision/mainVagrant.yml"
ansible.verbose = "vvvv"
end
end
application in 2016 —- monolith + microservices + DOCKER AS R&D project
federico.panini@fazland.com - CTO
FAZLAND … the story so far
F
A
Z
L
A
N
D
2
0
1
6
federico.panini@fazland.com - CTO
FAZLAND … the story so far
F
A
Z
L
A
N
D
2
0
1
6
federico.panini@fazland.com - CTO
NFS problems during 2016
F
A
Z
L
A
N
D
2
0
1
6
federico.panini@fazland.com - CTO
FAZLAND … the story so far
F
A
Z
L
A
N
D
N
O
W
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure(2) do |config|
config.vm.box = “ubuntu/xenial64"
config.ssh.forward_agent = true
config.ssh.forward_x11 = true
config.vm.network "private_network", ip: "192.168.33.10"
config.vm.base_mac="0800271AB2AC"
config.vm.synced_folder "./", "/vagrant", :nfs => true
config.vm.provider "virtualbox" do |vb|
vb.customize ["modifyvm", :id, "--memory", "2048"]
vb.customize ["modifyvm", :id, "--cpus", "2"]
end
config.vm.provision :ansible do |ansible|
ansible.playbook = "provision/mainVagrant.yml"
ansible.verbose = "vvvv"
end
config.vm.provision :shell, :inline => "sudo rm /etc/localtime && sudo ln -s /
usr/share/zoneinfo/Europe/Rome /etc/localtime", run: "always"
config.vm.provision "shell", run: "always" do |s|
s.inline = '
sudo mount -t ramfs none /opt/sycache -o "mode=0777" ;
sudo service nginx restart
'
end
end
application in 2018 - monolith + microservices
federico.panini@fazland.com - CTO
F
A
Z
L
A
N
D
N
O
W
https://github.com/hashicorp/vagrant/issues/8788
federico.panini@fazland.com - CTO
NFS problems during 2017
F
A
Z
L
A
N
D
N
O
W
https://github.com/hashicorp/vagrant/issues/8957
federico.panini@fazland.com - CTO
NFS problems during 2017
F
A
Z
L
A
N
D
N
O
W
https://blog.docksal.io/do-not-update-to-macos-high-sierra-if-you-use-docksal-or-vagrant-3ea461805169
federico.panini@fazland.com - CTO
NFS problems during 2017
F
A
Z
L
A
N
D
N
O
W
federico.panini@fazland.com - CTO
FAZLAND … the story so far quick recap
federico.panini@fazland.com - CTO
VAGRANT AND DOCKER
F
A
Z
L
A
N
D
N
O
W
Vagrant Docker
Virtualization Virtual machine Linux container
Resource isolation Strong Weak (shared kernel)
Startup time Minutes Seconds
Image build time 10+ minutes mins
Size 1GB+ 100MB+
Sharing Vagrant Cloud Docker Hub
• run on top of VM (hypervisor type 2)
• vagrant manage VM’s
• has complete ISOLATION, guest VM
• kernel separated from HOST VM
• it needs some GB of space
• turn on env in minutes
• Linux, Windows, OSX
federico.panini@fazland.com - CTO
VAGRANT AND DOCKER
F
A
Z
L
A
N
D
N
O
W
• uses containers, similar to LXC
• Docker manage container
• less isolation, process isolation
• shared kernel model
• lightweight environment
• turn on env in minutes
• Linux, OSX (slow),
federico.panini@fazland.com - CTO
Recap #2
Vagrant - FazlandVm’s and Vagrant
federico.panini@fazland.com - CTO
Deployment Pipeline
What is a deployment Pipeline ?
federico.panini@fazland.com - CTO
Deployment Pipeline
ANY IDEAS ?
federico.panini@fazland.com - CTO
Deployment Pipeline
“It is the process for getting software
from version control
into the hands of your users.”
Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation. 

by David Farley; Jez Humble
federico.panini@fazland.com - CTO
Deployment Pipeline
federico.panini@fazland.com - CTO
Deployment Pipeline
federico.panini@fazland.com - CTO
Recap #3
Deployment Pipeline
Vm’s and Vagrant Vagrant - Fazland
What we have to do ?
federico.panini@fazland.com - CTO
The end :)
federico.panini@fazland.com - CTO
federico.panini@fazland.com - CTO
THANK YOU !
• Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment
Automation. by David Farley; Jez Humble

Published by Addison-Wesley Professional, 2010
• Continuous Integration: Improving Software Quality and Reducing Risk. by Andrew Glover
, Steve Matyas , Paul M. Duvall Publisher: Addison-Wesley Professional Published: June
2007
• https://www.vagrantup.com/intro/index.html
• https://en.wikipedia.org/wiki/Virtual_machine
• https://github.com/hashicorp/vagrant/issues/8788
• https://groups.google.com/forum/#!topic/vagrant-up/UgINc-ppptU
• http://mitchellh.com/comparing-filesystem-performance-in-virtual-machines
• https://hackernoon.com/how-to-create-consistent-development-environments-that-just-
work-55be5417341b
• https://martinfowler.com/bliki/MicroservicePrerequisites.html
• https://martinfowler.com/bliki/MonolithFirst.html
federico.panini@fazland.com - CTO
References
federico.panini@fazland.com - CTO
FAZLAND current Deployment Pipeline
Legacy NG + Api
2 different stacks living together
federico.panini@fazland.com - CTO
FAZLAND current Deployment Pipeline
Legacy NG + Api
2 different stacks living together
both environments uses micro services for sending email,
manage notifications to browser or mobile app… etc
federico.panini@fazland.com - CTO
FAZLAND current Deployment Pipeline
1. developers works on features tickets
2. developers tests their tickets
3. developers merge the feature tickets on develop branch.
4. Before merge a git pre-commit hook will be invoked and re-
executes all tests.
D
E
V
E
L
O
P
M
E
N
T
federico.panini@fazland.com - CTO
FAZLAND current Deployment Pipeline
If tests fails the branch will not be merged.
D
E
V
E
L
O
P
M
E
N
T
if test succeed the feature branch will be merged on develop.
federico.panini@fazland.com - CTO
FAZLAND current Deployment Pipeline
1. when features branches are merged on develop a web hook is invoked
and a stage environment on AWS will fetch the updates and re-create the
environment updated with the latests stuff.
2. during deployment on stage tests (unit, functional and integrations) are
executed
3. if the process succeed a new fresh Stage environment is ready to be
tested by our Product Team
4. When the Product team Validate the tickets a new release will be created,
the master branch will be updated with new stuff and a new tag is created.
S
T
A
G
E
federico.panini@fazland.com - CTO
FAZLAND current Deployment Pipeline
1. every time a new Tag is pushed on remote, a web hook against AWS is
called. And through AWS CodePipeline we start to deploy on production the
new features.
2. the same thing happen with our legacy environment with the difference that
the deploy is done with Capistrano, on pure EC2 instances.if the process
succeed a new fresh Stage environment is ready to be tested by our Product
Team
3. AWS CodePipeline will fetch the new release, make the build (in fact re-
execute tests) and if they succeed update our AWS ECS, draining old images
and creating new ones.
P
R
O
D
U
C
T
I
O
N

More Related Content

What's hot

Continuous Development and Deployment: Workflows and Patterns
Continuous Development and Deployment: Workflows and PatternsContinuous Development and Deployment: Workflows and Patterns
Continuous Development and Deployment: Workflows and Patterns
AOE
 
jsDay - Javascript as a programming language
jsDay - Javascript as a programming languagejsDay - Javascript as a programming language
jsDay - Javascript as a programming language
Marco Cedaro
 
How to Build a Pure Evil Magento Module
How to Build a Pure Evil Magento ModuleHow to Build a Pure Evil Magento Module
How to Build a Pure Evil Magento Module
AOE
 
Containerize vs Virtualize? NGDC 2009
Containerize vs Virtualize? NGDC 2009Containerize vs Virtualize? NGDC 2009
Containerize vs Virtualize? NGDC 2009
Andy d
 
Web (dis)assembly
Web (dis)assemblyWeb (dis)assembly
Web (dis)assembly
Shakacon
 
Filip Rakowski "Web Performance in modern JavaScript world"
Filip Rakowski "Web Performance in modern JavaScript world"Filip Rakowski "Web Performance in modern JavaScript world"
Filip Rakowski "Web Performance in modern JavaScript world"
Fwdays
 
徒手打造自己的粉專客服機器人
徒手打造自己的粉專客服機器人 徒手打造自己的粉專客服機器人
徒手打造自己的粉專客服機器人
Sasaya Hu
 
Magento Testing on all fronts
Magento Testing on all frontsMagento Testing on all fronts
Magento Testing on all fronts
AOE
 
Svelte the future of frontend development
Svelte   the future of frontend developmentSvelte   the future of frontend development
Svelte the future of frontend development
twilson63
 
20 Wireframing Tools
20 Wireframing Tools20 Wireframing Tools
20 Wireframing Tools
donvito123
 
symfony: An Open-Source Framework for Professionals (PHP Day 2008)
symfony: An Open-Source Framework for Professionals (PHP Day 2008)symfony: An Open-Source Framework for Professionals (PHP Day 2008)
symfony: An Open-Source Framework for Professionals (PHP Day 2008)
Fabien Potencier
 
Frontend Performance: Beginner to Expert to Crazy Person
Frontend Performance: Beginner to Expert to Crazy PersonFrontend Performance: Beginner to Expert to Crazy Person
Frontend Performance: Beginner to Expert to Crazy Person
Philip Tellis
 

What's hot (12)

Continuous Development and Deployment: Workflows and Patterns
Continuous Development and Deployment: Workflows and PatternsContinuous Development and Deployment: Workflows and Patterns
Continuous Development and Deployment: Workflows and Patterns
 
jsDay - Javascript as a programming language
jsDay - Javascript as a programming languagejsDay - Javascript as a programming language
jsDay - Javascript as a programming language
 
How to Build a Pure Evil Magento Module
How to Build a Pure Evil Magento ModuleHow to Build a Pure Evil Magento Module
How to Build a Pure Evil Magento Module
 
Containerize vs Virtualize? NGDC 2009
Containerize vs Virtualize? NGDC 2009Containerize vs Virtualize? NGDC 2009
Containerize vs Virtualize? NGDC 2009
 
Web (dis)assembly
Web (dis)assemblyWeb (dis)assembly
Web (dis)assembly
 
Filip Rakowski "Web Performance in modern JavaScript world"
Filip Rakowski "Web Performance in modern JavaScript world"Filip Rakowski "Web Performance in modern JavaScript world"
Filip Rakowski "Web Performance in modern JavaScript world"
 
徒手打造自己的粉專客服機器人
徒手打造自己的粉專客服機器人 徒手打造自己的粉專客服機器人
徒手打造自己的粉專客服機器人
 
Magento Testing on all fronts
Magento Testing on all frontsMagento Testing on all fronts
Magento Testing on all fronts
 
Svelte the future of frontend development
Svelte   the future of frontend developmentSvelte   the future of frontend development
Svelte the future of frontend development
 
20 Wireframing Tools
20 Wireframing Tools20 Wireframing Tools
20 Wireframing Tools
 
symfony: An Open-Source Framework for Professionals (PHP Day 2008)
symfony: An Open-Source Framework for Professionals (PHP Day 2008)symfony: An Open-Source Framework for Professionals (PHP Day 2008)
symfony: An Open-Source Framework for Professionals (PHP Day 2008)
 
Frontend Performance: Beginner to Expert to Crazy Person
Frontend Performance: Beginner to Expert to Crazy PersonFrontend Performance: Beginner to Expert to Crazy Person
Frontend Performance: Beginner to Expert to Crazy Person
 

Similar to Long life to vagrant… Vagrant is dead

OpenStack Murano introduction
OpenStack Murano introductionOpenStack Murano introduction
OpenStack Murano introduction
Victor Zhang
 
Why we choose Symfony2
Why we choose Symfony2Why we choose Symfony2
Why we choose Symfony2
Merixstudio
 
Virtualization and Cloud Computing with Elastic Server On Demand
Virtualization and Cloud Computing with Elastic Server On DemandVirtualization and Cloud Computing with Elastic Server On Demand
Virtualization and Cloud Computing with Elastic Server On Demand
Yan Pritzker
 
Rock-solid Magento Deployments (and Development)
Rock-solid Magento Deployments (and Development)Rock-solid Magento Deployments (and Development)
Rock-solid Magento Deployments (and Development)
AOE
 
Building frameworks: from concept to completion
Building frameworks: from concept to completionBuilding frameworks: from concept to completion
Building frameworks: from concept to completion
Ruben Goncalves
 
Dart on Arm - Flutter Bangalore June 2021
Dart on Arm - Flutter Bangalore June 2021Dart on Arm - Flutter Bangalore June 2021
Dart on Arm - Flutter Bangalore June 2021
Chris Swan
 
Chicago Docker Meetup Presentation - Mediafly
Chicago Docker Meetup Presentation - MediaflyChicago Docker Meetup Presentation - Mediafly
Chicago Docker Meetup Presentation - Mediafly
Mediafly
 
Enjoying the full stack - Frontend 2010
Enjoying the full stack - Frontend 2010Enjoying the full stack - Frontend 2010
Enjoying the full stack - Frontend 2010
Christian Heilmann
 
Cfgmgmt Challenges aren't technical anymore
Cfgmgmt Challenges aren't technical anymoreCfgmgmt Challenges aren't technical anymore
Cfgmgmt Challenges aren't technical anymore
Julien Pivotto
 
Install MariaDB on IBM i - Tips, troubleshooting, and more
Install MariaDB on IBM i - Tips, troubleshooting, and moreInstall MariaDB on IBM i - Tips, troubleshooting, and more
Install MariaDB on IBM i - Tips, troubleshooting, and more
Rod Flohr
 
Von JavaEE auf Microservice in 6 Monaten - The Good, the Bad, and the wtfs...
Von JavaEE auf Microservice in 6 Monaten - The Good, the Bad, and the wtfs...Von JavaEE auf Microservice in 6 Monaten - The Good, the Bad, and the wtfs...
Von JavaEE auf Microservice in 6 Monaten - The Good, the Bad, and the wtfs...
André Goliath
 
JsDay - It's not you, It's me (or how to avoid being coupled with a Javascrip...
JsDay - It's not you, It's me (or how to avoid being coupled with a Javascrip...JsDay - It's not you, It's me (or how to avoid being coupled with a Javascrip...
JsDay - It's not you, It's me (or how to avoid being coupled with a Javascrip...
Marco Cedaro
 
Scale your Magento app with Elastic Beanstalk
Scale your Magento app with Elastic BeanstalkScale your Magento app with Elastic Beanstalk
Scale your Magento app with Elastic Beanstalk
Corley S.r.l.
 
X by orange; una telco en la nube
X by orange;   una telco en la nubeX by orange;   una telco en la nube
X by orange; una telco en la nube
Juan Vicente Herrera Ruiz de Alejo
 
Vagrant - Team Development made easy
Vagrant - Team Development made easyVagrant - Team Development made easy
Vagrant - Team Development made easy
Marco Silva
 
Spring Boot & Spring Cloud on PAS- Nate Schutta (1/2)
Spring Boot & Spring Cloud on PAS- Nate Schutta (1/2)Spring Boot & Spring Cloud on PAS- Nate Schutta (1/2)
Spring Boot & Spring Cloud on PAS- Nate Schutta (1/2)
VMware Tanzu
 
Trying and evaluating the new features of GlusterFS 3.5
Trying and evaluating the new features of GlusterFS 3.5Trying and evaluating the new features of GlusterFS 3.5
Trying and evaluating the new features of GlusterFS 3.5
Keisuke Takahashi
 
(ARC402) Deployment Automation: From Developers' Keyboards to End Users' Scre...
(ARC402) Deployment Automation: From Developers' Keyboards to End Users' Scre...(ARC402) Deployment Automation: From Developers' Keyboards to End Users' Scre...
(ARC402) Deployment Automation: From Developers' Keyboards to End Users' Scre...
Amazon Web Services
 
Introduction Into Docker Ecosystem
Introduction Into Docker EcosystemIntroduction Into Docker Ecosystem
Introduction Into Docker Ecosystem
Alexander Pastukhov, OCPJP, OCPJWSD
 
Magento 2: New and Innovative? - php[world] 2015
Magento 2: New and Innovative? - php[world] 2015Magento 2: New and Innovative? - php[world] 2015
Magento 2: New and Innovative? - php[world] 2015
David Alger
 

Similar to Long life to vagrant… Vagrant is dead (20)

OpenStack Murano introduction
OpenStack Murano introductionOpenStack Murano introduction
OpenStack Murano introduction
 
Why we choose Symfony2
Why we choose Symfony2Why we choose Symfony2
Why we choose Symfony2
 
Virtualization and Cloud Computing with Elastic Server On Demand
Virtualization and Cloud Computing with Elastic Server On DemandVirtualization and Cloud Computing with Elastic Server On Demand
Virtualization and Cloud Computing with Elastic Server On Demand
 
Rock-solid Magento Deployments (and Development)
Rock-solid Magento Deployments (and Development)Rock-solid Magento Deployments (and Development)
Rock-solid Magento Deployments (and Development)
 
Building frameworks: from concept to completion
Building frameworks: from concept to completionBuilding frameworks: from concept to completion
Building frameworks: from concept to completion
 
Dart on Arm - Flutter Bangalore June 2021
Dart on Arm - Flutter Bangalore June 2021Dart on Arm - Flutter Bangalore June 2021
Dart on Arm - Flutter Bangalore June 2021
 
Chicago Docker Meetup Presentation - Mediafly
Chicago Docker Meetup Presentation - MediaflyChicago Docker Meetup Presentation - Mediafly
Chicago Docker Meetup Presentation - Mediafly
 
Enjoying the full stack - Frontend 2010
Enjoying the full stack - Frontend 2010Enjoying the full stack - Frontend 2010
Enjoying the full stack - Frontend 2010
 
Cfgmgmt Challenges aren't technical anymore
Cfgmgmt Challenges aren't technical anymoreCfgmgmt Challenges aren't technical anymore
Cfgmgmt Challenges aren't technical anymore
 
Install MariaDB on IBM i - Tips, troubleshooting, and more
Install MariaDB on IBM i - Tips, troubleshooting, and moreInstall MariaDB on IBM i - Tips, troubleshooting, and more
Install MariaDB on IBM i - Tips, troubleshooting, and more
 
Von JavaEE auf Microservice in 6 Monaten - The Good, the Bad, and the wtfs...
Von JavaEE auf Microservice in 6 Monaten - The Good, the Bad, and the wtfs...Von JavaEE auf Microservice in 6 Monaten - The Good, the Bad, and the wtfs...
Von JavaEE auf Microservice in 6 Monaten - The Good, the Bad, and the wtfs...
 
JsDay - It's not you, It's me (or how to avoid being coupled with a Javascrip...
JsDay - It's not you, It's me (or how to avoid being coupled with a Javascrip...JsDay - It's not you, It's me (or how to avoid being coupled with a Javascrip...
JsDay - It's not you, It's me (or how to avoid being coupled with a Javascrip...
 
Scale your Magento app with Elastic Beanstalk
Scale your Magento app with Elastic BeanstalkScale your Magento app with Elastic Beanstalk
Scale your Magento app with Elastic Beanstalk
 
X by orange; una telco en la nube
X by orange;   una telco en la nubeX by orange;   una telco en la nube
X by orange; una telco en la nube
 
Vagrant - Team Development made easy
Vagrant - Team Development made easyVagrant - Team Development made easy
Vagrant - Team Development made easy
 
Spring Boot & Spring Cloud on PAS- Nate Schutta (1/2)
Spring Boot & Spring Cloud on PAS- Nate Schutta (1/2)Spring Boot & Spring Cloud on PAS- Nate Schutta (1/2)
Spring Boot & Spring Cloud on PAS- Nate Schutta (1/2)
 
Trying and evaluating the new features of GlusterFS 3.5
Trying and evaluating the new features of GlusterFS 3.5Trying and evaluating the new features of GlusterFS 3.5
Trying and evaluating the new features of GlusterFS 3.5
 
(ARC402) Deployment Automation: From Developers' Keyboards to End Users' Scre...
(ARC402) Deployment Automation: From Developers' Keyboards to End Users' Scre...(ARC402) Deployment Automation: From Developers' Keyboards to End Users' Scre...
(ARC402) Deployment Automation: From Developers' Keyboards to End Users' Scre...
 
Introduction Into Docker Ecosystem
Introduction Into Docker EcosystemIntroduction Into Docker Ecosystem
Introduction Into Docker Ecosystem
 
Magento 2: New and Innovative? - php[world] 2015
Magento 2: New and Innovative? - php[world] 2015Magento 2: New and Innovative? - php[world] 2015
Magento 2: New and Innovative? - php[world] 2015
 

More from Federico Panini

Machine Learning: strategie di collaborative filtering nelle piattaforme onli...
Machine Learning: strategie di collaborative filtering nelle piattaforme onli...Machine Learning: strategie di collaborative filtering nelle piattaforme onli...
Machine Learning: strategie di collaborative filtering nelle piattaforme onli...
Federico Panini
 
Vagrant boxes with x, export display, chrome headless
Vagrant boxes with x, export display, chrome headlessVagrant boxes with x, export display, chrome headless
Vagrant boxes with x, export display, chrome headless
Federico Panini
 
Aws vpc : addressing cidr
Aws vpc : addressing cidrAws vpc : addressing cidr
Aws vpc : addressing cidr
Federico Panini
 
Git in pills : git stash
Git in pills : git stashGit in pills : git stash
Git in pills : git stash
Federico Panini
 
Symfony & Mailcatcher
Symfony & MailcatcherSymfony & Mailcatcher
Symfony & Mailcatcher
Federico Panini
 
Elasticsearch quick Intro (English)
Elasticsearch quick Intro (English)Elasticsearch quick Intro (English)
Elasticsearch quick Intro (English)
Federico Panini
 
Elasticsearch a quick introduction
Elasticsearch a quick introductionElasticsearch a quick introduction
Elasticsearch a quick introduction
Federico Panini
 
Elk - Elasticsearch Logstash Kibana stack explained
Elk - Elasticsearch Logstash Kibana stack explainedElk - Elasticsearch Logstash Kibana stack explained
Elk - Elasticsearch Logstash Kibana stack explained
Federico Panini
 

More from Federico Panini (8)

Machine Learning: strategie di collaborative filtering nelle piattaforme onli...
Machine Learning: strategie di collaborative filtering nelle piattaforme onli...Machine Learning: strategie di collaborative filtering nelle piattaforme onli...
Machine Learning: strategie di collaborative filtering nelle piattaforme onli...
 
Vagrant boxes with x, export display, chrome headless
Vagrant boxes with x, export display, chrome headlessVagrant boxes with x, export display, chrome headless
Vagrant boxes with x, export display, chrome headless
 
Aws vpc : addressing cidr
Aws vpc : addressing cidrAws vpc : addressing cidr
Aws vpc : addressing cidr
 
Git in pills : git stash
Git in pills : git stashGit in pills : git stash
Git in pills : git stash
 
Symfony & Mailcatcher
Symfony & MailcatcherSymfony & Mailcatcher
Symfony & Mailcatcher
 
Elasticsearch quick Intro (English)
Elasticsearch quick Intro (English)Elasticsearch quick Intro (English)
Elasticsearch quick Intro (English)
 
Elasticsearch a quick introduction
Elasticsearch a quick introductionElasticsearch a quick introduction
Elasticsearch a quick introduction
 
Elk - Elasticsearch Logstash Kibana stack explained
Elk - Elasticsearch Logstash Kibana stack explainedElk - Elasticsearch Logstash Kibana stack explained
Elk - Elasticsearch Logstash Kibana stack explained
 

Recently uploaded

不能毕业如何获得(USYD毕业证)悉尼大学毕业证成绩单一比一原版制作
不能毕业如何获得(USYD毕业证)悉尼大学毕业证成绩单一比一原版制作不能毕业如何获得(USYD毕业证)悉尼大学毕业证成绩单一比一原版制作
不能毕业如何获得(USYD毕业证)悉尼大学毕业证成绩单一比一原版制作
bseovas
 
快速办理(新加坡SMU毕业证书)新加坡管理大学毕业证文凭证书一模一样
快速办理(新加坡SMU毕业证书)新加坡管理大学毕业证文凭证书一模一样快速办理(新加坡SMU毕业证书)新加坡管理大学毕业证文凭证书一模一样
快速办理(新加坡SMU毕业证书)新加坡管理大学毕业证文凭证书一模一样
3a0sd7z3
 
Discover the benefits of outsourcing SEO to India
Discover the benefits of outsourcing SEO to IndiaDiscover the benefits of outsourcing SEO to India
Discover the benefits of outsourcing SEO to India
davidjhones387
 
留学学历(UoA毕业证)奥克兰大学毕业证成绩单官方原版办理
留学学历(UoA毕业证)奥克兰大学毕业证成绩单官方原版办理留学学历(UoA毕业证)奥克兰大学毕业证成绩单官方原版办理
留学学历(UoA毕业证)奥克兰大学毕业证成绩单官方原版办理
bseovas
 
Search Result Showing My Post is Now Buried
Search Result Showing My Post is Now BuriedSearch Result Showing My Post is Now Buried
Search Result Showing My Post is Now Buried
Trish Parr
 
国外证书(Lincoln毕业证)新西兰林肯大学毕业证成绩单不能毕业办理
国外证书(Lincoln毕业证)新西兰林肯大学毕业证成绩单不能毕业办理国外证书(Lincoln毕业证)新西兰林肯大学毕业证成绩单不能毕业办理
国外证书(Lincoln毕业证)新西兰林肯大学毕业证成绩单不能毕业办理
zoowe
 
Azure EA Sponsorship - Customer Guide.pdf
Azure EA Sponsorship - Customer Guide.pdfAzure EA Sponsorship - Customer Guide.pdf
Azure EA Sponsorship - Customer Guide.pdf
AanSulistiyo
 
Ready to Unlock the Power of Blockchain!
Ready to Unlock the Power of Blockchain!Ready to Unlock the Power of Blockchain!
Ready to Unlock the Power of Blockchain!
Toptal Tech
 
办理毕业证(UPenn毕业证)宾夕法尼亚大学毕业证成绩单快速办理
办理毕业证(UPenn毕业证)宾夕法尼亚大学毕业证成绩单快速办理办理毕业证(UPenn毕业证)宾夕法尼亚大学毕业证成绩单快速办理
办理毕业证(UPenn毕业证)宾夕法尼亚大学毕业证成绩单快速办理
uehowe
 
Should Repositories Participate in the Fediverse?
Should Repositories Participate in the Fediverse?Should Repositories Participate in the Fediverse?
Should Repositories Participate in the Fediverse?
Paul Walk
 
可查真实(Monash毕业证)西澳大学毕业证成绩单退学买
可查真实(Monash毕业证)西澳大学毕业证成绩单退学买可查真实(Monash毕业证)西澳大学毕业证成绩单退学买
可查真实(Monash毕业证)西澳大学毕业证成绩单退学买
cuobya
 
学位认证网(DU毕业证)迪肯大学毕业证成绩单一比一原版制作
学位认证网(DU毕业证)迪肯大学毕业证成绩单一比一原版制作学位认证网(DU毕业证)迪肯大学毕业证成绩单一比一原版制作
学位认证网(DU毕业证)迪肯大学毕业证成绩单一比一原版制作
zyfovom
 
Gen Z and the marketplaces - let's translate their needs
Gen Z and the marketplaces - let's translate their needsGen Z and the marketplaces - let's translate their needs
Gen Z and the marketplaces - let's translate their needs
Laura Szabó
 
办理新西兰奥克兰大学毕业证学位证书范本原版一模一样
办理新西兰奥克兰大学毕业证学位证书范本原版一模一样办理新西兰奥克兰大学毕业证学位证书范本原版一模一样
办理新西兰奥克兰大学毕业证学位证书范本原版一模一样
xjq03c34
 
HijackLoader Evolution: Interactive Process Hollowing
HijackLoader Evolution: Interactive Process HollowingHijackLoader Evolution: Interactive Process Hollowing
HijackLoader Evolution: Interactive Process Hollowing
Donato Onofri
 
Design Thinking NETFLIX using all techniques.pptx
Design Thinking NETFLIX using all techniques.pptxDesign Thinking NETFLIX using all techniques.pptx
Design Thinking NETFLIX using all techniques.pptx
saathvikreddy2003
 
存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理
存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理
存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理
fovkoyb
 
重新申请毕业证书(RMIT毕业证)皇家墨尔本理工大学毕业证成绩单精仿办理
重新申请毕业证书(RMIT毕业证)皇家墨尔本理工大学毕业证成绩单精仿办理重新申请毕业证书(RMIT毕业证)皇家墨尔本理工大学毕业证成绩单精仿办理
重新申请毕业证书(RMIT毕业证)皇家墨尔本理工大学毕业证成绩单精仿办理
vmemo1
 
一比一原版(USYD毕业证)悉尼大学毕业证如何办理
一比一原版(USYD毕业证)悉尼大学毕业证如何办理一比一原版(USYD毕业证)悉尼大学毕业证如何办理
一比一原版(USYD毕业证)悉尼大学毕业证如何办理
k4ncd0z
 
假文凭国外(Adelaide毕业证)澳大利亚国立大学毕业证成绩单办理
假文凭国外(Adelaide毕业证)澳大利亚国立大学毕业证成绩单办理假文凭国外(Adelaide毕业证)澳大利亚国立大学毕业证成绩单办理
假文凭国外(Adelaide毕业证)澳大利亚国立大学毕业证成绩单办理
cuobya
 

Recently uploaded (20)

不能毕业如何获得(USYD毕业证)悉尼大学毕业证成绩单一比一原版制作
不能毕业如何获得(USYD毕业证)悉尼大学毕业证成绩单一比一原版制作不能毕业如何获得(USYD毕业证)悉尼大学毕业证成绩单一比一原版制作
不能毕业如何获得(USYD毕业证)悉尼大学毕业证成绩单一比一原版制作
 
快速办理(新加坡SMU毕业证书)新加坡管理大学毕业证文凭证书一模一样
快速办理(新加坡SMU毕业证书)新加坡管理大学毕业证文凭证书一模一样快速办理(新加坡SMU毕业证书)新加坡管理大学毕业证文凭证书一模一样
快速办理(新加坡SMU毕业证书)新加坡管理大学毕业证文凭证书一模一样
 
Discover the benefits of outsourcing SEO to India
Discover the benefits of outsourcing SEO to IndiaDiscover the benefits of outsourcing SEO to India
Discover the benefits of outsourcing SEO to India
 
留学学历(UoA毕业证)奥克兰大学毕业证成绩单官方原版办理
留学学历(UoA毕业证)奥克兰大学毕业证成绩单官方原版办理留学学历(UoA毕业证)奥克兰大学毕业证成绩单官方原版办理
留学学历(UoA毕业证)奥克兰大学毕业证成绩单官方原版办理
 
Search Result Showing My Post is Now Buried
Search Result Showing My Post is Now BuriedSearch Result Showing My Post is Now Buried
Search Result Showing My Post is Now Buried
 
国外证书(Lincoln毕业证)新西兰林肯大学毕业证成绩单不能毕业办理
国外证书(Lincoln毕业证)新西兰林肯大学毕业证成绩单不能毕业办理国外证书(Lincoln毕业证)新西兰林肯大学毕业证成绩单不能毕业办理
国外证书(Lincoln毕业证)新西兰林肯大学毕业证成绩单不能毕业办理
 
Azure EA Sponsorship - Customer Guide.pdf
Azure EA Sponsorship - Customer Guide.pdfAzure EA Sponsorship - Customer Guide.pdf
Azure EA Sponsorship - Customer Guide.pdf
 
Ready to Unlock the Power of Blockchain!
Ready to Unlock the Power of Blockchain!Ready to Unlock the Power of Blockchain!
Ready to Unlock the Power of Blockchain!
 
办理毕业证(UPenn毕业证)宾夕法尼亚大学毕业证成绩单快速办理
办理毕业证(UPenn毕业证)宾夕法尼亚大学毕业证成绩单快速办理办理毕业证(UPenn毕业证)宾夕法尼亚大学毕业证成绩单快速办理
办理毕业证(UPenn毕业证)宾夕法尼亚大学毕业证成绩单快速办理
 
Should Repositories Participate in the Fediverse?
Should Repositories Participate in the Fediverse?Should Repositories Participate in the Fediverse?
Should Repositories Participate in the Fediverse?
 
可查真实(Monash毕业证)西澳大学毕业证成绩单退学买
可查真实(Monash毕业证)西澳大学毕业证成绩单退学买可查真实(Monash毕业证)西澳大学毕业证成绩单退学买
可查真实(Monash毕业证)西澳大学毕业证成绩单退学买
 
学位认证网(DU毕业证)迪肯大学毕业证成绩单一比一原版制作
学位认证网(DU毕业证)迪肯大学毕业证成绩单一比一原版制作学位认证网(DU毕业证)迪肯大学毕业证成绩单一比一原版制作
学位认证网(DU毕业证)迪肯大学毕业证成绩单一比一原版制作
 
Gen Z and the marketplaces - let's translate their needs
Gen Z and the marketplaces - let's translate their needsGen Z and the marketplaces - let's translate their needs
Gen Z and the marketplaces - let's translate their needs
 
办理新西兰奥克兰大学毕业证学位证书范本原版一模一样
办理新西兰奥克兰大学毕业证学位证书范本原版一模一样办理新西兰奥克兰大学毕业证学位证书范本原版一模一样
办理新西兰奥克兰大学毕业证学位证书范本原版一模一样
 
HijackLoader Evolution: Interactive Process Hollowing
HijackLoader Evolution: Interactive Process HollowingHijackLoader Evolution: Interactive Process Hollowing
HijackLoader Evolution: Interactive Process Hollowing
 
Design Thinking NETFLIX using all techniques.pptx
Design Thinking NETFLIX using all techniques.pptxDesign Thinking NETFLIX using all techniques.pptx
Design Thinking NETFLIX using all techniques.pptx
 
存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理
存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理
存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理
 
重新申请毕业证书(RMIT毕业证)皇家墨尔本理工大学毕业证成绩单精仿办理
重新申请毕业证书(RMIT毕业证)皇家墨尔本理工大学毕业证成绩单精仿办理重新申请毕业证书(RMIT毕业证)皇家墨尔本理工大学毕业证成绩单精仿办理
重新申请毕业证书(RMIT毕业证)皇家墨尔本理工大学毕业证成绩单精仿办理
 
一比一原版(USYD毕业证)悉尼大学毕业证如何办理
一比一原版(USYD毕业证)悉尼大学毕业证如何办理一比一原版(USYD毕业证)悉尼大学毕业证如何办理
一比一原版(USYD毕业证)悉尼大学毕业证如何办理
 
假文凭国外(Adelaide毕业证)澳大利亚国立大学毕业证成绩单办理
假文凭国外(Adelaide毕业证)澳大利亚国立大学毕业证成绩单办理假文凭国外(Adelaide毕业证)澳大利亚国立大学毕业证成绩单办理
假文凭国外(Adelaide毕业证)澳大利亚国立大学毕业证成绩单办理
 

Long life to vagrant… Vagrant is dead

  • 1. LONG LIFE TO VAGRANT… VAGRANT IS DEAD federico.panini@fazland.com - CTO Development boxes and modern software lifecycle development techniques. How our development team grew up and how we evolved our development stack.
  • 2. federico.panini@fazland.com - CTO Federico Panini CTO @Fazland.com Team Manager of 8 people PHP Developer with lots of years of experience …. Ops @Fazland.com
  • 3. federico.panini@fazland.com - CTO Maya CHO @Fazland.com Chief Happiness Officier Spreading love all over the company :)
  • 4. federico.panini@fazland.com - CTO Fazland is a marketplace where customers find the right professional for all their daily projects and smart professionals find new clients, while promoting quality, merit and transparency
  • 5. How many of you use Vagrant ? federico.panini@fazland.com - CTO
  • 6. How many of you don’t use Vagrant ? federico.panini@fazland.com - CTO
  • 7. federico.panini@fazland.com - CTO Martin Fawler “…This kind of delivery thinking has long been a forgotten corner of software development, falling into a hole between developers and operations teams. So it’s no surprise that the techniques in this book rest upon bringing these teams together—a harbinger of the nascent but growing DevOps movement.” Foreword by Martin Fawler in 
 Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation. 
 by David Farley; Jez Humble
  • 8. federico.panini@fazland.com - CTO Continuous Integration: Improving Software Quality and Reducing Risk. by Andrew Glover , Steve Matyas , Paul M. Duvall Publisher: Addison-Wesley Professional Published: June 2007
  • 9. federico.panini@fazland.com - CTO Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation.
 
 by David Farley; Jez Humble
 
 Published by Addison-Wesley Professional, 2010
  • 10. federico.panini@fazland.com - CTO What is this talk about Development Workstations
  • 12. federico.panini@fazland.com - CTO Development Workstations https://raygun.com/blog/developer-workstations/ https://nickcraver.com/desktop-build/ (StackOverflow)
  • 14. federico.panini@fazland.com - CTO REALLY ?!?!? Software Development Lifecycle
  • 16. federico.panini@fazland.com - CTO Our Experience with Vagrant
  • 17. Ranting against Vagrant federico.panini@fazland.com - CTO What is not this talk about
  • 18. Vagrant configuration federico.panini@fazland.com - CTO What is not this talk about
  • 19. Vagrant provisioning federico.panini@fazland.com - CTO What is not this talk about
  • 20. Docker, LXC, Ansible federico.panini@fazland.com - CTO What is not this talk about
  • 23. federico.panini@fazland.com - CTO Virtual Machines Type 1 hypervisor: hypervisors run directly on the system hardware. A “bare metal” embedded hypervisor Type 2 hypervisor: hypervisors run on a host operating system that provides virtualisation services, such as I/O device support and memory management.
  • 24. Vagrant is responsible for managing and build efficiently Virtual Machines from the CLI. This is has been for years the most used tools for DEVELOPERS to create consistent development environments. federico.panini@fazland.com - CTO What is Vagrant ?
  • 25. Dependencies and Configuration Isolation federico.panini@fazland.com - CTO What is Vagrant ? (DEVS PofV) All the dependencies and all the configurations files are isolated from the host OS.
  • 26. Single Disposable Environment federico.panini@fazland.com - CTO VM’s are managed in a single place by a single scripting file What is Vagrant ? (DEVS PofV)
  • 27. Consistent Environment federico.panini@fazland.com - CTO The guest environment could be recreated with ease by a bunch of scripting files What is Vagrant ? (DEVS PofV)
  • 28. Testing Management Infrastructure Scripts of your Consistent Workflows federico.panini@fazland.com - CTO What is Vagrant ? (OPS PofV) You could test your infrastructure script with a solid, efficient environment, you can tests your chef or puppet scripts. You can also tests the same stuff on the cloud, AWS or other providers, which have the same workflow.
  • 31. federico.panini@fazland.com - CTO FAZLAND … the story so far Fazland was born 6 years ago. I joined Fazland 5 years ago. F A Z L A N D 2 0 1 3
  • 32. federico.panini@fazland.com - CTO No source control repo source files managed in a folder backed up with ZIP files F A Z L A N D 2 0 1 3 FAZLAND … the story so far
  • 33. federico.panini@fazland.com - CTO No development environment the very first source files were from another developer F A Z L A N D 2 0 1 3 FAZLAND … the story so far
  • 34. federico.panini@fazland.com - CTO 1 developer, 1 CTO, 1 ops, 1 …. just me! F A Z L A N D 2 0 1 3 no need to change this stack…. FAZLAND … the story so far
  • 36. federico.panini@fazland.com - CTO how to manage source files ? how to manage development environment ? what about server configuration ? what about application library dependencies ? how can I remember all the configurations lost ? what about if my development MAC will crash ? what about the time and cost of restoring all the environment ? F A Z L A N D 2 0 1 3 FAZLAND … the story so far
  • 37. what about if my development MAC will crash ? federico.panini@fazland.com - CTO FAZLAND … the story so far F A Z L A N D 2 0 1 3
  • 38. federico.panini@fazland.com - CTO immediately I implemented git as source control and a virtual machine based on VirtualBox F A Z L A N D 2 0 1 3 FAZLAND … the story so far
  • 39. federico.panini@fazland.com - CTO I started managing source code consistently. I started managing development environment consistently and isolated…. A black box with all the “secrets” about configuration & co. hidden to the developer. A solid env with clear dependencies and configuration. F A Z L A N D 2 0 1 3 FAZLAND … the story so far
  • 40. federico.panini@fazland.com - CTO FAZLAND … the story so far F A Z L A N D 2 0 1 3
  • 41. federico.panini@fazland.com - CTO FAZLAND … the story so far F A Z L A N D 2 0 1 3 # -*- mode: ruby -*- # vi: set ft=ruby : Vagrant.configure("2") do |config| # All Vagrant configuration is done here. The most common configuration # options are documented and commented below. For a complete reference, # please see the online documentation at vagrantup.com. config.vm.box = “ubuntu/precise64" config.vm.box_url = "http://files.vagrantup.com/precise64.box" config.vm.network :forwarded_port, guest: 80, host: 8383 config.vm.network :forwarded_port, guest: 3306, host: 3306 config.vm.network :forwarded_port, guest: 27017, host: 27017 config.vm.network :private_network, ip: "192.168.0.10" config.vm.provider :virtualbox do |vb| vb.customize ["modifyvm", :id, "--memory", "1024"] end config.vm.provision :puppet do |puppet| puppet.manifests_path = "puppet/manifests" end end
  • 42. application in 2013 — Monolith development stack and application federico.panini@fazland.com - CTO FAZLAND … the story so far F A Z L A N D 2 0 1 3
  • 43. federico.panini@fazland.com - CTO FAZLAND … the story so far F A Z L A N D 2 0 1 5 # -*- mode: ruby -*- # vi: set ft=ruby : # All Vagrant configuration is done below. The "2" in Vagrant.configure # configures the configuration version (we support older styles for # backwards compatibility). Please don't change it unless you know what # you're doing. Vagrant.configure(2) do |config| config.vm.box = "ubuntu/trusty64" config.ssh.forward_agent = true config.vm.network "private_network", ip: "192.168.33.10" config.vm.base_mac="0800271AB2AC" config.vm.provider "virtualbox" do |vb| # vb.gui = true vb.customize ["modifyvm", :id, "--memory", “8192"] vb.customize ["modifyvm", :id, "--cpus", "4"] end config.vm.provision :ansible do |ansible| ansible.playbook = "provision/mainVagrant.yml" ansible.verbose = "vvvv" end end
  • 44. application in 2015 — Monolith + first micro services federico.panini@fazland.com - CTO FAZLAND … the story so far F A Z L A N D 2 0 1 5
  • 45. federico.panini@fazland.com - CTO FAZLAND … the story so far F A Z L A N D 2 0 1 6 # -*- mode: ruby -*- # vi: set ft=ruby : # All Vagrant configuration is done below. The "2" in Vagrant.configure # configures the configuration version (we support older styles for # backwards compatibility). Please don't change it unless you know what # you're doing. Vagrant.configure(2) do |config| config.vm.box = “ubuntu/xenial64” config.ssh.forward_agent = true config.vm.network "private_network", ip: "192.168.33.50" config.vm.base_mac="0800271AB2AC" config.vm.synced_folder "./", "/vagrant", :nfs => true config.vm.provider "virtualbox" do |vb| # vb.gui = true vb.customize ["modifyvm", :id, "--memory", "4096"] vb.customize ["modifyvm", :id, "--cpus", "4"] end config.vm.provision :ansible do |ansible| ansible.playbook = "provision/mainVagrant.yml" ansible.verbose = "vvvv" end end
  • 46. application in 2016 —- monolith + microservices + DOCKER AS R&D project federico.panini@fazland.com - CTO FAZLAND … the story so far F A Z L A N D 2 0 1 6
  • 47. federico.panini@fazland.com - CTO FAZLAND … the story so far F A Z L A N D 2 0 1 6
  • 48. federico.panini@fazland.com - CTO NFS problems during 2016 F A Z L A N D 2 0 1 6
  • 49. federico.panini@fazland.com - CTO FAZLAND … the story so far F A Z L A N D N O W # -*- mode: ruby -*- # vi: set ft=ruby : Vagrant.configure(2) do |config| config.vm.box = “ubuntu/xenial64" config.ssh.forward_agent = true config.ssh.forward_x11 = true config.vm.network "private_network", ip: "192.168.33.10" config.vm.base_mac="0800271AB2AC" config.vm.synced_folder "./", "/vagrant", :nfs => true config.vm.provider "virtualbox" do |vb| vb.customize ["modifyvm", :id, "--memory", "2048"] vb.customize ["modifyvm", :id, "--cpus", "2"] end config.vm.provision :ansible do |ansible| ansible.playbook = "provision/mainVagrant.yml" ansible.verbose = "vvvv" end config.vm.provision :shell, :inline => "sudo rm /etc/localtime && sudo ln -s / usr/share/zoneinfo/Europe/Rome /etc/localtime", run: "always" config.vm.provision "shell", run: "always" do |s| s.inline = ' sudo mount -t ramfs none /opt/sycache -o "mode=0777" ; sudo service nginx restart ' end end
  • 50. application in 2018 - monolith + microservices federico.panini@fazland.com - CTO F A Z L A N D N O W
  • 54. federico.panini@fazland.com - CTO FAZLAND … the story so far quick recap
  • 55. federico.panini@fazland.com - CTO VAGRANT AND DOCKER F A Z L A N D N O W Vagrant Docker Virtualization Virtual machine Linux container Resource isolation Strong Weak (shared kernel) Startup time Minutes Seconds Image build time 10+ minutes mins Size 1GB+ 100MB+ Sharing Vagrant Cloud Docker Hub
  • 56. • run on top of VM (hypervisor type 2) • vagrant manage VM’s • has complete ISOLATION, guest VM • kernel separated from HOST VM • it needs some GB of space • turn on env in minutes • Linux, Windows, OSX federico.panini@fazland.com - CTO VAGRANT AND DOCKER F A Z L A N D N O W • uses containers, similar to LXC • Docker manage container • less isolation, process isolation • shared kernel model • lightweight environment • turn on env in minutes • Linux, OSX (slow),
  • 57. federico.panini@fazland.com - CTO Recap #2 Vagrant - FazlandVm’s and Vagrant
  • 58. federico.panini@fazland.com - CTO Deployment Pipeline What is a deployment Pipeline ?
  • 60. federico.panini@fazland.com - CTO Deployment Pipeline “It is the process for getting software from version control into the hands of your users.” Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation. 
 by David Farley; Jez Humble
  • 63. federico.panini@fazland.com - CTO Recap #3 Deployment Pipeline Vm’s and Vagrant Vagrant - Fazland
  • 64. What we have to do ? federico.panini@fazland.com - CTO The end :)
  • 67. • Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation. by David Farley; Jez Humble
 Published by Addison-Wesley Professional, 2010 • Continuous Integration: Improving Software Quality and Reducing Risk. by Andrew Glover , Steve Matyas , Paul M. Duvall Publisher: Addison-Wesley Professional Published: June 2007 • https://www.vagrantup.com/intro/index.html • https://en.wikipedia.org/wiki/Virtual_machine • https://github.com/hashicorp/vagrant/issues/8788 • https://groups.google.com/forum/#!topic/vagrant-up/UgINc-ppptU • http://mitchellh.com/comparing-filesystem-performance-in-virtual-machines • https://hackernoon.com/how-to-create-consistent-development-environments-that-just- work-55be5417341b • https://martinfowler.com/bliki/MicroservicePrerequisites.html • https://martinfowler.com/bliki/MonolithFirst.html federico.panini@fazland.com - CTO References
  • 68. federico.panini@fazland.com - CTO FAZLAND current Deployment Pipeline Legacy NG + Api 2 different stacks living together
  • 69. federico.panini@fazland.com - CTO FAZLAND current Deployment Pipeline Legacy NG + Api 2 different stacks living together both environments uses micro services for sending email, manage notifications to browser or mobile app… etc
  • 70. federico.panini@fazland.com - CTO FAZLAND current Deployment Pipeline 1. developers works on features tickets 2. developers tests their tickets 3. developers merge the feature tickets on develop branch. 4. Before merge a git pre-commit hook will be invoked and re- executes all tests. D E V E L O P M E N T
  • 71. federico.panini@fazland.com - CTO FAZLAND current Deployment Pipeline If tests fails the branch will not be merged. D E V E L O P M E N T if test succeed the feature branch will be merged on develop.
  • 72. federico.panini@fazland.com - CTO FAZLAND current Deployment Pipeline 1. when features branches are merged on develop a web hook is invoked and a stage environment on AWS will fetch the updates and re-create the environment updated with the latests stuff. 2. during deployment on stage tests (unit, functional and integrations) are executed 3. if the process succeed a new fresh Stage environment is ready to be tested by our Product Team 4. When the Product team Validate the tickets a new release will be created, the master branch will be updated with new stuff and a new tag is created. S T A G E
  • 73. federico.panini@fazland.com - CTO FAZLAND current Deployment Pipeline 1. every time a new Tag is pushed on remote, a web hook against AWS is called. And through AWS CodePipeline we start to deploy on production the new features. 2. the same thing happen with our legacy environment with the difference that the deploy is done with Capistrano, on pure EC2 instances.if the process succeed a new fresh Stage environment is ready to be tested by our Product Team 3. AWS CodePipeline will fetch the new release, make the build (in fact re- execute tests) and if they succeed update our AWS ECS, draining old images and creating new ones. P R O D U C T I O N