SlideShare a Scribd company logo
1 of 25
Download to read offline
Як українська компанія
Fozzy Group будує
next gen cloud-native
платформи
Еволюційна архітектура
Fozzy Group: Факти
Fozzy Group - одна з найбільших торгово-промислових груп України.
та інші
350+ супермаркетів 300+ магазинів
біля дому
90+ маркетів 7 гіпермаркетів 90+
аптек
А також Логістика, e-com (доставка «Сільпо» та LOKO), онлайн магазини Maudau та E-Zoo, власні виробництва та
50 000+ працівників Fozzy Group є користувачами наших продуктів.
TEMABIT: Хто ми?
TemaBit - українська IT компанія, яка є частиною Fozzy Group
Про нас в цифрах:
10+
років досвіду
1 300+
працівників
02
центри
розробки
R&D
центр
Ми змінюємо користувацький досвід українців і втілюємо
сміливі рішення для групи компаній Fozzy Group
Ми змінюємо користувацький досвід українців і втілюємо
сміливі рішення для групи компаній Fozzy Group
Хто я?
Сергій Медведєв
Chief IT Architect Fozzy Group
Керівник Департаменту IT Architecture Temabit
• Підвищене серцебиття від технологій в IT вже 20+ років
• Пройшов довгий шлях в різних доменах від інженера до архітектора
• У 2015 році перейшов у сферу розробки програмного забезпечення як
Enterprise Architect
• Починаючи з 2022 року, поєднував контрактну роботу Enterprise
Architect з посадою CTO в рамках власної компанії apricusit.com
• З 2023 року в Fozzy Group
Нова cloud-native Платформа Товарного обліку
(Commodity Accounting Platform - CAP): ДЕ, СКІЛЬКИ, ЧОГО (якого товару)
в кожний момент часу
BUSINESS CASE
Near real-time відповіді на питання ДЕ, СКІЛЬКИ, ЧОГО в
розрізі
✓ Артікулів (Article)
✓ Артікулів по businessUnit чи Store Location
в кожний момент часу
Expected result:
ВИКЛИК В ЦИФРАХ
1 300+ Магазинів, РЦ,
Складів
300+ Машин
Факт від «Сільпо»:
• в середньому, 10 000 000 транзакцій по переміщенню Article/день
• 25 транзакцій/сек при піках в 2-3 рази більше
Challenges:
• Технічна: як відслідкувати зміни кількості по кожному Article?
• Логічна: як забезпечити правильну послідовність обробки переміщень товару?
• Інфраструктурна: як забезпечити performance?
СКІЛЬКИ?
ДЕ? ЧОГО?
250 000+ артикулів
(тільки в Сільпо)
• Продали?
• Везуть?
• Залишилось?
Architecture: helicopter view
ES + CQRS = рішення
Architecture: гіпотеза
Трохи теорії: ES and CQRS
• Яка сутність буде агрегатом?
де бізнес логіка?
• Яка "глибина" агрегату?
Швидкість "завантаження" state? Cost?
• Як робити "build"/"rebuild" проекції?
Performance and cost
ES + CQRS: ключові питання
DDD and CQRS in action...
ПОШУК ВАРІАНТІВ РІШЕННЯ
Крок 1: "в лоб"
✓ Кожен Article – агрегат
✓ Raise events змін по Article
+ businessUnit
✓ Побудувати проекції:
по кожному businessUnit+ Article
по кожному Article
ІДЕЯ
Кількість events і обробок:
10 000 000 x2 це min
Місяць: 30 x (10 000 000 x 2)
=
600 000 000 events/
month
Артикул – агрегат
PROS
• Точність в розрізі Article
• Велика ступінь гнучкості
• Швидко обробляється
CONS
• С точки зору бізнесу: обробляються не Article, а документи - потрібна
розподілена транзакція + щось про документ
• Велика "глибина" ES агрегатів - важко "піднімати" стан
• проблеми rebuild проекцій - compute intensive, довго
ПРОБЛЕМА:
бізнес обліковує ДОКУМЕНТИ, а ми побудували events в
рамках АРТИКУЛІВ... невірний DDD
Крок 2: Документ - агрегат
✓ Кожен документ – агрегат,
i.e. container "операцій"
✓ Raise events змін по Article +
businessUnit
ü Будуємо проекції:
• по кожному businessUnit+
Article
• по кожному Article
✓ Повна зворотна сумістність
по "read"
ІДЕЯ
Документ - агрегат
ЗМІНА
PROS
• Документ обробляється атомарно
• Велика ступінь гнучкості
• Не "глибокий" агрегат
CONS
• Немає гарантії "послідовність" обробок по Article (вони тепер в різних
документах)
• проблеми rebuild проекцій - послідовна обробка events
Кількість events і обробок
(min):
600 000 000 events/month
ПРОБЛЕМА:
як гарантувати ПОСЛІДОВНІСТЬ events в рамках
АРТИКУЛУ, якщо вони приходять з РІЗНИХ типів
ДОКУМЕНТІВ в паралелі?
ПОТРІБНА ЗМІНА АРХІТЕКТУРИ...
щось, що гарантує послідовність і паралельну
обробку
Трохи теорії: Stream Processing
✓ Кожен документ – агрегат
✓ Raise events створення і
змін документів
✓ Розбираємо документ на
операції і відправляємо в
Kafka Streams як events
(stateful)
✓ Topic per article
✓ Будуємо проекції в Kafka
Streams (stateful)
ІДЕЯ
Крок 3: "Революційна" еволюція
PROS
• Документ обробляється атомарно
• Точність і гарантія послідовності в розрізі Article
• Велика ступінь гнучкості
• Супер швидко обробляється - в паралелі per Article
• Не "глибокий" агрегат
CONS
• Складніша інфраструктура
• Складніша розробка - потрібен інший mindset
ES + CQRS + Stream Processing
Ключові технології
martendb.io
ES:
martendb.io
CQRS:
wolverine.netlify.app kafka.apache.org
Stream
processing:
aws.amazon.com
Cloud:
Реальна архітектура
Evolutionary architecture is an approach to build software
that's designed to evolve over time as business priorities
change, customer demands shift, and new technologies
emerge.
Останній слайд
ДЯКУЮ!

