SlideShare ist ein Scribd-Unternehmen logo
1 von 55
Downloaden Sie, um offline zu lesen
Разработка параллельных,
надежных приложений: быстро и
дешево
Тюменцев Евгений
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

Weitere ähnliche Inhalte

Ähnlich wie 2015-12-06 Евгений Тюменцев - Разработка надежных параллельных, распределенных приложений: быстро и дешево.

И снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел ТайкалоИ снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел ТайкалоStanfy
 
SECON'2017, Реуцкий Вадим, О чем мечтают современные андройды: особенности ра...
SECON'2017, Реуцкий Вадим, О чем мечтают современные андройды: особенности ра...SECON'2017, Реуцкий Вадим, О чем мечтают современные андройды: особенности ра...
SECON'2017, Реуцкий Вадим, О чем мечтают современные андройды: особенности ра...SECON
 
Антон Сапожников. Еще один недостаток современных клиент-серверных приложений
Антон Сапожников. Еще один недостаток современных клиент-серверных приложенийАнтон Сапожников. Еще один недостаток современных клиент-серверных приложений
Антон Сапожников. Еще один недостаток современных клиент-серверных приложенийPositive Hack Days
 
История проекта, который никогда не падает / Андрей Шетухин
История проекта, который никогда не падает / Андрей ШетухинИстория проекта, который никогда не падает / Андрей Шетухин
История проекта, который никогда не падает / Андрей ШетухинOntico
 
23may 1300 valday антон сапожников 'еще один недостаток современных клиент се...
23may 1300 valday антон сапожников 'еще один недостаток современных клиент се...23may 1300 valday антон сапожников 'еще один недостаток современных клиент се...
23may 1300 valday антон сапожников 'еще один недостаток современных клиент се...Positive Hack Days
 
Badoo Desktop: оптимизация приложения на миллион юзеров онлайн
Badoo Desktop: оптимизация приложения на миллион юзеров онлайнBadoo Desktop: оптимизация приложения на миллион юзеров онлайн
Badoo Desktop: оптимизация приложения на миллион юзеров онлайнSergey Xek
 
Как 7 студентов и филолог делали сложный проект
Как 7 студентов и филолог делали сложный проектКак 7 студентов и филолог делали сложный проект
Как 7 студентов и филолог делали сложный проектetyumentcev
 
Как 7 студентов и филолог делали сложный проект
Как 7 студентов и филолог делали сложный проектКак 7 студентов и филолог делали сложный проект
Как 7 студентов и филолог делали сложный проектEugeniy Tyumentcev
 
Быстрое масштабирование систем
Быстрое масштабирование системБыстрое масштабирование систем
Быстрое масштабирование системMedia Gorod
 
Badoo Desktop: оптимизация приложения на миллион юзеров онлайн
Badoo Desktop: оптимизация приложения на миллион юзеров онлайнBadoo Desktop: оптимизация приложения на миллион юзеров онлайн
Badoo Desktop: оптимизация приложения на миллион юзеров онлайнSergey Xek
 
“Tips&Tricks&Antitricks with .Net Core backend in GameDev”
“Tips&Tricks&Antitricks with .Net Core backend in GameDev”“Tips&Tricks&Antitricks with .Net Core backend in GameDev”
“Tips&Tricks&Antitricks with .Net Core backend in GameDev”HYS Enterprise
 
Hl2008 Spy Log Architechture 169
Hl2008 Spy Log Architechture 169Hl2008 Spy Log Architechture 169
Hl2008 Spy Log Architechture 169Media Gorod
 
Экскурс в мир WEB разработки
Экскурс в мир WEB разработкиЭкскурс в мир WEB разработки
Экскурс в мир WEB разработкиIT-Доминанта
 
Embarcadero All-Access
Embarcadero All-AccessEmbarcadero All-Access
Embarcadero All-AccessSerghei Urban
 
