Ο χαρακτήρας-υδρόγειος του Eco², προσαρμοσμένος για αυτό το portfolio από τον πιο πρόσφατο επίσημο κεντρικό χαρακτήρα: γαλάζια υδρόγειος με πράσινη ξηρά, ένα βλαστάρι στην κορυφή και καφέ χαμογελαστό πρόσωπο
Επιστροφή στην αίθουσα

Eco²

Backend · Cloud infrastructure

Οδηγίες ανακύκλωσης από μία φωτογραφία και μια συζήτηση.

Ένας ολοκληρωμένος βοηθός AI που κατανοεί πώς λειτουργεί η ανακύκλωση στην Κορέα.

2025.10.31 — 2026.02.10

Ομαδικό έργο · θεμέλια υποδομής και ανάπτυξης → backend τομέα → ασύγχρονη επεξεργασία, πράκτορας συνομιλίας, επαλήθευση

2025 새싹 해커톤 (Saessak Hackathon)Βραβείο Αριστείας · 2025.12.02

  • Web εφαρμογήΗ υπηρεσία έκλεισε

Eco² vocabulary

Lens
Service Path
Request Path
Async Work
Operations
Infrastructure
Measurement
  1. edge
  2. auth offload
  3. domain api
  1. task queue
  2. scan pipeline
  3. chat agent
  4. event bus
  1. cluster
  2. gitops
  3. autoscaling
  1. observability
  2. load test
  3. evaluation

Edge: ROUTE 53 · ALB · HTTPS 443 · internet-facing · external-dns · istio-ingressgateway · NodePort · eco2-gateway · VirtualService · x-canary · AuthorizationPolicy · ENVOY SIDECAR · kiali-serverAuth Offload: AuthorizationPolicy · action: CUSTOM · notPaths · envoyExtAuthzGrpc · failOpen: false · CheckRequest · x-user-id · BlacklistCache · BootstrapFromRedis · outbox:blacklist · blacklist.events · UsersServiceDomain API: VirtualService · x-user-id · /api/v1/scan · X-Idempotency-Key · job_id · stream_url · 202 ACCEPTED · Retry-After · ScanTask · UsersService · ImageService · ENVOY SIDECARTask Queue: outbox:blacklist · blacklist.events · RabbitmqCluster · scan.direct · reward.events · dlx · x-dead-letter-exchange · chat.process · AioPikaBroker · task_acks_late · apply_async · gevent · scan.vision · scan.rule · scan.answer · scan.reward · CELERY CHAIN · QueueLength · inspect ping · QUEUE SATURATIONScan Pipeline: ScanTask · scan.direct · reward.events · apply_async · gevent · scan.vision · scan.rule · scan.answer · scan.reward · CELERY CHAIN · RewardStep · item_class_list.yaml · situation_tags.yaml · LITE RAG · JsonRegulationRetriever · PipelineStage · waste_rag · XADD · domain: worker-ai · pipeline_duration · vision_stage_durationChat Agent: ImageService · chat.process · AioPikaBroker · create_chat_graph · route_by_intent · MULTI-INTENT FANOUT · waste_rag · recyclable_price · collection_point · image_generation · aggregator · thread_id · SyncableRedisSaver · AsyncPostgresSaver · LANGSMITH_TRACING · regenerateEvent Bus: job_id · stream_url · PipelineStage · XADD · scan:events:{shard} · XREADGROUP · XACK · XAUTOCLAIM · PendingReclaimer · STATE KV · scan:state:{job_id} · sse:events:{shard} · SSEBroadcastManager · Last-Event-ID · scan_sse_connections_active · ServiceMonitor · traceparentCluster: NodePort · kubeadm init · kubeadm join · vxlanMode · BGPConfiguration · module "vpc" · worker_ai · nodeSelector · domain: worker-ai · NoSchedule · 24-NODE CLUSTERGitOps: external-dns · x-canary · dev-root · ApplicationSet · sync-wave · selfHeal · ignoreDifferences · argocd-image-updater · update-strategy: digest · write-back-method · targetRevision · ci-services.ymlAutoscaling: ignoreDifferences · ScaledObject · QueueLength · cooldownPeriod · pollingInterval · fallback · maxReplicaCount · stabilizationWindowSeconds · HorizontalPodAutoscaler · scan_sse_connections_active · prometheus-adapterObservability: 24-NODE CLUSTER · prometheus-adapter · FLUENT BIT · Elasticsearch · Kibana · kube-prometheus-stack · AlertmanagerConfig · ServiceMonitor · JAEGER · OPENTELEMETRY · traceparent · kiali-server · LANGSMITH_TRACINGLoad Test: k6 · ramping-vus · thresholds · pipeline_duration · vision_stage_duration · poll_timeout · inspect ping · WORKER RESTART · POLLING TIMEOUT · QUEUE SATURATIONEvaluation: EvalConfig · eval_mode · eval_sample_rate · eval_cost_budget_daily_usd · EvalResult · EvalGrade · code_grader · llm_grader · CUSUM · regenerate · OpenAIBARSEvaluator

