Більшість організацій мають дані, але не мають до них доступу тоді, коли це справді потрібно. Канал Confluent Developer на прикладі лікарні показує, як перехід від «папок у шафі» до потокової обробки змінює не лише технології, а й саму логіку роботи з інформацією — від очікування до повного контролю.
![]()
Від паперових карток до потоків подій
Історія починається з лікарні, де медичні записи зберігалися в масивних картотеках. Дані існували, але їх було складно отримати: лікарям доводилося чекати, поки хтось фізично принесе потрібну папку, іноді з іншого корпусу. Це займало хвилини або години — у ситуаціях, де рахунок може йти на секунди.
Сучасна версія тієї ж лікарні працює інакше: дані про пацієнтів у реальному часі надходять на кожне робоче місце. Різниця — не в тому, що «даних стало більше», а в тому, як вони потрапляють у системи та як ними можна керувати. Ключем стає інженерія ingestion — способу, яким дані переходять від місця, де вони створюються, до місця, де вони приносять користь.
Чотири виміри контролю над ingestion
Контроль над ingestion — це не лише про «швидше». Його визначають чотири виміри:
1. Якість: чи повні й коректні дані
Питання не в тому, чи десь існують показники тиску пацієнта, а в тому, чи зібрані вони в одному місці й дають цілісну картину. Коли ingestion під контролем, можна:
- перевіряти цілісність та коректність даних;
- очищувати їх від помилок;
- гарантувати, що жодні події не загубилися по дорозі.
Без власного контуру ingestion якість диктують зовнішні системи — і виправити щось складно або неможливо.
2. Формат: чи можна з даними працювати одразу
Дані можуть надходити в різних форматах, структурах, схемах. Якщо формат визначає зовнішня система, внутрішні команди змушені підлаштовуватися під чужі обмеження.
Коли ingestion побудований як керований процес, організація сама:
- нормалізує формати;
- трансформує структури під власні моделі;
- уніфікує подання даних для різних споживачів.
Це зменшує кількість «одноразових» перетворень у кожному окремому застосунку.
3. Час: коли саме дані доступні
Критичний вимір — затримка між подією в реальному світі та її появою в системі. У лікарняному прикладі це питання звучить максимально жорстко: чи чекати, поки пацієнт «кровоточить», у той час як хтось шукає його алергологічний анамнез.
При пасивному ingestion:
- час надходження визначають зовнішні системи, розклади імпорту, cron-завдання;
- реальний час недосяжний за визначенням — максимум «раз на годину» чи «раз на день».
При потоковому підході:
- час надходження визначає сама організація;
- можна обробляти події одразу, буферизувати їх або агрегувати пізніше — вибір залишається за вами.
4. Доступ: хто й як може бачити дані
Коли дані «належать» зовнішнім системам, доступ до них часто:
- фрагментований;
- залежить від сторонніх дозволів;
- реалізований через складні ручні процедури.
Власний ingestion-контур дозволяє:
- централізовано керувати правами доступу;
- визначати, хто що бачить і коли;
- будувати прозору модель безпеки навколо потоків даних.
У підсумку саме ці чотири виміри — якість, формат, час і доступ — визначають, чи керує організація своїми даними, чи просто чекає на них.
Чому традиційні методи ingestion гальмують реальний час
Багато звичних підходів до завантаження даних виявляються несумісними з реальним часом, навіть якщо формально «інтеграція є».
Кастомні конектори та опитування
Поширена практика — писати власні інтеграції до CRM, легасі-додатків або внутрішніх API. Такі конектори:
- створюються під одну конкретну систему;
- часто працюють у режимі опитування (polling);
- зазвичай реалізують пакетне (batch) завантаження.
Результат — залежність від розкладів і затримки, які важко зменшити без повного переписування.
Традиційний CDC на основі запитів
Change Data Capture (CDC), побудований на періодичних запитах до бази, також часто працює пакетно:
- зміни виявляються не в момент події, а під час наступного циклу опитування;
- затримка вбудована в саму архітектуру.
Це краще, ніж ручний експорт, але все ще далеко від потокової моделі.
Batch і cron-завдання
Класика корпоративних інтеграцій — щогодинні або щодобові завдання, що копіюють дані з однієї системи в іншу. Для сценаріїв аналітики «на вчора» це може бути прийнятно, але:
- реальний час принципово недосяжний;
- будь-яка реакція на події відбувається із запізненням.
Усі ці підходи мають спільну рису: дані приходять за розкладом, а не в момент, коли щось відбувається.
Потоковий підхід: Kafka, CDC та принцип «будуй під стрімінг»
Альтернатива — побудувати ingestion як потокову систему, де події надходять у міру їх виникнення.
Kafka Connect і готові конектори
Kafka Connect пропонує декларативний спосіб налаштувати потокове завантаження з різних бекенд-систем. Ключові моменти:
- існують сотні готових конекторів;
- на Confluent Marketplace доступно понад 200 конекторів від більш ніж 50 компаній;
- інтеграції налаштовуються конфігурацією, а не кастомним кодом.
Це зменшує кількість «одноразових» рішень і спрощує підтримку.
Подієвий CDC: Debezium та інші
Подієвий CDC спрацьовує безпосередньо на змінах у базі даних:
- кожна операція вставки, оновлення чи видалення перетворюється на подію;
- події потрапляють у стрімінгову платформу майже миттєво.
Debezium — приклад open source-реалізації такого CDC, орієнтованої на роботу в реальному часі.
Коли найкращий ingestion — це його відсутність
Ідеальний сценарій — коли дані вже течуть через стрімінгову платформу (наприклад, Kafka):
- немає додаткової затримки на завантаження;
- зберігається безперервний потік подій;
- контроль над обробкою повністю на боці споживачів.
У такому випадку ingestion як окремий етап просто не потрібен — достатньо підписатися на відповідні потоки.
Дизайн-принцип: будувати під стрімінг, навіть якщо джерело — batch
Навіть якщо вихідні системи сьогодні працюють пакетно, варто проектувати конвеєр як потоковий:
- використовувати ті самі інструменти й логіку, що й для стрімінгових джерел;
- обробляти дані як потік подій, навіть якщо вони надходять «порціями».
Це дає дві переваги:
- Єдина модель обробки для різних джерел.
- Готовність до переходу на реальний час у момент, коли джерело «дозріє» до стрімінгу.
Batch проти стрімінгу: де насправді проходить межа
Ключова відмінність між пакетними та потоковими патернами ingestion — не в тому, «коли саме» приходять дані, а в тому, що з ними можна зробити після цього.
Обмеження batch-патернів
При розкладах на кшталт «щогодини» чи «раз на день»:
- можна обробляти лише те, що вже надійшло;
- неможливо реагувати на події в момент їх виникнення;
- архітектура фактично «замикає» вас у світі відкладеної обробки.
Це схоже на старі картотеки: спочатку потрібно «отримати папку», і лише потім можна щось робити.
Переваги подієвих і стрімінгових патернів
Коли дані надходять у міру того, як «життя відбувається»:
- можна обробляти події одразу;
- можна, за потреби, буферизувати їх і агрегувати пізніше;
- вибір між реальним часом і batch-обробкою стає питанням архітектурного рішення, а не технічного обмеження.
Стрімінг відкриває всі варіанти, batch — закриває опцію реального часу.
Висновок: питання вже не «чи потрібен реальний час»
Історія лікарні показує не лише еволюцію технологій, а й зміну базового запитання. Раніше воно звучало як «чи справді нам потрібні дані в реальному часі?». Сьогодні доречніше інше формулювання: «чи можемо ми дозволити собі працювати без реального часу?».
Коли:
- дані існують, але приходять із запізненням;
- формат диктують зовнішні системи;
- якість і доступність залежать від сторонніх процесів,
організація фактично відмовляється від контролю над власною інформацією.
Побудова ingestion як потокового конвеєра — з Kafka, Kafka Connect, подієвим CDC на кшталт Debezium і принципом «будувати під стрімінг навіть для batch-джерел» — повертає цей контроль. А перехід від очікування «вчорашніх даних» до роботи з подіями в реальному часі стає не розкішшю, а новою нормою.
Джерело
Stop Waiting for Your Data: How to Take Control — Confluent Developer


