smira

23 мая 2016, Worldwide

# Понедельник 17 твитов

Всем привет! Эту неделю с вами буду я (@smira), Go, проектирование, Cassandra, микросервисы, нагрузка, удаленная работа, … спрашивайте!

13:58

Очень неплохой disk queue для Go (по сути channel с буфером на диске): github.com/nsqio/nsq/blob…

Только его надо “выпилить”

14:10

Кто-нибудь использует txZMQ? Есть pull request, по поводу которого я не знаю, как поступить: github.com/smira/txZMQ/pu…

14:23

Кто как больше всего данных потерял безвозвратно в production? …

14:35

… Моя история: удалил всю музыку на букву M (MP3-сайт) случайно нажав не ту клавишу в Midnight Commander (давно это было!)

14:36
@backendsecret затирал систему сборки основного продукта кривым бэкапом 4месячной давности из-за 5 строчек кривого кода в ней.
14:38

… еще вспомнил: снес EC2-инстанс вместе с volume, автоматизация cработала на отлично :(

14:39

Не использовал отладчик уже больше 10 лет. Отладчик почти бесполезен для backendов. Только printf :)

15:15

. @krasavtsev я сейчас работаю в Virtustream (что тоже часть EMC), у нас порядка 200 человек работают удаленно

15:33

. @krasavtsev до EMC я работал в mc2soft, делал курсы и мастер-классы, Qik и цепочка слияний Skype, Microsoft, и еще много чего древнего

15:34
@backendsecret было когда девы соседнего проекта сделали drop table. Хорошо что я бекапил и их базу тоже :)
16:19

Что бы вы выбрали при прочих равных: удаленную работу или работу в офисе? удаленка - retweet, в офисе - like

17:54

Почему надо уметь не только код писать, но и уметь общаться в команде, в том числе излагать свои мысли понятно: hintjens.com/blog:120

18:18
@backendsecret о да! коммуникациии это очень важно!
18:24
Что бы вы выбрали при прочих равных: удаленную работу или работу в офисе? удаленка - retweet, в офисе - like

Я работаю удаленно вот уже 2.5 года в очень сильной команде. Это - моя лучшая работа. twitter.com/backendsecret/…

18:41
@backendsecret в целом свобода лучше, чем несвобода (© @MedvedevRussia), конечно

про удаленную работу :) twitter.com/chudesnov/stat…

19:56

# Вторник 15 твитов

Поговорим про Cassandra? Cassandra очень сырая, куча багов. Но ни разу не потеряли данные. Скорость работы + масштабирование - это круто!

16:14

Если твиттер про secretы разработки backend, надо раскрывать секреты?

16:16

Секрет №1: разработка невозможна без тестов. Я делаю функциональные тесты на (почти) весь код, который я пишу. Unit-тесты для алгоритмов

17:16
@backendsecret Похоже, мы понимаем друг-друга в отношении тестов.
17:21
Из тех кто работает удаленно, есть кто систематизировал свое питание? как? @jsunderhood @backendsecret

Жена дома очень помогает в этом! twitter.com/iam_yev/status…

18:31
@backendsecret по сравнению с другими DQL, монгой например, где ногу сломаешь агрегациями

По сути CQL - это минимальная обработка сырых данных, что разумно, мне кажется… twitter.com/raxpost/status…

18:32

Секрет №2: мониторинг и агрегированные логи. Сервис без мониторинга/логов - это как искать черную кошку в темной комнате.

18:35

. @iam_yev если не жена дома, я бы выбрал сервис по доставке ингредиентов для еды с рецептами или заказывал бы обед домой или шел в ресторан

18:48

. @iam_yev я бы попробовал что-то типа chefmarket.ru

18:50

Секрет №3: простота кода. Если код получился сложным, попробуйте его переписать или изменить архитектуру. Чаще всего удается упростить.

19:06

Простота и тесты экономят время… я уверен! twitter.com/dcromster/stat…

19:09

. @krasavtsev в какой компании нет ни одной вакансии? ;)

20:23

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

21:18

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

22:01

# Среда 32 твита

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

10:51

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

10:52

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

10:57

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

