Vagrant и компания

MiksIr

miksir@home:~$
На самом деле не о Vagrant , а о том, где живут файлы, php и база.

Вводные:
- Гетерогенный парк машин разработчиков - маки, винда, линукс
- Мобильность актуальна в последнюю очередь
- Ресурсы машины важны: для разработчиков то не очень, но есть еще фронт, у которых может быть запущена куча тяжелого софта, виртуалок для тестирования и прочее.

Условно варианты я разбиваю по взаимному местоположению php+nginx и базы.
Файлы лежат на клиенте, ибо иначе получим тормоза IDE и кучу проблем при ошибках сетки и т.п.

А. Все на сервере.
Б. Все на клиенте.
В. PHP+nginx на клиенте, база на сервере

Те преимущества и недостатки, которые я вижу
А. Все на сервере.
+ Почти не жрет ресурсов клиента
+ Легко управляется конфигурация (в крайнем случае даже не требует менеджера конфигурации, ибо один конфиг на всех)
+ Администратор может добраться до файлов разработчика (редко, но случается, типа "забыл закомитить")
- Не мобильно
- Проблемы синхронизации.
Вот эти проблемы синхронизации такая приличная ложка дегтя. Варианты
1. монтируем с сервера
+ работаем с одной копией данных и на клиенте и на сервере
- проблемы с клиентом могут приводить к проблемам на сервере, например, блокировка процессов. Возможно тут нужно смотреть другие решения по сетевым файловым системам​
2. Синхронизируем средствами IDE или иными однонаправленными (хотя им доверия меньше)
+ нет проблем с блокировками из первого способа
- возможные рассинхронизации и задержки синхронизации
- проблема со средствами сборки и прочим - или ставить на клиента (не удобно из-за гетерогенности, а значит сложности поддержания конфигурации) или получать собранную версию на сервере и как-то забирать на клиент руками(?)... муторно.​
3. Как вариант - двусторонняя синхронизация
+ нет проблем с системами сборки, можно запускать на сервере
- все минусы рассинхронизации + потенциальные конфликты
- так и не нашел вменяемого гетерогенного решения реалтайм двусторонней синхронизации​
В общем все вот эти минусы приводят к тому, что я ищу другие варианты сейчас.
Б. Все на клиенте.
+ Мобильно
+ Все системы сборки работают хоть и внутри контейнера, но с одной копией данных
+ Относительно легко поддерживать конфигурацию (или vagrant или просто linux box + менеджер конфигурации)
* Чуточку сложнее мантейнить базу (иногда нужно работать с реальными дампами данных - т.е. написать их заливку во все контейнеры - решаемо, по-этому и не минус)
- Ресурсы клиента. Если мы хотим резвую базу на больших выборках - достаточно много ресурсов.

Для того, что бы решить минус Б, берем вариант В
В. PHP+nginx на клиенте, база на сервере
+ Все плюсы Б кроме мобильности
+ Жрет мало ресурсов (но жрет)
- Мобильность (раз уж перешли на контейнеры - неплохо бы)
И вроде В вариант подходит, но мысль получить мобильность в перспективе приводит к гибкому контейнеру, который определяет - где он, и или запускает базу, или нет. А если идти дальше, то этот же контейнер может работать и на сервере, подцепляя локальные файлы по самбе или т.п.
В общем к чему этот пост. Обобщение мыслей и сбор плюсов/минусов, которые я упустил.
 

artoodetoo

великий и ужасный
@MiksIr, вы клиентом и сервером называете хост-систему и гостевую-систему?
 

WMix

герр M:)ller
Партнер клуба
vm+vagrant как среда и ci типа "cv, миграция, unit, deploy" +для разработчиков набор сидов типа example-db ну и следить за этим
 

fixxxer

К.О.
Партнер клуба
Если держать базу в отдельном контейнере, можно легко переключаться между Б и В.
 

MiksIr

miksir@home:~$
Если держать базу в отдельном контейнере, можно легко переключаться между Б и В.
Чем больше про такую миграцию базы на клиентскую машину думаешь, тем больше вопросов - и как снапшотить базы, и банально как по какому IP добираться до базы. Интересно, кто-то автоматизировал такое уже.
 

fixxxer

К.О.
Партнер клуба
как снапшотить базы
xtrabackup

по какому IP добираться до базы
ну, много вариантов
1) в конфиге что-то вроде $_SERVER['MYSQL_HOST'], и соответственно в /etc/profile.d/... и fastcgi_params
2) в конфигах localhost, на локалке форвардить юникс-сокет хоть тем же socat
3) mysql-proxy
...
 

MiksIr

miksir@home:~$
Это все подразумевает, что контейнер с php знает о том, что он стал работать в мобильном окружении. Но в этом случае можно базу и в этом контейнере поднять.
В идеале все же контейнер идет на внешний IP, а он обслуживается или сервером или виртуалкой рядом.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
"В" не вариант - кто-то захочет работать в дороге. Или "Б", или как говорит фишер.

