Один дома и свидетельство на возвращение в Беларусь

Один дома

А мы едем в Беларусь! Вот прямо сейчас — опубликую пост, и буду вызывать такси. Это уже вторая поездка на Родину после переезда в Канаду в 2015-м, и, хотя она точно так же странно переживается внутри как и первая, есть несколько новых интересных моментов. Один с кодовым названием «канадец», а второй — «один дома». Начну, пожалуй, с него и издалека. Читать далее Один дома и свидетельство на возвращение в Беларусь

Отправляем .NET Core метрики в Graphite через StatsD

.NET Core StatsD

Уже прошло больше года с тех пор, как я подключил кусок JavaScript к collectd плагину и начал собирать данные мониторинга с нашей CI, чтобы потом хранить их в Graphite. И знаете что? Оно до сих пор работает. Даже JavaScript’овая часть. Но настали времена, когда мне нужно будет собирать метрики с .NET Core сервисов, и, чувствую, связкой JavaScript + collectd я уже не отделаюсь.

По идее, проблем быть не должно. В Graphite ведь можно отправлять данные хоть по TCP в виде текста, так что сервисы вполне могут заняться этим самостоятельно. Но можно сделать даже ещё проще. Читать далее Отправляем .NET Core метрики в Graphite через StatsD

Вторая мышиная война

Научный подход

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

Тестирование серверов и контейнеров с goss

тестирование серверовНедавно почитывал последний выпуск Technology Radar и нашёл вот какую интересную штуку в разделе новых техник программирования: «разработка контейнеров по TDD». Мдя. Ментально я пока ещё не могу провести соединительную линию между Докером и TDD, но инструменты, которые там упомянуты, оказались достаточно интересными.

Первый — serverspec. С его помощью можно прогонять локальные и удалённые сервера-контейнеры по набору BDD-подобных юнит-тестов. Тулза выглядит вполне зрелой и продуманной, поддерживает не только Linux, и всё было бы хорошо, если бы один огромный косяк (возможно, только для меня): serverspec написан на Ruby, и значит, что он абсолютно не совместим со стеком, в котором я обычно работаю.

Вторая тулза — goss — оставляет впечатление небольшого швейцарского ножика. Вроде и то немного умеет, и это. Обычно я к таким инструментам отношусь настороженно, но… goss какой-то странно прикольный, так что на него хочется посмотреть поближе. Читать далее Тестирование серверов и контейнеров с goss

Про канадские пенсии

Канадские пенсии

Среди обилия плюшек, которыми нас подкармливают на конторе, с начала этого года появилась ещё одна: на каждый доллар, положенный в мою пенсионную копилку, контора доложит ещё один от себя. До определённого предела, конечно, но и предел такой вполне ничего.

Так делают не только наши. Хватает и американских, и местных канадских контор, в которых подпитка пролетарского пенсионного фонда — один из основных бенефитов. Единственное, что меня смущает, так это то, что я вообще не представляю, как работают пенсии и старость в Канаде. Нужно ли откладывать на неё? Хватает ли пенсии на жизнь, или стоит заранее озаботиться огородиком у хайвея? И вообще, в 34 уже стоит задумываться об этом, или можно отложить до полтинника?

Знающие люди говорят, что озаботиться стоит, и чем раньше, тем выгоднее, поэтому я на всякий случай полез в гугл. А заодно посмотрел, как вообще отстоят с этим дела в Беларуси. Вдруг зря уезжал. Читать далее Про канадские пенсии

Профайлинг .NET Core приложения в Linux

flamegraphА тем временем я продолжаю разбираться в том, как дебагить .NET Core приложения в Linux. Теперь я уже более или менее представляю, как анализировать проблемы с памятью, но таких на самом деле у нас не так уж и много. Самая распространённая проблема — загрузка процессора под 100%, и тогда очень, очень хочется понять, чем же это приложение таким занимается.

На Windows я первым делом лезу в логи и трейс-файлы. Когда их не хватает, приходит очередь PerfView, который с огромной частотой сэмплирует приложение, и тогда уже можно посмотреть, сколько потоков сейчас запущено, чем они занимаются, какие самые горячие места, и т. п.

Логи и трейсы, разумеется, существуют и на Linux, но мне было интересно, можно ли на нём профайлить .NET Core примерно так же, как и на Windows. Как оказалось, инструментов почти куча, но применительно к .NET Core основными выглядят три: утилиты perf, lttng  и perfcollect. Вот на них мы сейчас и посмотрим. Читать далее Профайлинг .NET Core приложения в Linux

Мой мини-рейд по очень классическим книгам

Клинопись

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

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

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

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

Большую часть прошлой недели мне пришлось экспериментировать с виндовым .NET проектом под Linux и в Kubernetes. Это на самом деле не такая уж и дурка, как кажется поначалу. Проект мы заранее перевели на кросс-платформенный .NET Core, я отловил практически все проблемы, которые вплыли в никсе под контейнерами, и по итогу в K8s проект действительно заработал. Почти.

На практике всё равно остались мелкие неприятности. Эпизодически выскакивали всякие StackOverflow (хорошо хоть не segmentation faults), да и мой дебагерский виндовый опыт оказался практически бесполезным на никсах.

Например, практически сразу мы заметили, что, запускаясь под контейнером, проект с ходу отъедал 300 мегабайт физической памяти и около 2-х гигов виртуальной. В виндовом продакшене, конечно, под нагрузкой бывало и на порядки больше, но вот тут, на Linux, в демо-режиме, это много, мало, или вообще как? Как это проверить в принципе? На Винде я бы сделал дамп процесса, запустил Visual Studio или WinDBG и гуглил, что теперь делать дальше. А что тут?

Как выяснилось, гугл под Linux тоже работает, так что через пару часов медитации на монитор я выучил несколько интересных штук, о которых и хотел бы рассказать сегодня. Читать далее Дебаггинг памяти .NET Core приложения в Linux

Назад в детский сад или Скайп в смертность

José Benlliure y Gil "La Barca de Caronte"
José Benlliure y Gil «La Barca de Caronte» (и Скайп)

В шесть лет, когда меня отправили в школу, первое время я всё норовил вернуться назад в детский сад. Не то, чтобы насовсем, и разговор вида «Отец, мать, меня не устраивают подобные перемены» никогда не состоялся, но всё же я регулярно перелазил через забор своей мини-альма-матер и гонял с бывшими корешами с любимой горки.

С её-то заведующая садиком меня как-то и сняла. Сняла, и очень убедительно попросила никогда, никогда больше не возвращаться. Возможно, матом. И что, блин характерно, похожая история произошла опять. Почти тридцать лет спустя (выкуси, Д’Артаньян). Читать далее Назад в детский сад или Скайп в смертность

Однократные задачи в Kubernetes

Задачи в KubernetesПока что все примеры, что я делал для Docker Swarm и Kubernetes постов, строились вокруг какого-нибудь сервиса: веб-сервера, очереди сообщений или шины сообщений. В принципе, оно и не удивительно, весь тот же Docker Swarm построен вокруг концепции сервисов. Да что там Swarm, сами «микро-сервисы», из-за которых мы контейнеры в облака забрасываем, ни о чём не говорят?

Но не всё есть «сервис» в облаках. Есть и эпизодические задачи: рутинное обслуживание, запланированные задачи, конечные вычислительные таски — всё, у чего есть начало и вполне определённый конец.

Читать далее Однократные задачи в Kubernetes

Размышления об эмиграции, жизни, и вообще