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

Post on 15-Apr-2017

156 Views

Category:

Technology

3 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

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

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

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

HWdTech LLC (Омск)

О себе

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

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

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

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

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

месяц»

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

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

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

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

• ?

• ?

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

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

• ?

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

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

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

Логика Хоара

1969 г. An Axiomatic Basis for Computer Programming

1971 г. Procedures and Parameters: An Axiomatic Approach

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

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

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

Чарльз Хоар

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

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

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

2. Рекурсию

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

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

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

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

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

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

⊢𝐿 𝞿 и ⊢𝐿 `𝞿

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

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

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

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

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

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

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

Что делать?

SOLID

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

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

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

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

Активная

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

Кандидаты

в ядро

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

switch

enum

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

new

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

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.”

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

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

Базы данных

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

запросов

• Миграция

• Репликация

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

• ORM

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

{

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

‘заказы’: [

{

‘дата’: ’01.09.2015’,

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

},

{

‘дата’: ’01.10.2015’,

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

}

]

}

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

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;

}

}

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

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

Carl Hewitt,

Peter Bishop,

Richard Steiger

A Universal Modular ACTOR

Formalism for Artificial

Intelligence

1973

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

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

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

за один шаг

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

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

акторов

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

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

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

http://benchmarksgame.alioth.debian.org

Архитектура

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

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

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

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

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

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

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

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

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

запрос

ответ

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

Публикация

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

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

{

‘actors’: [{

‘name’: ‘emailSender’,

‘smtp’: …,

},

{

‘name’: ‘dailyReport’,

}

‘messagePaths’: [{

‘name’: ‘newAd’,

}],

‘enpoints’: […]

}

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

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

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

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

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

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

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

{

‘actors’: [{

‘name’: ‘emailSender’,

‘smtp’: …,

},

{

‘name’: ‘dailyReport’,

}

‘messagePaths’: [{

‘name’: ‘newAd’,

}],

‘enpoints’: […]

}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Спасибо!

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

hwdtech.ru

etyumentcev@hwdtech.ru

twitter.com/etyumentcev

top related