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

Беседа 5: Этапы построения архитектуры веб-сервиса
План занятия
 Проектирование: от системы к компонентам
 Борьба со сложностью на всех этапах
проектирования
 Программиро...
Этапы создания проекта
Этапы:
1. Анализ предметной области и постановка задачи

2. Проектирование, уточнение ТЗ
3. Разрабо...
Проектирование

 Перевод ТЗ от слов к делу

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

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

 Многие ограничения (или ошибки) закладываются
на этапе проекти...
Проектирование
Что влияет на сложность?

Технологии

— архитектура системы

Реализация решения

— архитектура кода

Эксплу...
Борьба со сложностью
Общие принципы

 K.I.S.S
Keep it simple, stupid!

 Преждевременная оптимизация — корень всех бед

8
Борьба со сложностью
При проектировании

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

 Как писать в несколько баз одновременно?
 Как обрабатывать ошибки?

...
Борьба со сложностью
При разработке

 Чем проще код, тем проще поддерживать
 Не злоупотребляйте парадигмами

 Не исполь...
Борьба со сложностью
При разработке. Парадигмы

Не злоупотребляйте парадигмами
Классовая борьба — это не Маркс,
это страшн...
Борьба со сложностью
При разработке. Инструменты
use XML::LibXML;
sub make_xml{
my ( $mod, $data ) = @_;
my $doc = XML::Li...
Борьба со сложностью
При разработке. Инструменты
<?xml version="1.0" encoding="windows-1251"?>
<reestr>
<tmpl_loop payment...
Борьба со сложностью
При эксплуатации

 Выбирайте инструменты, соответствующие уровню
 Разные инструменты на разных этап...
Проектирование
Этапы проектирования

1. Обобщение требований и перевод абстракций в
формализованную систему
2. Разбиение с...
Проектирование

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

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

 От целой системы к к...
Проектирование кода

Принципы модульного программирования во многом

сходны с принципами нисходящего проектирования:
Снача...
Модульное программирование

Модуль — это самостоятельная часть программы,
имеющая определенное назначение и
обеспечивающая...
Модульное программирование
Объем модулей

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

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

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

Восходящее:
для каждого модуля запрограммированы все ...
Эксплуатация
Выбор «железа»







Диски
Память
Процессор
Сеть
Операционная
система

—
—
—
—
—

количество, объем, ти...
Эксплуатация
Выбор «железа»: сколько вешать в граммах?

 Ответы:

1 фронтенд на 1 млн. хитов в сутки

 Деньги:

1 сервер...
Эксплуатация
Выбор «железа»: выводы

Разные ресурсы нужны


разным системам



разным компонентам одной системы

27
Эксплуатация
Погоня за «аптаймом»

Чем выше требуется отказоустойчивость, тем большие ресурсы нужны

28
Эксплуатация
Погоня за «аптаймом»

 100% аптайма — редко достижимый результат
 Ресурсами железа не обойтись

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

 Нисходящее проектирование систем снижает
с...
Вопросы?
Максим Бабич
tpark@maxbabich.ru
+7 916 9415275
Upcoming SlideShare
Loading in...5
×

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

102

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
102
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
9
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Разработка веб-сервисов осень 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
  1. ¿Le ha llamado la atención una diapositiva en particular?

    Recortar diapositivas es una manera útil de recopilar información importante para consultarla más tarde.

×