smira

23 мая 2016, Worldwide

# Понедельник 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

Почему надо уметь не только код писать, но и уметь общаться в команде, в том числе излагать свои мысли понятно: 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

# Среда 31 твит

. @krasavtsev дома работаю в гостиной, иногда туда кто-то заходит… наушники и концентрация помогает. в офисе больше отвлекают имхо

0:18

Секрет №4: автоматизация. Если у вас рутинная задача, вы что-то забыли автоматизировать.

1:01

. @YuriKushch время работы не трекается, Slack, GitHub, Skype, Google Hangouts, телефон, …

13:51

Если у вас нет платформы для разворачивания сервисов, не пытайтесь делать микросервисы. Поговорим про платформу?

13:52

. @ruxeg service discovery, автоматический перезапуск при сбоях, легкость запуска еще одного сервиса, управление ресурсами… хм… ansible?

13:57

Ansible, Chef, Puppet, SaltStack - это не платформа, это потенциальный инструмент для её построения

13:59

. @ruxeg supervisord не решает проблемы отказа сервера целиком

13:59

. @ruxeg я расскажу чуть-чуть о нашей платформе, мы используем Consul для service discovery

14:54

. @strizhechenko @ruxeg supervisord может перезапустить сервис, но не может откатить на прежнюю версию, например (в случае выкладывания)

14:55

. @Fardokbk в ansible можно попробовать что-то встроить, но без состояния всего кластера тяжело принимать решения, все-таки не для ansible

14:56

. @ztaaz функции платформы: запуск и отказоустойчивость сервисов (в рамках кластера), service discovery, health check, …

14:57

…. @ztaaz хранение текущей конфигурации, управление пулом IP адресов, безопасность, …

14:57

. @ztaaz сломался сервер… как сервис сам себя починит? или сгорела сетевая карта?

15:02

. @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 @backendsecret
15: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

. @Fardokbk @x_cray у нас в Consul пишет fork от mesos-dns

18:01
@backendsecret а #mesosphere и dc/os смотрели?

Смотрели, но не нашли интересными для нас. twitter.com/fardokbk/statu…

18:14

. @Fardokbk @sfilatov контейнерная платформа (Mesos + Marathon) не поддерживает персистентные данные. Для Kafka/Cassandra нужен framework

18:16

. @Fardokbk @sfilatov конфигурация в Consul KV, сам контейнер в registry, зачем файлы??? :)

18:20

. @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_est
0: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

. @Engigeer я скорее про анализ данных и появление alertов в неочевидных ситуациях

22:28

Всем огромное спасибо, это была очень интересная неделя! Ну и до новых встреч!

22:28

github.com

other