Вернуться в видеотеку

Android System Design

Мок-интервью по проектированию Android-приложения криптобанка. Участники последовательно обсуждают модульную архитектуру и низкоуровневую реализацию Exchange с потоковыми котировками, кэшированием и защитой операций.

Источник: DevGym

Открыть на YouTube

Таймлайн

Коротко о видео

Это мок-интервью по Android System Design: кандидат проектирует архитектуру большого банковского приложения с обменом криптовалют. Сначала обсуждают feature-модульную архитектуру, разделение API и реализации, core-модули, Clean Architecture, DI и стратегию тестирования. Затем разбирают экран Exchange: получение котировок по WebSocket, REST-операции покупки и продажи, подтверждение пользовательских действий, certificate pinning, кэширование истории в базе данных и выбор жизненного цикла соединений. В конце интервьюер даёт развёрнутую обратную связь, отмечая сильные стороны рассуждений и несколько архитектурных уточнений.

Затронутые темы

Что взять на заметку

  • Для большого Android-приложения с ростом команды кандидат предлагает feature-модульную архитектуру: она изолирует работу команд, снижает связанность и упрощает переиспользование модулей; монолитный модуль допустим для маленького или одноразового проекта.
  • Фича может состоять из отдельного API-модуля и реализации: другие фичи зависят от API, а реализация подключает зависимости. В обратной связи уточнено, что такое разделение также позволяет подменять реализацию.
  • В API фичи для потенциальной мультиплатформенности безопаснее отдавать данные или контракты, а не Android View; интервьюер отдельно отметил это как спорное место исходного ответа.
  • Бизнес-слой предлагается держать независимым: интерфейсы репозиториев и use cases находятся в domain-слое, а конкретные реализации источников данных — в data-слое и подключаются через DI.
  • Для live-котировок криптовалют кандидат предлагает WebSocket, а для покупки, продажи и подтверждения действий — обычные REST-запросы; необходимость одного общего или нескольких сокетов следует выбирать по бизнес-требованиям и результатам нагрузочных экспериментов.
  • Историю котировок за несколько дней имеет смысл кэшировать в базе данных: это даёт миграции, версионирование и запросы по диапазону дат; репозиторий координирует remote- и local-source.
  • Тесты конкретной фичи стоит располагать рядом с ней, а UI-тесты, которым нужна точка входа приложения, — в application-модуле.

Рекомендуем посмотреть