Миграция с Java на Kotlin: как повысить продуктивность разработки
Какие особенности сопровождают переход с одного языка программирования на другой и что от этого получает проект
Задача: разработка SaaS-продукта для автоматизации работы
Причина: необходимость усилить функциональность и провести оптимизацию качества приложений
Какие сложности могут возникнуть при переходе с одного языка программирования на другой, как разработчики усиливают функциональность и проводят оптимизацию качества приложений, работающих на разных платформах.
Бэкенд-команда SimbirSoft реализовала новый кейс: переход из Java (высокоуровневый язык программирования общего назначения) в Kotlin*. В этом материале расскажем о плюсах и минусах такого проекта и разберемся в главном вопросе: оправдала ли ожидания наших бэкенд-разработчиков миграция сервиса.
Для начала разберемся, что такое Kotlin (Котлин): это тоже современный язык программирования, который применяют, чтобы облегчить разработку и усилить производительность приложения. Kotlin работает в Java Virtual Machine (JVM) — программном окружении, которое служит средой для запуска Java-приложений и обладает набором мощных инструментов для разработки программ.
Кейс: запрос от крупной логистической компании
Запрос: разработать SaaS-продукт (software as a service — «программное обеспечение как услуга»). Модель SaaS подразумевает предоставление программного обеспечения онлайн. Работает таким образом: IT-поставщик разрабатывает для какой-нибудь компании сервис, размещает и обслуживает его на серверах, периодически обновляет систему и устраняет проблемы, если они возникают.
В нашем случае логистическая компания заказала разработку SaaS-продукта для автоматизации работы. ПО изначально было написано на языке Java, сама система основана на микросервисной архитектуре и включала в себя несколько модулей:
- планирование и отслеживание графика перевозок;
- хранение и обработка документов;
- интеграция с платежными системами;
- аналитика и генерация отчетов;
- синхронизация с внешними API партнеров.
*API — программный интерфейс приложений, набор правил, по которым между разными программами происходит обмен данными.
Система состояла из 20 модулей, каждый их них представлял отдельный микросервис. Поддержка и доработка функциональности подразумевала со стороны команды значительных ресурсных вложений. Анализ эффективности процессов показал: проекту нужен более рациональный подход. Как можно сократить затраты без потери качества? Ответ — провести архитектурное ревью и мигрировать с Java на Kotlin.
Новое решение проекта
Проведя архитектурное ревью, технический лид предложил переписать 2 сервиса на язык программирования Kotlin. Почему только в 2, а не во всех 20? Дело в том, что именно в них активно внедрялись новые бизнес‑функции и применялась сложная логика обработки данных. Это усложняло обслуживание ПО и приводило к избыточности кода.
- Избыточность кода — это сценарий написания кода, при котором сохраняется возможность оптимизировать, сокращать, приводить повторяющиеся участки к единому абстрактному решению и общему виду (для упрощения поддержки и расширения функциональности в будущем). Но вместе с тем избыточность кода может служить неблагоприятным фактором и привести к сложностям поддержке.
Другими словами, чем меньше кода, тем меньше в приложении ошибок. Поэтому решили постепенно внедрить Kotlin — он хорошо интегрировался с современными библиотеками (наборами имеющихся функций в приложении), совместимость была высокая.
Кто-то скажет, что Kotlin — язык для мобильной разработки и его не стоит использовать для серверных приложений. Отчасти этот человек будет прав. Но технически на Kotlin можно «написать» сервер, и он ввиду своих качеств даст преимущество бизнесу, как например, в этом кейсе.
Какую выгоду получил бизнес от новых IT-решений
Когда мы переписывали сервис, то смогли добавить в него новый функционал.
Теперь при расчете маршрутов и стоимости доставок оптимальный путь с учетом расстояния, времени и тарифов перевозки подбирался в модуле автоматически.
Команда помогла автоматизировать и процессы управления складскими запасами — мы запустили систему учета, резервирования и автоматического оповещения об остатках товаров.
Нам легко удалось внедрить новую логику в проект, так как Kotlin полностью совместим с Java-кодом и интегрируется с фреймворком для языка программирования Java.
Результаты и показатели
В результате такого перехода удалось достичь следующих показателей:
- количество кода в сервисе сократилось на 25–30%;
- снизилось количество ошибок за счет null-safety (механизм языка, предотвращающего использование неопределенных или «пустых» значений);
- переход проводился постепенно, без полной остановки разработки.
Мы поняли, что переход с Java на Kotlin может быть безопасным и эффективным при правильной организации процесса. Мы использовали тесты в начале разработки и тем самым снизили риски при переходе, избежали критических ошибок. Следовательно, бизнес быстрее автоматизировал рабочие процессы и смог быстрее воспользоваться новыми функциями в системе логистического управления. Как следствие, наше IT-решение обеспечило компании новую доходность и новую прибыль.
Сократилось количество кода в сервисе, значительно уменьшились ошибки в работе систем. Новое IT-решение привело компанию к прибыли.
Рубрики
Рекомендации партнеров:
Новости отрасли:
Все новости:
Публикация компании
Достижения
Профиль
Рубрики