Последние 10 лет занимаюсь исследованием новых подходов и созданием решений в областях: рекламы, финтеха и ml.
Являюсь автором асинхронной библиотеки компонентов goblin-engineer (github.com/jinncrafters/goblin-engineer),
основанной на использование акторного подхода ( actor-zeta github.com/jinncrafters/actor-zeta).
В область интересов входят вопросы разработки распределенных систем, параллельной и конкурентной
обработки информации.
Мой хобби-проект - RocketJoe (github.com/jinncrafters/RocketJoe).
Разрабатывать web-service интересно и увлекательно, а если он особенно однопоточный, так еще и просто.
К сожалению, в современном мире уже недостаточно разрабатывать однопоточные сервисы.
Для того, чтобы удовлетворять требованиям времени, приходится совмещать в сервисах многопоточность, конкурентность и асинхронность подходов.
В прежние времена приходилось внедрять сложные модели конкурентности на future/promise, совмещая с подходами продления времени жизни объектов через std::enable_shared_from_this.
На долгом пути к релизу ожидают и другие сложности:
- трудность построения архитектуры на future/promise;
- высокая степень связности компонентов сервиса;
- неопределенный жизненный цикл компонентов системы;
- сложность системы склеивания операций в pipeline;
- плохая управляемость памятью.
Так что же делать в таком случае?
Отказываться от вышеперечисленных подходов и руководствоваться следующими принципами построения системы:
- data locality;
- иерархия ответственности за ресурсы;
- мелкогранулярная система распределения мест выполнения задач.
Данные принципы лежат в основе подхода, называемым virtual actor model.
О том как используется virtual actor model для построения сервисов будет рассказано в докладе.