Software engineer at T-Bank, Data Platformaka Luminais

MikhailTrifonov

I build backend services in Java and Spring, run them on Kubernetes and move bank data through Kafka, Spark and Airflow.

  • Open to interesting offers
  • Innopolis, UTC+3
  • 3+ years in production, coding since 2021

At T-Bank

Software engineer, Data Platform

Since September 2025

Our team runs the bank’s Data Lake House. Analysts, ML teams and product services read from it. I work on ingestion, orchestration and the services around them.

  • New data service

    Design doc, architecture review, then a Java/Kora service on Kafka, Iceberg and Arrow Flight. 30+ pipelines moved to it with zero downtime.

  • Nightly batch 3× faster

    Partition pruning, broadcast joins and skew hints under AQE on the heaviest Spark SQL marts: 5 h down to 1 h 40 min.

  • SLOs and on-call

    Burn-rate alerts, tracing from Airflow through Spark to Java, idempotent Kafka consumers. Median time to resolve is under 40 minutes.

  • MCP server for the platform

    Coding agents get lineage and run history from Airflow and DLH. Finding why a table is stale takes minutes.

Experience

  1. now

    T-BankSoftware Engineer, Data Platform

    Ingestion, orchestration and services around the bank’s Data Lake House.

    • Nightly batch 3× faster
    • 30+ pipelines moved with zero downtime
    • Incidents closed in under 40 min
    Details
    Architecture
    • Design doc for a new Java/Kora service: about 1,200 rps and 2 TB a day at peak. Passed the architecture review, then built it.
    • Kafka ingestion with idempotent consumers, retries with backoff and a dead-letter topic. Broker failovers stopped dropping or duplicating loads.
    Requirements
    • Turned interviews with analysts and ML teams into a spec: freshness SLO per dataset, access groups, retention.
    Team
    • Agreed contracts with two adjacent teams and the DLH team; moved 30+ consumer pipelines with zero downtime.
    • Onboarded two engineers: an onboarding guide, pairing on first tasks, code review.
    Quality
    • Test strategy with our QA engineer: contract tests from OpenAPI, Testcontainers for PostgreSQL and Kafka, nightly data checks.
    Operations
    • On-call rotation, SLOs with burn-rate alerts, OpenTelemetry tracing, postmortems. Median time to resolve fell below 40 minutes.
    • Kubernetes: Helm charts, probes, autoscaling on consumer lag, a Grafana dashboard for every service.
    Delivery
    • Spark SQL tuning cut the nightly window from 5 h to 1 h 40 min. Workers on virtual threads tripled throughput on the same pods.
    AI agents
    • MCP server over Airflow and DLH metadata, plus shared agent skills, so coding agents see lineage and run history.
  2. Yandex, Auto.ruBackend Developer, Scala

    Backend for frontend behind reviews and user content on Auto.ru, web and mobile.

    • p99 of hedged calls down 75%
    • One query per page instead of four
    Details
    Architecture
    • GraphQL schema for the reviews BFF: a page loads in one query instead of four REST calls.
    Delivery
    • Fixed request hedging in our gRPC client and server: the losing call is cancelled, p99 down 75%.
    Operations
    • Timeouts, retry budgets and fallbacks per downstream. When the ratings service is slow, only its block disappears.
    Quality
    • Load tests at three times peak traffic, then rollout behind feature flags one service at a time.
    Team
    • Agreed field-level contracts with the web and mobile teams and retired the old REST endpoints over two releases.
  3. HirusBackend Developer, Java

    Backend for HiRUS Smart Operating Room: video and device data from the operating theatre in one system.

    • Operation archive and doctor portal
    • Database load down 68%
    Details
    Architecture
    • REST API on Spring Boot for the operation archive, the doctor portal and the surgical media library.
    • Metadata in PostgreSQL, photo and video in object storage served by presigned links, past the backend.
    Requirements
    • Role-based access to medical data for doctors, clinic admins and consultants, with an audit log of archive views.
    Delivery
    • API for remote case conferences from the telemedicine stand. Rewrote the heaviest JDBC queries: database load down 68%.
    Quality
    • GitLab CI with linters, tests and deploys; JUnit, Mockito and Testcontainers across services and controllers.
  4. RagnarPython Developer

    AI assistant that answers from company documents.

    Details
    Delivery
    • FastAPI endpoints for model calls with error handling and timeouts.
    AI agents
    • Tuned RAG retrieval on real questions until answers cited the right documents.
  5. Innopolis UniversityB.Sc. Computer Science

    GPA 4.77 out of 5.

Case studies

A hiring platform where candidates fix real services and hidden tests grade them in a sandbox.

Role
Founder and tech lead
Team
Me and two part-time contributors
When
Jan 2026 / now

Outcome

  • 14 sp95 to verdict at 300 concurrent submissions (k6)
  • 0lost or double-graded runs out of 50,000 with workers killed at random
  • 22architecture decision records

Architecture

relayverdictWebNext.jsAPImodular monolithGrading workershidden testsPostgreSQLdata + outboxRabbitMQsubmissionsOrchestratorwarm poolgVisor sandboxesk8s, no egress

Scroll the diagram sideways

Problem

The platform runs untrusted code, takes bursts during hiring campaigns and must grade every run exactly once.

How it runs

Linear with two-week cycles, a written Definition of Done, weekly 1:1s, an ADR and design review before cross-module changes. Coding agents follow AGENTS.md and ArchUnit rules.

Key decisions

  • Modular monolith, one PostgreSQL

    ArchUnit enforces module boundaries, so a module can become a service later without a rewrite.

  • gVisor sandboxes

    User-space kernel, no egress, CPU and memory limits, a time budget per run.

  • Outbox and RabbitMQ

    A submission and its event commit in one transaction. Queue depth drives sandbox autoscaling.

  • Warm sandbox pool

    Cold starts took half the verdict time. The pool is sized from the arrival rate.

Java 25, Spring Boot, PostgreSQL, RabbitMQ, Kubernetes, gVisor, Next.js, k6

More projects

Everything else is on GitHub

Stack

Data

  • Spark SQL
  • PySpark
  • Airflow
  • Iceberg
  • Arrow Flight
  • Kafka Streams
  • ClickHouse
  • Trino

Backend

  • Java 21
  • Kora
  • Spring Boot
  • Scala
  • Go
  • FastAPI
  • Kafka
  • RabbitMQ
  • gRPC
  • GraphQL
  • PostgreSQL
  • Oracle
  • Redis

Frontend

  • TypeScript
  • React
  • Next.js
  • Astro
  • React Native
  • Three.js
  • Zustand
  • Tailwind

Infra

  • Docker
  • Kubernetes
  • Terraform
  • GitLab CI
  • GitHub Actions
  • Helm
  • OpenTelemetry
  • Prometheus
  • Grafana
  • Loki, Tempo
  • k6

AI agents

  • Claude Code
  • MCP servers
  • Agent skills
  • Evals, LLM judge
  • RAG, pgvector
  • OpenRouter

Russian is native, English is B2.

Write to me

Telegram gets the fastest reply. Email works for anything formal.

WeChat QR code

Scan in WeChat

wxid_iduyrsvt6j1622