Как познакомиться с системой? (содержит карту знаний)

Kubernetes

Автор | Тан Чжилун (Кунлун), старший инженер-разработчик Alibaba

Управляемое чтение: В этой статье резюмируется, что знакомая система в основном разделена на три части: бизнес-обучение, техническое обучение и реальный бой. Каждая часть будет разбирать некоторые вопросы, на которые необходимо ответить в процессе обучения, и эти вопросы нужно постепенно дополнять по мере накопления опыта.

предисловие

Разработчики часто сталкиваются со следующими сценариями:

  • Новые новобранцы должны изучать существующую систему, как часть посадки, как узнать?
  • Вас остановили для участия в итеративной разработке или обслуживании системы (исправлении ошибок) незнакомой системы. Как быстро приступить к работе?
  • При увольнении или переводе коллеги систему нужно передать вам, как это сделать? Внутренний зев: Это горшок?

1.png

Таких сценариев много, и необходимо разобраться в общих проблемах и мерах противодействия, чтобы в будущем можно было быстро разобраться с подобными сценариями. Эта статья подводит итог знакомству с системой и в основном разделена на три части: бизнес-обучение, техническое обучение и реальный бой. Каждая часть будет разбирать некоторые вопросы, на которые необходимо ответить в процессе обучения, и эти вопросы нужно постепенно дополнять по мере накопления опыта.

бизнес-обучение

Бизнес-обучение — это изучение системы с точки зрения бизнеса.Нам нужно знать, кто является клиентами системы, кто ее использует, какую ценность она приносит и какие функции предоставляет система. Незнание бизнеса означает незнание того, что делает система. Технология предназначена для обслуживания бизнес-посадки. Только после того, как вы поймете бизнес, вы сможете узнать, как использовать технологии для лучшего обслуживания бизнеса. Поэтому бизнес-обучение является основной задачей ознакомления с системой. Основные методы обучения включают в себя общение с продуктами, операции и разработку, изучение документации по дизайну продукта, PRD, самостоятельное использование системы и некоторые распространенные диаграммы, такие как диаграммы функциональной архитектуры продукта, блок-схемы бизнес-процессов, деревья функций и диаграммы вариантов использования.

Общая проблема:

  • Какова отраслевая ситуация, в которой работает система?
  • Кто является целевым пользователем системы? Например, используется ли он для принятия решений наверху компании? Для операций или обслуживания клиентов? Или для интернет-пользователей?
  • Сколько людей в среднем им пользуются? Сколько людей используют его в часы пик?
  • Какую ценность для бизнеса имеет система? Какие показатели могут измерить ценность системы для бизнеса?
  • Какие функциональные модули есть в системе?
  • Какие концепции предметной области есть в системе? разобраться в предметной модели системы;
  • Каковы ключевые бизнес-процессы системы? Каковы основные бизнес-процессы?
  • Каковы нефункциональные требования к системе? Такие как производительность, качество, масштабируемость, безопасность и т.д.;
  • Будущее системы планирования развития, как?

техническое обучение

Техническое обучение в основном изучает архитектуру системы, способы ее реализации, а также эксплуатацию и обслуживание системы. Существует методология с пятью представлениями для описания архитектуры системы.

Пять взглядов:

  • логическая архитектура
  • Архитектура разработки
  • запустить архитектуру
  • физическая архитектура
  • схема данных

логическая архитектура

Логическая архитектура фокусируется на функциональных требованиях, и система должна предоставлять пользователям какие услуги, и основное внимание уделяется разделению поведения или обязанностей. Обычно используемые графические выражения, статические карты включают диаграммы пакетов, диаграммы классов, карты объектов; динамические карты включают диаграммы порядка, диаграммы сотрудничества, диаграммы состояний и активные диаграммы. Основной задачей проектирования логической архитектуры является разделение модулей, определение интерфейса, уточнение модели предметной области.

Общая проблема:

  • Какие подсистемы или модули существуют? Какая связь между системами?
  • Что такое внешние восходящие и нисходящие интерфейсы? Кто является контактным лицом?
  • Как реализация ключевых бизнес-процессов? Высказывайте его с диаграммой классов, диаграммой последовательности и тому подобным.

Архитектура разработки

Вне среды разработки, ориентированной на исходный код системы, сторонний SDK, используемый фреймворком, инструментарий промежуточного программного обеспечения.

Общая проблема:

  • Где код?
  • Как разделены пакеты? Как наслаивать? Например, mvc, controller-service-dao;
  • Какие рамки используются, такие как SSH, Dubbo;
  • Какие наборы используются? Такие как Apache Commons, Guava;
  • Какое промежуточное ПО используется? Такие как metaq, tair, schedulerX, Diamond;
  • На какие платформы вы полагаетесь? Например, платформа разрешений, механизм обработки и т. д.