Πώς συνδέονται πραγματικά οι 24 κόμβοι, μία ροή τη φορά.

Αυτοδιαχειριζόμενο Kubernetes στημένο με kubeadm. Ο χάρτης τοποθετεί τους 24 φυσικούς κόμβους και τους φόρτους εργασίας τους μέσα στα πέντε επίπεδα του README και τους ενώνει με τις πραγματικές τους συνδέσεις. Η επιλογή μιας ροής επισημαίνει μόνο τη διαδρομή της, με αριθμημένα βήματα.

Αναγνωρίζει απορρίμματα από μια φωτογραφία και εξηγεί πώς απορρίπτονται, και στη συζήτηση καλεί εργαλεία για τοποθεσίες, καιρό, τιμές ανακύκλωσης και αναζήτηση στον ιστό, ενώ παράγει και εικόνες. Σε αυτό το ομαδικό έργο ξεκίνησα από τα θεμέλια της συστοιχίας και της ανάπτυξης και διεύρυνα το πεδίο μου στο backend τομέα, την ασύγχρονη επεξεργασία, τον πράκτορα συνομιλίας και την επαλήθευση.

Από την ανάπτυξη στον διαγωνισμό ως την ενίσχυση του backend και της λειτουργίας

Η υπηρεσία ολοκλήρωσε τη λειτουργία της. Ένα βίντεο επίδειξης και η τεχνική αναφορά τη δείχνουν εν λειτουργία.