DevConf2013: Особенности применения WebSocket на примере работы в ERP системе.
DevConf2013: Особенности применения WebSocket на примере работы в ERP системе.DevConf2013: Особенности применения WebSocket на примере работы в ERP системе.
DevConf2013: Особенности применения WebSocket на примере работы в ERP системе.Alexander Frolov
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаMikhail Chinkov
 
New SpyLOG architechture (Highload 2008)
New SpyLOG architechture (Highload 2008)New SpyLOG architechture (Highload 2008)
New SpyLOG architechture (Highload 2008)Sergey Skvortsov
 
PostgreSQL performance recipes
PostgreSQL performance recipesPostgreSQL performance recipes
PostgreSQL performance recipesAlexey Ermakov
 
Андрей Кондрашов, Банк Москвы. «АБС в крупном Банке. Тестирование PostgreSQL...
Андрей Кондрашов, Банк Москвы.  «АБС в крупном Банке. Тестирование PostgreSQL...Андрей Кондрашов, Банк Москвы.  «АБС в крупном Банке. Тестирование PostgreSQL...
Андрей Кондрашов, Банк Москвы. «АБС в крупном Банке. Тестирование PostgreSQL...Mail.ru Group
 
Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...jazzteam
 

Ähnlich wie 2015-12-06 Евгений Тюменцев - Разработка надежных параллельных, распределенных приложений: быстро и дешево. (20)

И снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел ТайкалоИ снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел Тайкало
 
SECON'2017, Реуцкий Вадим, О чем мечтают современные андройды: особенности ра...
SECON'2017, Реуцкий Вадим, О чем мечтают современные андройды: особенности ра...SECON'2017, Реуцкий Вадим, О чем мечтают современные андройды: особенности ра...
SECON'2017, Реуцкий Вадим, О чем мечтают современные андройды: особенности ра...
 
Антон Сапожников. Еще один недостаток современных клиент-серверных приложений
Антон Сапожников. Еще один недостаток современных клиент-серверных приложенийАнтон Сапожников. Еще один недостаток современных клиент-серверных приложений
Антон Сапожников. Еще один недостаток современных клиент-серверных приложений
 
История проекта, который никогда не падает / Андрей Шетухин
История проекта, который никогда не падает / Андрей ШетухинИстория проекта, который никогда не падает / Андрей Шетухин
История проекта, который никогда не падает / Андрей Шетухин
 
23may 1300 valday антон сапожников 'еще один недостаток современных клиент се...
23may 1300 valday антон сапожников 'еще один недостаток современных клиент се...23may 1300 valday антон сапожников 'еще один недостаток современных клиент се...
23may 1300 valday антон сапожников 'еще один недостаток современных клиент се...
 
Badoo Desktop: оптимизация приложения на миллион юзеров онлайн
Badoo Desktop: оптимизация приложения на миллион юзеров онлайнBadoo Desktop: оптимизация приложения на миллион юзеров онлайн
Badoo Desktop: оптимизация приложения на миллион юзеров онлайн
 
Как 7 студентов и филолог делали сложный проект
Как 7 студентов и филолог делали сложный проектКак 7 студентов и филолог делали сложный проект
Как 7 студентов и филолог делали сложный проект
 
Как 7 студентов и филолог делали сложный проект
Как 7 студентов и филолог делали сложный проектКак 7 студентов и филолог делали сложный проект
Как 7 студентов и филолог делали сложный проект
 
Быстрое масштабирование систем
Быстрое масштабирование системБыстрое масштабирование систем
Быстрое масштабирование систем
 
Badoo Desktop: оптимизация приложения на миллион юзеров онлайн
Badoo Desktop: оптимизация приложения на миллион юзеров онлайнBadoo Desktop: оптимизация приложения на миллион юзеров онлайн
Badoo Desktop: оптимизация приложения на миллион юзеров онлайн
 
“Tips&Tricks&Antitricks with .Net Core backend in GameDev”
“Tips&Tricks&Antitricks with .Net Core backend in GameDev”“Tips&Tricks&Antitricks with .Net Core backend in GameDev”
“Tips&Tricks&Antitricks with .Net Core backend in GameDev”
 
