Wprowadzenie
Stos technologiczny
DataFlow AI to wielojęzyczna platforma integracji danych ETL — mikrousługi Kotlin/Spring, usługi AI w Python/FastAPI, CLI w Go oraz aplikacja jednostronicowa w React/Vite. Ta strona jest autorytatywnym inwentarzem każdej technologii w monorepozytorium, zweryfikowanym względem manifestów budowania projektu.
Źródło prawdy
Każda wersja na tej stronie jest zweryfikowana względem build.gradle.kts, libs.versions.toml, pyproject.toml, go.mod, package.json, docker-compose.yml oraz definicji .github/workflows/. Traktuj te manifesty jako kanoniczne, jeśli wersja kiedykolwiek odejdzie od tej strony.
Języki i środowiska uruchomieniowe
Platforma obejmuje pięć języków, z których każdy wybrano dla konkretnego podsystemu.
| Język | Wersja | Używany do | Źródło |
|---|---|---|---|
| Kotlin | 2.0.21 | Mikrousługi platformy (Spring Boot) | backend/platform/gradle/libs.versions.toml |
| Java (JVM) | 21 (Temurin) | Środowisko uruchomieniowe JVM / cel budowania dla usług Kotlin | Dockerfile, CI setup-java |
| Python | 3.12 (^3.12) | Usługi AI (Copilot, Silnik Migracji) | pyproject.toml |
| Go | 1.22 | CLI dataflow | backend/cli/go.mod |
| TypeScript | ~5.9.3 | Aplikacja jednostronicowa frontendu | frontend/package.json |
| Node.js | 20 | Budowanie frontendu / środowisko uruchomieniowe CI | CI setup-node |
Frameworki backendowe (Kotlin / JVM)
Pięć wdrażalnych usług JVM oraz dwa moduły bibliotek są zbudowane na Spring Boot. api-gateway jest reaktywny (WebFlux / Spring Cloud Gateway); pozostałe usługi używają Spring MVC.
| Komponent | Wersja | Przeznaczenie |
|---|---|---|
| Spring Boot | 3.3.5 | Framework mikrousług — web, JPA, security, actuator, validation, websocket |
| Spring Cloud | 2023.0.3 | BOM platformy chmurowej |
| Spring Cloud Gateway | przez BOM | Reaktywne trasowanie bramy API |
| Spring Security OAuth2 Resource Server + JOSE | przez BOM | Walidacja JWT |
| Wtyczka Spring Dependency Management | 1.1.6 | Rozwiązywanie zależności oparte na BOM |
| Kotlin Coroutines | 1.7.3 | Wsparcie asynchroniczności w module common |
| Jackson | 2.17.2 (core 2.16.1 w common) | Serializacja JSON / YAML / CSV (jackson-module-kotlin, jsr310) |
Frameworki AI / Python
Usługi copilot i migration-engine to aplikacje FastAPI w Python 3.12 zarządzane za pomocą Poetry.
| Komponent | Wersja | Przeznaczenie |
|---|---|---|
| FastAPI | ^0.115.0 | API HTTP dla Copilota i Silnika Migracji |
| Uvicorn (standard) | ^0.32.0 | Serwer ASGI |
| Anthropic SDK | ^0.39.0 | Klient LLM Claude (domyślny model claude-sonnet-4-6-20251001) |
| Pydantic Settings | ^2.6.0 | Typowana konfiguracja |
| httpx | ^0.27.0 | Asynchroniczny klient HTTP |
| sentence-transformers | ^3.3.0 (opcjonalny dodatek ml) | Osadzenia (embeddings) dla RAG |
| numpy | ^1.26.0 | Matematyka wektorowa (Copilot) |
| lxml | ^5.3.0 | Parsowanie przepływów pracy XML Informatica / Alteryx (Silnik Migracji) |
| python-multipart | ^0.0.12 | Przesyłanie plików (Silnik Migracji) |
| pyyaml | ^6.0 | Obsługa YAML potoków danych |
Wymienni dostawcy LLM
Copilot abstrahuje LLM za interfejsem LLMProvider wybieranym w czasie wykonania przez zmienną środowiskową LLM_PROVIDER:
| Dostawca | Szczegół |
|---|---|
anthropic | Claude — domyślny model claude-sonnet-4-6-20251001 |
openrouter | OpenRouter — openai/gpt-oss-120b:free |
local | Lokalny LLM przez Ollama — llama3.2 |
Stos frontendu
Aplikacja jednostronicowa to aplikacja React 19 zbudowana przez Vite, z bibliotekami TanStack do danych i siatek, Zustand do stanu klienta oraz Tailwind CSS 4 do stylizacji.
| Komponent | Wersja | Przeznaczenie |
|---|---|---|
| React | 19.2.0 | Biblioteka UI |
| React DOM | 19.2.0 | Renderer DOM |
| React Router DOM | 7.13.1 | Trasowanie |
| Vite | 7.3.1 | Narzędzie budowania / serwer deweloperski |
| TanStack React Query | 5.90.21 | Stan serwera / pobieranie danych |
| TanStack React Table | 8.21.3 | Siatki danych |
| TanStack React Virtual | 3.13.21 | Wirtualizacja list |
| Zustand | 5.0.11 | Stan klienta (utrwalany magazyn persony) |
| React Hook Form | 7.71.2 | Formularze |
@hookform/resolvers | 5.2.2 | Mostek resolvera schematu formularza |
| Zod | 4.3.6 | Walidacja schematu |
@xyflow/react | 12.10.1 | Płótno DAG potoku danych |
@monaco-editor/react | 4.7.0 | Edytor kodu / SQL |
| Recharts | 3.7.0 | Wykresy |
| Tailwind CSS | 4.2.1 (@tailwindcss/vite) | Stylizacja |
| i18next | 25.8.14 | Internacjonalizacja |
| react-i18next | 16.5.5 | Powiązania i18n dla React |
| keycloak-js | 26.2.3 | Logowanie OIDC w przeglądarce |
| axios | 1.13.6 | Klient HTTP |
| lucide-react / cmdk / clsx / date-fns | — | Ikony, paleta poleceń, narzędzia pomocnicze |
Biblioteki CLI w Go
CLI dataflow jest zbudowane przy użyciu Cobra i Viper.
| Biblioteka | Wersja | Przeznaczenie |
|---|---|---|
| spf13/cobra | 1.8.1 | Framework poleceń CLI |
| spf13/viper | 1.19.0 | Konfiguracja |
| zalando/go-keyring | 0.2.6 | Przechowywanie poświadczeń |
| olekukonko/tablewriter | 0.0.5 | Wyjście tabeli w terminalu |
| gopkg.in/yaml.v3 | 3.0.1 | Parsowanie YAML |
Konektory, formaty danych i biblioteki strumieniowania
SDK konektorów oraz silnik potoków danych zależą od szerokiego zestawu bibliotek formatów danych, migracji i strumieniowania.
| Biblioteka | Wersja | Przeznaczenie |
|---|---|---|
| Flyway (core + postgresql) | 10.17.3 | Migracje bazy danych |
| HikariCP | 6.2.1 | Pula połączeń JDBC |
| jSqlParser | 5.0 | Parsowanie SQL push-down |
| OpenLineage | 1.24.2 | Zdarzenia pochodzenia danych |
| Apache Flink clients | 1.18.1 | Przesyłanie zadań do środowiska Flink na K8s |
| Apache Parquet (avro / hadoop) | 1.13.1 | Kolumnowy format plików |
| Apache Hadoop (common / client) | 3.3.6 | Zależność Parquet / HDFS |
| Apache Avro | 1.11.3 | Serializacja |
| Apache POI (poi / ooxml) | 5.2.5 | Wejście/wyjście Excel |
| Debezium (api / embedded) | 2.5.4.Final | Przechwytywanie zmian danych |
| Apache PDFBox | 3.0.1 | Renderowanie raportu oceny potoku danych |
| Eclipse JGit | 6.8.0 | Zarządzanie repozytorium Git w silniku potoków danych |
| ICU4J | 74.2 | Wykrywanie kodowania |
| Woodstox | 6.5.1 | Strumieniowy XML |
Sterowniki JDBC (connector-sdk)
| Sterownik | Wersja |
|---|---|
| Teradata | 20.00.00.43 |
| Snowflake | 4.0.2 |
| SAP HANA (ngdbc) | 2.28.6 |
| Oracle (ojdbc11) | 23.7.0 |
| Microsoft SQL Server | 12.8.1 |
| PostgreSQL | 42.7.6 |
| MySQL | 9.2.0 |
| jTDS | 1.3.1 |
| Databricks | 3.3.1 |
Klienci NoSQL i strumieniowania
| Klient | Wersja |
|---|---|
| Sterownik MongoDB | 5.6.0 |
| Kafka clients | 3.9.0 |
| Confluent kafka-avro-serializer | 7.8.0 |
| Azure Event Hubs | 5.19.2 |
| Google Cloud Pub/Sub | 1.133.1 |
SDK chmurowe
| SDK | Wersja | Używane komponenty |
|---|---|---|
| Google Cloud BOM | 26.78.0 | Storage, BigQuery 2.44.0, Billing 2.53.0 |
| AWS SDK v2 BOM | 2.31.1 | S3 + transfer manager |
| Azure SDK BOM | 1.2.33 | Blob Storage, Identity |
| Klient Java Kubernetes | 21.0.2 | Dostęp do API K8s (przesyłanie zadań Flink) |
Bazy danych i magazyny
Wszystkie usługi JVM i AI wskazują na tę samą instancję PostgreSQL i bazę danych dataflow_metadata; izolacja logiczna odbywa się za pomocą historii Flyway i prefiksów tabel właściwych dla poszczególnych usług.
| Komponent | Wersja | Rola |
|---|---|---|
| PostgreSQL (pgvector) | pgvector/pgvector:pg15 | Główny RDBMS (dataflow_metadata), współdzielony przez metadata / lineage / Keycloak; rozszerzenie pgvector wspiera osadzenia RAG |
| Redis | 7-alpine | Ograniczanie liczby żądań, buforowanie, magazyn sesji (sterownik reaktywny w bramie) |
| MinIO | latest | Magazyn obiektów kompatybilny z S3 / GCS |
| asyncpg (Python) | 0.30.0 | Asynchroniczny dostęp do bazy danych Copilota |
| pgvector (Python) | 0.3.5 | Dostęp wektorowy Copilota |
Broker wiadomości i koordynacja
Kafka jest kręgosłupem strumieniowania zdarzeń dla obciążeń konektorów i CDC — a nie magistralą poleceń między usługami, która jest synchronicznym HTTP.
| Komponent | Wersja | Rola |
|---|---|---|
| Apache Kafka (Confluent) | cp-kafka:7.7.1 | Kręgosłup strumieniowania zdarzeń |
| ZooKeeper (Confluent) | cp-zookeeper:7.7.1 | Koordynacja Kafki |
Obserwowalność
| Komponent | Wersja | Rola |
|---|---|---|
| Prometheus | v2.54.1 | Zbieranie metryk |
| Grafana | 11.2.2 | Pulpity |
| Spring Boot Actuator | przez BOM | Punkty końcowe kondycji / metryk (/actuator/health) |
| OpenTelemetry API | 1.42.1 | Instrumentacja śledzenia |
| OpenLineage | 1.24.2 | Zdarzenia pochodzenia danych |
| SLF4J | 2.0.11 | Fasada logowania JVM |
| Logback | 1.4.14 | Implementacja logowania JVM |
| kotlin-logging-jvm | 3.0.5 | Fasada logowania Kotlin |
Uwierzytelnianie i bezpieczeństwo
Tożsamość jest zakotwiczona na Keycloak i walidowana dwukrotnie — raz na bramie, ponownie na każdym serwerze zasobów (obrona w głąb).
| Komponent | Wersja | Rola |
|---|---|---|
| Keycloak (serwer) | 24.0 | Dostawca tożsamości OIDC / SSO, realm dataflow |
| Keycloak admin-client | 24.0.4 | Programowa administracja realmem |
| Spring Security OAuth2 Resource Server + JOSE | przez Spring Boot 3.3.5 | Walidacja bearera JWT na każdej usłudze |
| keycloak-js | 26.2.3 | OIDC po stronie przeglądarki (frontend) |
Brama stosuje również filtr maskowania PII, CORS oraz ograniczanie liczby żądań wsparte przez Redis. Istnieje obejście deweloperskie za pośrednictwem flagi DATAFLOW_GATEWAY_DEV_PERMIT_READS.
Narzędzia budowania
| Narzędzie | Wersja | Zakres |
|---|---|---|
| Gradle (Kotlin DSL) | 8.5 | Wielomodułowe budowanie Kotlin (dataflow-platform) |
| Poetry | 1.8.4 | Zależności / budowanie Python (backend poetry-core) |
| Moduły Go | go 1.22 | Budowanie CLI |
| Vite | 7.3.1 | Pakowanie frontendu (tsc -b && vite build) |
| npm | Node 20 | Zarządzanie pakietami frontendu (package-lock.json) |
Budowanie Gradle dataflow-platform obejmuje dziewięć modułów: common, api-gateway, metadata-service, pipeline-engine, connector-sdk, pushdown-sql, lineage-service, monitor-service oraz integration-tests.
Narzędzia testowania i jakości
Każdy stos językowy ma własny mechanizm uruchamiania testów, linter oraz bramkę analizy statycznej egzekwowaną w CI.
| Narzędzie | Wersja | Zakres |
|---|---|---|
| JUnit Jupiter | 5.10.1 | Testy jednostkowe Kotlin / JVM |
| MockK | 1.13.12 (1.13.9 w connector-sdk) | Mockowanie Kotlin |
| Testcontainers (junit / postgresql) | 1.20.2 | Testy integracyjne JVM |
| AssertJ | 3.25.1 | Płynne asercje |
| Reactor Test | przez BOM | Testy reaktywnej bramy |
| Detekt | wtyczka Gradle | Analiza statyczna Kotlin (bramka CI) |
| pytest + pytest-asyncio | 8.3 / 0.24 | Testy Python (asyncio_mode=auto) |
| Ruff | 0.7.0 | Lint + formatowanie Python |
| mypy | CI | Kontrola typów Python (nieblokująca) |
Vitest + @vitest/coverage-v8 | 3.2.x | Testy jednostkowe frontendu |
| Testing Library (react / jest-dom / user-event) | 16.3 / 6.6 / 14.6 | Testowanie komponentów |
| Playwright | 1.58.2 | Testy E2E frontendu (port 4173) |
| MSW | 2.12.10 | Mockowanie API |
| ESLint + typescript-eslint | 9.39.1 / 8.48.0 | Lint frontendu |
| golangci-lint | v1.57 | Lint Go |
| Redocly CLI / oasdiff | CI | Lint specyfikacji OpenAPI + wykrywanie zmian łamiących kompatybilność |
| hadolint | v3.1.0 | Lint Dockerfile |
| TFLint | v0.50.3 | Lint Terraform |
Kontenery i orkiestracja
| Komponent | Szczegół |
|---|---|
| Docker / Docker Compose | backend/docker-compose.yml orkiestruje 12 usług — postgres, keycloak, zookeeper, kafka, prometheus, grafana, minio, redis, plus 6 usług aplikacyjnych |
| Obraz usługi JVM | Wieloetapowy: builder gradle:8.5-jdk21 → środowisko uruchomieniowe eclipse-temurin:21-jre-alpine; użytkownik bez uprawnień root, opcje JVM świadome kontenera, healthcheck actuatora |
| Obraz usługi Python | Wieloetapowy python:3.12-slim z Poetry; uruchamia uvicorn |
| Kubernetes | Klient Java 21.0.2; obecne backend/infrastructure/k8s + karty Helm |
| Terraform | v1.7.5 (walidowany w CI per środowisko) |
| Środowisko Flink | Działa na Kubernetes (nie osadzony); zadania przesyłane przez klienta Flink |
CI / CD
Ciągła integracja działa na GitHub Actions z zadaniami monorepozytorium filtrowanymi po ścieżkach, dzięki czemu każdy stos językowy przebudowuje się tylko wtedy, gdy jego pliki się zmienią.
| Aspekt | Szczegół |
|---|---|
| Platforma | GitHub Actions — 8 przepływów pracy (ci, codeql-analysis, security-scan, zero-tolerance, deploy-dev/staging/production, release) |
| Strategia CI | Zadania monorepozytorium filtrowane po ścieżkach przez dorny/paths-filter@v3 — kotlin, python, go, frontend, terraform, docker, openapi |
| Zadanie Kotlin | JDK 21, Gradle setup-gradle@v4; kompilacja → Detekt → testy jednostkowe → integrationTest → budowanie; przesyła jary + raporty JUnit |
| Zadanie Python | Macierz (copilot, migration-engine); instalacja Poetry → lint/format Ruff → mypy → pytest z pokryciem (progi: wszystkie 70%, nowe 80%) |
| Zadanie Go | Go 1.22; budowanie / vet / testy wyścigu z pokryciem; golangci-lint |
| Zadanie Frontend | Node 20; npm ci → ESLint → tsc -b → budowanie → pokrycie Vitest |
| Zadania walidacji | Terraform validate/fmt/TFLint; docker compose config + hadolint; lint OpenAPI + kontrola zmian łamiących kompatybilność |
| Bramka | Zagregowane zadanie ci-status dla ochrony gałęzi (pominięte == OK, niepowodzenie == blokada) |
| Wdrożenie | Oddzielne przepływy pracy dev / staging / production; wdrożenia produkcyjne w stylu kanarkowym |
Dwie rzeczywistości wdrożeniowe
Repozytorium zawiera dwie ścieżki wdrożeniowe, które nie są spójne. Przepływy pracy GitHub Actions opisują ścieżkę GKE Autopilot / Kustomize, ale faktycznie działający system produkcyjny to pojedynczy VPS Debian provisionowany przez ręcznie napisane skrypty Python uruchamiające Docker Compose. Zobacz przewodnik Wdrożenie, aby poznać pełny obraz.
Podsumowanie architektury
Składając stos razem, DataFlow AI to wielojęzyczne monorepozytorium mikrousług:
backend/platform— 7 modułów Kotlin / Spring Boot 3.3.5 na JVM 21:api-gateway(reaktywna Spring Cloud Gateway),metadata-service,pipeline-engine,lineage-service,monitor-service, plus współdzielona bibliotekacommonoraz bibliotekaconnector-sdk(konektory JDBC / strumieniowe / chmurowe) ipushdown-sql.backend/ai-services— 2 usługi FastAPI w Python 3.12:copilot(konwersja języka naturalnego na potok danych, języka naturalnego na SQL, RAG, czat) orazmigration-engine(migracja Informatica / Alteryx).backend/cli— CLI Cobra w Go 1.22.frontend— aplikacja jednostronicowa React 19 + Vite 7 + TypeScript 5.9 z SSO Keycloak.- Infrastruktura — PostgreSQL 15 + pgvector, Redis 7, Kafka 7.7.1, MinIO, Keycloak 24, Prometheus + Grafana; Docker Compose dla środowiska lokalnego oraz Kubernetes + Helm + Terraform dla ścieżki chmurowej.
Aby dowiedzieć się, jak te elementy komunikują się ze sobą — przepływy żądań, trasowanie, propagacja tożsamości i strumieniowanie zdarzeń — przejdź do przewodnika Architektura.