Χάρτης συνδέσεων συστοιχίας · ξανασχεδιασμένος από τα manifests και τον κώδικα στο commit a072127
Χάρτης συνδέσεων συστοιχίας Eco² · 24 κόμβοιΧάρτης των 24 φυσικών κόμβων μέσα στις πέντε ζώνες επιπέδων του README. Το πρόγραμμα περιήγησης αναζητά μόνο το όνομα στο Route 53. Αφού το TLS τερματιστεί στο ALB στο 443, το Istio ingress Envoy σε ένα NodePort στέλνει το αίτημα σε ένα API τομέα. Το Scan API βάζει την εργασία σε ουρά στο RabbitMQ και επιστρέφει αμέσως ένα job_id, και ο scan-worker στη δεξαμενή AI γράφει με XADD συμβάντα προόδου στα Redis Streams. Ο Event Router τα διαβάζει, ενημερώνει το State KV και δημοσιεύει στο Pub/Sub, και το SSE Gateway τα στέλνει στο πρόγραμμα περιήγησης. Ο checkpoint-syncer αποθηκεύει τα checkpoints του Chat και ο persistence consumer στον κόμβο Chat αποθηκεύει τα μηνύματα στην PostgreSQL. Το Platform Layer δεν είναι διαδρομή αιτημάτων, αλλά ρυθμίζει, κλιμακώνει και παρατηρεί.Πρόγραμμα περιήγησηςHTTPS · SSEAWS ALB443 · εδώ τερματίζεται το TLSRoute 53DNSGitHub Actions · Docker Hubimage · έκδοση manifestLLM APIOpenAI · GoogleLangSmithΙχνηλάτηση εκτελέσεων LLMFluent BitDaemonSet · κάθε κόμβοςk8s-masterALB Controller · ExternalDNSArgo CD image updaterIstiodcontrol planek8s-ingress-gatewayIstio ingress Envoyk8s-api-scanScan APIk8s-api-chatChat APImessage consumerpersistence consumerk8s-api-authauth APIext-authzk8s-api-infoInfo APIinfo-workerk8s-api-charactercharacter APIk8s-api-imageimages APIk8s-api-usersusers APIk8s-api-locationlocation APIk8s-sse-gatewaySSE Gatewayk8s-event-routerEvent Routerk8s-rabbitmqRabbitMQk8s-worker-aik8s-worker-ai-2k8s-worker-storagek8s-worker-storage-2k8s-redis-pubsubPub/Subk8s-redis-streamsStreamsState KVk8s-redis-cacheCachek8s-postgresqlPostgreSQLk8s-redis-authblacklistk8s-monitoringKEDAPrometheusGrafanaAlertmanagerk8s-loggingElasticsearchKibanascan-workerchat-workercheckpoint-syncerauth-relayauth-workerusers-workercharacter-workercharacter-match-workerKialiJaeger · dev in-memoryΣυστοιχία Kubernetes24 κόμβοι · kubeadmEdge Layer1 κόμβοςService Layer8 κόμβοι · Envoy sidecarIntegration Layer7 κόμβοιPersistence Layer5 κόμβοιPlatform Layer3 κόμβοι · ρύθμιση · κλιμάκωση · παρατήρησηΔιαχειριζόμενο από AWSΔεξαμενή AIdomain: worker-aiδεξαμενή storagedomain: worker-storageΧωρίς σταθερό κόμβο1Αναζήτηση DNS2 HTTPS 443 · Πρόγραμμα περιήγησης → AWS ALB23HTTP · NodePort4VirtualService5Εργασία Celery6 consume · RabbitMQ → scan-worker67 HTTPS · Δεξαμενή AI → LLM API78XADD scan:events9XREADGROUP10SETEX state11PUBLISH12SUBSCRIBE13Ροή SSE14Ανάκτηση κατά την επανασύνδεση1 HTTPS 443 · Πρόγραμμα περιήγησης → AWS ALB12HTTP · NodePort3VirtualService4Εργασία Taskiq5 consume · RabbitMQ → chat-worker56 HTTPS · Δεξαμενή AI → LLM API67XADD chat:events8XREADGROUP9PUBLISH10SUBSCRIBE11Ροή SSE12checkpoint13ανάγνωση checkpoint14συγχρονισμός σε PostgreSQL15chat-persistence group16αποθήκευση μηνυμάτων1Αναζήτηση DNS2 HTTPS 443 · Πρόγραμμα περιήγησης → AWS ALB23HTTP · NodePort4ext-authz · gRPC 500515αναζήτηση blacklist6VirtualService7gRPC8gRPC1outbox:blacklist2blacklist.events3 blacklist.events · RabbitMQ → auth-worker34αποθήκευση blacklist5 Celery batch · RabbitMQ → users-worker56UPSERT1image · έκδοση manifest2Ingress → ALB · εγγραφές DNS3Ρύθμιση xDS4πλήθος pods5 πλήθος pods · KEDA → δεξαμενή storage56αρχεία καταγραφής7 Ιχνηλάτηση εκτελέσεων LLM · Δεξαμενή AI → LangSmith7

Αίτημα Scan → ζωντανή παράδοση

