Как фитнесс трекер и Дуров заставили меня побежать

monty-python-run-away

В школе я никогда не был бегуном. Ну вообще никак. Сто метров пробежать мог, конечно, без проблем, но какие-нибудь полтора-два километра… Бегали мы вокруг школы, и обычно ко второму кругу я выплёвывал остаток лёгких, вывешивал язык на плечо, и смирялся, что не моё это.

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

Что же всё-таки такое kubernetes

kubernetesKubernetes (он же K8s) — это ещё одна инструментина для управления контейнерами в кластере. Она решает, в какой части кластера контейнер будет запущен, следит, чтобы его запрошенная конфигурация («запущен», «пять реплик») выполнялась, чтобы у контейнера была сеть и айпишка, настроен доступ извне (если нужно), обновления приходили в нужном порядке, и т.п.

Изначально Kubernetes разрабатывался Гуглом, но те передали его в open source, так что теперь K8s свободен, как бесплатное пиво. Читать далее Что же всё-таки такое kubernetes

Два года канадской эмиграции

The Lumberjack Song

Я тут с удивлением обнаружил, что в Канаде мы живём уже 2 года. Можно было бы сказать «как быстро летит время…», но это сильно попахивает старостью, поэтому просто расскажу, как оно.

Читать далее Два года канадской эмиграции

Проверка состояния контейнера в Docker

Проверка состояния контейнераКаким-то непонятным образом я пропустил новость о том, что начиная с версии 1.12 Docker контейнерам можно навешивать проверку состояния. И речь тут идёт не о проверке, запущен ли ещё контейнер, а о том, делает ли он всё ещё то, ради чего создавался. Например, мы можем проверять, отзывается ли веб-сервер внутри контейнера на входящие запросы, вменяемое ли количество памяти он использует, встречаются ли в логах фразы вроде «epic fail!!!»… Много чего можно проверить, ведь проверка делается через запуск какого-нибудь стороннего скрипта или приложения, а её результат зависит от кода, с которым это приложение завершилось.

В обычном режиме контейнер, последние несколько проверок которого оказались «так себе», получит атрибут «unhealthy», в Docker events появится соответствующая запись (health_status), и на этом история закончится. Но если речь идёт о Swarm режиме, то проблемный контейнер без лишних разговоров усыпят и автоматически запустят новый. Вот так жестоко. Читать далее Проверка состояния контейнера в Docker

Моё мутное танго с управленческой карьерой

танго

На младших курсах БГУИР, во времена, когда мы ещё были маленькими желторотыми программистиками, курнувшие жизни аспиранты (лет на пять старше нас) любили повторять: «Господа студенты! Если к тридцати годам вы не стали менеджерами, то где-то в этой жизни вы свернули не туда». А мы слушали и запоминали. Всё-таки ребята аж по четыре языка программирования знают. Плохого точно не посоветуют.

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

docker-compose для Swarm: docker stack

docker stack

Допустим, вы уже создали свой новенький Docker кластер и морально готовы заполонить своими приложениями. Такой вопрос: как именно вы будете это делать? Не руками ведь, через docker service create, правда? Кластер же большой, а приложение, которому он потребовался, явно будет состоять не из одного сервиса.

В обычном Docker была такая прекрасная штука как docker-compose, с которой можно было описать все контейнеры и их параметры в одном docker-compose.yml файле и потом запустить всё одним махом через docker-compose up. Вот бы можно было сделать так и в кластере.

Оказывается, можно. Читать далее docker-compose для Swarm: docker stack

Вацлав Смил и «Создание двадцатого века»

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

Мужику 74 года. Канадец (ха!). Лыс (муа-ха-ха!). Успел написать 37 книг и жалеет, что возраст не позволит написать ещё 77. В год он прочитывает аж 80 книг и вообще — любимец Билла Гейтса. В общем, я морально готовлюсь к тому, что мне понадобится новая книжная полка. И скупить Смила, и как-то приблизиться к восьмидесяти фолиантам в год. Читать далее Вацлав Смил и «Создание двадцатого века»

Краткое введение в Docker Swarm mode

docker swarmDocker — прекрасен. С ним можно упаковать приложение по контейнерам, забросить их на случайный хост, и всё будет просто работать. Но на одном хосте особо не отмасштабируешься. Да и если хост прикажет долго жить, всё приложение отправится на тот свет вместе с ним. Конечно, для масштабирования можно завести сразу несколько хостов, объединить их при помощи overlay сети, так что и места больше будет, и возможность для контейнеров общаться останется.

Но опять же, как всем этим управлять? Хосты всё ещё могут отмирать. Как быстро определить, какой именно? Какие контейнеры на нём были? Куда теперь их переносить?

Начиная с версии 1.12.0 Docker может работать в режиме Swarm («Рой». В старых версиях был просто Docker Swarm, но тот работал по-другому), и потому способен решать все эти проблемы самостоятельно. Читать далее Краткое введение в Docker Swarm mode

Про поход к канадским окулистам

Prof. Farnsworth

Лет через семь после начала работы программистом я выяснил для себя удивительную вещь: программирование — оно вредное. Особенно для глаз. То есть слухи про это до меня и раньше доходили, но ведь все эти сказки про болезни, старость и, в перспективе, смерть — они же всегда о других людях, так ведь? Но походу оказалось, что законы природы и оптики едины для всех, так что со временем один глаз от постоянного смотрения в монитор заметно сел.

Читать далее Про поход к канадским окулистам

Создаём образ для виртуальной машины с Packer

packer logoКак правило, создавать виртуальную машину с нуля — не совсем разумно. Всё-таки процесс долгий. Например, создание с нуля одного билд-сервера в моём мини-зоопарке занимает 40 минут. Это включает в себя установку пары-тройки SDK, всех доступных обновлений и сертификатов. Но в реальности, чтобы добавить новый, полностью сконфигурированный сервер в кластер, мне нужно минуты три. Как же так?

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

Так уж исторически сложилось, что мы пользуемся своим, домашним инструментом для подготовки образов, но во вселенной есть и бесплатные и open source. Например, Packer. Читать далее Создаём образ для виртуальной машины с Packer

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