0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>Ранее в курсе мы обсуждали, как команды разрабатывают продукты от идеи до релиза. Но есть ли жизнь после выхода в продакшен? Об этом мы поговорим в этом уроке. Мы изучим фазу сопровождения продукта, которая начинается сразу после релиза.</p>
1
<p>Ранее в курсе мы обсуждали, как команды разрабатывают продукты от идеи до релиза. Но есть ли жизнь после выхода в продакшен? Об этом мы поговорим в этом уроке. Мы изучим фазу сопровождения продукта, которая начинается сразу после релиза.</p>
2
<h2>Что такое сопровождение</h2>
2
<h2>Что такое сопровождение</h2>
3
<p><strong>Фаза сопровождения</strong>или<strong>поддержки</strong>(Post-Go-Live support) - это этап, на котором программное обеспечение впервые сталкивается с реальными пользователями.</p>
3
<p><strong>Фаза сопровождения</strong>или<strong>поддержки</strong>(Post-Go-Live support) - это этап, на котором программное обеспечение впервые сталкивается с реальными пользователями.</p>
4
<p>Можно сказать, что это продолжение тестирования, потому что протестировать всё заранее невозможно. Само количество тестов бесконечно, так как нельзя предугадать все действия пользователей. Более того, на ПО влияют и остальные факторы: нагрузка, последовательности и одновременность действий, инфраструктура и так далее.</p>
4
<p>Можно сказать, что это продолжение тестирования, потому что протестировать всё заранее невозможно. Само количество тестов бесконечно, так как нельзя предугадать все действия пользователей. Более того, на ПО влияют и остальные факторы: нагрузка, последовательности и одновременность действий, инфраструктура и так далее.</p>
5
<p>Поэтому есть ненулевая вероятность, что ошибка просочится в продакшен и когда-нибудь даст о себе знать. Тогда произойдет<strong>инцидент</strong>- именно так называют случаи, когда дефект показался в Продакшене. Инциденты портят имидж заказчику и разработчику, приносят убытки и головную боль всем, кто поддерживает работу системы.</p>
5
<p>Поэтому есть ненулевая вероятность, что ошибка просочится в продакшен и когда-нибудь даст о себе знать. Тогда произойдет<strong>инцидент</strong>- именно так называют случаи, когда дефект показался в Продакшене. Инциденты портят имидж заказчику и разработчику, приносят убытки и головную боль всем, кто поддерживает работу системы.</p>
6
<p>Чтобы снизить вероятность инцидента, команды тщательнее готовятся и проверяют все на всех этапах жизненного цикла ПО. Чтобы сопровождение было еще надежнее, эту фазу планируют еще в самом начале разработки ПО.</p>
6
<p>Чтобы снизить вероятность инцидента, команды тщательнее готовятся и проверяют все на всех этапах жизненного цикла ПО. Чтобы сопровождение было еще надежнее, эту фазу планируют еще в самом начале разработки ПО.</p>
7
<h2>Что может входить в сопровождение</h2>
7
<h2>Что может входить в сопровождение</h2>
8
<p>Фаза сопровождения зависит от продукта, компании и её отношений с клиентом. Также фаза сопровождения может быть как бесплатной для заказчика, так и платной. Далее мы обсудим два аспекта сопровождения, которые встречаются чаще всего.</p>
8
<p>Фаза сопровождения зависит от продукта, компании и её отношений с клиентом. Также фаза сопровождения может быть как бесплатной для заказчика, так и платной. Далее мы обсудим два аспекта сопровождения, которые встречаются чаще всего.</p>
9
<p><strong>Ответы на вопросы</strong>. Компания-разработчик объясняет заказчику, как работает продукт, где находится какая-то кнопка, и так далее.</p>
9
<p><strong>Ответы на вопросы</strong>. Компания-разработчик объясняет заказчику, как работает продукт, где находится какая-то кнопка, и так далее.</p>
10
<p>В коммерческом ПО заказчики чаще всего задают вопросы о реконфигурации программы. Другими словами, они уточняют, может ли программа подстроиться под меняющиеся потребности. Причем реконфигурация - это изменение параметров, а не изменение кода. Такие вариации действия системы разработчик заранее вкладывает в ПО.</p>
10
<p>В коммерческом ПО заказчики чаще всего задают вопросы о реконфигурации программы. Другими словами, они уточняют, может ли программа подстроиться под меняющиеся потребности. Причем реконфигурация - это изменение параметров, а не изменение кода. Такие вариации действия системы разработчик заранее вкладывает в ПО.</p>
11
<p>С реконфигурацией есть одна распространенная сложность - чем больше параметров, тем сложнее тестирование. Если параметров очень много, то сложно убедиться, что продукт работает корректно.</p>
11
<p>С реконфигурацией есть одна распространенная сложность - чем больше параметров, тем сложнее тестирование. Если параметров очень много, то сложно убедиться, что продукт работает корректно.</p>
12
<p>Рассмотрим такой пример. Представим, что у нас есть 10 параметров:</p>
12
<p>Рассмотрим такой пример. Представим, что у нас есть 10 параметров:</p>
13
<ul><li>3 поля с числами от 0 до 2 000 000</li>
13
<ul><li>3 поля с числами от 0 до 2 000 000</li>
14
<li>3 поля со строковыми данными, длиной не более 255 и только маленькими латинскими буквами</li>
14
<li>3 поля со строковыми данными, длиной не более 255 и только маленькими латинскими буквами</li>
15
<li>2 выпадающих списка с 5 значениями внутри каждый</li>
15
<li>2 выпадающих списка с 5 значениями внутри каждый</li>
16
<li>2 поля с галочками (чек-боксы)</li>
16
<li>2 поля с галочками (чек-боксы)</li>
17
</ul><p>Выглядит не так сложно, но на практике мы столкнемся с огромным количеством вариаций:</p>
17
</ul><p>Выглядит не так сложно, но на практике мы столкнемся с огромным количеством вариаций:</p>
18
<ul><li>3 поля по 2 000 000 вариантов</li>
18
<ul><li>3 поля по 2 000 000 вариантов</li>
19
<li>3 поля с 6630 вариантами (255 умножаем на 26)</li>
19
<li>3 поля с 6630 вариантами (255 умножаем на 26)</li>
20
<li>2 поля с 5 вариантами</li>
20
<li>2 поля с 5 вариантами</li>
21
<li>2 поля с 2 вариантами</li>
21
<li>2 поля с 2 вариантами</li>
22
</ul><p>Чтобы получить количество вариантов, надо всё это перемножить. Получится септиллион разных комбинаций настроек - это 10 в 24 степени.</p>
22
</ul><p>Чтобы получить количество вариантов, надо всё это перемножить. Получится септиллион разных комбинаций настроек - это 10 в 24 степени.</p>
23
<p><strong>Помощь с багами и инцидентами.</strong>Чаще всего компания-разработчик помогает заказчику бороться с ошибками в готовой программе.</p>
23
<p><strong>Помощь с багами и инцидентами.</strong>Чаще всего компания-разработчик помогает заказчику бороться с ошибками в готовой программе.</p>
24
<p>Причем в сопровождение входит борьба и с инцидентами, и с дефектами. Разберемся подробнее, чем отличаются эти понятия:</p>
24
<p>Причем в сопровождение входит борьба и с инцидентами, и с дефектами. Разберемся подробнее, чем отличаются эти понятия:</p>
25
<ul><li>Дефект - это недостаток в продукте, который проявляется в несоответствии требованиям или в неполноте этих требований. Он возникает, если требования поменялись или изначально были сформулированы не совсем точно</li>
25
<ul><li>Дефект - это недостаток в продукте, который проявляется в несоответствии требованиям или в неполноте этих требований. Он возникает, если требования поменялись или изначально были сформулированы не совсем точно</li>
26
<li>Инцидент - это внештатная ситуация на продакшене. Он может произойти из-за сбоя, отключения технических средств инфраструктуры, ошибки в действиях пользователя или из-за дефекта, бага или сбоя в самом в программном обеспечении</li>
26
<li>Инцидент - это внештатная ситуация на продакшене. Он может произойти из-за сбоя, отключения технических средств инфраструктуры, ошибки в действиях пользователя или из-за дефекта, бага или сбоя в самом в программном обеспечении</li>
27
</ul><h2>Как происходит реагирование на инциденты</h2>
27
</ul><h2>Как происходит реагирование на инциденты</h2>
28
<p>Представим, что мы разработали программу. Уже на этапе сопровождения продакшен упал. Клиенты не могут подключиться и обрывают горячую линию, мы сами не можем зайти на сервер и найти проблему.</p>
28
<p>Представим, что мы разработали программу. Уже на этапе сопровождения продакшен упал. Клиенты не могут подключиться и обрывают горячую линию, мы сами не можем зайти на сервер и найти проблему.</p>
29
<p>Но на инцидент нужно как-то отреагировать. Мы открываем Jira или другую трекинговую систему и заносим в нее инцидент "Продакшен упал".</p>
29
<p>Но на инцидент нужно как-то отреагировать. Мы открываем Jira или другую трекинговую систему и заносим в нее инцидент "Продакшен упал".</p>
30
<p>Далее начинаем выяснять, что случилось и почему:</p>
30
<p>Далее начинаем выяснять, что случилось и почему:</p>
31
<ul><li>Представим, что сервер отключился, потому что мышь перегрызла провод в серверной. Тогда инцидент не связан с дефектом в системе</li>
31
<ul><li>Представим, что сервер отключился, потому что мышь перегрызла провод в серверной. Тогда инцидент не связан с дефектом в системе</li>
32
<li>Представим, что программное обеспечение зависло из-за выполнения какой-то операции. Тогда инцидент вызван багом в программном обеспечении, то есть в ПО проявился неизвестный нам дефект</li>
32
<li>Представим, что программное обеспечение зависло из-за выполнения какой-то операции. Тогда инцидент вызван багом в программном обеспечении, то есть в ПО проявился неизвестный нам дефект</li>
33
</ul><p>Как раз во втором случае подключаются тестировщики. Происходит срочный мозговой штурм, чтобы ответить на ключевые вопросы:</p>
33
</ul><p>Как раз во втором случае подключаются тестировщики. Происходит срочный мозговой штурм, чтобы ответить на ключевые вопросы:</p>
34
<ul><li>Что делать, чтобы исправить последствия инцидента? Это приоритетный вопрос, потому что нужно как можно быстрее восстановить работу системы</li>
34
<ul><li>Что делать, чтобы исправить последствия инцидента? Это приоритетный вопрос, потому что нужно как можно быстрее восстановить работу системы</li>
35
<li>Почему инцидент произошел? В чем основная причина?</li>
35
<li>Почему инцидент произошел? В чем основная причина?</li>
36
</ul><p>Поисками причины занимаются разработчики и тестировщики вместе. Разработчики анализируют код, а тестировщики пробуют пошагово воспроизвести баг из продакшена в тестовой системе. Это облегчает задачу для разработчиков и позволяет сузить поиски.</p>
36
</ul><p>Поисками причины занимаются разработчики и тестировщики вместе. Разработчики анализируют код, а тестировщики пробуют пошагово воспроизвести баг из продакшена в тестовой системе. Это облегчает задачу для разработчиков и позволяет сузить поиски.</p>
37
<p>Когда дефект в коде найден, команда рассчитывает сложность его исправления и тестирования. Затем она обсуждает с заказчиком, насколько приоритетно ему получить исправление конкретного бага.</p>
37
<p>Когда дефект в коде найден, команда рассчитывает сложность его исправления и тестирования. Затем она обсуждает с заказчиком, насколько приоритетно ему получить исправление конкретного бага.</p>
38
<p>Поддержка в случае инцидента - это очень сложно. Код программы может быть очень объемным, поэтому невозможно сразу же понять, что пошло не так.</p>
38
<p>Поддержка в случае инцидента - это очень сложно. Код программы может быть очень объемным, поэтому невозможно сразу же понять, что пошло не так.</p>
39
<p>Чтобы упростить задачу, разработчики оставляют себе подсказки в логах системы:</p>
39
<p>Чтобы упростить задачу, разработчики оставляют себе подсказки в логах системы:</p>
40
<ul><li>Выводят в лог ошибки и исключения интерпретатора</li>
40
<ul><li>Выводят в лог ошибки и исключения интерпретатора</li>
41
<li>Записывают внутренние проверки правильности значений - "Ожидали значение Х, а получилось Y, могла произойти ошибка"</li>
41
<li>Записывают внутренние проверки правильности значений - "Ожидали значение Х, а получилось Y, могла произойти ошибка"</li>
42
</ul><p>Такие строки в логах могут помочь разработчикам локализовать проблему в коде.</p>
42
</ul><p>Такие строки в логах могут помочь разработчикам локализовать проблему в коде.</p>
43
<p>Иногда возникает еще одна трудность: сложно заметить, если что-то пошло неправильно. Например, если у магазина есть проблемы с оплатой заказа, клиент позвонит на горячую линию и скажет о проблеме. Не во всех продуктах возможно такое быстрое реагирование, поэтому в программное обеспечение закладываются системы мониторинга:</p>
43
<p>Иногда возникает еще одна трудность: сложно заметить, если что-то пошло неправильно. Например, если у магазина есть проблемы с оплатой заказа, клиент позвонит на горячую линию и скажет о проблеме. Не во всех продуктах возможно такое быстрое реагирование, поэтому в программное обеспечение закладываются системы мониторинга:</p>
44
<ul><li>Статистика активностей</li>
44
<ul><li>Статистика активностей</li>
45
<li>Журнал действий</li>
45
<li>Журнал действий</li>
46
<li>Оповещения по уровням серьезности (alert severity levels)</li>
46
<li>Оповещения по уровням серьезности (alert severity levels)</li>
47
<li>Логи с выполняемыми действиями пользователей</li>
47
<li>Логи с выполняемыми действиями пользователей</li>
48
</ul><p>Такие системы мониторинга помогают команде проекта либо предотвратить инцидент, либо быстрее разобраться в его причинах.</p>
48
</ul><p>Такие системы мониторинга помогают команде проекта либо предотвратить инцидент, либо быстрее разобраться в его причинах.</p>