Типичные задачи в Enterprise разработке
Enterprise разработка - это создание коммерческого ПО для компаний (в отличие от разработки для конечных пользователей). Это serious business - тут решения принимаются на годы, цена ошибки часто измеряется миллионами, ПО используется в бизнес-процессах и автоматизирует или упрощает работу сотрудников корпораций.
Для этой сферы разработки характерны следующие черты:
Надежность на первом месте. Никто не гонится за трендами и хайпом, технологии используются по принципу "работает - не трогай". Изучив популярный стек технологий, затем можно годами его использовать и находить работу на нем - потому что крупные компании просто не видят смысла его менять на что-то другое. Иногда это удобно, а иногда приносит боль, например когда где-то до сих пор используют 6 версию Java, или как в истории с языком Кобол.
Проекты развиваются годами. С одной стороны это плюс - с годами будет расти и ваша ценность как специалиста, который в проекте хорошо разбирается, плюс дает некоторую стабильность в будущем. С другой - может быть минусом, так как новых специалистов обычно сажают разгребать горы легаси и костылей.
Получаемое ПО может быть огромным и сложным. Ваш личный вклад в общее дело при этом получится совсем маленьким, вы лишь винтик в отлаженной машине. Кому-то это нравится (чувствовать себя маленькой частью большой системы), кому-то нет.
Поскольку разработка планируется на годы, важную роль начинает играть стоимость поддержки. Компаниям приходится вкладываться в процессы разработки, чтобы не утонуть под горами плохого кода и архитектуры через пару лет. В крупных Enterprise проектах будут применяться многие хорошие практики - TDD, CI/CD, разумное планирование. Работа в таком проекте позволит изучить все это на деле.
Так что делать-то будем?
Типичный Enterprise проект - это преобразование данных и интеграция различных ИТ систем между собой в рамках бизнес-процесса. Часто это выглядит как: "взяли данные из одной системы по API, обработали, положили в БД, в админке показали статистику, выдали по API в другую систему". А если короче, то как мы с коллегами это называем: "перекладываю объекты из коллекции в коллекцию".
Примеры таких проектов, над которыми работал я:
Движок платежной системы. Храним базу данных с балансами аккаунтов, через API принимаем запросы на перевод средств, выполняем необходимые проверки, переводим. Поверх этого еще админка, логи и сбор статистики, несколько адаптеров для связи с другими платежными системами.
Система обработки запросов от чат-ботов для предоставления информации о работе банка. Парсила данные о банкоматах и отделениях из другой ИТ системы банка, обрабатывала запросы по поиску (по геолокации, названию, времени работы), выдавала в пригодном для чат-бота формате сообщений.
Система для автоматизации обработки отзывов об отелях. Скачивает по API с нескольких сайтов отзывы постояльцев, выдает в удобном виде, шлет уведомления, показывает статистику (общую по всем сайтам), позволяет загрузить таблицу с ответами.
Поддержка в принятии решений застройщиками. Из разных источников скачиваем данные о земельном участке (границы, что находится рядом), по некоторой модели оцениваем инвестиционную привлекательность, выдаем в виде отчета.
Как видно, в целом все эти проекты можно уложить в структуру "получили данные - обработали данные - сохранили в БД - выдали картинку в админке", хотя сама обработка и структура данных могут быть довольно разными.
Технологии
Чтобы реализовать типичный алгоритм работы Enterprise ПО, нам надо уметь работать со следующими задачами:
Получение данных. Типичные варианты, откуда их можно взять:
Сторонние API. Сейчас в современном вебе большинство API работает через HTTP + JSON. JSON это простой формат текстового представления данных. Кроме JSON можно встретить API, работающие с XML, YAML или иными текстовыми или (иногда) бинарными форматами. В Enterprise разработке еще можно встретить SOAP - это разновидность XML-через-HTTP протокола, бывшего популярным в нулевых, но до сих пор кое-где живого. Для работы со всем этим вам надо научиться выполнять HTTP запросы, сохранять и загружать объекты в нужном формате. В Spring уже есть все готовое для этого, в других фреймворках и языках нужно будет поискать библиотеки для этих задач.
Файлы. Часто хотят загружать таблицы из экселя в XLSX формате, или текстовые файлы, или файлы в каких-то собственных форматах.
Базы данных.
Сохранение данных
Тут как правило речь идет о базах данных. Про них у нас есть отдельная глава.
Администрирование данных
Разного рода веб-админки, где пользователи смогут посмотреть список данных, возможно что-то поредактировать, скачать или запустить какой-то процесс обработки.
Веб это отдельная сложная тема, с кучей фреймворков для создания веб-страниц, таких как Vue.js или React. От начинающего разработчика вряд ли будут требовать знания одновременно и бэкенда, и фронтенда, поэтому тут останавливаться на них не будем.
Выдача данных во внешние системы
Создание собственных API для интеграции других систем с вашей. Для этого в Spring есть множество инструментов.
В последующих главах мы рассмотрим все необходимые технологии, которые вам понадобятся в работе над типовым Enterprise проектом на Java.
Last updated