Перед нами поставили задачу разработать мобильное приложение под платформу Android. У клиента уже имелось мобильное приложение, но оно было разработано давно, его работа не была оптимизирована, а дизайн не был актуальным.
Языком разработки был выбран Kotlin и фреймворк Coroutines, который позволяет выполнять синхронные запросы сервисам. Бэкенд был разработан на стороне нашего клиента с использованием протокола сериализации Protocol Buffers.
То есть, нам предоставили доступ к структурам данных, из которых можно сгенерировать классы на конкретном языке программирования. Такой подход снижает издержки на написание классов-оберток для моделей, обеспечивающих общение с бэкендом, и снижает вероятность ошибок в самих запросах, так как соответствующие классы создаются автоматически.
Мы применили многомодульную архитектуру приложения. Это дает большое преимущество при разработке: реализованные модули могут жить отдельно друг от друга, собираться и тестироваться по-отдельности. Кроме того, такой подход обеспечивает быструю и удобную возможность переиспользования кода.
Для того, чтобы обеспечить безопасность передаваемых пользовательских данных, мы реализовали сквозное шифрование. Для того, чтобы решить эту задачу, мы выяснили, какие алгоритмы шифрования использует банк, и применили те же алгоритмы на стороне мобильного приложения.
Для реализации шифрования мы использовали встроенную библиотеку androidx.crypto. Было использовано готовое решение, поскольку такие решения постоянно развиваются, улучшаются и становятся более криптоустойчивыми, а также они оттестированы на больших объемах данных.