Ένα αίτημα ανάλυσης φωτογραφίας γίνεται εργασία σε ουρά, και τα συμβάντα προόδου του επιστρέφουν στο ίδιο πρόγραμμα περιήγησης.

  1. Πρόγραμμα περιήγησηςαναζήτηση DNS: Αναζήτηση DNSRoute 53

    Από τις εγγραφές Route 53 επιλύεται μόνο το όνομα. Τα αιτήματα δεν περνούν από το DNS.

  2. Πρόγραμμα περιήγησηςροή δεδομένων: HTTPS 443AWS ALB

    Το TLS τερματίζεται στο ALB.

  3. AWS ALBροή δεδομένων: HTTP · NodePortIstio ingress Envoyk8s-ingress-gateway

    Παραδίδεται στο Istio ingress Envoy μέσω του NodePort του στόχου EC2 instance.

  4. Istio ingress Envoyk8s-ingress-gatewayροή δεδομένων: VirtualServiceScan APIk8s-api-scan

    Δρομολογείται στο Scan API, που βάζει την εργασία σε ουρά και επιστρέφει αμέσως ένα job_id. Το ερώτημα αποτελέσματος απαντά 202 μέχρι να ολοκληρωθεί η εργασία.

  5. Scan APIk8s-api-scanροή δεδομένων: Εργασία CeleryRabbitMQk8s-rabbitmq

    Η εργασία Scan μπαίνει στο RabbitMQ.

  6. RabbitMQk8s-rabbitmqροή δεδομένων: consumescan-workerk8s-worker-ai · k8s-worker-ai-2

    Ο scan-worker (Celery · gevent) στη δεξαμενή AI την παραλαμβάνει και εκτελεί Vision → Rule → Answer → Reward. Τα τέσσερα στάδια είναι αλυσιδωτά tasks του Celery, όχι κόμβοι.

  7. Δεξαμενή AIk8s-worker-ai · k8s-worker-ai-2ροή δεδομένων: HTTPSLLM API

    Οι workers scan και chat καλούν τα API της OpenAI και της Google.

  8. scan-workerk8s-worker-ai · k8s-worker-ai-2ροή δεδομένων: XADD scan:eventsStreamsk8s-redis-streams

    Τα συμβάντα προόδου γράφονται σε ένα από τα τέσσερα shards των Streams.

  9. Streamsk8s-redis-streamsροή δεδομένων: XREADGROUPEvent Routerk8s-event-router

    Ο Event Router τα διαβάζει ως consumer group και κάνει XACK μετά την επεξεργασία. Τα pending και reclaim διατηρούν την παράδοση at-least-once.

  10. Event Routerk8s-event-routerροή δεδομένων: SETEX stateState KVk8s-redis-streams

    Γράφει την τελευταία κατάσταση και μια σήμανση διπλής επεξεργασίας στο State KV στον ίδιο κόμβο Redis.

  11. Event Routerk8s-event-routerροή δεδομένων: PUBLISHPub/Subk8s-redis-pubsub

    Παραδίδονται σε πραγματικό χρόνο στο κανάλι της εργασίας στο shard Pub/Sub.

  12. Pub/Subk8s-redis-pubsubροή δεδομένων: SUBSCRIBESSE Gatewayk8s-sse-gateway

    Το SSE Gateway εγγράφεται μέσω ενός κοινόχρηστου listener ανά διεργασία και διανέμει σε κάθε συνδεδεμένο πρόγραμμα περιήγησης.

  13. SSE Gatewayk8s-sse-gatewayροή δεδομένων: Ροή SSEΠρόγραμμα περιήγησης

    Σύνδεση που ανοίγει μέσω της ίδιας διαδρομής ALB και ingress. Η παράδοση είναι at-least-once, και τα διπλότυπα χειρίζονται ταυτοδύναμα.

  14. State KVk8s-redis-streamsροή δεδομένων: Ανάκτηση κατά την επανασύνδεσηSSE Gatewayk8s-sse-gateway

    Σε επανασύνδεση με Last-Event-ID, το State KV και τα διατηρημένα Streams συμπληρώνουν τα συμβάντα που χάθηκαν.

Chat · tokens και αποθήκευση

