Записи

Showcase-проекты

Вместо pet-⁠проектов, которые у большинства из нас застывают в состоянии как на картинке1, я практикую создание showcase-⁠проектов. Этот подход хорошо зарекомендовал себя и прижился (как мне кажется) в моей команде.

Читать дальше →

Service Template

Даже среди сильных инженеров часто можно услышать такое мнение:

Ну, микросервисы, это когда каждый сам ковыряется как хочет, выбирает что хочет и как-⁠то там решает проблемы.

К большому сожалению, это частое заблуждение. Давайте обсудим, какие преимущества даёт применение паттерна Service Template1 на уровне всей компании.

Читать дальше →

Инженерная зрелость

Инженерная зрелость — это показатель высокого уровня подготовки, глубины опыта и широты кругозора.

Мои коллеги, работавшие и работающие со мной, знают, что для характеристики уровня инженерной зрелости я использую три термина:

  • Единообразие
  • Системность
  • Воспроизводимость

Давайте обсудим, какой смысл я вкладываю в каждый из них. Я приведу примеры из моей предметной области и буду рад вашим в комментариях.

Читать дальше →

traefik

Данная заметка является ответом на комментарий одного из моих подписчиков, который предложил тему следующего поста:

… как настроить докер чтобы LB сразу в нужные контейнеры роутил

Как я вижу поставленную задачу?

Читать дальше →

mkcert

При разработке в локальном окружении многие пренебрегают имитацией https и запускают свои сервисы по http.

Задача состоит в следующем:

  • Сервить траффик на локальной машине по https с валидным сертификатом;
  • Сделать так, чтобы это легко воспроизводилось не только у вас, но и у всех членов вашей команды.

Читать дальше →

dnsmasq

Когда-⁠то многие из нас занимались разработкой сайтов, и, чтобы локально разрабатывать и тестировать очередной проект, добавляли в /etc/hosts ещё одну запись примерно такого вида:

127.0.0.1       next-project.tld

Читать дальше →

http.DefaultClient

“1024 плети тому, кто использует http.DefaultClient в своём коде” — такая “шутка” звучит на наших стендапах. Проблема заключается в отсутствии таймаутов в настройках по умолчанию. На эту тему есть отличная статья в блоге Cloudflare1.

Читать дальше →

uber/fx + gRPC

В своих решениях я использую IoC-⁠контейнер fx1 от Uber. Существуют разные лагери сторонников и противников подобных решений, но мы сконцентрируемся именно на теме применения fx.

Если вы не знакомы с основами применения, я рекомендую выполнить официальный Quick Start2. Он поможет начать ориентироваться в решении.

Читать дальше →

Gitlab Subgroup + go get

Дано:

  • gitlab, скорее всего, развернутый во внутреннем контуре;
  • “перфекционизм”, требующий раскладывать всё “по папочкам”, или требование свыше;
  • внутренний пакет на Go, который необходимо устанавливать как зависимость.

Читать дальше →

Jetbrains Space + go get

Дано:

  • Вы используете Jetbrains Space1.
  • Вы пишите код на Go.
  • Вам необходимо создать общую библиотеку и подключать её как модуль в ваших внутренних проектах.

Читать дальше →