Architecture kata defense

Make The Grade

Локальная выживаемость экзамена, централизованная правда оценки

Testing center Student work survives locally State Core Canonical truth stays centralized

Главный ответ

Make The Grade нужно проектировать как trust architecture, а не как микросервисную демонстрацию.

Testing center edge сохраняет работу ученика во время сбоя. State Core остается единственным источником истины для submissions, scores, audit and publication.

01State Core owns truth
02Edge owns session durability
03County tier stages, not governs
04Grading is workflow
05Reporting is gated projection

Маршрут защиты

Empathizeучастники и отказыrequirements, research
Definetrust and resilience problemNFR, characteristics
IdeateальтернативыADR, decision history
Prototypeflows and data modelsolution, deployment
TestSLO, risks, fitnesscapacity model

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

Понять

У разных участников разные ставки. Один KPI не удержит задачу.

Участники защищают разные ценности

Studentответы не теряются
Proctorвидны pending sync и recovery
Graderрубрика, assignment, review path
Schoolпонятные опубликованные отчеты
State adminодна доказуемая lineage
Operatorreplay, backlog, incident workflow
Agency approverконтроль grade-storage semantics

Архитектура должна одновременно защищать work loss, custody, auditability, access scope and publication governance.

Самый опасный момент - потеря ответа во время экзамена

1Start session
2Answer itemloss risk
3Local savedurability boundary
4Syncduplicate risk
5State accepted

UI может сказать saved только после durable local journal write.

UI может сказать submitted только после State Core acceptance или явного CompletedPendingSync.

Цена ошибки выше нагрузки

Lost workretake, appeal, unfairness
Duplicate acceptedincorrect score
Silent overwriteaudit failure
Early publicationpolicy breach
Multiple truthscustody confusion

Поэтому решение выбирает durability over immediacy, traceability over convenience and explicit governance over silent changes.

Определить

Правильная формулировка задачи важнее раннего выбора технологии.

Задача - integrity, resilience and governance under scheduled bursts

Make The Grade = scheduled statewide burst regulated student records offline testing centers manual grading publication governance
40,000+students
10,000nominal concurrent
20,000stress concurrent
2,000graders
667-1,333/secautosave events

Критерии выбора фиксируют компромисс до технологий

Integrity firstimmutable submissions, idempotency, audit
Edge resiliencelocal journal, replay targets
Audit-readyactor, time, reason, rubric version
State-authoritativeone canonical record lineage
Cost disciplineannual budget defense
Accessibility-awaresecure client plus accommodations

Если вариант ускоряет reporting, но разрушает audit trail, он проигрывает. Если добавляет local autonomy, но создает multiple truths, он проигрывает.

Придумать

Ранняя гипотеза была полезной, но не стала финальной архитектурой.

County-owned server был хорошей гипотезой, но слабым source of truth

Первый инстинкт County server as regional anchor

знакомая локальная модель, operational visibility, staging

Что сохранили Local resilience is real

testing center должен переживать outage и давать proctor visibility

Что изменили County is not authority

validate, deduplicate, forward, never mutate grades, never publish

Сравнение вариантов оставляет edge ingestion plus State Core

Вариант Resilience Integrity Cost Вывод
Central online-only weak during outages clear truth simple теряет session survival
County-authoritative good locally multiple truth risk hardware burden сложно защищать custody
Full microservices mesh scalable depends on discipline high ops избыточно для риска
Edge + State Core strong where needed one canonical truth moderate лучший компромисс

Прототипировать

Ответственность каждого слоя ограничена тем, что можно проверить и защитить.

Финальная архитектура разводит выживаемость и authority

Student Secure Clientlocked-down exam surface, local encrypted journal
Testing Center Edgefirst durability boundary, replay coordination
County / Regional Ingestoptional staging, validation, forwarding
State Authoritative Coresubmissions, scores, audit, publication

County/regional tier может помогать с routing and staging, но не получает право mutate grades or publish results.

Submission flow принимает at-least-once delivery

01Local journalbefore saved
02Edge durable ackhandoff
03Regional stagevalidate + dedupe
04State persistcanonical record

Every envelope carries submission_id and payload_hash.

Duplicate envelopes create exactly one canonical answer record.

Replay is a normal path, not an emergency hack.

Correctness живет в domain model, а не в обещании идеального транспорта.

Offline sizing показывает, что edge практичен

about 1.2 GB для 500 active devices и 3-hour outage

360,000 draft events * 3 KB + 500 final packages * 250 KB

Edge не превращается в mini data center.
Главная ценность edge - durable capture, replay coordination and proctor visibility.
State Core становится authoritative только после canonical persistence.

Grading workspace - governed workflow, not CRUD

Submitted AutoScored PendingGrading InReview NeedsSecondReview Finalized
80,000essay responses
160,000manual grade events
16/dayessay grades per grader
5 daysgrading window target

Manual grading needs scorer assignment, rubric version, calibration, second scoring, discrepancy handling and audit metadata.

Data model отделяет evidence, current state, audit and projections

Submissionimmutable answer package
ScoreRecordcurrent operational score state
ScoreAuditEventappend-only history
ReportProjectionread-optimized, rebuildable view

Score can change; history cannot disappear. Reporting does not query operational write tables directly.

