open atlas

engineering-practice

Инженерная практика

Привычки, которые отличают пет-проект от профессиональной команды, — хорошо тестировать, безопасно выкатывать изменения и поддерживать сервис живым в продакшене.

10 юнитов·60 уроков·~44 ч

Начать трек
00

С нуля

Перед senior-материалом: что вообще такое инженерная практика и горстка слов, которые остальной трек считает уже знакомыми.
01

TDD и property-based-тестирование

Тест-сначала — это давление на дизайн, а не ритуал покрытия: red-green-refactor вскрывает плохие интерфейсы рано, правило границ укрощает тестовые дублёры, property-тесты находят граничные случаи, которые вы бы не перечислили, а мутационное тестирование — честная метрика того, заметит ли набор баг.
02

Контрактное тестирование

Сквозное интеграционное тестирование рушится с масштабом; consumer-driven-контракты заставляют потребителя задать истину, провайдер проверяет её через брокер, а can-i-deploy превращает матрицу верификации в гейт безопасности деплоя — заменяя бо́льшую часть межсервисного e2e для известных внутренних потребителей.
03

Ревью кода

Ревью существует, чтобы ловить дизайн и замысел, а не стиль — механическое автоматизируйте; размер PR задаёт и задержку, и обнаружение, действенный фидбэк с пометкой важности бьёт вердикты, а на масштабе вы маршрутизируете владение, ограничиваете время подхвата и иногда переводите ревью в непрерывное или post-commit.
04

Trunk-based разработка

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

Feature flags

Скоро — Инженерная практика
06

Postmortems

Скоро — Инженерная практика
07

On call

Скоро — Инженерная практика
08

Мастерство отладчика

Отладчик — микроскоп с управляемым исполнением; брейкпоинты, watchpoint'ы, core dump'ы и live-трейсинг превращают невоспроизводимый баг в наблюдаемый.
09

Putting it together

Скоро — Инженерная практика

Проекты по этому треку

Guided-проекты, которые закрепляют изученное здесь.

◆ Проекты

Сервис фич-флагов

Собери небольшой сервис флагов с правилами таргетинга, процентными раскатками и типизированным SDK, который вычисляет флаги на клиенте из закешированного набора правил.

◆ Проекты

Распределённый rate limiter

Собери token-bucket лимитер, который держится поперёк многих инстансов приложения за счёт счётчика в Redis, а не в памяти процесса.

◆ Проекты

Текстовый diff — алгоритм Майерса

Реализуй алгоритм diff Майерса с нуля: вычисли наибольшую общую подпоследовательность, построй edit script обратным ходом, докажи минимальность и применяй патчи так, чтобы любой round-trip был побайтово точным.

◆ Проекты

Планировщик сборки на топологической сортировке

Собери планировщик задач на основе DAG — как Make или CI-пайплайн — который упорядочивает задачи по зависимостям, обнаруживает циклы до дедлока и определяет, какие задачи можно выполнять параллельно.

◆ Проекты

URL-сокращатель под нагрузкой

Собери URL-сокращатель, который выдерживает настоящий трафик, — а потом эксплуатируй его: задеплой, наблюдай и разберись с инцидентом, когда одна горячая ссылка плавит твой кэш.

Следующий трек

SQL и PostgreSQL вглубь

Язык SQL и внутренности Postgres для senior-инженеров — джоины, окна, CTE, транзакции, планировщик.