Обновить

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

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

Как избавиться от нестабильных тестов

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели6.6K

Устали от нестабильных тестов?

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

Читать далее

Набор инструментов backend reliability инженера

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели3.2K

Привет! Меня зовут Андрей, я возглавляю команду, которая отвечает за надежность и стабильную работу бэкенда в Wrike. Если вы когда-нибудь задумывались, что же такое «backend reliability», то знайте, что вы не один! Я часто объясняю, что это что-то вроде должности инженера по надежности сайта (SRE), но сфокусированная исключительно на бэкенде. В статье я расскажу о зонах ответственности BRE команды и инструментах, которые мы применяем для поддержания стабильной работы бэкенда на высоком уровне.

Читать далее

Почему разрабатывать ПО действительно сложно?

Время на прочтение5 мин
Охват и читатели5.6K

Давайте начнем с тривиального, но неоспоримого факта: программное обеспечение постоянно развивается – устаревает и обновляется, видоизменяется и дает дорогу новому.

Заметным исключением является наборная система TeX, разработанная Дональдом Э. Кнутом (D.E.Knuth). Предполагалось, что эта система должна быть совершенной, но даже в ней можно найти свои недочеты. Тем не менее, это уже отдельная тема для другой статьи.

Читать далее

Делаем эмулятор Android через Terminal: пошаговое руководство

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели14K

В Android разработке может наступить момент, когда для тестирования приложения на различных устройствах может потребоваться виртуальное устройство. Эмулятор Android легко можно создать с помощью GUI Android Studio, но также можно и с помощью командной строки на macOS. В этой статье я расскажу вам, как именно это сделать!

Шаг 1: Установите Java

Убедитесь, что в вашей системе установлена ​​Java. Если нет, то это можно сделать с помощью Homebrew, выполнив следующую команду:

Читать далее

Сила метаданных в расширяемой архитектуре продукта

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели2.7K

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

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

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

Читать далее

Как перезапускать упавшие тесты параллельно

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели5.3K

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

Читать далее

Не можете измерить — не сможете улучшить: как мы используем метрики в разработке автотестов

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели5.1K

Привет! Меня зовут Александр, я работаю QAA менеджером в компании Wrike, начинал с позиции QAA инженера в далеком 2010-ом и был первым в этой роли. За 12 лет нам удалось построить крутую команду и создать систему контроля качества, которая позволяет быстро и без багов деплоить продуктовый код в продакшен. 

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

Читать далее

Wrike Lock: как мы разработали механизм шифрования данных в продукте

Время на прочтение9 мин
Охват и читатели1.9K

Привет! Меня зовут Даниил Гранкин, я разработчик внутреннего бэкенд-юнита в Wrike. В этой статье я поделюсь техническими подробностями разработки Wrike Lock — основного механизма шифрования данных в нашем продукте. А также расскажу, для чего мы используем Encryption as a Service (EaaS) и какие проблемы решаем с его помощью. Эта статья будет полезна, если вы ищете способы дистрибуции ключей шифрования, но готовые решения вам не подходят.

Читать далее

Путь от студента до senior-аналитика за 3 года

Время на прочтение12 мин
Охват и читатели7.4K

Лонгриды и рефлексия людей из твоей сферы — один из способов понять, что ты делаешь правильно и каких ошибок стоит избегать. Если кто-то испытывает те же переживания, то обычно становится легче — ты не одинок со своими мыслями и проблемами. 

Я хочу поговорить о том, в чем отличия между разными ступенями развития аналитиков и что может помочь перейти с одного из них на другой. Мне повезло — путь от джуна до сеньора я прошла в прекрасном Wrike, и я уверена, что среда внутри компании в том числе позволила мне вырасти за такое короткое время.

Читать далее

Как ускорить прогон тестов в многомодульном проекте Maven

Время на прочтение8 мин
Охват и читатели4.1K

Большое количество модулей Maven замедляет сборку проекта и время прогона тестов. Для того, чтобы сохранить многомодульную структуру проекта и быстро прогонять тесты, мы в Wrike написали новый инструмент — Maven Modules Merger, который сократил время некоторых сборок с 50 до 12 минут. В статье подробно расскажу о том, с какими проблемами нам помог справиться Maven Modules Merger и поделюсь подробностями его создания.

Читать далее

Заинтересованность инженеров: ресурс или блажь?

Время на прочтение10 мин
Охват и читатели2K

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

«Мэлоун обрадовался возможности пойти по старому следу и с готовностью принял участие в облаве».

«Ему, совмещающему в себе пылкое воображение со строгим научным подходом, как никому другому было ясно…». Что именно ему было ясно? Это уже детали рассказа «Кошмар в Ред Хуке». 

Читать далее

Team Lead Simulator — маленькая игра про большую ответственность

Время на прочтение4 мин
Охват и читатели26K

 TL;DR: игра по ссылке.

