feat: true-microservices #40

Merged
Janis merged 25 commits from bigchanges into main 2026-04-29 22:06:20 +02:00

25 Commits

Author SHA1 Message Date
Janis 369b8421b1 feat(game): autoformat
Build & Test (NowChessSystems) TeamCity build finished
2026-04-29 20:59:58 +02:00
Janis 75be096c5a feat(game): add GameWritebackEventDto and update related services for game state management
Build & Test (NowChessSystems) TeamCity build failed
2026-04-29 20:52:50 +02:00
Janis 91efed1370 feat(docker): add DNS configuration and update image references in Docker setup 2026-04-29 10:59:40 +02:00
Janis 47982fb63f fix(scoverage): correct shebang line in scoverage_coverage_gaps.py
Build & Test (NowChessSystems) TeamCity build failed
2026-04-29 09:01:00 +02:00
Janis 7b52109d11 feat(devcontainer): add Docker and devcontainer configuration for NowChess workspace 2026-04-29 09:00:33 +02:00
Janis 106118ad29 refactor: clean up code formatting and improve readability across multiple files 2026-04-29 08:38:27 +02:00
Janis 5d97c3c8b5 feat(redis): migrate from Redisson to Quarkus Redis client and update configuration 2026-04-28 22:44:10 +02:00
Janis 0652dd2d2f feat(challenge): replace scala.util.Random with ThreadLocalRandom for better performance and add native build configuration 2026-04-28 19:14:06 +02:00
Janis 4d625b013b refactor(event): rename BotEventPublisher to EventPublisher and update references 2026-04-28 14:23:16 +02:00
Janis 1ab6532b0a feat(security): add internal secret handling and Redis integration for bot events 2026-04-28 09:29:05 +02:00
Janis c10a4d7e64 feat(bot): implement bot architecture with difficulty levels and game context handling 2026-04-28 00:59:32 +02:00
Janis 6b59e68e04 feat(coordinator): add configurable coordinator settings and enhance WebSocket connection handling
Build & Test (NowChessSystems) TeamCity build failed
2026-04-26 22:33:16 +02:00
Janis 64d5afa4d1 feat(coordinator): enhance instance management with game migration count and configurable ports 2026-04-26 20:51:17 +02:00
Janis 57e6e5d200 feat(auto-scaling): enhance AutoScaler with atomic lastScaleTime and improve scaling logic 2026-04-26 19:57:36 +02:00
Janis 106b4d3b7e feat(coordinator): add Redis integration and improve configuration for game state management
Build & Test (NowChessSystems) TeamCity build was removed from queue
2026-04-26 18:25:03 +02:00
Janis f327441089 feat(coordinator): scaffold microservice for <300ms failover and load balancing
- Add coordinator module with gRPC stream-based instance health detection
- Implement InstanceHeartbeatService in core: bidirectional stream to coordinator every 200ms
- Track game subscriptions per core via Redis Sets (SADD/SREM)
- Add gRPC handlers for batch resubscribe/unsubscribe/evict/drain operations
- Implement coordinator services: InstanceRegistry, FailoverService, LoadBalancer, AutoScaler, CacheEvictionManager
- Add REST API for metrics and manual failover/rebalance/scaling
- Proto definition: coordinator_service.proto with HeartbeatStream + batch game operations
- Failover timeline: gRPC stream drop (50-200ms) → game migration (<300ms target)
- Support for Argo Rollouts auto-scaling (k8s CRD patching via Fabric8 client)

Note: Proto compilation issues documented in COORDINATOR_IMPLEMENTATION.md. Requires:
- Add task dependency: tasks.compileScala dependsOn tasks.compileJava
- Fix deprecated @Inject var = _ → = uninitialized syntax
- Implement remaining service methods (gRPC clients, FailoverService distribution)

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-04-26 08:34:53 +02:00
Janis 83f84371be feat(redis): implement Redis integration for game state management and websocket communication 2026-04-26 00:13:35 +02:00
Janis ec09a1bdb9 feat(account): enhance account management with user and bot account functionalities 2026-04-25 12:39:30 +02:00
Janis b6be0cd249 feat(grpc): implement gRPC services for game context management and move handling 2026-04-25 10:21:58 +02:00
Janis 9a39cd6916 perf(core): reduce inter-service HTTP calls from 11 to 4 per move
- Add `postMoveStatus` batch method to `RuleSet` trait (default impl composes
  individual calls; `RuleSetRestAdapter` overrides with single HTTP round-trip)
- Collapse 5 sequential rule checks in `GameEngine.executeMove` into one
  `postMoveStatus` call
- Add `POST /api/rules/post-move-status` endpoint to rule-service
- Add `exportCombined` to `IoServiceClient` and `POST /io/export/combined`
  endpoint to io-service, replacing two separate FEN/PGN HTTP calls
- Fix `statusOf` to pattern-match on `WinReason` from `ctx.result` instead
  of making a redundant `isCheckmate` HTTP call
- Remove duplicate `legalMoves` pre-validation in `GameResource.makeMove`;
  engine already validates and fires `InvalidMoveEvent`
- Add `scalafix:off` guards for pre-existing `var`/`return` usage in
  `DefaultRules` hot-path code
- Apply spotless formatting to previously unformatted files

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-24 20:39:01 +02:00
Janis 3706ece936 feat(game): enhance game engine with resign functionality and optimize move generation
Build & Test (NowChessSystems) TeamCity build was queued
2026-04-24 11:39:50 +02:00
Janis 69851f1ea2 refactor(account): fix linter errors
Build & Test (NowChessSystems) TeamCity build was queued
2026-04-24 10:29:39 +02:00
Janis 3df199afa1 feat(game): introduce game modes and time control features
Build & Test (NowChessSystems) TeamCity build failed
2026-04-23 21:56:21 +02:00
Janis 21d3d87543 feat(account): implement account and challenge management services 2026-04-22 22:17:27 +02:00
Janis e1f49e9289 feat(account): add configuration for NowChess Account Service 2026-04-22 22:17:14 +02:00