348 lines
8.5 KiB
YAML
348 lines
8.5 KiB
YAML
# Architecture Patterns - Common patterns identified from requirements
|
|
|
|
requirement_patterns:
|
|
realtime_collaboration:
|
|
triggers:
|
|
- "real-time"
|
|
- "collaborative"
|
|
- "live updates"
|
|
- "multi-user"
|
|
- "simultaneous editing"
|
|
decisions_needed:
|
|
- websocket_solution
|
|
- conflict_resolution
|
|
- state_synchronization
|
|
- presence_tracking
|
|
- optimistic_updates
|
|
suggested_stack:
|
|
- "Socket.io or WebSocket native"
|
|
- "Redis for pub/sub"
|
|
- "Operational Transforms or CRDTs for conflict resolution"
|
|
- "PostgreSQL for persistence"
|
|
|
|
ecommerce:
|
|
triggers:
|
|
- "shopping cart"
|
|
- "checkout"
|
|
- "payments"
|
|
- "inventory"
|
|
- "product catalog"
|
|
decisions_needed:
|
|
- payment_processor
|
|
- cart_persistence
|
|
- inventory_management
|
|
- order_workflow
|
|
- tax_calculation
|
|
suggested_stack:
|
|
- "Stripe or PayPal for payments"
|
|
- "PostgreSQL for products and orders"
|
|
- "Redis for cart sessions"
|
|
- "BullMQ for order processing"
|
|
|
|
saas_platform:
|
|
triggers:
|
|
- "multi-tenant"
|
|
- "subscription"
|
|
- "billing"
|
|
- "team management"
|
|
- "roles and permissions"
|
|
decisions_needed:
|
|
- tenancy_model
|
|
- subscription_billing
|
|
- permission_system
|
|
- team_collaboration
|
|
- usage_tracking
|
|
suggested_stack:
|
|
- "PostgreSQL with Row Level Security"
|
|
- "Stripe Billing for subscriptions"
|
|
- "RBAC or ABAC for permissions"
|
|
- "NextAuth or Clerk for auth"
|
|
|
|
content_platform:
|
|
triggers:
|
|
- "CMS"
|
|
- "blog"
|
|
- "publishing"
|
|
- "content management"
|
|
- "editorial workflow"
|
|
decisions_needed:
|
|
- content_storage
|
|
- rich_text_editor
|
|
- media_handling
|
|
- version_control
|
|
- publishing_workflow
|
|
suggested_stack:
|
|
- "PostgreSQL for structured content"
|
|
- "S3 or Cloudinary for media"
|
|
- "Tiptap or Slate for rich text"
|
|
- "Algolia for search"
|
|
|
|
data_analytics:
|
|
triggers:
|
|
- "dashboards"
|
|
- "reporting"
|
|
- "metrics"
|
|
- "analytics"
|
|
- "data visualization"
|
|
decisions_needed:
|
|
- data_warehouse
|
|
- etl_pipeline
|
|
- visualization_library
|
|
- query_optimization
|
|
- caching_strategy
|
|
suggested_stack:
|
|
- "PostgreSQL or ClickHouse"
|
|
- "Apache Airflow or Temporal for ETL"
|
|
- "Chart.js or D3 for visualization"
|
|
- "Redis for query caching"
|
|
|
|
social_platform:
|
|
triggers:
|
|
- "social network"
|
|
- "feed"
|
|
- "following"
|
|
- "likes"
|
|
- "comments"
|
|
decisions_needed:
|
|
- graph_relationships
|
|
- feed_algorithm
|
|
- notification_system
|
|
- content_moderation
|
|
- privacy_controls
|
|
suggested_stack:
|
|
- "PostgreSQL with graph extensions or Neo4j"
|
|
- "Redis for feed caching"
|
|
- "Elasticsearch for user search"
|
|
- "WebSockets for notifications"
|
|
|
|
marketplace:
|
|
triggers:
|
|
- "marketplace"
|
|
- "vendors"
|
|
- "buyers and sellers"
|
|
- "transactions"
|
|
- "escrow"
|
|
decisions_needed:
|
|
- payment_splitting
|
|
- escrow_handling
|
|
- vendor_management
|
|
- dispute_resolution
|
|
- commission_model
|
|
suggested_stack:
|
|
- "Stripe Connect for payments"
|
|
- "PostgreSQL for transactions"
|
|
- "BullMQ for async processing"
|
|
- "S3 for vendor assets"
|
|
|
|
streaming_platform:
|
|
triggers:
|
|
- "video streaming"
|
|
- "live streaming"
|
|
- "media delivery"
|
|
- "broadcast"
|
|
decisions_needed:
|
|
- video_encoding
|
|
- cdn_strategy
|
|
- streaming_protocol
|
|
- bandwidth_optimization
|
|
- drm_protection
|
|
suggested_stack:
|
|
- "AWS MediaConvert or Mux"
|
|
- "CloudFront or Fastly CDN"
|
|
- "HLS or DASH protocol"
|
|
- "S3 for video storage"
|
|
|
|
iot_platform:
|
|
triggers:
|
|
- "IoT"
|
|
- "sensors"
|
|
- "device management"
|
|
- "telemetry"
|
|
- "edge computing"
|
|
decisions_needed:
|
|
- message_protocol
|
|
- time_series_database
|
|
- device_authentication
|
|
- data_ingestion
|
|
- edge_processing
|
|
suggested_stack:
|
|
- "MQTT or CoAP protocol"
|
|
- "TimescaleDB or InfluxDB"
|
|
- "Apache Kafka for ingestion"
|
|
- "Grafana for monitoring"
|
|
|
|
ai_application:
|
|
triggers:
|
|
- "machine learning"
|
|
- "AI features"
|
|
- "LLM integration"
|
|
- "computer vision"
|
|
- "NLP"
|
|
decisions_needed:
|
|
- model_serving
|
|
- vector_database
|
|
- prompt_management
|
|
- token_optimization
|
|
- fallback_strategy
|
|
suggested_stack:
|
|
- "OpenAI or Anthropic API"
|
|
- "Pinecone or pgvector for embeddings"
|
|
- "Redis for prompt caching"
|
|
- "Langchain or LlamaIndex"
|
|
|
|
# Quality attribute patterns
|
|
quality_attributes:
|
|
high_availability:
|
|
triggers:
|
|
- "99.9% uptime"
|
|
- "high availability"
|
|
- "fault tolerance"
|
|
- "disaster recovery"
|
|
architectural_needs:
|
|
- load_balancing
|
|
- database_replication
|
|
- health_checks
|
|
- circuit_breakers
|
|
- graceful_degradation
|
|
|
|
high_performance:
|
|
triggers:
|
|
- "millisecond response"
|
|
- "high throughput"
|
|
- "low latency"
|
|
- "performance critical"
|
|
architectural_needs:
|
|
- caching_layers
|
|
- database_optimization
|
|
- cdn_strategy
|
|
- code_splitting
|
|
- lazy_loading
|
|
|
|
high_security:
|
|
triggers:
|
|
- "compliance"
|
|
- "HIPAA"
|
|
- "GDPR"
|
|
- "financial data"
|
|
- "PCI DSS"
|
|
architectural_needs:
|
|
- encryption_at_rest
|
|
- encryption_in_transit
|
|
- audit_logging
|
|
- access_controls
|
|
- data_isolation
|
|
|
|
scalability:
|
|
triggers:
|
|
- "millions of users"
|
|
- "elastic scale"
|
|
- "global reach"
|
|
- "viral growth"
|
|
architectural_needs:
|
|
- horizontal_scaling
|
|
- database_sharding
|
|
- microservices
|
|
- queue_systems
|
|
- auto_scaling
|
|
|
|
# Integration patterns
|
|
integration_requirements:
|
|
payment_processing:
|
|
common_choices:
|
|
- "Stripe - most developer friendly"
|
|
- "PayPal - widest consumer adoption"
|
|
- "Square - best for in-person + online"
|
|
considerations:
|
|
- transaction_fees
|
|
- international_support
|
|
- subscription_handling
|
|
- marketplace_capabilities
|
|
|
|
email_service:
|
|
common_choices:
|
|
- "Resend - modern, developer friendly"
|
|
- "SendGrid - mature, scalable"
|
|
- "Amazon SES - cost effective at scale"
|
|
- "Postmark - transactional focus"
|
|
considerations:
|
|
- deliverability
|
|
- template_management
|
|
- analytics_needs
|
|
- cost_per_email
|
|
|
|
sms_notifications:
|
|
common_choices:
|
|
- "Twilio - most comprehensive"
|
|
- "Amazon SNS - AWS integrated"
|
|
- "Vonage - competitive pricing"
|
|
considerations:
|
|
- international_coverage
|
|
- delivery_rates
|
|
- two_way_messaging
|
|
- cost_per_message
|
|
|
|
authentication_providers:
|
|
social_providers:
|
|
- "Google - highest adoption"
|
|
- "GitHub - developer focused"
|
|
- "Microsoft - enterprise"
|
|
- "Apple - iOS users"
|
|
enterprise_providers:
|
|
- "SAML 2.0"
|
|
- "OAuth 2.0"
|
|
- "OpenID Connect"
|
|
- "Active Directory"
|
|
|
|
# Decision heuristics
|
|
decision_rules:
|
|
database_selection:
|
|
if_requirements_include:
|
|
- complex_relationships: "PostgreSQL"
|
|
- flexible_schema: "MongoDB"
|
|
- time_series: "TimescaleDB"
|
|
- graph_data: "Neo4j or PostgreSQL with extensions"
|
|
- key_value: "Redis"
|
|
- wide_column: "Cassandra"
|
|
|
|
api_pattern_selection:
|
|
if_requirements_include:
|
|
- simple_crud: "REST"
|
|
- complex_queries: "GraphQL"
|
|
- type_safety_critical: "tRPC"
|
|
- microservices: "gRPC"
|
|
- public_api: "REST with OpenAPI"
|
|
|
|
deployment_selection:
|
|
if_requirements_include:
|
|
- nextjs_only: "Vercel"
|
|
- complex_infrastructure: "AWS"
|
|
- quick_prototype: "Railway"
|
|
- global_edge: "Fly.io"
|
|
- kubernetes_needed: "GCP or AWS EKS"
|
|
|
|
# Anti-patterns to avoid
|
|
anti_patterns:
|
|
overengineering:
|
|
signs:
|
|
- "Microservices for < 10k users"
|
|
- "Kubernetes for single app"
|
|
- "GraphQL for 5 endpoints"
|
|
- "Event sourcing for CRUD app"
|
|
recommendation: "Start simple, evolve as needed"
|
|
|
|
underengineering:
|
|
signs:
|
|
- "No authentication strategy"
|
|
- "No error handling plan"
|
|
- "No monitoring approach"
|
|
- "No backup strategy"
|
|
recommendation: "Cover the fundamentals"
|
|
|
|
technology_soup:
|
|
signs:
|
|
- "5+ different databases"
|
|
- "Multiple frontend frameworks"
|
|
- "Inconsistent patterns"
|
|
- "Too many languages"
|
|
recommendation: "Maintain consistency"
|