Hl2008 Spy Log Architechture 169
Hl2008 Spy Log Architechture 169Hl2008 Spy Log Architechture 169
Hl2008 Spy Log Architechture 169
 
Экскурс в мир WEB разработки
Экскурс в мир WEB разработкиЭкскурс в мир WEB разработки
Экскурс в мир WEB разработки
 
Embarcadero All-Access
Embarcadero All-AccessEmbarcadero All-Access
Embarcadero All-Access
 
DevConf2013: Особенности применения WebSocket на примере работы в ERP системе.
DevConf2013: Особенности применения WebSocket на примере работы в ERP системе.DevConf2013: Особенности применения WebSocket на примере работы в ERP системе.
DevConf2013: Особенности применения WebSocket на примере работы в ERP системе.
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчика
 
New SpyLOG architechture (Highload 2008)
New SpyLOG architechture (Highload 2008)New SpyLOG architechture (Highload 2008)
New SpyLOG architechture (Highload 2008)
 
PostgreSQL performance recipes
PostgreSQL performance recipesPostgreSQL performance recipes
PostgreSQL performance recipes
 
Андрей Кондрашов, Банк Москвы. «АБС в крупном Банке. Тестирование PostgreSQL...
Андрей Кондрашов, Банк Москвы.  «АБС в крупном Банке. Тестирование PostgreSQL...Андрей Кондрашов, Банк Москвы.  «АБС в крупном Банке. Тестирование PostgreSQL...
Андрей Кондрашов, Банк Москвы. «АБС в крупном Банке. Тестирование PostgreSQL...
 
Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...
 

Mehr von HappyDev

2015-12-06 Aнтон Непомнящих - Принципы канбан и теории ограничений на примере...
2015-12-06 Aнтон Непомнящих - Принципы канбан и теории ограничений на примере...2015-12-06 Aнтон Непомнящих - Принципы канбан и теории ограничений на примере...
2015-12-06 Aнтон Непомнящих - Принципы канбан и теории ограничений на примере...HappyDev
 
2015-12-05 Антон Непомнящих - Agile — как уложиться в сроки и бюджет?
2015-12-05 Антон Непомнящих - Agile — как уложиться в сроки и бюджет?2015-12-05 Антон Непомнящих - Agile — как уложиться в сроки и бюджет?
2015-12-05 Антон Непомнящих - Agile — как уложиться в сроки и бюджет?HappyDev
 
2015 12-05 Александр Шиповалов - Инструмент для тестирования Sikuli script
2015 12-05 Александр Шиповалов - Инструмент для тестирования Sikuli script2015 12-05 Александр Шиповалов - Инструмент для тестирования Sikuli script
2015 12-05 Александр Шиповалов - Инструмент для тестирования Sikuli scriptHappyDev
 
2015-12-06 Константин Борисов - Как собеседовать программиста?
2015-12-06 Константин Борисов - Как собеседовать программиста?2015-12-06 Константин Борисов - Как собеседовать программиста?
2015-12-06 Константин Борисов - Как собеседовать программиста?HappyDev
 
2015-12-05 Данил Никифоров - NoSQL для мобайла с синхронизацией данных
2015-12-05 Данил Никифоров - NoSQL для мобайла с синхронизацией данных2015-12-05 Данил Никифоров - NoSQL для мобайла с синхронизацией данных
2015-12-05 Данил Никифоров - NoSQL для мобайла с синхронизацией данныхHappyDev
 
2015-12-06 Букуров Алексей - Автоматическое формирование интерфейса по метаоп...
2015-12-06 Букуров Алексей - Автоматическое формирование интерфейса по метаоп...2015-12-06 Букуров Алексей - Автоматическое формирование интерфейса по метаоп...
2015-12-06 Букуров Алексей - Автоматическое формирование интерфейса по метаоп...HappyDev
 
