Fork me on GitHub
#clojure-russia
<
2015-11-19
>
seryh02:11:54

@lowl4tency: рассказывай )

Kira Sotnikov07:11:00

seryh: у нас мастер в гитхабе настроен при пуше, дергается circleci, он билдит код, прогоняет тесты, circleci дергает codedeploy на амазоне и деплоит jar на хосты

Kira Sotnikov07:11:29

ну и плюс есть скрипты которые после деплоя загоняют статику на s3

Kira Sotnikov07:11:47

Каждый пулл реквест в мастер это деплой на прод

oxgrouby07:11:15

мне вот интересно, кто деплоит сразу jar'ки -- вы что, копируете на сервер ещё иниты, конфиги?

seryh07:11:39

вшивают же это добро прямо в jar я думаю и деплоят

oxgrouby07:11:51

а если на горячую надо что-то поменять?

oxgrouby07:11:29

может я зажрался, но по моему как-то диковато не юзать пакетный менеджер системы)

Kira Sotnikov07:11:15

oxgrouby: и конфиги деплоим и всю обвязку

Kira Sotnikov07:11:28

и скрипты даже для запуска через апстарт

dottedmag07:11:33

Если всех артефактов -- один jar и один скрипт для systemd, то пакетный менеджер не требуется.

dottedmag07:11:51

Но есть нюанс (c) анекдот

oxgrouby07:11:52

пакетный менеджер это в первую очередь чтобы незнакомый со спецификой админ мог взять и сделать очевидные вещи, от количества файлов не особо зависит

Kira Sotnikov07:11:56

codedeploy может захендлить все

Kira Sotnikov07:11:09

и без пакетного менеджера

Kira Sotnikov07:11:16

у меня все скидывается в хоум директорию

Kira Sotnikov07:11:31

все описано в appspec.yml файле

dottedmag07:11:46

Помимо кложи ведь ещё вечно бэкапы, нгинксы, крон-задачи, статика-хренатика, кибана, эластиксёрч, настойка sysctl и прочей хренотени.

Kira Sotnikov07:11:04

А этим занимается не деплоймент аппа

Kira Sotnikov07:11:19

Для этого отдельная репа с отдельным кодом

dottedmag07:11:30

@oxgrouby: Отдельные админы не нужны.

Kira Sotnikov07:11:38

статику деплоит скриптик

oxgrouby07:11:17

а, тогда ясно

dottedmag07:11:10

@oxgrouby: Как только on-call становятся разработчики, так мистическим образом количество алёртов по ночам снижается до нуля при неизменном availability приложения.

dottedmag07:11:49

@lowl4tency: У нас всё в одном месте, потому что это ведь часть продукта. Аналитика, фронтэнд, периодические скрипты -- это всё часть одного продукта.

dottedmag07:11:12

К примеру, конфигурация nginx всегда тесно связана с тем, что за ним стоит.

kharus07:11:24

При условии что есть время это фиксить. А то ведь бывает что ночью баги, днём фичи.

Kira Sotnikov07:11:06

dottedmag: ну у нас три или четыре отдельных аппа, плюс отдельный апп для инфраструктуры, плюс нжинкс у нас всего лишь для вебсокетов один стоит, там окнфиг простой и менять днс без самого днс низя

Kira Sotnikov07:11:27

скрипты которые деплоят статику запускаются при деплое, после деплоя джарки

Kira Sotnikov07:11:49

dottedmag: а вы где хоститесь?

Kira Sotnikov07:11:10

мне кажется сравнивать и решать кто делает правильно а кто нет в вопросах деплоя не очень правильно

Kira Sotnikov07:11:19

у каждого своя специфика присутствует

dottedmag07:11:21

Ну, да. Whatever works.

Kira Sotnikov07:11:42

просто можно подсмотреть как кто-то делает и попробовать у себя прикрутить части

Kira Sotnikov07:11:21

раньше например у нас деплоилось на прод по команде боту

Kira Sotnikov07:11:27

и я до сих пор думаю не вернуть ли это

Kira Sotnikov07:11:56

Скажите, а есть обратные трансляторы из js в cljs? simple_smile

rm07:11:28

а зачем? 0_o. Есть сорсмапы

Kira Sotnikov08:11:42

ну например у меня есть пачка js, которую я хочу сунуть в cljs чтобы продолить девелопить на cljs

seryh08:11:47

такой транслятор тебе cljs сгенерит такой что глаза начнут кровоточить

