Стэк технологий в WiseAdvice.Tech

22.12.21

Управление ИТ - Управление ИТ-департаментом

Олег Филиппов, СТО WiseAdvice.Tech, рассказал, как эволюционировал стэк технологий в компании.

Я пришел в компанию в 2018 году. На тот момент стэк был «классический», плотно основанный на 1C (что логично) и Windows. И, кстати, работало все тоже неплохо, видели и хуже. Зачем же тогда мы встали на путь перемен?

Да все просто. IT – без прикрас, самая развивающаяся отрасль в мире. 

«Если хочешь попасть в другое место, тогда нужно бежать по меньшей мере вдвое быстрее» – крылатое выражение из книги «Алиса в стране чудес» прекрасно описывает темп. Нельзя останавливаться ни на секунду, встал = проиграл. Именно поэтому в WiseAdvice.Tech мы постоянно растем, меняемся и улучшаемся. Это позволяет нам быть востребованными на рынке. В том числе, как работодатель.

 

 

Расскажу, как менялся наш стэк технологий.

Команда

Быстрый рост сопровождался быстрыми темпами непрерывных инноваций и изменений внутри компании и команды. Сейчас в WiseAdvice.Tech работает более 70 человек. Они разбиты на 5-7 человек. Это позволяет быть эффективными и не распыляться.

 

 

Команды существуют двух типов – продуктовая и инфраструктурная. Продуктовая состоит из продакт-менеджера, разработчиков, чаще всего в командах есть аналитик и QA. Инфраструктурная команда делится на две части: инженеры и саппорт. У нас нет тимлидов, так как мы стремимся к плоской структуре, однако спросить «что, как» в команде можно у продакт-менеджера.

Начальный стэк 

Основой стэка были технологии 1С, ОС – Windows. СУБД – MS SQL. Хранение – Ceph.

Основой Web-стэка был Bitrix, для управления репозиториями кода использовался GitLab. Тикет-система была RedMine. Документация была не систематизирована и представляла из себя хранилище doc и pdf файлов в общем ресурсе.

Текущий стэк

 

 

ОС

В большинстве своем – это Windows, в силу большого количества зависимостей от сервисов криптографии, которые работают только под управлением этой ОС + ограничения продиктованные 1С и MS SQL. Но уже порядка  30% сервисов у нас под управлением Ubuntu.От распределенной ФС пришлось отказаться в пользу дисковых полок и SAN, в силу того что основной профиль нагрузки - OLTP (финансовые данные), Latency Ceph были неприемлемы.

 

СУБД

  • PostgreSQL
  • Elasticsearch
  • MS SQL
  • Redis
  • BigQuery
  • ClickHouse

В качестве RDBMS мы предпочитаем PostgreSQL, хотя большая часть нагруженных реляционных систем у нас пока на MS SQL. Часть сервисов выносим в Яндекс.Cloud. Конечно каждый элемент стэка, включая СУБД, у нас оброс некоторым количеством вспомогательных библиотек, что естественно за годы эксплуатации. ElasticSearch используется для корпоративного и клиентского поиска, а также частично для хранения логов. Хотя большинство логов переезжает в ClickHouse – мы коммерческая компания, и пытаемся экономить ресурсы, а для ElasticSearch их нужно немало.

 

Backend

  • Node.js
  • .NET

Поскольку основные задачи, с которыми мы сталкиваемся, так или иначе связаны с учетом, а что-то «костылить своими руками» мы не любим, то основой стэка продолжает быть 1С. 1С обеспечивает большинство функций хранения, бэкенда, и бэкофиса. Из 1С мы выносим сервисы, которые требуют нереляционных систем хранения, либо к которым предъявляются повышенные требования по скорости ответа или отказоустойчивости. Также для большинства клиентских сервисов мы пишем свой фронт.

 

Код

  • GitLab

Gitlab в компании используется активно и как удобный интерфейс к хранилищу кода, и как Gitlab CI для автоматизации процессов сборки и развертывания приложений (как в классических стэках, так и 1С). Практически весь код, да и не только код, а также скрипты администрирования и большинство настроек, у нас хранится в GitLab. Почти в каждом репозитории настроен CI. Он пока не статичен, конечно, ещё есть над чем поработать, но уже экономит нам сотни трудочасов ежемесячно.

 

Frontend

  • Angular 
  • PrimeNG
  • Storybook
  • Material
  • NgXs
  • WebStorm

Необходимо создавать продукт, который близок пользователю, однако в то же время поддерживает сложные процессы. Не стоит забывать и о разработчиках – каждый член команды должен быть обеспечен лучшими и самыми современными инструментами. За последние три года стэк WiseAdvice.Tech претерпел громадные изменения.

Angular – Основной фреймворк разработки фронта. Все приложения, разрабатываемые в рамках WiseAdvice.tech являются достаточно сложными и нагруженными различной логикой, поэтому мы на старте закладываем определенные архитектурные паттерны. Angular позволяет нам изначально корректно организовывать код фронтенда для масштабирования приложений. Естественно мы используем только TypeScript. Мы также используем state manager NGXS для управления состоянием в наших приложениях. 

