Виртуализация как инструмент разработчика
TRANSCRIPT
Виртуализация как инструментразработчикаПодготовлена специально для #openitpro
Кириллов Александр,
Web developer in UNDEV
1
Кому нужна виртуализация?• Датацентры и гибридные облака
• Внутренняя инфраструктура
• Просто инструмент
• DevOps Engineer
• Test Engineer
• Developers
2
Зачем виртуализация разработчику?Если вы разработчик и...
Несколько проектов
+
Зависимость от разных типов програмного обеспечения
=
Ваша машина просто напичкана мусором
3
Зачем виртуализация разработчику?Если вы разработчик и...
Несколько проектов
+
Зависимость от разных версий програмного обеспечения
=
Ваша машина все еще напичкана мусором
4
Зачем виртуализация разработчику?Текущий разработчик (с частичной но не актуальной) информацией
как воссоздать среду разработки
+
Новый разработчик в команде (с чистой машиной, или другой
операционной системой)
=
Проблемы c установкой среды разработки, вплоть до невозможности
работы на этой ОС
5
Зачем виртуализация разработчику?Development environment
≠
Production/Staging/CI environment
=
Синдром "Странно, а на моей машине работает!"
6
Идеальный вариант$> git clone [email protected]/user/project
$> cd project
$> $run_magic_command$
$> run_server -args
01.
02.
03.
04.
7
Идеальный вариант$> git clone [email protected]/user/project
$> cd project
$> vagrant up
$> run_server -args
01.
02.
03.
04.
8
Vagrant - это не только VirtualBoxVagrant providers:
• VirtualBox
• VMware
• Hyper-V (Windows 8.1 only)
• Parallels
• Libvirt
• AWS
• DigitalOcean
10
Vagrant - это не только ChefProvisioning:
• File, Shell
• Ansible
• Chef
• Docker
• Puppet
• Salt
• OpenShift
11
Vagrant. Дополнения, которые облегчатвам жизнь
• vagrant-vbguest
• vagrant-omnibus
• vagrant-exec
• vagrant-cachier
• vagrant-hostmanager
• vagrant-dns
• vagrant-snap
12
Vagrant. Стало гораздо проще!...
# for vagrant-exec plugin
config.exec.root = "/vagrant"
config.exec.prepend_with "bundle exec", \
only: %w(rails rake unicorn sidekiq middleman)
config.exec.prepend_with "USER=Kirillov bundle exec",\
only: %w(cap)
...
01.
02.
03.
04.
05.
06.
07.
08.
13
Vagrant. Стало гораздо проще!$> git clone [email protected]/user/project
$> cd project
$> vagrant up
$> vagrant exec middleman server
$> vagrant exec cap production deploy
01.
02.
03.
04.
05.
14
Vagrant. AnsibleОсновные архитектурные принципы
1. SIMPLY CLEAR
2. SIMPLY FAST
3. SIMPLY COMPLETE
4. SIMPLY EFFICIENT
5. SIMPLY SECURE
16
Vagrant. Ansible. Playbook:
17
Vagrant. Не все так безоблачно :-/• Требователен к ресурсам машины
• Довольно сложно дебажить из редактора/IDE
• Shared folders (жить можно только через nfs)
• ...
18
А вы пробовали Docker?
19
А вы пробовали Docker?• Application-centric
• Automatic build
• Versioning
• Component re-use
• Sharing
• Tool ecosystem
20
И тут тоже проблемы• "Работает только в *nix
• Общие ресурсы машины (сеть, диски, библиотеки, фс)
• Работа через VirtualBox не тривиальна
21