2015-12-06 Александр Чернышев - Технологии открытости мобильных приложений
2015-12-06 Александр Чернышев - Технологии открытости мобильных приложений2015-12-06 Александр Чернышев - Технологии открытости мобильных приложений
2015-12-06 Александр Чернышев - Технологии открытости мобильных приложенийHappyDev
 
2015-12-05 Вадим Литвинов - Нагрузочное тестирование с MZBench
2015-12-05 Вадим Литвинов - Нагрузочное тестирование с MZBench2015-12-05 Вадим Литвинов - Нагрузочное тестирование с MZBench
2015-12-05 Вадим Литвинов - Нагрузочное тестирование с MZBenchHappyDev
 
2015-12-05 Александр Шиповалов - Веселые картинки в тестировании
2015-12-05 Александр Шиповалов - Веселые картинки в тестировании2015-12-05 Александр Шиповалов - Веселые картинки в тестировании
2015-12-05 Александр Шиповалов - Веселые картинки в тестированииHappyDev
 
2015-12-05 Александр Бындю, Андрей Шапиро - Пять самых важных составляющих пр...
2015-12-05 Александр Бындю, Андрей Шапиро - Пять самых важных составляющих пр...2015-12-05 Александр Бындю, Андрей Шапиро - Пять самых важных составляющих пр...
2015-12-05 Александр Бындю, Андрей Шапиро - Пять самых важных составляющих пр...HappyDev
 
2015-12-05 Александр Коротков, Иван Панченко - Слабо-структурированные данные...
2015-12-05 Александр Коротков, Иван Панченко - Слабо-структурированные данные...2015-12-05 Александр Коротков, Иван Панченко - Слабо-структурированные данные...
2015-12-05 Александр Коротков, Иван Панченко - Слабо-структурированные данные...HappyDev
 
2015-12-06 Юрий Мельничек - Руководство для разработчиков по маркетингу мобил...
2015-12-06 Юрий Мельничек - Руководство для разработчиков по маркетингу мобил...2015-12-06 Юрий Мельничек - Руководство для разработчиков по маркетингу мобил...
2015-12-06 Юрий Мельничек - Руководство для разработчиков по маркетингу мобил...HappyDev
 
2015-12-06 Сергей Хрущев - Человеческим языком о суперкомпьютерах
2015-12-06 Сергей Хрущев - Человеческим языком о суперкомпьютерах2015-12-06 Сергей Хрущев - Человеческим языком о суперкомпьютерах
2015-12-06 Сергей Хрущев - Человеческим языком о суперкомпьютерахHappyDev
 
2015-12-06 Максим Юнусов - Проектирование REST приложения, или нужно ли прогр...
2015-12-06 Максим Юнусов - Проектирование REST приложения, или нужно ли прогр...2015-12-06 Максим Юнусов - Проектирование REST приложения, или нужно ли прогр...
2015-12-06 Максим Юнусов - Проектирование REST приложения, или нужно ли прогр...HappyDev
 
2015-12-06 Артем Зиненко - Что делать, если браузеры клиентов действуют проти...
2015-12-06 Артем Зиненко - Что делать, если браузеры клиентов действуют проти...2015-12-06 Артем Зиненко - Что делать, если браузеры клиентов действуют проти...
2015-12-06 Артем Зиненко - Что делать, если браузеры клиентов действуют проти...HappyDev
 
2015-12-06 Антон Тарасенко - Ваш следующий сервис будет асинхронным
2015-12-06 Антон Тарасенко - Ваш следующий сервис будет асинхронным2015-12-06 Антон Тарасенко - Ваш следующий сервис будет асинхронным
2015-12-06 Антон Тарасенко - Ваш следующий сервис будет асинхроннымHappyDev
 
2015-12-06 Андрей Коновалов - От сервисной компании к продуктовой: что нужно,...
2015-12-06 Андрей Коновалов - От сервисной компании к продуктовой: что нужно,...2015-12-06 Андрей Коновалов - От сервисной компании к продуктовой: что нужно,...
2015-12-06 Андрей Коновалов - От сервисной компании к продуктовой: что нужно,...HappyDev
 