More Related Content

What's hot

위홈, 한국의 합법 공유숙박 플랫폼 Wehome, Legal Home Sharing of Korea
위홈, 한국의 합법 공유숙박 플랫폼 Wehome, Legal Home Sharing of Korea위홈, 한국의 합법 공유숙박 플랫폼 Wehome, Legal Home Sharing of Korea
위홈, 한국의 합법 공유숙박 플랫폼 Wehome, Legal Home Sharing of Korea
wehome.me
 

What's hot (20)

코자자 국민숙박공유플랫폼 크라드펀딩_ktb증권_사업계획서
코자자 국민숙박공유플랫폼 크라드펀딩_ktb증권_사업계획서코자자 국민숙박공유플랫폼 크라드펀딩_ktb증권_사업계획서
코자자 국민숙박공유플랫폼 크라드펀딩_ktb증권_사업계획서
 
iFood Recommendations
iFood RecommendationsiFood Recommendations
iFood Recommendations
 
Лікарські речовини, похідні елементів VI групи періодичної системи Д.І. М...
Лікарські речовини, похідні  елементів  VI групи  періодичної системи  Д.І. М...Лікарські речовини, похідні  елементів  VI групи  періодичної системи  Д.І. М...
Лікарські речовини, похідні елементів VI групи періодичної системи Д.І. М...
 
Женская воспалительная цитология
Женская воспалительная цитологияЖенская воспалительная цитология
Женская воспалительная цитология
 
gRPC:更高效的微服務介面
gRPC:更高效的微服務介面gRPC:更高效的微服務介面
gRPC:更高效的微服務介面
 
위홈, 한국의 합법 공유숙박 플랫폼 Wehome, Legal Home Sharing of Korea
위홈, 한국의 합법 공유숙박 플랫폼 Wehome, Legal Home Sharing of Korea위홈, 한국의 합법 공유숙박 플랫폼 Wehome, Legal Home Sharing of Korea
위홈, 한국의 합법 공유숙박 플랫폼 Wehome, Legal Home Sharing of Korea
 
