Skip to content

docs: add ADR 0005 for Glow-to-NLDS warehouse connector#602

Merged
nicholasjjlim merged 3 commits into
mainfrom
docs/adr-glow-nlds-warehouse-connector
Jul 3, 2026
Merged

docs: add ADR 0005 for Glow-to-NLDS warehouse connector#602
nicholasjjlim merged 3 commits into
mainfrom
docs/adr-glow-nlds-warehouse-connector

Conversation

@nicholasjjlim

@nicholasjjlim nicholasjjlim commented Jun 30, 2026

Copy link
Copy Markdown
Collaborator

🚀 Summary

Resolves #597 — a research spike (no implementation) producing a documented, recommended approach for connecting Glow learning data to the NLDS data warehouse for centralized analytics and reporting.

The ADR (docs/decisions/0005-glow-nlds-warehouse-connector.md, MADR 4.0, status accepted) recommends an S3 data-lake intermediary with RDS snapshot export as the producer: Glow's database exports whole-database snapshots to S3 as Parquet (no export code), landing cross-account in a scoped prefix of a bucket sited in the NLDS account; NLDS ingests natively within its own account on its own schedule.

There is no requirement to curate what is sent — Glow's learning data is not sensitive and NLDS decides how to use it — so the connector exports the whole database. Curating to specific datasets can be re-explored later; because that would only swap the producer within the same S3 pattern, it would stay within this decision rather than supersede it.

Decision rests on the established constraints: batch freshness is acceptable (no near-real-time need), Glow and NLDS are separate AWS accounts in the same AWS Organization, and no policy mandates a particular network posture.

✏️ Changes

  • Add docs/decisions/0005-glow-nlds-warehouse-connector.md — evaluates five options across the rubric dimensions (cost, security, freshness/latency, implementation/operational effort, coupling):
    • S3 data-lake intermediarychosen (cheapest, least network exposure, lowest effort; matches batch freshness). Content-agnostic: the same path carries a whole-DB dump or curated slices equally well.
    • RDS snapshot export to S3chosen as the producer for the intermediary: lowest effort of all (a configured export, no code), reads an automated snapshot rather than the live instance, and writes analytics-friendly Parquet. Its usual drawback — exporting the entire database — does not apply, since there is no curation requirement.
    • DB replica via AWS PrivateLink — rejected; near-real-time not needed, exposes a live DB replica. Kept as the documented upgrade path.
    • DB replica via VPC peering — rejected; broadest network exposure, CIDR coordination, no freshness gain over PrivateLink.
    • AWS DMS — rejected as a rival; reads the source DB and runs a standing replication instance. Noted as the likely loading mechanism if a CDC upgrade ever happens.
  • Includes a "Bucket ownership" sub-decision (bucket in NLDS account; bucket-owner-enforced to avoid the cross-account object-ownership trap), a Mermaid data-flow diagram, and a deferred-patterns note (federated query, streaming CDC, app-level extract API).
  • Add the ADR to the decisions index in docs/decisions/README.md.

Notes

  • Status is accepted — signed off by the Glow engineering and NLDS Product Ops reps.
  • Revised after acceptance to drop the curated-export requirement: stakeholders confirmed there is no need to filter what is sent, so the recommendation moved from a purpose-built curated export to whole-DB RDS snapshot export within the same S3 architecture.
  • Out of scope per the issue: connector implementation, warehouse schema/table mapping, and historical backfill. Dataset curation is likewise deferred — re-explorable later without superseding this ADR.

🤖 Generated with Claude Code

nicholasjjlim and others added 2 commits June 30, 2026 11:30
Research spike recommending an S3 data-lake intermediary (bucket sited in
the NLDS account) to connect Glow learning data to the NLDS warehouse.
Evaluates five options — S3 intermediary, DB replica via PrivateLink, DB
replica via VPC peering, AWS DMS, and RDS snapshot export — across cost,
security, freshness, and operational effort, with explicit rejection
reasons for the non-chosen approaches.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Clarify that the chosen S3 data-lake intermediary can carry a
whole-database export as readily as curated slices, making it a superset
of the rejected snapshot-export option; curated-only exposure is a
deliberate governance choice, not a technical limit of the pattern.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@nicholasjjlim
nicholasjjlim marked this pull request as ready for review July 2, 2026 02:05
@nicholasjjlim
nicholasjjlim requested a review from santosral July 2, 2026 02:05
@nicholasjjlim nicholasjjlim self-assigned this Jul 2, 2026
…n requirement

Glow's learning data is not sensitive and NLDS decides how to use it, so
there is no requirement to curate what is sent — the connector exports the
whole database via an RDS snapshot export to the S3 intermediary. Drop the
stage/refinement framing; curation becomes an optional future re-exploration
within the same architecture. Batch freshness is daily (hourly removed).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@nicholasjjlim
nicholasjjlim merged commit 37445a7 into main Jul 3, 2026
8 checks passed
@nicholasjjlim
nicholasjjlim deleted the docs/adr-glow-nlds-warehouse-connector branch July 3, 2026 07:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

spike: evaluate Glow-to-NLDS warehouse connector optionsspike: evaluate Glow-to-NLDS warehouse connector options

2 participants