2015-12-05 Вадим Литвинов - Проблемы разработки распределённых систем
2015-12-05 Вадим Литвинов - Проблемы разработки распределённых систем2015-12-05 Вадим Литвинов - Проблемы разработки распределённых систем
2015-12-05 Вадим Литвинов - Проблемы разработки распределённых системHappyDev
 
2015-12-05 Максим Дорофеев - Сила первого шага или сессия групповой депрокрас...
2015-12-05 Максим Дорофеев - Сила первого шага или сессия групповой депрокрас...2015-12-05 Максим Дорофеев - Сила первого шага или сессия групповой депрокрас...
2015-12-05 Максим Дорофеев - Сила первого шага или сессия групповой депрокрас...HappyDev
 
2015-12-05 Александр Рожнов - Свое облако под стейджинг
2015-12-05 Александр Рожнов - Свое облако под стейджинг2015-12-05 Александр Рожнов - Свое облако под стейджинг
2015-12-05 Александр Рожнов - Свое облако под стейджингHappyDev
 

Mehr von HappyDev (20)

2015-12-06 Aнтон Непомнящих - Принципы канбан и теории ограничений на примере...
2015-12-06 Aнтон Непомнящих - Принципы канбан и теории ограничений на примере...2015-12-06 Aнтон Непомнящих - Принципы канбан и теории ограничений на примере...
2015-12-06 Aнтон Непомнящих - Принципы канбан и теории ограничений на примере...
 
2015-12-05 Антон Непомнящих - Agile — как уложиться в сроки и бюджет?
2015-12-05 Антон Непомнящих - Agile — как уложиться в сроки и бюджет?2015-12-05 Антон Непомнящих - Agile — как уложиться в сроки и бюджет?
2015-12-05 Антон Непомнящих - Agile — как уложиться в сроки и бюджет?
 
2015 12-05 Александр Шиповалов - Инструмент для тестирования Sikuli script
2015 12-05 Александр Шиповалов - Инструмент для тестирования Sikuli script2015 12-05 Александр Шиповалов - Инструмент для тестирования Sikuli script
2015 12-05 Александр Шиповалов - Инструмент для тестирования Sikuli script
 
2015-12-06 Константин Борисов - Как собеседовать программиста?
2015-12-06 Константин Борисов - Как собеседовать программиста?2015-12-06 Константин Борисов - Как собеседовать программиста?
2015-12-06 Константин Борисов - Как собеседовать программиста?
 
2015-12-05 Данил Никифоров - NoSQL для мобайла с синхронизацией данных
2015-12-05 Данил Никифоров - NoSQL для мобайла с синхронизацией данных2015-12-05 Данил Никифоров - NoSQL для мобайла с синхронизацией данных
2015-12-05 Данил Никифоров - NoSQL для мобайла с синхронизацией данных
 
2015-12-06 Букуров Алексей - Автоматическое формирование интерфейса по метаоп...
2015-12-06 Букуров Алексей - Автоматическое формирование интерфейса по метаоп...2015-12-06 Букуров Алексей - Автоматическое формирование интерфейса по метаоп...
2015-12-06 Букуров Алексей - Автоматическое формирование интерфейса по метаоп...
 
2015-12-06 Александр Чернышев - Технологии открытости мобильных приложений
2015-12-06 Александр Чернышев - Технологии открытости мобильных приложений2015-12-06 Александр Чернышев - Технологии открытости мобильных приложений
2015-12-06 Александр Чернышев - Технологии открытости мобильных приложений
 
2015-12-05 Вадим Литвинов - Нагрузочное тестирование с MZBench
2015-12-05 Вадим Литвинов - Нагрузочное тестирование с MZBench2015-12-05 Вадим Литвинов - Нагрузочное тестирование с MZBench
2015-12-05 Вадим Литвинов - Нагрузочное тестирование с MZBench
 
