SlideShare a Scribd company logo
1 of 28
Download to read offline
Универсальные паттерны highload
на конкретном примере игрового сервера на Haskell
Максим Безуглый
Attracti S.a.r.l.
Точка отсчета
• Когда влияние ошибки и неэффективного решения имеет значительное влияние на
бизнес

• App - код для дефолтной инфраструктуры, Highload App - код и особая
инфраструктура

• Паттерны универсальны, решение уникально
Выбор технологий
• Зависит от бизнес задачи

• Чем каждая технология плоха в контексте задачи

• Маппинг технологии на бизнес домен, модель данных и процессы

• Оптимизация расходов и tradeoff в пользу стратегических целей
Пространство изменяемых данных
• Рост числа решений с единым пространсвом данных

• История - nginx, haproxy, varnish etc

• Обработка своих данных пользователя vs участие в большой модели данных
Архитектурные паттерны
• Паттерн зависит от контекста

• Понимание контекста - зависит от опыта

• Паттерны эффективной разработки vs эффективной работы приложения

• Composability of patterns
Прожигаете регистры или ленты
• Наличие пользователя, ждущего ответа прямо сейчас

• Многократный проход код через малый объем данных

• Минимальный процессинг растущих данных + фоновая обработка
Горизонт сложности
• Когда сам факт внедрения HL ориентированной технологии не решает

• Когда нюансы начинают иметь решающее значение

• У решения есть границы. Их понимали создатели решения, их раздвигали
commiting пользователи
Базовые инструменты - ранее
передовые решения
• Они редко становятся проще в использовании

• Их возраст не делает их менее нужными

• Load Balancing, Replication, Sharding
Cache - от простого к сложному
• Dogpile protection

• Cache invalidation

• in app, memcached, redis >> С*
Умение расставаться с (любимыми)
технологиями
• Когда node.js уже не работает

• C10K раньше и node.js сейчас. HL - всегда решения on the edge 

• Решаемо: Code complexity > TypeScript

• Не решаемо: Single thread, CPU, MEM

• Время для Erlang, Go, C++ etc

Клин клином - когда нужны 

сложные решения
• Но требуют серьезных архитектурных изменений

• Компоновка блоков vs структура блоков

• Performant код, входы и выходы, side effects, связность с другими блоками -
структура блока

• Определенная внутрення структура позволяет использовать готовые highload
элементы или инфраструктуру
Коммуникация - интерфейсы,
протоколы и шина
• Внутренние между модулями или микросервисами, Actor Model

• Неожиданные места: SCSI, IDE, SATA, Thunderbolt, сеть

• Compression

• ProtoBuf

• Dedup, ZFS
CPU Time
• Эффективная работа (два байта обновить) и накладные расходы

• Respect CPU - ресайз картинок от оригинала, от промежуточных

• Close to hardware. время операций от L1 кеша до сети

• Важно ли большое O - зависит от объема трансформации данных + нужно ли это
дать в ответ (а не рассчитать на фоне)

• Parallel, Concurrent

• Граф выполнения, параллельные и последовательные блоки
Memory
• GC

• Managed vs unmanaged 

• Immutable data

• Actors 

• STM
Данные
• Структура данных определит процессы обработки

• Универсальные процессы могут работать только с метаданными 

• Степень надежности хранения

• Layers of persistency 

• Место операций над данными между пространством кода и БД 

• Модификация (программа трансформации данных). «Причинные» данные и расчетные 

• Materialized view
CQRS
• Command Query Responsibility Segregation

• Зачем?!
• Если бы я знал почему, я бы..
Очереди
• Low level pattern for high level Actor Model 

• Решение проблемы числа CPU. С приоритетами или без 

• TCP request queue, throttling, rate limiting, load balancing 

• Fast in mem, message queue (расширяет модель данных) 

• External MQ
Actor Model
• Runtime. Akka, Cloud Haskell, Erlang OTP Platform
• Модель актеров -> immutable data 

• Supervisor, let it fail

