Documents/reference/Glossary

Glossary

Glossary

Terminology used throughout the Legacy Platform Modernization project.


Architecture & Patterns

Term Definition
Monolith Architecture where the entire application is deployed as a single unit. All modules share the same codebase, process, and database
Microservices Architecture that splits an application into small, independently deployable services, each owning its own data
Strangler Fig Migration pattern — incrementally replace parts of the monolith with new services, running in parallel until the monolith is fully retired. Named after the Strangler Fig tree that wraps around and replaces its host
ACL (Anti-Corruption Layer) Intermediary layer between new services and the legacy system. Translates contracts/formats between both sides, preventing legacy from corrupting the new architecture
Bounded Context DDD concept — an autonomous boundary for a domain. Each bounded context = a potential microservice, owning its own models and logic
DDD (Domain-Driven Design) Software design methodology centered on the business domain. Divides systems along domain boundaries rather than technical layers
CQRS (Command Query Responsibility Segregation) Pattern that separates read models (query) from write models (command). Reporting Service uses this pattern — read-only, no writes
Event-Driven Architecture Architecture where services communicate via events. Service A publishes an event, Service B subscribes and reacts. Loose coupling, async
Clean Architecture Layered code structure: Domain → Application → Infrastructure → API. Dependencies point inward (domain knows nothing about infrastructure)
API Gateway Single entry point for all client requests. Routes traffic to the correct service. Handles cross-cutting concerns: auth, rate limiting, logging
Service Mesh Infrastructure layer managing service-to-service communication: mTLS, retry, circuit breaking. Typically transparent to application code

Data & Database

Term Definition
CDC (Change Data Capture) Technique that captures all database changes (insert/update/delete) in real-time. Used to sync data from the legacy DB to new service DBs without modifying legacy code
Per-Service Database Each microservice owns its own database. No service directly accesses another service's DB. Communication via APIs or events
Read Replica A read-only copy of a database. Reporting Service reads from replicas to avoid impacting the primary service's performance
ETL (Extract, Transform, Load) Process of extracting data from a source, transforming its format, and loading it into a target. Used for initial one-time bulk data migration
Dual-Write Writing data simultaneously to 2 databases. Risky because consistency is hard to guarantee — generally avoided in favor of CDC
Event Store Stores all domain events in chronological order. Foundation for AI/ML analytics — replay events to analyze business patterns
Feature Store Pre-processed data warehouse for ML models. Aggregated features from raw events + operational data
Schema Migration Changing database structure (add/modify/remove tables, columns). Managed via EF Core migrations or Flyway

Infrastructure & DevOps

Term Definition
IaC (Infrastructure as Code) Managing infrastructure (servers, DBs, networking) via code instead of manually. This project uses Bicep (Azure-native)
Bicep Microsoft's IaC tool for Azure. Simpler syntax than ARM templates. Azure-native. Chosen over Terraform because the team is 100% Azure
CI/CD Continuous Integration / Continuous Deployment. Automatically build, test, and deploy code on push
GitHub Actions CI/CD platform integrated into GitHub. Runs workflows on events (push, PR, schedule)
Docker Container platform — packages an application + dependencies into an image that runs consistently anywhere
Azure Container Apps Managed container platform on Azure. Serverless, auto-scale, no Kubernetes cluster management required
ACR (Azure Container Registry) Registry for storing Docker images on Azure. CI builds image → pushes to ACR → deploys from ACR
YARP (Yet Another Reverse Proxy) .NET-native reverse proxy by Microsoft. Used as the API Gateway + Strangler Fig router
Rolling Update Deployment strategy — gradually deploy new instances while retiring old ones. Zero downtime
Canary Deployment Release strategy — route a small fraction of traffic (5%) to the new version, monitor, then gradually increase
Blue-Green Deployment Two identical environments (blue = current, green = new). Switch traffic from blue → green when ready
Feature Flag Toggle to enable/disable a feature in production without redeploying. Acts as a kill switch for fast rollback

Communication & Messaging

Term Definition
Azure Service Bus Azure's managed message broker. Supports topics, subscriptions, dead-letter queues. Enterprise-grade
Topic A publish/subscribe channel. Publisher sends messages to a topic, multiple subscribers receive them
Subscription An enrollment to receive messages from a topic. Each service has its own subscription, receiving independent message copies
Dead Letter Queue (DLQ) Queue for messages that couldn't be processed. Instead of losing the message → move it to the DLQ for later handling
Idempotency Property where performing the same operation multiple times yields the same result. Critical when the Event Bus retries messages
Correlation ID A unique ID used to trace a single request across multiple services. Generated at the API Gateway, propagated through all services
REST (Representational State Transfer) Synchronous communication style over HTTP. Request → Response. Used for client calls and queries
gRPC High-performance RPC framework using Protocol Buffers. Faster than REST for service-to-service. Under consideration for future use
MCP (Model Context Protocol) Protocol connecting AI models to external tools/data sources. Enables AI agents to query DBs, trigger CI, read docs