2015-12-05 Александр Шиповалов - Веселые картинки в тестировании
2015-12-05 Александр Шиповалов - Веселые картинки в тестировании2015-12-05 Александр Шиповалов - Веселые картинки в тестировании
2015-12-05 Александр Шиповалов - Веселые картинки в тестировании
 
2015-12-05 Александр Бындю, Андрей Шапиро - Пять самых важных составляющих пр...
2015-12-05 Александр Бындю, Андрей Шапиро - Пять самых важных составляющих пр...2015-12-05 Александр Бындю, Андрей Шапиро - Пять самых важных составляющих пр...
2015-12-05 Александр Бындю, Андрей Шапиро - Пять самых важных составляющих пр...
 
2015-12-05 Александр Коротков, Иван Панченко - Слабо-структурированные данные...
2015-12-05 Александр Коротков, Иван Панченко - Слабо-структурированные данные...2015-12-05 Александр Коротков, Иван Панченко - Слабо-структурированные данные...
2015-12-05 Александр Коротков, Иван Панченко - Слабо-структурированные данные...
 
2015-12-06 Юрий Мельничек - Руководство для разработчиков по маркетингу мобил...
2015-12-06 Юрий Мельничек - Руководство для разработчиков по маркетингу мобил...2015-12-06 Юрий Мельничек - Руководство для разработчиков по маркетингу мобил...
2015-12-06 Юрий Мельничек - Руководство для разработчиков по маркетингу мобил...
 
2015-12-06 Сергей Хрущев - Человеческим языком о суперкомпьютерах
2015-12-06 Сергей Хрущев - Человеческим языком о суперкомпьютерах2015-12-06 Сергей Хрущев - Человеческим языком о суперкомпьютерах
2015-12-06 Сергей Хрущев - Человеческим языком о суперкомпьютерах
 
2015-12-06 Максим Юнусов - Проектирование REST приложения, или нужно ли прогр...
2015-12-06 Максим Юнусов - Проектирование REST приложения, или нужно ли прогр...2015-12-06 Максим Юнусов - Проектирование REST приложения, или нужно ли прогр...
2015-12-06 Максим Юнусов - Проектирование REST приложения, или нужно ли прогр...
 
2015-12-06 Артем Зиненко - Что делать, если браузеры клиентов действуют проти...
2015-12-06 Артем Зиненко - Что делать, если браузеры клиентов действуют проти...2015-12-06 Артем Зиненко - Что делать, если браузеры клиентов действуют проти...
2015-12-06 Артем Зиненко - Что делать, если браузеры клиентов действуют проти...
 
2015-12-06 Антон Тарасенко - Ваш следующий сервис будет асинхронным
2015-12-06 Антон Тарасенко - Ваш следующий сервис будет асинхронным2015-12-06 Антон Тарасенко - Ваш следующий сервис будет асинхронным
2015-12-06 Антон Тарасенко - Ваш следующий сервис будет асинхронным
 
2015-12-06 Андрей Коновалов - От сервисной компании к продуктовой: что нужно,...
2015-12-06 Андрей Коновалов - От сервисной компании к продуктовой: что нужно,...2015-12-06 Андрей Коновалов - От сервисной компании к продуктовой: что нужно,...
2015-12-06 Андрей Коновалов - От сервисной компании к продуктовой: что нужно,...
 
2015-12-05 Вадим Литвинов - Проблемы разработки распределённых систем
2015-12-05 Вадим Литвинов - Проблемы разработки распределённых систем2015-12-05 Вадим Литвинов - Проблемы разработки распределённых систем
2015-12-05 Вадим Литвинов - Проблемы разработки распределённых систем
 
2015-12-05 Максим Дорофеев - Сила первого шага или сессия групповой депрокрас...
2015-12-05 Максим Дорофеев - Сила первого шага или сессия групповой депрокрас...2015-12-05 Максим Дорофеев - Сила первого шага или сессия групповой депрокрас...
2015-12-05 Максим Дорофеев - Сила первого шага или сессия групповой депрокрас...
 
