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ęzykWersjaUżywany doŹródło
Kotlin2.0.21Mikrousługi platformy (Spring Boot)backend/platform/gradle/libs.versions.toml
Java (JVM)21 (Temurin)Środowisko uruchomieniowe JVM / cel budowania dla usług KotlinDockerfile, CI setup-java
Python3.12 (^3.12)Usługi AI (Copilot, Silnik Migracji)pyproject.toml
Go1.22CLI dataflowbackend/cli/go.mod
TypeScript~5.9.3Aplikacja jednostronicowa frontendufrontend/package.json
Node.js20Budowanie frontendu / środowisko uruchomieniowe CICI 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.

KomponentWersjaPrzeznaczenie
Spring Boot3.3.5Framework mikrousług — web, JPA, security, actuator, validation, websocket
Spring Cloud2023.0.3BOM platformy chmurowej
Spring Cloud Gatewayprzez BOMReaktywne trasowanie bramy API
Spring Security OAuth2 Resource Server + JOSEprzez BOMWalidacja JWT
Wtyczka Spring Dependency Management1.1.6Rozwiązywanie zależności oparte na BOM
Kotlin Coroutines1.7.3Wsparcie asynchroniczności w module common
Jackson2.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.

KomponentWersjaPrzeznaczenie
FastAPI^0.115.0API HTTP dla Copilota i Silnika Migracji
Uvicorn (standard)^0.32.0Serwer ASGI
Anthropic SDK^0.39.0Klient LLM Claude (domyślny model claude-sonnet-4-6-20251001)
Pydantic Settings^2.6.0Typowana konfiguracja
httpx^0.27.0Asynchroniczny klient HTTP
sentence-transformers^3.3.0 (opcjonalny dodatek ml)Osadzenia (embeddings) dla RAG
numpy^1.26.0Matematyka wektorowa (Copilot)
lxml^5.3.0Parsowanie przepływów pracy XML Informatica / Alteryx (Silnik Migracji)
python-multipart^0.0.12Przesyłanie plików (Silnik Migracji)
pyyaml^6.0Obsługa YAML potoków danych

Wymienni dostawcy LLM

Copilot abstrahuje LLM za interfejsem LLMProvider wybieranym w czasie wykonania przez zmienną środowiskową LLM_PROVIDER:

DostawcaSzczegół
anthropicClaude — domyślny model claude-sonnet-4-6-20251001
openrouterOpenRouter — openai/gpt-oss-120b:free
localLokalny 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.

KomponentWersjaPrzeznaczenie
React19.2.0Biblioteka UI
React DOM19.2.0Renderer DOM
React Router DOM7.13.1Trasowanie
Vite7.3.1Narzędzie budowania / serwer deweloperski
TanStack React Query5.90.21Stan serwera / pobieranie danych
TanStack React Table8.21.3Siatki danych
TanStack React Virtual3.13.21Wirtualizacja list
Zustand5.0.11Stan klienta (utrwalany magazyn persony)
React Hook Form7.71.2Formularze
@hookform/resolvers5.2.2Mostek resolvera schematu formularza
Zod4.3.6Walidacja schematu
@xyflow/react12.10.1Płótno DAG potoku danych
@monaco-editor/react4.7.0Edytor kodu / SQL
Recharts3.7.0Wykresy
Tailwind CSS4.2.1 (@tailwindcss/vite)Stylizacja
i18next25.8.14Internacjonalizacja
react-i18next16.5.5Powiązania i18n dla React
keycloak-js26.2.3Logowanie OIDC w przeglądarce
axios1.13.6Klient HTTP
lucide-react / cmdk / clsx / date-fnsIkony, paleta poleceń, narzędzia pomocnicze

Biblioteki CLI w Go

CLI dataflow jest zbudowane przy użyciu Cobra i Viper.