Τα tokens του Chat ακολουθούν την ίδια διαδρομή συμβάντων με το Scan, ενώ τα checkpoints και τα μηνύματα αποθηκεύονται από δύο διαφορετικούς φόρτους εργασίας.

  1. Πρόγραμμα περιήγησηςροή δεδομένων: HTTPS 443AWS ALB

    Το TLS τερματίζεται στο ALB.

  2. AWS ALBροή δεδομένων: HTTP · NodePortIstio ingress Envoyk8s-ingress-gateway

    Παραδίδεται στο Istio ingress Envoy μέσω του NodePort του στόχου EC2 instance.

  3. Istio ingress Envoyk8s-ingress-gatewayροή δεδομένων: VirtualServiceChat APIk8s-api-chat

    Δρομολογείται στο Chat API.

  4. Chat APIk8s-api-chatροή δεδομένων: Εργασία TaskiqRabbitMQk8s-rabbitmq

    Η εργασία Chat μπαίνει στο RabbitMQ.

  5. RabbitMQk8s-rabbitmqροή δεδομένων: consumechat-workerk8s-worker-ai · k8s-worker-ai-2

    Ο chat-worker (Taskiq · asyncio) ταξινομεί την πρόθεση με το LangGraph, έπειτα εκτελεί το vision αν χρειάζεται, τα επιλεγμένα εργαλεία, τον aggregator και μια σύνοψη αν χρειάζεται, και απαντά. Κάθε αίτημα εκτελεί μόνο τους κλάδους που χρειάζεται.

  6. Δεξαμενή AIk8s-worker-ai · k8s-worker-ai-2ροή δεδομένων: HTTPSLLM API

    Οι workers scan και chat καλούν τα API της OpenAI και της Google.

  7. chat-workerk8s-worker-ai · k8s-worker-ai-2ροή δεδομένων: XADD chat:eventsStreamsk8s-redis-streams

    Τα tokens και τα συμβάντα σταδίων γράφονται σε τέσσερα shards των Streams. Από εκεί η διαδρομή παράδοσης είναι ίδια με του Scan.

  8. Streamsk8s-redis-streamsροή δεδομένων: XREADGROUPEvent Routerk8s-event-router

    Ο Event Router τα διαβάζει ως consumer group και κάνει XACK μετά την επεξεργασία. Τα pending και reclaim διατηρούν την παράδοση at-least-once.

  9. Event Routerk8s-event-routerροή δεδομένων: PUBLISHPub/Subk8s-redis-pubsub

    Παραδίδονται σε πραγματικό χρόνο στο κανάλι της εργασίας στο shard Pub/Sub.

  10. Pub/Subk8s-redis-pubsubροή δεδομένων: SUBSCRIBESSE Gatewayk8s-sse-gateway

    Το SSE Gateway εγγράφεται μέσω ενός κοινόχρηστου listener ανά διεργασία και διανέμει σε κάθε συνδεδεμένο πρόγραμμα περιήγησης.

  11. SSE Gatewayk8s-sse-gatewayροή δεδομένων: Ροή SSEΠρόγραμμα περιήγησης

    Σύνδεση που ανοίγει μέσω της ίδιας διαδρομής ALB και ingress. Η παράδοση είναι at-least-once, και τα διπλότυπα χειρίζονται ταυτοδύναμα.

  12. chat-workerk8s-worker-ai · k8s-worker-ai-2ροή δεδομένων: checkpointCachek8s-redis-cache

    Το checkpoint του LangGraph κρατιέται στο Redis Cache.

  13. Cachek8s-redis-cacheροή δεδομένων: ανάγνωση checkpointcheckpoint-syncerk8s-worker-ai · k8s-worker-ai-2

    Ο checkpoint-syncer διαβάζει το checkpoint από το Redis.

  14. checkpoint-syncerk8s-worker-ai · k8s-worker-ai-2ροή δεδομένων: συγχρονισμός σε PostgreSQLPostgreSQLk8s-postgresql

    Το AsyncPostgresSaver το αποθηκεύει ασύγχρονα στην PostgreSQL.

  15. Streamsk8s-redis-streamsροή δεδομένων: chat-persistence grouppersistence consumerk8s-api-chat

    Ο persistence consumer στον κόμβο Chat διαβάζει συμβάντα done ως consumer group.

  16. persistence consumerk8s-api-chatροή δεδομένων: αποθήκευση μηνυμάτωνPostgreSQLk8s-postgresql

    Τα μηνύματα του Chat αποθηκεύονται στην PostgreSQL. Είναι διαφορετικός φόρτος εργασίας από τον checkpoint-syncer.

Είσοδος · ταυτοποίηση

