Система учета и контроля расходов телекоммуникационных услуг
Описание проекта
Система учета и контроля расходов телекоммуникационных услуг позволяет выполнять контроль над телекоммуникационными расходами компании.
Система представляет собой группу приложений:
- Веб-приложение для клиентов
- Веб-приложение для администраторов системы
- Серверный компонент для обработки событий
Веб-приложение для клиентов предоставляет единую точку входа получения информации о всех счетах клиента (mobile, fixed, RAS, data) и выступает как служба ведения отчетности организации на всех уровнях — корпоративном, региональном и в масштабах страны, в рамках компании на уровне менеджмента и на пользовательском уровне. Данное приложение позволяет клиенту управлять информацией об организации, разграничивать права внутри компании между сотрудниками, организовать структуру иерархии компании, контролировать расходы за определенный период и т.д.
Веб-приложение для администраторов управляет различными аспектами системы: управление пользователями, контроль за состоянием системы, просмотр событий системы, просмотр и удаление счетов клиентов, управление шаблонами писем, добавление локализации, добавлением справочных данных в систему и т. д.
Серверный компонент для обработки событий представляет собой многопоточное java приложение, которое отвечает за обработку различных событий, которые были инициированы другими приложениями.
Основными событиями данного приложения являются:
- Создание новых клиентов
- Загрузка и обработка счетов клиента в систему
- Обновление структуры существующих организаций
- Удаление устаревшей информации
- Восстановление пароля пользователя
- Активация и блокировка пользователя и т.д.
Эти приложения при помощи аналитики и разноплановых детализированных отчетов дают полное представление о затратах, что помогает проведению анализа и принятию решений об оптимизации расходов компании на телекоммуникации.
Еще одним важным элементом сервиса отчетов является предоставление возможности давать доступ своим сотрудникам к сервису, что значительно увеличивает их осведомленность о своих затратах на услуги связи и позволяет сотрудникам брать на себя ответственность за телекоммуникационные расходы, разделяя звонки на бизнес коммуникации и звонки для личного пользования.
Техническое описание проекта
Система представляет собой многомодульное Maven приложение. С помощью Maven организована автоматическая сборка проектов с настройкой профилирования.
Веб-приложения реализованы на основе MVC-паттерна, который разделяет модель (бизнес-логику), представление (HTML-страницы) и контроллер (отвечающий за передачу данных от модели к представлению и обратно).Серверная часть приложений реализована на языке Java c использованием широко известных фреймворков Struts2 и Spring.
Клиентская часть реализована с применением технологий HTML, CSS, JavaScript, JQuery, AJAX, Struts2 tags, JSTL tags.
Для обработки нестандартных кейсов были созданы собственные jsp-теги (к примеру, многоуровневое меню с автоматической подгрузкой данных в зависимости от выбранной пользователем категории).
Для поддержки ролей пользователей и их управления используется Spring Security.
Система позволяет предоставлять различным пользователям разные уровни доступа для обеспечения наибольшей безопасности.
Связь между двумя веб-приложениями организована через технологию единого входа (Single Sign-On), что позволяет администратору переходить в другое приложение без повторной аутентификации.
Реализована защита приложений от различных уязвимостей и хакерских атак (к примеру: CSRF, XSS) с поддержкой кроссбраузерности с использованием CSP2.0 для более новых версий браузеров, а также реализовано собственное решение с использованием MutationObserverAPI для старых версий браузеров. В качестве сервера веб-приложений использовался Tomcat.
Серверный компонент для обработки событий представляет собой многопоточное консольное приложение. Данное приложение позволяет обрабатывать и загружать файлы нескольких форматов (CSV, PDF, XML), также принимает справочные данные из XLS и JSON-файлов. Связь с другими приложениями системы организована посредством сложной событийной модели. Количество потоков для обработки событий определяется пользователем. Управление потоками организовано с помощью стандартного пакета java.util.concurrent.
Система использует базу данных Oracle. В базе данных присутствуют 2 вида таблиц:
- таблицы для хранения служебной информации приложения, которая редко изменяется (например, локализация, настройки приложения),
- таблицы, которые используются для хранения данных о компаниях, пользователях, затратах на услуги и прочую бизнес-информацию.
Для выполнения сложных операций с данными в БД используются хранимые процедуры на языке PL/SQL, что повышает производительность, расширяет возможности программирования и поддерживает функции безопасности данных.
Взаимодействие с базой данных осуществляется с помощью Hibernate и JPA. В некоторых случаях для достижения лучшей производительности используется JDBC Connection.
Технологии
Stack: Java, Maven, JPA (Hibernate), JDBC Connection, Servlet API, TagLib, JSTL, Jaxb, SuperCSV, JAX-WS, Apache commons, Apache POI.
Infrastructure: Jenkins, SVN.
Frameworks: Struts2, Spring, Spring security.
Test Automation libraries: Mockito, JUnit.
DB: Oracle, PL/SQL.
Other libraries: Ehcache, Achartengine.
Скриншоты
Что делали на проекте, наши обязанности
Силами нашей команды выполнялись следующие работы:
- поддержка стабильности приложения,
- реализация нового функционала,
- рефакторинг,
- багфиксинг,
- покрытие модульными, Data Driven, нагрузочными и интеграционными тестами,
- проведение тестирования на всех этапах разработки,
- создание документации к проекту.
Особенности проекта
- Среди особенностей данного проекта отдельно стоит отметить его долгосрочность взаимодействия с заказчиком: наша совместная работа на проекте длилась более четырех лет.
- Работа с Legacy system. Приложение разрабатывалось на протяжении 10 лет, использовались старые версии библиотек. Возникала необходимость поддержки совместной работы новых и старых версий различных библиотек.
- Коммуникации и совместная работа с территориально распределенными англо- и русскоязычной командами.
- Интеграция всех частей системы: веб-приложений, компонент для обработки событий, мобильное приложение для android платформы.
- Создание хранимых процедур на языке PL/SQL для СУБД Oracle.
- Первоначальное отсутствие тестов, javadocs, документации.
- Ведение проекта по Scrum методологии, использование Jira для управления проектом и коммуникаций с заказчиком.
Результат проекта
- Реализован новый функционал и исправлены баги.
- Внедрен Continuous Integration.
- Реализован автоматический деплой приложений.
- Написаны тесты для UI с использованием xml2selenium, юнит-тесты для серверной части и андроид-приложения.
- Проведен анализ приложения на OWASP Top 10 Most Critical Web Application Security Risks, нами были исправлены проблемы с уязвимостью приложений.
- На протяжении всего периода разработки нового функционала мы также занимались сопровождением и поддержкой Live-систем заказчика, и сделали этот процесс стабильным.
Достижения компании на проекте
- Выполнено документирование проекта. Создано порядка 30 документов с техническим описанием, мануалами, диаграммами, описанием работы приложений:
- различные диаграммы для поддержки стабильности проекта на протяжении всего периода времени,
- документ с описанием как работать с иерархиями компании, Installation guide,
- видео и аудио учебные материалы для быстрого погружения нового сотрудника в проект.
- На проекте нами была выполнена нормализация базы данных — была применена структура связей между полями и таблицами для снижения вероятности возникновения ошибок, оптимизации объема на жестком диске.
- Был внедрен Continuous Integration и авто-тесты, реализован автоматический деплой приложений на сервер заказчика.
- Улучшена методология автоматического популирования БД структурой базы и данными.
Свяжитесь с нами, чтобы обсудить Ваш IT-проект