CAT Tools for dummies - Corso online organizzato da Langue & Parole 2017
CAT Tools for dummies - Corso online organizzato da Langue & Parole 2017CAT Tools for dummies - Corso online organizzato da Langue & Parole 2017
CAT Tools for dummies - Corso online organizzato da Langue & Parole 2017
 
Rshinydashboard
RshinydashboardRshinydashboard
Rshinydashboard
 
Facebook은 React를 왜 만들었을까?
Facebook은 React를 왜 만들었을까? Facebook은 React를 왜 만들었을까?
Facebook은 React를 왜 만들었을까?
 
뱅크샐러드 앱 마케팅 전략 : 퍼포먼스 마케팅 성공 사례
뱅크샐러드 앱 마케팅 전략 : 퍼포먼스 마케팅 성공 사례뱅크샐러드 앱 마케팅 전략 : 퍼포먼스 마케팅 성공 사례
뱅크샐러드 앱 마케팅 전략 : 퍼포먼스 마케팅 성공 사례
 
[112]clova platform 인공지능을 엮는 기술
[112]clova platform 인공지능을 엮는 기술[112]clova platform 인공지능을 엮는 기술
[112]clova platform 인공지능을 엮는 기술
 
[OpenInfra Days Korea 2018] (Track 1) TACO (SKT All Container OpenStack): Clo...
[OpenInfra Days Korea 2018] (Track 1) TACO (SKT All Container OpenStack): Clo...[OpenInfra Days Korea 2018] (Track 1) TACO (SKT All Container OpenStack): Clo...
[OpenInfra Days Korea 2018] (Track 1) TACO (SKT All Container OpenStack): Clo...
 
Лекція Туберкульоз.pptx
Лекція  Туберкульоз.pptxЛекція  Туберкульоз.pptx
Лекція Туберкульоз.pptx
 
Лекція "Хронічні лейкемії"
Лекція "Хронічні лейкемії"Лекція "Хронічні лейкемії"
Лекція "Хронічні лейкемії"
 
[제3회 스포카콘] React + TypeScript + GraphQL 으로 시작하는 Web Front-End
[제3회 스포카콘] React + TypeScript + GraphQL 으로 시작하는 Web Front-End[제3회 스포카콘] React + TypeScript + GraphQL 으로 시작하는 Web Front-End
[제3회 스포카콘] React + TypeScript + GraphQL 으로 시작하는 Web Front-End
 
Проект створення міні-пекарні
Проект створення міні-пекарні Проект створення міні-пекарні
Проект створення міні-пекарні
 
Лекція "Анемія" (№1)
Лекція "Анемія" (№1)Лекція "Анемія" (№1)
Лекція "Анемія" (№1)
 
Uwpアプリケーション開発入門
Uwpアプリケーション開発入門Uwpアプリケーション開発入門
Uwpアプリケーション開発入門
 
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
 
Права людини в інтернеті
Права людини в інтернетіПрава людини в інтернеті
Права людини в інтернеті
 

Similar to "Next gen cloud-native platforms: showcase from TemaBit, Fozzy Group", Sergiy Medvedyev

Similar to "Next gen cloud-native platforms: showcase from TemaBit, Fozzy Group", Sergiy Medvedyev (20)

Real Time Transactions Ukr Final
Real Time Transactions Ukr FinalReal Time Transactions Ukr Final
Real Time Transactions Ukr Final
 
"Incremental rollouts and rollbacks with business metrics control at every st...
"Incremental rollouts and rollbacks with business metrics control at every st..."Incremental rollouts and rollbacks with business metrics control at every st...
"Incremental rollouts and rollbacks with business metrics control at every st...
 
Сергей Сумец, ГП "Укрспирт": "Как происходит переход в облако в государственн...
Сергей Сумец, ГП "Укрспирт": "Как происходит переход в облако в государственн...Сергей Сумец, ГП "Укрспирт": "Как происходит переход в облако в государственн...
Сергей Сумец, ГП "Укрспирт": "Как происходит переход в облако в государственн...
 
