Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты; если ученый хочет заявить о своей праведности, он должен сначала прочитать свои книги. Бэкэнд-разработка, как жемчужина в области интернет-технологий, всегда была вершиной, к которой стремились разработчики. Эта статья начнется с технических терминов, связанных с серверной разработкой, и даст каждому четкое представление о внутренней разработке, основанной на разработке системы, проектировании архитектуры, сетевых коммуникациях и других аспектах, а объяснение будет всеобъемлющим и простым для понимания. .
1.1 Высокая связность/низкая связанность
Высокая связность означает, что программный модуль состоит из сильно связанного кода и отвечает только за одну задачу, что часто называют принципом единой ответственности. Сплоченность модуля отражает тесноту внутренних связей внутри модуля.
Чем теснее связь между модулями, тем сильнее связь и хуже независимость модуля. Уровень связи между модулями зависит от сложности интерфейса между модулями, метода вызова и передаваемой информации. В целостной системе модули должны существовать как можно более независимо. Как правило, чем выше степень связанности каждого модуля в структуре программы, тем ниже степень связи между модулями.
1.2 Чрезмерный дизайн
Чрезмерное проектирование означает слишком ориентированное на будущее проектирование или чрезмерное усложнение относительно простых вещей, чрезмерное стремление к модульности, масштабируемости, шаблонам проектирования и т. д., добавляющее ненужную сложность системе.
1.3 Преждевременная оптимизация
Преждевременность не означает, что процесс разработки находится на ранней стадии, но еще до того, как станет ясно, как требования изменятся в будущем. Ваша оптимизация может привести не только к тому, что вы не сможете хорошо реализовать новые требования, но и ваше предположение об ожиданиях от оптимизации может оказаться неверным, в результате чего вы фактически ничего не получите, кроме усложнения кода.
Правильный метод — сначала качественно реализовать ваши требования, написать достаточное количество тестовых примеров, а затем профилировать, чтобы найти узкие места в производительности, и только потом заниматься оптимизацией.
1.4 Рефакторинг
Рефакторинг заключается в повышении качества и производительности программного обеспечения путем корректировки программного кода, повышения разумности шаблона проектирования и архитектуры программы, а также улучшения масштабируемости и удобства сопровождения программного обеспечения.
1.5 Эффект разбитого окна
Теория разбитых окон, также известная как теория разбитых окон, — это теория в криминологии. Эта теория полагает, что если допустить существование нежелательных явлений в окружающей среде, у людей возникнет искушение имитировать их или даже ухудшить. Возьмем здание с несколькими разбитыми окнами. Если эти окна не отремонтировать, вандалы могут разрушить еще больше окон. В конце концов они могут даже ворваться в здание и, если его найдут необитаемыми, возможно, поселиться там или поджечь его.
Применительно к разработке программного обеспечения нельзя допускать появления скрытых опасностей в системном коде или архитектуре, иначе скрытые опасности со временем будут становиться все более и более серьезными. Напротив, качественная система заставит людей невольно писать качественный код.
1.6 Принцип взаимного недоверия
Это означает, что во всем звене, восходящем и нисходящем по ходу работы программы, не может быть гарантирована абсолютная надежность каждой точки. Сбой или непредсказуемое поведение могут произойти в любое время в любой точке, включая машинную сеть, саму службу, зависимую среду и т. д. входные данные и запросы и т. д., так что будьте везде начеку.
1.7 Настойчивость
Постоянство — это механизм преобразования данных программы между временным и постоянным состояниями. С точки зрения непрофессионала, временные данные (например, данные в памяти, которые не могут быть сохранены постоянно) сохраняются в постоянные данные (например, в базе данных или на локальном диске, которые могут храниться в течение длительного времени).
1.8 Критический раздел
Критический раздел используется для представления общедоступного ресурса или общих данных, которые могут использоваться несколькими потоками, но только один поток может использовать его одновременно. Как только ресурс критического раздела занят, другие потоки должны использовать этот ресурс, если захотят. чтобы использовать его. Придется подождать.
1.9 Блокировка/неблокировка
Блокировка и неблокировка обычно описывают взаимодействие между несколькими потоками. Например, если поток занимает ресурс критического раздела, то все остальные потоки, которым нужен этот ресурс, должны ожидать в этом критическом разделе. Ожидание приведет к зависанию потока. Эта ситуация блокирует. В это время, если поток, занимающий ресурс, не желает его освобождать, то все остальные потоки, заблокированные в этом критическом разделе, не смогут работать. Неблокировка позволяет нескольким потокам одновременно войти в критическую секцию.
1.10 Синхронный/Асинхронный
Обычно синхронные и асинхронные относятся к аспекту вызова функции/метода.
Синхронизация означает, что при вызове функции вызов не возвращается до тех пор, пока не будет получен результат. Асинхронный вызов вернется мгновенно, но мгновенный возврат асинхронного вызова не означает, что ваша задача завершена. Он запустит поток в фоновом режиме для продолжения задачи и уведомит вызывающую сторону через обратный вызов или другие методы после выполнения задачи. завершенный.
1.11 Параллелизм/параллелизм
2.1 Высокий параллелизм
В связи с появлением распределенных систем под высоким параллелизмом (High Concurrency) обычно понимают обеспечение того, что система может обрабатывать множество запросов параллельно одновременно посредством проектирования. С точки зрения непрофессионала, высокий уровень параллелизма означает, что в один и тот же момент времени многие пользователи одновременно получают доступ к одному и тому же интерфейсу API или URL-адресу. Это часто происходит в бизнес-сценариях с большим количеством активных пользователей и высокой концентрацией пользователей.
2.2 Высокая доступность
Высокая доступность HA (High Availability) — один из факторов, который необходимо учитывать при проектировании архитектуры распределенной системы. Обычно это означает, что система специально разработана для сокращения времени простоя при сохранении высокой степени доступности ее сервисов.
2.3 Разделение чтения и письма
Чтобы обеспечить стабильность продуктов баз данных, многие базы данных имеют функции горячего резервного копирования на двух машинах. Другими словами, первый сервер базы данных является рабочим сервером, который предоставляет внешние услуги добавления, удаления и модификации, второй сервер базы данных в основном выполняет операции чтения;
2.4 Холодный/горячий резерв
2.5 Живите больше в разных местах
Мультиактивность в разных местах обычно подразумевает создание независимых центров обработки данных в разных городах. «Живое» сравнивают с холодным резервным копированием. Холодное резервное копирование предназначено для резервного копирования всего объема данных и не поддерживает бизнес-потребности в обычное время. будет использоваться только в случае сбоя в компьютерном зале. Переключение на резервный компьютерный зал и активный режим работы означает, что эти компьютерные залы также должны обрабатывать трафик и обеспечивать поддержку бизнеса в повседневной деятельности.
2.6 Баланс нагрузки
Балансировка нагрузки — это служба балансировки нагрузки, которая распределяет трафик на несколько серверов. Он может автоматически распределять внешние сервисные возможности приложения между несколькими экземплярами, улучшая доступность системы приложений за счет устранения единых точек отказа, позволяя достичь более высокого уровня отказоустойчивости приложения, тем самым беспрепятственно обеспечивая нагрузку, необходимую для распределения приложения. Сбалансированная мощность для предоставления вам эффективных, стабильных и безопасных услуг.
2.7 Разделение динамического и статического
Статическое и динамическое разделение относится к методу архитектурного проектирования в архитектуре веб-сервера, позволяющему отделять статические страницы от динамических страниц или интерфейсов статического контента и интерфейсов динамического контента для доступа к разным системам, тем самым улучшая производительность доступа и удобство обслуживания всей службы.
2.8 Кластер
Одновременная пропускная способность одного сервера всегда ограничена. Когда вычислительная мощность одного сервера достигает узкого места, несколько серверов объединяются для предоставления услуг. Эта комбинация называется кластером, и каждый сервер в кластере называется A. «узлом» в кластере, каждый узел может предоставлять одну и ту же услугу, тем самым экспоненциально улучшая возможности параллельной обработки всей системы.
2.9 Распределенный
Распределенная система состоит из множества независимых подсистем в соответствии с бизнес-функциями. Каждая подсистема называется «службой». Распределенная система сортирует и распределяет запросы по разным подсистемам, позволяя различным пользователям служб обрабатывать разные запросы. В распределенной системе подсистемы работают независимо и соединяются через сетевую связь для обеспечения совместимости данных и комплексных услуг.
2.10 Теория CAP
Теория CAP исходит из того факта, что в распределенной системе согласованность, доступность и устойчивость к разделению не могут быть установлены одновременно.
Проще говоря, в распределенной системе может поддерживаться до двух из вышеперечисленных атрибутов. Но очевидно, что, поскольку он распределен, мы обязаны его разделить. Поскольку он разделен, мы не можем на 100% избежать ошибок разделения. Поэтому мы можем сделать выбор только между постоянством и доступностью.
В распределенных системах мы часто стремимся к доступности, которая более важна, чем согласованность. Итак, вот еще одна теория о том, как добиться высокой доступности, — теория BASE, которая еще больше расширяет теорию CAP.
2.11 БАЗОВАЯ теория
Теория BASE утверждает:
Теория BASE — это результат компромисса между согласованностью и доступностью в CAP. Основная идея теории такова: мы не можем добиться строгой согласованности, но каждое приложение может применять соответствующие методы, основанные на его собственных бизнес-характеристиках, для создания системы. добиться окончательной согласованности.
2.12 Горизонтальное/вертикальное расширение
Есть два способа вертикального расширения:
2.13 Параллельное расширение
Аналогично горизонтальному масштабированию. Все узлы на сервере кластера являются параллельными одноранговыми узлами. При необходимости расширения можно добавить дополнительные узлы для улучшения возможностей обслуживания кластера. Вообще говоря, критические пути на сервере (такие как вход в систему, оплата, основная бизнес-логика и т. д.) на сервере должны поддерживать динамическое параллельное расширение во время выполнения.
2.14 Гибкое расширение
Это относится к динамическому онлайн-расширению развернутого кластера. Эластичная система расширения может автоматически добавлять больше узлов (включая узлы хранения, вычислительные узлы и сетевые узлы) в соответствии с фактической бизнес-средой и определенными стратегиями для увеличения емкости системы, повышения производительности системы или повышения надежности системы или достижения этих трех целей в кратчайшие сроки. в то же время.
2.15 Синхронизация состояния/синхронизация кадров
Синхронизация статуса:Синхронизация состояний относится к Служить Процессор отвечает за расчет всехиз Логика игры,И транслировать эти результаты вычислений,Клиент несет ответственность только за отправку операций игрока.,А также производительность, полученная по результатам игры.
Особенности: синхронизация состояний очень безопасна, обновление логики удобно, отключение и повторное подключение происходят быстро, но эффективность разработки низкая с увеличением сложности игры, и серверу приходится выдерживать большую нагрузку.
Синхронизация кадров:Служить Клиент только пересылает сообщения,Никакая логическая обработка не выполняется.,Количество кадров в секунду одинаково для каждого клиента,Одни и те же входные данные обрабатываются в каждом кадре.
Особенности: Синхронизация кадров должна гарантировать, что система имеет одинаковый выход на одном и том же входе. Синхронизация кадров имеет высокую эффективность разработки, низкое потребление трафика и стабильность, а также оказывает очень небольшую нагрузку на сервер. Однако требования к сети высоки, время отключения и повторного подключения велико, а вычислительная нагрузка клиента высока.
3.1 Пул соединений
Заранее создайте пул буферов соединений и предоставьте набор стратегий использования, распределения и управления соединениями, чтобы соединения в пуле соединений можно было повторно использовать эффективно и безопасно, избегая накладных расходов, связанных с частым установлением и закрытием соединений.
3.2 Отключение и повторное подключение
Из-за колебаний сети пользователи периодически отключаются от сервера. После восстановления сети сервер пытается подключить пользователя к состоянию и данным на момент последнего отключения.
3.3 Сохранение сеанса
Сохранение сеанса относится к механизму балансировщика нагрузки, который может определять корреляцию между процессом взаимодействия между клиентом и сервером. При выполнении балансировки нагрузки он также гарантирует, что ряд связанных запросов доступа будет выделен на один компьютер. Говоря человеческим языком: несколько запросов, инициированных во время сеанса, будут приходиться на одну и ту же машину.
3.4 Длинное соединение/короткое соединение
Обычно относится к длинному соединению и короткому соединению TCP. Длинное соединение означает, что после установки TCP-соединения соединение поддерживается. Как правило, в середине выполняются множественные передачи бизнес-данных, и соединение обычно неактивно. отключен. Короткие соединения обычно подразумевают установление соединения, выполнение транзакции (например, HTTP-запроса) и последующее закрытие соединения.
3.5 Управление потоком/контроль перегрузки
3.6 Эффект грохота стада
Эффект громового стада также называют эффектом громовой группы, но как он называется? Короче говоря, феномен громового стада — это когда несколько процессов (несколько потоков) блокируются и ожидают одного и того же события одновременно (состояние сна). Если произойдет ожидающее событие, оно разбудит все ожидающие процессы ( или поток), но в конечном итоге только один процесс (поток) может получить «управление» в это время и обработать событие, в то время как другие процессы (потоки) не могут получить «управление» и могут только повторно войти в состояние сна. явление и растрата производительности называется громовым стадом.
3.7 NAT
NAT (преобразование сетевых адресов) заменяет информацию об адресе в заголовке IP-пакета. NAT обычно развертывается на выходе из сети организации, чтобы обеспечить доступность общедоступной сети и подключение протоколов верхнего уровня путем замены IP-адреса внутренней сети выходным IP-адресом.
4.1 Время простоя
Простоем обычно называют сбой в работе хоста компьютера из-за неожиданного сбоя. Во-вторых, некоторые серверы, например взаимоблокировки базы данных, также можно назвать простоями. Некоторые службы на некоторых серверах, так сказать, зависают.
4.2 coredump
При возникновении ошибки программы и нештатном прерывании ОС сохраняет текущий статус работы программы в файл coredunmp. Обычно файлы дампа памяти содержат память, состояние регистра, указатель стека, информацию об управлении памятью и т. д. во время работы программы.
4.3 Проникновение кэша/взлом/лавина
4.4 500/501/502/503/504/505
За исключением ошибки 500, которая может быть ошибкой языка программирования, остальные ошибки, вероятно, можно понимать как проблемы с сервером или его конфигурацией.
4.5 Переполнение/утечка памяти
4.6 Ручка утечки
Утечка дескриптора происходит, когда процессу не удается освободить дескриптор открытого файла после вызова системного файла. Общее явление после утечки дескриптора заключается в том, что компьютер замедляется, ЦП перегружается, а загрузка ЦП cgi или сервера, на котором происходит утечка дескриптора, увеличивается.
4.7 Тупик
Взаимная блокировка — это явление блокировки, вызванное тем, что два или более потоков конкурируют за ресурсы или взаимодействуют друг с другом во время выполнения. Без внешней силы все они блокируются и не могут продолжить работу. Говорят, что система находится в состоянии тупика. имеет тупик.
4.8 Мягкое прерывание/жесткое прерывание
Чтобы реализовать эту возможность, Linux использует жесткие прерывания для обработки задач, которые могут быть выполнены за короткое время при возникновении прерывания, а задачи, требующие длительного времени для обработки событий, завершаются после прерывания, то есть мягкие прерывания (softirq ).
4.9 Берр
В краткий момент показатели производительности сервера (такие как трафик, дисковые операции ввода-вывода, загрузка ЦП и т. д.) намного превышают период до и после этого момента. Появление глюков означает, что ресурсы сервера используются неравномерно и недостаточно, что легко может привести к другим, более серьезным проблемам.
4.10 Повторная атака
Злоумышленник отправляет пакет, полученный хостом назначения, чтобы обмануть систему. Он в основном используется для процесса аутентификации личности и нарушает правильность аутентификации. Это тип атаки, которая постоянно злонамеренно или мошеннически повторяет действительную передачу данных. Атака воспроизведения может быть выполнена инициатором или злоумышленником, который перехватывает и повторно передает данные. Злоумышленники используют мониторинг сети или другие методы для кражи учетных данных аутентификации, а затем повторно отправляют их на сервер аутентификации.
4.11 Сетевые острова
Сетевой остров — это ситуация в кластерной среде, когда некоторые машины теряют сетевое соединение со всем кластером, разделяются на небольшой кластер и возникает несогласованность данных.
4.12 Несовпадение данных
Для кластерных систем кэши, как правило, распределены, то есть разные узлы отвечают за определенный диапазон кэшируемых данных. Мы недостаточно распределяем кэшированные данные, в результате чего большой объем кэшированных данных концентрируется на одном или нескольких сервисных узлах, что называется перекосом данных. Вообще говоря, асимметрия данных вызвана плохой реализацией балансировки нагрузки.
4.13 Разделенный мозг
Разделение мозга означает разделение системы, вызванное недоступностью сети между некоторыми узлами в кластерной системе. Небольшие кластеры с разными разделениями будут предоставлять услуги в соответствии с их соответствующими состояниями. Исходный кластер будет одновременно давать противоречивые ответы, что приведет к взаимодействию узлов. друг с другом Существует конкуренция за ресурсы, системный хаос и повреждение данных.
5.1 Мониторинг услуг
Основная цель мониторинга обслуживания — точно и быстро обнаружить, когда возникает или может возникнуть проблема с обслуживанием, чтобы уменьшить масштаб воздействия. Вообще существует множество методов мониторинга сервисов, которые можно разделить на уровни:
5.2 Полноканальный мониторинг
6.1 Микросервисы
Микросервисная архитектура — это архитектурный шаблон, который предлагает разделить одно приложение на набор небольших сервисов. Сервисы координируются и взаимодействуют друг с другом, чтобы обеспечить максимальную ценность для пользователей. Каждая служба работает в своем собственном независимом процессе, и службы взаимодействуют друг с другом с использованием облегченного механизма связи (обычно Restful API на основе http). Каждая служба построена вокруг конкретного бизнеса и может быть независимо развернута в производственной среде, подобно производственной). окружающая среда и т. д.
6.2 Обнаружение службы
Обнаружение служб подразумевает использование центра регистрации для записи информации обо всех службах в распределенной системе, чтобы другие службы могли быстро найти эти зарегистрированные службы. Обнаружение сервисов — это основной модуль, который поддерживает крупномасштабную архитектуру SOA и микросервисов, и он должен иметь максимально высокий уровень доступности.
6.3 Сокращение пикового трафика
Если вы посмотрите кривую мониторинга запросов системы лотереи или мгновенной продажи, вы обнаружите, что в системе этого типа будет пик в то время, когда событие открыто. Когда событие не открыто, объем запросов системы и загрузка машины. в целом относительно стабильны. В целях экономии машинных ресурсов мы не всегда можем обеспечить максимальную мощность ресурсов для поддержки краткосрочных пиковых запросов. Следовательно, необходимо использовать некоторые технические средства, чтобы ослабить мгновенный пик запросов и сохранить управляемость пропускной способности системы при пиковых запросах. Отсечение пиков также можно использовать для устранения сбоев и более сбалансированного и полного использования ресурсов сервера. Общие стратегии сокращения пиков включают очереди, ограничение частоты, иерархическую фильтрацию, многоуровневое кэширование и т. д.
Совместим с версией 6.4.
В процессе обновления версии необходимо учитывать, может ли новая структура данных понимать и анализировать старые данные после обновления, а также может ли недавно измененный протокол понимать старый протокол и выполнять ожидаемую и соответствующую обработку. Это требует совместимости версий в процессе проектирования сервиса.
6.5 Защита от перегрузки
Перегрузка означает, что текущая нагрузка превысила максимальную вычислительную мощность системы. Возникновение перегрузки приведет к тому, что некоторые службы станут недоступными. При неправильном обращении это, скорее всего, приведет к полной недоступности службы или даже лавине. Защита от перегрузки — это мера, принимаемая против этой нештатной ситуации, чтобы предотвратить полную недоступность услуги.
6.6 Сервисный автоматический выключатель
Функция сервисного предохранителя аналогична нашему бытовому предохранителю. Когда услуга становится недоступной или время ответа истекает, чтобы предотвратить лавинообразную работу всей системы, вызовы службы временно прекращаются.
6.7 Понижение уровня обслуживания
Понижение уровня сервиса — это когда резко возрастает нагрузка на сервер, некоторые сервисы и страницы стратегически понижаются в зависимости от текущих бизнес-условий и трафика, чтобы высвободить ресурсы сервера и обеспечить нормальную работу основных задач. Деградация часто задает разные уровни и выполняет разную обработку при возникновении разных уровней исключений.
Короче говоря, переход на более раннюю версию сервиса требует разных стратегий перехода на более раннюю версию, основанных на различных потребностях бизнеса. Основная цель – хоть сервис и испорчен, но это лучше, чем ничего.
6.8 Автоматический выключатель или понижение версии
6.9 Ограничение рабочего тока
Ограничение тока можно рассматривать как тип ухудшения качества обслуживания. Ограничение тока предназначено для ограничения входного и выходного трафика системы для достижения цели защиты системы. Вообще говоря, пропускную способность системы можно измерить. Чтобы обеспечить стабильную работу системы, после достижения порога, который необходимо ограничить, необходимо ограничить трафик и принять некоторые меры для достижения этой цели. об ограничении трафика. Например: отложенная обработка, отказ от обработки или частичный отказ от обработки и т. д.
6.10 Маскирование неисправностей
Удалите неисправную машину из кластера, чтобы гарантировать, что новые запросы не передаются на неисправную машину.
7.1 Тестирование черного/белого ящика
Тестирование черного ящика не учитывает внутреннюю структуру и логическую структуру программы и в основном используется для проверки соответствия функций системы техническим требованиям. Обычно существует входное значение, входное значение и ожидаемое значение для сравнения.
Тестирование белого ящика в основном используется на этапе модульного тестирования, в основном для тестирования на уровне кода. Для внутренней логической структуры программы методы тестирования включают в себя: покрытие операторов, покрытие оценок, покрытие условий, покрытие путей и покрытие комбинаций условий. .
7.2 Модульное/интеграционное/системное/приемочное тестирование
Тестирование программного обеспечения обычно делится на четыре этапа: модульное тестирование, интеграционное тестирование, системное тестирование и приемочное тестирование.
7.3 Регрессионное тестирование
После обнаружения и исправления дефектов или добавления в программное обеспечение новых функций проведите повторное тестирование. Используется для проверки того, были ли исправлены обнаруженные дефекты и не вызвали ли модификации новые проблемы.
7.4 Испытание на дым
Этот термин пришел из аппаратной промышленности. После внесения изменений или ремонта аппаратного обеспечения или аппаратных компонентов подайте питание непосредственно на устройство. Если дыма нет, компонент выдерживает испытание. В программном обеспечении термин «дымовое тестирование» описывает процесс проверки изменений кода перед их внедрением в дерево исходного кода продукта.
Дымовое тестирование — это стратегия быстрой проверки базовых функций пакетов версий программного обеспечения в процессе разработки программного обеспечения. Это средство подтверждения и проверки основных функций программного обеспечения, а не углубленное тестирование пакета версии программного обеспечения.
Например: для дымового теста системы входа в систему нам нужно только проверить правильное имя пользователя и пароль, чтобы проверить основную функцию входа в систему. Что касается полей ввода, специальных символов и т. д., их можно выполнить после дыма. тест.
7.5 Тестирование производительности
При тестировании производительности используются инструменты автоматического тестирования для моделирования различных условий нормальной, пиковой и аномальной нагрузки для проверки различных показателей производительности системы. И нагрузочное тестирование, и стресс-тестирование являются тестами производительности, и их можно комбинировать.
7.6 Сравнительное тестирование
Бенчмарк — это также метод тестирования производительности, который используется для измерения максимальной фактической рабочей производительности аппаратного обеспечения машины и эффекта повышения производительности от оптимизации программного обеспечения. Его также можно использовать для выявления проблем с эффективностью процессора или памяти в определенном фрагменте кода. Многие разработчики будут использовать тесты для тестирования различных режимов параллелизма или использовать тесты для настройки количества рабочих пулов для обеспечения максимальной пропускной способности системы.
7.7 A/B-тестирование
A/B-тестирование заключается в сравнении двух или более групп случайно выбранных образцов с одинаковым количеством. Если экспериментальные результаты экспериментальной группы и группы сравнения статистически значимы по целевым показателям, это может означать, что особенности экспериментальной группы могут привести к результаты, которые вы хотите, помогая вам проверить гипотезы или принять решения по продукту.
7.8 Тестирование покрытия кода
Покрытие кода — это измерение при тестировании программного обеспечения, которое описывает долю и объем исходного кода в тестируемой программе. Полученная пропорция называется покрытием кода. При модульном тестировании покрытие кода часто используется в качестве индикатора качества тестирования. Покрытие кода даже используется для оценки выполнения тестовых задач. Например, покрытие кода должно достигать 80% или 90%. В результате тестировщики приложили немало усилий для разработки кода покрытия случаев.
8.1 DEV/PRO/FAT/UAT
8.2 Выпуск в оттенках серого
Выпуск в оттенках серого означает, что в процессе обновления версии некоторые пользователи обновляются до функций продукта посредством управления разделами, управления белыми списками и т. д., в то время как остальные пользователи остаются без изменений. Когда пользователи, которые обновляют функции продукта по истечении определенного периода времени, не имеют обратной связи. , затем постепенно расширяйте область применения и, в конечном итоге, открывайте новые функции версии для всех пользователей. Выпуск в оттенках серого может обеспечить стабильность всей системы. Проблемы можно обнаружить и изменить в исходных оттенках серого, чтобы обеспечить их влияние.
8.3 Откат
Это относится к восстановлению программы или данных до последнего правильного состояния (или предыдущей стабильной версии) при возникновении ошибки программы или обработки данных.
Предварительный просмотр прямой трансляции на этой неделе:
Как решить проблему групповой тревожности среди программистов?
-End-
Оригинальный автор | Лу Чжо