Весна в разработке или Java Spring

Разработка

Максим Козлов, CTO дейтинг-приложения Denim

 

Разработка нашего дейтинг-сервиса Denim началась в 2015 году и в планах был лишь сайт для знакомств. Как мы предполагали тогда, в техническом плане верстки и несложной разработки на популярном PHP, будет достаточно, чтобы занять прочное место в выбранной нами нише, обеспечив эффективность работы всей системы. Правда, уже через несколько лет все это вылилось в создание целой инфраструктуры со своими сервисами API, сервисами по сбору статистики и аналитики, клиентскими частями (фронтендами, мобильными приложениями, маркетинговыми лендингами) и т.д. Со временем эти факторы умножились на высокую активность пользователей, которая естественным образом создает нагрузку.



Принимая во внимание все эти моменты, было принято решение, что пора задуматься о переходе из состояния стартапа в техническом отношении в состояние работы на уровне enterprise разработки. А что в этом случае может быть лучше, чем большой и прекрасный мир Java?  К тому же примерно в это же время произошел релиз четвертой версии фреймворка Spring framework.

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

Казалось бы, на PHP тоже можно вести enterprise разработку, но один только факт того, что в данном языке программирования отсутствует поддержка перегрузки методов классов, а из-за слабой типизации интерфейсы становятся бесполезными в принципе, приводит в замешательство. К тому же простая задача отложенной обработки данных или создания воркеров упирается в отсутствие каких-либо адекватных средств создания многопоточных приложений. Также необходимо отметить “шаманские” методы создания пула соединений с базами данных и иными хранилищами.


Что же мы в итоге получили? Здоровенный монолит, который обслуживал как мобильные клиенты, так и две версии фронтендов, кучу сателлитных сервисов для обслуживания продукта. В принципе, ничего странного и нового для подобной разработки. Но вместе с тем пришли и естественные проблемы с архитектурой стартапа и невозможностью принятия адекватных мер для ее исправления. А почему? Потому что слабая типизация, проблемы с кэшированием данных, с подготовкой их для работы клиентских частей, проблемы с декомпозицией бизнес логики на библиотеки, отсутствие компиляции и невероятные муки с тестированием кода.

Но все изменилось, когда пришел он – Spring framework. Удивительно, но за много лет разработки на старте принципиально новой задачи для бизнеса Spring каждый раз преподносит приятные сюрпризы. Куда ни плюнь, везде кто-то уже успел что-то на данную тему сделать или хотя бы задать вопрос на всеми нами любимом StackOverFlow. Конечно, нельзя забывать, что технология это не новая и имеет большую историю развития – одним словом, проверена временем.

Подробнее о том, как мы используем весь этот ворох технологий я расскажу в следующих постах. Но если говорить кратко, то сейчас у нас не монолитный проект, а целый ворох сервисов (не микросервисов): сервис для регистрации, поиска, платежей, покупки услуг, сообщений, сбора статистики, аналитики и т.д. И все это связано между собой через Spring integration – любимая моя часть в последние два года. В работе с клиентской частью активно используется  Spring HATEOAS. Справедливости ради стоит отметить, что используется он не полностью, но, как минимум, с пагинацией нам сильно помогает. Spring data задействован у нас в разных вариациях, как в работе с Postgresql БД, так и в таких модных и специфичных вещах, как репозиторный слой для ClickHouse от Яндекса. Spring security и mvc естественным образом упрощают нам жизнь в разработке REST API. Spring core лежит в основе наших maven библиотек.

Я не знаю, почему Spring framework назван именно так, но с того момента, как мы взяли его на вооружение, разработка в части ИТ нашего бизнеса только расцветает, как природа по весне. Каждая новая задача решается нами с большим удовольствием, и зачастую руки так и чешутся написать что-нибудь новое. Потому что, используя данный инструментарий, мы больше не думаем о том, как бы поддержать работоспособность нашего продукта, чтобы он не завял. Поэтому, считаю что каждый из разработчиков, кто еще не пробовал, должен попробовать себя в этом нелегком деле Java-разработки.

Demie

Сервис Demie — это качественные и безопасные знакомства для тех, кто ценит своё время – без свайпов, подписок и скрытых платежей

Ссылка на скачивание отправлена.