Студенческие соревнования «НеХакатон» 2023!

20 апреля состоялся финал студенческих соревнований «НеХакатон» от Агентства Инноваций Ростовской области.

Наша компания предложила командам кейс на актуальную тему – приложение для контроля питания и тренировок!

Наш кейс выбрали более 15 команд, но до финала дошли только 3:

  • НИР (ЮФУ)
  • RealApp (ДГТУ)
  • Людь (РГЭУ «РИНХ»)

Ребята представили свои работы нашему жюри – заместителю исполнительного директора Геннадию Шурову, руководителю департамента Web-разработки Дмитрию Лагутину и Senior Fullstack разработчику Дмитрию Леонову. Нам было очень сложно выбрать одного победителя, т.к. у каждой команды получился уникальный продукт, интересный по-своему. После бурных дискуссий было принято решение разделить первое место между всеми финалистами!

Своими впечатлениями поделился руководитель департамента Web-разработки Дмитрий Лагутин: «По сравнению с предыдущими похожими активностями понравился грамотный подход и организация процессов со стороны ответственных лиц. Также удивил высокий уровень ребят и команд, которые участвовали в НеХакатоне. Весело и оперативно была организована финальная часть, без лишних затягиваний — в этом опять же заслуга организаторов. Не было лишних пауз и ненужных задержек. Вообще впечатления исключительно положительные. Порадовали как организаторы, так и участники. Надеюсь, НеХакатон станет хорошей ежегодной традицией в нашем городе».

А вот комментарий Senior Fullstack разработчика Дмитрия Леонова: «Понравились выступления ребят. Качественно сделанные презентации, с которыми не стыдно выступать и на более крупных конференциях/митах/хакатонах. У всех финалистов были проекты доведенные до рабочей стадии. Можно протестировать вживую на своих устройствах и посмотреть исходный код».


Благодарим Агентство Инноваций Ростовской области за организацию мероприятия и всех ребят, которые приняли участие в соревнованиях!

МОБИЛЬНОЕ ПРИЛОЖЕНИЕ – КЛЮЧ РЕЗУЛЬТАТИВНОГО БИЗНЕСА

Успех в любой сфере – правильная постановка работы всей команды. Движение каждого винтика механизма обеспечивает либо растущую прибыль, либо упадок производства и дальнейшие расходы.

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

Кому нужны мобильные приложения?

Чтобы понять, нужно ли заняться вопросом о создании мобильного приложения для вашей компании, стоит провести небольшое исследование:

  • 1. Задайтесь вопросом: насколько улучшит структуризация документации ваш бизнес? Стоит ли компьютеризировать фирму или можно оставить все, как есть?
  • 2. Проанализируйте рынок, посмотрите есть ли у ваших конкурентов приложения и насколько эффективнее их бизнес по сравнению с вашим.
  • 3. Задумайтесь, сколько времени вы проводите в мобильном телефоне. Если бизнеса нет в нем, то бизнес выпадает из вашего поля зрения, а значит вы теряете потенциальных потребителей.

Наши работы

К нам обратилась российская производственная компания «Систэм Электрик» (Systeme Electric, ранее Schneider Electric в России), производитель комплексных решений в области распределения электроэнергии и автоматизации. Компания интегрирует лучшие технологии в области управления электроэнергией и автоматизации в режиме реального времени, услуги и решения для объектов гражданского и жилищного строительства, центров обработки данных, инфраструктуры и промышленности.

Благодаря своему широкому ассортименту производимой продукции (розетки, выключатели, реле, системы для электроподстанций) Systeme Elecrtic является сильным игроком на рынке и демонстрирует при этом полную конкурентоспособность.

Представители компании обратились к нам за разработкой корпоративного мобильного приложения для торговых представителей.

Работа над заказом

Для торговых представителей использование мобильного приложения в работе – оптимальный вариант, так как их труд предполагает постоянное перемещение. Поэтому, именно его, а также Web-панель администратора для управления приложением разработала команда специалистов DBI и Systeme Elecrtic.

На первом этапе аналитики DBI провели интервью с бизнес-пользователями Systeme Elecrtic, на котором заказчик описал свои пожелания. Далее специалисты DBI зафиксировали список требований и предварительную оценку по срокам и стоимости.