• vs PubSub
Event Sourcing
• vs CRUD

• Накладывает серьезные изменения на app model & logic 

• Reverse TX
STM
• No more LOCKING

• Compose TX
Resiliency
• Isolate application components 

• Actor Model Let if fail, Supervisor 

• Circuit Breaker

• Compensating Transaction (event sourcing) 

• Retry 

• orElse (STM) 

• AWS Specific (floating IP, Multi-Server, Multi-DataCenter) 

• RAID, Mnesia
Bug as a feature
• Single point of failure
Гибкость мышления
• Кеш в проце, в коде, кеш как tcp сервис, SAAS

• Транзакции в базе, в коде (stm, mnesia), в cpu
Почему на примере игрового сервера
• Требования пользователей к latency и uptime часто выше, чем в бизнес
приложениях

• Но часто там в одном проекте стоит более широкий набор проблем
Почему Haskell
• CPU / MEM / Time

• Мультипарадигменность

• Скорость разработки

• Управление качеством ПО

• Многие языки и так более 10 лет переносят конструкции, базовые для Haskell
Какие технологии рассматривались
• С++: manual locking. Same as Cocos MVP / Unreal logic

• Erlang: inefficient CPU

• Scala, Java: inefficient MEM, almost world stop GC

• JavaScript: very inefficient CPU, limited MEM, single thread

• F#: can mix C# from Unity. Network code is Slow/Unstable vs Haskell
Разбор архитектуры игрового сервера
• Auth

• Auto register, login, change client

• Client need update for new game rules

• Metagame

• Match make

• Select server

• Save match results

• Championship logic

• Payments

• Analytics

• User stats
• Gameplay

• Generate “fair buffer”

• Pass turns

• Hi-Res timeouts

• Hide choice, process consequences

• Chaos gems map to random energy
Максим Безуглый
https://www.facebook.com/maksym.bezuglyi
Спасибо!

More Related Content

What's hot

Кирилл Алешин - Big Data и Lambda архитектура на практике
Кирилл Алешин - Big Data и Lambda архитектура на практикеКирилл Алешин - Big Data и Lambda архитектура на практике
Кирилл Алешин - Big Data и Lambda архитектура на практикеIT Share
 
All Flash системы хранения – примеры из реального опыта
All Flash системы хранения – примеры из реального опытаAll Flash системы хранения – примеры из реального опыта
All Flash системы хранения – примеры из реального опытаАльбина Минуллина
 
Борьба с GС паузами в JVM
Борьба с GС паузами в JVMБорьба с GС паузами в JVM
Борьба с GС паузами в JVMaragozin
 
Опыт построения комплексного катастрофоустойчивого решения NetApp и фрагмента...
Опыт построения комплексного катастрофоустойчивого решения NetApp и фрагмента...Опыт построения комплексного катастрофоустойчивого решения NetApp и фрагмента...
Опыт построения комплексного катастрофоустойчивого решения NetApp и фрагмента...Айдар Гилязов
 
High load2007 scaling-web-applications-rus
High load2007 scaling-web-applications-rusHigh load2007 scaling-web-applications-rus
High load2007 scaling-web-applications-rusVladd Ev
 
Новости и анонсы конференции Oracle Open World 2013
Новости и анонсы конференции Oracle Open World 2013Новости и анонсы конференции Oracle Open World 2013
Новости и анонсы конференции Oracle Open World 2013Andrey Akulov
 
Modern apps Windows Azure
Modern apps Windows AzureModern apps Windows Azure
Modern apps Windows AzureZaur Abutalimov
 
HPE adaptive backup and recovery
HPE adaptive backup and recoveryHPE adaptive backup and recovery
HPE adaptive backup and recoveryAnatoliy Arkhipov
 
Про аналитику и серебряные пули
Про аналитику и серебряные пулиПро аналитику и серебряные пули
Про аналитику и серебряные пулиRamblerML
 
