Как стать автором
Обновить

Компания DINS временно не ведёт блог на Хабре

Сначала показывать

Исследование роста утилизации процессора: как мы мигрировали с CentOS 7 на Oracle Linux 7

Время на прочтение9 мин
Количество просмотров19K

Привет! Меня зовут Александр Петровский, я инженер в DINS. Я работаю в команде, которая участвует в разработке сервисов облачной телефонии и видеоконференций. Каждый из них состоит из большого количества микросервисов.

Когда мы мигрировали один из наших микросервисов с CentOS 7 с ядром 4.19 на Oracle Linux 7 с ядром 5.4, мы заметили рост утилизации процессора на наших stress/performance-тестах. В статье я расскажу, как мы исследовали причины роста утилизации процессора сначала в user-space, а потом и в kernel-space и о том, к какому результату это нас привело.

Читать далее
Всего голосов 129: ↑128 и ↓1+127
Комментарии18
IT-эволюция - шутка парадоксальная. Например, сначала на компьютерах моделировали нагрузку на АТС, затем программно управляли вызовами, а теперь телефония - это облачное решение, которое разворачивается за несколько минут и объединяет все корпоративные коммуникации. Кажется, между этими изменениями мало общего. На самом деле они стали возможными благодаря принципам программирования, заложенным полвека назад. И чтобы лучше увидеть эту связь, мы решили вспомнить историю С++ - одного из самых “взрослых” языков программирования. Он может быть и удобным инструментом разработки, и ночным кошмаром, и частью корпоративной истории. std::begin( )
Подробности — под катом
Всего голосов 72: ↑65 и ↓7+58
Комментарии185

ElasticSearch: отказоустойчивый сервер отказал

Время на прочтение8 мин
Количество просмотров13K
image
Всем привет, меня зовут Илья, я работаю в компании DINS на должности инженера отдела мониторинга. В этой статье расскажу о нашей боли при работе с ElasticSearch. Мне не удалось найти решение этой проблемы где-либо ещё, поэтому, думаю, этот туториал будет интересен всем, кто использует ElasticSearch.
Читать дальше →
Всего голосов 34: ↑33 и ↓1+32
Комментарии17

Шестой подвиг Геракла: как мы расчистили прод от багов

Время на прочтение12 мин
Количество просмотров9.5K

Привет, Хабр. Меня зовут Макс. Я специализируюсь на реконструкции и развитии процессов. Сегодняшняя история про баги. Не баги вообще, а про вполне конкретную их категорию.

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

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

Читать далее
Всего голосов 32: ↑32 и ↓0+32
Комментарии9

Как мы переложили управление инфраструктурой на Terraform — и начали жить

Время на прочтение22 мин
Количество просмотров39K
image
У нас было 4 Amazon-аккаунта, 9 VPC и 30 мощнейших девелоперских окружений, стейджей, регрессий — всего более 1000 EC2 instance всех цветов и оттенков. Раз уж начал коллекционировать облачные решения для бизнеса, то надо идти в своем увлечении до конца и продумать, как все это автоматизировать.

Привет! Меня зовут Кирилл Казарин, я работаю инженером в компании DINS. Мы занимаемся разработкой облачных коммуникационных решений для бизнеса. В своей работе мы активно используем Terraform, с помощью которого мы гибко управляем нашей инфраструктурой. Поделюсь опытом работы с этим решением.

Статья длинная, поэтому запаситесь попкорном чаем и вперед!

И еще один нюанс — статья писалась на основе версии 0.11, в свежей 0.12 многое изменилось но основные практики и советы по прежнему актуальны. Вопрос миграции с 0.11 на 0.12 заслуживает отдельной статьи!
Читать дальше →
Всего голосов 21: ↑20 и ↓1+19
Комментарии22

Что может предложить Neovim разработчику на Scala?

Время на прочтение23 мин
Количество просмотров7.7K

image


В сообществе фанатов текстового редактора Neovim произошло знаменательное событие — вышла версия 0.5, в которой появилось большое количество нововведений:


  • встроенная поддержка языка Lua;
  • экспериментальная поддержка treesitter;
  • и, наконец, встроенный LSP клиент, позволяющий сделать из простого текстового редактора достойного соперника IDE!

Neovim — это модальный редактор, форк редактора Vim, который ставит своей целью улучшение пользовательского опыта при работе с Vim: «Neovim is built for users who want the good parts of Vim, and more».


Мне нравится Neovim своей гибкостью, благодаря которой его можно превратить в очень мощный инструмент редактирования не только текста, но и кода. Как scala-разработчику мне интересно испытать новый встроенный LSP клиент в применении к любимому языку программирования. В отличие от VSCode и даже Vim + CoC настройка LSP клиента в Neovim несколько более сложная, но при этом крайне гибкая. Данная статья — краткое руководство по настройке Neovim для работы со Scala и краткий обзор возможностей, которые дает связка Neovim + Metals.