План работ выглядел так:

  • 1. Разработать архитектуру приложения, то есть создать набор методов и шаблонов, которые помогут структурировать продукт.
  • 2. Сверстать дизайн-макеты для мобильного и web-приложений на основе предварительно построенной CJM(Customer Journey Map), маркетингового инструмента, визуализирующего опыт взаимодействия потребителя с компанией.
  • 3. Выполнить разработку приложений с использованием стека технологий: Node.js, React, SWIFT, PostgreSQL, Redis, Yandex Cloud. Интегрировать с корпоративными системами для связи с данными.
  • 4. Настроить инстансы (экземпляры) для разработки и продакшена с необходимыми и достаточными ресурсами, чтобы поддержать работоспособность систем и резервную копию данных, которая содержит всю информацию приложений.
  • 5. Настроить CI/CD инфраструктуры – технологию автоматизации тестирования.

Результат работы

За 4 месяца специалисты создали базовое мобильное приложение под iOS, которое отвечает всем перечисленным требованиям. С его помощью можно:

  • Создавать и управлять локациями.
  • Узнавать сведения о продажах продукции компании на локации.
  • Совершать визиты с указанием продуктов, комментариев и фотографий.
  • Смотреть базы медиа материалов.

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

Web-приложение для администратора содержит:

  • Базы данных пользователей.
  • Данные по линейкам продуктов компании.
  • Данные по торговым точкам.

С его помощью возможно:

  • Выгружать отчетности по продажам и визитам.
  • Изменять привязки представителя и смены региона.
  • Синхронизировать данные с мобильным приложением.

«Обратившись изначально в DBI за доработкой готового приложения, мы не планировали разрабатывать новый продукт, но предложенные варианты от команды разработчиков в ходе обсуждения проекта оказались настолько простыми, удобными и функциональными, что мы приняли решение делать собственное автономное приложение. Несмотря на то, что на текущий момент приложение полностью соответствует всем бизнес-задачам, команда DBI динамично предлагает варианты его оптимизации и оказывает полное техническое сопровождение. Рассчитываем на дальнейшее сотрудничество и повышение уровня коммерческой эффективности за счет данного решения», – отметила Валентина Сергейчик, руководитель канала Дилеры и Точки продаж, Systeme Electric.

«Systeme Elecrtic обратились в нашу компанию с просьбой дополнить рядом функций уже готовое коробочное решение. За короткие сроки мы подготовили план работ, который полностью удовлетворял требования заказчика. После сдачи готового продукта наше сотрудничество не заканчивается – мы будем продолжать проводить регулярное техническое обслуживание приложений», – рассказал Дмитрий Лагутин, Руководитель WebDev и PMO департаментов, DBI.

Если вас заинтересовал проект или остались вопросы по разработке, напишите на contact@dbi.ru. Команда специалистов DBI внимательно изучит ваш запрос и поможет в решении вашей задачи!

DBI запустили собственный корпоративный мессенджер

Правильно настроенная коммуникация между сотрудниками – залог продуктивного бизнеса. В 2023 году пользователям всемирной паутины доступно множество мессенджеров, которые обеспечивают потребителей необходимым функционалом, одним из них являются общие корпоративные чаты. Однако, создание одного или нескольких общих чатов для бизнеса нерентабельно – переписки и файлы могут быть удалены, утеряны, либо доступ к ним ограничен правообладателем.

Решением этой проблемы является создание корпоративного мессенджера, в котором можно быть 24/7 на связи с клиентами и коллегами, обсуждать задачи и общаться в удобной функциональной среде. Его устанавливают на сервер сотрудника, доступ к которому есть у администратора. Сервер хранит все данные, истории переписки, файлы.

Почему актуально внедрение мессенджера?

В связи с уходом многих зарубежных сервисов из России, мы пришли к выводу, что надо внедрить свой корпоративный мессенджер. Создание мессенджера «с нуля» требует времени и большого вложения финансовых средств. Да и на ранке IT-услуг существует множество вариантов готовых мессенджеров. Коллеги анализировали рынок, рассматривали несколько бесплатных и опенсорс-мессенджеров, в том числе российские приложения Пачка, Dialog, Яндекс.Месседжер. Однако лучшими из них оказались Element, Mattermost, Zulip и RocketChat. Но Zulip и RocketChat, Element не подошли по отзывам и функционалу.

За основу разработчики DBI взяли опенсорс-мессенджер Mattermost. Он является альтернативой Slack, который в марте 2022 года сообщил, что начал отключать от своего сервиса российских клиентов из-за санкций. В Slack пояснили, что не удаляют ничьи данные, но попавшие под санкции компании не могут получить доступ к информации, пока санкции не будут сняты.

