Портфолио
Компания JazzTeam всегда работает на одной стороне со своими клиентами. Мы открыты своим заказчикам и ценим свою деловую репутацию. Хорошо отработанная сервисная модель оказания услуг в сочетании с отличным технологическим уровнем сотрудников компании и профессиональным управлением позволяют нам успешно выполнять самые сложные проекты. Мы всегда действуем проактивно, предлагая нашим заказчикам технологии и процессы, улучшающие их бизнес.
Приведём несколько проектов, которые успешно выполнены компанией.
Телекоммуникация
Центр обработки телекоммуникационных данных
Биллинговая система для провайдера мультимедийных каналов
CRM система крупной телеком-компании
Система управления бизнес-процессами обслуживания клиентов
Система учёта логических ресурсов мобильного оператора
Система управления тарифными планами и услугами мобильного оператора
Система учета, анализа и принятия решений по финансовому состоянию клиентов и абонентов
Система учета и контроля расходов телекоммуникационных услуг
Редизайн портала системы учета и контроля расходов телекоммуникационных услуг
Корпоративное мобильное приложение по учету трафика и управлению расходами на коммуникации
Индустрия путешествий
Веб-интерфейс системы отслеживания географического положения объектов на Google-картах
Автоматический анализатор бренда в социальных сетях и других ресурсах Internet
Автоматизированные UI тесты для travel индустрии
Здравоохранение
Frontend разработка веб-приложения для поддержания здорового образа жизни
Поисковый сервис по лекарствам
Java-апплет для обучения и тестирования
Доработка веб-приложения «Электронный паспорт лаборатории»
Государственный сектор
Система автоматизации документооборота и бизнес-процессов в природоохранной деятельности
Cистема мониторинга и управления государственными закупками для тендерно-договорного отдела
Веб-приложение для просмотра личных дел сотрудников и студентов
Технологический сектор
Создание коммерческого Mule коннектора к мейнфреймам IBM i (AS/400)
Приложение для управления обновлениями баз данных
Приложение-эмулятор мыши для Android-устройств
Разработка SaaS решения для продукта XML2Selenium
Комплексная кастомизация Android UI
Система управления ресурсами проектов
Xml2selenium – собственная разработка компании JazzTeam
Агрегатор аккаунтов для веб-приложения
Mule-приложение – прокси для интеграции внутренних систем заказчика и внешних сервисов.
Mule-приложение, предоставляющее API для сканирования файлов на вирусы
Создание коммерческого Mule коннектора к системе управления мастер-данными
Система объединения облачных хранилищ
Регистратор аккаунтов в облачных сервисах
Система для прогноза курса криптовалют на основе анализа текста
Интеграция Distribution Management System с ERP системами региональных дистрибьюторов
Перенос коммерческих интеграционных Mule-приложений c on-premise в облачную среду
Система автоматического мониторинга цен конкурентов, оптимизации цен в своих магазинах
Апплет для цифровой подписи документов
Система управления ресурсами предприятия
Коммуникация и развлечения
Веб-приложение в сфере образования
Социальная сеть для творческих людей
Автоматизация тестирования веб-приложения, связанного c Geofence Marketing
Централизованная система онлайн продажи билетов в реальном времени
Маркетинговая платформа анализа данных сайта stackexchange.com
Веб-приложение для покупки и продажи недвижимости
Реализация расширяемой игровой механики для клиента ролевой игры
Разработка модуля образовательной онлайн платформы
Система управления игровыми компьютерными клубами
Автоматический анализатор бренда в социальных сетях и других ресурсах Internet
Краткое описание проекта: компания разработала автоматизированную систему поиска и семантического анализа упоминаемости брендов отелей. Данная система была интегрирована в SaaS решение, позволяющее владельцам отелей управлять присутствием своего бренда в Social Media. Система ведёт поиск среди популярных сайтов с отзывами клиентов отелей, таких как booking.com, expedia, tripadvisor, hotels.com, zoover.de, hrs.com и других, а так же из социальных сетей Facebook и Twitter. Система периодически возвращается к сайтам за обновлённой информацией. Для этих целей были реализованы поисковые роботы (краулеры). Текст отзывов анализируется с помощью нейронной сети (был использован проект Apache OpenNLP) с различных сторон: негативные или позитивные, отзыв о wifi, парковке или обслуживании номеров и так далее. Система составляет рейтинг отелей на основе полученной информации и позволяет владельцам отелей просматривать собранные из различных источников отзывы для улучшения качества обслуживания, а так же производить сравнения с рейтингами других отелей.
Технологии: Java, IceFaces, Vaadin, MongoDB, Twitter/Facebook API, Spring (IoC, AoP, Batch), JUnit, Mockito, Apache Tomcat, Eclipse, Git, Maven, Ant, Gerrit (система для ревью кода), Jenkins, Nexus, Apache OpenNLP, shell scripts, Web Driver (UI-tests), Quartz, RegExp.
Особенности проекта:
- Полное соблюдение Scrum процессов - одно из требований заказчика.
- Использование связки Git/Gerrit.
- Одна из команд разработчиков на стороне заказчиков.
Результат проекта:
- Все итерации, в которых принимала участие наша команда, были признаны успешными
- Был реализован сбор информации с более чем 25 сайтов с отзывами клиентов отелей.
- Команда успешно совершила командировку к заказчику в Германию, был произведён обмен опытом с коллегами, а также успешно опробовано вкусное немецкое пиво 🙂
Достижения компании на проекте:
- Команда проекта предложила и внедрила большое количество архитектурных улучшений для реализации системы краулеров, к примеру поддержку сбора информации на разных языковых версиях сайтов.
- Внедрена система регрессионного тестирования краулеров, для чего применялись собранные ими же данные.
- Нами было внедрено автоматизированное тестирование UI с использованием Web Driver, создан архитектурный каркас для автотестов с использованием паттерна Page Object.
Отзывы клиентов:
Фридрих Бёкх, Управляющий директор, Infopulse GmbH, Компания, предоставляющая на рынке информационные технологии и услуги, Германия
JazzTeam принимал участие в инновационном проекте под моим руководством. Команда продемонстрировала высокий профессиональный уровень в области архитектурного дизайна, Agile процессах, юнит-тестировании и деятельности в рамках проекта. Вы можете смело положиться на инженеров JazzTeam, доверьтесь им и будьте уверены - Java эксперты обеспечат Вас наилучшим результатом.
Система автоматизации документооборота и бизнес-процессов в природоохранной деятельности
Краткое описание проекта: масштабный проект на 5 человеко-лет, в рамках которого необходимо было создать целый ряд приложений, взаимодействующих между собой по принципам SOA. Отдельным приложением была администраторская часть, которая используется, как полностью независимый компонент, и работает в связке с любым из создаваемых бизнес-приложений. Одной из задач проекта было поддержание Single Sign One, для этого мы разработали сервис предоставления безопасного ключа.
Технологии: Eclipse, Linux, MySql, Maven, JPA (Hibernate), JTA (Spring), Web-Services, Struts, JQuery, JSP, Servlets, JUnit, Selenium/WebDriver, Fitnesse
Скриншоты:
Особенности проекта: проект вёлся по методологии Scrum, что не мешало нам предоставлять компании-заказчику Project Plan на несколько фаз вперёд.
Результат проекта: все проектные работы завершены успешно. Компания-заказчик смогла создать свою команду разработчиков, пользуясь опытом нашей команды, и продолжить разработку самостоятельно. Создание своей команды разработчиков было одной из целей заказчика на старте проекта.
Достижения компании на проекте:
- Интегрирование Fitnesse тестов в общую Maven инфраструктуру проекта
- Создание Unit-тестов для серверной части приложения
Автоматизированные UI тесты для travel индустрии
Краткое описание проекта: задачей компании было восстановление неиспользуемых автоматизированных UI Selenium 1.0 тестов для продукта заказчика в области индустрии путешествий. Следующими шагами были перевод существующих тестов на Selenium2/WebDriver, внедрение архитектуры на основе паттерна PageObject, создание новых тестов для большого количество тест кейсов, и внедрение в продукт заказчика принципов, подходов и процессов в области управления автоматизированными тестами и привязки тестов к бизнес-документации.
Технологии: JUnit, Selenium1-2, WebDriver; Jenkins, Maven, Eclipse, Linux.
Особенности проекта: новые тесты, создаваемые командой проекта, необходимо было использовать для тестирования уже существующих инсталяций продукта, поэтому мы применили Data Driven Testing паттерн.
Результат проекта: все фазы проекта были завершены успешно. Компания-заказчик внедрила новые процессы и начала использовать восстановленные и новые автоматизированные тесты.
Достижения компании на проекте:
- Создание архитектуры на базе паттерны PageObject.
- Создание и поддержка документов, позволяющих управлять тестами нам и заказчику.
- Формализация процессов и создание необходимых мануалов.
Отзывы клиентов:
Мария Бондаренко, Совладелец, GP Software.Travel, Информационные технологии и услуги, Беларусь, Германия
Компания JazzTeam принимала участие в автоматизации тестирования одного из наших проектов.
Хочется отметить высокое знание командой необходимых технологий, уверенное владение инструментарием, включая CI систему Jenkins и хорошее качество оказанных услуг. Инженеры компании предложили и реализовали архитектурные улучшения, участвовали в построении процессов на проекте и всегда шли нам навстречу.
Поисковый сервис по лекарствам
Краткое описание проекта: разработка фармакологического поискового сервиса нового поколения (высоконагруженность, кластерность, гео-локация) с интеграцией со существующей инфраструктурой одного из лидеров фармакологического российского импорта.
Технологии: MongoDB, Spring (JTA, WebServices, SpringData, SpringMVC), JQuery, Oracle, SQL, Quartz, Apache Solr
Особенности проекта: стартапный характер проекта, очень короткие итерации, внешний менеджемент, постоянное изменение требований.
Результат проекта: команда завершила несколько фаз проекта. В рамках этих активностей был создан UI прототип, а также запрототипированы все основные серверные операции по работе с базами данных MongoDB и Oracle. Была создана архитектура для процесса репликации изменений в NoSQL базе данных, в реляционную базу.
Достижения компании на проекте:
- Быстро введены в производство несколько ранее не использовавшихся технологий.
- Команда смогла эффективно работать в условиях достаточно серьёзных временных ограничений.
Комплексная кастомизация Android UI
Краткое описание проекта: компания принимала участие в создании приложения под Android, которое является одним из лидеров сегмента приложений, управляющих кастомизацией внешнего вида Android платформы. Был разработан интерфейс загрузки контента с серверов заказчика, живые обои, различные виджеты (часы, календари, погода, переключатели функций) на основе предоставленной заказчиком графики. Приложение периодически производит поиск обновления контента на сервере. Была произведена оптимизация приложения под множество разрешений экранов (ldpi, mdpi, hdpi, xhdpi, разрешения экрана от 320x240 до 1280x768, portrait и landscape форматы).
Технологии: Android SDK, JUnit, Eclipse with ADT, Ant (кастомизация билд-системы Android-проектов).
Особенности проекта:
- Использование огромного количества незадокументированных решений, по разному работающих на разных Android-устройствах, необходимость решения данных проблем.
- Постоянная декомпиляция существующих приложений, постоянный поиск путей для решения задач, поставленных заказчиком.
- Поддержка всех версий Android и огромного количества устройств и разрешений, форматов portrait и landscape.
- Необходимость в кастомизации билд-системы Android-проектов.
- Необходимость оптимизации приложений под большое количество A
- ndroid-устройств с учётом периодически выходивших на рынок новых моделей.
Результат проекта:
- Несмотря на возникающие сложности, мы смогли решить все технические задачи, и успешно передать проект компании-заказчику для дальнейшего сопровождения (добавления нового контента, изменения графики)
- Кастомизирована система сборки Android-проектов, разработана функция сборки версий для всех разрешений и форматов за один клик.
- Разработанное приложение вышло на первые места в Samsung Android Market.
Достижения компании на проекте:
- Были разработаны ant скрипты и подход, позволяющий в одну команду выпустить билды для всех видов устройств и разрешений (кастомизация процесса сборки Android-приложений).
- Был разработан движок для динамической загрузки живых обоев с серверов заказчика и их отображения.
- Были сформулированы и задокументированы требования к большому количеству графики (которая разрабатывалась заказчиком) для различных размеров, типов, версий и форматов android-устройств.
CRM система крупной телеком-компании
Краткое описание проекта: наша компания принимала участие в кастомизации CRM-системы для крупной телеком-компании. Масштаб части проекта, разработанной нами, составлял около 5 человеко-лет, масштаб всей системы - десятки человеко-лет. Работа включала в себя ряд задач по кастомизации UI и серверной части CRM-системы Amdocs Clarify, интеграции её с другими системами заказчика посредством SOAP веб-сервисов и шины Enterprise Service Bus. Разрабатываемая функциональность покрывалась интеграционными и изоляционными unit-тестами. Одним из направлений было покрытие GUI-интерфейса клиентской части автоматизированными тестами на технологии Jubula и запуск их в среде непрерывной интеграции Jenkins. Из-за большого количества пользователей для снижения нагрузки на сервера нами была проведена оптимизация на уровне SQL и БД Oracle. Вся разработка велась по методологии Scrum/Agile с полным соблюдением всех процессов и запуском (deploy in live) каждые 2 недели.
Технологии: Amdocs Clarify CRM, Oracle (database, WebLogic application server, Enterprise Service Bus), SQL, Apache Ant, SOAP Web Services, Jax-WS, Jubula (UI automation tool), JUnit, Eclipse, Red Hat Enterprise Linux, Jira (+ greenhopper), SVN, Cisco CTI (Computer Telephony Integration)
Особенности проекта:
- Ключевое требование заказчика - полное соблюдение scrum-процессов, итеративные планирования, scrum-покер для оценки трудозатрат, greenhopper для ведения электронной scrum-доски
- Работа в офисе заказчика для ключевых участников проекта
- Постоянные командировки к заказчику всей команды для проведения скрам-активностей
- Полный жизненный цикл работы с требованиями и историями, участие заказчика в планировании
- Большое внимание к вопросом производительности (оптимизации на уровне БД Oracle)
- Интеграция системы с CTI
Результат проекта: CRM была внедрена во многие бизнес-процессы крупной телеком-компании (корпоративные и розничные продажи, техническая поддержка, удерживание постоянных клиентов, расчётное обслуживание, регистрация обращений клиентов в call-центрах).
Достижения компании на проекте:
- Внедрён распределённый скрам
- Налажен процесс командировок к заказчику на планирование, демо и ретроспективу (сдача работ и приём задач в разработку)
- Налажено взаимодействие с удалённной командой бизнес-аналитиков и проведение скрам-ретроспектив для заказчика
- Внедрён паттерн Page Object в автотесты заказчика, что повысило скорость их написания
- За короткие сроки изучен, поднят стек фреймворков и технологий Amdocs Clarify
Cистема мониторинга и управления государственными закупками для тендерно-договорного отдела
Краткое описание проекта: приложение представляет собой систему мониторинга и управления государственными закупками для тендерно-договорного отдела. Система позволяет создавать карточки тендеров на поставку товаров, оказание услуг или выполнение работ, вести этапы торгов и подготовки. Также имеется возможность привязать к карточке тендера дополнительную документацию. За каждым тендером закреплен ответственный и предполагаемый исполнитель из реестра организаций. Реестр организаций представлен в виде иерархического дерева, каждая организация включает в себя перечень карточек должностей, подразделений и сотрудников.
Приложение использует Open Source ECM-систему Alfresco (система управления корпоративным контентом) как хранилище данных. В приложении применяются как стандартные сущности Alfresco, так и новые типы данных с расширенными свойствами.
Взаимодействие между клиентом и сервером осуществляется посредством REST-сервисов.
Вся бизнес-логика перенесена в клиентскую часть, что значительно увеличивает производительность и отзывчивость приложения и уменьшают нагрузку на сервер.
Технологии:
- Java Script
- ExtJS:
- MVC подход
- приложение целиком построено на ExtJS компонентах
- вместо CSS широко применялись ExtJS Layouts
- для взаимодействия с сервисами API Alfresco использовали связку Proxy и Store
- большое количество визуальных компонентов: таблицы, формы, вкладки, деревья и другие
- Alfresco 4.2.c (API: cmis, share, alfresco core)
- PostgreSQL
- RESTful Web Services
Инструменты:
- распределенная система контроля версий Bazaar
- система управления проектами Redmine
- Maven
- Jenkins
Скриншоты:
Особенности проекта:
- Требования заказчика по интеграции команды в его процессы и методологию разработки ПО.
- Большое количество технических сложностей, связанных с интеграцией с Alfresco, из-за отсутствия документации на все использованные сервисы.
- R&D задачи по интеграции ExtJS и Alfresco.
- Недельные итерации.
- Вынесение бизнес-логики в клиентскую часть.
- Создание собственных компонентов для библиотеки ExtJS.
Результат проекта: было успешно разработано веб-приложение, написанное на JS с использованием библиотеки ExtJS. Команда смогла интегрироваться в методологию и процессы заказчика, при этом также соблюдались принципы и подходы компании JazzTeam. Заказчики остались довольны уровнем производительности команды. Было решено большое количество технических сложностей.
Достижения компании на проекте:
- В сжатые сроки изучили и внедрили на практике новый инструмент - Bazaar.
- Все острые моменты, которые неизбежны при интеграции процессов разных компаний, были урегулированы в позитивном ключе.
- Практически все итерации были признаны заказчиками успешными.
Отзывы клиентов:
Павел Ледковский, Руководитель проектов, РАМЭК, Системный интегратор полного цикла, Москва, Россия
С командой JazzTeam мы стартовали разработку ПО на новой для всех нас технологической комбинации: джаваскрипт-клиент ExtJS 4 к веб-сервисам Альфреско. Проект инвестиционный и сроки, за которые надо показать существенный прогресс, весьма сжаты.
В процессе работы команда показала, что может успешно участвовать в разработке в стрессовых условиях нашего процесса, который характеризуется очень короткими спринтами (1 неделя) и высокими требованиями к качеству каждого релиза (через пару часов после релиза система может быть уже обновлена у заказчика). Результат работы был успешно презентован инвестиционной дирекции, поставленные цели признаны достигнутыми.
Хочу особо отметить, что в этом проекте пару раз возникали действительно острые ситуации, которые в высшей степени профессионально переводились в конструктивное русло. В результате принимались и, что существенно, быстро приводились в исполнение важные управленческие решения, вводились корректировки процесса. За это огромное спасибо всем участникам, которые своим пониманием сути проблем и профессиональным отношением к делу, позволили достичь действительно высокого уровня взаимодействия и обеспечить достойное качество результата разработки территориально удалённой команды.
Центр обработки телекоммуникационных данных
Краткое описание проекта: внедрение, разработка и поддержка Continuous Integration для крупного, динамично меняющегося, многокомпонентного веб-приложения в сфере телекоммуникаций. Создание автоматизированных тестов для сложного веб-интерфейса и покрытие REST сервисов. Создание инфраструктуры для автоматической сборки и тестирования приложения, использование Jenkins и большого количества плагинов к нему, Linux администрирование и автоматизирование администрирования. Выстраивание процессов управления тестами. Стабилизация CI.
Технологии: Linux, NAT, Bash; Jenkins; Maven, Ant, Ivy; TestLink; Jira, Greenhopper; ClearCase, Perforce, GIT, GitLab; TestNG, HtmlUnit, Sikuli, Selenium, WebDriver, JavaScript (Java Applet testing); WireShark; Java, Spring LDAP, ActiveDirectory, Apache POI, Jsoup, PdfBox, XPath, Groovy; HTTPS, SSL.
Особенности проекта:
- Интерфейс написан с использованием библиотеки GWT, и был неудобен с точки зрения его тестирования, например, id для веб-элементов генерировались автоматически.
- Использовались сложные компоненты, которые невозможно было протестировать с помощью Selenium, в таких случаях использовалась библиотека Sikuli.
- Использование DDT тестов - вся информация для заполнения модели для тестов бралась из xls-файла.
- Создание полного набора скриптов для сборки и установки компонентов приложения.
- Установка и настройка Jenkins и необходимого окружения для сборки и работы приложения.
- Тестируемое веб-приложение разворачивалось на нескольких серверах, часть сервисов приложения представлены отдельными серверами со своими специфическими настройками. Одно из требований заказчика - возможность быстрой инсталляции приложения на серверах клиента.
- Создание Pipelines на Jenkins’e для прохождения полного цикла: обновление исходников, сборка, установка, тестирование. Параллелизация билдов.
- Распределённая команда разработчиков (англо и русскоязычная), участники которой находятся в разных часовых поясах (максимальная разница составляла 11 часов).
Результат проекта:
- Continuous Integration успешно внедрён во все фазы проекта.
- Команда установила хорошее взаимопонимание с заказчиком, все претензии, проблемы и несостыковки обсуждались открыто и решение всегда принималось во внимание всеми членами команды.
- Восстановлена работа старых тестов.
- Установлено и настроено окружение для автоматизации сборки и тестирования приложения.
- Написаны тесты для web и REST частей приложения, так же тесты для сложных визуальных компонентов с использованием библиотеки Sikuli. Новые тесты написаны с более детальной проверкой.
- Были созданы кастомизированные Groovy шаблоны писем для Jenkins, которые заполнялись информацией о результатах сборки.
- Заказчик остался очень доволен результатами взаимодействия с нашей компанией.
Достижения компании на проекте:
- Посредством создания карт памяти в краткие сроки была освоена новая предметная область.
- Практически все итерации были признаны заказчиком успешными.
- На проекте было применено большое количество ранее не использовавшихся технологий и библиотек.
- Была изменена структура тестов. Тесты разбиты на независимые друг от друга группы, что уменьшило зависимость между результатами прохождения тестов и исключило дублирование кода. Мы смогли осуществить глубокий рефакторинг существующих тестов, применили ООП. Отчёты тестов стали более информативными и структурированными. Расширена система логгирования, улучшена обработка исключений. Это позволило быстрее вносить изменения в существующие тесты, поддерживать их в актуальном состоянии.
- С помощью Sikuli был протестирован интерфейс, который представляет собой изображение диаграммы, взаимодействие с которой обрабатываются через JavaScript (пользователь совершает действие > JavaScript отправляет данные на сервер > сервер генерирует новое изображение и отправляет его пользователю)
Xml2selenium – собственная разработка компании JazzTeam
Краткое описание проекта: продукт XML2Selenium - это расширяемая, плагинная платформа для создания и управления автоматизированными тестами на основе технологии Java. XML2Selenium имеет интеграцию с JUnit, работает поверх Selenium (это изменяемо). XML2Selenim позволяет создавать автоматизированные тесты в простом и понятном обычному (без навыков программирования) QA инженеру формате. XML2Selenium позволяет также управлять всеми стадиями работы с автоматизированными тестами, начиная от стадии создания, и заканчивая управлением тестами. XML2Selenium охватывает все ключевые проблемы автоматизации тестирования, и предлагает элегантное и простое решение - использовать XML в качестве языка написания тестов. XML2Selenium интегрирован с Maven, Jenkins, Junit, Selenium, BrowserStack.
Технологии:
- JS библиотеки/плагины: JQuery, CodeMirror, TreeView, Vkbeautify, AnglarJS
- Web/Automation: Selenium, WebDriver, XML/XSLT/XSD/XPath
- Другое: Mockito, JUnit, Jetty, Groovy, Reflection, Jaxb2, Xuggle (video recording), custom plugin architecture
Инструменты:
- Jenkins
- Maven
- Git+Gerrit (extreme programming tool)
- Track
- Nexus
Особенности проекта:
- Фреймворк представляет собой расширяемую плагинную систему.
- Работа по методологии Scrum.
- Cоздание собственного DSL (domain specific language) на основе XML (что позволяет писать тесты человеку, не обладающему знаниями программиста) с поддержкой наследования, переопределения, повторного использования кода, переменных, условий и так далее.
- По окончанию выполнения тестов, формируются отчёты (business, behaviour, technical) в виде html-страниц, в процессе разработки приложение тестировало свои-же отчёты.
- Полный цикл разработки от формирования требований до внедрения и обучения пользователей, осуществления технической поддержки, проработки документации и мануалов на разных языках, в том числе и интерактивного мануала в виде веб-приложения для обучения начинающих пользователей.
- Возможность самотестирования фреймворка с использованием data driven подхода (DDT).
- Интеграция с BrowserStack, JUnit, Maven, Jenkins, Selenium, WebDriver, Nexus, Eclipse, Intelij IDEA.
Результат проекта: была создана платформа, охватывающая все ключевые проблемы автоматизации и тестирования. Продукт имеет широкий спектр полезных свойств в области автоматизации, таких как поддержка записи тестов на видео, снепшотов (исходники html страницы) и скриншотов страниц, Groovy и JavaScript выражений, поддержки объектно-ориентированного программирования на XML, и многих других. Был успешно проведен старт продаж и создан сайт продукта http://xml2selenium.com.
Была произведена инсталляция продукта множеству клиентов и внедрение у них автоматизации тестирования. Пользователи остались довольны уровнем производительности команды и оставили хорошие отзывы как о продукте, так и о работе компании.
Достижения компании на проекте:
- Объединение Maven, Jenkins, JUnit, Selenium, XML в единую систему.
- Создание расширяемой плагинной архитектуры, вдохновлённой плагинной системой Eclipse.
- При разработке приложения было написано большое количество различных тестов (несколько тысяч), которые могут послужить отличным примером для других пользователей xml2selenium. Большинство таких тестов, которые тестируют продукт XML2Selenium, написаны с использованием XML2Selenium, то есть компания смогла во время разработки продукта внедрить его же в постоянное использование.
- Формализация процессов (разработка, внедрение, релизные активности, поддержка, продвижение продукта, обучение пользователей)
- Интеграция со многочисленными средствами разработки и полезными инструментами, например BrowserStack.
Отзывы клиентов:
Хайн Реммен, Руководитель производственного отдела, Ezwim, Лидер Европейского рынка в технологиях управления телекоммуникационными данными, Амстердам, Нидерланды
Так как мы ежемесячно выпускаем новые версии нашей платформы, нам приходится тратить достаточно много времени на создание регрессионных тестов вручную.
Компания "JazzTeam" помогла нам полностью автоматизировать все наши регрессионные тест-кейсы и выстроила необходимую для нас инфраструктуру тестирования. Продукт компании "JazzTeam" - фреймворк XML2Selenium позволил нашим тестировщикам без знаний Java создавать и использовать новые тест скрипты. А отчеты в XML2Selenium помогают нам быстро определять баги и проблемные области в нашей платформе. В то время как интеграция с BrowserStack позволяет нам осуществлять тестирование в любых желаемых комбинациях браузера и ОС, без дополнительных усилий с нашей стороны.
Компания "JazzTeam" обеспечила прекрасную поддержку своего продукта и оперативно решала все возникающие вопросы и проблемы.
Брэм Кул, CEO, Ezwim, Лидер Европейского рынка в технологиях управления телекоммуникационными данными, Амстердам, Нидерланды
Сейчас дела у нас обстоят гораздо лучше: теперь мы работаем на опережение и находим баги раньше, чем сделает это заказчик. Автоматизация тестирования позволила нашим тестировщикам, сэкономив их время, сфокусироваться на других важных аспектах функциональности и качества продукта. И как результат, мы смогли предложить нашим заказчикам сервис более высокого уровня, более качественный и стабильный.
Маркетинговая платформа анализа данных сайта stackexchange.com
Обоснование созданной платформы: в настоящее время системы анализа данных получили широкое распространение:
- Корпорации всё большее внимание уделяют анализу своей деятельности с целью оптимизации бизнеса, снижения расходов и, как следствие, повышения прибыли.
- Снижение стоимости хранения данных приводит к тому, что данные не удаляются, а сохраняются в архивы. Эта тенденция позволяет осуществлять анализ всё больших и больших объёмов сохранённых данных.
- Снижается стоимость вычислительных ресурсов, в том числе предоставляемых через облачные сервисы. При этом нет необходимости в покупке, поддержке и обновлении своих вычислительных систем. Данная тенденция облегчает выход на рынок систем анализа и обработки данных.
Требования к системе:
- Возможность масштабирования для сколь угодно больших объёмов данных без необходимости переработки алгоритмов.
- При работе системы не должно приостанавливаться функционирование приложения, данные которого анализируем.
- Качественая визуализация полученных результатов.
- Возможность быстрого поиска по результатам анализа, обеспечиваемая хранение результатов анализа.
- Возможность развёртывания системы в облачой среде Amazon Web Services.
Краткое описание проекта: cайт stackexchange.com — это растущая сеть сообществ по интересам, обменивающихся между собой информацией по различным направлениям. Цель ресурса — сбор качественных вопросов и ответов на основе опыта каждого сообщества. Сайт вопросов-ответов stackexchange.com по своей сути является динамическим источником знаний. Поскольку сообщество наполняет сайт информацией ежедневно, сайт можно считать слепком актуальных знаний на сегодняшний день.
Интерес к структурированию информации и получению общей картины может возникать во многих случах:
- Я, как производитель комплектующих для велосипедов, делаю маркетинговое исследование: какие вопросы наиболее волнуют людей и какие недостатки они обсуждают в комплектующих. Я хочу это использовать для улучшения продукции, либо как упор для рекламной компании.
- Я хочу написать книгу по заданной тематике, например Иудейство. Помимо анализа литературных источников меня интересует, какие вопросы наиболее обсуждаемы, чтобы на них ответить в своей книге.
- Я, журналист тематического ресурса, хочу знать актуальные обсуждаемые вопросы и писать полезные обзорные статьи, которые бы привлекали большое внимание и увеличивали популярность моего ресурса.
Технологии и платформы:
Big data analyses: Apache Hadoop, Apache Mahout (machine learning library)
Cloud services: Amazon Elastic Map Reduce, Amazon S3, Amazon EC2 (for databases and web applications)
Databases: Neo4j graph database, MongoDB cluster
Java and Web technologies: core Java, Map-Reduce API, Struts 2, AngularJS, D3.js visualization library, HTML, CSS, Twitter bootstrap
Unit-testing: JUnit, MRUnit, Approval tests for Map-Reduce
Архитектура платформы:
Расчёт данных:
Источником данных является дамп stackexchange.com. Для обработки данных используется кластер вычислительных машин, в завимимости от объёма обрабатываемых данных количество машин может быть изменено. Система была задеплоена в облако Amazon, использовался сервис Amazon Elastic Map Reduce, предоставляющий Hadoop-кластеры по требованию.
Поверх вычислительных машин развёрнута распределённая файловая система HDFS. Данная система позволяет хранить файлы большого размера одновременно на нескольких машин, а также выполнять репликацию данных. Поверх HDFS развёрнут фреймворк Apache Hadoop, который позволяет запускать распределённые вычисления в кластере, пользуясь локальностью данных. Поверх кластера вычислительных машин и фреймворка Apache Hadoop расположено приложение для анализа данных, которое содержит реализованные алгоритмы подготовки, обработки и анализа данных. Приложение использует библиотеку алгоритмов машинного обучения Apache Mahout.
Для всех сайтов stachexchange.com данные представлены в едином XML-формате: вопросы, ответы, комментарии, данные пользователей, рейтинги и многое другое.
Алгоритм обработки и анализа данных stackexchange.com:
- Подготовка данных для анализа.
- Преобразование текста в векторную форму.
- Кластеризация вопросов.
- Интерпретация результатов.
Подготовка данных:
Алгоритм предобработки текста выглядит следующим образом:
- Выделение из текста токенов (слов), разделённых пробелом.
- Приведение текста к нижнему регистру.
- Удаление частоупотребимых слов, не несущих смысловой нагрузки, таких как "what", "where", "how","when", "why", "which", "were", "find", "myself", "these", "know","anybody"...
- Удаление слов, не входящих в рамки по длине.
- Приведение слов в начальную форму, отбрасывание окончаний, падежей, суффиксов и так далее. Для приведения слов в начальную форму удобно использовать алгоритм Стеммера Портера.
Кластеризация:
Кластеризацией, или неконтролируемой классификацией текстовых документов, называется процесс распределения множества текстовых документов по группам на основании схожести их содержания. Группы также должны определяться автоматически. Традиционно в качестве модели документа используется линейное векторное пространство. Каждый документ представлялся как вектор, то есть массив всех и наиболее часто встречающихся слов. Затем для расчета используется, например, евклидово расстояние. Векторное представление представляет собой массив всех или наиболее часто используемых слов документа или n-граммов, то есть последовательностей нескольких слов. Для векторизации был выбран алгоритм TF-IDF, так как он учитывает частоту слов относительно всего набора данных и позволяет уменьшить вес частоупотребимых слов, и, наоборот, увеличить вес уникальных слов для каждого вопроса.
Распределённая версия алгоритма кластеризации К-средних выглядит следующим образом:
- Выбирается k случайных точек как центры кластеров.
- Данные распределяются равномерно по машинам вычислительного кластера.
- Каждая машина итеративно обходит все объекты и вычисляет расстояние до ближайшего центра кластера. На выходе записываются пары объект-кластер.
- Объекты группируются по новым назначенным кластерам, перераспределяются по вычислительным машинам.
- Каждая машина итеративно обходит пары объект-кластер и пересчитывает центры кластеров.
- Вычисляется смещение нового центра кластера относительно предыдущего.
- Алгоритм повторяется, пока смещение кластеров не станет меньше заданной величины, либо пока не выполнится заданное количество итераций.
Хранение данных:
Результаты анализа хранятся в нескольких базах данных: граф-ориентированной Neo4j и документно-ориентированной MongoDB. Это позволит эффективно хранить структуру и взаимосвязи объектов в виде графа, в то же время хранить содержание объектов — текстов вопросов в виде документов.
Серверы баз данных были развёрнуты в облаке Amazon, использовался сервис Amazon EC2.
Визуализация и перемещение данных:
Отображение результатов в виде схем, графиков и диаграмм выполняет веб -приложение. Для перемещения данных в HDFS предусмотрен сервер миграции. После обработки данных результаты сохраняются в HDFS. Для их добавления в базы данных предусмотрена специальная утилита импорта, которая работает поверх Map-Reduce.
На протяжении работы системы поступают обновления данных. При каждом обновлении нет нужды всякий раз переносить все данные снова в HDFS и запускать снова дорогостоящие вычисления. Для решения этой проблемы предусмотрен Redis - база данных, работающая в памяти с высоким быстродействием. Сервер миграции копирует данные информационной системы и сохраняет хеш-ключ каждой записи. При повторной загрузке данных в HDFS сервер миграции проверяет, не была ли текущая запись загружена ранее, выполняя запрос в базу данных, работающую в памяти.
Для отображения результатов было реализовано веб-приложение. Серверная часть приложения реализована на языке Java и выполняет запросы к граф-ориентированной и документно-ориентированной БД. Клиентская часть реализована с применением технологий JavaScript (AngularJS, JQuery) и HTML, CSS, Twitter bootstrap.

