Набор практических приемов, которые позволяют создавать сложные многопоточные, параллельные, распределенные серверные приложения программистам без опыта сетевого и многопоточного программирования, работы с базами данных.
2. О себе
16 лет преподаю
ИМИТ, ФКН ОмГУ
ИТ-компании
Школа программиста
11 лет разрабатываю ПО
разработчик,
архитектор,
PM, руководство до 70
человек
Тюменцев Евгений
8. • Сроки нарушаются
• Требуется все больше разработчиков
• Быстрее переписать, чем продолжать
9. Логика Хоара
1969 г. An Axiomatic Basis for
Computer Programming
1971 г. Procedures and
Parameters: An Axiomatic
Approach
1980 г. премия Тьюринга
1990 г. Медаль “Пионер
компьютерной техники”
2000 г. рыцарский титул за
заслуги в области образования и
компьютерной техники, премия
Киото
Чарльз Хоар
10. Один пример о логике Хоара
Если использовать
1. статическое связывание
2. Рекурсию
3. Вложенные процедуры
4. Процедуры, принимающие в качестве
параметров процедуры.
5. Глобальные переменные
то не существует полной системы аксиом.
11. Логика Хоара часто противоречива
⊢ 𝐿 𝞿 и ⊢ 𝐿 `𝞿
Значит, что любое
изменение в коде надо
тестировать!
19. Процессоры уже не те!
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.”
21. Базы данных
• Скорость выполнения
запросов
• Миграция
• Репликация
• Непротиворечивость
• ORM
22. Один формат хранения данных
{
‘фамилия’: ‘Иванов’,
‘заказы’: [
{
‘дата’: ’01.09.2015’,
‘стоимость’: 2000
},
{
‘дата’: ’01.10.2015’,
‘стоимость’: 2000
}
]
}
23. Интерфейс работы с данными
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;
}
}
25. Акторы – альтернатива многопоточности
Carl Hewitt,
Peter Bishop,
Richard Steiger
A Universal Modular ACTOR
Formalism for Artificial
Intelligence
1973
26. Что такое актор?
Актор – вычислительная
сущность, которая может
за один шаг
• Отправить конечное число
сообщений другим акторам
• Создать конечное число
акторов
• Выбрать поведение для
приема следующего
сообщения
36. Преимущества библиотеки конфигураций
• Быстро клонировать
• Автоматический деплой
• Можно выставлять время
обновления
• Автоматический откат
• Ни одна конфигурация не теряется
• Можно иметь одновременно
сервера, которые работают с
разными версиями данных
{
‘actors’: [{
‘name’: ‘emailSender’,
‘smtp’: …,
},
{
‘name’: ‘dailyReport’,
…
}
‘messagePaths’: [{
‘name’: ‘newAd’,
…
}],
‘enpoints’: […]
}
37. Методы обнаружения разладки
Карты Шухарта
Все процессы подвержены вариабельности.
Управляемое явление - используя прошлый опыт
можно предсказать, каких его вариаций можно
ожидать в будущем.
ГОСТ Р 50779.42-99 (ISO 8258-91)
выявление точек выхода
процесса из стабильного
состояния для
установления причин
появившегося отклонения
и их устранения.
43. Преимущества решения
• Масштабируемые приложения могут строить
разработчики с небольшим опытом работы или
вообще без опыта
• Нет проблем с миграциями данных
44. Преимущества решения
• Масштабируемые приложения могут строить
разработчики с небольшим опытом работы или
вообще без опыта
• Нет проблем с миграциями данных
• Методы объективного контроля работоспособности
всей системы, не зависящие от программистов и
тестировщиков
45. Преимущества решения
• Масштабируемые приложения могут строить
разработчики с небольшим опытом работы или
вообще без опыта
• Нет проблем с миграциями данных
• Методы объективного контроля работоспособности
всей системы, не зависящие от программистов и
тестировщиков
• Быстрое клонирование и развертывание серверов по
необходимости
46. Преимущества решения
• Масштабируемые приложения могут строить
разработчики с небольшим опытом работы или
вообще без опыта
• Нет проблем с миграциями данных
• Методы объективного контроля работоспособности
всей системы, не зависящие от программистов и
тестировщиков
• Быстрое клонирование и развертывание серверов по
необходимости
• Возможность адаптации или правки автоматизируемых
бизнес-процессов без участия программистов.
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п, не требует
ремонта, санузел раздельный,
хрущевка.”