2015-12-05 Александр Рожнов - Свое облако под стейджинг
2015-12-05 Александр Рожнов - Свое облако под стейджинг2015-12-05 Александр Рожнов - Свое облако под стейджинг
2015-12-05 Александр Рожнов - Свое облако под стейджинг
 

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

  • 1. Разработка параллельных, надежных приложений: быстро и дешево Тюменцев Евгений HWdTech, LLC hwdtech.ru
  • 2. О себе 15 лет преподаю ИМИТ, ФКН ОмГУ ИТ-компании Школа программиста 11 лет разрабатываю ПО разработчик, архитектор, PM, руководство до 70 человек Тюменцев Евгений
  • 3. Особенности разработки ПО Фредерик Брукс «Мифический человеко- месяц»
  • 5. Почему так получается у программистов?
  • 6. Три следствия неограниченного роста трудозатрат, которые приводят к незапланированным расходам
  • 8. Требуется все больше разработчиков «Ну а здесь, знаешь ли, приходится бежать со всех ног, чтобы только остаться на том же месте, а чтобы попасть в другое место нужно бежать вдвое быстрее.» Алиса в Зазеркалье, Льюис Кэролл
  • 9.
  • 10. Логика Хоара 1969 г. An Axiomatic Basis for Computer Programming 1971 г. Procedures and Parameters: An Axiomatic Approach 1980 г. премия Тьюринга 1990 г. Медаль “Пионер компьютерной техники” 2000 г. рыцарский титул за заслуги в области образования и компьютерной техники, премия Киото Чарльз Хоар
  • 11. Факты о логике Хоара Если использовать 1. статическое связывание 2. Рекурсию 3. Вложенные процедуры 4. Процедуры, принимающие в качестве параметров процедуры. 5. Глобальные переменные то не существует полной системы аксиом.
  • 12. Логика Хоара часто противоречива ⊢ 𝐿 𝞿 и ⊢ 𝐿 `𝞿 Значит, что любое изменение в коде надо тестировать!
  • 18. Базы данных • Скорость выполнения запросов • Миграция • Репликация • Непротиворечивость • ORM
  • 19. Нет сложным миграциям и модификациям БД
  • 20. Один формат для всех данных { ‘фамилия’: ‘Иванов’, ‘заказы’: [ { ‘дата’: ’01.09.2015’, ‘стоимость’: 2000 }, { ‘дата’: ’01.10.2015’, ‘стоимость’: 2000 } ] }
  • 21. Результаты применения json • Всего 6 запросов к БД описывают все операции с данными
  • 22. Результаты применения json • Всего 6 запросов к БД описывают все операции с данными • Известно время выполнения всех запросов
  • 23. Результаты применения json • Всего 6 запросов к БД описывают все операции с данными • Известно время выполнения всех запросов • Скорость выполнения запросов не зависит от квалификации программиста
  • 24. Результаты применения json • Всего 6 запросов к БД описывают все операции с данными • Известно время выполнения всех запросов • Скорость выполнения запросов не зависит от квалификации программиста • Структура БД не меняется – не нужны миграции
  • 25. Результаты применения json • Всего 6 запросов к БД описывают все операции с данными • Известно время выполнения всех запросов • Скорость выполнения запросов не зависит от квалификации программиста • Структура БД не меняется – не нужны миграции • Можно хранить одновременно несколько версий одних данных
  • 26. Результаты применения json • Всего 6 запросов к БД описывают все операции с данными • Известно время выполнения всех запросов • Скорость выполнения запросов не зависит от квалификации программиста • Структура БД не меняется – не нужны миграции • Можно хранить одновременно несколько версий одних данных • БД легко масштабируется, так как структура базы однородная
  • 27. Интерфейс работы с данными 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; } }
  • 28. Процессоры уже не те! 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.”
  • 30.
  • 31. Акторы – альтернатива многопоточности Carl Hewitt, Peter Bishop, Richard Steiger A Universal Modular ACTOR Formalism for Artificial Intelligence 1973
  • 32. Что такое актор? Актор – вычислительная сущность, которая может за один шаг • Отправить конечное число сообщений другим акторам • Создать конечное число акторов • Выбрать поведение для приема следующего сообщения
  • 37.
  • 38. Контрольные точки Контрольная точка сохраняет в БД входящее сообщение как есть Конечная точка маршрута сообщения ответ
  • 39.
  • 40. Методы обнаружения разладки Карты Шухарта Все процессы подвержены вариабельности. Управляемое явление - используя прошлый опыт можно предсказать, каких его вариаций можно ожидать в будущем. ГОСТ Р 50779.42-99 (ISO 8258-91) выявление точек выхода процесса из стабильного состояния для установления причин появившегося отклонения и их устранения.
  • 41. Как узнать, что изменения дали положительный эффект
  • 42. Если коллеги не идут на сотрудничество
  • 44. Библиотека акторов  Публикация  Загрузка по требованию
  • 45. Преимущества библиотеки конфигураций • Быстро клонировать • Автоматический деплой • Можно выставлять время обновления • Автоматический откат • Ни одна конфигурация не теряется • Можно иметь одновременно сервера, которые работают с разными версиями данных { ‘actors’: [{ ‘name’: ‘emailSender’, ‘smtp’: …, }, { ‘name’: ‘dailyReport’, … } ‘messagePaths’: [{ ‘name’: ‘newAd’, … }], ‘enpoints’: […] }
  • 46. Преимущества решения • Любое приложение в состоит из стандартных и простых блоков • Компоновать блоки между собой можно без программирования • Возможности системы ограничены только набором готовых блоков • Блоки можно разрабатывать независимо друг от друга
  • 47. Существующие внедрения – портал бесплатных объявлений и новостей • Команда – 5 студентов без опыта работы и филолог
  • 48. Существующие внедрения – портал бесплатных объявлений и новостей • Команда – 5 студентов без опыта работы и филолог • Среднее время открытия страницы уменьшено с 4,5 с до 400 мс
  • 49. Существующие внедрения – портал бесплатных объявлений и новостей • Команда – 5 студентов без опыта работы и филолог • Среднее время открытия страницы уменьшено с 4,5 с до 400 мс • Количество ошибок по сравнению с предыдущей версией уменьшилось в 1000 раз!
  • 50. Существующие внедрения – портал бесплатных объявлений и новостей • Команда – 5 студентов без опыта работы и филолог • Среднее время открытия страницы уменьшено с 4,5 с до 400 мс • Количество ошибок по сравнению с предыдущей версией уменьшилось в 1000 раз! • Количество серверов уменьшено с 15 до 3!
  • 51. Существующие внедрения – портал бесплатных объявлений и новостей • Команда – 5 студентов без опыта работы и филолог • Среднее время открытия страницы уменьшено с 4,5 с до 400 мс • Количество ошибок по сравнению с предыдущей версией уменьшилось в 1000 раз! • Количество серверов уменьшено с 15 до 3! • Объявление можно подавать простым текстом вместо длинной формы: “Двушка в Советском округе, улица Мира, 64, в районе ост. Политех, 50/34/8, 3/5п, не требует ремонта, санузел раздельный, хрущевка.”
  • 52. 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 Существующие внедрения – банерокрутилка
  • 53. Существующие внедрения – банерокрутилка 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
  • 54. Существующие внедрения – кроссплатформенное приложение • Приложение считает время по каждой задаче программиста, снимает скриншоты, мониторит активность клавиатуры и мыши • Интерфейс написан на HTML5 и CSS3 • Бизнес-логика написана на нашей библиотеке • Приложение работает без изменений под Mac, Window, Linux (кроме методов снятия скриншота и логирования активности – это малая часть – до 40 ч работы – по сравнению со всем приложением)
  • 55. Спасибо за внимание! Тюменцев Евгений hwdtech.ru etyumentcev@hwdtech.ru twitter.com/etyumentcev