Разработка веб-сервисов осень 2013 лекция 5

50 %
50 %
Information about Разработка веб-сервисов осень 2013 лекция 5
Education

Published on February 21, 2014

Author: Technopark

Source: slideshare.net

Разработка веб-сервисов Беседа 5: Этапы построения архитектуры веб-сервиса

План занятия  Проектирование: от системы к компонентам  Борьба со сложностью на всех этапах проектирования  Программирование: от компонентов к коду модулей  Эксплуатация: выбор инструментария 2

Этапы создания проекта Этапы: 1. Анализ предметной области и постановка задачи 2. Проектирование, уточнение ТЗ 3. Разработка 4. Анализ разработанного продукта (ревью, тесты) 5. Ввод в эксплуатацию 3

Проектирование  Перевод ТЗ от слов к делу  Закладка фундамента сервиса, подсистемы  Уточнение ТЗ по итогам проектирования 4

Проектирование Цель проектирования 1. Создание работоспособной системы, удовлетворяющей требованиям 2. Создание системы наименьшей сложности 5

Проектирование Проектирование — один из важнейших этапов  Многие ограничения (или ошибки) закладываются на этапе проектирования  Исправление ошибок проще всего на этом этапе 6

Проектирование Что влияет на сложность? Технологии — архитектура системы Реализация решения — архитектура кода Эксплуатация решения — железо + системное ПО 7

Борьба со сложностью Общие принципы  K.I.S.S Keep it simple, stupid!  Преждевременная оптимизация — корень всех бед 8

Борьба со сложностью При проектировании  Используйте знакомые технологии Большую часть веб-проектов можно сделать на LAMP  Используйте минимальный набор технологий Чем меньше разных компонентов, тем надежнее система 9

Борьба со сложностью При проектировании. Примеры:  Как писать в несколько баз одновременно?  Как обрабатывать ошибки? 10

Борьба со сложностью При разработке  Чем проще код, тем проще поддерживать  Не злоупотребляйте парадигмами  Не используйте сложные инструменты для простых вещей 11

Борьба со сложностью При разработке. Парадигмы Не злоупотребляйте парадигмами Классовая борьба — это не Маркс, это страшный сон программиста 12

Борьба со сложностью При разработке. Инструменты 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

Борьба со сложностью При разработке. Инструменты <?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

Проектирование Этапы проектирования 1. Обобщение требований и перевод абстракций в формализованную систему 2. Разбиение системы на части (компоненты) 3. Выбор инструментов для реализации компонентов 16

Проектирование Поступательный переход от общего к частному — нисходящее проектирование 17

Проектирование кода От проектирования архитектуры к проектированию кода:  От абстракции к системе  От целой системы к компонентам  От компонентов к проектированию модулей  От проектирования модулей к реализации методов 18

Проектирование кода Принципы модульного программирования во многом сходны с принципами нисходящего проектирования: Сначала определяются состав и взаимосвязи функций, а затем — набор программных модулей, реализующих эти функции. 19

Модульное программирование Модуль — это самостоятельная часть программы, имеющая определенное назначение и обеспечивающая заданные функции обработки автономно от других частей 20

Модульное программирование Объем модулей Маленькие модули приводят к громоздкой структуре Большие модули неудобны для изучения и изменения 21

Модульное программирование Достоинства модульной разработки  Легче составлять и отлаживать  Легче сопровождать и модифицировать  Легче управлять разработкой 22

Модульное программирование Недостатки модульной разработки  Высокий уровень абстракции  Высокие требования к дисциплине  Риск закопаться в деталях 23

Модульное программирование Восходящее и нисходящее программирование Восходящее: для каждого модуля запрограммированы все модули, к которым он может обращаться Нисходящее: программируется с главного модуля, нижние представляются в виде вызовов (заглушки) 24

Эксплуатация Выбор «железа»      Диски Память Процессор Сеть Операционная система — — — — — количество, объем, тип объем памяти количество ядер пропускная способность инфраструктура 25

Эксплуатация Выбор «железа»: сколько вешать в граммах?  Ответы: 1 фронтенд на 1 млн. хитов в сутки  Деньги: 1 сервер очередей на 300 процессов  Рассылки: 1 рассыльщик на 5 млн. писем 26

Эксплуатация Выбор «железа»: выводы Разные ресурсы нужны  разным системам  разным компонентам одной системы 27

Эксплуатация Погоня за «аптаймом» Чем выше требуется отказоустойчивость, тем большие ресурсы нужны 28

Эксплуатация Погоня за «аптаймом»  100% аптайма — редко достижимый результат  Ресурсами железа не обойтись  Допустимый уровень аптайма  В разных системах и компонентах — разный 29

Резюме  Проектирование — один из самых важных этапов  Чем проще, тем лучше  Нисходящее проектирование систем снижает сложность  Разные системы — разные подходы к инструментам  Идеалы недостижимы, но стремиться можно 30

Вопросы? Максим Бабич tpark@maxbabich.ru +7 916 9415275

Add a comment

Related presentations

Related pages

Лекция 7: Создание веб-сервисов ...

... 2013. В лекции ... Лекция и тесты в НОУ "ИНТУИТ" http://www.intuit.ru/studies ... Разработка веб ...
Read more

Лекция №1 - Фронтенд ...

Лекция №1. Фронтенд ... Разработка веб-сервисов. Смешанное занятие №1. Java. Лекция №5.
Read more

Интуит. Разработка приложений ...

Разработка веб-сервисов осень 2013 лекция 12 1. Разработка веб-сервисовБеседа ... (5) Курс ...
Read more

Разработка веб-сервисов ...

Курс "Разработка веб-сервисов", Занятие №1 "Введение. ... лекция №1 (2013 г.) - Duration: ...
Read more

PostgreSQL: промышленная разработка ...

Алгоритмы и структуры данных осень 2013 лекция 8 1. Лекция 8. Динамическое ...
Read more

Разработка веб-сервисов. Лекция ...

Разработка веб-сервисов. ... Разработка веб-сервисов. Лекция 5. ... © Copyright 2013-2015 Numeralis.ru ...
Read more