Беру на себя потоковую обработку данных на Apache Flink — от прототипа до пайплайна, который спокойно держит боевой трафик. Задача простая: чтобы вы видели, что происходит в системе, не через час после события, а прямо сейчас. Я разбираюсь в событийном времени и водяных знаках, поэтому запоздавшие и перепутанные по порядку события не ломают агрегаты, а честно попадают в своё окно. Окна подбираю под вашу логику — по времени, по количеству или по сессиям — и настраиваю хранилище состояния, чекпоинты и сейвпоинты так, чтобы джоба быстро поднималась после сбоя без потери данных.
Особое внимание — гарантиям доставки. Настраиваю exactly-once по всей цепочке: транзакционные приёмники, где это возможно, и идемпотентную запись там, где нет, — так рестарт не превращается в задвоенные счётчики и дубли транзакций. Собираю джойны нескольких потоков, обогащаю события внешними справочниками и через Flink CEP описываю сложные сценарии: подозрительные последовательности, срабатывания порогов, разрывы в воронке. На выходе — читаемый код, воспроизводимое развёртывание и документация; подключаюсь к Kafka, Kinesis, Pulsar, базам через JDBC и объектным хранилищам, упаковываю задачу под Kubernetes или управляемый кластер Flink.
Особое внимание — гарантиям доставки. Настраиваю exactly-once по всей цепочке: транзакционные приёмники, где это возможно, и идемпотентную запись там, где нет, — так рестарт не превращается в задвоенные счётчики и дубли транзакций. Собираю джойны нескольких потоков, обогащаю события внешними справочниками и через Flink CEP описываю сложные сценарии: подозрительные последовательности, срабатывания порогов, разрывы в воронке. На выходе — читаемый код, воспроизводимое развёртывание и документация; подключаюсь к Kafka, Kinesis, Pulsar, базам через JDBC и объектным хранилищам, упаковываю задачу под Kubernetes или управляемый кластер Flink.