PrimeNG – UiKit, который мы используем в основе наших приложений. Компоненты PrimeNG достаточно гибкие и покрывают большую часть потребностей, а также позволяют сэкономить время и избежать множества ошибок.

Storybook — мы придерживаемся компонентного подхода для разработки Web приложений. В идеале уложить приложение в UiKit, и для этого у нас есть PrimeNG. Но если мы пишем свой компонент с какой-то более-менее сложной логикой, то мы сразу описываем и тестируем поведение компонента отдельно. Для того, чтобы упростить разработку, уменьшить количество багов и дать возможность переиспользовать реализованный компонент в других наших Web-проектах. 

WebStorm – мы используем единую IDE, чтобы проще было обучать новых членов команды, делиться какими-либо настройками, рекомендованными плагинами. Мы выбрали WebStorm от компании JetBrains. Всем разработчикам мы конечно предоставляем лицензии на WebStorm.
 

Middleware

  • Mule ESB
  • RabbitMQ

Скорее всего, еще появится ещё GrahpQL, но пока его нет. Mule ESB мы используем как некоторую «прослойку» между интернетом с cloud-сервисами и Incorporate 1С, в простонародии API Gateway. Впрочем, MuleESB существенно гибче, чем классические API Gateway решения, поэтому при необходимости мы используем и её функционал и для решения задач классической ESB, и для ETL задач.

RabbitMQ  – позволяет нам организовывать асинхронные обмены как с внешними так и с внутренними сервисами. Протокол AMQP оборачивается в http в нашем случае, соответственно мы не используем все преимущества RabbitMQ. Но в большинстве сервисов хотя бы не «костылим» свои реализации очередей сообщений на таблицах реляционных БД.


 

API

  • Postman
  • OpenAPI

Все наши API мы описываем, Mock-аем и тестируем с использованием Postman. Большая часть наших API уже описана в формате OpenAPI 3. Postman очень удобен для тестирования API. Собственно, об этом, пожалуй, знают все. Но мы пошли дальше – тестирование API прогоняется как часть CI процесса с использованием утилиты Newman. Более того, часть тестов регистрируется как регулярные и добавляется в Postman мониторинг. Использование Mock-серверов позволяет не привязывать жестко разработку фронта к разработке бэка.

 

Тестирование

  • Postman
  • Katalon Studio
  • Vanessa Behavior 

Юнит-тестов у нас нет и не планируется. Мы, к счастью, не банк, и можем себе позволить иногда (но очень редко) ошибиться, не тратя миллионы трудочасов разработчиков на покрытие тестами каждой строчки кода. Хотя и те, кто тратят, как показывает практика, тоже ошибаются.  Katalon – отличный стэк для автоматизированного тестирования, который позволяет «ручного» QA превратить в «автоматизированного» за пару дней, абсолютно для него незаметно. Тесты Katalon, конечно, тоже интегрированы в CI на некоторых проектах. Ну а про Postman я уже кратко рассказал выше.

 

BI

  • Google Data Studio
  • Google Big Query

Основа нашего BI стэка – продукты Google. Это обеспечивает нам достаточно низкую стоимость владения и очень неплохую интеграцию с маркетинговой аналитикой.

 

Мониторинг

  • Zabbix
  • Prometheus

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

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

Орг. среда

  • Jira
  • Confluence
  • Slack
  • Telegram
  • Zoom
  • Miro

Jira и Confluence – основа орг. среды, контроля задач и база знаний. Slack мы используем не во всех командах, а вот Telegram, Zoom и Miro – гигиенический набор. В какой-то момент мы четко поняли, что для ретроспективы необходим Miro, где каждый участник команды может разместить свой стикер. Все делают по стандартизированному формату. Что хорошо, что плохо идеи, предложения – каждый сотрудник накидывает стикеры, и мы их дружно обсуждаем.

Заключение

Надеюсь, эта статья пролила свет на то, как работает WiseAdvice.Tech изнутри и что «под капотом». Конечно, это неоконченная история – по мере развития технологий, роста компании и требований к продуктам будет развиваться и наш технологический стэк. Каждый член команды может вносить что-то новое – и это тоже важная часть развития. У нас не надо согласовывать миллион лет идеи: если что-то нужно – обсуждаем. И кажется, это крайне важно для роста сотрудников и компании в целом.

 

Присоединяйтесь к нам!

См. также

Как пройти в отдел IT?

Управление ИТ-департаментом Бесплатно (free)

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

12.03.2024    598    0    DemetrKlim    9    

5

Возможности и нюансы превращения ИТ-службы в бизнес, а себя – в партнера

Управление ИТ-департаментом Бесплатно (free)

В последнее время в ИТ-сфере получил распространение термин «бизнес-партнёр». О том, чем отличается новая модная должность от менеджера по изменениям, и как превратить ИТ-службу в бизнес-партнера холдинговой структуры, пойдет речь в статье.

26.09.2023    1367    0    tchee    0    

11

Как выжить в ИТ и не убить бизнес

Управление ИТ-департаментом Бесплатно (free)

