secon'2016. Тюменцев Евгений, Разработка надежных...

52
Разработка паралелльных, надежных приложений: быстро и дешево Евгений Тюменцев HWdTech LLC (Омск)

Upload: secon

Post on 15-Apr-2017

156 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенных приложений: быстро и дешево

Разработка паралелльных,

надежных приложений:

быстро и дешево

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

HWdTech LLC (Омск)

Page 2: SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенных приложений: быстро и дешево

О себе

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

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

Page 3: SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенных приложений: быстро и дешево

Особенности разработки ПО

Фредерик Брукс

«Мифический человеко-

месяц»

Page 4: SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенных приложений: быстро и дешево

Программист VS каменщик

Page 5: SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенных приложений: быстро и дешево

Почему так получается у

программистов?

Page 6: SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенных приложений: быстро и дешево

• Сроки нарушаются

• ?

• ?

Page 7: SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенных приложений: быстро и дешево

• Сроки нарушаются

• Требуется все больше разработчиков

• ?

Page 8: SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенных приложений: быстро и дешево

• Сроки нарушаются

• Требуется все больше разработчиков

• Быстрее переписать, чем продолжать

Page 9: SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенных приложений: быстро и дешево

Логика Хоара

1969 г. An Axiomatic Basis for Computer Programming

1971 г. Procedures and Parameters: An Axiomatic Approach

1980 г. премия Тьюринга

1990 г. Медаль “Пионер компьютерной техники”

2000 г. рыцарский титул за заслуги в области образования и компьютерной техники, премия Киото

Чарльз Хоар

Page 10: SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенных приложений: быстро и дешево

Один пример о логике Хоара

Если использовать

1. статическое связывание

2. Рекурсию

3. Вложенные процедуры

4. Процедуры, принимающие в качестве

параметров процедуры.

5. Глобальные переменные

то не существует полной системы аксиом.

Page 11: SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенных приложений: быстро и дешево

Логика Хоара часто противоречива