Наверняка многие из вас в детстве баловались игрушками вроде «ПРОГРАММИСТ 1.3» — эдакими текстовыми квестами, в которых игрок должен был прокачаться из начинающего программиста хакером (термина «сеньор» тогда, наверное, еще не было), собрать самый крутой комп, заработать больше всех денег. При этом весь геймплей заключался в нажатии нужных кнопок действий и менеджменте немногочисленных ресурсов. Я, с теплом вспоминая такие игры, а также текстовые квесты в Космических Рейнджерах 2, решил создать игру Teamlead Simulator, в которой...

Читать далее

К микросервисам через reverse engineering и кодогенерацию

Время на прочтение19 мин
Охват и читатели8.2K

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

Часто основная сложность заключается в том, что нужно одновременно поддерживать уже существующий код монолита и параллельно внедрять новые принципы и подходы.  В статье я расскажу, как мы в Wrike, используя reverse engineering и немного кодогенерации, реализовали первые шаги по выделению отдельных микросервисов и запустили первый «почти настоящий» BFF-сервис в рамках нашего монолита.

Читать далее

Что общего у нуля, -1 и большого простого числа: Psychic Signatures в мире Java

Время на прочтение6 мин
Охват и читатели3.3K

Уязвимость ​​CVE-2022-21449 или “Psychic Signatures”, которая была обнаружена в Java 15-18, позволяет обойти механизм проверки ECDSA-подписи и подделать исходное сообщение. Если приложение использует уязвимую версию Java для валидации JWT-токенов на базе алгоритма ES256, злоумышленник может получить доступ к приложению от лица любого пользователя.

Подробное описание причины проблемы можно найти в этой статье, но первоначальный proof of concept не дает полного представления о том, какие приложения подвержены этой уязвимости. Чтобы исправить этот пробел, а также иметь возможность «поиграть» с приложением, которое максимально приближено к реальному, я создал стенд. На нем можно протестировать все возможные векторы атаки.

Для тех, кто не боится спойлеров

Ближайшие события

Helmwave — еще один инструмент для деплоя helm-чартов

Время на прочтение5 мин
Охват и читатели8.9K

Для деплоя приложений в Kubernetes существует огромное количество различных инструментов. Если посмотреть на соответствующий раздел в CNCF Landscape, то можно потеряться в разнообразии. Поэтому иногда хорошо иметь в своем арсенале «серебряную пулю», которая подойдет для большинства задач. Helmwave вполне может стать именно таким инструментом.

Читать далее

Как сделать большой продукт доступным

Время на прочтение13 мин
Охват и читатели2.7K

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

Что я понимаю под масштабируемостью

Как A/B-тестирование веб-страниц помогло нам повысить конверсию

Время на прочтение4 мин
Охват и читатели3.3K

Привет! Меня зовут Амаль, я веб-дизайнер в Wrike: отвечаю за разработку веб дизайн-системы и веб-компонентов вместе с командой разработчиков и маркетологов. В этой статье расскажу о том, как с помощью А/B тестов и изменения некоторых деталей на веб-сайте нам удалось увеличить конверсию как минимум в 5 раз. Статья будет полезна, если вы планируете внедрить изменения в свою веб-систему и протестировать гипотезы по увеличению конверсии.

Читать далее

DartUP 2021: как это было

Время на прочтение2 мин
Охват и читатели2.7K

В этом году DartUP уже во второй раз прошел в онлайне, и это было круто! Мы снова слушали два потока докладов на русском и английском, неформально общались и участвовали в дискуссиях в SpatialChat, сражались и решали алгоритмические задачи в Code Kombat и обгоняли соперников в Wrike for Speed. В этой статье подводим итоги конференции и делимся видеозаписями всех докладов.

Читать далее

Очереди в консульство, нервы и тоска по сыркам: как происходит релокация в новой реальности

Время на прочтение10 мин
Охват и читатели12K


Переезд в другую страну требует определённой решимости, чай не за чаем сходить! Но когда на столь длинном пути стоит пандемия, очереди в консульство и мировая неопределенность, это одинаково тяжело и для людей, и для компаний. В статье я расскажу о взгляде с другой стороны: как мы перевозили сотрудников, прорывались через ковидные кордоны, открывали еще один офис в Европе и теряли розовые очки. И про то, сколько это стоит.
Читать дальше →

DevOps Cookbook: как построить процессы с нуля

Время на прочтение7 мин
Охват и читатели17K

Привет! Меня зовут Мария, я DevOps-инженер в компании Wrike. В этой статье расскажу о работе DevOps-инженеров с командами разработчиков: как выглядит процесс взаимодействия, из каких этапов состоит и как построить его с нуля. Статья будет полезна, если вы часто меняете проекты и каждый раз вам приходится заново создавать документацию и внедрять базовые процессы в работу команды.

Читать далее
1
23 ...