Максим Буренко, Prozorro: "Використання хмарних технологій у державному секто...
Максим Буренко, Prozorro: "Використання хмарних технологій у державному секто...Максим Буренко, Prozorro: "Використання хмарних технологій у державному секто...
Максим Буренко, Prozorro: "Використання хмарних технологій у державному секто...
 
Як бути QA на великому проекті
Як бути QA на великому проектіЯк бути QA на великому проекті
Як бути QA на великому проекті
 
Maryna Ruban: Рецесія? Чи є світло в кінці тунелю та коли будуть ліди з SEO? ...
Maryna Ruban: Рецесія? Чи є світло в кінці тунелю та коли будуть ліди з SEO? ...Maryna Ruban: Рецесія? Чи є світло в кінці тунелю та коли будуть ліди з SEO? ...
Maryna Ruban: Рецесія? Чи є світло в кінці тунелю та коли будуть ліди з SEO? ...
 
"Instant loading: Improving your website speed", Yozhef Hisem
"Instant loading: Improving your website speed",  Yozhef Hisem"Instant loading: Improving your website speed",  Yozhef Hisem
"Instant loading: Improving your website speed", Yozhef Hisem
 
Agile (IF PM Group) v2
Agile (IF PM Group) v2Agile (IF PM Group) v2
Agile (IF PM Group) v2
 
Корнілов Андрій
Корнілов АндрійКорнілов Андрій
Корнілов Андрій
 
Сервіси для цифрового переходу МСП
Сервіси для цифрового переходу МСПСервіси для цифрового переходу МСП
Сервіси для цифрового переходу МСП
 
Maryna Ruban: ТОП фішок, які використовують в IT у 2024 році (UA)
Maryna Ruban: ТОП фішок, які використовують в IT у 2024 році (UA)Maryna Ruban: ТОП фішок, які використовують в IT у 2024 році (UA)
Maryna Ruban: ТОП фішок, які використовують в IT у 2024 році (UA)
 
DevOps Fest 2020. Володимир Мельник. TuchaKube - перша українська DevOps/Host...
DevOps Fest 2020. Володимир Мельник. TuchaKube - перша українська DevOps/Host...DevOps Fest 2020. Володимир Мельник. TuchaKube - перша українська DevOps/Host...
DevOps Fest 2020. Володимир Мельник. TuchaKube - перша українська DevOps/Host...
 
Юрій Гаврилів “Період трансформації і участь в ньому інноваційних команд”
Юрій Гаврилів “Період трансформації і участь в ньому інноваційних команд”Юрій Гаврилів “Період трансформації і участь в ньому інноваційних команд”
Юрій Гаврилів “Період трансформації і участь в ньому інноваційних команд”
 
Невивчені уроки або логи антивірусних війн
Невивчені уроки або логи антивірусних війнНевивчені уроки або логи антивірусних війн
Невивчені уроки або логи антивірусних війн
 
[Knowledge Sharing] - Microservices Intro + Communication Patterns
[Knowledge Sharing] - Microservices Intro + Communication Patterns[Knowledge Sharing] - Microservices Intro + Communication Patterns
[Knowledge Sharing] - Microservices Intro + Communication Patterns
 
Стартапи в ІТ-сфері
Стартапи в ІТ-сфері Стартапи в ІТ-сфері
Стартапи в ІТ-сфері
 
Practical Cyber Security days
Practical Cyber Security daysPractical Cyber Security days
Practical Cyber Security days
 
Електронні архіви
Електронні архівиЕлектронні архіви
Електронні архіви
 
Робота із malware. McAfee ATD+TIE+DXL/OpenDXL
Робота із malware. McAfee ATD+TIE+DXL/OpenDXLРобота із malware. McAfee ATD+TIE+DXL/OpenDXL
Робота із malware. McAfee ATD+TIE+DXL/OpenDXL
 
Чим простіше - тим краще, Стас Хорунжий
Чим простіше - тим краще, Стас ХорунжийЧим простіше - тим краще, Стас Хорунжий
Чим простіше - тим краще, Стас Хорунжий
 

More from Fwdays

More from Fwdays (20)

