Заботимся
о ваших программистах
10 лет опыта работы
в сложных проектах
из разных сфер бизнеса
:)
о нас
1
Полностью распределенная команда профессионалов
2
Делимся своим опытом
на конференциях
и подкастах
3
Умеем в DevOps
практики и поможем
их внедрить
4
Работаем по SLA
и поддержим ваш
проект 24/7
5
Пишем собственные решения для администрирования инфраструктуры
преимущества
сотрудничества с нами
Отвечаем за работу вашей инфраструктуры в режиме 24×7 и с гарантиями по SLA
Уменьшаем ваш TTM за счет большого опыта и помощи в улучшении процессов при взаимодействии разработки и devops
Работаем со сложными
и высоконагруженными проектами
контроль качества
и поддержка
на каждом этапе
чем мы можем
вам помочь
Бесплатный аудит инфраструктуры и систем с NDA
Проведем оперативный брифинг. Составим подробную карту с указанием текущих и возможных узких мест и уязвимостей
Проектирование решения
В случае если вы готовы к устранению — спроектируем решение по устранению проблем, уязвимостей и ограничений по масштабируемости
Внедрение решения
Реализуем проект в соответствии со сроками, стоимостью и списком задач. Обучим ваших специалистов работать в оптимизированной инфраструктуре.
Поддержка
Проконсультируем по любым вопросам после внедрения. Оперативно подключимся, если потребуется помощь
наши технологии
gitlab-ci
github actions
helm
ansible
docker
nginx
nomad
traefik
grafana
postgresql
mysql
clickhouse
salt
kubernetes
prometheus
Наши кейсы
Перенос инфраструктуры
Компания ранее использовала несколько виртуальных серверов, загруженных множеством сервисов. Эти серверы можно было масштабировать только через их выключение, что представляло собой неэффективный и рискованный процесс
Переход на облачную платформу привел к значительным улучшениям: распределению сервисов по нескольким дата центрам, масштабированию без простоев, улучшенной изоляции сервисов и более гибким настройкам доступа. Кроме того, благодаря единообразному подходу к развертыванию, стало возможным более эффективно управлять и обновлять сервисы
Как было
В чем преимущество
Наша команда, в лице oxydmins, взяла на себя инициативу и  успешно перенесла инфраструктуру из традиционного хостинга в  современное облачное решение. Этот переход был осуществлен с  минимальным простоем, требуя всего полчаса остановки записи в  базу данных. Важно отметить, что пользователи практически не  заметили даунтайма
Переход на облачную платформу привел к значительным улучшениям: распределению сервисов по нескольким дата центрам, масштабированию без простоев, улучшенной изоляции сервисов и более гибким настройкам доступа. Кроме того, благодаря единообразному подходу к развертыванию, стало возможным более эффективно управлять и обновлять сервисы
Что мы сделали
Итоговый результат
Внедрение multistaging-окружения
В компании заказчика существовали проблемы, связанные с использованием единственного стейджинга, что затрудняло работу команд тестирования и замедляло процесс разработки. Ограниченное количество тестовых сред и отсутствие разделения между разными проектами вызывали задержки и конфликты
Внедрение multistaging-окружений оказалось значительным улучшением для команд разработки и тестирования. Теперь они не испытывают необходимости договариваться о доступе к ограниченному количеству тестовых стендов, что ускорило и упростило процессы разработки и тестирования. Данное изменение также положительно повлияло на качество продуктов благодаря более детальному и систематическому тестированию на разных стадиях разработки
Как было
В чем преимущество
Предложено было внедрение системы multistaging, позволяющей создавать отдельные тестовые стенды для каждой функциональной ветки или merge request в рамках разрабатываемых проектов
Внедрение multistaging-окружений стало ключевым фактором в улучшении рабочих процессов компании заказчика, что привело к более быстрой доставке высококачественных продуктов на рынок и укрепило её конкурентные позиции
Что мы сделали
Итоговый результат
Управление базами данных
В компании заказчика использовалась общая тестовая база данных (БД) для всех тестовых окружений. Это создавало проблемы с взаимным влиянием различных тестовых стендов друг на друга, что негативно сказывалось на качестве тестирования и разработки
Это решение принесло значительные преимущества для команд разработки и тестировщиков в компании заказчика. Изоляция тестовых окружений улучшила качество разработки и тестирования, упрощая проверку новых функций. Автоматизация и интеграция процессов развёртывания в общий пайплайн повысили оперативность и снизили риск ошибок, ускоряя внедрение новых функций и повышая общую эффективность рабочих процессов
Как было
В чем преимущество
Команда oxydmins разработала и внедрила k8s operator для управления базами данных в Managed PostgreSQL Яндекс.Облака. Это решение позволило создавать отдельную БД для каждого тестового окружения, обеспечивая их полную изоляцию. Базы данных автоматически наполняются актуальным дампом данных, что устраняет потребность в ручном вводе данных для тестирования. Все процессы развёртывания полностью автоматизированы и интегрированы в общий пайплайн поставки, при этом созданные сущности представлены в виде объектов в Kubernetes
Реализация k8s operator для управления базами данных в Managed PostgreSQL Яндекс.Облака командой oxydmins значительно улучшила рабочие процессы компании заказчика. Это обеспечило ускорение доставки продуктов, улучшение качества разработки и тестирования, а также повысило общую производительность и эффективность компании
Что мы сделали
Итоговый результат
Динамическое создание виртуальных машин
Ранее в компании заказчика для выполнения GitLab jobs использовались статически настроенные виртуальные машины (VM), которые постоянно потребляли облачные ресурсы, включая периоды, когда задания не выполнялись (например, ночью или в выходные)
Этот подход позволил значительно сократить затраты на инфраструктуру GitLab runners, особенно в периоды отсутствия активных задач. При этом команды могут выделять задачам такое же большое количество ресурсов, как и ранее, обеспечивая быстрое выполнение даже ресурсоёмких задач
Как было
В чем преимущество
Мы настроили систему для динамического создания виртуальных машин, которые активируются только для выполнения GitLab jobs и удаляются после их завершения. Это позволило использовать виртуальные машины с высокими ресурсами, ускоряя процесс сборки и другие операции
Настройка динамически создаваемых VM для выполнения GitLab jobs привела к значительному снижению расходов на облачные ресурсы в компании заказчика, при этом увеличивая эффективность и скорость обработки заданий. Это улучшило общую производительность и оптимизировало расходы на облачную инфраструктуру
Что мы сделали
Итоговый результат
Бот в Slack
В духе инноваций и стремления к непрерывному улучшению процессов, мы решили разработать новый инструмент для усиления взаимодействия с командой девопс. Это было вызвано потребностью в более быстрой и эффективной коммуникации, поскольку традиционные методы, такие как тикет-системы, уже не соответствовали требованиям оперативности в динамичной среде команд разработки
Благодаря боту команды разработки теперь могут мгновенно получать помощь и решать технические вопросы без задержек. Это создало ощущение, что команда поддержки находится рядом, как свой собственный отдел. Хотя это привело к увеличению обращений к дежурным инженерам, заказчик остался доволен улучшением оперативности и доступности поддержки
Как было
В чем преимущество
Наша команда разработала бота в Slack, который позволяет командам разработки оперативно вызывать дежурного инженера прямо в месте обсуждения возникающих вопросов. Это сделало процесс обращения за помощью более прямым и быстрым
Внедрение бота в Slack значительно улучшило процесс взаимодействия команд разработки с дежурными инженерами. Это привело к более быстрому решению возникающих вопросов и задач, повышая общую продуктивность и удовлетворенность заказчика
Что мы сделали
Итоговый результат
MVP утилиты
В компании заказчика ранее не было эффективного способа для быстрого получения информации о всех развёрнутых тестовых окружениях, что усложняло координацию и тестирование
Фронтенд-разработчики компании заказчика смогли интегрировать эту утилиту в свои приложения, создав удобные переключатели между тестовыми бэкендами. Это значительно ускорило процесс тестирования, делая его более комфортным и эффективным для команды
Как было
В чем преимущество
Наша команда разработала минимально жизнеспособный продукт (MVP) утилиты, предоставляющей через API список всех развёрнутых тестовых окружений. Этот MVP включал в себя код API на Python и автоматизированные процессы контейнеризации и деплоя, обеспечивая разработчикам прочную основу для дальнейшего развития инструмента
Наша разработка обеспечила компании заказчика удобный и эффективный инструмент для управления тестовыми окружениями. Это повысило скорость и удобство процесса тестирования, улучшая общие рабочие процессы разработки и поддержки
Что мы сделали
Итоговый результат
Анонимизированные данные в тестовых окружениях
До внедрения механизма защиты данных, тестирование в компании заказчика проводилось без использования реалистичных данных, что вызывало опасения нарушения норм хранения и обработки персональных данных
Благодаря этой системе тестировщики получили доступ к анонимизированным, но реалистичным данным из рабочей среды для проведения своих экспериментов. Это позволило проводить тестирование в условиях, максимально приближенных к реальности, с соблюдением всех норм защиты персональных данных
Как было
В чем преимущество
Мы внедрили систему защиты и анонимизации данных прямо в процесс поставки. Это позволило автоматизированно преобразовывать реальные данные из рабочей среды в анонимизированные данные для использования в тестовых окружениях
Внедрение системы защиты и анонимизации данных в процесс поставки позволило компании заказчика значительно улучшить качество тестирования и уровень безопасности. Это обеспечило соблюдение нормативных требований по обработке и защите персональных данных, одновременно повышая эффективность и реалистичность тестовых процедур
Что мы сделали
Итоговый результат
Полная изоляция тестового окружения
Ранее в компании заказчика использовалась общая настройка баз данных Redis для всех тестовых окружений, что могло приводить к проблемам с изоляцией данных и конфликтам при тестировании
Внедрение этого решения повысило качество разработки и тестирования в компании заказчика. Теперь командам стало легче проверять новые функции, поскольку каждое тестовое окружение работает с собственной изолированной базой данных Redis, исключая взаимное влияние и упрощая процесс тестирования
Как было
В чем преимущество
Наша команда разработала и внедрила специализированный k8s operator для управления базами данных Redis. Это решение позволило выделять отдельный номер базы данных Redis для каждого тестового окружения, обеспечивая их полную изоляцию. Кроме того, была реализована возможность мутации конфигурации тестового окружения на лету внутри Kubernetes
Разработка и внедрение k8s operator для управления базами данных Redis значительно улучшило процессы разработки и тестирования в компании заказчика. Это обеспечило более высокую изоляцию и стабильность тестовых окружений, повышая общую эффективность и удобство тестирования
Что мы сделали
Итоговый результат
Изолированное production-окружение
В компании заказчика существовала потребность в развертывании продукта в среде, полностью изолированной от сети Интернет, что представляло собой особые вызовы для обеспечения стабильности и надежности работы продукта
Этот подход обеспечил высокий уровень стабильности и безопасности продукта в условиях полной изоляции от внешних сетей. Непрерывное тестирование позволило своевременно выявлять и устранять потенциальные проблемы
Как было
В чем преимущество
При выполнении данной задачи наша команда учла все аспекты, которые могли повлиять на работу продукта в изолированном production-окружении. Мы тщательно проконтролировали версионность всех компонентов и зависимостей, описали процесс развертывания кодом и непрерывно проводили тестирование на каждом этапе развития продукта
Благодаря тщательной подготовке и продуманному подходу к развертыванию продукта в изолированной сети, мы значительно повысили его стабильность и безопасность в эксплуатационной среде. Это дало компании заказчика уверенность в надежности и эффективности продукта, даже в условиях отсутствия доступа к внешней сети
Что мы сделали
Итоговый результат
аутсорсинг
или собственный отдел?
1
1
2
2
3
3
:)
:(
Уже сформированная команда
Подбор одного специалиста ~ 2 месяца
Погружение в ваши задачи за 1 рабочую неделю
Ввод специалиста в проект ~ 1 месяц
Ежедневная поддержка 24/7
Дополнительная ставка на дежурного DevOps сотрудника
Стоимость поддержки от 120 000 ₽/месяц
Стоимость собственного DevOps сотрудника от 250 000 ₽/месяц до учета налогов
наша
команда
собственный
отдел
наша
команда
собственный
отдел
пакеты
1
1
2
2
3
3
4
1-7 разработчиков
7-10 разработчиков
Проверка стоимости облака
Проверка стоимости облака
Проверка бекапов
Проверка бекапов
Проверка безопасности 1 раз в месяц
~80 000 ₽/месяц, до 32 часов/месяц
440 000 - 500 000 ₽/месяц
старт
старт
бизнес
бизнес
4
5
Проверка безопасности 1 раз в месяц
Сопоставление disaster recovery, выполнение плана раз в 6 месяцев
нам доверяют
ЗНАЕМ ОТВЕТЫ
НА ВСЕ DEVOPS-ВОПРОСЫ
На стенде работает – у заказчика не работает
Причины:
  • Расхождение версий системных библиотек и библиотек приложения на стенде разработчика и на «боевом» окружении
  • Ручные правки на «боевом окружении», о которых все забыли

Решение:
  • Настраиваем создание неизменяемых сборок в docker, что позволяет передавать сборку целиком вместе с библиотеками, со всеми зависимостями и нужными для корректной работы версиями фреймворков и библиотек
  • Настраиваем конвеер поставки с возможностью откатиться назад. Это позволит снизить влияние человеческого фактора на процесс деплоя
При выкатывании функционала на стенд старой ветки для проверки ломается стенд
Причины:
  • Ветка сильно отстает от актуальной и требует постоянных затрат ресурсов на проверку актуальности
  • Два разработчика пишут разный функционал. Перед принятием каждый функционал приходится проверять отдельно

Решение:
  • Конвеер поставки, с помощью которого для каждой ветки разработки выделяется собственный стенд
  • У каждой ветки – своя база данных. Это позволит организовать полностью независимую и параллельную разработку функционала
Вкусный заказ на разработку, но старое legacy
Причины:
  • Страшно вносить изменения
  • Библиотеки устарели — сложно быстро и просто запустить проект

Решение:
  • Поднятие зеркала с зависимостями — даже если их удалят, они у нас останутся
  • Неизменяемые сборки в docker — приложение запаковано вместе с его зависимостями, а значит удобнее воспроизводить баги
  • Внедрение в конвеер поставки базовых тестов
  • В случае проблем с безопасностью вирусы и шифровальщикики не покинут контейнер
В случае отпуска разработчика никто не знает, как выкатить код
Причины:
  • Человек может уйти в отпуск, заболеть или даже уволиться
  • Все знания могут уйти вместе с ним

Решение:
  • В конвеере поставок все действия для деплоя описываются через код и лежат рядом с приложением
  • Неизменяемые сборки в docker гарантируют одинаковость кода на стенде разработки и «боевом» окружении
Шифровальщики и root уязвимости, из-за которых необходима переустановка сервера
Причины:
  • Сервер зашифрован
  • На сервере появился зловредный код

Решение:
  • Сохранение бекапов на другом сервере. Настройка регулярного резервного копирования
  • Код настройки сервера лежит в репозитории. С его помощью можно быстро поднять все настройки прошлого сервера. Настройка регулярных проверок резервных копий на цельность и актуальность
Что-то пошло не так с хостингом
Причины:
  • Хостинг уничтожен (сгорел, опечатали приставы или взломали)
  • Забыли оплатить хостинг
  • Свободное место забили временные файлы
  • Блокировки по разным причинам

Решение:
  • Готовим disaster recovery план по «восстановлению из пепла». Проводим учения по разворачиванию окружения в другом хостинге. Тщательно выполняем все пункты из раздела резервное копирование
  • Настраиваем мониторинг и оповещение о популярных проблемах с механизмами быстрой и автоматической эскалации на дежурного и резервного сотрудника, а также владельца
давайте знакомиться