Читать дальше →
Всего голосов 20: ↑19 и ↓1+18
Комментарии6

На пути к построению графика

Время на прочтение11 мин
Количество просмотров12K

Добрый день, дорогой читатель! Эта статья возникла благодаря попытке взглянуть на операционный мониторинг со стороны аналитики. Она будет вам полезна, если:

  • что-то из следующего списка хорошо знакомо: Grafana, InfluxDB, Prometheus, Zabbix или другая система мониторинга с похожими идеями;
  • вы не эксперт/профессионал/уверенный миддл в различных типах отображения временных рядов и матстатистике (в противном случае для вас, весьма вероятно, будет скучновато);
  • есть желание взглянуть на некоторые аспекты «под микроскопом».

Если вы решили, что условия выше соблюдены, добро пожаловать под кат.



Читать дальше →
Всего голосов 17: ↑17 и ↓0+17
Комментарии0

You shall not pass, или Как мы настроили мониторинг тестовых окружений

Время на прочтение10 мин
Количество просмотров4.9K

Привет, Хабр! Меня зовут Раиса. Я работаю в компании DINS старшим инженером по нагрузочному тестированию. Сегодня я хочу поговорить об энваройнментах. Ни для кого не секрет, что энвайронмент (environment) — это основная рабочая площадка тестировщика. Если у программиста — это любимая IDE, то у тестировщика — милый и родной энвайронмент.

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

Читать далее
Всего голосов 18: ↑17 и ↓1+16
Комментарии0

Чего ждать от Java в 2020 году?

Время на прочтение9 мин
Количество просмотров10K
2020 уже в разгаре, давайте же обсудим, какие изменения в мире Java нас ожидают в этом году. В этой статье перечислю основные тренды Java и JDK. И буду рад дополнениям от читателей в комментариях.

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

image
Читать дальше →
Всего голосов 15: ↑15 и ↓0+15
Комментарии27

Будущее ручного тестирование и главные тренды области: интервью с Артёмом Ерошенко

Время на прочтение4 мин
Количество просмотров8.7K

Артём Ерошенко — CPO и сооснователь Qameta Software. Он преподает тестирование, хостит подкаст «Айтишники», делает доклады в IT-сообществе, а 1 декабря во второй раз станет ведущим QA Meeting Point. Артём рассказал, зачем делиться знаниями и почему он не верит в будущее ручного тестирование.

Читать далее
Всего голосов 16: ↑15 и ↓1+14
Комментарии13

Jenkins Pipeline: заметки об оптимизации. Часть 1

Время на прочтение9 мин
Количество просмотров15K


Меня зовут Илья Гуляев, я занимаюсь автоматизацией тестирования в команде Post Deployment Verification в компании DINS.

В DINS мы используем Jenkins во многих процессах: от сборки билдов до запуска деплоев и автотестов. В моей команде мы используем Jenkins в качестве платформы для единообразного запуска смоук-проверок после деплоя каждого нашего сервиса от девелоперских окружений до продакшена.

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

В этой статье я расскажу, как работает Jenkins Pipeline, и поделюсь своими находками, которые, возможно, помогут вам сделать пайплайны быстрее. Материал будет полезен инженерам, которые уже работали с Jenkins, и хотят познакомиться с инструментом ближе.
Читать дальше →
Всего голосов 14: ↑14 и ↓0+14
Комментарии3

Предсказываем время решения тикета с помощью машинного обучения

Время на прочтение21 мин
Количество просмотров6.8K

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


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

Читать дальше →
Всего голосов 14: ↑14 и ↓0+14
Комментарии6

Сто раз сломай, один раз поправь или Как мы улучшали тестирование отказоустойчивости и восстановления API

Время на прочтение11 мин
Количество просмотров5.8K

Привет, хабровчане!

Меня зовут Нурыев Асхат, я ведущий инженер по автоматизации в DINS. За время работы в компании я участвовал в решении множества сложных задач. В этой статье я поделюсь историей улучшения процесса и автоматизации тестирования высокой доступности и восстановления после отказа подсистемы API, состоящей из множества компонент. 

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

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

Началось все как обычно: одним прекрасным утром ко мне подошел менеджер и спросил, не хочу ли я заняться одной интересной задачей. К тому времени у меня уже был опыт организации перфоманс-тестирования и вообще улучшения процессов в команде, так что я, конечно, согласился. А когда он объяснил, чем именно предстоит заняться, глаза у меня загорелись!  Только подумайте: построить HA тестирование целой подсистемы —  есть где развернуться, проявить изобретательность!

Читать далее
Всего голосов 13: ↑13 и ↓0+13
Комментарии0

Отрабатываем Git hooks на автоматизации commit message

Время на прочтение8 мин
Количество просмотров33K

