Архив рубрики: О программировании

Service mesh, работающий через iptables

Воображаемое распределённое приложение подключённое к service mesh
Воображаемое распределённое приложение, подключённое к service mesh

В общем, в прошлый раз я упомянул, что другой, совместимый с Kubernetes сервис меш — Conduit, работает по иному принципу. В отличие от Linkerd, он не устанавливает прокси на каждую машину и не заставляет клиентов общаться с ним, задав переменную окружения http_proxy. Этот кадр мало того, что подключает клиентские сервисы к мешу по-одному, так ещё и совсем другим способом. Мне нравятся такие идеи, ставящие всё с ног на голову, так что я решил разобрать Conduit на части и посмотреть, что же там у него внутри. Читать далее Service mesh, работающий через iptables

Играем в service mesh

service mesh на хостНамедни я высматривал, с чем бы таким новым поиграться, и случайно наткнулся на штуку под названием service mesh. Непонятно, правда, как нормально перевести её на русский. Сервисная сеть? Сервисный меш? Служебный мышь? Но даже с учётом того, что концепция мешей вряд ли принесёт мир всему миру, задумка действительно интересная. Давайте смотреть. Читать далее Играем в service mesh

Про собеседование в Нью-Йорке

TImes Square

Продолжая тему поиска новой работы, я-таки слетал в Нью-Йорк на финальный этап собеседования. В тот самый инвестиционный стартап, про который упоминал раньше. Забесплатно, в хорошую погоду и на Манхэттен — всё, что так любо сердцу белорусского эмигранта. То есть мне. Читать далее Про собеседование в Нью-Йорке

Дебаггинг .NET Core приложения из командной строки в Linux

дебаггинг из командной строки

Миллион лет тому назад, ещё в университете, я делал курсовую по Unix на C++ и в какой-то момент мне пришлось дебаггить всё это третьекурсное великолепие из командной строки. Это было офигенно. И ощущение тотальной гикнутости происходящего, и поразительная эффективность процесса. Оказывается, в отсутствие UI отвлекаться больше не на что, и дебаггинг становится удивительно сфокусированным действом.

С тех пор как у .NET Framework появился кросс-платформенный брат близнец .NET Core, я всё выжидал, как бы это повторить давнишний подвиг ещё раз, но уже для C#, и недавно это-таки случилось. Не совсем гладко, но тем не менее. Давайте смотреть.

Читать далее Дебаггинг .NET Core приложения из командной строки в Linux

Отправляем проактивные сообщения с Microsoft Bot Framework

Futurama восстание роботов

Я тут подумал ещё раз о том боте, который вроде как должен будет вместо меня следить за ненадёжными тестами, и внезапно понял одну штуку. Все сценарии, с которыми я игрался, были так или иначе построены на инициируемых пользователем диалогах. Тот шлёт сообщение, бот отвечает, шлёт ещё одно, бот опять отвечает, и т. п. Но в моём случае, получив задание, бот будет работать молча, и, лишь заметив что-нибудь любопытное, должен начать беседу сам. Microsoft называет такие сценарии проактивными сообщениями, и вот как это можно провернуть на Microsoft Bot Framework. Читать далее Отправляем проактивные сообщения с Microsoft Bot Framework

Разбираемся с Microsoft Bot Framework

Маленький Бендер

Так как конторский CI/CD висит на мне, то натурально я заинтересован в том, чтобы билд оставался зелёным. Не то, чтобы я тут же бросался к каждому упавшему тесту, но за ненадёжными точно присматриваю.

Когда ветка master держится красной чересчур уж долго, вот какие штуки начинают творится с её упавшими тестами:

  1. Ищем историю падений теста в нашем Google BigQuery (select Name, Result, count(*) from TestResults_...).
  2. Если исторически тест вел себя в большей степени как генератор случайных результатов, и в меньшей степени как тест, создаём для него тикет.
  3. Добавляем тест в игнор и указываем в качестве причины вновь созданный тикет.
  4. Находим, кто же написал это непотребство (git blame) и вешаем кейс на автора.

В общем, очень просто. И ещё очень скучно. Тестов-то у нас много. Я бы автоматизировал это всё, но есть одно небольшое «но» — не всегда можно определить, кто же текущий «владелец» теста. Программисты же увольняются, рефакторят чужое, ну и ломают git’овскую историю по праздникам. Я думал заморочиться и выкатить какое-нибудь machine learning решение для этого, но то попахивает перебором. А вот написать бота выглядит как-то более выполнимо. Он бы мониторил тесты, отслеживал статистику, и когда ему что-то непонятно, вроде на кого повесить кейс, спрашивал бы меня.

Осталось только понять, как этих ботов делают. Читать далее Разбираемся с Microsoft Bot Framework

Взгляд пещерного человека на современный фронт-энд

современный фронт-энд

Возможно, это не совсем очевидно, особенно на фоне того, о чём я тут обычно пишу, но большую часть свой карьеры мой основной фокус был на… фронт-энде. Ага, JavaScript и товарищи. То есть я и другими вещами занимался, но святое дело скриптописания всегда было в центре. Правда, после переезда в Канаду его количество в моей жизни несколько поубавилось. Мне всё ещё перепадают эпизодические скриптовые задачи по веб проекту, который мы начали аж в 2009-м году, но в целом последние 2 года я работаю только с серверами. Читать далее Взгляд пещерного человека на современный фронт-энд

Файрвол веб-приложений

Наша компания немного помешана на интернет безопасности, поэтому, хотя оно и не совсем в сфере моих интересов, раз в пару недель приходится узнавать что-то новое по теме. Иногда случаются приколы, когда «что-то новое» — это идея, которой я пользовался достаточно давно, но теперь вот выяснилось, что у этой штуки есть собственное имя. В последний раз это был файрвол веб-приложений. Читать далее Файрвол веб-приложений

Краткое введение в etcd

etcd лого

Такое чувство, будто в последние месяцы я черезчур уж сильно сосредоточился на дебаггинге и .NET Core, и как-то подзабил на топик, ради которого весь этот блог и затевался — DevOps и распределённые приложения. Ошибку осознал, и сегодня мы посмотрим на что-нибудь более релевантное. Например, etcd.

Во время моего романа с распределёнными приложениями etcd всегда был где-то неподалёку. То он был альтернативой Consul, когда я разбирался с сервис-дискавери и управлением конфигурациями. То etcd всплыл как основное хранилище настроек кластера в Kubernetes. В общем, он везде. Так что я думаю, стоит разобраться, на что же это за зверь такой.

Читать далее Краткое введение в etcd

Вскрываем дамп NodeJS процесса с llnode

Научиться дебаггить дампы .net core процессов на Linux при помощи lldb и SOS плагина оказалось очень приятным опытом. Всё-таки «дамп процесса» звучит как нечто крайне низкоуровневое, а тут можно и на управляемые потоки посмотреть, и в памяти покопаться. В общем, приятное колдунство. И между прочим, lldb плагины были не только для .NET. Я видел ещё и для Python, и для Java.  Интересно, а есть ли что-нибудь похожее для NodeJS и JavaScript? Хе,

Of Course!

То есть «конечно», по-буржуйски. Есть плагин под названием llnode, который как раз с NodeJS и работает. Сегодня я не буду копать в нём слишком уж глубоко, всё-таки со скриптом в последнее время практически не работаю. Но посмотреть, как это вообще делается, интересно. Так что приступим. Читать далее Вскрываем дамп NodeJS процесса с llnode