Diskussion

Systemarchitekt-Experten-Prompt

Von Wikiprompt, der freien Prompt-Enzyklopädie

Kaan Demir
Beigetragen vonKaan DemirQuelle

19. März 2026

Systemarchitekt-Experten-Prompt Ein umfassender Systemprompt für die Rolle eines Senior Software Architects, der aufgabenorientierte Ausführung, Architekturdesign-Workflows, Best Practices und Qualitätschecklisten abdeckt.

Prompt-InhaltSpeichern

🌐
# System Architecture Design: AI-Powered Image Generation Platform ## Context ### Business Requirements - Build a scalable AI image generation platform supporting multiple models (Stable Diffusion, DALL-E, Midjourney) - Support real-time generation requests with streaming results - Handle concurrent users with varying workload patterns - Provide REST API and WebSocket interfaces for client applications - Support batch processing for bulk image generation tasks ### Technical Constraints - Existing infrastructure: AWS cloud environment - Team expertise: Python backend, React frontend - Budget: Mid-tier startup budget - Timeline: MVP in 3 months, full platform in 6 months - Regulatory: GDPR compliance for user data ### Non-Functional Requirements - **Performance**: P95 latency < 5 seconds for single image generation - **Scalability**: Support 1000 concurrent users, 100 requests/second peak - **Availability**: 99.9% uptime SLA - **Security**: SOC2 compliance, encryption at rest and in transit - **Cost**: Optimize GPU usage, target < $0.10 per image generation ### Assumptions - GPU instances will be the bottleneck resource - Image generation models are pre-trained and require no fine-tuning initially - Users primarily generate images individually, not in bulk --- ## Architecture Plan ### Phase 1: MVP Architecture (Months 1-3) - [ ] **ARCH-PLAN-1.1 [API Gateway Service]**: - **Responsibility**: Request routing, authentication, rate limiting - **Technology**: Python/FastAPI, AWS API Gateway - **Communication**: REST (HTTPS), WebSocket for streaming - **Scaling**: Stateless, horizontal scaling with auto-scaling group - [ ] **ARCH-PLAN-1.2 [Generation Orchestrator]**: - **Responsibility**: Queue management, model selection, result aggregation - **Technology**: Python/Celery, Redis queue - **Communication**: Async message queue (Redis), REST callbacks - **Scaling**: Stateless workers, horizontal scaling based on queue depth - [ ] **ARCH-PLAN-1.3 [GPU Worker Pool]**: - **Responsibility**: Execute image generation models - **Technology**: Python/PyTorch, AWS EC2 G4 instances - **Communication**: Redis queue consumer, S3 for result storage - **Scaling**: Stateful (model loading), horizontal scaling with warm pools - [ ] **ARCH-PLAN-1.4 [Result Storage Service]**: - **Responsibility**: Store generated images, metadata, and user history - **Technology**: AWS S3 for images, PostgreSQL for metadata - **Communication**: REST API, S3 presigned URLs - **Scaling**: Stateless, horizontal scaling with read replicas - [ ] **ARCH-PLAN-1.5 [User Management Service]**: - **Responsibility**: User accounts, API keys, usage quotas - **Technology**: Python/FastAPI, PostgreSQL - **Communication**: REST API, JWT tokens - **Scaling**: Stateless, horizontal scaling ### Phase 2: Enhanced Architecture (Months 4-6) - [ ] **ARCH-PLAN-2.1 [Model Registry Service]**: - **Responsibility**: Model versioning, A/B testing, model metadata - **Technology**: Python/FastAPI, PostgreSQL, S3 - **Communication**: REST API, event streaming (Kafka) - **Scaling**: Stateless, horizontal scaling - [ ] **ARCH-PLAN-2.2 [Batch Processing Service]**: - **Responsibility**: Handle bulk generation requests, job scheduling - **Technology**: Python/Celery, Redis, SQS - **Communication**: Async message queue, webhook callbacks - **Scaling**: Stateless workers, horizontal scaling - [ ] **ARCH-PLAN-2.3 [Analytics Service]**: - **Responsibility**: Usage metrics, cost tracking, performance monitoring - **Technology**: Python/FastAPI, InfluxDB, Grafana - **Communication**: Event streaming (Kafka), REST API - **Scaling**: Stateless, horizontal scaling --- ## Architecture Items ### Core Design Decisions - [ ] **ARCH-ITEM-1.1 [Microservices vs Monolith]**: - **Decision**: Use microservices architecture with clear bounded contexts - **Rationale**: Different scaling requirements for API vs GPU workers, independent deployment - **Trade-offs**: Increased operational complexity, distributed system challenges - **Alternatives**: Monolith with worker processes - rejected due to scaling constraints - [ ] **ARCH-ITEM-1.2 [Queue-Based Load Balancing]**: - **Decision**: Use Redis queue for generation requests, not direct HTTP to workers - **Rationale**: Decouples API from GPU workers, allows burst handling, enables retry logic - **Trade-offs**: Added latency (~50ms), requires queue monitoring - **Alternatives**: Direct HTTP calls - rejected due to tight coupling and scaling issues - [ ] **ARCH-ITEM-1.3 [GPU Pool Management]**: - **Decision**: Maintain warm GPU pools with model pre-loaded - **Rationale**: Model loading takes 10-30 seconds, warm pools reduce latency to < 5 seconds - **Trade-offs**: Idle GPU cost, complex pool sizing - **Alternatives**: Cold start per request - rejected due to latency requirements - [ ] **ARCH-ITEM-1.4 [Result Storage Strategy]**: - **Decision**: Store images in S3, metadata in PostgreSQL - **Rationale**: S3 provides durable, scalable storage; PostgreSQL enables complex queries - **Trade-offs**: Two systems to manage, eventual consistency between S3 and DB - **Alternatives**: MongoDB GridFS - rejected due to less mature ecosystem ### Data Consistency and Resilience - [ ] **ARCH-ITEM-2.1 [Consistency Model]**: - **Decision**: Eventual consistency for generation results, strong consistency for user data - **Rationale**: Generation results are immutable once created; user data requires immediate consistency - **Trade-offs**: Users may see delayed results in rare failure cases - **Alternatives**: Strong consistency everywhere - rejected due to performance impact - [ ] **ARCH-ITEM-2.2 [Circuit Breaker Pattern]**: - **Decision**: Implement circuit breakers for all downstream service calls - **Rationale**: Prevents cascading failures when GPU workers or storage services degrade - **Trade-offs**: Added complexity, potential false positives - **Alternatives**: Simple timeouts - rejected due to lack of failure isolation - [ ] **ARCH-ITEM-2.3 [Retry Strategy]**: - **Decision**: Exponential backoff with jitter for transient failures (max 3 retries) - **Rationale**: Handles transient GPU failures and network issues without overwhelming services - **Trade-offs**: Added latency for failed requests - **Alternatives**: No retries - rejected due to reliability requirements ### Security and Compliance - [ ] **ARCH-ITEM-3.1 [Authentication and Authorization]**: - **Decision**: JWT-based authentication with API key support - **Rationale**: Stateless authentication scales well, API keys for programmatic access - **Trade-offs**: Token revocation complexity - **Alternatives**: OAuth2 with refresh tokens - rejected for MVP simplicity - [ ] **ARCH-ITEM-3.2 [Data Encryption]**: - **Decision**: AES-256 encryption at rest, TLS 1.3 in transit - **Rationale**: SOC2 compliance requirement, industry standard - **Trade-offs**: Slight performance overhead - **Alternatives**: No encryption - rejected due to compliance requirements ### Scalability and Performance - [ ] **ARCH-ITEM-4.1 [Horizontal Scaling Strategy]**: - **Decision**: Auto-scaling for stateless services, manual scaling for GPU pools - **Rationale**: Stateless services scale easily; GPU pools require careful capacity planning - **Trade-offs**: Manual GPU scaling may cause latency spikes during demand surges - **Alternatives**: Full auto-scaling - rejected due to GPU instance startup time - [ ] **ARCH-ITEM-4.2 [Caching Strategy]**: - **Decision**: Redis cache for frequently accessed images and model metadata - **Rationale**: Reduces S3 and database load, improves response times - **Trade-offs**: Cache invalidation complexity - **Alternatives**: No caching - rejected due to performance requirements --- ## Proposed Code Changes ### File: `services/api_gateway/main.py` ```python # API Gateway Service - FastAPI Application from fastapi import FastAPI, HTTPException, Depends from fastapi.middleware.cors import CORSMiddleware from redis import Redis import jwt import uuid app = FastAPI(title="Image Generation API") # CORS configuration app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_methods=["*"], allow_headers=["*"], ) # Redis connection for queue redis_client = Redis(host='redis-service', port=6379, decode_responses=True) @app.post("/v1/generations") async def create_generation(request: GenerationRequest, user: User = Depends(get_current_user)): """ Create a new image generation request """ # Validate user quota if not check_quota(user.id): raise HTTPException(status_code=429, detail="Quota exceeded") # Generate unique request ID request_id = str(uuid.uuid4()) # Queue the generation request queue_payload = { "request_id": request_id, "user_id": user.id, "prompt": request.prompt, "model": request.model, "parameters": request.parameters } # Push to Redis queue redis_client.lpush("generation_queue", json.dumps(queue_payload)) # Return request ID for polling return {"request_id": request_id, "status": "queued"} @app.get("/v1/generations/{request_id}") async def get_generation(request_id: str, user: User = Depends(get_current_user)): """ Get generation status and result """ # Check Redis for status status = redis_client.get(f"generation:{request_id}:status") if not status: raise HTTPException(status_code=404, detail="Request not found") if status == "completed": result = redis_client.get(f"generation:{request_id}:result") return {"status": "completed", "result": json.loads(result)} return {"status": status} ``` ### File: `services/gpu_worker/worker.py` ```python # GPU Worker - Celery Task from celery import Celery import torch from diffusers import StableDiffusionPipeline import boto3 import json app = Celery('gpu_worker', broker='redis://redis-service:6379/0') # Initialize model (loaded once per worker) model = StableDiffusionPipeline.from_pretrained( "runwayml/stable-diffusion-v1-5", torch_dtype=torch.float16 ) model.to("cuda") @app.task(bind=True, max_retries=3) def generate_image(self, request_data): """ Generate image based on request parameters """ try: # Extract parameters prompt = request_data['prompt'] model_name = request_data['model'] parameters = request_data.get('parameters', {}) # Generate image result = model( prompt=prompt, height=parameters.get('height', 512), width=parameters.get('width', 512), num_inference_steps=parameters.get('steps', 50), guidance_scale=parameters.get('guidance_scale', 7.5) ) # Save to S3 s3 = boto3.client('s3') image_bytes = result.images[0].tobytes() s3_key = f"generations/{request_data['request_id']}.png" s3.put_object( Bucket='image-generations', Key=s3_key, Body=image_bytes, ContentType='image/png' ) # Update status in Redis redis_client = self.app.backend.client redis_client.set( f"generation:{request_data['request_id']}:status", "completed" ) redis_client.set( f"generation:{request_data['request_id']}:result", json.dumps({"image_url": f"s3://image-generations/{s3_key}"}) ) return {"status": "completed", "request_id": request_data['request_id']} except Exception as exc: # Retry with exponential backoff raise self.retry(exc=exc, countdown=2 ** self.request.retries) ``` ### File: `docker-compose.yml` ```yaml version: '3.8' services: api-gateway: build: ./services/api_gateway ports: - "8000:8000" environment: - REDIS_HOST=redis - DATABASE_URL=postgresql://user:pass@db:5432/imggen depends_on: - redis - db deploy: replicas: 3 update_config: parallelism: 1 delay: 10s restart_policy: condition: on-failure gpu-worker: build: ./services/gpu_worker environment: - REDIS_HOST=redis - AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID} - AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY} depends_on: - redis deploy: replicas: 2 resources: reservations: devices: - driver: nvidia count: 1 capabilities: [gpu] redis: image: redis:7-alpine ports: - "6379:6379" command: redis-server --appendonly yes volumes: - redis-data:/data db: image: postgres:15-alpine environment: - POSTGRES_USER=user - POSTGRES_PASSWORD=pass - POSTGRES_DB=imggen volumes: - postgres-data:/var/lib/postgresql/data volumes: redis-data: postgres-data: ``` --- ## Commands ### Local Development ```bash # Start development environment docker-compose up -d # Run API tests cd services/api_gateway pytest tests/ -v # Run worker tests cd services/gpu_worker pytest tests/ -v # Local model testing (requires GPU) python -m tests.test_model --model stable-diffusion-v1-5 ``` ### CI/CD Pipeline ```bash # Build and push Docker images docker build -t api-gateway:latest ./services/api_gateway docker build -t gpu-worker:latest ./services/gpu_worker # Run integration tests docker-compose -f docker-compose.test.yml up --abort-on-container-exit # Deploy to staging kubectl apply -f k8s/staging/ # Deploy to production (after approval) kubectl apply -f k8s/production/ ``` ### Monitoring Commands ```bash # Check queue depth redis-cli llen generation_queue # Check worker health curl http://api-gateway:8000/health # View metrics kubectl get hpa kubectl top pods ``` --- ## Quality Assurance Checklist - [ ] All business requirements have traceable architectural provisions - [ ] Non-functional requirements are addressed with specific design decisions - [ ] Component boundaries are justified with bounded context analysis - [ ] Resilience patterns are specified for all inter-service communication - [ ] Technology selections include justification and alternative analysis - [ ] Implementation roadmap has clear phases, dependencies, and MVP definition - [ ] Risk analysis covers technical, operational, and organizational risks ## Risk Analysis ### Technical Risks - **High**: GPU instance availability during peak demand - **Mitigation**: Maintain buffer capacity, implement spot instance fallback - **Medium**: Model inference time variability - **Mitigation**: Implement adaptive queue prioritization, timeout monitoring - **Low**: Data corruption in S3 - **Mitigation**: Versioning enabled, cross-region replication ### Operational Risks - **High**: GPU cost overruns - **Mitigation**: Implement cost monitoring, auto-shutdown for idle pools - **Medium**: Team learning curve for Kubernetes - **Mitigation**: Start with Docker Compose, migrate to K8s in phase 2 - **Low**: Vendor lock-in with AWS - **Mitigation**: Use containerization, abstract cloud services ### Organizational Risks - **Medium**: Scope creep during MVP phase - **Mitigation**: Strict MVP definition, feature freeze after 2 months - **Low**: Team capacity constraints - **Mitigation**: Prioritize critical path, consider outsourcing non-core components --- ## Implementation Roadmap ### Phase 1: MVP (Months 1-3) - **Month 1**: API Gateway, Redis queue, basic GPU worker - **Month 2**: Result storage, user management, basic monitoring - **Month 3**: Integration testing, load testing, production deployment ### Phase 2: Enhanced (Months 4-6) - **Month 4**: Model registry, batch processing - **Month 5**: Analytics service, advanced monitoring - **Month 6**: Performance optimization, feature completion ### Post-MVP Enhancements - Multi-region deployment - Advanced model management (fine-tuning support) - Cost optimization algorithms - User-facing analytics dashboard

Melde dich an, um den vollständigen Prompt zu sehen

Weiter mit:

Mit der Anmeldung akzeptierst du unsere Nutzungsbedingungen und Datenschutz

Verwendung

Dieser Prompt ist für die Verwendung mit coding gedacht. Kopiere den Inhalt oben und füge ihn in dein bevorzugtes KI-Tool ein.

Für beste Ergebnisse passe die Platzhalter (eckige Klammern oder Großbuchstaben) an deine Anforderungen an.

Referenzen

Kategorien:coding| prompts.chat| system-architect| software-architecture

Diskussion