Руководство по ключевым слоям, компонентам и модулям: на примере приложения с разделенным клонированием
В этой статье представлено всестороннее понимание организации кода и идентификации компонентов при создании приложения, подобного Splitwise. Он дает представление о ключевых слоях, компонентах и модулях, необходимых для масштабируемой и надежной архитектуры программного обеспечения.
К концу этой статьи вы узнаете, как писать профессиональный код для сложных приложений и упрощать управление ими и работу в команде.
Модели данных и слой сущностей
- На этом уровне определите сущности и модели для пользователя, группы, расходов, платежей, объектов БД и т. д.
- Представление данных, описывающее, как данные организованы и структурированы, а также как они связаны друг с другом. Он обеспечивает схему хранения данных и доступа к ним.
- Этот уровень служит основой для управления данными, позволяя легко организовывать, анализировать и запрашивать данные.
Уровень базы данных
Уровень базы данных относится к физической реализации модели данных, где данные фактически хранятся в системе управления базами данных (СУБД). Он обеспечивает механизм постоянного хранения и извлечения данных и отвечает за обеспечение согласованности и целостности данных.
- Уровень базы данных действует как посредник между бизнес-логикой и базовой базой данных.
- Он отвечает за извлечение данных и преобразование их в бизнес-объекты.
- Уровень базы данных отвечает за реализацию логики добавления и извлечения информации о расходах, платежах, управлении пользователями/группами в базу данных и из нее. Это включает в себя хранение и поиск данных, связанных с расходами, платежами, пользователями и группами.
Слой обработчика
- Уровень обработчика, также известный как уровень управления, представляет собой компонент архитектуры программного обеспечения, который отвечает за обработку запросов пользователей и направление их в соответствующую службу или бизнес-логику. Он действует как мост между пользовательским интерфейсом и сервисным уровнем.
- Уровень обработчика помогает поддерживать разделение задач, отделяя пользовательский интерфейс от базовой бизнес-логики. Это упрощает внесение изменений в пользовательский интерфейс, не затрагивая остальную часть приложения, и наоборот.
- Уровень обработчика извлекает и возвращает запросы и ответы HTTP/REST из пользовательского интерфейса и отвечает за анализ запросов и ответов.
Сервисный и бизнес-уровень
Он обеспечивает бизнес-логику, реализующую правила и процессы, определяющие поведение приложения.
- Сервисный или бизнес-уровень — это программный компонент, выступающий в роли посредника между уровнем обработчика и уровнем базы данных.
- Уровень службы выполняет такие задачи, как проверка данных, вычисление и инкапсуляция сложных бизнес-правил. Он действует как уровень абстракции между уровнем представления и уровнем базы данных, позволяя вносить изменения на одном уровне, не затрагивая другие.
- Реализуйте логику расчета для разделения расходов между участниками группы.
- Внедрите логику отслеживания платежей для записи и сверки платежей между участниками.
Уровень безопасности и аутентификации
- Этот уровень отвечает за реализацию мер безопасности, таких как аутентификация и авторизация, чтобы помочь защитить приложение и его данные.
- Он служит промежуточным программным обеспечением, через которое должен проходить каждый запрос, обеспечивая дополнительный уровень обработки.
- Дополнительные компоненты, такие как ограничение скорости, также могут быть реализованы на этом уровне.
Уровень шлюза
- Этот уровень отвечает за интеграцию приложения с внешними системами, такими как сторонние API, очереди сообщений и другие службы.
- Если вы реализуете дополнительную функцию, такую как расчет платежей в приложении, и логика интеграции со сторонней организацией должна относиться к этому уровню.
- Если приложение содержит рекламные объявления, на этом уровне должна выполняться интеграция с рекламной платформой, такой как AdSense.
Дополнительные модули
Утилиты и константы. Этот модуль содержит общую логику и константы, которые не должны зависеть ни от одного из перечисленных выше модулей.
Ошибки. Этот модуль содержит все типы ошибок и сообщения.
Тестирование. Этот модуль содержит модульные и интеграционные тесты. Также допустимо писать модульные тесты вместе с файлом реализации.
Сопоставители: этот модуль содержит логику сопоставления и преобразования между различными объектами.
Конфигурации. Этот модуль содержит все конфигурации, такие как адреса баз данных, конечные точки API и сторонние адреса.
В заключение, ключом к масштабируемой и надежной программной архитектуре является хорошо организованная кодовая база с четким разделением обязанностей.
Следуя принципам, изложенным в этой статье, вы можете гарантировать, что ваш код легко поддерживать и с ним будет легко работать в команде.
Я надеюсь, что эта статья была полезной и информативной.
В своих аккаунтах Twitter и Instagram я часто делюсь своим опытом программирования и разработки.
Спасибо за прочтение :)