The August 17 outage 🔥 Горячее 💬 Длинная дискуссия
В августе GitHub пережил два крупных сбоя: 6‑го и 17‑го число сервисы, включая сайт, аутентификацию, Actions, API, Pull Requests, Issues и Copilot, были недоступны почти восемь часов. Причиной стал резкий рост нагрузки, превысивший возможности центрального дата‑центра в США, где ключевой компонент не смог масштабироваться. Восстановление потребовало перераспределения трафика, изоляции проблемного оборудования и поэтапного возврата сервисов; ошибки в Copilot‑службах даже вызвали бесконечные повторные попытки клиентов, усугубив нагрузку.
В ответ компания ускорила инвестиции в ёмкость: за последние месяцы добавили более 3 млн процессорных ядер, 120 петабайт высокоскоростного хранилища и значительный сетевой ресурс, перенёс часть нагрузки в Azure (сейчас 58 % платформенного трафика обслуживается там). Были введены ограничения на повторные запросы, бюджеты таймаутов и пересмотрены низкоприоритетные оповещения, чтобы избежать каскадных сбоев. Тем не менее, рост активности — 2,9 млрд коммитов в месяц и 24 млн новых репозиториев — требует дальнейших архитектурных изменений, чтобы гарантировать надёжность, без которой разработчики не могут создавать и выпускать программное обеспечение.
Комментарии (650)
Сбой GitHub вызван не нехваткой емкости, а отсутствием отказоустойчивости: системы коллапсируют при перегрузке, вместо того чтобы отбрасывать низкоприоритетный трафик. Клиентские retry-циклы, особенно в VS Code, усилили нагрузку в 10 раз и замедлили восстановление — это системная проблема, а не баг. Рост коммитов с 1,4 до 2,9 млрд в месяц за несколько месяцев указывает на массовое внедрение AI-агентов, что не было учтено при проектировании инфраструктуры. Рост CPU и хранилища не решает проблему — если архитектура не предусматривает graceful degradation, масштабирование лишь откладывает катастрофу. Нужно выставлять алерты при 80% загрузки, отслеживать лимиты не только сервисов, но и sidecar-контейнеров (например, Istio). Внедрять client-side throttling: при 5xx клиенты должны замедлять запросы, а не перезапрашивать. Трафик отдельных клиентов должен изолироваться, чтобы перегрузка одного не затрагивала других, особенно платных. Прогнозирование нагрузки (как в CloudWatch) важнее реактивного масштабирования. GitHub стал уязвимым централизованным монополистом — его сбой затрагивает всю экосистему, что стимулирует альтернативы: децентрализованные форки и локальные системы код-ревью. Платформа, скрывающая ошибки под спиннерами, нарушает принцип прозрачности для разработчиков. Рост GitHub Actions в выходные показывает, что AI-автоматизация затронула и личные проекты. Споры: разделить бесплатные и платные репозитории, чтобы enterprise-клиенты не страдали от AI-трафика — или сохранить открытость? Ввести плату за коммиты — или считать убытки GitHub оправданными, если они стимулируют Azure и OpenAI? Разработка AI-агентов для оптимизации внутренней инфраструктуры логична, но компания фокусируется на внешних функциях, а не на стабильности.
We need a clearer framework for AI-assisted contributions to open source 🔥 Горячее
Инструменты AI для кодирования создают новую проблему для open source-сообщества: они делают генерацию кода дешёвой, но не делают его ревью таким же. В результате мейнтернеры тратят непропорционально много времени на проверку кода, который был создан за секунды, но требует часов анализа. Автор предлагает бинарную систему: с одной стороны - прототипы, демонстрирующие идеи, с другой - PR, готовые к ревью.
Прототипы - это "кинопавильоны" для идей, не соответствующие стандартам кодирования, без тестов и потенциально с уязвимостями. Их не следует отправлять как PR, а делиться через ветки с видео или ссылками. Автор подчеркивает: "Это неустойчиво и крайне разрушительно". Внедрение прототипирования требует внутренней договорённости команды, чтобы избежать разногласий и сохранить баланс между творчеством и эффективностью.
Комментарии (143)
- Обсуждение показало, что проблема не ограничивается кодом: LLM-генерированные PR, не раскрывая этого, создают нагрузку на рецензентов и нарушают принцип "не навредь".
- Сообщество разделилось: одни считают, что любой вклад полезен, другие настаивают, что важно различать, где использовался ИИ, и требуют прозрачности.
- Обсуждение затронуло вопрос, как отличить человеческий вклад от ИИ-генерированного, и какие нормы могли бы регулировать это.
- Участники обсудили, что если кто-то утверждает, что может писать код с LLM, то он должен быть способен писать и e2e тесты.
- Были выдвинуты идеи, что проекты могли бы требовать, чтобы вклад был помечен как ИИ-генерированный, и что в будущем репутация и идентичность могут стать критически важными для рассмотрения вклада.
The Theatre of Pull Requests and Code Review 💬 Длинная дискуссия
Код-ревью часто превращается в формальность из-за слишком больших и сложных пул-реквестов. Разработчики избегают глубокого анализа, ограничиваясь поверхностными комментариями, что ведёт к накоплению технического долга и уязвимостей. Ключевое решение — нормализовать возврат непонятных PR авторам и дробить функциональность на мелкие изменения объёмом до 300 строк, которые можно проверить за 5–10 минут.
Важную роль играют коммиты, рассказывающие историю изменений: они должны отражать логику и итеративный процесс, а не просто фиксировать результат. Например, осмысленные сообщения коммитов и использование fixup-коммитов помогают сохранить ясность истории даже после правок. Это снижает когнитивную нагрузку на ревьюверов и повышает качество кода, поскольку каждый участник чувствует ответственность за систему в целом.
Комментарии (351)
- Критикуется подход к разделению PR по количеству строк кода, так как это может скрыть общую картину и усложнить понимание взаимосвязей между изменениями.
- Подчёркивается важность содержательных PR-ревью, а не формального одобрения, и необходимость вовлечения ревьюверов на ранних этапах разработки.
- Обсуждаются трудности создания "историй" через коммиты и необходимость баланса между скоростью разработки и качеством кода.
- Предлагаются альтернативы, такие как парное программирование и улучшение инструментов для инкрементального ревью, чтобы сделать процесс более эффективным.
- Отмечается, что успех ревью зависит от культуры команды, доверия и чётких ожиданий, а не только от технических аспектов.