Далее наши специалисты провели внутреннее тестирование программы, чтобы понять, насколько ее основной функционал соответствует нашим требованиям. Несмотря на то, что Mattermost обладает большим функциональным спектром, многие важные для нас функции оказались недоступны. Однако, основным преимуществом Mattermost является возможность вносить изменения внутри, добавлять и расширять функционал.

Ряд других преимуществ Mattermost:

  1. Mattermost – это Open Source self-hosted решение, которое обеспечивает большую приватность и контроль над данными компании.
  2. Desktop приложение, которое поддерживает Windows и другие ОС.
  3. Mattermost – можно использовать под своим брендом.
  4. Существует веб-версия приложения, которая доступна из любого браузера, включая мобильные браузеры.
  5. Отдельное нативное мобильное приложение для Android и IOS.
  6. Возможность сделать SSO-аутентификацию через GitLab, используя AD LDAP учётные записи сотрудников.
  7. Функциональная работа с досками, как для проектной работы, так и для хранения общих интерактивных таблиц, списков, с возможностью подключения к разным каналам или общим каналам по командам.
  8. Можно работать с несколькими аккаунтами различных Mattermost-сервисов в одном приложении. Например, подключить учётные записи клиентов, у которых установлен Mattermost.
  9. Есть возможность организовать аудио-звонки, групповые (до 200 человек) и личные. Функция нотификации вызова, как звонка, ещё на стадии доработки у разработчиков Mattermost.
  10. Наличие разных возможностей и интеграций: боты, Webhook в Jira, GitLab, Яндекс.Календарь.

Мы решили внедрить мессенджер Mattermost собственными силами, не привлекая сторонних партнёров. В течение 3-х месяцев наша команда тестировала и постепенно подключала людей для открытого пользования. Параллельно с этим разрабатывали методику резервирования баз данных и файлов, настройку мониторинга, скриптов для быстрого восстановления БД и файлов. В качестве файлового хранилища был выбран S3 хранилище Yandex Cloud, для возможности быстрого переключения между основным и резервным сервером в случае сбоя.

Для развёртывания веб-сервера и БД, в которой будут храниться настройки приложения, а также текст сообщения, можно использовать слабую по мощности виртуальную машину. Она не требует мощного сервера для Mattermost. В процессе работы для 1000 пользователей достаточно два VCPU 4ГБ оперативной памяти.

После того как мы развернули Mattermost, добавили следующие плагины:

  1. Autolink для автоматического преобразования текста, через regexp выражение встречающиеся в чате. Особенно это удобно для автоматического линкования номеров упомянутых в сообщениях билетов в Jira.
  2. Channel Notes плагин для создания больших заметок к каждому каналу в Markdown формате.
  3. Jira-плагин позволяет быстро получать модификацию об изменениях в билетах, назначенных на сотрудника, или упоминания сотрудника в других билетах. Также он позволяет быстро отправить любое сообщение из Mattermost в любой билет джиры, или даже создать задачу в джире, основываясь на сообщении в Mattermost.
  4. Внедрили дополнительный плагин Matterpoll, который даёт возможность проводить опросы в каналах. Изначально этот функционал отсутствовал в коробочном решении.
  5. С помощью отдельного приложения Matterbridge мы настроили мосты между каналами Mattermost, Telegram, Slack, Discord, чтобы оставаться на связи с нашими партнёрами и клиентами 24/7 и оповещать их о срочных инцидентах. Для этого мы написали собственную интеграцию, которая позволяет создавать мосты между мессенджерами, используя облачный excel-документ.

В качестве итога

Теперь в нашей компании есть крутая онлайн-платформа, которую мы можем настроить под запросы бизнеса. Корпоративный мессенджер надёжно защищает всю информацию от утечки и взлома, интегрирует с CRM-системами, сервисами рассылок, внутренними IT-системами компании, а также обладает широким спектром опций для бизнеса.

Если вы планируете внедрить корпоративный мессенджер, специалисты нашей компании готовы проконсультировать и подобрать наиболее подходящее решение, исходя из ваших требований и необходимого функционала. Напишите нам — будем рады ответить!

Что нового в PostgreSQL 16? Итоги PGConf.Russia 2023

Инженеры компании DBI участвовали в международной технической конференции PGConf.Russia 2023 по открытой СУБД PostgreSQL!

Здесь ежегодно собираются более 700 разработчиков, администраторов баз данных, IT-директоров и менеджеров из разных городов и стран. В течение 2-х дней участники слушали блиц-доклады, обменивались профессиональным опытом и обсуждали задачи, с которыми сталкиваются ежедневно в работе.