10:59

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

10:59

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

11:54

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

11:55

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

11:56

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

11:57

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

11:57

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

12:02

. @freiksenet_ru @ztaaz виртуала может “сломаться” точно также

12:05

Наша платформа: Mesos + Marathon + Consul + Calico (все немного допиленное), плюс другие Mesos framework’и. И куча автоматизации вокруг…

12:10

Для сервисов без персистентности (backendы) - Marathon, для БД и подобного - нужен соответствующий Mesos framework

12:13

. @Fardokbk я не про экземпляры сервиса, а про разные сервисы вообще, конечно, может быть и больше

12:17
@dvbobrov Ничего страшного нет в поломке, есль есть redundancy. Единственное важное это как быстро можно поднять новое.@ztaaz @backendsecret
12:18
@ruxeg @backendsecret мы подошли к этому чуть более основательно medium.com/@x_cray/how-we…

Спасибо, интересно. Хотя у нас не менее основательно, вместо HAProxy Calico сути twitter.com/x_cray/status/…

12:58

. @x_cray Calico + Consul DNS + health check упрощает все до безобразия. my-app.service.consul резолвится в round-robin IP живых instance

13:12

. @kryakryak @x_cray c IPV6 вообще все плохо всегда и везде…

14:04

. @sfilatov платформа разворачивается через saltstack orchestration, что само по себе очень круто )

14:24

Я довольно долго был PHP-разработчиком. Не использовал уже PHP лет 7 или 8, как там дела в PHP мире?

14:51

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

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

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

15:14

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

15:16

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

15:20

. @nordicdyno_ru посмотреть наш фреймворк пока негде, к сожалению, но все компоненты открытые

15:27
@backendsecret Два лагеря — Plain Old PHP и натягивание дизайна на CMS; второй — строгая типизация, AOP, тесты, инспекции, CI, DevOps...
15:31
@pkorobeinikov @backendsecret всё равно, ООП в php - джёпа, впрочем, как и в js. Как очень несмешная комедия.
19:19

. @nordicdyno_ru Mesos frameworkов куча разного качества, этот должен быть хороший - github.com/mesos/kafka

19:19

. @notxcain @nordicdyno_ru мы пока не развернули Cassandra на Mesos, так что не буду советовать, что еще не проверили

21:16

Секрет №5: fail fast and hard. Не надо маскировать ошибки. 500-я, stacktrace, Sentry/Airbrake/…

21:17

Секрет №5 (продолжение). Только видимые ошибки будут исправлены. Невидимые приведут к краху всей системы позже.

21:18

# Четверг 20 твитов

. @krasavtsev английский всегда был языком общения с 2008 года, по крайней мере вторым языком. Так что только опыт

17:17

. @strobegen @Fardokbk @sfilatov persistent volumes не включает master-slave переключение, кворум и подобную сложную логику

17:18

. @strobegen @x_cray Calico - это IP для каждого container. Это устраняет возню с прокси и отображением портов. Плюс firewall для профилей

17:19

Любая отказоустойчивая система полностью падает когда-нибудь. Отказоустойчивую систему быстрее восстановить. (Проверено сегодня)

17:38
@backendsecret у нас отлично, язык взрослый, можно писать без говнокода большие проекты

Про PHP! twitter.com/dypa/status/73…

19:01

Расскажите, что новенького в области мониторинга? Крутой alerting? Динамические метрики? Push или pull?

19:03
@backendsecret @dypa не понимаю, когда люди на язык жалуются. Были бы мозги на месте. И руки

Согласен на 200%. Более того, дело чаще всего в руках (в голове), а технологию/язык легко освоить. twitter.com/_this_is_ak_/s…

19:19

. @Fardokbk @strobegen @x_cray нужно что-то, что может иметь IP-адрес

19:22

. @Fardokbk @strobegen @x_cray попробуйте запустить два сервиса на одном порту на одной машине…

19:43

. @Fardokbk @strobegen @x_cray ну попробуйте потом к этому сервису обращаться и поддерживать это отображение… дело в простоте использования

19:45

. @Fardokbk @strobegen @x_cray можно reverse-proxy, если трафик маленький. когда гигабиты в секунду, уже не получится

