Деплоймент и распространение обновлений для веб-приложений

2,846 views

Published on

Презентация Евгения Ивашина

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

  • Be the first to like this

No Downloads
Views
Total views
2,846
On SlideShare
0
From Embeds
0
Number of Embeds
1,396
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • Случай второй. [CLICK]Полная замена кодаКод не структурирован, невозможно либо очень сложно разбить систему на независимые модули, но настройки вынесены в отдельный файл или группу файлов. В таком случае обновление обычно представляет собой полную переинсталляцию приложения с сохранением старых настроек.Существенную проблему представляет собой обновление структуры базы данных. При изменении структуры данных upgrade БД выполняется вручную, предварительно выполняется backup.И горе конечному пользователю, если разработчик не предусмотрел корректной процедуры миграции данных, и тем более, если конечный пользователь забыл сохранить копию данных![CLICK]
  • Деплоймент и распространение обновлений для веб-приложений

    1. 1.
    2. 2. Деплоймент и распространение обновлений для веб-приложений<br />Евгений Ивашин,<br />разработчик Magento Core<br />
    3. 3. Деплоймент и распространение обновлений для веб-приложений<br />Основные тезисы<br />Существующие практики создания инсталляторов для веб-приложений.<br />Способы обновления веб-приложений, организация каналов обновлений.<br />Объектно-ориентированный подход и модульность организации программного кода и параметров настройки веб-приложения.<br />Установка или обновление отдельных модулей веб-приложения с сохранением целостности кода в целом.<br />
    4. 4. Введение<br />Быть программистом PHP означает разрабатывать веб-приложения. <br />У всех веб-приложений есть общие черты<br />
    5. 5. Введение<br />У всех веб-приложений есть общие черты:<br />... они созданы, чтобы выполняться на веб-сервере и быть доступными через Internet<br />
    6. 6. Введение<br />У всех веб-приложений есть общие черты:<br />... средой выполнения на них накладываются ограничения<br />
    7. 7. Введение<br />У всех веб-приложений есть общие черты:<br />... они многофункциональны и содержат большое количество исходного кода<br />
    8. 8. Введение<br />У всех веб-приложений есть общие черты:<br />... они всегда содержат ошибки, всегда требуется доработка и выпуск новых версий<br />
    9. 9. Введение<br />У всех веб-приложений есть общие черты:<br />... большинство из них работают с данными, структура которых изменяется с новыми версиями<br />
    10. 10. Введение<br />Сегодня мы рассмотрим моменты, возникающие при установке и обновлении веб-приложений, написанных на PHP. Мы остановимся на следующих вопросах:<br /><ul><li>Инсталляция веб-приложений
    11. 11. Проблемы обновления веб-приложений
    12. 12. Объектно-ориентированный подход и модульная организация программного кода</li></li></ul><li>Инсталляция веб-приложений<br />
    13. 13. «Какая инсталляция?..»<br />Инсталляция веб-приложений<br />Вариант 1<br />Разработка под конкретную платформу, «на коленке».<br />Преимущества:<br />При обеспечении идеальных условий разработка происходит быстрее, чем обычно<br />Недостатки:<br />Идеальные условия не наступают практически никогда!<br />
    14. 14. Инсталляция веб-приложений<br />Скачал, развернул и настроил<br />Вариант 2<br />Преимущества:<br />Настройки отделены от кода<br />Может выполняться непрофессионалом<br />Недостатки:<br />Сложность в обновлении и поддержке больших проектов<br />Код нельзя обновлять частями<br />
    15. 15. Инсталляция веб-приложений<br />Объектно-ориентированный подход<br />Вариант 3<br />Преимущества:<br />Широкие возможности по расширению приложения<br />Отделение кода от визуального представления<br />Модульный подход<br />Недостатки:<br />Сложность архитектуры<br />Тяжеловесность кода<br />
    16. 16. Проблема обновления веб-приложений<br />
    17. 17. Проблема обновления веб-приложений<br />Случай 1<br />Тяжелый случай<br />Возникает при попытке обновить приложение, разработанное «на коленке»<br />Ни о каком обновлении речи быть не может<br />Любые изменения требуют разработки заново либо переписывания большей части кода<br />
    18. 18. Проблема обновления веб-приложений<br />Полная замена кода<br />Случай 2<br />Код не структурирован<br />Обновление представляет собой полную переустановку новой версии с сохранением настроек<br />При изменении структуры данных upgrade БД выполняется вручную, предварительно выполняется backup<br />
    19. 19. Проблема обновления веб-приложений<br />Модульный подход<br />Случай 3<br />Объектно-ориентированный подход<br />Код разбит на модули<br />Каждый модуль может быть обновлен независимо<br />Модуль «знает» от каких модулей он зависит и какие модули зависят от него<br />После обновления выполняется upgrade структуры БД без потери данных<br />
    20. 20. Проблема обновления веб-приложений<br />Модульный подход<br />Случай 3<br />Пакет обновления<br />Модуль A’<br />Модуль A’<br />Модуль A<br />Конфигурациямодуля A’<br />Конфигурация модуля A’<br />Конфигурация модуля A<br />зависимости<br />Модуль B<br />Модуль C<br />Модуль D<br />
    21. 21. Проблема обновления веб-приложений<br />Модульный подход<br />Случай 3<br />Пакет обновления<br />Модуль A’<br />Модуль A<br />Модуль A’<br />Конфигурациямодуля A’<br />Конфигурация модуля A<br />зависимости<br />Конфигурация модуля A’<br />Модуль B<br />Модуль C<br />Модуль D<br />
    22. 22. Проблема обновления веб-приложений<br />Модульный подход<br />Случай 3<br /><ul><li>Пакет обновления модуля или нескольких модулей при необходимости содержит обновленные конфигурационные файлы модулей, которые при обновлении замещают существующие.
    23. 23. Конфигурация содержит исчерпывающие данные о взаимодействии данного модуля с другими модулями и системой в целом.
    24. 24. Конфигурация определяет зависимости данного модуля от остальных установленных модулей, проверяя допустимость и последовательность установки.</li></ul>Пакет обновления<br />Модуль A’<br />Модуль A<br />Модуль A’<br />Конфигурациямодуля A’<br />Конфигурация модуля A<br />зависимости<br />Конфигурация модуля A’<br />Модуль B<br />Модуль C<br />Модуль D<br />
    25. 25. Проблема обновления веб-приложений<br />Модульный подход<br />Случай 3<br />Пакет обновления<br />Модуль A’<br />Модуль A’<br />Модуль A<br />DB upgrade модуля A’<br />DB upgrade модуля A’<br />База данных<br />
    26. 26. Проблема обновления веб-приложений<br />Модульный подход<br />Случай 3<br />Пакет обновления<br />Модуль A’<br />Модуль A<br />Модуль A’<br />DB upgrade модуля A’<br />База данных<br />
    27. 27. Проблема обновления веб-приложений<br />Модульный подход<br />Случай 3<br /><ul><li>Обновляемый модуль при необходимости содержит пакетный скрипт, изменяющий структуру базы данных.
    28. 28. Изменение структуры БД привязано к версии модуля; при обновлении с одной версии на другую последовательно выполняются все изменения для каждой из версий.
    29. 29. Разработчик должен следить за тем, чтобы изменения структуры не нарушали целостность данных в целом.</li></ul>Пакет обновления<br />Модуль A’<br />Модуль A<br />Модуль A’<br />DB upgrade модуля A’<br />База данных<br />
    30. 30. Проблема обновления веб-приложений<br />Модульный подход<br />Случай 3<br />Что происходит с конфигурационными данными в процессе инсталляции?<br /><ul><li>После обновления всех модулей, их конфигурации читаются как отдельные XML файлы в порядке, определяемым зависимостями между модулями.</li></ul>Конфигурация модуля A<br />Конфигурация модуля A<br />Конфигурация модуля A<br />Конфигурация модуля A<br />Конфигурация модуля A<br />Конфигурация модуля A<br />Конфигурация модуля A<br />Конфигурация модуля A<br />Конфигурация модуля A<br />Конфигурация модуля A<br />Конфигурация модуля A<br />
    31. 31. Проблема обновления веб-приложений<br />Модульный подход<br />Случай 3<br />Что происходит с конфигурационными данными в процессе инсталляции?<br /><ul><li>После обновления всех модулей, их конфигурации читаются как отдельные XML файлы в порядке, определяемым зависимостями между модулями.</li></ul>Конфигурация Magento<br /><ul><li>Затем все они объединяются в единую структуру, причем перезапись ветвей XML происходит таким образом, что более поздняя информация замещает предыдущую. </li></li></ul><li>Проблема обновления веб-приложений<br />Модульный подход<br />Случай 3<br />Что происходит с конфигурационными данными в процессе инсталляции?<br /><ul><li>После обновления всех модулей, их конфигурации читаются как отдельные XML файлы в порядке, определяемым зависимостями между модулями.</li></ul>Конфигурация Magento<br /><ul><li>Затем все они объединяются в единую структуру, причем перезапись ветвей XML происходит таким образом, что более поздняя информация замещает предыдущую.
    32. 32. Полученная структура кешируется в виде, удобном для быстрого доступа из любого места кода Magento</li></li></ul><li>Проблема обновления веб-приложений<br />Каналы обновления<br />Случай 4<br />Канал «умеет» выдавать список обновлений и отслеживает версии.<br />Любой пакет обновления может быть скачан из канала и установлен, при условии что зависимости пакета позволяют это сделать.<br />Magento ®использует механизм PEARдля организации каналов обновления.<br />
    33. 33. Проблема обновления веб-приложений<br />Каналы обновления<br />Случай 4<br />
    34. 34. Объектно-ориентированный подход и модульная организация кода<br />
    35. 35. Объектно-ориентированный подход и модульная организация кода<br />ЧЕМ ХОРОША АРХИТЕКТУРА MVC?<br />
    36. 36. ЧЕМ ХОРОША АРХИТЕКТУРА MVC?<br />Поощряет разработчика к разделению программного кода и интерфейсной части приложения, что позволяет:<br /><ul><li>произвольно менять внешний вид приложения, не модифицируя исходный код;
    37. 37. дизайнерам и программистам работать независимо друг от друга.</li></ul> /**<br /> * Set a color value<br /> *<br /> * @param string $color<br /> * @return Object<br /> */<br /> public function setColor($colorVa<br /> {<br /> $this->_color = $color;<br /> return $this;<br /> }<br /> /**<br />Browser<br />
    38. 38. ЧЕМ ХОРОША АРХИТЕКТУРА MVC?<br />Дает преимущество при разработке:<br /><ul><li>отделяет бизнес-логику от доступа к данным и внутренним ресурсам приложения;
    39. 39. увеличивает повторность использования кода;
    40. 40. облегчает читабельность и прозрачность исходных текстов;
    41. 41. делает отладку и тестирование намного проще.</li></ul>С<br />С<br />С<br />С<br />С<br />С<br />M<br />M<br />M<br />M<br />M<br />M<br />
    42. 42. ЧЕМ ХОРОША АРХИТЕКТУРА MVC?<br />Позволяет разбивать код веб-приложения на модули.<br /><ul><li>Модуль — это отдельное. функционально законченное мини-приложение в составе общего проекта
    43. 43. Приложение рассматривается как набор отдельных строительных блоков.
    44. 44. Каждый модуль следует общей архитектуре MVC, иметь собственные контроллеры и модели, собственную визуальную часть и настройки.</li></ul>Модуль<br />Модуль<br />Модуль<br />Модуль<br />Модуль<br />Модуль<br />Модуль<br />Модуль<br />Модуль<br />M<br />Модуль<br />V<br />Модуль<br />С<br />Модуль<br />
    45. 45. КАК ЭТО СДЕЛАНО В MAGENTO?<br /><ul><li>Каждый модуль имеет собственную иерархию классов, при этом тесно взаимодействует с другими модулями.
    46. 46. Каждый модуль имеет свои файлы конфигурации.
    47. 47. Установка и обновление кода Magentoпроисходит помодульно, с учетом заданных зависимостей между отдельными модулями.
    48. 48. Изменение структуры данных Magento при обновлении модуля с любой версии всегда выполняется корректно.</li></ul>M<br />V<br />С<br /><ul><li>Magentoимеет очень развитую иерархию классов.
    49. 49. Код Magentoразделен на модули.
    50. 50. Правильная организация позволяет Magentoобновляться, используя механизм PEAR</li></li></ul><li>

    ×