# Понедельник 17 твитов
Всем привет! Эту неделю с вами буду я (@smira), Go, проектирование, Cassandra, микросервисы, нагрузка, удаленная работа, … спрашивайте!
16:58Очень неплохой disk queue для Go (по сути channel с буфером на диске): github.com/nsqio/nsq/blob…
Только его надо “выпилить”
17:10Кто-нибудь использует txZMQ? Есть pull request, по поводу которого я не знаю, как поступить: github.com/smira/txZMQ/pu…
17:23Кто как больше всего данных потерял безвозвратно в production? …
17:35… Моя история: удалил всю музыку на букву M (MP3-сайт) случайно нажав не ту клавишу в Midnight Commander (давно это было!)
17:36@backendsecret затирал систему сборки основного продукта кривым бэкапом 4месячной давности из-за 5 строчек кривого кода в ней.17:38
… еще вспомнил: снес EC2-инстанс вместе с volume, автоматизация cработала на отлично :(
17:39Не использовал отладчик уже больше 10 лет. Отладчик почти бесполезен для backendов. Только printf :)
18:15. @krasavtsev я сейчас работаю в Virtustream (что тоже часть EMC), у нас порядка 200 человек работают удаленно
18:33. @krasavtsev до EMC я работал в mc2soft, делал курсы и мастер-классы, Qik и цепочка слияний Skype, Microsoft, и еще много чего древнего
18:34@backendsecret было когда девы соседнего проекта сделали drop table. Хорошо что я бекапил и их базу тоже :)19:19
Что бы вы выбрали при прочих равных: удаленную работу или работу в офисе? удаленка - retweet, в офисе - like
20:54@Shiroginne отличный дебаггер devle @backendsecret
github.com/derekparker/de… twitter.com/dlagoza/status…
21:04Почему надо уметь не только код писать, но и уметь общаться в команде, в том числе излагать свои мысли понятно: hintjens.com/blog:120
21:18@backendsecret о да! коммуникациии это очень важно!21:24
Что бы вы выбрали при прочих равных: удаленную работу или работу в офисе? удаленка - retweet, в офисе - like
Я работаю удаленно вот уже 2.5 года в очень сильной команде. Это - моя лучшая работа. twitter.com/backendsecret/…
21:41@backendsecret в целом свобода лучше, чем несвобода (© @MedvedevRussia), конечно
про удаленную работу :) twitter.com/chudesnov/stat…
22:56# Вторник 13 твитов
Поговорим про Cassandra? Cassandra очень сырая, куча багов. Но ни разу не потеряли данные. Скорость работы + масштабирование - это круто!
19:14Если твиттер про secretы разработки backend, надо раскрывать секреты?
19:16Секрет №1: разработка невозможна без тестов. Я делаю функциональные тесты на (почти) весь код, который я пишу. Unit-тесты для алгоритмов
20:16@backendsecret Похоже, мы понимаем друг-друга в отношении тестов.20:21
Из тех кто работает удаленно, есть кто систематизировал свое питание? как? @jsunderhood @backendsecret
Жена дома очень помогает в этом! twitter.com/iam_yev/status…
21:31@backendsecret по сравнению с другими DQL, монгой например, где ногу сломаешь агрегациями
По сути CQL - это минимальная обработка сырых данных, что разумно, мне кажется… twitter.com/raxpost/status…
21:32Секрет №2: мониторинг и агрегированные логи. Сервис без мониторинга/логов - это как искать черную кошку в темной комнате.
21:35. @iam_yev если не жена дома, я бы выбрал сервис по доставке ингредиентов для еды с рецептами или заказывал бы обед домой или шел в ресторан
21:48. @iam_yev я бы попробовал что-то типа chefmarket.ru
21:50Секрет №3: простота кода. Если код получился сложным, попробуйте его переписать или изменить архитектуру. Чаще всего удается упростить.
22:06Простота и тесты экономят время… я уверен! twitter.com/dcromster/stat…
22:09. @krasavtsev в какой компании нет ни одной вакансии? ;)
23:23@backendsecret virtustream.com
Вот вакансия: hh.ru/vacancy/168989…
twitter.com/krasavtsev/sta…
# Среда 31 твит
. @krasavtsev дома работаю в гостиной, иногда туда кто-то заходит… наушники и концентрация помогает. в офисе больше отвлекают имхо
0:18Секрет №4: автоматизация. Если у вас рутинная задача, вы что-то забыли автоматизировать.
1:01. @YuriKushch время работы не трекается, Slack, GitHub, Skype, Google Hangouts, телефон, …
13:51Если у вас нет платформы для разворачивания сервисов, не пытайтесь делать микросервисы. Поговорим про платформу?
13:52. @ruxeg service discovery, автоматический перезапуск при сбоях, легкость запуска еще одного сервиса, управление ресурсами… хм… ansible?
13:57Ansible, Chef, Puppet, SaltStack - это не платформа, это потенциальный инструмент для её построения
13:59. @strizhechenko @ruxeg supervisord может перезапустить сервис, но не может откатить на прежнюю версию, например (в случае выкладывания)
14:55. @Fardokbk в ansible можно попробовать что-то встроить, но без состояния всего кластера тяжело принимать решения, все-таки не для ansible
14:56. @ztaaz функции платформы: запуск и отказоустойчивость сервисов (в рамках кластера), service discovery, health check, …
14:57. @freiksenet_ru @ztaaz виртуала может “сломаться” точно также
15:05Наша платформа: Mesos + Marathon + Consul + Calico (все немного допиленное), плюс другие Mesos framework’и. И куча автоматизации вокруг…
15:10Для сервисов без персистентности (backendы) - Marathon, для БД и подобного - нужен соответствующий Mesos framework
15:13. @Fardokbk я не про экземпляры сервиса, а про разные сервисы вообще, конечно, может быть и больше
15:17@dvbobrov Ничего страшного нет в поломке, есль есть redundancy. Единственное важное это как быстро можно поднять новое.@ztaaz @backendsecret15:18
@ruxeg @backendsecret мы подошли к этому чуть более основательно medium.com/@x_cray/how-we…
Спасибо, интересно. Хотя у нас не менее основательно, вместо HAProxy Calico сути twitter.com/x_cray/status/…
15:58. @x_cray Calico + Consul DNS + health check упрощает все до безобразия. my-app.service.consul резолвится в round-robin IP живых instance
16:12. @kryakryak @x_cray c IPV6 вообще все плохо всегда и везде…
17:04. @sfilatov платформа разворачивается через saltstack orchestration, что само по себе очень круто )
17:24Я довольно долго был PHP-разработчиком. Не использовал уже PHP лет 7 или 8, как там дела в PHP мире?
17:51@backendsecret а #mesosphere и dc/os смотрели?
Смотрели, но не нашли интересными для нас. twitter.com/fardokbk/statu…
18:14. @Fardokbk @sfilatov контейнерная платформа (Mesos + Marathon) не поддерживает персистентные данные. Для Kafka/Cassandra нужен framework
18:16. @nordicdyno_ru посмотреть наш фреймворк пока негде, к сожалению, но все компоненты открытые
18:27@backendsecret Два лагеря — Plain Old PHP и натягивание дизайна на CMS; второй — строгая типизация, AOP, тесты, инспекции, CI, DevOps...18:31
@pkorobeinikov @backendsecret всё равно, ООП в php - джёпа, впрочем, как и в js. Как очень несмешная комедия.22:19
. @nordicdyno_ru Mesos frameworkов куча разного качества, этот должен быть хороший - github.com/mesos/kafka
22:19# Четверг 18 твитов
. @notxcain @nordicdyno_ru мы пока не развернули Cassandra на Mesos, так что не буду советовать, что еще не проверили
0:16Секрет №5: fail fast and hard. Не надо маскировать ошибки. 500-я, stacktrace, Sentry/Airbrake/…
0:17Секрет №5 (продолжение). Только видимые ошибки будут исправлены. Невидимые приведут к краху всей системы позже.
0:18. @krasavtsev английский всегда был языком общения с 2008 года, по крайней мере вторым языком. Так что только опыт
20:17. @strobegen @Fardokbk @sfilatov persistent volumes не включает master-slave переключение, кворум и подобную сложную логику
20:18. @strobegen @x_cray Calico - это IP для каждого container. Это устраняет возню с прокси и отображением портов. Плюс firewall для профилей
20:19Любая отказоустойчивая система полностью падает когда-нибудь. Отказоустойчивую систему быстрее восстановить. (Проверено сегодня)
20:38@backendsecret у нас отлично, язык взрослый, можно писать без говнокода большие проекты
Про PHP! twitter.com/dypa/status/73…
22:01Расскажите, что новенького в области мониторинга? Крутой alerting? Динамические метрики? Push или pull?
22:03@backendsecret @dypa не понимаю, когда люди на язык жалуются. Были бы мозги на месте. И руки
Согласен на 200%. Более того, дело чаще всего в руках (в голове), а технологию/язык легко освоить. twitter.com/_this_is_ak_/s…
22:19. @Fardokbk @strobegen @x_cray нужно что-то, что может иметь IP-адрес
22:22. @Fardokbk @strobegen @x_cray попробуйте запустить два сервиса на одном порту на одной машине…
22:43. @Fardokbk @strobegen @x_cray ну попробуйте потом к этому сервису обращаться и поддерживать это отображение… дело в простоте использования
22:45. @Fardokbk @strobegen @x_cray можно reverse-proxy, если трафик маленький. когда гигабиты в секунду, уже не получится
22:46. @Fardokbk @strobegen @x_cray как я уже сказал, дело в простоте.. можно плодить прокси отказоустойчивые, но им тоже нужен IP и порт, …
22:46. @x_cray @Fardokbk @strobegen все равно либо proxy, либо application-level round-robin, первое ограничено, второе крайне неудобно
22:48. @Fardokbk @x_cray @strobegen не пробовал 500 docker контейнеров на одной машине… пока не вижу зачем…
22:57# Пятница 17 твитов
@backendsecret только вот на каждый запрос по прежнему весь рантайм перезагружается...0:15
@backendsecret пейсать на пыхе говнокод - сплошное удовольствие, берешь и пишешь0:16
. @POS_troi @Bashnya_est иногда хочется говнокод написать на любом языке. в 50% случае это превращается в рабочую систему :)
0:27@backendsecret и главное что работает десятилетиями :) @Bashnya_est0:30
@backendsecret мне сейчас досталась сетка на 15 городов, у них юзается програмулина на MUMPS, 30 лет назад разрабатывалась. Оно работает:)0:40
@_this_is_ak_ @mktoid @backendsecret @dypa язык определяет сознание :)16:29
. @strobegen формально один кусок RAM выделить нельзя, но по сути можно хакнуть… я бы не стал
16:30@raxpost @olegzeee @mktoid @backendsecret @dypa практики и подходы, которые появляются не из мозгов лучше не применять 😂16:37
. @strobegen я бы так не сказал… экономия есть все-таки, если сервис наестся памяти, OOM его прибьет, а Marathon перезапустит )
16:47Пятница! О чем поговорим?
17:09. @raxpost @_this_is_ak_ @olegzeee @mktoid @dypa языки как и хорошие проекты появляются естественно для решения реальных проблем
17:12@backendsecret про сорта пива!
Окей! Люблю лагер или темное, классику и вплоть до стаутов. Вишневое хорошее тоже офиегенно! twitter.com/mr_the/status/…
17:14@backendsecret Расскажи за cross-дц сетап мезоса, например. Как я понимаю, придется сетапить по кластеру в каждом?
Да, между ДЦ почти ничего хорошо не работает. Так что свой кластер в каждом ДЦ. twitter.com/ex_sample/stat…
17:17@backendsecret Расскажи за cross-дц сетап мезоса, например. Как я понимаю, придется сетапить по кластеру в каждом?
Ну и еще общая сеть между ДЦ и DNS форвардинг, так что приложения на платформе могут общаться друг с другом. twitter.com/ex_sample/stat…
17:18@backendsecret Получается нужна какая-то абстракция сверху.
У нас есть тулза, которая синхронизирует (деплоит) приложения, в том числе в нескольких ДЦ twitter.com/ex_sample/stat…
17:22Секрет №6. Надо уметь объяснять, как работает код. Диаграммы, презентации, документация, доклады, … Нужно распределять знание!
17:57@backendsecret проверенный и удобный формат — скринкасты для служебного пользования.17:59
# Суббота 3 твита
. @xnopso Consul для внутренного DNS, не наружу обычно, для service discovery внутри кластера (user.service.consul)
20:22Есть ли Continuous Integration в вашем проекте? (Jenkins, Hudson, Travis CI, TeamCity и т.п.) (от @postrgesmen)
20:23. @xnopso для этого интегрируется health check (Consul тоже умеет), тогда будет убирать из DNS “мертвые” IP
20:53# Воскресенье 5 твитов
@backendsecret CI-секрет №5: Воспроизводимые окружения: версии пакетов на продакшине и у разработчиков должны совпадать до миллибитов.22:27
@backendsecret CI-секрет №1: Быстрая обратная связь: вы должны узнать о сломавшейся сборке немедленно через почту, IDE, джаббер, или #slack.22:27
@backendsecret CI-секрет №4: Сборка должна ломаться не только от тестов. Изменение трендов метрик в худшую сторону ломают сборку.22:27
Всем огромное спасибо, это была очень интересная неделя! Ну и до новых встреч!
22:28# Ссылки
github.com
- https://github.com/nsqio/nsq/blob/master/nsqd/diskqueue.go
- https://github.com/smira/txZMQ/pull/66#issuecomment-220671881
- https://github.com/derekparker/delve
- https://github.com/mesos/kafka
- https://github.com/projectcalico/calico-containers/blob/master/docs/DockerContainerLifecycle.md