2015-12-06 Евгений Тюменцев - Разработка надежных...

Post on 14-Apr-2017

185 Views

Category:

Software

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Разработка параллельных, надежных приложений: быстро и

дешево

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

HWdTech, LLC

hwdtech.ru

О себе

15 лет преподаю ИМИТ, ФКН ОмГУ ИТ-компании Школа программиста 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. Глобальные переменные

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

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

⊢𝐿 𝞿 и ⊢𝐿 `𝞿

Значит, что любое изменение в коде надо тестировать!

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

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

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

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

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

Базы данных

• Скорость выполнения запросов • Миграция • Репликация • Непротиворечивость • ORM

Нет сложным миграциям и модификациям БД

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

{ ‘фамилия’: ‘Иванов’, ‘заказы’: [ { ‘дата’: ’01.09.2015’, ‘стоимость’: 2000 }, { ‘дата’: ’01.10.2015’, ‘стоимость’: 2000 } ] }

Результаты применения json

• Всего 6 запросов к БД описывают все операции с данными

Результаты применения json

• Всего 6 запросов к БД описывают все операции с данными

• Известно время выполнения всех запросов

Результаты применения json

• Всего 6 запросов к БД описывают все операции с данными

• Известно время выполнения всех запросов

• Скорость выполнения запросов не зависит от квалификации программиста

Результаты применения json

• Всего 6 запросов к БД описывают все операции с данными

• Известно время выполнения всех запросов

• Скорость выполнения запросов не зависит от квалификации программиста

• Структура БД не меняется – не нужны миграции

Результаты применения json

• Всего 6 запросов к БД описывают все операции с данными

• Известно время выполнения всех запросов

• Скорость выполнения запросов не зависит от квалификации программиста

• Структура БД не меняется – не нужны миграции

• Можно хранить одновременно несколько версий одних данных

Результаты применения json

• Всего 6 запросов к БД описывают все операции с данными

• Известно время выполнения всех запросов

• Скорость выполнения запросов не зависит от квалификации программиста

• Структура БД не меняется – не нужны миграции

• Можно хранить одновременно несколько версий одних данных

• БД легко масштабируется, так как структура базы однородная

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

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;

}

}

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

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

Многопоточность? Это Вам не это!

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

Carl Hewitt,

Peter Bishop,

Richard Steiger

A Universal Modular ACTOR Formalism for Artificial Intelligence

1973

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

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

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

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

акторов

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

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

Архитектура

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

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

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

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

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

ответ

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

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

Все процессы подвержены вариабельности. Управляемое явление - используя прошлый опыт можно предсказать, каких его вариаций можно ожидать в будущем. ГОСТ Р 50779.42-99 (ISO 8258-91) выявление точек выхода

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

Как узнать, что изменения дали положительный эффект

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

Активность пользователей можно создавать

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

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

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

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

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

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

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

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

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

{

‘actors’: [{

‘name’: ‘emailSender ’,

‘smtp’: …,

},

{

‘name’: ‘dailyReport’,

}

‘messagePaths’: [{

‘name’: ‘newAd’,

}],

‘enpoints’: […]

}

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

• Любое приложение в

состоит из стандартных и простых блоков

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

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

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

Существующие внедрения – портал бесплатных объявлений и новостей

• Команда – 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п, не требует ремонта, санузел раздельный, хрущевка.”

Test configuration:

server station:

desktop workstation

CPU - Intel(R) Core(TM) i3 CPU 530 @ 2.93GHz

Memory - 8 Gb

OS - Debian 8.2 jessie

GUI - none

client station:

notebook Dell Inspirion N5050

CPU - Intel(R) Core(TM) i5-2450M processor (2.50 GHz with Turbo Boost up to 3.10 GHz)

Memory - 4 Gb

OS - Mint 17.2 Cinnamon 64-bit 2.6.11

network device:

D-Link DES-1005A 10/100 Fast Ethernet Switch

Существующие внедрения – банерокрутилка

Существующие внедрения – банерокрутилка

30 seconds tests: Running 30s test @ http://192.168.100.193:9909 8 threads and 64 connections Thread Stats Avg Stdev Max +/- Stdev Latency 5.15ms 0.90ms 25.36ms 98.66% Req/Sec 1.57k 67.74 1.86k 85.75% 374839 requests in 30.01s, 141.92MB read Requests/sec: 12489.41

8 hours test: Running 480m test @ http://192.168.100.193:9909 8 threads and 64 connections Thread Stats Avg Stdev Max +/- Stdev Latency 4.52ms 681.66us 79.35ms 95.95% Req/Sec 1.78k 51.51 3.23k 76.61% 408472044 requests in 480.00m, 77.61GB read Requests/sec: 14183.01

Существующие внедрения – кроссплатформенное приложение

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

• Интерфейс написан на HTML5 и CSS3

• Бизнес-логика написана на нашей библиотеке

• Приложение работает без изменений под Mac, Window, Linux (кроме методов снятия скриншота и логирования активности – это малая часть – до 40 ч работы – по сравнению со всем приложением)

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

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

hwdtech.ru

etyumentcev@hwdtech.ru

twitter.com/etyumentcev

top related