Когда с 1С в онлайне работают 1500 пользователей в режиме 24x7, создавая сотни тысяч документов в день, а бизнес регулярно просит новые фичи, которые потом должны работать с учетом SLA, проблема производительности и отказоустойчивости выходит на первый план.

21.08.2023    1044    0    user1272110    1    

5

Проектный офис без офиса. ИТ-инструменты, техники и другие секреты крупной ИТ-компании, работающей со сложными проектами и заказчиками

Управление ИТ-департаментом Бесплатно (free)

КРОК – ИТ-компания, выполняющая больше 2000 проектов в год, но у компании нет проектного офиса – его заменяют специализированные ИТ-инструменты и люди, которые общаются между собой. Расскажем о том, как сотрудничать с творцами автоматизированных систем и какие ИТ-инструменты использовать для получения обратной связи от команд и измерения «пульса» активностей.

24.07.2023    1173    0    user1693260    0    

5

Концепция ландшафта 1С-систем на предприятии

Управление ИТ-департаментом Бесплатно (free)

Визуализация размещения программных ресурсов и сервисных данных 1С-систем в корпоративном ландшафте. Как 1С-службе и ИТ-службе договориться о разграничении, получить свободу для своих задач и сохранить порядок во взаимодействии.

09.12.2022    2329    0    roman72    13    

11

Управление бизнесом как ИТ-проектом

Управление ИТ-департаментом Бесплатно (free)

Когда я создавал Инфостарт, у меня была фраза: «Создание компании – это просто очередной проект автоматизации».

29.10.2021    3732    0    support    8    

47

Совет директоров - универсальное устройство

Управление ИТ-департаментом Россия Управленческий учет Бесплатно (free)

Как организовать Топ-менеджеров организации? Описание построения структуры для управления бизнесом.

10.06.2019    3727    0    Ликреонский    2    

2

Как управлять теми, кто управляет нами? Управление без полномочий для руководителей проектов и ИТ-директоров

Управление ИТ-департаментом Бесплатно (free)

Бывает, что на программистов ложится задача не только выполнить чисто технический проект, но и уладить какие-то внутренние проблемы заказчика. О том, что можно предпринять в таких ситуациях, чтобы и заказчик был доволен, и команда осталась в прибыли, рассказывает бизнес-тренер, управляющий партнер компании Wild PR Денис Родионов.

05.07.2018    6890    0    denislan    2    

19
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Diversus 2306 22.12.21 12:43 Сейчас в теме
Спасибо за статью, Олег. Вопрос.
PrimeNG работает на Agular вы это дело, насколько я понял, используете как отдельную ветвь разработки, которая никак не связана с 1С. Верно?
adhocprog; +1 Ответить
3. comol 5051 24.12.21 13:00 Сейчас в теме
(1)
PrimeNG работает на Agular вы это дело, насколько я понял, используете как отдельную ветвь разработки, которая никак не связана с 1С. Верно?
Как это не связана? Все продукты с бэк-ом на 1С. Но фронт для клиентов, на 1С, к сожалению, мы не пишем. Много ограничений, не говоря уже об интерфейсе...
adhocprog; +1 Ответить
5. user813936 25.12.21 20:50 Сейчас в теме
(3) Под какие задача пишется фронт на не 1С, хотя бы пару? Для поддержки нетипового фронта заказчик готов нанимать зоопарк из разных программистов?
6. comol 5051 25.12.21 21:25 Сейчас в теме
(5) да примеров сколько угодно:

https://1c-wiseadvice.ru/lichniy-kabinet-sotrudnika/
https://1c-wiseadvice.ru/personal/
https://gardium.online/

Я правда с трудом понимаю кто есть заказчики, мы продуктовая команда, платят клиенты за пользование сервисом. Пока они есть, значит "готовы". Фронт вполне себе "типовой" у нас технология уже отработана.
adhocprog; +1 Ответить
7. user813936 25.12.21 23:12 Сейчас в теме
9. alexey-simf 13 12.01.22 14:50 Сейчас в теме
(6) Решил проверить онлайн, с регистрацией по яндексу.
https://app.gardium.online/api/user/oauth?state=brand.GARDIUM-ONLINE%2Fprovider.yandex&code=ЦИФРЫ
{"answer": "{ОбщийМодуль.ВебСайт_HTTPСервисы.Модуль(1232)}: Поле объекта не обнаружено (Заголовки)"}
8. user907889 27.12.21 11:14 Сейчас в теме
(5) забавно читать удивленные комментарии, зачем тут Angular и неужели у 1С плохой фронт. Да нет, он ужасный друзья. А теперь я задам вопрос автору, зачем вообще 1С как бэкенд? ресурсы и latency, создаваемые эти монстром, не проблема?
2. ilyatroitskiy 24.12.21 08:52 Сейчас в теме
А есть примеры того, как вы ретроспективу с Миро проводите?
4. comol 5051 24.12.21 13:02 Сейчас в теме
(2) Ну скрины и видюхи с живой ретроспективы я наверное не пришлю... Надо чтобы люди не стеснялись писать что хотят :(
Оставьте свое сообщение