Testing

Term Definition
Contract Testing Tests verifying that 2 services are compatible (API contract). Consumer declares expectations → Provider verifies compliance
Pact The most popular contract testing framework. Consumer-driven: consumer writes tests first, provider verifies afterward
Unit Test Tests a single function/class in isolation. Fast, no external dependencies. Largest portion of the test pyramid
Integration Test Tests interaction with external systems (DB, message bus, APIs). Slower than unit tests, uses Docker in CI
E2E Test (End-to-End) Tests the entire flow from UI to DB. Slowest and most fragile. Only used for critical paths
Playwright / Cypress Tools for running E2E tests in a browser. Simulate user interactions
TDD (Test-Driven Development) Write tests first → write code to pass → refactor. With AI: AI generates tests first → AI generates implementation
SAST (Static Application Security Testing) Scans source code for security vulnerabilities without running the app. CodeQL is one SAST tool
DAST (Dynamic Application Security Testing) Scans a running application for vulnerabilities. Tests with real HTTP requests
Load Test Tests system performance under high load. Simulates 40K concurrent users

Observability

Term Definition
OpenTelemetry (OTel) Standard framework for distributed tracing, metrics, and logging. Vendor-neutral — exports data to any backend
Distributed Tracing Tracks a single request across multiple services. Shows per-service latency and identifies bottlenecks
Serilog Structured logging library for .NET. Outputs JSON logs → easy to query, filter, and analyze
Structured Logging Key-value format logs instead of plain text. E.g., {event: "booking_created", bookingId: "BK-123"} instead of "Booking BK-123 created"
Health Check Endpoint (/health, /ready) indicating whether a service is operational and ready to receive traffic. Used by load balancers + orchestrators
Anomaly Detection AI/ML detection of abnormal behavior in metrics/logs. E.g., latency spikes, error rate surges
Jaeger / Zipkin Backends for distributed tracing. Receive trace data from OpenTelemetry, display trace timelines
Seq / ELK Log aggregation platforms. Seq (structured log server), ELK (Elasticsearch-Logstash-Kibana)
SLA / SLO / SLI SLA: commitment to customer (99.9% uptime). SLO: internal target. SLI: actual measurement metric

AI & AI-First

Term Definition
AI-First Mindset where AI is the default approach. AI executes first, humans review after. Not "AI assists" but "AI executes, humans decide"
AI Multiplier Productivity factor when using AI. 2x = 5 engineers produce the output of 10. Calculated as a weighted average by task type
Agentic AI AI that autonomously plans → executes → verifies → iterates. Not just answering questions but completing tasks end-to-end
Cursor Pro AI-integrated IDE (VS Code fork). Agent mode edits multi-file. @codebase queries the entire codebase
Claude Code Anthropic's CLI agent. Runs in terminal, autonomously codes → tests → commits. Ideal for batch migration
CodeRabbit AI auto-review tool for PRs. Integrates with GitHub/GitLab. First-pass review, flags issues for humans
Prompt Library Collection of tested and optimized prompts, versioned in git. Shared across the team for consistency
Prompt-as-Code Managing prompts like code: version control, review changes, test before deploying
AI Hallucination AI generates incorrect information but presents it confidently. E.g., calling nonexistent methods, wrong logic that looks correct
AI Governance Process for managing AI usage within the team: review gates, quality checks, security scanning, knowledge transfer
RAG (Retrieval-Augmented Generation) Pattern: retrieve relevant data from a knowledge base → feed into the AI model → generate answer. Reduces hallucination
LLM (Large Language Model) Large AI model trained on massive text data. Claude, GPT-4o, Gemini are LLMs
Few-shot Prompting Providing the AI with a few examples (shots) before the request → AI learns patterns from examples → more accurate output
Fine-tuning Additional training on proprietary data. Unlike prompting — modifies model weights. Generally unnecessary for code tasks

Project Management

Term Definition
Shape Up Project management framework by Basecamp. 6-week cycles, appetite-based (fixed time, variable scope), no story point estimation
Appetite Shape Up concept — "how much time are we willing to invest in this feature?" instead of "how long will this feature take?"
Cooldown The final week of each Shape Up cycle. Dedicated to tech debt, learning, experimentation. No feature work
WIP Limit Limit on tasks "in progress" simultaneously. Prevents context switching. WIP limit = team size (1 task/person)
Bus Factor Minimum number of people who must leave before the project stalls. Bus factor = 1 = dangerous. Target ≥ 2 for every module
ADR (Architecture Decision Record) Document recording an architecture decision: context, decision, alternatives considered, consequences. Stored in repo
Spike Time-boxed research task. Delivers knowledge, not code. E.g., "2-day spike to evaluate which CDC tool fits best"
Vertical Slice A complete feature from UI → API → DB. Instead of finishing all APIs before starting the UI
Tech Debt Shortcuts in code/architecture accepted for speed. Must be repaid (refactored) later — otherwise compounds
Scope Creep Uncontrolled project scope expansion. "Just add this small feature" × 20 times = missed deadline