BibliotekaWersjaPrzeznaczenie
spf13/cobra1.8.1Framework poleceń CLI
spf13/viper1.19.0Konfiguracja
zalando/go-keyring0.2.6Przechowywanie poświadczeń
olekukonko/tablewriter0.0.5Wyjście tabeli w terminalu
gopkg.in/yaml.v33.0.1Parsowanie 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.

BibliotekaWersjaPrzeznaczenie
Flyway (core + postgresql)10.17.3Migracje bazy danych
HikariCP6.2.1Pula połączeń JDBC
jSqlParser5.0Parsowanie SQL push-down
OpenLineage1.24.2Zdarzenia pochodzenia danych
Apache Flink clients1.18.1Przesyłanie zadań do środowiska Flink na K8s
Apache Parquet (avro / hadoop)1.13.1Kolumnowy format plików
Apache Hadoop (common / client)3.3.6Zależność Parquet / HDFS
Apache Avro1.11.3Serializacja
Apache POI (poi / ooxml)5.2.5Wejście/wyjście Excel
Debezium (api / embedded)2.5.4.FinalPrzechwytywanie zmian danych
Apache PDFBox3.0.1Renderowanie raportu oceny potoku danych
Eclipse JGit6.8.0Zarządzanie repozytorium Git w silniku potoków danych
ICU4J74.2Wykrywanie kodowania
Woodstox6.5.1Strumieniowy XML

Sterowniki JDBC (connector-sdk)

SterownikWersja
Teradata20.00.00.43
Snowflake4.0.2
SAP HANA (ngdbc)2.28.6
Oracle (ojdbc11)23.7.0
Microsoft SQL Server12.8.1
PostgreSQL42.7.6
MySQL9.2.0
jTDS1.3.1
Databricks3.3.1

Klienci NoSQL i strumieniowania

KlientWersja
Sterownik MongoDB5.6.0
Kafka clients3.9.0
Confluent kafka-avro-serializer7.8.0
Azure Event Hubs5.19.2
Google Cloud Pub/Sub1.133.1

SDK chmurowe

SDKWersjaUżywane komponenty
Google Cloud BOM26.78.0Storage, BigQuery 2.44.0, Billing 2.53.0
AWS SDK v2 BOM2.31.1S3 + transfer manager
Azure SDK BOM1.2.33Blob Storage, Identity
Klient Java Kubernetes21.0.2Dostę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.

KomponentWersjaRola
PostgreSQL (pgvector)pgvector/pgvector:pg15Główny RDBMS (dataflow_metadata), współdzielony przez metadata / lineage / Keycloak; rozszerzenie pgvector wspiera osadzenia RAG
Redis7-alpineOgraniczanie liczby żądań, buforowanie, magazyn sesji (sterownik reaktywny w bramie)
MinIOlatestMagazyn obiektów kompatybilny z S3 / GCS
asyncpg (Python)0.30.0Asynchroniczny dostęp do bazy danych Copilota
pgvector (Python)0.3.5Dostę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.

KomponentWersjaRola
Apache Kafka (Confluent)cp-kafka:7.7.1Kręgosłup strumieniowania zdarzeń
ZooKeeper (Confluent)cp-zookeeper:7.7.1Koordynacja Kafki

Obserwowalność

KomponentWersjaRola
Prometheusv2.54.1Zbieranie metryk
Grafana11.2.2Pulpity
Spring Boot Actuatorprzez BOMPunkty końcowe kondycji / metryk (/actuator/health)
OpenTelemetry API1.42.1Instrumentacja śledzenia
OpenLineage1.24.2Zdarzenia pochodzenia danych
SLF4J2.0.11Fasada logowania JVM
Logback1.4.14Implementacja logowania JVM
kotlin-logging-jvm3.0.5Fasada 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).