TCO аренда облачной IT инфраструктуры Онланты vs покупка серверов
TCO аренда облачной IT инфраструктуры Онланты vs покупка серверовTCO аренда облачной IT инфраструктуры Онланты vs покупка серверов
TCO аренда облачной IT инфраструктуры Онланты vs покупка серверовZaur Abutalimov
 
Описание архитектуры СУБД HP Vertica
Описание архитектуры СУБД HP VerticaОписание архитектуры СУБД HP Vertica
Описание архитектуры СУБД HP VerticaAndrey Karpov
 
Oracle database In-Memory - новая технология обработки в памяти
Oracle database In-Memory - новая технология обработки в памятиOracle database In-Memory - новая технология обработки в памяти
Oracle database In-Memory - новая технология обработки в памятиAndrey Akulov
 
Виртуальный дата-центр КРОК
Виртуальный дата-центр КРОКВиртуальный дата-центр КРОК
Виртуальный дата-центр КРОККРОК
 
Использование Tarantool в качестве платформы виртуализации данных / Константи...
Использование Tarantool в качестве платформы виртуализации данных / Константи...Использование Tarantool в качестве платформы виртуализации данных / Константи...
Использование Tarantool в качестве платформы виртуализации данных / Константи...Ontico
 

What's hot (17)

Кирилл Алешин - Big Data и Lambda архитектура на практике
Кирилл Алешин - Big Data и Lambda архитектура на практикеКирилл Алешин - Big Data и Lambda архитектура на практике
Кирилл Алешин - Big Data и Lambda архитектура на практике
 
Обзор HP Vertica
Обзор HP VerticaОбзор HP Vertica
Обзор HP Vertica
 
All Flash системы хранения – примеры из реального опыта
All Flash системы хранения – примеры из реального опытаAll Flash системы хранения – примеры из реального опыта
All Flash системы хранения – примеры из реального опыта
 
Борьба с GС паузами в JVM
Борьба с GС паузами в JVMБорьба с GС паузами в JVM
Борьба с GС паузами в JVM
 
Опыт построения комплексного катастрофоустойчивого решения NetApp и фрагмента...
Опыт построения комплексного катастрофоустойчивого решения NetApp и фрагмента...Опыт построения комплексного катастрофоустойчивого решения NetApp и фрагмента...
Опыт построения комплексного катастрофоустойчивого решения NetApp и фрагмента...
 
High load2007 scaling-web-applications-rus
High load2007 scaling-web-applications-rusHigh load2007 scaling-web-applications-rus
High load2007 scaling-web-applications-rus
 
Новости и анонсы конференции Oracle Open World 2013
Новости и анонсы конференции Oracle Open World 2013Новости и анонсы конференции Oracle Open World 2013
Новости и анонсы конференции Oracle Open World 2013
 
Modern apps Windows Azure
Modern apps Windows AzureModern apps Windows Azure
Modern apps Windows Azure
 
HPE adaptive backup and recovery
HPE adaptive backup and recoveryHPE adaptive backup and recovery
HPE adaptive backup and recovery
 
Про аналитику и серебряные пули
Про аналитику и серебряные пулиПро аналитику и серебряные пули
Про аналитику и серебряные пули
 
Аудит веб-приложений
Аудит веб-приложенийАудит веб-приложений
Аудит веб-приложений
 
TCO аренда облачной IT инфраструктуры Онланты vs покупка серверов
TCO аренда облачной IT инфраструктуры Онланты vs покупка серверовTCO аренда облачной IT инфраструктуры Онланты vs покупка серверов
TCO аренда облачной IT инфраструктуры Онланты vs покупка серверов
 
Описание архитектуры СУБД HP Vertica
Описание архитектуры СУБД HP VerticaОписание архитектуры СУБД HP Vertica
Описание архитектуры СУБД HP Vertica
 
HP Vertica
HP VerticaHP Vertica
HP Vertica
 
Oracle database In-Memory - новая технология обработки в памяти
Oracle database In-Memory - новая технология обработки в памятиOracle database In-Memory - новая технология обработки в памяти
Oracle database In-Memory - новая технология обработки в памяти
 