⊢𝐿 𝞿 и ⊢𝐿 `𝞿

Значит, что любое

изменение в коде надо

тестировать!

Page 12: SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенных приложений: быстро и дешево

Противоречивость: сильно страшно?

Page 13: SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенных приложений: быстро и дешево

Противоречивость: сильно страшно?

Page 14: SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенных приложений: быстро и дешево

Противоречивость: сильно страшно?

Page 15: SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенных приложений: быстро и дешево

Противоречивость: сильно страшно?

Page 16: SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенных приложений: быстро и дешево

Что делать?

SOLID

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

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

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

Page 17: SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенных приложений: быстро и дешево

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

Активная

разработка Ядро

Кандидаты

в ядро

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

Page 18: SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенных приложений: быстро и дешево

switch

enum

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

new

Page 19: SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенных приложений: быстро и дешево

Процессоры уже не те!

Herb Sutter, 2005 The Free Lunch Is Over A Fundamental Turn Toward Concurrency in Software

“The bad news is that, at least in the short term, the growth will come mostly in directions that do not take most current applications along for their customary free ride.”

Page 20: SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенных приложений: быстро и дешево

Многопоточность?

Это Вам не это!

Page 21: SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенных приложений: быстро и дешево

Базы данных

• Скорость выполнения

запросов

• Миграция

• Репликация

• Непротиворечивость

• ORM

Page 22: SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенных приложений: быстро и дешево

Один формат хранения данных

{

‘фамилия’: ‘Иванов’,

‘заказы’: [

{

‘дата’: ’01.09.2015’,

‘стоимость’: 2000

},

{

‘дата’: ’01.10.2015’,

‘стоимость’: 2000

}

]

}

Page 23: SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенных приложений: быстро и дешево

Интерфейс работы с данными

interface IObject

{

object getValue(string name);

void setValue(string name, object

val);

}

class Field<T>

{

public Field(string name) {…}

public abstract T this[IObject o]

{

get;

set;

}

}

Генерация строго типизированных

оберток для IObject по интерфейсам

interface MyObj

{

int A

{

get;

}

string B

{

get;

set;

}

}

Page 24: SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенных приложений: быстро и дешево

Унификация обработчиков

Page 25: SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенных приложений: быстро и дешево

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

Carl Hewitt,

Peter Bishop,

Richard Steiger

A Universal Modular ACTOR

Formalism for Artificial

Intelligence

1973

Page 26: SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенных приложений: быстро и дешево

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

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

сущность, которая может

за один шаг

• Отправить конечное число сообщений другим акторам

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

акторов

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

Page 27: SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенных приложений: быстро и дешево

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

Page 28: SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенных приложений: быстро и дешево

Почему своя реализация акторов?

http://benchmarksgame.alioth.debian.org

Page 29: SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенных приложений: быстро и дешево

Архитектура

Page 30: SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенных приложений: быстро и дешево

Маршруты сообщений

Page 31: SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенных приложений: быстро и дешево

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

Page 32: SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенных приложений: быстро и дешево

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

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

входящее сообщение как есть

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

Page 33: SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенных приложений: быстро и дешево

Преимущество контрольных точек

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

входящее сообщение как есть входящий

запрос

ответ

Page 34: SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенных приложений: быстро и дешево

Библиотека акторов

Публикация

Загрузка по требованию

Page 35: SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенных приложений: быстро и дешево

Библиотека конфигураций

{

‘actors’: [{

‘name’: ‘emailSender’,

‘smtp’: …,

},

{

‘name’: ‘dailyReport’,

}

‘messagePaths’: [{

‘name’: ‘newAd’,

}],

‘enpoints’: […]

}

Page 36: SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенных приложений: быстро и дешево

Преимущества библиотеки конфигураций

• Быстро клонировать

• Автоматический деплой

• Можно выставлять время обновления

• Автоматический откат

• Ни одна конфигурация не теряется

• Можно иметь одновременно сервера, которые работают с разными версиями данных

{

‘actors’: [{

‘name’: ‘emailSender’,

‘smtp’: …,

},

{

‘name’: ‘dailyReport’,

}

‘messagePaths’: [{

‘name’: ‘newAd’,

}],

‘enpoints’: […]

}

Page 37: SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенных приложений: быстро и дешево

Методы обнаружения разладки

Карты Шухарта

Все процессы подвержены вариабельности.

Управляемое явление - используя прошлый опыт

можно предсказать, каких его вариаций можно

ожидать в будущем.

ГОСТ Р 50779.42-99 (ISO 8258-91)

выявление точек выхода процесса из стабильного состояния для установления причин появившегося отклонения и их устранения.

Page 38: SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенных приложений: быстро и дешево

Эффект изменений

Page 39: SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенных приложений: быстро и дешево

Не все пользовтаели полезны

Page 40: SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенных приложений: быстро и дешево

Коллеги не идут на сотрудничество

Page 41: SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенных приложений: быстро и дешево

Активностью пользовтаелей можно управлять

Page 42: SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенных приложений: быстро и дешево

Преимущества решения

• Масштабируемые приложения могут строить

разработчики с небольшим опытом работы или

вообще без опыта

Page 43: SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенных приложений: быстро и дешево

Преимущества решения

• Масштабируемые приложения могут строить

разработчики с небольшим опытом работы или

вообще без опыта

• Нет проблем с миграциями данных

Page 44: SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенных приложений: быстро и дешево

Преимущества решения

• Масштабируемые приложения могут строить

разработчики с небольшим опытом работы или

вообще без опыта

• Нет проблем с миграциями данных

• Методы объективного контроля работоспособности

всей системы, не зависящие от программистов и

тестировщиков

Page 45: SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенных приложений: быстро и дешево

Преимущества решения

• Масштабируемые приложения могут строить

разработчики с небольшим опытом работы или

вообще без опыта

• Нет проблем с миграциями данных

• Методы объективного контроля работоспособности

всей системы, не зависящие от программистов и

тестировщиков

• Быстрое клонирование и развертывание серверов по

необходимости

Page 46: SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенных приложений: быстро и дешево

Преимущества решения

• Масштабируемые приложения могут строить

разработчики с небольшим опытом работы или

вообще без опыта

• Нет проблем с миграциями данных

• Методы объективного контроля работоспособности

всей системы, не зависящие от программистов и

тестировщиков

• Быстрое клонирование и развертывание серверов по

необходимости

• Возможность адаптации или правки автоматизируемых

бизнес-процессов без участия программистов.

Page 47: SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенных приложений: быстро и дешево

Пример: портал бесплатных объявлений

• Команда – 5 студентов без опыта работы и филолог

Page 48: SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенных приложений: быстро и дешево

Пример: портал бесплатных объявлений

• Команда – 5 студентов без опыта

работы и филолог

• Среднее время открытия страницы уменьшено с 4,5 с до 400 мс

Page 49: SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенных приложений: быстро и дешево

Пример: портал бесплатных объявлений

• Команда – 5 студентов без опыта

работы и филолог

• Среднее время открытия страницы

уменьшено с 4,5 с до 400 мс

• Количество ошибок по сравнению

с предыдущей версией

уменьшилось в 1000 раз!

Page 50: SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенных приложений: быстро и дешево

Пример: портал бесплатных объявлений

• Команда – 5 студентов без опыта

работы и филолог

• Среднее время открытия страницы

уменьшено с 4,5 с до 400 мс

• Количество ошибок по сравнению

с предыдущей версией

уменьшилось в 1000 раз!

• Количество серверов уменьшено с 15 до 3!

Page 51: SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенных приложений: быстро и дешево

Пример: портал бесплатных объявлений

• Команда – 5 студентов без опыта работы и филолог

• Среднее время открытия страницы уменьшено с 4,5 с до 400 мс

• Количество ошибок по сравнению с предыдущей версией уменьшилось в 1000 раз!

• Количество серверов уменьшено с 15 до 3!

• Объявление можно подавать простым текстом вместо длинной формы: “Двушка в Советском округе, проспект Мира, 64, в районе ост. Политех, 50/34/8, 3/5п, не требует ремонта, санузел раздельный, хрущевка.”

Page 52: SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенных приложений: быстро и дешево

Спасибо!

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

hwdtech.ru

[email protected]

twitter.com/etyumentcev