KomponentWersjaRola
Keycloak (serwer)24.0Dostawca tożsamości OIDC / SSO, realm dataflow
Keycloak admin-client24.0.4Programowa administracja realmem
Spring Security OAuth2 Resource Server + JOSEprzez Spring Boot 3.3.5Walidacja bearera JWT na każdej usłudze
keycloak-js26.2.3OIDC 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ędzieWersjaZakres
Gradle (Kotlin DSL)8.5Wielomodułowe budowanie Kotlin (dataflow-platform)
Poetry1.8.4Zależności / budowanie Python (backend poetry-core)
Moduły Gogo 1.22Budowanie CLI
Vite7.3.1Pakowanie frontendu (tsc -b && vite build)
npmNode 20Zarzą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ędzieWersjaZakres
JUnit Jupiter5.10.1Testy jednostkowe Kotlin / JVM
MockK1.13.12 (1.13.9 w connector-sdk)Mockowanie Kotlin
Testcontainers (junit / postgresql)1.20.2Testy integracyjne JVM
AssertJ3.25.1Płynne asercje
Reactor Testprzez BOMTesty reaktywnej bramy
Detektwtyczka GradleAnaliza statyczna Kotlin (bramka CI)
pytest + pytest-asyncio8.3 / 0.24Testy Python (asyncio_mode=auto)
Ruff0.7.0Lint + formatowanie Python
mypyCIKontrola typów Python (nieblokująca)
Vitest + @vitest/coverage-v83.2.xTesty jednostkowe frontendu
Testing Library (react / jest-dom / user-event)16.3 / 6.6 / 14.6Testowanie komponentów
Playwright1.58.2Testy E2E frontendu (port 4173)
MSW2.12.10Mockowanie API
ESLint + typescript-eslint9.39.1 / 8.48.0Lint frontendu
golangci-lintv1.57Lint Go
Redocly CLI / oasdiffCILint specyfikacji OpenAPI + wykrywanie zmian łamiących kompatybilność
hadolintv3.1.0Lint Dockerfile
TFLintv0.50.3Lint Terraform

Kontenery i orkiestracja

KomponentSzczegół
Docker / Docker Composebackend/docker-compose.yml orkiestruje 12 usług — postgres, keycloak, zookeeper, kafka, prometheus, grafana, minio, redis, plus 6 usług aplikacyjnych
Obraz usługi JVMWieloetapowy: 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 PythonWieloetapowy python:3.12-slim z Poetry; uruchamia uvicorn
KubernetesKlient Java 21.0.2; obecne backend/infrastructure/k8s + karty Helm
Terraformv1.7.5 (walidowany w CI per środowisko)
Środowisko FlinkDział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ą.

AspektSzczegół
PlatformaGitHub Actions — 8 przepływów pracy (ci, codeql-analysis, security-scan, zero-tolerance, deploy-dev/staging/production, release)
Strategia CIZadania monorepozytorium filtrowane po ścieżkach przez dorny/paths-filter@v3 — kotlin, python, go, frontend, terraform, docker, openapi
Zadanie KotlinJDK 21, Gradle setup-gradle@v4; kompilacja → Detekt → testy jednostkowe → integrationTest → budowanie; przesyła jary + raporty JUnit
Zadanie PythonMacierz (copilot, migration-engine); instalacja Poetry → lint/format Ruff → mypy → pytest z pokryciem (progi: wszystkie 70%, nowe 80%)
Zadanie GoGo 1.22; budowanie / vet / testy wyścigu z pokryciem; golangci-lint
Zadanie FrontendNode 20; npm ci → ESLint → tsc -b → budowanie → pokrycie Vitest
Zadania walidacjiTerraform validate/fmt/TFLint; docker compose config + hadolint; lint OpenAPI + kontrola zmian łamiących kompatybilność
BramkaZagregowane zadanie ci-status dla ochrony gałęzi (pominięte == OK, niepowodzenie == blokada)
WdrożenieOddzielne 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 biblioteka common oraz biblioteka connector-sdk (konektory JDBC / strumieniowe / chmurowe) i pushdown-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) oraz migration-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.

Poprzednia
Instalacja i konfiguracja