Главные темы — миграция с зарубежных систем на Postgres, выход новой версии PostgreSQL 16, а также эксплуатация СУБД. Спикеры конференции описали мониторинг и настройку СУБД, в ряде докладов рассказали об отказоустойчивых и масштабируемых системах, а разработчики поделились личным опытом.

Новая версия PostgreSQL 16

В ней появится двунаправленная логическая репликация, которая позволит настроить аналог мультимастера, не используя вспомогательные программы. Параметр reserverd_connections для «обычных» пользователей поможет настроить стабильную работу мониторинговых процессов. В случае если пул соединений будет переполнен, это позволит не терять важные данные мониторинга, которые нужны для анализа подобных проблем. Для пользователей мониторинга будет добавлена встроенная роль MAINTAIN. Она позволит собирать метрики без прав SUPERUSER.

К новым функциям можно отнести также использование расширения pg_profile, которое позволяет:

  • получить статистику SQL в разных разрезах
  • посмотреть объёмные таблицы, которые отсканированы последовательным образом. Это позволяет понять для каких таблиц не хватает индексов
  • увидеть unused indexes

В PostgreSQL 16 расширены подходы анализа проблемы при обновлении и восстановлении поврежденных данных.

Про переход с Oracle и других зарубежных систем на PostgreSQL

Переход с Oracle на PostgreSQL можно осуществить с помощью Ora2Pg. Благодаря этому инструменту допускается перенести данные из Oracle в Postgres. Однако есть множество подводных камней, которые могут помешать это сделать. Всегда стоит учитывать особенности этих двух СУБД, такие как: типы данных и их отличия, разницу работы функций и их логики. Например, легко ошибиться в точности TIMESTAMP формата или запутаться в понятиях о типе NULL в Oracle и PostgreSQL. От этих особенностей надо отталкиваться при формировании миграционного плана, а делать миграцию лучше поэтапно.

Поврежденные данные

Конечно, чтобы не допустить потери данных, лучше всегда делать backup. Однако если по какой-либо причине возникли повреждения, а бэкапов нет, то есть несколько инструментов, которые помогут частично восстановить повреждённые данные. Физические повреждения блоков можно найти, запустив функцию molotilka. Функция поочередно перечитает каждый блок объекта и выдаёт ошибку, если найдёт повреждённый блок.

Что делать потом? — Есть несколько решений, например, pg_filedump, pg_waldump. С их помощью можно попытаться найти в какое время повредились данные, какие блоки и какого именно объекта побились, вплоть до поиска строки в таблице. Затем блоки можно очистить, например, с помощью pg_surgery. pg_surgery. Это очень опасная функция, которая может сильно навредить всему кластеру. Однако в опытных руках она может так же и спасти БД от полной потери данных.

Немного про мониторинг

Небезызвестный pg_profile собирает в себе массу метрик, которые помогают проанализировать здоровье БД. Сейчас в публичной ветке на github появился профиль для графаны, что делает развертку минимального мониторинга еще проще, а источником данных — сам Postgres.

Автоматическое устранение bloat в индексах

Для этого идеально подойдёт pg_index_watch — это расширение, которое помогает бороться с bloat в индексах на автоматической основе. Расширение постоянно собирает статистику по блоату в индексах. На основе полученных данных и настроек перестраивает индексы автоматически в режиме CONCURRENTLY. Важный момент, что утилита работает на основе первоначально полученных данных об объекте, из-за чего после установки расширения она перестраивает все индексы в БД, что может стать неприятным сюрпризом.