Η σύγχρονη διαδρομή από την είσοδο της συστοιχίας σε ένα Domain API. Μόνο οι διαδρομές που προστατεύει πολιτική ελέγχουν πρώτα την ταυτοποίηση, και η κίνηση Pods μεταξύ κόμβων τρέχει σε Calico VXLAN.

  1. Πρόγραμμα περιήγησηςαναζήτηση DNS: Αναζήτηση DNSRoute 53

    Από τις εγγραφές Route 53 επιλύεται μόνο το όνομα. Τα αιτήματα δεν περνούν από το DNS.

  2. Πρόγραμμα περιήγησηςροή δεδομένων: HTTPS 443AWS ALB

    Το TLS τερματίζεται στο ALB.

  3. AWS ALBροή δεδομένων: HTTP · NodePortIstio ingress Envoyk8s-ingress-gateway

    Παραδίδεται στο Istio ingress Envoy μέσω του NodePort του στόχου EC2 instance.

  4. Istio ingress Envoyk8s-ingress-gatewayροή δεδομένων: ext-authz · gRPC 50051ext-authzk8s-api-auth

    Μόνο οι διαδρομές υπό πολιτική CUSTOM ρωτούν πρώτα το Go ext-authz (χρονικό όριο 2 s, failOpen false). Διαδρομές όπως login, health και docs εξαιρούνται.

  5. ext-authzk8s-api-authροή δεδομένων: αναζήτηση blacklistblacklistk8s-redis-auth

    Το token ελέγχεται απέναντι στη blacklist του Redis.

  6. Istio ingress Envoyk8s-ingress-gatewayροή δεδομένων: VirtualServiceChat APIk8s-api-chat

    Δρομολογείται στο Chat API.

  7. Chat APIk8s-api-chatροή δεδομένων: gRPCimages APIk8s-api-image

    Η σύγχρονη κλήση chat → images που αναφέρεται στο README.

  8. auth APIk8s-api-authροή δεδομένων: gRPCusers APIk8s-api-users

    Η σύγχρονη κλήση auth → users που αναφέρεται στο README.

Δεξαμενή storage · ασύγχρονες εγγραφές

Η blacklist ταυτοποίησης και η ιδιοκτησία χαρακτήρων αποθηκεύονται από workers της δεξαμενής storage που παίρνουν τη δουλειά τους από το RabbitMQ.

  1. blacklistk8s-redis-authροή δεδομένων: outbox:blacklistauth-relayk8s-worker-storage · k8s-worker-storage-2

    Ο auth-relay (το auth-Bus του README) διαβάζει το outbox του Redis.

  2. auth-relayk8s-worker-storage · k8s-worker-storage-2ροή δεδομένων: blacklist.eventsRabbitMQk8s-rabbitmq

    Αναδημοσιεύει στο RabbitMQ, με επαναλήψεις και DLQ.

  3. RabbitMQk8s-rabbitmqροή δεδομένων: blacklist.eventsauth-workerk8s-worker-storage · k8s-worker-storage-2

    Ο auth-worker λαμβάνει τα συμβάντα blacklist.

  4. auth-workerk8s-worker-storage · k8s-worker-storage-2ροή δεδομένων: αποθήκευση blacklistblacklistk8s-redis-auth

    Αποθηκεύονται στη blacklist του Redis.

  5. RabbitMQk8s-rabbitmqροή δεδομένων: Celery batchusers-workerk8s-worker-storage · k8s-worker-storage-2

    Ο users-worker λαμβάνει σε παρτίδες εργασίες ιδιοκτησίας χαρακτήρων.

  6. users-workerk8s-worker-storage · k8s-worker-storage-2ροή δεδομένων: UPSERTPostgreSQLk8s-postgresql

    Εφαρμόζεται στην PostgreSQL.

Ρύθμιση · κλιμάκωση · παρατήρηση