Никто не таскает на dev 100-гигабайтную базу, админ готовит consistent snapshot на сотню метров максимум. Виртуалке хватит 512 мб оперативки, если у тебя не tomcat.
DBA будет тюнить запросы без виртуалок, и на него не надо ориентироваться.
 
Последнее редактирование:

MiksIr

miksir@home:~$
"В" не вариант - кто-то захочет работать в дороге.
и достанет из рюкзака свой 27" аймак =) Не, на самом деле для меня пока не актуально. А ресурсы - актуальны. 512, конечно, найдутся, но на самом деле 32гб аймаков выжраны почти все. Хотя совсем не отбрасываю, так что деуствительно хочу В легким движением руки переходящий в Б.
Никто не таскает на dev 100-гигабайтную базу
Реальная ситуация - на продакшене с каким-то товаром происходит странное - не попадает в выборку или еще что. Варианта два - или тот, кто имеет доступ к продакшену (как правило рядовой разработчик такого доступа не имеет) вдумчиво изучает базу пытаясь понять, что такое пришло со склада. Или делается дамп, заливаетя обычному разработчику и разбирается уже он. Не говоря уже о том, что может потребоваться банальный дебаг.
 

fixxxer

К.О.
Партнер клуба
Лучше уж загасить базы, сделать снепшот виртуалки, и спокойно его потом копировать.
Угу, вот потому удобнее отдельную - снапшот туда-сюда и готово. :)

Ну не знаю, у меня в 8 (с напрягом, memory compression и редким свопом на ссд) - но помещается. Сторм, две виртуалки, пачка браузеров, фотошоп и все такое. С 16 вообще будет прекрасно, но в мой mid-2009 стока не лезет, а от матового экрана я откажусь только когда совсем припрёт.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Это называется "нечего на зеркало пенять если руки кривые".

Новая серия сказок Венского леса - о том, что на маке не хватает 8 гб и что экран меньше 27" дизайнерам не подходит.
Сказка красивая, я б даже поверил, если б сам не смотрел у себя потребление памяти, и не знал дизайнера, которая работает на 13" макбуке.

8 хватает не только для PHPStorm с виртуалкой, но даже для комфортной разработки на Eclipse/Tomcat/JDK, которому для сборки проекта без GUI надо минимум 4.

Да, если в Хроме с AdBlock держать десятки вкладок, в которых из вконтактика смотреть фильмы - он скушает гигов 5, см. выше.
Фотошоп программисту в фоне необходим, понимаю, см. выше.

Для того чтобы отдебажить конкретный запрос - хватает дампа пары таблиц. Нужно раз в пол-года, берется дамп конкретных таблиц. Если у вас разработчики качают полный дамп базы размером больше пары десятков метров - смотри выше.
Если у вас нет DBA или админа, хотя бы по совместительству, который отвечает за базу - см. выше.
Если у вас "свой путь" и тебе нужно чтобы тебе сказали какой из видов глупости лучше - см. выше :)
 
Последнее редактирование:

MiksIr

miksir@home:~$
Вы прослушали очередную серию классических ЧСВ поучений из форумосериала от grigori под названием "какой же я охуенно крутой и умный".
Только он знает, кому кто хватает, а так же лично брал на работу дизайнера работающего исключительно на zx-spectrum.
Оставлю его наедине с его кругозором.
 

MiksIr

miksir@home:~$
Ну не знаю, у меня в 8 (с напрягом, memory compression и редким свопом на ссд) - но помещается
Ну вот я специально посмотрел что творится у фронт-енда. Запас там, конечно, есть, правда исключительно в inactive. И в общем пара гигов может и влезет почти без последствий. Но я не вижу причин отнимать у них эти гиги, когда на сервере разработки 64Г+ простаивает с кучей ядер и даст гораздо лучше производительность. А мобильность не нужна, так как работа в офисе. Не все же только белое и черное, как у grigori.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
если несколько человек говорят вам что вы пьяны и от вас несет - вероятно, стоит пойти проспаться и помыться (С) crazy ;)
 

MiksIr

miksir@home:~$
grigori, есть разница между "мне хватает", как говорят несколько человек, и "всем должно хватить, моей теще хватает, я работал на крутой работе - мне хватало, а если вам не хватает - значит у вас что-то не так, ибо... ну 640к хватит всем", как обычно вещаете вы.

Я понимаю, что вы то разницы между этими высказываниями не видите, по-этому и не буду что-то доказывать. Ну хватает всем - так хватает. Ну должен админ знать структуру базы и логику софта - ну значит должен. Ну все лохи без выделенного DBA, который еще и логику ПО знает - ну ок. Ради бога.
 
Сверху