Старые подходы к построению программных систем не так актуальны для создания современных решений. В дополнение к масштабируемости добавляются требования отзывчивости, отказоустойчивости и событийности. Пытаться работать на родном старом или посмотреть в сторону новых технологий? В своем выступлении я расскажу про концепцию reactive programming. Какие технологии реализуют концепцию и как сделать первые шаги в этом новом прекрасном мире.
40. • Недоступность узла это норма
• Максимальное время ожидания ответа
17
Особенности в распределенных системах
41. • Недоступность узла это норма
• Максимальное время ожидания ответа
• Корректная деградация вместо полной недоступности
17
Особенности в распределенных системах
44. • Ошибка в своем коде
19
Что может пойти не так
45. • Ошибка в своем коде
• Ошибка в чужом коде (сервис или ОС)
19
Что может пойти не так
46. • Ошибка в своем коде
• Ошибка в чужом коде (сервис или ОС)
• Железо вышло из строя
19
Что может пойти не так
47. • Ошибка в своем коде
• Ошибка в чужом коде (сервис или ОС)
• Железо вышло из строя
• Сеть вышла из строя
19
Что может пойти не так
48. • Ошибка в своем коде
• Ошибка в чужом коде (сервис или ОС)
• Железо вышло из строя
• Сеть вышла из строя
• Эксплутаторы тоже люди
19
Что может пойти не так
97. • Java, C++
• Плюсы
• Параллелизм
34
Языки общего назначения
98. • Java, C++
• Плюсы
• Параллелизм
• Асинхронность
34
Языки общего назначения
99. • Java, C++
• Плюсы
• Параллелизм
• Асинхронность
• Минуcы
34
Языки общего назначения
100. • Java, C++
• Плюсы
• Параллелизм
• Асинхронность
• Минуcы
• Монолит в рантайме
34
Языки общего назначения
101. • Java, C++
• Плюсы
• Параллелизм
• Асинхронность
• Минуcы
• Монолит в рантайме
• Сложно масштабируемы
34
Языки общего назначения
102. • Java, C++
• Плюсы
• Параллелизм
• Асинхронность
• Минуcы
• Монолит в рантайме
• Сложно масштабируемы
• Возможно все, но сложно
34
Языки общего назначения
105. • PHP фреймворки, Ruby on Rails, Django и т.д.
36
Process per Request
106. • PHP фреймворки, Ruby on Rails, Django и т.д.
• Плюсы
36
Process per Request
107. • PHP фреймворки, Ruby on Rails, Django и т.д.
• Плюсы
• Изоляция
36
Process per Request
108. • PHP фреймворки, Ruby on Rails, Django и т.д.
• Плюсы
• Изоляция
• Масштабируемость
36
Process per Request
109. • PHP фреймворки, Ruby on Rails, Django и т.д.
• Плюсы
• Изоляция
• Масштабируемость
• Минуcы
36
Process per Request
110. • PHP фреймворки, Ruby on Rails, Django и т.д.
• Плюсы
• Изоляция
• Масштабируемость
• Минуcы
• Не событийны
36
Process per Request
111. • PHP фреймворки, Ruby on Rails, Django и т.д.
• Плюсы
• Изоляция
• Масштабируемость
• Минуcы
• Не событийны
• Нет асинхронности и неблокируемости
36
Process per Request
112. • PHP фреймворки, Ruby on Rails, Django и т.д.
• Плюсы
• Изоляция
• Масштабируемость
• Минуcы
• Не событийны
• Нет асинхронности и неблокируемости
• Простое масштабирование до определенного предела
36
Process per Request
127. • Node.js, Vert.x
• Вся работа в event loop
• Плюсы
• Событийны, асинхронны, неблокируемы
40
Event Loop
128. • Node.js, Vert.x
• Вся работа в event loop
• Плюсы
• Событийны, асинхронны, неблокируемы
• Минусы
40
Event Loop
129. • Node.js, Vert.x
• Вся работа в event loop
• Плюсы
• Событийны, асинхронны, неблокируемы
• Минусы
• Ограничен одной нодой
40
Event Loop
130. • Node.js, Vert.x
• Вся работа в event loop
• Плюсы
• Событийны, асинхронны, неблокируемы
• Минусы
• Ограничен одной нодой
• Не масштабируется по процессорам
40
Event Loop
131. • Node.js, Vert.x
• Вся работа в event loop
• Плюсы
• Событийны, асинхронны, неблокируемы
• Минусы
• Ограничен одной нодой
• Не масштабируется по процессорам
• Нет механизмов управления отказами
40
Event Loop
136. • Erlang, Akka
• Плюсы
• Событийны, асинхронны, неблокируемы
42
Actor Model
137. • Erlang, Akka
• Плюсы
• Событийны, асинхронны, неблокируемы
• Не ограничены одной нодой
42
Actor Model
138. • Erlang, Akka
• Плюсы
• Событийны, асинхронны, неблокируемы
• Не ограничены одной нодой
• Присутствуют механизмы управления отказами
42
Actor Model
139. • Erlang, Akka
• Плюсы
• Событийны, асинхронны, неблокируемы
• Не ограничены одной нодой
• Присутствуют механизмы управления отказами
• Минусы
42
Actor Model
140. • Erlang, Akka
• Плюсы
• Событийны, асинхронны, неблокируемы
• Не ограничены одной нодой
• Присутствуют механизмы управления отказами
• Минусы
• Форсисрует архитектуру
42
Actor Model
184. • Reactive Manifesto
• Coursera
• Functional Programming Principles in Scala
54
С чего начать
185. • Reactive Manifesto
• Coursera
• Functional Programming Principles in Scala
• Principles of Reactive Programming
54
С чего начать
186. • Reactive Manifesto
• Coursera
• Functional Programming Principles in Scala
• Principles of Reactive Programming
• Typesafe
54
С чего начать
187. • Reactive Manifesto
• Coursera
• Functional Programming Principles in Scala
• Principles of Reactive Programming
• Typesafe
• Activator
54
С чего начать
188. • Reactive Manifesto
• Coursera
• Functional Programming Principles in Scala
• Principles of Reactive Programming
• Typesafe
• Activator
• Видео
54
С чего начать
189. • Reactive Manifesto
• Coursera
• Functional Programming Principles in Scala
• Principles of Reactive Programming
• Typesafe
• Activator
• Видео
• Reactive Streams
54
С чего начать