23
Разные приемы Тюменцев Евгений HWdTech, LLC hwdtech.ru

2015-12-06 Евгений Тюменцев - Практики разработки серверных приложений

Embed Size (px)

Citation preview

Разные приемы

Тюменцев Евгений

HWdTech, LLC

hwdtech.ru

О себе

15 лет преподаю ИМИТ, ФКН ОмГУ ИТ-компании Школа программиста 11 лет разрабатываю ПО разработчик, архитектор, PM, руководство до 70 человек

Тюменцев Евгений

Рекомендуем

Фильтры - акторы

• Как сделать приложение гибким и независимым?

• Надо разделить сложную задачу на последовательность простых, независимых этапов (фильтров), объединенных с помощью каналов

Акторы – альтернатива многопоточности

Carl Hewitt,

Peter Bishop,

Richard Steiger

A Universal Modular ACTOR Formalism for Artificial Intelligence

1973

Что такое актор?

Актор – вычислительная сущность, которая может за один шаг • Отправить конечное число

сообщений другим акторам

• Создать конечное число

акторов

• Выбрать поведение для приема следующего сообщения

Многопоточность vs Акторы

Фильтр содержимого – строго типизированная обертка

Карта сообщения

Карта сообщения

• Эффективное продвижение сообщений (сообщения должны проходить только через необходимые этапы обработки)

• Эффективное использование ресурсов

• Гибкость (маршрут должен легко поддаваться изменениям)

• Простота поддержки

Управление маршрутами без программиста

Прием сообщений извне – конечные точки

Контрольные точки

Контрольная точка сохраняет в БД входящее сообщение как есть

Конечная точка маршрута сообщения

Внешние ресурсы, досрочный ответ

Контрольная точка сохраняет в БД входящее сообщение как есть

входящий запрос

ответ

Обработка ошибок – канал недопустимых сообщений

Версионность данных – расширитель содержимого

Быстрое развертывание серверов

• Каждый сервер однозначно описывается конфигурацией

• Все конфигурации хранятся в общем хранилище

• Чтобы создать еще один экземпляр сервера – достаточно указать ему (удаленно) необходимую конфигурацию

• Все остальное система сделает сама автоматически

• Можно обновлять конфигурации серверов автоматически

• Сервер может откатываться к предыдущей конфигурации, если произошел сбой при обновлении до новой версии конфигурации

Что делать?

SOLID

Доказаны математически (2014 год)

Верны не только для ООП, но и для функционального, и процедурного

программирования!

switch

enum

Приведение типов

new

Активная разработка

Схема разработки

Ядро Кандидаты

в ядро

Направление миграции кода

Активная разработка

Или на пальцах в нашем случае

• Любое приложение состоит из стандартных и простых блоков

• Компоновать блоки между собой можно без программирования

• Возможности системы ограничены только набором готовых блоков

• Блоки можно разрабатывать независимо друг от друга

Почему своя реализация акторов, а не, например, Erlang, Scala и т.д.?

http://benchmarksgame.alioth.debian.org

Спасибо за внимание!

Тюменцев Евгений

hwdtech.ru

[email protected]

twitter.com/etyumentcev