Типичные задачи в Enterprise разработке

Enterprise разработка - это создание коммерческого ПО для компаний (в отличие от разработки для конечных пользователей). Это serious business - тут решения принимаются на годы, цена ошибки часто измеряется миллионами, ПО используется в бизнес-процессах и автоматизирует или упрощает работу сотрудников корпораций.

Для этой сферы разработки характерны следующие черты:

  • Надежность на первом месте. Никто не гонится за трендами и хайпом, технологии используются по принципу "работает - не трогай". Изучив популярный стек технологий, затем можно годами его использовать и находить работу на нем - потому что крупные компании просто не видят смысла его менять на что-то другое. Иногда это удобно, а иногда приносит боль, например когда где-то до сих пор используют 6 версию Java, или как в истории с языком Кобол.

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

  • Получаемое ПО может быть огромным и сложным. Ваш личный вклад в общее дело при этом получится совсем маленьким, вы лишь винтик в отлаженной машине. Кому-то это нравится (чувствовать себя маленькой частью большой системы), кому-то нет.

  • Поскольку разработка планируется на годы, важную роль начинает играть стоимость поддержки. Компаниям приходится вкладываться в процессы разработки, чтобы не утонуть под горами плохого кода и архитектуры через пару лет. В крупных Enterprise проектах будут применяться многие хорошие практики - TDD, CI/CD, разумное планирование. Работа в таком проекте позволит изучить все это на деле.

Так что делать-то будем?

Типичный Enterprise проект - это преобразование данных и интеграция различных ИТ систем между собой в рамках бизнес-процесса. Часто это выглядит как: "взяли данные из одной системы по API, обработали, положили в БД, в админке показали статистику, выдали по API в другую систему". А если короче, то как мы с коллегами это называем: "перекладываю объекты из коллекции в коллекцию".

Примеры таких проектов, над которыми работал я:

  1. Движок платежной системы. Храним базу данных с балансами аккаунтов, через API принимаем запросы на перевод средств, выполняем необходимые проверки, переводим. Поверх этого еще админка, логи и сбор статистики, несколько адаптеров для связи с другими платежными системами.

  2. Система обработки запросов от чат-ботов для предоставления информации о работе банка. Парсила данные о банкоматах и отделениях из другой ИТ системы банка, обрабатывала запросы по поиску (по геолокации, названию, времени работы), выдавала в пригодном для чат-бота формате сообщений.

  3. Система для автоматизации обработки отзывов об отелях. Скачивает по API с нескольких сайтов отзывы постояльцев, выдает в удобном виде, шлет уведомления, показывает статистику (общую по всем сайтам), позволяет загрузить таблицу с ответами.

  4. Поддержка в принятии решений застройщиками. Из разных источников скачиваем данные о земельном участке (границы, что находится рядом), по некоторой модели оцениваем инвестиционную привлекательность, выдаем в виде отчета.

Как видно, в целом все эти проекты можно уложить в структуру "получили данные - обработали данные - сохранили в БД - выдали картинку в админке", хотя сама обработка и структура данных могут быть довольно разными.

Технологии

Чтобы реализовать типичный алгоритм работы Enterprise ПО, нам надо уметь работать со следующими задачами:

Получение данных. Типичные варианты, откуда их можно взять:

  1. Сторонние API. Сейчас в современном вебе большинство API работает через HTTP + JSON. JSON это простой формат текстового представления данных. Кроме JSON можно встретить API, работающие с XML, YAML или иными текстовыми или (иногда) бинарными форматами. В Enterprise разработке еще можно встретить SOAP - это разновидность XML-через-HTTP протокола, бывшего популярным в нулевых, но до сих пор кое-где живого. Для работы со всем этим вам надо научиться выполнять HTTP запросы, сохранять и загружать объекты в нужном формате. В Spring уже есть все готовое для этого, в других фреймворках и языках нужно будет поискать библиотеки для этих задач.

  2. Файлы. Часто хотят загружать таблицы из экселя в XLSX формате, или текстовые файлы, или файлы в каких-то собственных форматах.

  3. Базы данных.

Сохранение данных

Тут как правило речь идет о базах данных. Про них у нас есть отдельная глава.

Администрирование данных

Разного рода веб-админки, где пользователи смогут посмотреть список данных, возможно что-то поредактировать, скачать или запустить какой-то процесс обработки.

Веб это отдельная сложная тема, с кучей фреймворков для создания веб-страниц, таких как Vue.js или React. От начинающего разработчика вряд ли будут требовать знания одновременно и бэкенда, и фронтенда, поэтому тут останавливаться на них не будем.

Выдача данных во внешние системы

Создание собственных API для интеграции других систем с вашей. Для этого в Spring есть множество инструментов.

В последующих главах мы рассмотрим все необходимые технологии, которые вам понадобятся в работе над типовым Enterprise проектом на Java.

Last updated