rm08:11:15

не, ну так-то можно придумать, особенно если js нормальный, неминифицированный. Строишь AST, оборачиваешь в скобочки, готово. Как потом из этого cljs делать, можно оставить на совести разработчика

rm08:11:11

в смысле, получится интероп на интеропе, неидиоматично

Kira Sotnikov08:11:32

ясно, значит проще переписать с нуля подглядывая в js

dottedmag08:11:50

А зачем?

dottedmag08:11:59

Можно же по кусочкам переделывать.

Kira Sotnikov08:11:31

а подробнее можно? Берешь один файлик переписываешь его на cljs? компилишь. Остальное на js осталось. И так one by one?

dottedmag08:11:35

Типа, сначала сделать cljs-враппер, который ходит в js за каждым чихом.

dottedmag08:11:14

Потом каждый раз, когда нужно внести изменение - переписывать кусочек на cljs и уже после этого вносить.

dottedmag08:11:26

Со временем js-код пропадёт.

Kira Sotnikov08:11:49

интересно

dottedmag08:11:02

Заповедь номер 1: никогда не "переписывать с нуля"

dottedmag08:11:09

Заповедь номер 2: никогда не "переписывать с нуля"

Kira Sotnikov08:11:26

Спасибо!

dottedmag08:11:44

Но от кода, конечно, зависит. Иногда там функциональности настолько мало, что "кусочек" -- это весь код и есть.

Kira Sotnikov08:11:46

а подробнее про враппер можно?

dottedmag08:11:30

Так просто cljs-код, который вызывает js-фукнкции через interop. Зависит от того, что это вообще за приложение и с чем оно общается.

Kira Sotnikov08:11:48

а, понял

dottedmag08:11:36

Я когда-то давно мигрировал проект C на C++. Начал с того, что скомпилировал C-код C++-компилятором и сделал main.cpp. А дальше уже по кусочкам.

dottedmag08:11:04

Если в браузере, то я бы начал с фукнкции, которая исполняется в самом начале.

Kira Sotnikov09:11:35

dottedmag: я когда-то мигрировал проект с анта на мавен

Kira Sotnikov09:11:44

делал примерно так же, по частям замещал ант

razum2um09:11:44

@lowl4tency: а этот js для трансляции написан модульно cjs/amd/es2015?

Kira Sotnikov09:11:55

а я не знаю

Kira Sotnikov09:11:03

я спрашивал про в принципе

razum2um09:11:19

потому что мне бы наоборот хотелось большей связности с npm чтобы не искать cljsjs, думать про externs и проч. я тут в #C07UQ678E беседовал с Ноленом. он говорит, у него npm нету и его вообще не трогает эта тема. печаль по-моему

artemyarulin09:11:04

https://clojurians.slack.com/archives/clojure-russia/p1447923214001080 как ты прав. Мы сейчас переписываем проект с нуля - пол года прошло, еще пол года впереди наверно. И хз что потом

dottedmag09:11:15

А потом ещё полгода troll

artemyarulin09:11:18

а потом надо взять отпуск на месяц - ибо релизить такое будет адом

oxgrouby09:11:58

я щас как раз легаси ковыряю, проект на пхп5.2, в класическом лапше-стиле

oxgrouby09:11:18

базу из 1.5к таблиц переводили с mysql5.0 на постгресс

artemyarulin09:11:24

бедняга

oxgrouby09:11:30

почти закончил 😃

artemyarulin09:11:35

дай угадаю - тестов нету?:)

oxgrouby09:11:50

когда этот проект делался наверное и слова такого небыло

seryh10:11:14

1.5к таблиц? не думал что такие бывают

oxgrouby10:11:01

там типа сервис опросов, и на каждый новый опрос создаётся таблица

seryh10:11:33

тут впору заюзать Nosql какой, типа монги

oxgrouby10:11:07

её тогда небыло 😃

oxgrouby10:11:27

долго переделывать было бы, уж как есть пусть

oxgrouby10:11:43

я бы в эластик запихал

oxgrouby10:11:12

и на кложе переписал =\

oxgrouby10:11:41

только главная проблема - никто уже не знает полную функциональность

oxgrouby10:11:49

ТЗ написать будет столько же, сколько переписывать

oxgrouby10:11:53

по времени

dottedmag10:11:29

Не надо в эластик пихать ничего, что жалко терять.

rm10:11:54

и правда