Το Platform Layer δεν είναι βήμα από το οποίο περνούν αιτήματα, αλλά αναπτύσσει, ρυθμίζει, κλιμακώνει και παρατηρεί τα άλλα επίπεδα. Οι κόμβοι είναι instances EC2 που δημιούργησε το Terraform, με kubeadm και Calico εγκατεστημένα από το Ansible. Το CI μόνο επικυρώνει το Terraform και δεν το εφαρμόζει ποτέ αυτόματα.

  1. GitHub Actions · Docker Hubρύθμιση · κλιμάκωση: image · έκδοση manifestArgo CD image updaterk8s-master

    Το Argo CD ευθυγραμμίζει τη διάταξη της συστοιχίας μέσω App-of-Apps και Sync Waves. Η τοποθέτηση στο control-plane επιβεβαιώθηκε μόνο για τον image updater.

  2. ALB Controller · ExternalDNSk8s-masterρύθμιση · κλιμάκωση: Ingress → ALB · εγγραφές DNSΔιαχειριζόμενο από AWS

    Ο ALB Controller και το ExternalDNS ρυθμίζουν πόρους στην πλευρά του AWS. Δεν είναι διαδρομή που ακολουθούν τα αιτήματα.

  3. Istiodk8s-masterρύθμιση · κλιμάκωση: Ρύθμιση xDSIstio ingress Envoyk8s-ingress-gateway

    Το Istiod στέλνει μέσω xDS τις ρυθμίσεις Gateway, VirtualService και EnvoyFilter στο ingress Envoy και στο Envoy sidecar κάθε API.

  4. KEDAk8s-monitoringρύθμιση · κλιμάκωση: πλήθος podsΔεξαμενή AIk8s-worker-ai · k8s-worker-ai-2

    Το KEDA προσαρμόζει το πλήθος των pods των workers. Το πλήθος των κόμβων δεν αλλάζει.

  5. KEDAk8s-monitoringρύθμιση · κλιμάκωση: πλήθος podsδεξαμενή storagek8s-worker-storage · k8s-worker-storage-2

    Τα pods των workers της δεξαμενής storage κλιμακώνονται με τον ίδιο τρόπο.

  6. Fluent Bitπαρατηρησιμότητα: αρχεία καταγραφήςElasticsearchk8s-logging

    Το Fluent Bit είναι DaemonSet σε κάθε κόμβο και στέλνει τα αρχεία καταγραφής στο Elasticsearch.

  7. Δεξαμενή AIk8s-worker-ai · k8s-worker-ai-2παρατηρησιμότητα: Ιχνηλάτηση εκτελέσεων LLMLangSmith

    Τα ίχνη κλήσεων LLM πηγαίνουν στο LangSmith, ένα εξωτερικό SaaS.

Κάθε σύνδεση με το ίδιο πάχος. Επιλέξτε μια ροή για να επισημανθεί μόνο η διαδρομή της, με αριθμημένα βήματα.

  • Συνεχής · η κατεύθυνση ροής αιτημάτων, εργασιών, συμβάντων και εγγραφών
  • Με τελείες · αναζήτηση DNS, τα αιτήματα δεν περνούν από εκεί
  • Διακεκομμένη · ρύθμιση ή κλιμάκωση, όχι διαδρομή δεδομένων
  • Μακριά παύλα-τελεία · αρχεία καταγραφής και ιχνηλάτηση εκτελέσεων
  • Παχιά μαύρη γραμμή · η επιλεγμένη ροή, οι αριθμοί δίνουν τη σειρά
  • Κουτί · φυσικός κόμβος, με το όνομα του host στην κεφαλίδα
  • Εσωτερικό τσιπ · φόρτος εργασίας που τρέχει σε αυτόν τον κόμβο
  • Διακεκομμένο πλαίσιο · δεξαμενή χρονοπρογραμματισμού δύο κόμβων
  • Διακεκομμένο κουτί · εκτός της συστοιχίας, δεν μετρά ως κόμβος
  • Πορτοκαλί περίγραμμα · σημείο όπου αποφασίζει ένα μοντέλο
  • Control plane1 κόμβος
  • Domain API8 κόμβοι
  • Δεξαμενή AI2 κόμβοι
  • δεξαμενή storage2 κόμβοι
  • Data5 κόμβοι
  • Platform6 κόμβοι

Τα πέντε επίπεδα του README (οι ζώνες) και οι φυσικές ομάδες (η απόχρωση της κεφαλίδας κάθε κόμβου) ομαδοποιούν διαφορετικά τους ίδιους 24 κόμβους. Το State KV μοιράζεται τον κόμβο Streams και δεν μετριέται χωριστά, ενώ το Route 53, το ALB και οι υπηρεσίες εκτός συστοιχίας δεν είναι κόμβοι. Μια δεξαμενή είναι εύρος χρονοπρογραμματισμού, όχι ισχυρισμός ότι κάθε pod τρέχει και στους δύο κόμβους.