Привет, Хабр! В этой статье я расскажу о Git hooks и о том, как они могут помочь с некоторыми насущными кейсами организации создания commit’ов и commit message. Пост основан на реальном опыте из моей практики: как я упрощал то, что всем надоело делать руками. Я уверен, что хуки могут оказаться полезны почти каждому разработчику. Ведь все мы пишем в сообщении коммита чуть больше, чем «fixed what was broken», верно?

Меня зовут Роман Горбатенко, я Java-разработчик в компании DINS, на момент написания текста тружусь в команде Contact Center. Занимаюсь разработкой больше 3-х лет и прошел путь от личинки стажера до middle разработчика. Считаю Git одним из самых полезных инструментов разработчика. Многие не используют его возможности на полную, возможно, мне удастся это немного исправить.

Узнать больше о Git hooks
Всего голосов 13: ↑13 и ↓0+13
Комментарии23

Оценка достоверности отчетов об ошибках с помощью анализа временных рядов

Время на прочтение8 мин
Количество просмотров4K

Привет, Хабр! Меня зовут Илья Селицер. В DINS мы участвуем в разработке продукта для UCaaS-провайдера RingCentral, которая объединяет много функций — от звонков и факса до корпоративного мессенджера и видеоконференций. Я, среди прочего, отвечаю за качество этого сервиса. В повседневной практике мне постоянно приходится анализировать взаимодействие различных сетевых элементов, которые участвуют в предоставлении той или иной услуги абонентам.

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

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

Читать далее
Всего голосов 14: ↑13 и ↓1+12
Комментарии5

AWS Lambda in Action на Java 11. Заезжаем с Serverless в «Production»

Время на прочтение20 мин
Количество просмотров13K
Статья – гайд о том, как быстро и без боли начать использовать AWS Lambda на простом примере. Подойдет, как разработчику, не работавшему с Lambda вовсе, так и познавшему Cloud, чтобы оценить еще одно видение на разработку Serverless приложений.

image
Читать дальше →
Всего голосов 12: ↑12 и ↓0+12
Комментарии7

Последний рубеж обороны QA: автоматическое обнаружение ошибок

Время на прочтение8 мин
Количество просмотров5.2K


Привет! Меня зовут Асхат Нурыев, я ведущий инженер по автоматизации в компании DINS.

Я работаю в Dino Systems последние 7 лет. За это время пришлось заниматься разными задачами: от написания автоматических функциональных тестов до тестирования производительности и высокой доступности. Постепенно я стал больше заниматься организацией тестирования и оптимизацией процессов в целом.

В этой статье я расскажу:

  • Что делать, если баги уже просочились на продакшн?
  • Как побороться за качество системы, если ошибок уже руками не счесть и глазами не пересмотреть?
  • Какие подводные камни встречаются при автоматической обработке ошибок?
  • Какие бонусы можно получить от анализа статистики запросов?
Читать дальше →
Всего голосов 12: ↑12 и ↓0+12
Комментарии9

REST Assured: что мы узнали за пять лет использования инструмента

Время на прочтение8 мин
Количество просмотров64K

REST Assured — DSL для тестирования REST-сервисов, который встраивается в тесты на Java. Это решение появилось более девяти лет назад и стало популярным из-за своей простоты и удобного функционала.


В DINS мы написали с ним более 17 тысяч тестов и за пять лет использования столкнулись со множеством «подводных камней», о которых нельзя узнать сразу после импорта библиотеки в проект: статическим контекстом, путаницей в порядке применения фильтров к запросу, трудностями в структурировании теста.


Эта статья — о таких неявных особенностях REST Assured. Их нужно учитывать, если есть шанс, что количество тестов в проекте будет быстро увеличиваться — чтобы потом не пришлось переписывать.


image

Читать дальше →
Всего голосов 14: ↑13 и ↓1+12
Комментарии0

Приглашаем на SPb Scala Meetup 2020.1

Время на прочтение2 мин
Количество просмотров1.1K
Встречаемся 19 февраля, чтобы обсудить наболевшее – Scala системы сборки. Встреча сообщества состоится в нашем офисе (Старо-Петергофский, 19).

В программе три доклада. Будем говорить про существующие билд тулы для Scala, разберемся, когда Pants лучше других систем сборки и познакомимся с Nix — системой сборки и управления зависимостями.

Под катом — подробнее о докладах, ссылка на регистрацию для участия во встрече и информация о трансляции.

image
Читать дальше →
Всего голосов 11: ↑11 и ↓0+11
Комментарии0

«Hello, Checkmarx!». Как написать запрос для Checkmarx SAST и найти крутые уязвимости

Время на прочтение19 мин
Количество просмотров6.9K


Привет, Хабр!

В статье я хочу рассказать о нашем опыте создания своих запросов в Checkmarx SAST.

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

Мы разберемся в тонкостях языка запросов Checkmarx SAST и напишем 2 запроса для поиска SQL-инъекций и Insecure Direct Object References.
Читать дальше →
Всего голосов 11: ↑11 и ↓0+11
Комментарии4