"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y..."How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
 
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
"What is a RAG system and how to build it",Dmytro Spodarets
"What is a RAG system and how to build it",Dmytro Spodarets"What is a RAG system and how to build it",Dmytro Spodarets
"What is a RAG system and how to build it",Dmytro Spodarets
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
"Distributed graphs and microservices in Prom.ua", Maksym Kindritskyi
"Distributed graphs and microservices in Prom.ua",  Maksym Kindritskyi"Distributed graphs and microservices in Prom.ua",  Maksym Kindritskyi
"Distributed graphs and microservices in Prom.ua", Maksym Kindritskyi
 
"Rethinking the existing data loading and processing process as an ETL exampl...
"Rethinking the existing data loading and processing process as an ETL exampl..."Rethinking the existing data loading and processing process as an ETL exampl...
"Rethinking the existing data loading and processing process as an ETL exampl...
 
"How Ukrainian IT specialist can go on vacation abroad without crossing the T...
"How Ukrainian IT specialist can go on vacation abroad without crossing the T..."How Ukrainian IT specialist can go on vacation abroad without crossing the T...
"How Ukrainian IT specialist can go on vacation abroad without crossing the T...
 
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ..."The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...
 
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu..."[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...
 
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care..."[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...
 
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"..."4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...
 
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout", Anast...
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout",  Anast..."Reconnecting with Purpose: Rediscovering Job Interest after Burnout",  Anast...
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout", Anast...
 
"Mentoring 101: How to effectively invest experience in the success of others...
"Mentoring 101: How to effectively invest experience in the success of others..."Mentoring 101: How to effectively invest experience in the success of others...
"Mentoring 101: How to effectively invest experience in the success of others...
 
"Mission (im) possible: How to get an offer in 2024?", Oleksandra Myronova
"Mission (im) possible: How to get an offer in 2024?",  Oleksandra Myronova"Mission (im) possible: How to get an offer in 2024?",  Oleksandra Myronova
"Mission (im) possible: How to get an offer in 2024?", Oleksandra Myronova
 
"Why have we learned how to package products, but not how to 'package ourselv...
"Why have we learned how to package products, but not how to 'package ourselv..."Why have we learned how to package products, but not how to 'package ourselv...
"Why have we learned how to package products, but not how to 'package ourselv...
 
"How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin...
"How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin..."How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin...
"How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin...
 

