Об этом проекте
AetherGrid — это распределённый оркестратор ИИ-нагрузок, который планирует выполнение задач по вычислительным узлам на основе требований к ресурсам и ограничений, управляя полным жизненным циклом задания: от постановки в очередь до запланированного, выполняющегося, завершённого, неудачного, повторяющегося и отменённого. Проект построен на строгом Domain-Driven Design: изолированное доменное ядро без инфраструктурных зависимостей, событийно-управляемый цикл сверки и владение исполнением на основе аренды.
Заявленная мотивация проекта — решить сложные проблемы масштабного планирования: исключительное владение исполнением при сбоях, сверка после частичных отказов и принудительные ограничения ресурсов. Доменный слой (агрегаты Job, Node, Worker, Lease, Event, ApiKey) содержит алгоритм планирования и конечный автомат жизненного цикла на чистом Python, без импортов из FastAPI или psycopg. Сервисы приложения координируют доменные объекты и репозитории, а инфраструктура предоставляет реализации PostgreSQL для каждого репозитория на сыром psycopg без ORM, плюс реализации SQLite для некоторых репозиториев в локальной разработке. Презентационный слой — FastAPI, фронтенд — React с TypeScript.
Ключевые возможности: аутентификация по API-ключам на каждом маршруте (включая эндпоинт выдачи ключей, причём первый ключ создаётся только локальным скриптом с прямым доступом к БД), явные переходы состояний заданий, включая отмену выполняющегося задания через состояние CANCELLING, страницы истории жизненного цикла каждого задания, распределитель best-fit с учётом ограничений, вывод узлов из эксплуатации, регистрация воркеров и heartbeat-сигналы, автономный агент-воркер, опрашивающий HTTP и выполняющий задания как реальные подпроцессы, владение исполнением на основе аренды с непрерывным продлением, явное подтверждение начала исполнения, реальное выполнение подпроцессов с двухэтапным завершением (SIGTERM, затем SIGKILL), отслеживание живости узлов, сверка с ограниченными повторными попытками, запись доменных событий, живая лента событий кластера, видимость воркеров и многостраничный дашборд.
В README подчёркиваются инженерные решения: задокументировано 39 ADR в /docs/adr, охватывающих цикл сверки, восстановление заданий и ремонт сверки, реальное выполнение заданий, непрерывное продление аренды, аутентификацию по API-ключам, доменное владение политикой планирования, автономный агент-воркер, отмену через продление аренды, идемпотентную регистрацию воркеров, восстановление заданий, брошенных в середине отмены, вынос выполнения тиков кластера из цикла событий, сохранение переходов в RUNNING и несколько исправлений fencing аренды по идентичности аренды, а не воркера. В README указано 347 тестов на уровнях домена, приложения, инфраструктуры и API, включая контрактные тесты, доказывающие идентичное поведение реализаций репозиториев.
Проект включает живое демо, развёрнутое на Render с реальным Postgres, реальной аутентификацией и эндпоинтами, защищёнными API-ключами. Лицензия MIT, используется Python 3.12, FastAPI, PostgreSQL, React/TypeScript и Docker Compose.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.