Publication gate отделяет finalized grade от published result

Finalized ResultValidated ReadyForPublication ResultPublished ProjectionUpdated

0 student-facing result records before ResultPublished.

95% published results appear in projections within 5 minutes.

Statewide projection rebuild completes within 4 hours.

RBAC задает роли, ABAC закрывает реальные границы

RBACstudent, proctor, grader, county operator, state operator, administrator
ABACschool, county, subject, testing window, release status, scorer assignment, accommodation status

Роль говорит, кто ты. Атрибуты говорят, что именно тебе можно сейчас.

Service-based architecture снижает операционный риск

Reject by default fine-grained microservice mesh

more ops, tracing, contracts, failure modes and annual cost pressure

Choose service-based core

capture, ingest, scoring, reporting and governance as strong responsibility boundaries

Это не монолит любой ценой. Это отказ от преждевременной мелкой нарезки, пока главный риск - integrity, not service fan-out.

Проверить

Архитектурные обещания должны превращаться в измеримые обязательства.

Fitness functions делают решение reviewable

Submission100% journaled before saved
Recoveryreplay starts <= 2 minutes
Grading100% changes create GradeEvent
Reporting0 visibility before ResultPublished
Governance3 approvals linked to semantic changes

Можно спорить о target values, но качество больше не остается абстрактным.

Основные риски приняты только с явным mitigation

Edge complexitycertify journal latency and replay
Eventual consistencypublication freshness SLO
Duplicate deliveryidempotency and payload hash
Governance overheadformal workflow and approvals
County misreadhard non-authoritative boundary
Destroyed unsynced deviceincident workflow, retake or adjudication

Software cannot recover answers that existed only on destroyed local storage and were never replicated.

Сильные возражения уже отражены в границах

Why not county truth?It weakens custody and statewide lineage.
Why not real-time reporting?Freshness after publication matters more than write-path coupling.
Why at-least-once?Idempotent domain model absorbs duplicates.
Why mutable score?Current score mutates; audit history does not.
Why not full microservices?Integrity and governance dominate the scale profile.

Запрос

Принять edge-to-core architecture как целевой контур.
  1. State Core remains authoritative.
  2. Testing edge owns local durability and replay.
  3. County/regional layer stays optional staging.
  4. Grading and publication are governed workflows.
  5. Fitness functions become the quality contract.

Local survivability where the exam can fail. Centralized truth where accountability lives.

Начать с рамки: это не демонстрация технологий, а защита архитектурного мышления. Главная идея простая: рядом с учеником нужна выживаемость, рядом со штатом нужна правда.

Не интриговать. Сначала BLUF, потом доказательства. Ревьюер должен за первую минуту понять позицию: локальная долговечность и каноническая правда разведены намеренно.

Показать, что структура не декоративная. Каждый следующий блок отвечает на вопрос, который нужен для защиты выбранной архитектуры.

Если смотреть только на throughput, решение получится неверным. Для ученика главный риск - потеря работы. Для штата - невозможность доказать происхождение оценки. Для оператора - невидимый backlog.

Это рождает local journal и recovery state machine. Не сеть должна быть идеальной, а статусы должны честно отражать архитектурную правду.

Ставки переводят пользовательскую боль в архитектурные требования. Выбранные ограничения не декоративны: они защищают от провалов доверия.

Нагрузка реальная, но это не глобальная consumer platform. Главный вопрос: как не потерять, не исказить и не опубликовать раньше времени.

После этого county server и full microservices можно обсуждать спокойно: не по вкусу, а по критериям.

Не выставлять раннюю идею глупой. Она помогла увидеть локальную устойчивость. Но custody and statewide lineage плохо защищаются, если county node владеет primary truth.

Выбранный вариант не максимизирует все критерии. Он максимизирует defendability: центр остается правдой, edge не теряет работу, county остается инфраструктурной опцией.

Это контейнерная карта решения. Secure Client - controlled exam surface. Edge Gateway - first durability boundary. State Core - canonical submissions, score state, audit history and publication state.

Не обещать exactly-once transport. Более надежное утверждение: transport may be at-least-once, but domain handlers are idempotent.

Это сильное число для защиты. Оно показывает, что локальная выживаемость не требует county-owned source of truth.

Объем реалистичный, поэтому workflow можно сделать строгим. Ручная оценка - процесс доверия, а не ввод числа.

Это главный ответ на вопрос: если оценка может меняться, почему integrity не теряется. Меняется current state. История остается append-only.

Finalized score - scoring fact. Published result - approved visibility fact. Для three-agency governance это принципиально.

Два грейдера могут иметь одну роль, но разные assignments. Result visibility меняется после publication. Accommodations and testing window - контекст доступа, а не отдельные роли.

Пояснить: сервисы есть, но границы выбраны по ответственности. Решение не доказывает современность количеством deploy units.

Связать с pre-defense gaps: SLO, RTO, RPO and fitness functions закрывают слабые места.

Не обещать магию. Честная защита называет остаточный риск и показывает, что он управляется процедурой.

Это Q&A slide. Не читать все карточки, а показать, что скептические вопросы встроены в решение заранее.

Финальная формулировка: архитектура не самая распределенная и не самая централизованная. Она ставит ответственность туда, где ее можно защитить.