Проектирование Программных Систем. Лекция 01Dima Dzuba
Лекция рассказывает о базовых принципах построения программного обеспечения. Проводится сравнение гибких (Agile) и водопадных методологий разработки программного обеспечения.
www.cmcons.com. Практика и технология внедрения процесса конфигурационного управления и управления изменениями с применением IBM Rational ClearCase и ClearQuest
Проектирование Программных Систем. Лекция 01Dima Dzuba
Лекция рассказывает о базовых принципах построения программного обеспечения. Проводится сравнение гибких (Agile) и водопадных методологий разработки программного обеспечения.
www.cmcons.com. Практика и технология внедрения процесса конфигурационного управления и управления изменениями с применением IBM Rational ClearCase и ClearQuest
Choose method for requirements Tsepkov Analyst Days-2017Maxim Tsepkov
Как выбрать для проекта практики проектирования и работы с требованиями (Максим Цепков на AnalystDays-2017). Страница доклада http://mtsepkov.org/Methods4req
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Лекция 5. MapReduce в Hadoop (алгоритмы)Technopark
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Лекция 3. Распределённая файловая система HDFSTechnopark
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Лекция 1. Введение в Big Data и MapReduceTechnopark
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"Technopark
Технопарк Mail.ru Group, МГТУ им. Н.Э. Баумана. Курс "Базы данных".
Лекция №10 "Нереляционное решение в области баз данных — NoSQL". Лектор - Станислав Ступников.
Вводная часть посвящена определению и истории развития концепции NoSQL. Даются характеристики, рассказывается о способах использования. Рассматриваются виды NoSQL БД, теоретические основы NoSQL, а в конце лекции обсуждаются недостатки NoSQL-решений, а также проводится сравнение разных NoSQL-решений.
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9obOz5K695ugYuiOOCBciEi
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...Technopark
Технопарк Mail.ru Group, МГТУ им. Н.Э. Баумана. Курс "Базы данных".
Лекция №10 "Нереляционное решение в области баз данных — NoSQL". Лектор - Станислав Ступников.
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9obOz5K695ugYuiOOCBciEi
Технопарк Mail.ru Group, МГТУ им. Н.Э. Баумана. Курс "Базы данных".
Лекция №9 "Безопасность баз данных". Лектор - Павел Щербинин.
Открывается лекция рассказом о резервном копировании (о логических и физических резервных копиях, о выборе данных для копирования). Затем определяется терминология для обсуждения дальнейших вопросов. После этого рассматриваются основы учётных записей: таблицы доступа, привилегии, виды записей. Обсуждаются SQL-injection, список смежных вершин (Adjacency Set), вложенное множество (Nested Set), материализованный путь (Materialized Path) и комбинированный подход.
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9obOz5K695ugYuiOOCBciEi
СУБД 2013 Лекция №8 "Конфигурирование базы данных"Technopark
Технопарк Mail.ru Group, МГТУ им. Н.Э. Баумана. Курс "Базы данных".
Лекция №8 "Конфигурирование базы данных". Лектор - Павел Щербинин.
Сначала объясняются основы конфигурирования и общие принципы настройки. Далее рассказывается об области видимости, о настройке использования памяти, обсуждается размер блока ключей key_cache_block_size. Рассматривается устройство и использование кэша InnoDB, а также кэшей потоков и таблиц. Затем говорится об особенностях ввода/вывода в InnoDB. Далее рассказывается о табличном пространстве, оптимизации файловой сортировки, переменных состояния. Финальная часть лекции посвящена репликации: настройка, синхронизация, топология, планирование пропускной способности, администрирование и обслуживание, проблемы и их решения.
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9obOz5K695ugYuiOOCBciEi
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"Technopark
Технопарк Mail.ru Group, МГТУ им. Н.Э. Баумана. Курс "Базы данных".
Лекция №7 "Оптимизация запросов и индексирование". Лектор - Павел Щербинин.
Вначале рассказывается об оптимизации доступа к данным, о декомпозиции соединения и состоянии запроса. Далее идёт большой блок, посвящённый оптимизатору запросов (изменение порядка соединения, применение алгебраических правил эквивалентности, оптимизации COUNT(), MIN(), MAX(), вычисление и свертка константных выражений, покрывающие индексы, оптимизация подзапросов, раннее завершение, сравнение по списку IN() и распространение равенства). Затем последовательно рассматриваются такие вещи, как соединение (JOIN) в MySQL, оптимизатор сортировки, коррелированные подзапросы, слияние и непоследовательный просмотр индексов, функции SELECT & UPDATE, COUNT(). После этого рассказывается об оптимизации запросов с помощью JOIN, GROUP BY, DISTINCT и LIMIT со смещением. В конце лекции даётся информация о кэшировании запросов, объединённых таблицах и секционировании.
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9obOz5K695ugYuiOOCBciEi
Технопарк Mail.ru Group, МГТУ им. Н.Э. Баумана. Курс "Базы данных".
Лекция №5 "Определение узких мест". Лектор - Павел Щербинин.
Вначале рассказывается о подсистемах хранения: MyISAM, InnoDB, Memory, о критериях выбора подсистем хранения, приводятся практические примеры. Затем обсуждается тема индексирования (B-tree, хеш-индексы) и EXPLAIN (столбцы id, table, possible_keys, key, key_len).
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9obOz5K695ugYuiOOCBciEi
Технопарк Mail.ru Group, МГТУ им. Н.Э. Баумана. Курс "Базы данных".
Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-запросы". Лектор - Павел Щербинин.
Лекция открывается рассказом о том, что такое профилирование запроса, каковы его этапы выполнения в MySQL. Рассказывается о том, как планировать запрос, как осуществляется протоколирование запросов, как собирается статистика. Объясняются основы индексирования, подробно обсуждаются стратегии индексирования для достижения высокой производительности: изоляция столбца, кластерные индексы (преимущества и недостатки), размещение данных в MyISAM и InnoDB, покрывающие индексы. Далее затрагивается тема нормализации и денормализации, а также таблиц счётчиков. В завершении рассказывается о версионировании схемы БД: о методах инкрементных изменений, идемпотентных изменений, уподобления структуры БД исходному коду.
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9obOz5K695ugYuiOOCBciEi
2. План занятия
Проектирование: от системы к компонентам
Борьба со сложностью на всех этапах
проектирования
Программирование: от компонентов к коду модулей
Эксплуатация: выбор инструментария
2
3. Этапы создания проекта
Этапы:
1. Анализ предметной области и постановка задачи
2. Проектирование, уточнение ТЗ
3. Разработка
4. Анализ разработанного продукта (ревью, тесты)
5. Ввод в эксплуатацию
3
4. Проектирование
Перевод ТЗ от слов к делу
Закладка фундамента сервиса, подсистемы
Уточнение ТЗ по итогам проектирования
4
6. Проектирование
Проектирование — один из важнейших этапов
Многие ограничения (или ошибки) закладываются
на этапе проектирования
Исправление ошибок проще всего на этом этапе
6
7. Проектирование
Что влияет на сложность?
Технологии
— архитектура системы
Реализация решения
— архитектура кода
Эксплуатация решения — железо + системное ПО
7
8. Борьба со сложностью
Общие принципы
K.I.S.S
Keep it simple, stupid!
Преждевременная оптимизация — корень всех бед
8
9. Борьба со сложностью
При проектировании
Используйте знакомые технологии
Большую часть веб-проектов можно сделать на LAMP
Используйте минимальный набор технологий
Чем меньше разных компонентов, тем надежнее система
9
10. Борьба со сложностью
При проектировании. Примеры:
Как писать в несколько баз одновременно?
Как обрабатывать ошибки?
10
11. Борьба со сложностью
При разработке
Чем проще код, тем проще поддерживать
Не злоупотребляйте парадигмами
Не используйте сложные инструменты для простых
вещей
11
12. Борьба со сложностью
При разработке. Парадигмы
Не злоупотребляйте парадигмами
Классовая борьба — это не Маркс,
это страшный сон программиста
12
13. Борьба со сложностью
При разработке. Инструменты
use XML::LibXML;
sub make_xml{
my ( $mod, $data ) = @_;
my $doc = XML::LibXML->createDocument( $mod->{xml}->{version}, $mod->{xml}->{encoding} );
my $reestr = $doc->createElement( 'reestr' );
for my $payment ( @{ $data->{reestr} } ){
my $payment_element = $doc->createElement( ‘payment’ );
$reestr->appendChild( $payment_element );
_add_element( $doc, $reestr, ‘currency', 643);
_add_element( $doc, $reestr, ‘amount', $payment->{pay_amount} );
}
$doc->setDocumentElement( $reestr );
return $doc->toString( 1 );
}
13
14. Борьба со сложностью
При разработке. Инструменты
<?xml version="1.0" encoding="windows-1251"?>
<reestr>
<tmpl_loop payments>
<payment id="<tmpl_var payment_id>">
<currency="643” amount="<tmpl_var amount>“ />
</payment>
</tmpl_loop>
</reestr>
14
15. Борьба со сложностью
При эксплуатации
Выбирайте инструменты, соответствующие уровню
Разные инструменты на разных этапах
Советуйтесь с отделом эксплуатации
15
16. Проектирование
Этапы проектирования
1. Обобщение требований и перевод абстракций в
формализованную систему
2. Разбиение системы на части (компоненты)
3. Выбор инструментов для реализации компонентов
16
18. Проектирование кода
От проектирования архитектуры
к проектированию кода:
От абстракции к системе
От целой системы к компонентам
От компонентов к проектированию модулей
От проектирования модулей к реализации методов
18
19. Проектирование кода
Принципы модульного программирования во многом
сходны с принципами нисходящего проектирования:
Сначала определяются состав и взаимосвязи функций,
а затем — набор программных модулей,
реализующих эти функции.
19
20. Модульное программирование
Модуль — это самостоятельная часть программы,
имеющая определенное назначение и
обеспечивающая заданные функции обработки
автономно от других частей
20
24. Модульное программирование
Восходящее и нисходящее программирование
Восходящее:
для каждого модуля запрограммированы все модули, к которым он
может обращаться
Нисходящее:
программируется с главного модуля, нижние представляются в виде
вызовов (заглушки)
24
26. Эксплуатация
Выбор «железа»: сколько вешать в граммах?
Ответы:
1 фронтенд на 1 млн. хитов в сутки
Деньги:
1 сервер очередей на 300 процессов
Рассылки:
1 рассыльщик на 5 млн. писем
26
29. Эксплуатация
Погоня за «аптаймом»
100% аптайма — редко достижимый результат
Ресурсами железа не обойтись
Допустимый уровень аптайма
В разных системах и компонентах — разный
29
30. Резюме
Проектирование — один из самых важных этапов
Чем проще, тем лучше
Нисходящее проектирование систем снижает
сложность
Разные системы — разные подходы к инструментам
Идеалы недостижимы, но стремиться можно
30