Виртуальный дата-центр КРОК
Виртуальный дата-центр КРОКВиртуальный дата-центр КРОК
Виртуальный дата-центр КРОК
 
Использование Tarantool в качестве платформы виртуализации данных / Константи...
Использование Tarantool в качестве платформы виртуализации данных / Константи...Использование Tarantool в качестве платформы виртуализации данных / Константи...
Использование Tarantool в качестве платформы виртуализации данных / Константи...
 

Similar to Maksym Bezuglyi "Universal highload patterns on a specific example of a game server on Haskell"

2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, ParallelsNikolay Samokhvalov
 
Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...
Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...
Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...Ontico
 
JSLab.Тимур Шемсединов. "Архитектура программных систем на Node.js"
JSLab.Тимур Шемсединов. "Архитектура программных систем на Node.js"JSLab.Тимур Шемсединов. "Архитектура программных систем на Node.js"
JSLab.Тимур Шемсединов. "Архитектура программных систем на Node.js"GeeksLab Odessa
 
Архитектура программных систем на Node.js
Архитектура программных систем на Node.jsАрхитектура программных систем на Node.js
Архитектура программных систем на Node.jsTimur Shemsedinov
 
12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связан...
12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связан...12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связан...
12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связан...HappyDev-lite
 
Создание географически-распределенных датацентров на базе инженерных систем
Создание географически-распределенных датацентров на базе инженерных системСоздание географически-распределенных датацентров на базе инженерных систем
Создание географически-распределенных датацентров на базе инженерных системAndrey Akulov
 
10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...
10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...
10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...HappyDev
 
Fors и big data appliance
Fors и big data applianceFors и big data appliance
Fors и big data applianceCleverDATA
 