запустить архитектуру

Архитектура среды выполнения фокусируется на атрибутах качества среды выполнения, уделяя особое внимание таким проблемам, как системный параллелизм, синхронизация и связь, которые неизбежно включают в себя такие концепции среды выполнения, как процессы, потоки и объекты, а также связанный с ними параллелизм, синхронизация и связь.

Общая проблема:

  • Сколько запросов в секунду может поддерживать система? Каков пиковый qps?
  • Как взаимодействовать с вышестоящей системой? ПКП? HTTP? Синхронизация или асинхронность?

физическая архитектура

При проектировании физической архитектуры основное внимание уделяется требованиям к установке и развертыванию, а именно тому, как целевая программа и зависимые от нее библиотеки времени выполнения и системное программное обеспечение в конечном итоге устанавливаются или развертываются на физических машинах, а также тому, как развертывать машины и сети для взаимодействия с надежностью. и масштабируемость программной системы, требования к безопасности, постоянной доступности, производительности и безопасности.

Общая проблема:

  • Как система публикуется и развертывается? Какие существуют среды развертывания?
  • Сколько машин в системе?
  • Как развертывается система? Обратите внимание на уровень доступа и методы развертывания, такие как кластерное развертывание, распределенное развертывание и т. д.
  • Есть ли контейнеризация?
  • Есть ли многокомнатное развертывание?

схема данных

Проект архитектуры данных фокусируется на требованиях к данным, уделяя особое внимание схеме хранения постоянных данных, включая не только форматы хранения данных сущностей и отношений сущностей, но и такие стратегии, как передача данных, репликация данных и синхронизация данных.

Общая проблема:

  • Где хранятся данные? Какая база данных используется, например, oracle, mysql;
  • Разобрать диаграммы E-R;
  • Какой объем данных? Будут ли участники библиотечной подтаблицы?
  • Какие библиотеки nosql используются?
  • Каковы задачи синхронизации данных?
  • Как используются структуры больших данных?

Эксплуатация и техническое обслуживание системы

Эксплуатация и обслуживание системы сосредоточены на том, когда возникают проблемы и как их решить.

Общая проблема:

  • Когда легко ошибиться? Например, электронная коммерция Double 11 оказывает сильное давление на систему, и в это время могут возникнуть проблемы;
  • Отслеживаются ли ключевые функции? Вам необходимо увидеть, какие элементы сигнализации настроены в системе и какие аспекты отслеживаются;
  • Как решить проблему? Где журналы? Есть ли полная трассировка ссылок? Есть ли какие-то аварийные операции, такие как конфигурация коммутатора, понижение версии, конфигурация ограничения тока;
  • Какие ямы в системе? Найдите одноклассников по развитию, чтобы просмотреть исторические выпуски, чтобы не наступить на яму. Через случай, обобщенный коллегами, или с ответственным продуктом, работой, технологией и пониманием. В системе всегда будут какие-то ямы, и эти ямы нужно заполнить. После многих итераций исторического кода это всегда будет приводить к высокой сложности (множество ответвлений, вложенности, циклов), лазейкам в дизайне, угрозам производительности и т. д., и его сложно поддерживать, что требует от нас рефакторинга. Помните поговорку: чем больше дыра, тем больше способности;
  • Каковы общие проблемы эксплуатации и обратной связи с клиентами?

упражняться

После знакомства с бизнесом и технологиями системы необходимо попрактиковаться в бою и еще больше углубить знакомство с системой в реальном бою. На практике вы можете программировать, отлаживать, тестировать и запускать программу самостоятельно, создавая требования, исправляя ошибки и рефакторинг.

Суммировать

Существующие системы обычно проходят процесс построения от 0 до N. Знакомство с системой на самом деле является обратным процессом вывода, а также процессом изучения архитектуры и чтения исходного кода. В процессе обучения лучше всего доводить до размышлений, например, почему так устроено? Зачем использовать это промежуточное ПО? Есть ли лучший способ закодировать его? Какие области можно оптимизировать и т. д., чтобы добиться глубоко знакомого процесса.

Приложение: сводная схема

2.png

Скоро откроется саммит Cloud Native Practice

3.png

"Облачная нативная платформа Alibaba关注微服务、Serverless、容器、Service Mesh 等技术领域、聚焦云原生流行技术趋势、云原生大规模的落地实践,做最懂云原生开发者的技术圈。 "