"Next gen cloud-native platforms: showcase from TemaBit, Fozzy Group", Sergiy Medvedyev

  • 1. Як українська компанія Fozzy Group будує next gen cloud-native платформи Еволюційна архітектура
  • 2. Fozzy Group: Факти Fozzy Group - одна з найбільших торгово-промислових груп України. та інші 350+ супермаркетів 300+ магазинів біля дому 90+ маркетів 7 гіпермаркетів 90+ аптек А також Логістика, e-com (доставка «Сільпо» та LOKO), онлайн магазини Maudau та E-Zoo, власні виробництва та 50 000+ працівників Fozzy Group є користувачами наших продуктів.
  • 3. TEMABIT: Хто ми? TemaBit - українська IT компанія, яка є частиною Fozzy Group Про нас в цифрах: 10+ років досвіду 1 300+ працівників 02 центри розробки R&D центр Ми змінюємо користувацький досвід українців і втілюємо сміливі рішення для групи компаній Fozzy Group
  • 4. Ми змінюємо користувацький досвід українців і втілюємо сміливі рішення для групи компаній Fozzy Group Хто я? Сергій Медведєв Chief IT Architect Fozzy Group Керівник Департаменту IT Architecture Temabit • Підвищене серцебиття від технологій в IT вже 20+ років • Пройшов довгий шлях в різних доменах від інженера до архітектора • У 2015 році перейшов у сферу розробки програмного забезпечення як Enterprise Architect • Починаючи з 2022 року, поєднував контрактну роботу Enterprise Architect з посадою CTO в рамках власної компанії apricusit.com • З 2023 року в Fozzy Group
  • 5. Нова cloud-native Платформа Товарного обліку (Commodity Accounting Platform - CAP): ДЕ, СКІЛЬКИ, ЧОГО (якого товару) в кожний момент часу BUSINESS CASE
  • 6. Near real-time відповіді на питання ДЕ, СКІЛЬКИ, ЧОГО в розрізі ✓ Артікулів (Article) ✓ Артікулів по businessUnit чи Store Location в кожний момент часу Expected result:
  • 7. ВИКЛИК В ЦИФРАХ 1 300+ Магазинів, РЦ, Складів 300+ Машин Факт від «Сільпо»: • в середньому, 10 000 000 транзакцій по переміщенню Article/день • 25 транзакцій/сек при піках в 2-3 рази більше Challenges: • Технічна: як відслідкувати зміни кількості по кожному Article? • Логічна: як забезпечити правильну послідовність обробки переміщень товару? • Інфраструктурна: як забезпечити performance? СКІЛЬКИ? ДЕ? ЧОГО? 250 000+ артикулів (тільки в Сільпо) • Продали? • Везуть? • Залишилось?
  • 9. ES + CQRS = рішення Architecture: гіпотеза
  • 11. • Яка сутність буде агрегатом? де бізнес логіка? • Яка "глибина" агрегату? Швидкість "завантаження" state? Cost? • Як робити "build"/"rebuild" проекції? Performance and cost ES + CQRS: ключові питання
  • 12. DDD and CQRS in action... ПОШУК ВАРІАНТІВ РІШЕННЯ
  • 13. Крок 1: "в лоб" ✓ Кожен Article – агрегат ✓ Raise events змін по Article + businessUnit ✓ Побудувати проекції: по кожному businessUnit+ Article по кожному Article ІДЕЯ Кількість events і обробок: 10 000 000 x2 це min Місяць: 30 x (10 000 000 x 2) = 600 000 000 events/ month
  • 14. Артикул – агрегат PROS • Точність в розрізі Article • Велика ступінь гнучкості • Швидко обробляється CONS • С точки зору бізнесу: обробляються не Article, а документи - потрібна розподілена транзакція + щось про документ • Велика "глибина" ES агрегатів - важко "піднімати" стан • проблеми rebuild проекцій - compute intensive, довго
  • 15. ПРОБЛЕМА: бізнес обліковує ДОКУМЕНТИ, а ми побудували events в рамках АРТИКУЛІВ... невірний DDD
  • 16. Крок 2: Документ - агрегат ✓ Кожен документ – агрегат, i.e. container "операцій" ✓ Raise events змін по Article + businessUnit ü Будуємо проекції: • по кожному businessUnit+ Article • по кожному Article ✓ Повна зворотна сумістність по "read" ІДЕЯ
  • 17. Документ - агрегат ЗМІНА PROS • Документ обробляється атомарно • Велика ступінь гнучкості • Не "глибокий" агрегат CONS • Немає гарантії "послідовність" обробок по Article (вони тепер в різних документах) • проблеми rebuild проекцій - послідовна обробка events Кількість events і обробок (min): 600 000 000 events/month
  • 18. ПРОБЛЕМА: як гарантувати ПОСЛІДОВНІСТЬ events в рамках АРТИКУЛУ, якщо вони приходять з РІЗНИХ типів ДОКУМЕНТІВ в паралелі?
  • 19. ПОТРІБНА ЗМІНА АРХІТЕКТУРИ... щось, що гарантує послідовність і паралельну обробку
  • 21. ✓ Кожен документ – агрегат ✓ Raise events створення і змін документів ✓ Розбираємо документ на операції і відправляємо в Kafka Streams як events (stateful) ✓ Topic per article ✓ Будуємо проекції в Kafka Streams (stateful) ІДЕЯ Крок 3: "Революційна" еволюція
  • 22. PROS • Документ обробляється атомарно • Точність і гарантія послідовності в розрізі Article • Велика ступінь гнучкості • Супер швидко обробляється - в паралелі per Article • Не "глибокий" агрегат CONS • Складніша інфраструктура • Складніша розробка - потрібен інший mindset ES + CQRS + Stream Processing
  • 25. Evolutionary architecture is an approach to build software that's designed to evolve over time as business priorities change, customer demands shift, and new technologies emerge. Останній слайд ДЯКУЮ!