Стэк технологий в 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 изнутри и что «под капотом». Конечно, это неоконченная история – по мере развития технологий, роста компании и требований к продуктам будет развиваться и наш технологический стэк. Каждый член команды может вносить что-то новое – и это тоже важная часть развития. У нас не надо согласовывать миллион лет идеи: если что-то нужно – обсуждаем. И кажется, это крайне важно для роста сотрудников и компании в целом.

 

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

См. также

Эффективный ИТ-руководитель в период цифровой трансформации. [25 сентября - 30 октября]

Управление, soft skills Мотивация, лидерство и личная эффективность Управление ИТ-подразделением Управление командой Платные (руб)

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

45000 руб.

13.03.2023    12541    19    26    

43

Продуктовый подход и создание центра компетенции 1С в компании

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

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

20.09.2023    430    user1949771    0    

4

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

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

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

21.08.2023    599    user1272110    1    

4

Практика построения проектного офиса в ИТ-компании

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

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

18.08.2023    920    Pryamonosov    2    

6

Как мы перестали нанимать готовых программистов, и как это повлияло на зарабатывание денег

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

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

01.08.2023    2323    nelatontsev@webgk.ru    4    

11

Проекты 1С по Scrum глазами Scrum-мастера

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

Agile в ИТ встречается все чаще, и об адаптации гибких технологий под проекты 1С задумываются многие. Расскажем о ключевых инструментах и точках приложения усилий для успешного внедрения Scrum при разработке в 1С.

28.07.2023    1311    0    olegminkov    4    

6

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

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

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

24.07.2023    769    user1693260    0    

5
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Diversus 2299 22.12.21 12:43 Сейчас в теме
Спасибо за статью, Олег. Вопрос.
PrimeNG работает на Agular вы это дело, насколько я понял, используете как отдельную ветвь разработки, которая никак не связана с 1С. Верно?
adhocprog; +1 Ответить
3. comol 4959 24.12.21 13:00 Сейчас в теме
(1)
PrimeNG работает на Agular вы это дело, насколько я понял, используете как отдельную ветвь разработки, которая никак не связана с 1С. Верно?
Как это не связана? Все продукты с бэк-ом на 1С. Но фронт для клиентов, на 1С, к сожалению, мы не пишем. Много ограничений, не говоря уже об интерфейсе...
adhocprog; +1 Ответить
5. user813936 25.12.21 20:50 Сейчас в теме
(3) Под какие задача пишется фронт на не 1С, хотя бы пару? Для поддержки нетипового фронта заказчик готов нанимать зоопарк из разных программистов?
6. comol 4959 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 Сейчас в теме
(6) Теперь понятно
9. alexey-simf 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 4959 24.12.21 13:02 Сейчас в теме
(2) Ну скрины и видюхи с живой ретроспективы я наверное не пришлю... Надо чтобы люди не стеснялись писать что хотят :(
Оставьте свое сообщение