19:46

. @Fardokbk @strobegen @x_cray как я уже сказал, дело в простоте.. можно плодить прокси отказоустойчивые, но им тоже нужен IP и порт, …

19:46

. @x_cray @Fardokbk @strobegen все равно либо proxy, либо application-level round-robin, первое ограничено, второе крайне неудобно

19:48

. @Fardokbk @x_cray @strobegen не пробовал 500 docker контейнеров на одной машине… пока не вижу зачем…

19:57
@backendsecret только вот на каждый запрос по прежнему весь рантайм перезагружается...
21:15
@backendsecret пейсать на пыхе говнокод - сплошное удовольствие, берешь и пишешь
21:16

. @POS_troi @Bashnya_est иногда хочется говнокод написать на любом языке. в 50% случае это превращается в рабочую систему :)

21:27
@backendsecret и главное что работает десятилетиями :) @Bashnya_est
21:30
@backendsecret мне сейчас досталась сетка на 15 городов, у них юзается програмулина на MUMPS, 30 лет назад разрабатывалась. Оно работает:)
21:40

# Пятница 12 твитов

@_this_is_ak_ @mktoid @backendsecret @dypa язык определяет сознание :)
13:29

. @strobegen формально один кусок RAM выделить нельзя, но по сути можно хакнуть… я бы не стал

13:30
@raxpost @olegzeee @mktoid @backendsecret @dypa практики и подходы, которые появляются не из мозгов лучше не применять 😂
13:37

. @strobegen я бы так не сказал… экономия есть все-таки, если сервис наестся памяти, OOM его прибьет, а Marathon перезапустит )

13:47

Пятница! О чем поговорим?

14:09

. @raxpost @_this_is_ak_ @olegzeee @mktoid @dypa языки как и хорошие проекты появляются естественно для решения реальных проблем

14:12
@backendsecret про сорта пива!

Окей! Люблю лагер или темное, классику и вплоть до стаутов. Вишневое хорошее тоже офиегенно! twitter.com/mr_the/status/…

14:14
@backendsecret Расскажи за cross-дц сетап мезоса, например. Как я понимаю, придется сетапить по кластеру в каждом?

Да, между ДЦ почти ничего хорошо не работает. Так что свой кластер в каждом ДЦ. twitter.com/ex_sample/stat…

14:17
@backendsecret Расскажи за cross-дц сетап мезоса, например. Как я понимаю, придется сетапить по кластеру в каждом?

Ну и еще общая сеть между ДЦ и DNS форвардинг, так что приложения на платформе могут общаться друг с другом. twitter.com/ex_sample/stat…

14:18
@backendsecret Получается нужна какая-то абстракция сверху.

У нас есть тулза, которая синхронизирует (деплоит) приложения, в том числе в нескольких ДЦ twitter.com/ex_sample/stat…

14:22

Секрет №6. Надо уметь объяснять, как работает код. Диаграммы, презентации, документация, доклады, … Нужно распределять знание!

14:57
@backendsecret проверенный и удобный формат — скринкасты для служебного пользования.
14:59

# Суббота 3 твита

. @xnopso Consul для внутренного DNS, не наружу обычно, для service discovery внутри кластера (user.service.consul)

17:22

Есть ли Continuous Integration в вашем проекте? (Jenkins, Hudson, Travis CI, TeamCity и т.п.) (от @postrgesmen)

17:23

. @xnopso для этого интегрируется health check (Consul тоже умеет), тогда будет убирать из DNS “мертвые” IP

17:53

# Воскресенье 5 твитов

@backendsecret CI-секрет №5: Воспроизводимые окружения: версии пакетов на продакшине и у разработчиков должны совпадать до миллибитов.
19:27
@backendsecret CI-секрет №1: Быстрая обратная связь: вы должны узнать о сломавшейся сборке немедленно через почту, IDE, джаббер, или #slack.
19:27
@backendsecret CI-секрет №4: Сборка должна ломаться не только от тестов. Изменение трендов метрик в худшую сторону ломают сборку.
19:27

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

19:28

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

19:28

github.com

other