Διάταξη 24 κόμβων · από τη λίστα κόμβων του dashboard της January 21, 2026

24κόμβοι

24 = 1 control plane + 8 API + 4 worker + 5 data + 6 platform

  1. 1Control plane

    role: control-plane

    kube-apiserver · scheduler · controller-manager · etcd, καθώς και οι ελεγκτές της πλατφόρμας.

    1. k8s-master
  2. 8Domain API

    domain: <υπηρεσία>

    Ένας κόμβος ανά τομέα. Οι εσωτερικές κλήσεις χρησιμοποιούν gRPC.

    1. k8s-api-auth
    2. k8s-api-users
    3. k8s-api-scan
    4. k8s-api-character
    5. k8s-api-location
    6. k8s-api-image
    7. k8s-api-chat
    8. k8s-api-info
  3. 4Execution worker

    Δύο δεξαμενές χρονοπρογραμματισμού με δύο κόμβους η καθεμία. Το KEDA αλλάζει το πλήθος των pods, ενώ το πλήθος των κόμβων μένει ίδιο.

    δεξαμενή storagedomain: worker-storage
    1. k8s-worker-storage
    2. k8s-worker-storage-2
    Δεξαμενή AIdomain: worker-ai
    1. k8s-worker-ai
    2. k8s-worker-ai-2
  4. 5Data

    Το Redis χωρίζεται σε τέσσερις κόμβους ανά χρήση. Ο χώρος αποθήκευσης του PostgreSQL είναι EBS CSI · gp3.

    1. k8s-postgresql
    2. k8s-redis-auth
    3. k8s-redis-streams
    4. k8s-redis-cache
    5. k8s-redis-pubsub
  5. 6Platform

    Η ανταλλαγή μηνυμάτων, η παρατηρησιμότητα, το ingress και η παράδοση σε πραγματικό χρόνο έχουν το καθένα τον δικό του κόμβο.

    1. k8s-rabbitmq
    2. k8s-monitoring
    3. k8s-logging
    4. k8s-ingress-gateway
    5. k8s-sse-gateway
    6. k8s-event-router
Κάθε κόμβος
  • Fluent Bit · DaemonSet
  • Calico

Ρυθμισμένα μοντέλα · ανά πάροχο

Η υπηρεσία έχει κλείσει, οπότε αυτά είναι τα μοντέλα που ήταν ρυθμισμένα στο αποθετήριο, όχι επιλογές διαθέσιμες σήμερα. Κάθε ρόλος αναφέρεται χωριστά, και δεν είναι λίστα επαληθευμένων εκτελέσεων.

  • OpenAI

    Προεπιλεγμένος πάροχος του Chat

    Chat

    • openai/gpt-5.2προεπιλογή

    Το προεπιλεγμένο μοντέλο είναι το gpt-5.2. Αν το αίτημα ορίζει μοντέλο, χρησιμοποιείται εκείνο.

    Scan

    • gpt-5.2προεπιλογή
    • gpt-5.2-pro
    • gpt-5.1
    • gpt-5
    • gpt-5-pro
    • gpt-5-mini

    Μοντέλα εκτός της αντιστοίχισης 13 μοντέλων απορρίπτονται.

    Αντιστοίχιση εικόνων

    • gpt-image-1.5

    Χωριστά από το gpt-5.2, το μοντέλο ενορχήστρωσης του Responses. Η παραγωγή εικόνων είναι απενεργοποιημένη από προεπιλογή.

    Αξιολόγηση

    • gpt-4o-miniπροεπιλογή

    Ο βαθμολογητής LLM για την αξιολόγηση συνομιλιών, χωριστός από το μοντέλο του Chat.

  • Google

    Όταν το Chat επιλέγει Google

    Chat

    • google/gemini-3-pro-preview
    • google/gemini-3-flash-preview

    Με επιλεγμένη την Google, προεπιλογή είναι το gemini-3-flash-preview.

    Scan

    • gemini-3-pro-preview
    • gemini-3-flash-preview
    • gemini-2.5-pro
    • gemini-2.5-flash
    • gemini-2.5-flash-lite
    • gemini-2.0-flash
    • gemini-2.0-flash-lite

    Αντιστοίχιση εικόνων

    • gemini-3-pro-image-preview