Your SlideShare is downloading. ×
Разработка веб-сервисов осень 2013 лекция 5
Разработка веб-сервисов осень 2013 лекция 5
Разработка веб-сервисов осень 2013 лекция 5
Разработка веб-сервисов осень 2013 лекция 5
Разработка веб-сервисов осень 2013 лекция 5
Разработка веб-сервисов осень 2013 лекция 5
Разработка веб-сервисов осень 2013 лекция 5
Разработка веб-сервисов осень 2013 лекция 5
Разработка веб-сервисов осень 2013 лекция 5
Разработка веб-сервисов осень 2013 лекция 5
Разработка веб-сервисов осень 2013 лекция 5
Разработка веб-сервисов осень 2013 лекция 5
Разработка веб-сервисов осень 2013 лекция 5
Разработка веб-сервисов осень 2013 лекция 5
Разработка веб-сервисов осень 2013 лекция 5
Разработка веб-сервисов осень 2013 лекция 5
Разработка веб-сервисов осень 2013 лекция 5
Разработка веб-сервисов осень 2013 лекция 5
Разработка веб-сервисов осень 2013 лекция 5
Разработка веб-сервисов осень 2013 лекция 5
Разработка веб-сервисов осень 2013 лекция 5
Разработка веб-сервисов осень 2013 лекция 5
Разработка веб-сервисов осень 2013 лекция 5
Разработка веб-сервисов осень 2013 лекция 5
Разработка веб-сервисов осень 2013 лекция 5
Разработка веб-сервисов осень 2013 лекция 5
Разработка веб-сервисов осень 2013 лекция 5
Разработка веб-сервисов осень 2013 лекция 5
Разработка веб-сервисов осень 2013 лекция 5
Разработка веб-сервисов осень 2013 лекция 5
Разработка веб-сервисов осень 2013 лекция 5
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

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

88

Published on

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
88
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
7
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

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

×