Domain-Specific (Product A)

Term Definition
Product A Enterprise travel, event & operations management platform. ~40,000 global users
Travel Booking Module for: search, booking, itineraries, travel service providers
Event Management Module for: event creation, scheduling, venues, attendee management
Payment Processing Module for: payments, invoicing, reconciliation. Frozen in Phase 1 — no changes
Workforce Management Module for: personnel, assignments, shifts, skills
Communications Notification module: email, SMS, push notifications, templates
Operational Reporting Reporting module: dashboards, data exports, cross-module reports
Allocation Algorithm Algorithm for automatically assigning personnel based on skills, availability, and constraints

PhoenixDX Context

Term Definition
PhoenixDX Company — AI-first engineering hub in Ho Chi Minh City
Vietnam Hub New R&D center focused on AI-augmented engineering and enterprise modernization
Phase 0 Month 1 — setup AI toolchain, ingest legacy codebase, Comms pilot migration, CI/CD, IaC, team training
Phase 1 Month 2–4 — Core Services: Travel Booking go-live (M3), Event Management go-live (M4)
Phase 2 Month 5–7 — Scale Out: Workforce (M6), Communications + Reporting go-live (M7)
Phase 3 Month 8–9 — Hardening: performance, monitoring, DR, documentation, Payment ACL v2
Legacy Modernization Framework PhoenixDX framework: rebuild frontend (React) + extract backend (.NET 8 microservices) + event-driven + per-service DB
2x Multiplier AI productivity target: 5 engineers producing the output of 10 through agentic AI workflows

High Availability & Deployment

Term Definition
Azure Front Door Global load balancer + WAF + DDoS protection. Routes users to the nearest healthy region, auto-failover < 60s
Geo-Replication Replicates databases across Azure regions. Async replication < 5s lag. Auto-failover groups for DR
RTO (Recovery Time Objective) Maximum acceptable recovery time after an outage. Target: < 5 min (service), < 60s (region)
RPO (Recovery Point Objective) Maximum acceptable data loss during failover. Target: < 30s (async replication lag)
Error Budget SLO-based: allowed downtime/errors per month (e.g., 0.05% = 26 min). Exceeding budget → feature freeze
Shadow Mode Traffic mirroring: send a copy of requests to the new service, discard responses. Validates without affecting users
Compare Mode Send requests to both legacy and new service, compare responses. Find mismatches before switching traffic
Dual-Write Transition DB transition phases: Phase A (legacy writes, CDC syncs), Phase B (both write), Phase C (new writes, legacy deprecated)
Man-Month Capacity unit: 1 engineer working full-time for 1 month. Project: 45 raw, ~44 effective (with AI 2x)
Canary Deploy Route 5% traffic to the new version, monitor 30 min–48h, gradually increase to 100%. Auto-rollback if errors exceed threshold

DDD (Domain-Driven Design)

Term Definition
Entity Object with a unique identity (ID). Lifecycle: created → modified → deleted. E.g., Booking, User, Event
Value Object Object without identity, compared by value. Immutable. E.g., Money(100, "USD"), DateRange, Address
Aggregate Cluster of entities + value objects with 1 Aggregate Root. Transaction boundary: save/load as a unit. E.g., Booking (root) + BookingItems + Travelers
Aggregate Root The sole entry point into an aggregate. External code references the aggregate only through its root
Domain Event Records "something happened" in the domain. Past tense: BookingCreated, PaymentProcessed. Triggers side effects within/across services
Repository Interface for accessing aggregates from persistence. E.g., IBookingRepository.GetById(id). Implementation: EF Core
Domain Service Logic that doesn't belong to a single entity, stateless. E.g., PricingService.CalculateTotal(booking, rules)
Application Service Orchestrates use cases, contains no business logic. MediatR handler = application service
Ubiquitous Language Shared language between developers and business within a bounded context. Code must reflect business language
Context Map Diagram describing relationships between bounded contexts: customer-supplier, ACL, shared kernel, partnership
Shared Kernel A small shared model between 2+ bounded contexts. Must be kept minimal: UserId, Money, DateRange
Subdomain Subdivision of a domain: Core (competitive advantage), Supporting (needed but not a differentiator), Generic (commodity)