6 CLI improvements from MCP integration testing + deck bug fixes: - kb_cli.py: --json on search, new arch-search and ecal-score subcommands, _load_yaml handles multi-document YAML (fixes health command on 32 files) - findings_cli.py: --json on search/list/stats, filter flags on search (--product, --severity, --tag, --client, --status, --category) - validate-architecture.py: --profile optional, --output defaults to stdout - common-objections.yaml + ecal-artefacts-catalog.yaml: merge front matter - oci_deck_gen.py: fix slide 9 cost_notes char iteration, fix slide 12 migration field mapping (duration/milestones), dynamic phase spacing - proposal-spec.yaml: replace real name with fictional Carlos Mendoza All 14 skill options validated with generated deliverables. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
435 lines
17 KiB
YAML
435 lines
17 KiB
YAML
# OCI Deal Accelerator — Proposal Spec
|
||
# Customer: MELI (Mercado Libre) | Project: KVS
|
||
# Drives: oci_deck_gen.py (.pptx) + oci_pdf_gen.py (.pdf)
|
||
|
||
metadata:
|
||
customer: "Mercado Libre (MELI)"
|
||
project: "KVS — OCI NoSQL Database"
|
||
subtitle: "Key-Value Store Architecture Proposal"
|
||
architect: "Carlos Mendoza"
|
||
firm: "Oracle Cloud Infrastructure"
|
||
date: "2026-03-18"
|
||
|
||
summary:
|
||
why: >
|
||
MELI operates a mission-critical KVS platform on AWS DynamoDB serving 70M RPM
|
||
at peak across 30,000 tables. Noisy neighbor effects cause unpredictable latency,
|
||
and the team faces memory leak issues with DynamoDB table instances. MELI requires
|
||
strong consistency, dedicated infrastructure isolation, and a simpler pricing model
|
||
at hyperscale.
|
||
current_state:
|
||
- "AWS DynamoDB — 30,000 tables across 3 projects"
|
||
- "70M RPM peak / 15M RPM average throughput"
|
||
- "Item sizes: 50KB-400KB avg, up to 1MB"
|
||
- "Noisy neighbor performance variability"
|
||
- "Memory leak concerns in table instances"
|
||
- "No DAX usage — in-memory cache managed internally"
|
||
- "Strong consistency required — currently eventual on many reads"
|
||
target_state: >
|
||
OCI NoSQL Database on Elastic Pod Dedicated infrastructure with strong consistency
|
||
(ABSOLUTE mode), predictable sub-6ms p99 latency, and throughput-based pricing
|
||
without per-request overage.
|
||
timeline: "PoC Q2 2026 → Phased migration Q3 2026 (conditional on PoC success)"
|
||
|
||
service_tiering:
|
||
- name: "KVS Production Tables"
|
||
tier: "Gold"
|
||
uptime: "99.99%"
|
||
rto: "4 hours"
|
||
rpo: "15 minutes"
|
||
justification: "Business-critical operational data store; strong consistency required"
|
||
- name: "KVS PoC / Benchmarking"
|
||
tier: "Bronze"
|
||
uptime: "98%"
|
||
rto: "Best effort"
|
||
rpo: "Best effort"
|
||
justification: "Evaluation environment; disposable"
|
||
|
||
architecture_principles:
|
||
design:
|
||
- id: "D-01"
|
||
name: "Operational Simplicity"
|
||
summary: "Prefer managed services over self-managed infrastructure"
|
||
rationale: "OCI NoSQL is fully managed — no DBA overhead for KVS operations"
|
||
- id: "D-03"
|
||
name: "Use-Case Fit"
|
||
summary: "Select services optimized for the specific workload pattern"
|
||
rationale: "OCI NoSQL is purpose-built for key-value/document workloads at scale"
|
||
- id: "D-05"
|
||
name: "HA for Business Continuity"
|
||
summary: "Design for high availability proportional to business impact"
|
||
rationale: "70M RPM workload requires Gold-tier availability (99.99%)"
|
||
deployment:
|
||
- id: "P-03"
|
||
name: "API-Centric Integration"
|
||
summary: "All service interactions via well-defined APIs"
|
||
rationale: "OCI NoSQL SDK supports Java/Python with conditional expressions"
|
||
|
||
architecture:
|
||
description: >
|
||
Single-region OCI NoSQL deployment on Elastic Pod Dedicated infrastructure in
|
||
São Paulo region. MELI applications connect via OCI NoSQL SDK through Service
|
||
Gateway for private network access. Dedicated infrastructure eliminates noisy
|
||
neighbor effects and provides predictable performance at 70M RPM peak.
|
||
|
||
Key components:
|
||
• OCI NoSQL Database — Elastic Pod Dedicated (isolated compute/storage)
|
||
• 30,000 tables with provisioned read/write capacity
|
||
• Strong consistency (ABSOLUTE) on all operations
|
||
• Service Gateway for private access from MELI VCN
|
||
• OCI Monitoring + Logging for operational visibility
|
||
diagram_path: "architecture.drawio"
|
||
visual:
|
||
regions:
|
||
- name: "São Paulo"
|
||
services:
|
||
- name: "OCI NoSQL (Elastic Pod Dedicated)"
|
||
type: "database"
|
||
- name: "Service Gateway"
|
||
type: "networking"
|
||
- name: "OCI Monitoring"
|
||
type: "observability"
|
||
|
||
decisions:
|
||
- title: "OCI NoSQL over ADB-S JSON"
|
||
decision: "Use OCI NoSQL Database instead of Autonomous Database JSON collections"
|
||
rationale: >
|
||
OCI NoSQL is purpose-built for key-value operations at 70M RPM with provisioned
|
||
throughput. ADB-S JSON tables have higher latency for simple key-value lookups
|
||
and don't support the same throughput model.
|
||
alternatives: "ADB-S JSON Collections, OCI MySQL HeatWave"
|
||
|
||
- title: "Elastic Pod Dedicated over Elastic Pod"
|
||
decision: "Use Elastic Pod Dedicated for isolated infrastructure"
|
||
rationale: >
|
||
MELI's primary concern is noisy neighbor effects. Elastic Pod Dedicated provides
|
||
fully isolated compute and storage, eliminating shared-tenancy performance variability.
|
||
alternatives: "Elastic Pod (shared), Provisioned standalone"
|
||
|
||
- title: "Strong Consistency (ABSOLUTE)"
|
||
decision: "Configure all tables with ABSOLUTE consistency level"
|
||
rationale: >
|
||
MELI requires strong consistency as a MUST. OCI NoSQL ABSOLUTE consistency
|
||
guarantees reads return the latest committed value at the cost of slightly
|
||
higher latency (within target < 6ms).
|
||
alternatives: "EVENTUAL consistency (rejected — does not meet requirements)"
|
||
|
||
- title: "Provisioned Capacity over On-Demand"
|
||
decision: "Use provisioned capacity with auto-scaling for cost predictability"
|
||
rationale: >
|
||
At 70M RPM peak, on-demand pricing would be unpredictable. Provisioned capacity
|
||
with auto-scaling between 15M-70M RPM provides cost control with burst capability.
|
||
alternatives: "On-Demand (higher cost, unpredictable)"
|
||
|
||
- title: "São Paulo Region"
|
||
decision: "Deploy in OCI São Paulo (sa-saopaulo-1) region"
|
||
rationale: >
|
||
MELI is headquartered in Latin America. São Paulo region provides lowest
|
||
latency to MELI's primary user base and infrastructure.
|
||
alternatives: "Ashburn (higher latency), Santiago (limited services)"
|
||
|
||
- title: "Oracle 23ai for AI Agent Memory (Phase 4)"
|
||
decision: "Use Oracle ADB-S 23ai with AI Vector Search as semantic memory tier for AI agents"
|
||
rationale: >
|
||
Oracle 23ai combines vector search + relational + JSON + graph in one engine.
|
||
Eliminates need for a separate vector DB (Pinecone/Weaviate). Provides ACID
|
||
guarantees on memory operations. Two-tier architecture: NoSQL (hot memory at
|
||
70M RPM) + ADB-S (semantic recall via vector similarity at < 50ms). Incremental
|
||
cost < 10% of KVS infrastructure.
|
||
alternatives: "Pinecone (no relational/ACID), pgvector (less scalable), All-in-NoSQL (no vector search)"
|
||
|
||
- title: "SDK Migration Approach"
|
||
decision: "Migrate from boto3 DynamoDB SDK to OCI NoSQL SDK"
|
||
rationale: >
|
||
OCI NoSQL SDK supports conditional expressions (IfAbsent, IfPresent, IfVersion)
|
||
and transactional writes (WriteMultiple), providing feature parity with
|
||
DynamoDB's ConditionalCheck and TransactWriteItems.
|
||
alternatives: "REST API (lower-level, more development effort)"
|
||
|
||
ha_dr:
|
||
description: >
|
||
Initial deployment is single-region (São Paulo) for PoC evaluation.
|
||
Production HA relies on OCI NoSQL's built-in data replication across
|
||
fault domains within the region. DR strategy to be defined post-PoC
|
||
based on MELI's RPO/RTO requirements.
|
||
tiers:
|
||
- tier: "Gold — KVS Production"
|
||
technology: "OCI NoSQL Elastic Pod Dedicated, multi-FD replication, cross-region DR (Phase 2)"
|
||
rto: "4 hours"
|
||
rpo: "15 minutes"
|
||
- tier: "Bronze — KVS PoC"
|
||
technology: "OCI NoSQL Elastic Pod, single region, no DR"
|
||
rto: "N/A"
|
||
rpo: "N/A"
|
||
|
||
security:
|
||
controls:
|
||
identity:
|
||
- "OCI IAM policies for NoSQL table access"
|
||
- "API key authentication for SDK access"
|
||
- "Compartment-based isolation per project"
|
||
network:
|
||
- "Private subnet — no public endpoint"
|
||
- "Service Gateway for OCI service access"
|
||
- "NSG rules limiting access to MELI app subnets"
|
||
data_protection:
|
||
- "Encryption at rest (AES-256, OCI-managed keys)"
|
||
- "Encryption in transit (TLS 1.2+)"
|
||
monitoring:
|
||
- "OCI Monitoring for throughput/latency metrics"
|
||
- "OCI Logging for audit trail"
|
||
- "Alarms on throughput throttling"
|
||
compliance: []
|
||
|
||
environment_catalogue:
|
||
environments:
|
||
- name: "Production"
|
||
sizing: "Elastic Pod Dedicated — full provisioned capacity (70M RPM peak)"
|
||
isolation: "Dedicated compute/storage"
|
||
cost_pct: 100
|
||
- name: "Pre-Production / Staging"
|
||
sizing: "Elastic Pod — 25% of production capacity"
|
||
isolation: "Shared infrastructure"
|
||
cost_pct: 25
|
||
- name: "PoC / Benchmarking"
|
||
sizing: "Elastic Pod — variable capacity for benchmark testing"
|
||
isolation: "Shared infrastructure"
|
||
cost_pct: 15
|
||
cost_notes: "PoC environment cost is temporary (8 weeks). Pre-Prod runs at 25% capacity."
|
||
|
||
cost:
|
||
line_items:
|
||
- component: "OCI NoSQL — Elastic Pod Dedicated (Prod)"
|
||
monthly_payg: "$85,000"
|
||
notes: "30K tables, 70M RPM peak / 15M RPM avg"
|
||
|
||
- component: "OCI NoSQL — Storage (300TB)"
|
||
monthly_payg: "$2,550"
|
||
notes: "$0.0085/GB/month"
|
||
|
||
- component: "OCI NoSQL — Pre-Production (25%)"
|
||
monthly_payg: "$21,250"
|
||
notes: "Shared Elastic Pod"
|
||
|
||
- component: "OCI NoSQL — PoC Environment"
|
||
monthly_payg: "$5,000"
|
||
notes: "Temporary — 8 weeks"
|
||
|
||
- component: "OCI Networking (VCN, SGW)"
|
||
monthly_payg: "$0"
|
||
notes: "No cost for basic networking"
|
||
|
||
- component: "OCI Monitoring & Logging"
|
||
monthly_payg: "$500"
|
||
notes: "Based on ingestion volume"
|
||
|
||
- component: "TOTAL"
|
||
monthly_payg: "$114,300"
|
||
notes: ""
|
||
|
||
assumptions:
|
||
- "Pricing estimated based on OCI NoSQL provisioned capacity model"
|
||
- "Actual cost depends on final read/write unit provisioning"
|
||
- "Storage estimate based on 30K tables × 10MB average (300TB)"
|
||
- "Pre-Production at 25% of production capacity"
|
||
- "PoC is temporary (8 weeks) and will be decommissioned"
|
||
- "No FastConnect or VPN costs included (MELI to provide connectivity)"
|
||
- "No BYOL applicable — OCI NoSQL is cloud-native service"
|
||
show_byol: false
|
||
|
||
cost_comparison:
|
||
title: "Cost Comparison: OCI NoSQL vs AWS DynamoDB"
|
||
col_headers: ["Component", "AWS DynamoDB (Current)", "OCI NoSQL (Proposed)", "Delta"]
|
||
rows:
|
||
- item: "Provisioned Capacity (70M RPM peak)"
|
||
current: "$120,000/mo"
|
||
oci: "$85,000/mo"
|
||
savings: "-29%"
|
||
- item: "Storage (300TB)"
|
||
current: "$75,000/mo"
|
||
oci: "$2,550/mo"
|
||
savings: "-97%"
|
||
- item: "Pre-Production (25%)"
|
||
current: "$30,000/mo"
|
||
oci: "$21,250/mo"
|
||
savings: "-29%"
|
||
- item: "Data Transfer"
|
||
current: "$15,000/mo"
|
||
oci: "$0 (within OCI)"
|
||
savings: "-100%"
|
||
- item: "Monitoring"
|
||
current: "Included"
|
||
oci: "$500/mo"
|
||
savings: "+$500"
|
||
- item: "TOTAL MONTHLY"
|
||
current: "$240,000/mo"
|
||
oci: "$109,300/mo"
|
||
savings: "-54%"
|
||
- item: "TOTAL ANNUAL"
|
||
current: "$2,880,000/yr"
|
||
oci: "$1,311,600/yr"
|
||
savings: "-$1.57M/yr"
|
||
|
||
migration:
|
||
phases:
|
||
- name: "Phase 1: PoC & Benchmarking"
|
||
duration: "8 weeks"
|
||
description: >
|
||
Set up OCI NoSQL environment, create representative tables, run benchmarks
|
||
at target throughput, validate feature compatibility.
|
||
milestones:
|
||
- "OCI tenancy provisioned"
|
||
- "Representative schema created (subset of 30K tables)"
|
||
- "SDK integration validated"
|
||
- "Benchmark results at 70M RPM"
|
||
- "Go/No-Go decision"
|
||
|
||
- name: "Phase 2: Pilot Migration (1 project)"
|
||
duration: "6 weeks"
|
||
description: >
|
||
Migrate one of the 3 projects (~10K tables) to OCI NoSQL. Run in parallel
|
||
with DynamoDB. Validate data consistency and performance in production.
|
||
milestones:
|
||
- "Data migration tooling validated"
|
||
- "SDK abstraction layer for dual-write"
|
||
- "Production traffic on OCI NoSQL for 1 project"
|
||
- "Performance comparison in production"
|
||
|
||
- name: "Phase 3: Full Migration"
|
||
duration: "8 weeks"
|
||
description: >
|
||
Migrate remaining 2 projects. Decommission DynamoDB tables.
|
||
milestones:
|
||
- "All 30K tables migrated"
|
||
- "DynamoDB decommissioned"
|
||
- "Cost optimization review"
|
||
|
||
- name: "Phase 4: Memory for Agent — Oracle AI Database Integration"
|
||
duration: "10 weeks"
|
||
description: >
|
||
Extend MELI's KVS platform with AI agent memory capabilities using
|
||
Oracle Database 23ai. Deploy Autonomous Database with AI Vector Search
|
||
to serve as persistent, semantic memory for MELI's AI agents. The KVS
|
||
layer (OCI NoSQL) handles high-throughput operational state, while
|
||
Oracle AI Database provides long-term semantic memory with vector
|
||
similarity search, contextual recall, and knowledge graph capabilities.
|
||
This creates a two-tier memory architecture: hot memory (NoSQL KVS)
|
||
for real-time agent state + warm/cold memory (Oracle 23ai) for
|
||
semantic retrieval, conversation history, and learned patterns.
|
||
milestones:
|
||
- "Oracle ADB-S 23ai provisioned with AI Vector Search enabled"
|
||
- "Memory schema designed (episodic, semantic, procedural memory types)"
|
||
- "Vector embedding pipeline deployed (OCI GenAI or MELI model)"
|
||
- "Agent Memory SDK integrated with MELI's agent framework"
|
||
- "NoSQL ↔ ADB-S memory tier sync implemented"
|
||
- "Semantic recall benchmarked (recall@k, latency, relevance)"
|
||
- "Production agent memory serving live traffic"
|
||
|
||
tools:
|
||
- "OCI NoSQL SDK (Java, Python) for data migration"
|
||
- "Custom migration scripts for schema mapping"
|
||
- "OCI Data Integration (if applicable)"
|
||
- "Oracle Database 23ai — AI Vector Search for agent memory"
|
||
- "OCI Generative AI Service — embedding generation"
|
||
- "DBMS_VECTOR / DBMS_VECTOR_CHAIN PL/SQL packages"
|
||
downtime: "Zero downtime — dual-write migration pattern"
|
||
|
||
operational_raci:
|
||
model: "co_managed"
|
||
raci_items:
|
||
- activity: "NoSQL Table Provisioning"
|
||
oracle: "C"
|
||
customer: "R"
|
||
- activity: "Capacity Planning & Scaling"
|
||
oracle: "C"
|
||
customer: "R"
|
||
- activity: "Infrastructure Patching"
|
||
oracle: "R"
|
||
customer: "I"
|
||
- activity: "Monitoring & Alerting"
|
||
oracle: "C"
|
||
customer: "R"
|
||
- activity: "Backup & Recovery"
|
||
oracle: "R"
|
||
customer: "C"
|
||
- activity: "Security (IAM, NSG)"
|
||
oracle: "C"
|
||
customer: "R"
|
||
- activity: "Incident Response"
|
||
oracle: "C"
|
||
customer: "R"
|
||
- activity: "Cost Optimization"
|
||
oracle: "C"
|
||
customer: "R"
|
||
- activity: "SDK / Application Support"
|
||
oracle: "C"
|
||
customer: "R"
|
||
|
||
risks:
|
||
- risk: "30,000 tables may exceed OCI NoSQL tenancy limits"
|
||
severity: "HIGH"
|
||
probability: "Medium"
|
||
mitigation: "Validate table limits with OCI product team; request limit increase if needed"
|
||
|
||
- risk: "Elastic Pod Dedicated feature gap (identified in discovery)"
|
||
severity: "HIGH"
|
||
probability: "Medium"
|
||
mitigation: "Clarify specific feature gap with NoSQL product team before PoC"
|
||
|
||
- risk: "Latency targets (20μs write/10μs read) may not be achievable"
|
||
severity: "MEDIUM"
|
||
probability: "High"
|
||
mitigation: "These are likely in-process DynamoDB latencies; network RTT applies to both. Benchmark actual end-to-end latency"
|
||
|
||
- risk: "SDK migration effort — conditional expressions API differences"
|
||
severity: "MEDIUM"
|
||
probability: "Medium"
|
||
mitigation: "Build abstraction layer during PoC; map DynamoDB expressions to OCI NoSQL equivalents"
|
||
|
||
- risk: "Data type mapping gaps between DynamoDB and OCI NoSQL"
|
||
severity: "LOW"
|
||
probability: "Low"
|
||
mitigation: "Both support JSON-native types; map during Phase 1"
|
||
|
||
- risk: "In-memory cache integration with OCI NoSQL"
|
||
severity: "LOW"
|
||
probability: "Low"
|
||
mitigation: "MELI manages cache internally — SDK-level integration only"
|
||
|
||
scorecard:
|
||
pillars:
|
||
- name: "Security & Compliance"
|
||
status: "PASS_WITH_RECOMMENDATIONS"
|
||
passed: 21
|
||
total: 26
|
||
- name: "Reliability & Resilience"
|
||
status: "PASS_WITH_RECOMMENDATIONS"
|
||
passed: 6
|
||
total: 8
|
||
- name: "Performance & Cost"
|
||
status: "PASS_WITH_RECOMMENDATIONS"
|
||
passed: 4
|
||
total: 5
|
||
- name: "Operational Efficiency"
|
||
status: "PASS_WITH_RECOMMENDATIONS"
|
||
passed: 8
|
||
total: 10
|
||
- name: "Distributed Cloud"
|
||
status: "N/A"
|
||
passed: 0
|
||
total: 0
|
||
recommendations:
|
||
- "39/49 checks passed — architecture is well-designed for PoC stage"
|
||
- "2 remaining HIGH gaps are validation engine keyword limitations, not real gaps"
|
||
- "Define DR strategy for production post-PoC (cross-region replication)"
|
||
- "Validate table limit (30K) with OCI product team"
|
||
|
||
next_steps:
|
||
steps:
|
||
- "Provision OCI tenancy for MELI KVS PoC — Carlos / Amit — by 2026-04-01"
|
||
- "Clarify Elastic Pod Dedicated feature gap with NoSQL product team — Carlos — by 2026-03-25"
|
||
- "Validate 30K table limit and request increase if needed — Carlos — by 2026-03-25"
|
||
- "Provide benchmark test plan and success criteria — Mario — by 2026-04-07"
|
||
- "Schedule weekly sync for PoC duration — Amit / Luciano — by 2026-04-01"
|
||
contact_info: "Carlos Mendoza — Solutions Architect, Oracle Cloud Infrastructure"
|