Кейсы, о которых рассказали на встрече

  1. Как сделать всё «с нуля», с помощью Postgres Professional, описали ребята одной из компаний. Инженеры пытаются построить решение в стиле Patroni и внести его «в коробоку». Кластер поднимается ctl утилитой и затем стартует.
  2. Другой кейс про шардирование базы данных при помощи различных инструментов масштабирования, таких как: Citus DB, Greenplum, Cockroach DB, Yugabyte DB и Shardman. Докладчики описали разницу между этими реализациями, достоинства и недостатки.
  3. Некоторые инженеры IT- компаний проводят миграцию баз данных на PostgreSQL с использованием Debezium (CDC-миграция) или Apache Airflow (запуск DAG`ов).

На основе полученной информации мы выделили критерии, которые могут повлиять на трудозатраты для выполнения миграции в наших будущих проектах:

  1. Количество процедур, функций и пакетов, которые необходимо будет адаптировать и переписать.
  2. Объем и типы данных.
  3. Возможность долгого простоя БД, были рассмотрены случаи, где он возможен.
  4. Различия в логике выполнения некоторых функций или процедур для разных СУБД. Рассмотрели отличия Oracle — PostgreSQL.

В течение последних 6 лет DBI активно работает с PostgreSQL. Более двадцати компаний находятся на поддержке в формате 24/7, а PostgreSQL используют как стандарт при разработке новых решений. Мы реализовали три проекта по миграции с MSSQL и Oracle на PostgreSQL и готовы к новым IT-проектам.

Благодарим организаторов компании Postgres Professional за то, что собрали всех вместе, устроили такое интересное мероприятие и красиво завершили его лекцией об экстремальной астрономии!

DBI теперь 1С:Франчайзи!

Компания DBI заключила договор по оказанию услуг по продаже, установке и сопровождению программ «1С» и стала 1С:Франчайзи, сертифицированным на оказание комплексных услуг по автоматизации предприятий на базе системы «1С:Предприятие».

«1С:Предприятие» включает в себя спектр программ, которые широко используются для автоматизации управления и учета на предприятиях различных отраслей, видов деятельности, типов финансирования и масштаба. Став 1С:Франчайзи, компания DBI может оказывать своим клиентам услуги по автоматизации: от подбора оптимальной конфигурации решений 1С, настройки решений в соответствии с индивидуальными запросами компаний, до обучения пользователей и дальнейшего сопровождения системы.

«Мы рады началу сотрудничества с компанией «1С». Линейка программных продуктов партнёров охватывает практически все направления деятельности, и является универсальным решением для многих компаний. Уверены, что сотрудничество будет способствовать качественному развитию бизнеса и решению задач наших клиентов», — отметил Михаил Сарычев, директор по развитию DBI.

Как микросервисы решили макропроблемы приложений

Что такое приложение? Одни считают, что это программное изделие, другие – набор знаков и символов, третьи – затрудняются ответить. Но, безусловно, каждый согласится с тем, что приложение – это система, требующая упорядоченности и выверенной структуры. Но как это делать? Существует множество вариантов, как написать приложение, однако лидерами сервис-ориентированной архитектуры являются микросервисы.

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

Cначало было приложение

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

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

Вэб, микросервис и что-то еще

Если с вэбом еще что-то понятно (пользователи смогут открывать его прямо в браузере, да еще и устанавливать отдельно не надо), то вот с этими микросервисами становится тревожно.

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

Код, как ход мыслей человека, скачет, путается и совершенно не дается в руки. Если убрать ненужный, на первый взгляд кусок, то все приложение не работает. Почему?  Все просто — каждый программист создавал приложения «под себя», интерпретируя коды так, чтобы было понятно ему, не думая о будущем. Постепенно приложения стали более упорядоченными, их даже стало возможно поддерживать, но они все равно были цельным куском кода. Задачи росли, росли отделы разработки, появлялись аналитики, требовались люди со специфичными знаниями, росли и Приложения.

Так могло продолжаться бесконечно долго, пока не была придумана Микросервесная Архитектура.

В чем разница Монолитного подхода и Микросервисов?

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

Также возникают проблемы и с написанием кода: у каждого сотрудника, который занимается приложением, должен быть доступ ко всему, а не просто к его отдельным компонентам. Микросервисы решили эти проблемы. Их основной задачей была независимость. То есть, вместо длинного кода мы видим отдельные сервисы, компоненты которых можно писать на разных языках программирования (конкретному сотруднику не нужно раздавать доступ ко всей системе, лишь к его сервису), отказ одного или нескольких компонентов не приводит к тотальному сбою системы.

Таким образом, после исправления ошибок в отдельном компоненте не нужно настраивать все приложение, достаточно перезапустить отдельный сервис.

Жизнеспособен ли Монолитный подход?

Безусловно, Монолитный подход продолжает функционировать, и многие компании, чьи приложения не требуют многозадачности, используют его. Если правильно выбирать форму, то окажется, что небольшой монолит прекрасно выполняет все свои задачи как часы, оставаясь незыблемым в меняющемся мире. Но время не стоит на месте и требует изменений, поэтому нельзя точно сказать, сколько монолит сможет оставаться в IT-рынке. В любом случае, решение «менять или не менять» остается только за Вами.

Всё больше компаний используют микросервисы. Они не только помогают стандартизировать разработку и упростить командную работу, а также отличаются высокой скоростью развёртывания. Наши специалисты выполнили много микросервисных проектов, готовы проконсультировать, поделиться опытом внедрения и предложить решение для вашей проблемы. Напишите нам — будем рады ответить!