backend-разработчик: Go, Python и немного инфраструктуры
открыт к интересным задачамСедьмой год пишу серверный код: начинал с Python и аналитики, потом переехал в Go и инфраструктуру. Лучше всего у меня выходят маленькие инструменты, которые делают одну вещь и не притворяются платформой.
Здесь собираю пет-проекты и заметки, чтобы потом не искать их по чатам. Ничего не продаю, рассылок нет.
Полнотекстовый поиск в одном бинарнике: инвертированный индекс, наивная морфология, чтение напрямую из SQLite. Из зависимостей — только стандартная библиотека.
Маленький нагрузочный инструмент для HTTP: сценарии в YAML, гистограммы задержек и отчёт прямо в терминал. Написал, потому что ab не умел то, что было нужно мне.
Заметки в markdown-файлах с индексом и полнотекстовым поиском на SQLite (движок взят из mindex). Между машинами синхронизирую обычным git-репозиторием — без сервисов и аккаунтов.
Переписал эту страницу с генератора на один HTML-файл: было два с лишним мегабайта с бандлом, стало меньше пятнадцати килобайт. Поправил текст в редакторе — закоммитил — готово. Генераторы хороши, когда страниц много. У меня одна.
Считал rate limit на входном шлюзе и получил гонку: несколько горутин писали в один map без синхронизации. Переписал на leaky bucket с единственным тикером и каналом — кода стало меньше, гонки исчезли. Правило на будущее: общее состояние дороже, чем кажется.
Переехал с готового хостинга на голый VPS: nginx, сертификаты, бэкапы кроном. Первую неделю было страшно, сейчас — скучно, и это лучший комплимент инфраструктуре. Чек-лист настройки лежит в репозитории.