Один из скринов приложения визуализации. Группы вопросов обозначены кружками, в центре круга ключевое слово для всех вопросов в группе и количество вопросов.
Объем данных, обработанных системой:
Объект | Объём архива 7z | Объём распакованных данных |
Дамп всех данных сайта stackexchange.com | ~15,7 ГБ | ~448 ГБ |
Данные сайта stackoverflow.com | ~12,1 ГБ | ~345 ГБ |
Данные сайта serverfault.com | ~303 МБ | ~8,6 ГБ |
Результат проекта: developed platform позволяет выполнить анализ данных сайта stackexchagne.com и увидеть общую картину содержимого сайта. Система выполняет сбор и загрузку исходных данных, подготовку их к обработке, кластеризацию, а также хранение и интерпретацию результатов анализа. В результате разработки системы были решены задачи cбора и загрузки исходных данных, хранение данных на множестве машин, а также защиты от сбоя в случае выхода из строя одного их жёстких дисков, подготовки данных к обработке с применением фильтрации векторизации, обработки данных на кластере из множества машин, хранения и интерпретации результатов. Большое преимущество даёт использование облачных сервисов Amazon так как они избавляют от необходимости настраивать всю инфраструктуру вручную.
Достижения компании на проекте:
- Была освоена и внедрена библиотека машинного обучения Apache Mahout.
- Успешно внедрена граф-ориентированная база данных Neo4j.
- Разработана серия Map-Reduce задач для предобработки данных.
- Подобраны оптимальные коэффициенты для алгоритмов машинного обучения.
Java-апплет для обучения и тестирования
Краткое описание проекта: разработанная система позволяет лечить пациентов с психическими заболеваниями по авторской методике профессора медицины. В качестве реализации была выбрана технология Java Applets. Апплет загружает обучающие и тестовые сценарии с media-сервера. Для описания сценариев используется специализированный DSL (Domain Specific Languages) на основе XML. Апплет поддерживает множество форматов упражнений, таких как Drag and Drop, выбор правильного ответа из предложенных, ввод текста и другие. Внешний вид упражнений создаётся с помощью визуального редактора NetBeans IDE в виде java swing-форм. Апплет динамически загружает swing-формы с media-сервера и отображает их. Это позволяет создавать тестовые сценарии непосредственно медицинским работникам без участия программиста. Кроме форматов упражнений апплет поддерживает различные спецэффекты, такие как скроллинг, флешинг и плавные переходы.
Технологии: Java Applets, AWT/Swing, Restful web-services, NetBeans forms, Custom classloading, Maven, Jenkins, SVN, Jira Agile, JUnit, Applet UI-testing features (FestSwing).
Видео:
Скриншоты:
Особенности проекта:
- Тестовые скрины и формы разрабатывались в визуальном редакторе NetBeans IDE и размещались на media-сервере, апплет соединялся с сервером, загружал формы и воспроизводил их в тестовых сценариях.
- Для описания тестовых сценариев был разработан специализированный DSL1 на основе XML.
- Очень короткие итерации, два релиза в неделю.
- Использование Jira, Agile для ведения задач, использование электронной скрам-доски.
- Применение Data Driven Testing подходов.
- Подписывание приложения коммерческим сертификатом заказчика.
- Программные автоматизированные UI-тесты для апплета с использованием класса Robot.
- Кастомизация множества swing-компонентов, создание кастомных эффектов в swing-приложении.
Результат проекта:
- С помощью апплета была апробирована новая методика лечения людей с психическими заболеваниями, разработанная профессором медицины.
- Апплет был успешно внедрён во множество медицинских учреждений(госпиталей).
- Использование апплета заказчиком позволило сократить стоимость медицинских услуг по лечению психических заболеваний.
Достижения компании на проекте:
- Компанией было предложено множество интересных архитектурных и технических решений:
- подход с разработкой тестовых скринов в NetBeans IDE, что позволило заказчику без навыков программирования разрабатывать обучающие и тестовые сценарии для лечения;
- собственный DSL для описания обучающих и тестовых сценариев;
- кастомизация Swing-компонентов и добавление различных спецэффектов.
- Был установлен весь необходимый environment на сервере заказчика для работы всей системы.
- Заказчику было предложено множество новых идей и подходов, некоторые из них были реализованы.
- Команда успешно справлялась со своими задачами в условиях жёсткого временного графика, очень коротких итераций и нестандартных архитектурных и технических решений.
Отзывы клиентов:
Хайме Симон, Менеджер проекта, Euglia Telemedicina, Медицинская компания, специализирующаяся на лечении, обучении и научных исследованиях, Бадалона, Испания
IT-аутсорсинг - мощный инструмент в руках профессионалов. Чтобы IT-проект был успешен, необходимо выполнение трех условий: постоянный обмен информацией, техническое совершенство и высокие требования к качеству. Разработчики компании JazzTeam полностью отвечали данным требования в процессе работы над проектом для компании Euglia Telemedicina.
Веб-интерфейс системы отслеживания географического положения объектов на Google-картах
Краткое описание проекта: система отслеживания положения людей и других физических объектов на Google-карте. У отслеживаемого объекта имеется специальное GPS-устройство, которое отправляет информацию на сервер. Сервер сохраняет и обрабатывает географические координаты. Созданные нами веб-интерфейс позволяет размечать на Google-карте специальные области. При попадании физического объекта в эти географические области, срабатывают нотификации. GPS-устройства так же могут быть оснащены тревожными кнопками. Это может быть применено для присмотра за детьми или престарелыми родителями, чтобы определить, находились ли они на определённой территории. Задачей команды была разработка веб-интерфейса, расширяющего стандартные возможности Google-карт. Был добавлен инструмент рисования геозоны, после того как зона была нарисована, выполнялся алгоритм аппроксимации фигуры (сглаживания). Пользователь может редактировать геозоны, растягивать их, добавлять новые точки, а так же присваивать текстовые метки. Веб -интерфейс отображает созданные пользователем геозоны, используя API сервера Wialon Kit.
Технологии: JavaScript, Google Maps API, HTML, CSS, Wialon Kit - saas platform for GPS tracking, Git, Redmine.
Особенности проекта:
- Работа по методологии Agile, ежедневные митинги, демо.
- Большая доля R&D задач, в том числе и на разработку математического алгоритма аппроксимации.
- Микро-релизы практически каждый день.
- Короткие сроки разработки.
Результат проекта:
- Был реализован и передан backend-разработчикам Веб-интерфейс работы с геозонами на Google-картах.
- Все требования заказчиков были выполнены.
- Все итерации проекта были успешными.
- Была проведена эстимация задач на разработку аналогичного решения для Яндекс-карт.
Достижения компании на проекте:
- Был разработан, применён и успешно адаптирован алгоритм аппроксимации кривой, что представляло максимальный риск на данном проекте. Команда занималась оптимизацией алгоритма до тех пор, пока он не начал полностью устраивать заказчика.
- Был проведён R&D по кастомизации стандартных возможностей Google-карт, были найдены решения, удовлетворяющие требования заказчика.
Отзывы клиентов:
Денис Помозов, CEO, IDC Intech, разработка программного обеспечения, Вильнюс, Литва
С компанией JazzTeam мы стартовали разработку проекта с применением технологий и устройств GPS и специализированных серверов, отвечающих за геопозиционирование. Система должна была иметь интерактивный веб-интерфейс на основе Google и яндекс-карт с применением их API.
Команда JazzTeam проявила хорошие способности R & D для разработки и реализации математического алгоритма апроксимации географических областей, рисуемых на картах, что представляло нетривиальную задачу и могло повлечь большие риски. Все задачи были реализованы в срок или с опережением срока. Команда JazzTeam шла нам на встречу, были успешно преодолены все спорные моменты.
Большое внимание разработчики JazzTeam уделяют коммуникации и чётко поставленным проворный-процессам. Ими учитывались все наши пожелания и отзывы, предлагались новые идеи, были выполнены все доработки, которые позволили создать продукт максимально удобным для пользователей.
Дополнительно хочеться отметить, что предыдущие разработчики не смогли реализовать данную задачу.
Приложение-эмулятор мыши для Android-устройств
Краткое описание проекта: исследование возможности реализации следующего функционала на платформе Android: Поверх всех приложений отображается картинка “мыши”, которую можно перемещать по экрану. Мышь содержит большую кнопку, по нажатию на которую выполняется нажатие в соответствующую позицию экрана. Такая мышь может быть полезна, к примеру, девушкам с длинным маникюром, которым из-за этого не удобно пользоваться сенсорным экраном, либо людям с толстыми пальцами, которые не могут нажать на маленькие иконки интерфейса Android.
Технологии: Java, Android, Android NDK, JNI, Eclipse, Linux
Особенности проекта:
- Системное программирование под Android
- 100% Research & Development
- Короткие итерации, постоянное проведение brainstorming
В рамках исследования были сделаны следующие задачи:
- Создание прозрачного приложения, при нажатии на определённую точку отправляется событие нажатия на указанные координаты. Для этого пришлось использовать специальные классы Android, которых нет в API: ServiceManager и IWindowManaget. Были созданы классы-заглушки с пустыми методами, код компилировался с ними. При сборке приложения данные классы не включались, поэтому после установки на Android-устройство приложение использовало системные классы.
- Был найден способ по отправке сообщений в ядро Linux на Android. Для этого была использована технология JNI и библиотека на языке C. Был сделан пример приложения, взаимодействующего с ядром Linux и отправляющим touch-события на определённые координаты. Был найден способ получения списка всех устройств ввода c помощью linux-команды. Был найден способ перехватывания значений, полученных с сенсора.
- Была исследована возможность программного получения root-доступа к устройству для запуска перечисленных выше возможностей. Проблема состоит в том, что получить root доступ нужно по разному для разных девайсах, и для этого используются специальные хаки. Некоторые девайсы вообще не могут быть рутированы.
Результаты исследования:
- Была выявлена проблема: для реализации требований заказчика, приложение должно быть подписано сертификатом производителя телефонов. Это накладывает ограничение на выкладывание приложения в маркет.
- Также для отправки тач-событий необходим рутированный доступ к устройству. Это не позволит выкладывать приложение в маркетах и существенно ограничит множество устройств, на которых приложение может быть запущено.
- Также для использования нужных нам событий необходимо, чтобы приложение было установлено, как системное.
Достижения компании на проекте:
- Было проведено исследование о возможности создания приложения - мыши для Android-устройств.
- Команда разобралась с системными нюансами платформы Android.
- Заказчику был сделан обоснованный отчёт о проблемах и трудностях подобной разработки.
Отзывы клиентов:
Борис Мамоненко, CEO, EleganceIt, Информационные технологии и услуги, Беларусь
Дмитрий открытый человек, он полон идей, с ним очень легко работать. Его команда (Jazzteam) выполняла технически довольно сложный исследовательский проект. Дима проявил себя не только как опытный Java разработчик, но и как невероятно талантливый руководитель. Он никогда не скажет вам “НЕТ”, его ответ будет: - "Дайте мне время и я скажу вам, как это сделать”. Большое ему спасибо!
Биллинговая система для провайдера мультимедийных каналов
Краткое описание проекта: разработка нового функционала для уже успешно работающего приложения. Приложение представляет собой автоматизированную систему учета предоставленных услуг (пакеты мультимедийных каналов для различных типов устройств), их тарификацию и выставления счетов для оплаты. Приложение ориентированно в первую очередь на Великобританию, Европу.
Весь сервис состоит из трёх частей:
- Серверная часть - Java-приложение, содержащее: модель данных, утилиты, сервисы для работы с базой данных и веб-сервисы.
- Клиентская веб-часть - JSP, CSS и JS.
- Модуль администрирования - десктопное Java-приложение, с UI реализованным на Swing.
Технологии: Java 5 (EJB, DAO, Swing), Oracle, SQL, Quartz, JBoss, Ant, PVCS (Serena PVCS Version Manager), Rally, Timesheet, Eclipce, Oracle SQL Developer.
Скриншоты:
Особенности проекта:
- Вся работа осуществлялась на удалённых машинах.
- Редкая система контроля версий проектов PVCS.
- Двухнедельные итерации.
- Все общение проходило только на английском языке.
- Для сохранения состояния и передачи состояния между UI и серверной частью широко использовался паттерн Memento.
Результат проекта: в рамках работы над проектом был разработан новый функционал (была расширена модель данных, созданы новые контроллеры, функциональные формы, оптимизированы и расширены возможности существующих форм в модуле администрирования), исправлен ряд багов, произведена более тонкая настройка JBoss (шифрование паролей баз данных, безопасная аутентификации и т.д.).
Достижения компании на проекте:
- Все итерации прошли успешно.
- Были освоены и задействованы в производстве ранее неиспользуемые технологии.
- Были успешно решены задачи, требующие творческого подхода и нестандартного мышления.
- Успешное внедрение и использование компонентов Swing (GroupLayout), не входящих в стандартный состав Java 5.
- Была оптимизирована конфигурация JBoss. Результатом оптимизации стала повышенная секьюрность приложения.
Отзывы клиентов:
Андрей Раткевич, R&D Director, EffectiveSoft, разработка программного обеспечения, резидент Парка высоких технологий, Минск, Беларусь
Мы сотрудничали с компанией JazzTeam на проекте, связанном с разработкой нового функционала комплексной биллинговой системы учета предоставленных услуг в медиаиндустрии. Хотелось бы отметить в рамках реализации этого проекта четкую, конструктивную и квалифицированную работу разработчиков, адекватный менеджмент, прозрачность и оперативность в работе. В условиях удаленной работы и распределенной команды инженеры JazzTeam смогли успешно взаимодействовать со всеми сторонами на проекте, быстро и слажено решать возникшие сложности и обеспечить достойное качество результата разработки.
Спасибо вам за быстрое реагирование на все вопросы в процессе работы, за высокий уровень компетенции и деловой подход.
Разработка SaaS решения для продукта XML2Selenium
Краткое описание проекта: главной целью проекта является предоставление платформы для разработки автоматических тестов на XML2Selenium в виде SaaS-решения. Это позволит существующим клиентам использовать XML2Selenium без необходимости ручной настройки рабочего окружения, тем самым экономя ресурсы и время системных администраторов. Новые клиенты получают возможность сразу же начать пользоваться продуктом после оплаты и регистрации учётной записи. Также пользователи фреймворка теперь могут не покупать полную enterprise-лицензию, а платить за фактическое использование фреймворка, что позволит оптимизировать расходы и привлечь новых клиентов.
В ходе выполнения проекта был разработан удобный интерфейс - личный кабинет пользователя. В системе можно создать сервер с настроенным XML2Selenium. По умолчанию на сервере загружен тестовый проект для демонстрации работы XML2Selenium. Также пользователь может посмотреть статистику по серверу - сколько сервер работал и сколько это стоило. При необходимости можно отключить сервер или удалить его, просмотреть его логи. Есть возможность скачать продукт для локального использования.
Технологии: Java, Spring MVC, Hibernate, Quartz, MySql, Angular JS (JavaScript Framework), Bootstrap (HTML и CSS Framework), Infobox Cloud (создание удаленных серверов), Jenkins, Nexus, SVN.
Особенности проекта:
- Создание удаленных серверов с установленными и настроенными: Jenkins, XML2Selenium.
- Программный коммит тестового проекта XML2Selenium в репозиторий.
- Интеграция с сервисом лицензии.
Достижения компании на проекте:
- Создание более привлекательных условий использования XML2Selenium текущими и новыми клиентами.
- Интеграция с облаком Infobox Cloud.
- Конфигурация шаблона сервера, с настроенным Jenkins в системе Infobox Cloud.
- Использование SVN API, для программного взаимодействия с репозиторием.
Система управления ресурсами проектов
Краткое описание проекта: разработанный программный продукт представляет собой систему для ведения отчетности выполненных работ и затраченного времени исполнителями и их заказчиками. Система позволяет отслеживать результаты работы по различным проектам, представлять отчетность в наглядной форме. Разработанная система призвана упростить взаимодействие компании и ее клиентов, повысить прозрачность процесса выполнения работ, а также увеличить эффективность учета временных затрат.
Технологии: Java, MySQL, Apache Maven, JPA (Hibernate), JTA (Spring), SOAP Web-Services, RESTful-Services(Spring), Spring Security, AngularJS, JUnit, Xml2Selenium, Apache Tomcat, Jenkins, SVN.
Особенности проекта:
- Реализована технология единого входа (Single Sign-On), что позволяет пользователю переходить из одного раздела системы в другой без повторной аутентификации.
- Выполнена интеграция с несколькими сторонними бизнес-системами.
- Использование MVVM JavaScript фреймворка AngularJS для построения пользовательского интерфейса, что позволило добиться высокой отзывчивости и надежности.
- Вынесение части бизнес-логики на клиентскую часть приложения.
- Создание кастомных компонентов пользовательского интерфейса посредством реализации собственных AngularJS директив.
- Взаимодействие с удаленными командами разработчиков.
- Работа с англоязычным заказчиком.
Результат проекта:
- Проведение бизнес-анализа требований в результате непосредственного общения с заказчиками.
- Система успешно была внедрена и использовалась для работы в компании заказчика еще на завершающей стадии разработки.
- Произведена гибкая настройка сборок Continuous Integration для различных окружений.
Достижения компании на проекте:
- Успешно внедрен продукт Xml2Selenium для тестирования пользовательского интерфейса, а также для написания интеграционных тестов.
- На ранних стадиях разработки были реализованы необходимые mock-системы, что позволило в дальнейшем без проблем интегрироваться с реальными бизнес-системами.
Социальная сеть для творческих людей
Краткое описание проекта: проект представляет собой тематическую социальную сеть для творческих людей, которые объединяются в хабы (сообщества) для общения/обмена медиа-контентом и совместной работы над проектами как коммерческими, так и некоммерческими. Пользователи обладают различными ролями; имеют в своем распоряжении ленту собственных постов, с возможностью ограничивать права доступа к ней, а также многофункциональный календарь с большим количеством разных событий.
Основные отличия от других социальных сетей:
- Тематическая составляющая - фокус сделан на творческих личностях.
- Возможность ведения бизнеса - возможность создавать и вести публичные/приватные проекты.
Социальная сеть построена из серверной и клиентской частей. Клиентская часть - веб-приложение, построенное в основном на Ajax, вёрстка с применением фрэймворка-шаблонизатора Tiles и языка стилей Less. Серверная часть - предоставляет собой набор REST сервисов, что даёт возможность создать несколько клиентских приложений (web, mobile и т.д.). При разработке приложения активно использовался Hibernate, Spring MVC.
Технологии: JQuery, Less, Tiles, Java 7, Hibernate, Spring MVC, MySQL, Jackson; Apache Tomcat, Maven, Redmine, Git, GitHub, Swagger, IDEA, Bootstrap.
Скриншоты:
Особенности проекта:
- Проект включает в себя два приложения:
- серверное приложение, которое представляет собой набор сервисов (Restful API);
- клиентское приложение, которое было реализовано при помощи самостоятельно разработанного JS-фреймворка (наподобие - AngularJS, KnockoutJS).
- Разделение команды на backend и frontend разработчиков;
- В качестве системы управления кодом использовался сервис GitHub:
- разработка серверной и клиентской частей велась в двух разных ветках, которые впоследствии мержились в одну ветку мастера;
- На проекте одновременно работало более 20 разработчиков, большинство из них находилось в разных офисах.
- Разработка велась с соблюдением всех Scrum процессов:
- ежедневные статус-митинги;
- Redmine в качестве системы управления проектов;
- planning poker;
- перекрестное ревью.
Результат проекта:
- Проведение бизнес-анализа требований в результате непосредственного общения с заказчиками.
- Система успешно была внедрена и использовалась для работы в компании заказчика еще на завершающей стадии разработки.
- Произведена гибкая настройка сборок Continuous Integration для различных окружений.
Достижения компании на проекте:
- Быстрое погружение в предметную область, технические детали проекта за весьма короткий срок.
- Успешно решен ряд задач, связанных с оптимизацией имеющегося кода и написанием нового функционала.
- Создан и успешно внедрен прототип поисковых веб-сервисов, основанный на Hibernate Search. В процессе реализации сервисов была выполнена значительная кастомизация имеющихся поисковых фильтров.
- Команда успешно справилась со своими задачами в ограниченных временных рамках.
Отзывы клиентов:
Сергей Кастюкевич, Технический директор, OCS Innovation Company (OCSICO), разработка программного обеспечения, Минск, Беларусь
Спасибо компании JazzTeam за проделанную работу. Команда разработчиков JazzTeam участвовала в разработке проекта по созданию тематической социальной сети для творческих людей. Несмотря на очень сжатые сроки проекта, команда JazzTeam быстро разобралась в существующих наработках. Сотрудники JazzTeam проявляли инициативу в решении спорных вопросов, постоянно шли на диалог, выступали в качестве консультантов по JavaScript. Работа отличалась прозрачностью и четкостью. Разработчиками был реализован сложный и объемный функционал на Hibernate с учетом всех наших требований.
Рекомендуем JazzTeam как опытного и надежного партнера, ответственно подходящего к работе на каждом этапе и уважающего интересы своих клиентов.
Веб-приложение в сфере образования
Краткое описание проекта: веб-приложение предоставляет преподавателям и студентам доступ к широкому кругу учебных ресурсов и инструментов. Зарегистрированные участники могут бесплатно просматривать и загружать актуальные учебные материалы. Пользователи разделены на два типа (преподаватели или студенты) и имеют разные роли и доступ к разным ресурсам. Через RSS-ленты и электронную почтовую рассылку пользователей уведомляют о новом контенте.
Основные задачи нашей команды заключались в разработке UI и серверной части приложения. На проекте использовался Adobe Experience Manager фреймворк программной системы (Content Management Framework), предоставляющий огромные возможности для разработки UI веб-сайтов. Особенностью Adobe Experience Manager является возможность разработки приложений, поддерживающих стандарт OSGi, позволяющий динамически переустанавливать компоненты и составные части приложения без необходимости останавливать и перезапускать его. Вместо обычной SQL базы данных был использован Java Content Repository (Apache Jackrabbit). Данные в JCR представляют собой дерево, состоящее из узлов с ассоциированными с ними свойствами. Для представления веб-страниц клиентской части использовались технологии JSP и JavaScript.
Технологии: Java, Adobe Experience Manager, Adobe Search&Promote, Apache Jackrabbit, Apache Sling, Apache Felix, JavaScript, Maven, Intelij IDEA, ExactTarget (переименован в октябре 2014 в "Salesforce Marketing Cloud"), GitHub. Redmine.
Скриншоты:
Особенности проекта:
- Проект является частью сети сайтов.
- Одна из команд разработчиков на стороне заказчика.
- Проект полностью создавался на Adobe Experience Manager.
- Для работы с рассылками писем пользователям использовался сервис ExactTarget.
Достижения компании на проекте:
- Был оперативно освоен и задействован Adobe Experience Manager.
- Успешно выполнены все поставленные задачи, касающиеся как UI, так и серверной части приложения.
- Реализована работа приложения с сервисом ExactTarget.
Отзывы клиентов:
Сергей Кастюкевич, Технический директор, OCS Innovation Company (OCSICO), разработка программного обеспечения, Минск, Беларусь
Мы считаем, что за время работы на проекте компания «JazzTeam» зарекомендовала себя, как надежный партнер, выполняющий взятые на себя обязательства в обусловленные сроки на должном уровне. В рамках задач по кастомизации UI и серверной части на нашем проекте разработчиками была также проведена интеграция с сервисом ExactTarget для работы с email-рассылками.
Со своей стороны, отметим высокий профессионализм сотрудников, творческий подход и оперативность действий. Все работы были выполнены на высоком уровне с учетом всех наших замечаний и предложений.
Приложение для управления обновлениями баз данных
Краткое описание проекта: приложение LiquibaseUpdater представляет собой обёртку над Liquibase. Данное приложение выполняет и контролирует процесс управления миграциями баз данных.
Приложение обеспечивает следующий функционал:
- Выполнение операций по заполнению базы данных.
- Получение параметров из произвольного файла конфигурации (по умолчанию config.properties).
- Получение схемы данных из произвольной директории.
Процедура по заполнению базы данных выполняется по определенным правилам, описанным в схеме данных Liquibase. Заполнение базы данных может выполняться в двух вариантах: до определенного тега схемы изменений либо полного заполнения базы по схеме.
Ведется лог процессов. Лог содержит как информацию, передаваемую на стандартный вывод, так и служебные сообщения об исключительных ситуациях. Каждый запуск приложения порождает отдельный файл лога.
Результат работы приложения выводится в консоли текстовой строкой статуса с указанием времени работы приложения и количества ошибок выполнения.
Состав и структура приложения
- Console application, interface, services.
- Главный модуль LiquibaseUpdater.
- Вспомогательные модули: Config, CommandLineResolver, LiquibaseManager, LiquibaseService, ExceptionLogger.
- Third-part библиотеки (Spring, Liquebase, Apache Commons).
Архитектура приложения:
Технологии: Liquibase, Spring, Apache-cli, JUnit, DBCP, MySQL, Oracle, Maven, Maven-jar, Maven-shade, Jacoco, XML, Liquibase log framework, Git, Jira, Confluence.
Особенности проекта:
- Распределённая команда - 3 страны, 3 города.
- Scrum/Agile - ежедневные скрам-митинги.
- В рамках задачи выполнялась реализация функционала, багфиксинг, покрытие тестами.
Результат проекта: Реализована возможность контроля по обновлениям версий баз данных с помощью приложения LiquibaseUpdater.
Достижения компании на проекте:
- Покрытие тестами проверялось с помощью Jacoco.
- Внедрены стандарты code-style и требования к качеству кода посредством Sonar.
- Внедрено Unit-тестирование.
Примеры:
Пример для накатки базы
- Полное обновление
./liquibase_updater.bat -verbose -install=d:/doc/changelog/rollback2tag/master.xml
- Обновление до тэга
./liquibase_updater.bat -verbose -config=config.properties -install=d:/doc/changelog/rollback2tag/master.xml -tag=version_0.1.0
Пример для роллбека базы
- Полный откат
./liquibase_updater.bat -verbose -force -config=config.properties -rollback=d:/doc/changelog/rollback/master.xml
- Откат до тэга
./liquibase_updater.bat -verbose -config=config.properties -rollback=d:/doc/changelog/rollback2tag/master.xml -tag=version_0.1.0
Откат всей базы требует дополнительного ключа -force.
Пример содержимого лога
Автоматизация тестирования веб-приложения, связанного c Geofence Marketing
Краткое описание проекта: основная цель проекта заключается в покрытии веб-приложения автоматизированными Selenium тестами. Данное приложение позволяет с помощью Geofencing привлекать внимание потенциального покупателя, находящегося в заданном радиусе от объекта, и тем самым получить дополнительные выгоды владельцу бизнеса.
Geofencing — современный сервис, предусматривающий автоматическое обнаружение и выполнение запланированных действий в том случае, если мобильное устройство клиента оказывается на заранее обозначенной территории или покидает таковую.
Клиент создает свой аккаунт в приложении, и в случае, как только он оказывается на определенной территории - ею могут быть торговые центры, рестораны, казино и прочее - ему на смартфон (или планшет) приходят обычные sms рекламного содержания. Все, что нужно для отправки/получения таких сообщений — это мобильное приложение и GPS-координаты мобильного устройства.
В ходе разработки было реализовано более 3000 тестов, что значительно увеличило стабильность релизов, была создана инфраструктура для автоматической сборки и тестирования приложения. Во время работы на проекте использовались Jenkins, Virtual Network Computing (VNC), осуществлялось Linux администрирование серверов.
Технологии: Selenium WebDriver, Virtual Network Computing (VNC), Jenkins, Git, Jira, TestNG, Maven, TestRail, XPath, Linux.
Скриншоты:
Особенности проекта:
- Интеграция системы автоматизации тестирования с системой для ведения тестовой документации и учета результатов выполнения тестов TestRail.
- На проекте был внедрён полный цикл Continuous Integration.
- Работа с заказчиком, находящимся в другом часовом поясе (9 часов разницы).
- Разработка производилась в русле Scrum:
- ежедневные статус-митинги;
- еженедельное планирование, демо и подведение итогов спринта;
Результаты проекта:
- Continuous Integration успешно внедрён во все фазы проекта.
- Были формализованы и налажены процессы по методологии Scrum, что позволило эффективно работать в распределённой команде и выйти на стабильные итерации.
- Команда проекта предложила и внедрила большое количество архитектурных решений.
- Система для автоматизации тестирования позволила существенно повысить стабильность функционирования веб-приложения.
Достижения компании на проекте:
- Предложены и внедрены удачные подходы в разработке:
- Data Driven Testing - подход к тестированию, при котором тестовые данные хранятся отдельно от скриптов (в xls файле).
- Создание и поддержка документации, позволяющей управлять тестами команде разработчиков и заказчику.
- Формализация процессов и создание необходимых мануалов.
Отзывы клиентов:
Александр Александров, Руководитель QA отдела, Ведущий поставщик инновационных мобильных решений для игровой индустрии казино, Санта Клара, США
Эффективность нашего предприятия увеличилась в разы уже с первых этапов настройки проекта. Вы начали этот проект только с 20 тест-кейсами, а через год у нас их было уже 700, что сильно изменило стратегию нашей компании. Ваша команда стала ключевой частью тестовых процессов и заслужила огромное уважение со стороны нашей команды и вышестоящего руководства.
Я также хочу подчеркнуть высокий профессионализм членов вашей команды. Они обладают широким спектром знаний во многих технических навыках программирования, а также могли проанализировать и решить проблемы, с которыми мы столкнулись. Все технологии, реализованные вашей командой, сделали нас сильными и успешными на высококонкурентном рынке Силиконовой долины.
В целом, мы очень довольны нашей совместной работой и с нетерпением ожидаем расширения бизнес отношений с вами, а именно распространения их и на другие технические области.
Frontend разработка веб-приложения для поддержания здорового образа жизни
Краткое описание проекта: данное приложение помогает пользователю контролировать состояние своего здоровья и советует, какому аспекту своего образа жизни стоит уделить больше внимания. Приложение предоставляет возможность пользователю подробно заполнить анкету, указать свои физические данные, привычки, особенности образа жизни. Проанализировав данные анкеты, приложение выдаст набор советов и рекомендаций по улучшению состояния здоровья, поможет выявить риски возникновения осложнений в результате неправильного образа жизни, подскажет профилактические пути, чтобы предотвратить негативные последствия и ухудшения здоровья.
Веб-приложение реализовано с помощью фреймворков EmberJS и JQuery. Пользовательский интерфейс приложения разработан на основе Bootstrap, SASS и шаблонизатора Handlebars.
Технологии: GruntJS, Ember.js, jQuery, jQuery UI, AJAX, Handlebars, CSS, SASS, LESS, HTML5, Bootstrap, Foundation, Raphael.js, RequireJS, WOW.js, Parallax.js.
Скриншоты:
Особенности проекта:
- Совместная работа в распределенной команде с разницей во времени более 10 часов.
- Сложно сконфигурированная система сборки, реализованная на GruntJS.
- Для реализации frontend части веб-приложения было задействован широкий спектр возможностей HTML5 и множество библиотек, расширяющих графический интерфейс.
Результат проекта:
- Успешно и в срок справились со всеми поставленными задачами.
- Выступали в качестве консультанта front-end разработки: были решены проблемы совместимости компонентов приложения с разными браузерами, реализованы различные HTML5 мультимедийные возможности в приложении, проведен рефакторинг кода.
- В условиях сложной многомодульной архитектуры были успешно реализованы внедрение и поддержка новых компонентов.
Отзывы клиентов:
Кирилл Альтман, Entrepreneur, Нью-Йорк, США
У меня сформировались глубокое личное и профессиональную уважение к команде Jazz Team и полная уверенность, что они принесут свою необыкновенную энергию, оптимизм и творческий потенциал в любой проект, в котором участвуют. Безусловно, их инженеры по-настоящему талантливы и в техническом плане.
Разработчики всегда серьезно относились к своей роли на проекте и были ориентированы на достижение наилучших результатов благодаря активной работе со всеми членами команды. Специалисты JazzTeam всегда завершали задачи в срок и без ошибок. Они действительно способны успешно выполнять задачи с нужным результатом даже в условиях ограниченного времени.
Создание коммерческого Mule коннектора к мейнфреймам IBM i (AS/400)
Краткое описание проекта: данный коннектор позволяет интегрировать мейнфреймы IBM серии i(AS/400) в обычные Mule приложения и доступен по адресу https://www.mulesoft.com/exchange#!/ibm-as400-integration-connector. Типичное применение коннектора - интеграционные проекты, когда бизнес не желает отказываться от существующей инфраструктуры, но хотел бы внедрить современные технологии или обеспечить интеграцию бизнес-приложений, которые выполняются в мейнфрейме, с другими системами, собственными или сторонними. Коннектор поддерживает синхронный и асинхронный варианты использования, поддерживает сценарии Один-к-одному и Один-ко-многим. Коннектор обеспечивает возможность со стороны мейнфрейма вызвать (опубликовать) событие в Mule или же вызвать Mule сервис. Также, появилась возможность со стороны Mule опубликовать уведомление (notification) в AS/400, вызвать сервис или команду на стороне AS/400.
Компания JazzTeam выполняла разработку коннектора, его тестирование, включая автоматизированное, внедрение системы лицензирования, а также подготовку к сертифицированию со стороны компании MuleSoft.
Технологии: Java, Mule, Mule ESB, Mule DevKit, Anypoint Connector, Anypoint Studio, AS/400, SonarQube, Maven (license maven plugin), BitBucket, GIT, License 4j, CloudBees, TestNG, Mockito.
Скриншоты:
Особенности проекта:
- Процесс сертифицирования коннектора - достаточно сложная процедура, включающая огромное количество пунктов, все они должны быть учтены, в том числе, на этапе проектирования. Практически половина времени проекта была отведена подготовке к сертифицированию http://mulesoft.github.io/connector-certification-docs/advanced/index.html.
- Одним из требований заказчика была обратная совместимость коннектора с предыдущими версиями Mule.
- Для прохождения процедуры сертификации необходимо создание разнообразных тестов - юнит, функциональных, системных, с процентом покрытия не ниже 70%.
- Данный проект требовал экспертного знания Maven, для того, чтобы подключить и настроить все необходимые анализаторы и плагины.
Результат проекта:
- Коннектор успешно прошёл сертификацию компании MuleSoft и доступен для использования на официальной странице Mule https://www.mulesoft.com/exchange#!/ibm-as400-integration-connector.
- Для коннектора были созданы демо приложения, показывающие пользователям все особенности использования коннектора.
- Заказчик признал успешными все итерации проекта.
Достижения компании на проекте:
- Подходы к тестированию Mule коннекторов были освоены в кратчайшие сроки, были созданы все необходимые для коннектора юнит-тесты.
- Команда в процессе работы создала дополнительные руководства, которые позволяют заказчикам вносить небольшие правки в коннектор самостоятельно.
- В процессе создания коннектора и подготовки к сертификации возникало большое количество рисков, но благодаря ежедневным стендапам, и очень глубокому погружению опытного менеджера в проект, удалось избежать проявления большинства рисков.
- Наша команда рекомендовала заказчику использовать библиотеку License4j для создания системы лицензирования, и успешно внедрила License4j. Система лицензирования поддерживает различные режимы работы коннектора (коммерческое использование, демо, разработка).
Отзывы клиентов:
Дмитрий Кузнецов, Вице Президент интеграционных и облачных решений, Infoview Systems Inc, Разработка интеграционных проектов, помогающих заказчикам встраивать инновационные сервисы и системы в существующие корпоративные решения на базе мейнфреймов, Ливония, США
Требуемый результат этого проекта был один - после разработки необходимого функционала коннектор должен был пройти сертификацию. И этот результат был достигнут без особых усилий с нашей стороны, за что большое спасибо команде JazzTeam.
Хочется отметить чуткий, внимательный менеджмент, наши просьбы, замечания не оставались без внимания, а всегда фиксировались, к ним всегда обращались вовремя. Огромное количество требований и нюансов по сертификации были решены с успехом. Мы участвовали в стендапах с командой, где можно было задать любой вопрос по проекту, можно отметить прозрачность работы на проекте для нас. В случае, если команда JazzTeam видела риски - мы о них уведомлялись, а также нам сообщали и стратегию решения тех или иных проблем.
Резюмирую, стабильный, надёжный менеджмент, высокая техническая экспертиза и предсказуемость составляют суть услуг компании JazzTeam, мы с удовольствием продолжим работу с JazzTeam.
Агрегатор аккаунтов для веб-приложения
Краткое описание проекта: данная система служит для автоматизации использования учётных записей какого-либо веб-приложения. Она позволяет, используя прокси-серверы и различные алгоритмы, выдавать пользователя системы за владельца лишь одного аккаунта веб-приложения. Как пример, может использоваться для того, чтобы обойти ограничения налагаемые веб-приложением на один аккаунт.
Система представляет из себя десктоп-приложение, которое отображает список доступных пользователю аккаунтов. При нажатии на какой-либо аккаунт открывается браузер и происходит автоматический логин в выбранный аккаунт.
В проект внедрен механизм автоматической загрузки списка прокси-серверов через API прокси-провайдеров. Также применена БД в виде Google-таблиц. Это позволило эмулировать работу реальных пользователей, и избежать подозрений, связанных с использованием нескольких аккаунтов с одного IP адреса.
Цель нашей команды было реализовать, протестировать и предоставить заказчику полностью рабочую систему.
Технологии: AWT/Swing, Selenium, Google API (Drive, Spreadsheet), Jenkins, Quartz, Java WEB Start/JNLP, JIRA, JSON, Log4J, Apache commons libraries.
Скриншоты:
Особенности проекта:
- На проекте использовалась практика Continuous Integration. Настроены автоматические сборки и запуск тестов по коммиту, автоматический деплой и использование нескольких веток приложения (production, develop).
- В качестве back-end использовались Google-таблицы. Это позволило малыми затратами реализовать полноценный back-end. Также этот подход предоставил возможность пользователям, не имеющим знаний и опыта работы с IT-технологиями, редактировать данные в базе данных.
- Большая часть логики было покрыто юнит-тестами.
- Выстроенный процесс выпуска регулярных релизов позволил сделать их более стабильными и всегда в срок. Использовалось мануальное функциональное и регрессионное тестирование.
- JIRA сделала процесс разработки прозрачным для заказчика.
- Поддержка нескольких ОС: OS X, Windows, Linux.
- Применен механизм логирования, что позволило отлаживать приложение удалённо и решать проблемы каждого сотрудника индивидуально.
Результаты проекта:
- Проект был полностью завершен в указанный срок.
- Последняя версия приложения активно используется сотрудниками фирмы заказчика.
- Использование данного приложения позволило заказчику сократить издержки на индивидуальную настройку и поддержку environment’а для каждого сотрудника, что позволило более эффективно использовать время сотрудников.
Достижения компании на проекте:
- Был полностью налажен процесс CI, установлен и настроен environment.
- Быстрое выстраивание процесса кросс-платформенного тестирования, создание use cases позволили делать более стабильные релизы.
- Заказчику были предложены новые и интересные идеи для улучшения проекта и процессов, некоторые из которых были применены. Несколько примеров:
- Использование технологии JNLP для реализации запуска приложения и его автоматического обновления;
- Использование Continuous Integration.
- Команда хорошо себя проявила в условиях коротких итерации и частых релизов.
Система управления бизнес-процессами обслуживания клиентов
Краткое описание проекта: система управления бизнес-процессами обслуживания клиентов предназначена для автоматизации бизнес-процессов обслуживания клиентов в компаниях операторов связи.
Какие функции выполняет система:
- Автоматизация документооборота.
- Настройка фильтра выбора обращений по параметрам.
- Получение статистики и формирование отчетов, создание произвольных отчётов, сохранение отчёта в файл или экспорт отчетов в разных форматах.
- Выполнение групповых операций по обработке обращений.
- Возможность задавать условия отображения атрибутов в различных процессах маршрута.
- Создание заметок для клиентов, абонентов и контактных лиц.
- Мониторинг процессов обработки обращений; возможность отслеживать текущее состояние обращений в любой момент времени.
- Администрирование очередей обработки обращений.
- Автоматическая архивация обращений по заданному времени.
- Регистрация и обработка системных проблем.
Какие задачи решает:
Основной задачей системы является регистрация и обработка поступающих от клиентов обращений. Все контакты компании с клиентами регистрируются операторами отделов обслуживания. Информация по таким обращениям принимается и регистрируется операторами, обрабатывается и систематизируется в базе данных с требуемым уровнем детализации. В зависимости от обращения клиента выполняются определенные действия, принимается решение и далее клиенту отправляется уведомление о результатах обработки его обращения. Обращение клиента закрывается, информация сохраняется.
Техническая часть:
Проект имеет frontend и backend части. В наши обязанности входила разработка backend части проекта.
Backend реализован на основе REST API сервисов (Spring MVC), автоматическая сборка – Maven, RESTful web API и XML/JSON сериализация-десериализация – Restlet, логирование - Logback, Unit-тестирование – JUnit, ORM/JDBC – MyBatis, в качестве cервиса имен и для конфигурирования доступа к внешним сервисам/приложениям использовался Apache ZooKeeper.
Наша команда работала над модернизацией уже используемой системы заказчика - разрабатывала интерфейс Открытого API.
Открытый API - это открытый протокол взаимодействия, доступный сторонним разработчикам и позволяющий решать любые внутренние бизнес-задачи оператора связи.
Переход на Открытый API в рамках существующей системы обоснован рядом следующих требований:
- Выполнение интеграции системы с внешними системами.
- Создание и редактирование обращений в систему на основе переданных параметров из внешних систем.
- Передвижение обращений по маршруту внутри системы на основании событий внешних систем.
- Отправка нотификаций и эскалаций.
Технологии: Spring, Apache Camel, JUnit, Jackson, Log4j, SLF4J, Logback, Java servlets, Mockito, MyBatis, Restlet, Liquibase, Hibernate, Maven, Oracle database, Apache Tomcat, Apache ZooKeeper, Confluence, Jira, Stash, TeamCity, Git, Oracle Client, RubyInstaller Development Kit (DevKit), Bundler (RubyGems), Ruby.
Скриншоты:
Особенности проекта:
- Участие в разработке сложной многокомпонентной системы.
- Использование итеративного подхода в разработке - двухнедельные итерации, участие в ретроспективах.
- Участие в ежедневных стендапах и в планировании спринтов.
- Работа в распределенной команде (3 города, 2 страны) с высококвалифицированными специалистами - разработчиками уровня Senior.
- Помощь в подготовке к еженедельным демо для заказчика и участие в них.
- Регулярное перекрестное код ревью.
Результат проекта:
- В рамках работы над проектом был разработан новый функционал, исправлен ряд проблем, написаны автоматизированные тесты, протестирован функционал.
- Нами были выполнены: анализ существующей реализации, код ревью, рефакторинг; были озвучены предложения по улучшению архитектуры.
- В части работ с БД были выполнены доработка таблиц, изменение полей, доработка процедур, модернизация функций.
- Все требования заказчика были выполнены. Помимо этого мы вносили предложения по усовершенствованию архитектурных решений, которые были приняты и реализованы заказчиком.
- Внедрение разработанной системы управления клиентами в бизнес-процессы многих телеком-компаний позволит решить вопрос по автоматизации работ операторов в части приема и обработки обращений клиентов, поможет поддержать лояльность клиентов компаний операторов связи.
- Подключение ПО, размещенных на разных площадках, через Открытый API позволяет интегрировать работу разных дата-центров, распределенных офисов или филиалов компаний.
Достижения компании на проекте:
- Внесли ряд предложений по улучшению архитектуры.
- Задачи выполняли успешно и в поставленные сроки, заказчик неоднократно давал положительные отзывы по работе нашей команды, оценивал высокую скорость разработки и отличное качество кода.
- Поддерживали работу по Scrum методологиям.
- Заказчик рекомендовал нашу команду своим коллегам.
- Проявляли активное участие в обсуждении и принятии решений по разработке с другими командами.
- Наладили эффективное взаимодействие с удаленной командой разработчиков и тестировщиков.
- За время работы на проекте команда ещё больше расширила навыки работы с java-фреймворком Apache Camel.
- Успешно решен ряд задач, связанных с оптимизацией имеющегося кода и написанием нового функционала.
Централизованная система онлайн продажи билетов в реальном времени
Краткое описание проекта: cистема предназначена для централизации онлайн-продаж билетов на различные мероприятия. Платформа предоставляет следующие возможности:
- Продажа билетов через интернет. Для продажи билетов используется веб-сайт и клиенты для мобильных платформ (iOS, Android, Windows Phone). Поддерживаются различные способы оплаты.
- Администрирование мероприятий. Имеется возможность детально настраивать каждое мероприятие: уникальные цены для каждого места/сектора в зале, различные варианты скидок, изменение компоновки/плана для зала, в котором будет проводиться мероприятие, клубы/VIP-места и т.д.
- Проведение различных промо-акций для увеличения продаж.
- Обеспечение контроля. В системе имеется возможность для организации контроля пропуска посетителей на мероприятия. Организация контроля производится с помощью сканирования билетов. Поддерживаются различные виды сканеров - от профессиональных сканеров штрих-кодов, до сканирования билетов с помощью приложений установленных на мобильные устройства.
- Отчётность. Поддерживается сбор различной статистики и вывод его в виде отчётов. Это позволяет эффективно управлять продажами билетов, промо-акциями и т.д.
- Поддержка ролей пользователей. Система позволяет предоставлять различным пользователям разные уровни доступа для обеспечения наибольшей безопасности.
- Имеется поддержка многоязычности и учтены юридические и технические нюансы использования системы в различных странах.
Система спроектирована и разработана с учётом использования сервером приложения многокластерности, кэш-серверов, а также использования нескольких баз данных. Применена архитектура, которая позволяет легко поддерживать систему и расширять её функционал.
В качестве сервера приложения использовался WildFly. Приложение предоставляет REST API сервисы для доступа к своему функционалу. API реализовано с использованием библиотеки RESTEasy. Обмен данными между клиентом и сервером производится в формате JSON, что позволяет унифицировать API для всех платформ. Запросы, получаемые REST-сервисами, проходят проверку уровня доступа, за это отвечает фреймворк Picketlink. Далее следует валидация запроса с помощью Bean Validation API.
Приложение использует API Facebook, Google, Vkontakte для регистрации/авторизации через социальные сети.
Взаимодействие с базой данных осуществляется с помощью Hibernate.
В качестве БД использована PostgreSQL. Одновременно происходит работа с двумя БД. Для сокращения времени доступа к некоторым данным используется распределенный кэш Infinispan и технология для индексации баз данных для ускорения поиска по некоторым таблицам (Apache SOLR).
Приложение способно по запросу генерировать отчеты с использованием технологии Birt. Генерация возможна в нескольких форматах: HTML, XLS, PDF. Стандартная подсистема логирования WildFly в приложении заменена на Logback. Утилита Hawtio позволяет собирать и визуализировать информацию о состоянии приложения и сервера.
Работа над проектом была разбита на несколько фаз. Фаза - анализа, и несколько фаз разработки. На каждой фазе разработки велась работа над реализацией определенных use cases.
На фазе анализа проекта был проведен полный анализ предоставленных сценариев использования (use cases), проработаны и минимизированы все возможные риски. Составлена максимально подробная эстимация для всех задач. Созданы сигнатуры REST-сервисов. Сверх этого, была оказана консультативная помощь по улучшению бизнес логики и настройке окружения, оптимизации его работы.
На фазах разработки были реализованы в полном объеме все необходимые части функционала back-end составляющей проекта. Составлена подробная техническая документация, применен фреймворк Swagger, позволяющие визуализировать документацию и компоненты системы, для лучшей синхронизации команды разработчиков.
Технологии: Java, EJB, JAX-RS/RestEasy, JPA/Hibernate, Picketlink, Wildfly (JBoss), PostgreSQL, Facebook/Google+/Vkontakte API, Eclipse BIRT, Hawtio, Swagger, TestNG, Logback, Quartz, Redmine, Microsoft Project
Скриншоты:
Особенности проекта:
- Поддержка многокластерности (Wildfly and Infinspan servers);
Поддержка нескольких БД. - Поддержка legacy-компонентов предыдущей версии системы;
Оптимизация производительности. - Работа с другими командами сторонних разработчиков (предоставление API, документации и т.д.).
- В связи с большой нагрузкой на контактное лицо со стороны заказчика, приходилось быть очень активными, инициировать решение вопросов, зависших на других участниках проекта.
- Присутствовали технологические риски, связанные с особенностями выбранных заказчиком технологий. Например, наша команда столкнулась с проблемами с кэшем: реализация архитектуры, которая была разработана архитектором со стороны заказчика, не могла быть выполнена из-за ограничения используемых технологий. Нами было предложено архитектурное решение, которое позволило реализовать задуманный функционал, и даже позволило более узкоспециализированно настраивать кэш. Мы предложили использовать локальный кэш + удалённый, вместо только удалённого. На фазе настройки кластера заказчики приняли решение вообще отказаться от удалённого кэша и использовать только локальный.
Результат проекта:
- Наша команда реализовала back-end составляющую проекта. Была продумана и реализована архитектура серверного приложения, настроена взаимодействие всех технологий, подключены все сторонние утилиты. В ходе разработки реализованы REST-сервисы, которые предоставляли API для взаимодействия веб-сайта и клиентов для мобильных платформ с серверной составляющей системы. Также была налажена интеграция с legacy-модулями системы.
- Весь созданный нами исходный код успешно прошел код ревью у специалистов со стороны заказчика.
- Разработанное приложение прошло нагрузочное тестирование.
- Команда в полном объеме и в срок справилась с поставленными задачами на каждой фазе проекта. Команда работала открыто, явно визуализируя возникающие сложности и полученные достижения.
- Команда хорошо себя показала в качестве многопрофильных специалистов, иногда выполняя функции аналитика, архитектора и системного администратора.
- Заказчик остался доволен качеством выполненных работ и процессом работы с нашей командой.
Достижения компании на проекте:
- Команда работала проактивно, часто выдвигая свои предложения по улучшению проекта и способам реализации.
- Один из примеров, нами была предложена архитектура реализации системы отчетов, которая включает в себя batch processing и message queue. Данное решение позволило сделать систему более расширяемой, поддерживать разные типы отчётов, легко добавлять новые типы. Также данная архитектура позволила значительно оптимизировать производительность.
- Были налажены Scrum/Agile процессы, что позволило открыто работать с заказчиком и пошло на пользу проекту.
- Команда хорошо себя показала при решении задач, которые возникали из-за ограничения в используемых технологиях.
Mule-приложение – прокси для интеграции внутренних систем заказчика и внешних сервисов
Краткое описание проекта: проект представляет из себя прокси, разработанный с использованием технологии Mule. Данный прокси служит для интеграции внутренней системы заказчика и внешнего сервиса.
Приложение принимает SOAP-запросы от внутренней системы или внешнего сервиса, обрабатывает их, и перенаправляет получателю. Приложение позволяет безопасно обмениваться сообщениями между двумя системами. И не требует изменений в интегрируемых сервисах.
В проекте применены следующие механизмы:
- валидация SOAP сообщения;
- аутентификация по спецификации WS-Security;
- преобразование сообщения в нужный формат.
В приложении использованы подходы, которые позволяют легко переориентировать его для интеграции с другими сервисами. Это сделало приложение универсальным и значительно снизило затраты на интеграцию с другими системами.
Задачей нашей команды было реализовать Mule-приложение, интегрировать его работу с другими системами, протестировать и предоставить заказчику полностью готовый продукт.
Технологии: Java, Mule, Spring, Oracle DB, Log4j, SOAP, JUnit, XPath, XSLT, JDBC, Apache commons libraries
Скриншоты:
Особенности проекта:
- Команде приходилось работать в условиях соблюдения строгих правил безопасности. Не было прямого доступа даже к тестовому окружению: базам данных, серверам и т.д.
- Часть требований от заказчика поступала и применялась на стадии активной разработки.
- Было необходимо проводить достаточно сложную и требующую хороших навыков коммуникации интеграцию совместно со сторонними командами, которые находились в других странах.
Результат проекта:
- Был реализован весь функционал, который был оговорен, и применены все полученные в ходе разработки требования.
- Приложение активно используется заказчиком и не вызывает нареканий в стабильности и производительности.
- Написана подробная документация по работе приложения.
Достижения компании на проекте:
- JazzTeam хорошо показала себя при интеграции со сторонней командой. Часто являлась инициатором активностей, которые были необходимы для синхронизации с коллегами, что сделало процесс интеграции открытым и понятным для заказчика.
- Команда выступила с инициативой выполнить профилирование приложения и адаптировать его для работы с максимальной нагрузкой.
- В условиях тесного взаимодействия между всеми командами, был налажен четкий процесс мануального тестирования, созданы юнит тесты, проведено нагрузочное тестирование.
Mule-приложение, предоставляющее API для сканирования файлов на вирусы
Краткое описание проекта: веб-приложение, которое предоставляет API для сканирования файлов на вирусы. Данное решение позволяет сделать интеграцию внутренних систем заказчика с внешними сервисами ещё более безопасной.
В качестве программы-антивируса был выбран open source проект ClamAV. Проект является мультиплатформенным, что дает возможность устанавливать наше приложение на различных системах.
Для сканирования файла на вирусы пользователю необходимо отправить HTTP-запрос и загрузить файл на сервер, после чего в качестве ответа будет возвращён результат сканирования.
Приложение было оптимизировано под высокую нагрузку и выдерживает работу с большим количеством одновременных запросов, большими размерами сканируемых файлов.
Задачей нашей команды было реализовать Mule-приложение, интегрировать его с ClamAV, протестировать и предоставить заказчику полностью готовый продукт.
Технологии: Java, Mule, Spring, ClamAV, Log4j, XSLT, Apache commons libraries
Скриншоты:
Результат проекта:
- Проект был завершен в оговоренные сроки.
- Были реализованы все требования заказчика.
- Была проведена узкая оптимизация проекта под особенности внутренних систем конечного заказчика.
- Проведено нагрузочное тестирование, результатами которого мы доказали, что система способна выдерживать высокую нагрузку как по количеству одновременных запросов, так и по сканированию файлов большого размера.
- Приложение активно используется внутренними системами конечного заказчика и позволило сделать интеграцию с внешними сервисами ещё более безопасной.
Достижения компании на проекте:
- Команда работала проактивно, часто предлагая полезные идеи, например:
- нагрузочное тестирование;
- оптимизация антивируса под часто используемые форматы и размеры файлов.
- Команда работала открыто для заказчика, заранее выясняя возникающие вопросы, обсуждая нюансы. Это позволило избежать форс-мажоров.
Система учёта логических ресурсов мобильного оператора
Краткое описание проекта: система учёта логических ресурсов представляет собой систему инвентаризации и управления телефонными номерами, международными идентификаторами мобильного абонента, IP адресами и т.д. Система позволяет автоматизировать работу подразделений, которые заинтересованы в получении целостной, оперативной и актуальной информации о состоянии логических ресурсов. Оператор системы может, к примеру, вводить в эксплуатацию новые сим-карты, заводить новые номера телефонов, редактировать, удалять их.
Проект имеет модульную структуру, зависимости между модулями реализованы с помощью RequireJS. Интерфейс системы интерактивный, взаимодействие с backend выполняется с помощью асинхронных запросов: например, подгрузка новых данных в таблицу выполняется динамически.
В обязанности команды JazzTeam входила разработка frontend-части, а также комплексное тестирование продукта. Наша команда занималась разработкой визуальных интерфейсов диапазона номеров, управления оборудованием, сим-картами и др.
После реализации проекта также была произведена интеграция с системой централизованного управления бизнес-процесами, которая позволяет формировать и отслеживать выполнение заданий по изготовлению, дефектованию или выведению SIM-карт из эксплуатации и др. Разработчики Jazzteam успешно реализовали объединение front-end частей двух приложений, произвели рефакторинг, в ходе которого была разработана общая структура AngularJS проекта, а также привели код к общему стилю.
Технологии: JavaScript, Angular JS, Require JS, Karma, Jasmine, Apache HTTP server, REST services.
Скриншоты:
Особенности проекта:
- Использование Unit-тестов для javascript кода, использование утилиты подсчёта покрытия, покрытие более 75% кода юнит-тестами.
- Распределённая команда - 2 страны, 4 города.
- Работа в русле Scrum/Agile - ежедневные скрам-митинги, демонстрация продукта раз в две недели, планирование спринтов, ретроспективы.
Использование проприетарной библиотеки UI-компонентов. - Разработка frontend части одновременно с server side.
- Интерактивный интерфейс - single page application.
- Разработка интерфейса и бизнес-логики практически с нуля.
- На протяжении разработки периодически менялись требования и спецификации backend сервисов.
Результат проекта:
- Разработано множество визуальных интерфейсов приложения.
- Реализован функционал загрузки файлов на сервер с помощью плагина Angular JS.
- Проведено мануальное тестирование по всей функциональности продукта.
- Система была успешно внедрена в эксплуатацию. Заказчик остался доволен результатом.
Достижения компании на проекте:
- Разработаны сценарии тест кейсов для написания автоматизированных UI тестов.
- Нашей командой было предложено несколько улучшений в библиотеке UI-компонентов, которые после обсуждения с командой заказчика были одобрены и реализованы.
- В процессе работы был разработан мануал по тестированию AngularJS сервиса с помощью Jasmine и Karma.
- Команда Jazzteam успешно справлялась со своими задачами в условиях коротких итераций и жёсткого временного графика.
Отзывы клиентов:
Виталий Малышев, Ведущий инженер лаборатории, Peter-Service Inc, Компания-разработчик программного обеспечения для телекоммуникационной отрасли, Санкт - Петербург, Россия
Задача команды JazzTeam состояла в проработке angular составляющей проекта (UI). Уже сейчас, когда основаная часть проекта реализована, можно с уверенностью сказать, что со своей работой ребята успешно справились. В начале проекта были некоторые шероховатости, но с течением времени они были решены, и разработка встала на стабильные рельсы.
Хочется сказать отдельное спасибо frontend-разработчику, который был и остаётся ключевым участником проекта с самого начала. Тестировщику, что борется за качество, а также умеет задавать правильные вопросы и ставить некоторые решения команды под сомнение, что способствует улучшению нашего продукта. И менеджеру компании JazzTeam, что поддерживал процесс разработки и выравнивал его в трудные моменты.
Создание коммерческого Mule коннектора к системе управления мастер-данными
Задача проекта, в котором участвовала команда Jazzteam, состояла в проектировании, разработке и внедрении Mule коннектора, являющегося оберткой над облачной системой управления мастер-данными (MDM), выступающей в роли платформы как сервиса (PaaS). Система позволяет создавать промышленные приложения, которые производят глубокую автоматизированную аналитику (в том числе и предиктивную) на основе данных о клиентах, продуктах, услугах, персонале, технологиях, материалах и т.д.
Разработанный нами коннектор значительно упрощает процесс создания Mule-приложений, работающих с системой за счет автоматического обновления токенов доступа к API и динамического DataSense. Делая вызовы API через коннектор, пользователь может загружать данные в систему и удалять их из системы, осуществлять поиск данных на основе фильтров, устанавливать отношения между данными.
В качестве основного средства для построения коннектора использовался Anypoint Connector DevKit. Каждая операция коннектора использует Jersey-client для вызовов API. Ответы со стороны приложения возвращаются в формате JSON. При помощи Jackson-mapper происходит отображение этих ответов в Java-объекты, которые коннектор и выдает на выходе.
В ходе разработки компания JazzTeam выполнила работу по реализации основного функционала коннектора (запросы к API), динамического DataSense, функционального, системного и юнит-тестирования. Коннектор был полностью подготовлен для прохождения сертификации со стороны компании MuleSoft.
Технологии: Java, Mule, Mule ESB, Mule DevKit, Anypoint Connector, Anypoint Studio, SonarQube, Maven, BitBucket, Jersey, Jackson, Mockito, Jayway JsonPath, Apache JMeter, TestLink.
Скриншоты:
Особенности проекта:
- Распределённая команда в разных часовых поясах из разных стран (США, Индия, Беларусь).
- Кастомный модуль аутентификации, который обеспечивает получение и обновление токена доступа к API.
- Поддержка метаданных. Каждый клиент системы имеет для своего аккаунта различные типы данных объектов системы. Коннектор способен выгружать эту информацию и отображать ее для коннектора (динамический DataSense).
- Высокая производительность. Коннектор изначально рассчитан для работы с большим объемом данных. По требованиям заказчика коннектор не должен уступать в производительности чистым вызовам API более чем на 10%. Для выполнения этого условия в Anypoint Studio были построены тестовые flow, на которых производилось нагрузочное тестирование.
Результат проекта:
- В сжатые сроки все задачи были выполнены.
- Была создана необходимая сопроводительная документация приложения, показывающая пользователям все особенности использования коннектора.
- Для подготовки коннектора к процедуре прохождения сертификации было создано большое количество разнообразных тестов - функциональных, системных, юнит-тестов с процентом покрытия не ниже 70%.
- Заказчик остался доволен результатом всех итераций.
- Коннектор соответствует требованиям для прохождения сертификации http://mulesoft.github.io/connector-certification-docs/advanced/index.html.
Достижения команды:
- В ходе реализации проекта нашей компанией был написан мануал “Лучшие практики использования Mule ESB”.
- Составлен мануал по использованию DataSense.
- Составлен мануал для тестирования mule-коннекторов и подготовки их к сертификации.
Система управления тарифными планами и услугами мобильного оператора
Краткое описание проекта: Система состоит из двух основных компонентов:
- веб-приложение для управления данными о тарифных планах, сервисах, скидках, бонусах, акциях, стоимости и видах услуг мобильного оператора;
- компонент выгрузки данных по бизнес-правилам во внешнюю биллинговую систему.
Вся редактируемая информация в системе имеет привязку к:
- регионам: для одного региона одна стоимость и условия подключения, для другого - иная;
- историчности: данные не удаляются, можно “откатиться” на более старую версию или отменить изменения;
- проектам: пользователь делает изменения данных в рамках виртуального проекта, в результате чего изменения накапливаются, группируются и применяются все вместе.
Сотрудники телеком-оператора заполняют необходимую информацию, после чего запускается механизм выгрузки в биллинговую систему по заданным бизнес-правилам. После этого новые тарифные планы, услуги и скидки доступны для абонентов. Интерфейс системы интерактивный, не требует перезагрузки страницы, сделан по принципу Single page application.
В обязанности команды JazzTeam входила реализация нового функционала, рефакторинг, багфиксинг, покрытие Unit и интеграционными тестами, консультирование заказчика в области улучшения качества кода и процессов.
Технологии:
Java, Vaadin, Hibernate, JPA, Apache Tomcat, PostgreSQL, Oracle, JUnit, DBUnit, Git, Jira, Confluence, Bamboo CI, Selenium, Maven, Flyway (database migration tool).
Особенности проекта:
- Большое количество legacy-кода в существующей системе.
- Распределённая команда - 2 страны, 3 города.
- Scrum/Agile - ежедневные скрам-митинги, 2-х недельные спринты.
- Сжатые сроки разработки новых функциональных возможностей и устранения багов.
- Сложная модель данных с территориальными и историческими типами сущностей, а также с привязкой изменений данных к рамкам отдельных “проектов” в системе.
- Интерактивный интерфейс - single page application.
Результат проекта:
- Стабилизирован существующий компонент выгрузки данных.
- Стабилизировано веб-приложение.
- Реализованы новые возможности, позволившие расширить текущий функционал и стабилизировать работу системы.
- Проведен рефакторинг нескольких частей приложения, уменьшено количество legacy-кода.
Достижения компании на проекте:
- Компанией было предложено множество интересных архитектурных и технических решений. К примеру:
- Создание бизнес-слоя в приложении.
- Внедрение Spring Framework.
- И другие более узконаправленные для проекта предложения.
- Внедрены стандарты code-style и требования к качеству кода.
- Внедрено Unit-тестирование.
- Внедрён подход Data Driven Testing для функциональности выгрузки данных, сделан тестовый фреймворк для быстрой автоматизации тест-кейсов.
- Внедрён DBUnit для быстрой проверки состояния БД при unit-тестах.
- Благодаря покрытию тестами компонент выгрузки данных стал более стабилен.
Отзывы клиентов:
Андрей Войнов, Директор по разработке программного обеспечения, Петер-Сервис, Информационные технологии и услуги, Санкт-Петербург, Российская Федерация
ООО “ПС РнД” рекомендует инженеров компании JazzTeam как высококвалифицированных специалистов.
Хотели бы отметить организованность и исполнительность работников компании JazzTeam, которая всегда занимала активную позицию в процессе взаимодействия, предлагая решения по улучшению процессов. Компания JazzTeam, в частности, выступила инициатором внедрения единого code-style, увеличения покрытия приложения PSC юнит-тестами.
Помимо разработки основного функционала, рефакторинга кода, специалисты JazzTeam реализовали систему тестирования с использованием Data Driven Testing подхода для компонента выгрузки, что значительно стабилизировало работу с данным компонентом.
Надеемся, что наше дальнейшее сотрудничество продолжится и будет таким же плодотворным и результативным.
Желаем компании JazzTeam успехов в профессиональной деятельности.
Система объединения облачных хранилищ
Краткое описание проекта:
Система объединения облачных хранилищ - это уникальный сервис облачных систем хранения данных для основных десктопных и мобильных платформ. Данный сервис предоставляет пользователям неограниченное и бесконечно масштабируемое облачное пространство для хранения информации, полную синхронизацию между различными устройствами и максимальный уровень защиты данных. Продукт реализован на основе собственных алгоритмов хранения и шифрования данных, которые обеспечивают беспроблемное, равномерное распределение данных пользователей в различных облачных аккаунтах хранения данных.
Система объединения облачных хранилищ имеет уникальную архитектуру, которая позволяет пользователям зарегистрировавшись один раз, указав хотя бы один существующий облачный аккаунт для хранения данных, пользоваться преимуществами неограниченного облачного пространства на период подписки. Система объединяет все пользовательские аккаунты в один контейнер и объединяет его с контейнерами других пользователей, чтобы создать почти бесконечно масштабируемое хранилище в облачных пространствах. При необходимости, программа может автоматически создавать новые учетные записи облачных хранилищ для обеспечения растущих потребностей системы.
В дополнение к неограниченности объемов хранения данных, система объединения облачных хранилищ имеет высокие характеристики отказоустойчивости системы и безопасности хранения информации, что позволяет пользователям получать доступ к данным, даже если исходная облачная учетная запись становится недоступна.
Вот неполный список действий, доступных для пользователей:
- Загрузить, удалить, переименовать, скачать файлы на устройство.
- Сортировка по размеру, дате, названию.
- Просмотр истории активностей.
- Поделиться файлом/папкой, отправив ссылку.
- Поделиться пространством для хранения данных с другими людьми.
- С самой первой версии, разработанная система доступна для следующих популярных платформ: Windows Desktop, Mac OS, Linux, Windows Phone, IOS, Android.
Технологии: Spring, JDBC, Quartz, Camel, JavaFX, StealJS, MySql, SQLite, Maven, Gradle, TeamCity, MicrosoftAzure
Скриншоты:
Особенности проекта:
- Многопрофильная команда разработчиков, бизнес-аналитиков и QA инженеров работала в качестве единой сплоченной команды.
- На момент создания проекта, подобных аналогов не существовало.
- Покрытие тестами всех модулей приложения, в том числе создание UI-тестов.
- Создание полной технической документации (UML диаграммы, графики, описания и т.д.).
- Поддержка мультиплатформенности, настройка и администрирование серверов с различными ОС (Linux, MacOSX, Windows).
- На проекте использовались: HTML5 file system API, File API, HTML5 Webworker, механизм определения мобильной платформы и адаптация страницы под конфигурации мобильной платформы.
- Работа по Scrum процессам, использование JIRA Agile.
Результаты проекта:
- Все проектные работы были завершены успешно.
- Continuous Integration успешно внедрён во все фазы проекта. Было автоматизировано множество процессов:
- контроль кода - тесты проходили сразу после внесения разработчиком изменений;
- сборка и установка серверной части и веб-приложения на сервер;
была налажена система ночных билдов; - система релизов клиентских приложений;
- и многое другое.
- Использованы алгоритмы шифрования, которые, в сочетании с децентрализованными способами хранения, эффективно исключают возможность кражи данных или несанкционированного доступа.
- Проведен R&D анализ существующих решений по бираспределенному хранению данных
Достижения компании на проекте:
-
- Покрыты автоматизированными тестами все слои и компоненты приложения: Unit, Integration, UI для всех клиентских частей приложения.
- Были формализованы и налажены процессы по методологии Scrum/Agile, что позволило эффективно работать в распределённой команде и выйти на стабильные итерации.
- Нашей командой было предложено и реализовано шифрование данных на уровне клиентской, а не серверной части. Было произведено разбиение файлов на равные блоки данных и последующее шифрование этих блоков (алгоритм блочного шифрования AES), затем скачивание зашифрованных блоков данных для последующей расшифровки и склеивания в один конечный файл, предоставляемый клиенту (пользователю).
- Созданы и успешно внедрены прототипы различных алгоритмов по разбиению и шифрованию больших файлов.
- Команда проекта предложила и внедрила большое количество архитектурных решений, которые позволили стабилизировать и расширить функционал проекта.
- Проведение бизнес-анализа требований в результате непосредственного общения с заказчиками.
Отзывы клиентов:
Акционер проекта
Коллектив разработчиков JazzTeam участвовал в бизнес-анализе требований проекта, реализовал все поставленные задачи в полном объеме и в срок, оправдав наши ожидания успешной командной работы.
Продукт был разработан и реализован специалистами JazzTeam на основе уникальных алгоритмов хранения и шифрования данных, что обеспечило беспроблемное, равномерное распределение данных пользователей в различных облачных аккаунтах хранения данных. Было внедрено большое количество архитектурных решений, которые позволили стабилизировать и расширить функционал проекта.
Эффективным решением со стороны компании JazzTeam было налаживание процессов в команде и внедрение методологии Scrum/Agile. В итоге, каждый в распределенной команде был заинтересован в эффективной реализации проекта, что позволило выйти на стабильные итерации.
С нашей точки зрения, это положительно повлияло на повышение качества продукта: был создан уникальный облачный сервис хранения с отличной масштабируемостью и самой современной архитектурой.
Регистратор аккаунтов в облачных сервисах
Краткое описание проекта: проект представляет собой консольную java-утилиту, которая при запуске начинает автоматически регистрировать аккаунты в облачных сервисах (Dropbox, Box, Google Drive и т.д.), и вносить информацию об этих аккаунтах в базу данных. Утилита может запускаться как вручную, так и автоматически - по расписанию или при необходимости в получении какого-либо количества аккаунтов. В утилите продуманы алгоритмы и способы обхода защит от автоматических регистраций и дальнейшего обнаружения автоматически зарегистрированных аккаунтов:
- Использование аккаунтов популярных email-сервисов (Google, Yandex);
- Ввод капчи - использование сервисов, в которых пользователи за небольшую плату вводят капчу, что даёт почти 100% распознавание;
- Алгоритмы, эмулирующие работу реального пользователя;
- Использование proxy.
В регистратор аккаунтов входит набор вспомогательных утилит:
- Утилита для автоматического обновления списков прокси. Прокси берутся из сторонних сайтов;
- Веб-интерфейс, с помощью которого можно более быстро взаимодействовать с утилитой, если она установлена на сервере;
- Анализатор статистики, который позволяет проверять, какие аккаунты были забанены, выявлять причину бана и исправлять её.
Технологии: Java 7, Spring, Selenium, Apache HttpClient, Json, Zabbix, Junit, Maven, SDK облачных сервисов и сервиса ввода антикапчи, JavaScript, MySQL, Swing
Скриншоты:
Особенности проекта:
- Работа в распределенной команде.
- Наряду с разработкой наша команда занималась администрированием серверов.
- Эффективное управление проектом на основе гибких методологий, использование JIRA Agile.
Результат проекта: в процессе работы над проектом в полном объеме была реализована требуемая функциональность продукта. Кроме того, некоторые новые элементы, предложенные командой разработчиков, также стали частью продукта. Команда полностью оправдала ожидания клиента в отношении производительности, компетентности и способности эффективно координировать деятельность для достижения поставленных целей.
Достижения компании на проекте:
- Бизнес-анализ требований был проведен в ходе непосредственного общения с заказчиком.
- Были выстроены scrum-процессы. Они способствовали эффективно работать в распределённой команде и выйти на стабильные итерации.
- Большое количество архитектурных решений было предложено и внедрено командой.
- Подготовлен полный набор документации, что сильно упрощает поддержку и сопровождение продукта любой другой компанией.
Отзывы клиентов:
Коллектив разработчиков JazzTeam участвовал в бизнес-анализе требований проекта, реализовал все поставленные задачи в полном объеме и в срок, оправдав наши ожидания успешной командной работы.
Продукт был разработан и реализован специалистами JazzTeam на основе уникальных алгоритмов хранения и шифрования данных, что обеспечило беспроблемное, равномерное распределение данных пользователей в различных облачных аккаунтах хранения данных. Было внедрено большое количество архитектурных решений, которые позволили стабилизировать и расширить функционал проекта.
Эффективным решением со стороны компании JazzTeam было налаживание процессов в команде и внедрение методологии Scrum/Agile. В итоге, каждый в распределенной команде был заинтересован в эффективной реализации проекта, что позволило выйти на стабильные итерации.
С нашей точки зрения, это положительно повлияло на повышение качества продукта: был создан уникальный облачный сервис хранения с отличной масштабируемостью и самой современной архитектурой.
Реализация расширяемой игровой механики для клиента ролевой игры
Краткое описание проекта: приложение представляет собой одновременно и сетевой клиент и сервер для ролевой игры в жанре фэнтези, наподобие серии игр Dungeons and Dragons. Сценарии игры заранее не регламентированы и возможность их реализации достаточно обширные. В ходе игры участники управляют отдельными персонажами, из которых создаются группы, которые взаимодействуют с окружающим миром, разрешают различные конфликты, участвуют в сражениях и получают награды. Приложение может выступать как в роли клиента игры, который подключается к ведущему игру серверу, так и непосредственно в роли сервера, к которому подключаются другие клиенты. Также существует возможность приобретения различных артефактов через платный магазин.
Целью проекта была разработка новой расширяемой системы игровой логики, которая позволяет автоматизировать сложные расчеты взаимодействия персонажей в игре. Была переработана система игровых взаимодействий персонажей, все статичные предустановленные конструкции заменены обобщенным настраиваемым поведением. Для создания скриптов используется JavaScript. Выполнение производится средствами Java Nashorn.
Технологии: Java, Spring, JavaFX, Swing, Jackson, Jetty, Log4j, HTML, XML, JSON, Nashorn API, JS, Git.
Скриншоты:
Особенности проекта:
- Legacy system. Приложение разрабатывалось на протяжении 10 лет, в большинстве случаев использовался старый код, множество библиотек было устаревшими.
- Необходимость обеспечения совместимости с более старыми версиями. Нужно было обеспечить обратную совместимость с предыдущими версиями сохраненных игр. Также старая и новая версии должны были быть взаимоувязаны с магазином, содержащим платный контент. Это создало ограничение на изменения в модели данных и игровых персонажей.
- Архитектура приложения. Сложная архитектура приложения, трудно допускающая какие-либо расширения. Архитектура приложения не допускала возможности разделения на логические слои, часто логика обработки осуществлялась непосредственно в пользовательском интерфейсе.
- AWT Swing и JavaFX элементы смешиваются в реализации пользовательского интерфейса. Это создавало значительные трудности при добавлении новых элементов.
- Обширные правила игры. Одна из целей проекта - добавить возможность играть в различных режимах игры, используя различные версии правил. Реализация этого требует глубокого понимания логики и механики игры. Мануал правил только одной версии правил игры занимает около 600 страниц.
Результат проекта:
- Новая версия игры была успешно реализована. Заказчик остался доволен результатом.
- Все требования проекта выполнены, несмотря на частые изменения.
Достижения компании на проекте:
- Было реализовано REST API, которое предоставляет доступ к просмотру данных игровых персонажей извне клиента.
- Изменена архитектура приложения. Несколько подсистем были полностью переписаны, чтобы дать им возможность расширяться в будущем, сделан рефакторинг, который позволил расширять игровую логику.
- Все элементы UI части приложения были заменены на JavaFX.
- Была добавлена возможность создания пользователями нелинейных алгоритмов взаимодействия персонажей как с помощью интерфейса для визуального программирования, так и в текстовом виде.
Отзыв клиента:
Вадим Кастрицкий, заместитель директора, VironIT, компания по разработке программного обеспечения, Минск, Беларусь
Задача команды JazzTeam на этом проекте была довольно сложной - расширение функционала игры, которое включало в себя погружение в существующую уже на протяжении более 10 лет реализацию. Для разработки необходимо было изучить и учесть правила игры, которые отображены в большом шестисотстраничном мануале. Задача комплексная, требующая серьезного архитектурного подхода и высокой квалификации разработчика. И команда JazzTeam справилась с ней на должном уровне. Хочу отметить, что работа компании JazzTeam всецело соответствует духу Agile. Команда активно предлагала свои решения реализации сложных технических моментов, а также заранее предупреждала о возможных рисках. Мы полностью довольны сотрудничеством с JazzTeam.
Веб-приложение для просмотра личных дел сотрудников и студентов
Краткое описание проекта: была разработана новая версия приложения, предоставляющего доступ к архиву личных дел сотрудников и студентов института. В архиве хранится персональная информация о сотрудниках и студентах, информация о курсах, информация по платежам и выплатам, налоговая и иная информация.
Приложение позволяет просматривать информацию, осуществлять поиск необходимой информации, управлять пользователями и правами доступа. Поиск реализован при помощи различных фильтров. Для удобства просмотра информации реализован постраничный вывод. В системе существует 3 роли: одна для доступа к информации о студентах, вторая для доступа к информации о сотрудниках и, соответственно, роль администратора.
Сжатые сроки и бюджет послужили мотивом сделать упор на максимальное использование готовых типовых решений при сохранении высокого качества приложения. В связи с этим основой приложения служит Spring Boot, в качестве базы данных используется H2, которая запускается в embedded режиме. Использование шаблонизатора Thymeleaf позволило сократить время на разработку, а соответствие современному стилю Material Design обеспечила css-библиотека MaterializeCSS.
Технологии: Java, Spring Boot, H2, Thymeleaf, MaterializeCSS.
Особенности проекта:
- Обязательным условием со стороны заказчика был запрет на использование standalone сервера баз данных.
- Очень сжатые сроки разработки.
- Разработка велась итеративно. Результаты часто демонстрировались заказчику и согласовывались с ним.
Достижения компании на проекте:
- В результате анализа технического задания к проекту сотрудниками компании внесены и согласованы с заказчиком изменения в изначально требуемый стек технологий, что привело к сокращению издержек на стороне заказчика без ущерба качеству и срокам проекта.
Результат проекта:
- Заказчик остался доволен результатом.
- В рамках работы над проектом было создано удовлетворяющее современным требованиям приложение, предоставляющее доступ к архиву личных дел сотрудников и студентов, для работы которого не требуется наличие отдельного сервера базы данных.
Отзывы клиентов:
Майкл О'Мира, Вице-президент, Infoview Systems Inc, Разработка интеграционных проектов, помогающих заказчикам встраивать инновационные сервисы и системы в существующие корпоративные решения на базе мейнфреймов, Детройт, США
Из совокупности данных устаревших приложений, наряду с многочисленными макетами экрана, разработчики JazzTeam смогли создать новое веб-приложение. Тесно работая с нашей внутренней командой, они надежно, высококачественно и креативно выполняли свои задачи. Новое веб-приложение было успешно развернуто и позволило нашему клиенту закрыть устаревшую систему, что привело к экономии затрат и созданию нового безопасного веб-приложения, работающего на Azure. JazzTeam - это не только ответственный на каждом этапе рабочего процесса, опытный и надежный партнер, но и компания, которая с уважением относится к интересам своих клиентов.
Система для прогноза курса криптовалют на основе анализа текста
Краткое описание проекта: разработанная система позволяет предсказывать значение курса криптовалюты bitcoin. Для прогнозирования данного курса использовалось машинное обучение. Входными параметрами могут являться любые текстовые массивы, сейчас, например, используются сообщения из социальной сети Twitter. В данной системе существует возможность прогнозировать курс крипто-пары на разный промежуток времени (месяц, неделя, день, час, минута). Используемые сообщения для обучения могут быть на любом языке или на нескольких сразу. Систему достаточно просто перевести на любую другую крипто-пару, достаточно изменить входные параметры (сообщения, относящиеся к другой крипто-паре).
Для обучения нейронной сети использовалась открытая программная библиотека для машинного обучения, разработанная компанией Google — Tensor Flow. Система обучается на известном нам участке времени (за последние несколько лет), а после обучения может сама предсказывать итоговое значение курса.
Технологии: Python, Tensor Flow, Natural Language Toolkit, Twitter/VK API, Git, Jenkins.
Скриншоты:
Особенности проекта:
- Большое количество технических сложностей, связанных с работой с фреймворком Tensor Flow, из-за отсутствия или краткого описания документации на все использованные методы.
- Полное соблюдение Scrum процессов.
- Использование связки Git/Gerrit.
Результат проекта:
- Создана система для предсказания курса криптовалют методами предиктивной аналитики.
- В результате работы нейронная сеть возвращает в процентах дельту изменения курса, например, возвращает 1,5% — что предвещает рост курса криптовалюты на 1,5%.
- Ответ нейронной сети считается верным если выбрано верное направление, и предсказанное значение отклоняется от верного не более чем на 1% в любую сторону.
- Точность предсказания зависит от количества сообщений о криптовалюте.
- При обучении использовалось примерно 7-8 тысяч сообщений, что является малым количеством для такой сложной логики, в результате чего были получены следующие данные о точности предсказания курса криптовалюты: на момент написания данного документа точность предсказания направления (упадет или вырастет) составляет примерно 60%. В то время как точность предсказания дельты изменения курса составляет 25-30%.
Достижения компании на проекте:
- Команда проекта предложила и внедрила большое количество решений для улучшения точности предсказаний значения курса.
Интеграция Distribution Management System с ERP системами региональных дистрибьюторов
Краткое описание проекта: В связи с ростом дистрибьюторской сети крупного поставщика товаров стояла задача интегрировать внутреннюю end-to-end систему управления региональными рынками продаж (Distribution management system - DMS) с ERP системами распределенных по всему миру дистрибьюторов для более оперативного и менее затратного способа двухстороннего обмена информацией. При проектировании и разработке было учтено, что сеть дистрибьюторов будет расширяться и в дальнейшем. Это позволяет с минимальными затратами интегрировать ERP новых участников сети c DMS поставщика.
В качестве платформы для интеграционной системы была выбрана MuleESB (Enterprise Service Bus), позволяющая объединять различные уже существующие информационные системы поставщика. Интеграционная система была развернута в облаке на платформе CloudHub. Чтобы не ограничивать себя конкретными протоколами передачи данных, использовался архитектурный стиль REST API.
Сотрудники JazzTeam были частью распределенной команды и принимали активное участие на этапах принятия архитектурных решений, непосредственной разработки, внедрения приложения, а также технической поддержки.
Технологии: MuleESB, REST API, RAML, SFTP, CloudHub, Maven, Jenkins, AnypointMQ, ActiveMQ.
Cкриншоты:
Особенности проекта:
- Распределённая команда с участниками из 3 стран в разных часовых поясах (Индия, США, Беларусь).
- Региональные дистрибьютеры расположены в разных точках мира (Таиланд, Индонезия, Малайзия, Великобритания и др.).
- Необходимость иметь в команде сертифицированного специалиста по Mule (“MuleSoft Certified Developer”).
Результат проекта:
- Успешно пройдены все стадии начиная от дизайна и заканчивая системным интеграционным тестированием (System Integration Testing), приемочным пользовательским тестированием (User Acceptance Testing) и выходом в Production.
- Проведена успешная интеграция с различными дистрибьюторами: Таиланд, Индонезия, Малайзия, Тайвань, Ирландия и др.
Достижения компании на проекте:
- В процессе подготовки к проекту команда JazzTeam пополнилась программистами, успешно сдавшими экзамен и получившими сертификат “MuleSoft Certified Developer (MCD - Integration and API Associate)”.
- В процессе разработки команда JazzTeam взяла на себя постановку задач другим разработчикам, участвующим в проекте.
- Командой собраны и приняты к использованию лучшие практики при работе над проектами, в которых используется интеграционная платформа MuleESB:
- использование языка выражений Mule Expression Language;
разработка отдельных exception strategy для каждого flow; конвертирование данных в различные форматы при помощи Dataweave transformation; - особенности работы с различными типами очередей (VM, AnypointMQ, ActiveMQ);
- необходимость покрытия Mule Flows MUnit-тестами и использование JMeter при проведении нагрузочного тестирования.
- использование языка выражений Mule Expression Language;
Отзывы клиентов:
Майкл О'Мира, Вице-президент, Infoview Systems Inc, Разработка интеграционных проектов, помогающих заказчикам встраивать инновационные сервисы и системы в существующие корпоративные решения на базе мейнфреймов, Детройт, США
Мы начали сотрудничество с JazzTeam с целью усиления нашей оффшорной команды, что позволило расширить предлагаемые нами услуги для клиентов по всему миру.
Начиная с самого первого проекта, мы были довольны их эффективными процессами, надлежащим управлением и высоким уровнем технической экспертизы, которые команда JazzTeam привнесла в общий опыт работы с клиентами.
Ежедневные стендапы на проектах с открытой коммуникацией позволяют нам оставаться на связи, а также информировать всех членов команды о текущем статусе проекта. Такой подход позволяет нам прогнозировать риски и управлять ими, а при необходимости быстро реагировать на различные ситуации. Команда JazzTeam работает сообща с нашей глобальной командой, обеспечивая успешное продвижение проекта. Я рекомендую эту компанию в качестве надежного партнера в области разработки программного обеспечения.
Веб-приложение для покупки и продажи недвижимости
Краткое описание проекта: Веб-сервис по размещению объявлений о продаже недвижимости - это приложение, которое позволяет покупателям и продавцам недвижимости находить интересующие их предложения и заключать сделки.
Основная функциональность приложения:
-
-
-
-
- Регистрация и авторизация пользователя (в том числе че
-
-
-