Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

358 views

Published on

Published in: Education
  • Be the first to comment

  • Be the first to like this

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

  1. 1. Разработка веб-сервисов Беседа 5: Этапы построения архитектуры веб-сервиса
  2. 2. План занятия  Проектирование: от системы к компонентам  Борьба со сложностью на всех этапах проектирования  Программирование: от компонентов к коду модулей  Эксплуатация: выбор инструментария 2
  3. 3. Этапы создания проекта Этапы: 1. Анализ предметной области и постановка задачи 2. Проектирование, уточнение ТЗ 3. Разработка 4. Анализ разработанного продукта (ревью, тесты) 5. Ввод в эксплуатацию 3
  4. 4. Проектирование  Перевод ТЗ от слов к делу  Закладка фундамента сервиса, подсистемы  Уточнение ТЗ по итогам проектирования 4
  5. 5. Проектирование Цель проектирования 1. Создание работоспособной системы, удовлетворяющей требованиям 2. Создание системы наименьшей сложности 5
  6. 6. Проектирование Проектирование — один из важнейших этапов  Многие ограничения (или ошибки) закладываются на этапе проектирования  Исправление ошибок проще всего на этом этапе 6
  7. 7. Проектирование Что влияет на сложность? Технологии — архитектура системы Реализация решения — архитектура кода Эксплуатация решения — железо + системное ПО 7
  8. 8. Борьба со сложностью Общие принципы  K.I.S.S Keep it simple, stupid!  Преждевременная оптимизация — корень всех бед 8
  9. 9. Борьба со сложностью При проектировании  Используйте знакомые технологии Большую часть веб-проектов можно сделать на LAMP  Используйте минимальный набор технологий Чем меньше разных компонентов, тем надежнее система 9
  10. 10. Борьба со сложностью При проектировании. Примеры:  Как писать в несколько баз одновременно?  Как обрабатывать ошибки? 10
  11. 11. Борьба со сложностью При разработке  Чем проще код, тем проще поддерживать  Не злоупотребляйте парадигмами  Не используйте сложные инструменты для простых вещей 11
  12. 12. Борьба со сложностью При разработке. Парадигмы Не злоупотребляйте парадигмами Классовая борьба — это не Маркс, это страшный сон программиста 12
  13. 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. 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. Борьба со сложностью При эксплуатации  Выбирайте инструменты, соответствующие уровню  Разные инструменты на разных этапах  Советуйтесь с отделом эксплуатации 15
  16. 16. Проектирование Этапы проектирования 1. Обобщение требований и перевод абстракций в формализованную систему 2. Разбиение системы на части (компоненты) 3. Выбор инструментов для реализации компонентов 16
  17. 17. Проектирование Поступательный переход от общего к частному — нисходящее проектирование 17
  18. 18. Проектирование кода От проектирования архитектуры к проектированию кода:  От абстракции к системе  От целой системы к компонентам  От компонентов к проектированию модулей  От проектирования модулей к реализации методов 18
  19. 19. Проектирование кода Принципы модульного программирования во многом сходны с принципами нисходящего проектирования: Сначала определяются состав и взаимосвязи функций, а затем — набор программных модулей, реализующих эти функции. 19
  20. 20. Модульное программирование Модуль — это самостоятельная часть программы, имеющая определенное назначение и обеспечивающая заданные функции обработки автономно от других частей 20
  21. 21. Модульное программирование Объем модулей Маленькие модули приводят к громоздкой структуре Большие модули неудобны для изучения и изменения 21
  22. 22. Модульное программирование Достоинства модульной разработки  Легче составлять и отлаживать  Легче сопровождать и модифицировать  Легче управлять разработкой 22
  23. 23. Модульное программирование Недостатки модульной разработки  Высокий уровень абстракции  Высокие требования к дисциплине  Риск закопаться в деталях 23
  24. 24. Модульное программирование Восходящее и нисходящее программирование Восходящее: для каждого модуля запрограммированы все модули, к которым он может обращаться Нисходящее: программируется с главного модуля, нижние представляются в виде вызовов (заглушки) 24
  25. 25. Эксплуатация Выбор «железа»      Диски Память Процессор Сеть Операционная система — — — — — количество, объем, тип объем памяти количество ядер пропускная способность инфраструктура 25
  26. 26. Эксплуатация Выбор «железа»: сколько вешать в граммах?  Ответы: 1 фронтенд на 1 млн. хитов в сутки  Деньги: 1 сервер очередей на 300 процессов  Рассылки: 1 рассыльщик на 5 млн. писем 26
  27. 27. Эксплуатация Выбор «железа»: выводы Разные ресурсы нужны  разным системам  разным компонентам одной системы 27
  28. 28. Эксплуатация Погоня за «аптаймом» Чем выше требуется отказоустойчивость, тем большие ресурсы нужны 28
  29. 29. Эксплуатация Погоня за «аптаймом»  100% аптайма — редко достижимый результат  Ресурсами железа не обойтись  Допустимый уровень аптайма  В разных системах и компонентах — разный 29
  30. 30. Резюме  Проектирование — один из самых важных этапов  Чем проще, тем лучше  Нисходящее проектирование систем снижает сложность  Разные системы — разные подходы к инструментам  Идеалы недостижимы, но стремиться можно 30
  31. 31. Вопросы? Максим Бабич tpark@maxbabich.ru +7 916 9415275

×