Суперкомпьютеры сегодня и завтра архитектура, проблемы, перспективы (Андрей С...
Суперкомпьютеры сегодня и завтра архитектура, проблемы, перспективы (Андрей С...Суперкомпьютеры сегодня и завтра архитектура, проблемы, перспективы (Андрей С...
Суперкомпьютеры сегодня и завтра архитектура, проблемы, перспективы (Андрей С...Ontico
 
владивосток форум производительность_ha
владивосток форум производительность_haвладивосток форум производительность_ha
владивосток форум производительность_haElena Ometova
 
Владимир Никонов "Вызовы при разработке enterprise продукта"
Владимир Никонов "Вызовы при разработке enterprise продукта"Владимир Никонов "Вызовы при разработке enterprise продукта"
Владимир Никонов "Вызовы при разработке enterprise продукта"Fwdays
 
Гибридные Центры Обработки Данных
Гибридные Центры Обработки ДанныхГибридные Центры Обработки Данных
Гибридные Центры Обработки ДанныхTechExpert
 
Построение системы аналитики
Построение системы аналитикиПостроение системы аналитики
Построение системы аналитикиИлья Середа
 
Highload++2013: TopGun - архитектура терабитной платформы DPI
Highload++2013: TopGun - архитектура терабитной платформы DPIHighload++2013: TopGun - архитектура терабитной платформы DPI
Highload++2013: TopGun - архитектура терабитной платформы DPILeonid Yuriev
 
Talksum dec2013 rus_generic
Talksum dec2013 rus_genericTalksum dec2013 rus_generic
Talksum dec2013 rus_genericdartemiev
 
кри 2014 elastic search рациональный подход к созданию собственной системы а...
кри 2014 elastic search  рациональный подход к созданию собственной системы а...кри 2014 elastic search  рациональный подход к созданию собственной системы а...
кри 2014 elastic search рациональный подход к созданию собственной системы а...Vyacheslav Nikulin
 
разработка бизнес приложений (9)
разработка бизнес приложений (9)разработка бизнес приложений (9)
разработка бизнес приложений (9)Alexander Gornik
 
Японские инновации или чем уникальны японские серверы Fujitsu
Японские инновации или чем уникальны японские серверы FujitsuЯпонские инновации или чем уникальны японские серверы Fujitsu
Японские инновации или чем уникальны японские серверы FujitsuFujitsu Russia
 
ОПТИМИЗАЦИЯ ИНФРАСТРУКТУРЫ И СОКРАЩЕНИЕ ЗАТРАТ ПРИ ПОМОЩИ ПРОДУКТОВ И ТЕХНОЛО...
ОПТИМИЗАЦИЯ ИНФРАСТРУКТУРЫ И СОКРАЩЕНИЕ ЗАТРАТ ПРИ ПОМОЩИ ПРОДУКТОВ И ТЕХНОЛО...ОПТИМИЗАЦИЯ ИНФРАСТРУКТУРЫ И СОКРАЩЕНИЕ ЗАТРАТ ПРИ ПОМОЩИ ПРОДУКТОВ И ТЕХНОЛО...
ОПТИМИЗАЦИЯ ИНФРАСТРУКТУРЫ И СОКРАЩЕНИЕ ЗАТРАТ ПРИ ПОМОЩИ ПРОДУКТОВ И ТЕХНОЛО...Sasha_Zavorot
 

Similar to Maksym Bezuglyi "Universal highload patterns on a specific example of a game server on Haskell" (20)

2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels
 
Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...
Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...
Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...
 
JSLab.Тимур Шемсединов. "Архитектура программных систем на Node.js"
JSLab.Тимур Шемсединов. "Архитектура программных систем на Node.js"JSLab.Тимур Шемсединов. "Архитектура программных систем на Node.js"
JSLab.Тимур Шемсединов. "Архитектура программных систем на Node.js"
 
Архитектура программных систем на Node.js
Архитектура программных систем на Node.jsАрхитектура программных систем на Node.js
Архитектура программных систем на Node.js
 
12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связан...
12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связан...12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связан...
12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связан...
 
Создание географически-распределенных датацентров на базе инженерных систем
Создание географически-распределенных датацентров на базе инженерных системСоздание географически-распределенных датацентров на базе инженерных систем
Создание географически-распределенных датацентров на базе инженерных систем
 
10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...
10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...
10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...
 
Fors и big data appliance
Fors и big data applianceFors и big data appliance
Fors и big data appliance
 
Суперкомпьютеры сегодня и завтра архитектура, проблемы, перспективы (Андрей С...
Суперкомпьютеры сегодня и завтра архитектура, проблемы, перспективы (Андрей С...Суперкомпьютеры сегодня и завтра архитектура, проблемы, перспективы (Андрей С...
Суперкомпьютеры сегодня и завтра архитектура, проблемы, перспективы (Андрей С...
 
владивосток форум производительность_ha
владивосток форум производительность_haвладивосток форум производительность_ha
владивосток форум производительность_ha
 
Владимир Никонов "Вызовы при разработке enterprise продукта"
Владимир Никонов "Вызовы при разработке enterprise продукта"Владимир Никонов "Вызовы при разработке enterprise продукта"
Владимир Никонов "Вызовы при разработке enterprise продукта"
 
Гибридные Центры Обработки Данных
Гибридные Центры Обработки ДанныхГибридные Центры Обработки Данных
Гибридные Центры Обработки Данных
 
Sivko
SivkoSivko
Sivko
 
Построение системы аналитики
Построение системы аналитикиПостроение системы аналитики
Построение системы аналитики
 
Highload++2013: TopGun - архитектура терабитной платформы DPI
Highload++2013: TopGun - архитектура терабитной платформы DPIHighload++2013: TopGun - архитектура терабитной платформы DPI
Highload++2013: TopGun - архитектура терабитной платформы DPI
 
Talksum dec2013 rus_generic
Talksum dec2013 rus_genericTalksum dec2013 rus_generic
Talksum dec2013 rus_generic
 
кри 2014 elastic search рациональный подход к созданию собственной системы а...
кри 2014 elastic search  рациональный подход к созданию собственной системы а...кри 2014 elastic search  рациональный подход к созданию собственной системы а...
кри 2014 elastic search рациональный подход к созданию собственной системы а...
 
разработка бизнес приложений (9)
разработка бизнес приложений (9)разработка бизнес приложений (9)
разработка бизнес приложений (9)
 
Японские инновации или чем уникальны японские серверы Fujitsu
Японские инновации или чем уникальны японские серверы FujitsuЯпонские инновации или чем уникальны японские серверы Fujitsu
Японские инновации или чем уникальны японские серверы Fujitsu
 
ОПТИМИЗАЦИЯ ИНФРАСТРУКТУРЫ И СОКРАЩЕНИЕ ЗАТРАТ ПРИ ПОМОЩИ ПРОДУКТОВ И ТЕХНОЛО...
ОПТИМИЗАЦИЯ ИНФРАСТРУКТУРЫ И СОКРАЩЕНИЕ ЗАТРАТ ПРИ ПОМОЩИ ПРОДУКТОВ И ТЕХНОЛО...ОПТИМИЗАЦИЯ ИНФРАСТРУКТУРЫ И СОКРАЩЕНИЕ ЗАТРАТ ПРИ ПОМОЩИ ПРОДУКТОВ И ТЕХНОЛО...
ОПТИМИЗАЦИЯ ИНФРАСТРУКТУРЫ И СОКРАЩЕНИЕ ЗАТРАТ ПРИ ПОМОЩИ ПРОДУКТОВ И ТЕХНОЛО...
 

More from Fwdays

"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...Fwdays
 
"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 TopchiiFwdays
 
"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...Fwdays
 
"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 LapshynFwdays
 
"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 SpodaretsFwdays
 
"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 SoldatenkoFwdays
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
"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 SchlawackFwdays
 
"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 KindritskyiFwdays
 
"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...Fwdays
 
"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...Fwdays
 
"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", ...Fwdays
 
"[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...Fwdays
 
"[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...Fwdays
 
"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)"...Fwdays
 
"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...Fwdays
 
"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...Fwdays
 
"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 MyronovaFwdays
 
"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...Fwdays
 
"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...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...
 

Maksym Bezuglyi "Universal highload patterns on a specific example of a game server on Haskell"

  • 1. Универсальные паттерны highload на конкретном примере игрового сервера на Haskell Максим Безуглый Attracti S.a.r.l.
  • 2. Точка отсчета • Когда влияние ошибки и неэффективного решения имеет значительное влияние на бизнес • App - код для дефолтной инфраструктуры, Highload App - код и особая инфраструктура • Паттерны универсальны, решение уникально
  • 3. Выбор технологий • Зависит от бизнес задачи • Чем каждая технология плоха в контексте задачи • Маппинг технологии на бизнес домен, модель данных и процессы • Оптимизация расходов и tradeoff в пользу стратегических целей
  • 4. Пространство изменяемых данных • Рост числа решений с единым пространсвом данных • История - nginx, haproxy, varnish etc • Обработка своих данных пользователя vs участие в большой модели данных
  • 5. Архитектурные паттерны • Паттерн зависит от контекста • Понимание контекста - зависит от опыта • Паттерны эффективной разработки vs эффективной работы приложения • Composability of patterns
  • 6. Прожигаете регистры или ленты • Наличие пользователя, ждущего ответа прямо сейчас • Многократный проход код через малый объем данных • Минимальный процессинг растущих данных + фоновая обработка
  • 7. Горизонт сложности • Когда сам факт внедрения HL ориентированной технологии не решает • Когда нюансы начинают иметь решающее значение • У решения есть границы. Их понимали создатели решения, их раздвигали commiting пользователи
  • 8. Базовые инструменты - ранее передовые решения • Они редко становятся проще в использовании • Их возраст не делает их менее нужными • Load Balancing, Replication, Sharding
  • 9. Cache - от простого к сложному • Dogpile protection • Cache invalidation • in app, memcached, redis >> С*
  • 10. Умение расставаться с (любимыми) технологиями • Когда node.js уже не работает • C10K раньше и node.js сейчас. HL - всегда решения on the edge • Решаемо: Code complexity > TypeScript • Не решаемо: Single thread, CPU, MEM • Время для Erlang, Go, C++ etc

  • 11. Клин клином - когда нужны 
 сложные решения • Но требуют серьезных архитектурных изменений • Компоновка блоков vs структура блоков • Performant код, входы и выходы, side effects, связность с другими блоками - структура блока • Определенная внутрення структура позволяет использовать готовые highload элементы или инфраструктуру
  • 12. Коммуникация - интерфейсы, протоколы и шина • Внутренние между модулями или микросервисами, Actor Model • Неожиданные места: SCSI, IDE, SATA, Thunderbolt, сеть • Compression • ProtoBuf • Dedup, ZFS
  • 13. CPU Time • Эффективная работа (два байта обновить) и накладные расходы • Respect CPU - ресайз картинок от оригинала, от промежуточных • Close to hardware. время операций от L1 кеша до сети • Важно ли большое O - зависит от объема трансформации данных + нужно ли это дать в ответ (а не рассчитать на фоне) • Parallel, Concurrent • Граф выполнения, параллельные и последовательные блоки
  • 14. Memory • GC • Managed vs unmanaged • Immutable data • Actors • STM
  • 15. Данные • Структура данных определит процессы обработки • Универсальные процессы могут работать только с метаданными • Степень надежности хранения • Layers of persistency • Место операций над данными между пространством кода и БД • Модификация (программа трансформации данных). «Причинные» данные и расчетные • Materialized view
  • 16. CQRS • Command Query Responsibility Segregation • Зачем?! • Если бы я знал почему, я бы..
  • 17. Очереди • Low level pattern for high level Actor Model • Решение проблемы числа CPU. С приоритетами или без • TCP request queue, throttling, rate limiting, load balancing • Fast in mem, message queue (расширяет модель данных) • External MQ
  • 18. Actor Model • Runtime. Akka, Cloud Haskell, Erlang OTP Platform • Модель актеров -> immutable data • Supervisor, let it fail • vs PubSub
  • 19. Event Sourcing • vs CRUD • Накладывает серьезные изменения на app model & logic • Reverse TX
  • 20. STM • No more LOCKING • Compose TX
  • 21. Resiliency • Isolate application components • Actor Model Let if fail, Supervisor • Circuit Breaker • Compensating Transaction (event sourcing) • Retry • orElse (STM) • AWS Specific (floating IP, Multi-Server, Multi-DataCenter) • RAID, Mnesia
  • 22. Bug as a feature • Single point of failure
  • 23. Гибкость мышления • Кеш в проце, в коде, кеш как tcp сервис, SAAS
 • Транзакции в базе, в коде (stm, mnesia), в cpu
  • 24. Почему на примере игрового сервера • Требования пользователей к latency и uptime часто выше, чем в бизнес приложениях • Но часто там в одном проекте стоит более широкий набор проблем
  • 25. Почему Haskell • CPU / MEM / Time • Мультипарадигменность • Скорость разработки • Управление качеством ПО • Многие языки и так более 10 лет переносят конструкции, базовые для Haskell
  • 26. Какие технологии рассматривались • С++: manual locking. Same as Cocos MVP / Unreal logic • Erlang: inefficient CPU • Scala, Java: inefficient MEM, almost world stop GC • JavaScript: very inefficient CPU, limited MEM, single thread • F#: can mix C# from Unity. Network code is Slow/Unstable vs Haskell
  • 27. Разбор архитектуры игрового сервера • Auth • Auto register, login, change client • Client need update for new game rules • Metagame • Match make • Select server • Save match results • Championship logic • Payments • Analytics • User stats • Gameplay • Generate “fair buffer” • Pass turns • Hi-Res timeouts • Hide choice, process consequences • Chaos gems map to random energy