Руководство по ключевым слоям, компонентам и модулям: на примере приложения с разделенным клонированием

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

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

Модели данных и слой сущностей

  • На этом уровне определите сущности и модели для пользователя, группы, расходов, платежей, объектов БД и т. д.
  • Представление данных, описывающее, как данные организованы и структурированы, а также как они связаны друг с другом. Он обеспечивает схему хранения данных и доступа к ним.
  • Этот уровень служит основой для управления данными, позволяя легко организовывать, анализировать и запрашивать данные.

Уровень базы данных

Уровень базы данных относится к физической реализации модели данных, где данные фактически хранятся в системе управления базами данных (СУБД). Он обеспечивает механизм постоянного хранения и извлечения данных и отвечает за обеспечение согласованности и целостности данных.

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

Слой обработчика

  • Уровень обработчика, также известный как уровень управления, представляет собой компонент архитектуры программного обеспечения, который отвечает за обработку запросов пользователей и направление их в соответствующую службу или бизнес-логику. Он действует как мост между пользовательским интерфейсом и сервисным уровнем.
  • Уровень обработчика помогает поддерживать разделение задач, отделяя пользовательский интерфейс от базовой бизнес-логики. Это упрощает внесение изменений в пользовательский интерфейс, не затрагивая остальную часть приложения, и наоборот.
  • Уровень обработчика извлекает и возвращает запросы и ответы HTTP/REST из пользовательского интерфейса и отвечает за анализ запросов и ответов.

Сервисный и бизнес-уровень

Он обеспечивает бизнес-логику, реализующую правила и процессы, определяющие поведение приложения.

  • Сервисный или бизнес-уровень — это программный компонент, выступающий в роли посредника между уровнем обработчика и уровнем базы данных.
  • Уровень службы выполняет такие задачи, как проверка данных, вычисление и инкапсуляция сложных бизнес-правил. Он действует как уровень абстракции между уровнем представления и уровнем базы данных, позволяя вносить изменения на одном уровне, не затрагивая другие.
  • Реализуйте логику расчета для разделения расходов между участниками группы.
  • Внедрите логику отслеживания платежей для записи и сверки платежей между участниками.

Уровень безопасности и аутентификации

  • Этот уровень отвечает за реализацию мер безопасности, таких как аутентификация и авторизация, чтобы помочь защитить приложение и его данные.
  • Он служит промежуточным программным обеспечением, через которое должен проходить каждый запрос, обеспечивая дополнительный уровень обработки.
  • Дополнительные компоненты, такие как ограничение скорости, также могут быть реализованы на этом уровне.

Уровень шлюза

  • Этот уровень отвечает за интеграцию приложения с внешними системами, такими как сторонние API, очереди сообщений и другие службы.
  • Если вы реализуете дополнительную функцию, такую ​​​​как расчет платежей в приложении, и логика интеграции со сторонней организацией должна относиться к этому уровню.
  • Если приложение содержит рекламные объявления, на этом уровне должна выполняться интеграция с рекламной платформой, такой как AdSense.

Дополнительные модули

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

Ошибки. Этот модуль содержит все типы ошибок и сообщения.

Тестирование. Этот модуль содержит модульные и интеграционные тесты. Также допустимо писать модульные тесты вместе с файлом реализации.

Сопоставители: этот модуль содержит логику сопоставления и преобразования между различными объектами.

Конфигурации. Этот модуль содержит все конфигурации, такие как адреса баз данных, конечные точки API и сторонние адреса.

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

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

Я надеюсь, что эта статья была полезной и информативной.

В своих аккаунтах Twitter и Instagram я часто делюсь своим опытом программирования и разработки.

Спасибо за прочтение :)