Интервью с лидерами отрасли

Современное состояние инструментов модульности в Gusto в 2024 году

Интервью с лидерами отрасли
The current state of Gusto's modularity tooling (2024)

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

В современной индустрии разработки программного обеспечения модульность становится краеугольным камнем архитектурных решений, улучшая управляемость, удобство в поддержке и масштабируемость продуктов. Компания Gusto, специализирующаяся на предоставлении облачных сервисов для управления заработной платой, льготами и HR-процессами, активно развивает и совершенствует свои подходы к модульности с помощью специализированных инструментов и методологий. В 2024 году Gusto продвигается значительными шагами вперёд в этой области, применяя инновации, ориентированные на конкретные бизнес-задачи и особенности своей инфраструктуры. Обширное понимание внутренней организации кода и взаимодействия между его частями является центральной темой в развитии эффективных инструментов, обеспечивающих модульность. Путь компании к реализации модульности начался в 2020 году с принятия open-source решения Packwerk, разработанного Shopify для организации пакетов и разграничения зависимостей между ними.

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

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

Были выделены четыре основных слоя, включая корневое приложение (Rails harness), вспомогательные инструменты для разработки, базовые классы Rails и утилиты, предоставляющие общие функции всем сервисам. Взаимодействие между этими слоями регулируется направлением зависимости — функциональные нижние слои не должны знать о верхних, что обеспечивает чистоту архитектуры, упрощает сопровождение и повышает устойчивость к изменениям. Внутренний слой продуктовых сервисов, содержащий около 80% всего кода и пакетов, стал местом вложенной модульности. Теперь команды могут структурировать внутреннюю архитектуру каждого продуктового сервиса, создавая пакеты-вложения, которые отражают конкретные бизнес-домены или функциональные подсистемы. Такая вложенность обеспечивает двойной уровень модульности: снаружи видно приложение как цельный сервис, а внутри — гибко управляемые независимые компоненты.

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

Данная моделировка API имеет непосредственные последствия для архитектурных решений и производительности приложения. Одним из распространённых в сообществе заблуждений является правило «избегать ActiveRecord на границах модулей», которое подходит для разделенных приложений, но не всегда эффективно внутри одного продукта. В случае с Gusto, при построении сложных GraphQL запросов внутри сервиса, использование возможностей ActiveRecord непосредственно внутри пакетов значительно упрощает и оптимизирует обработку данных, исключая лишние уровни абстракции и затраты на преобразования модели. Технологический стек также подвергся значительным изменениям. Важным шагом стало решение отказаться от оригинального Packwerk в пользу собственного инструмента под названием pks, реализованного на Rust.

Этот инструмент предлагает значительно более высокую скорость парсинга и анализ расширенного спектра констант, что делает отчёты о нарушениях и зависимости более полными и точными. Помимо этого, pks поддерживает гибкие настройки игнорирования правил, что даёт командам больше свободы в проведении постепенной модульной реорганизации без лишнего шума в результатах. В итоге, современное состояние модульных инструментов Gusto — это продуманная многослойная система, ориентированная на бизнес-потребности и технические реалии. В основе лежит идея баланса между разбиением кода для удобства разработки и поддержания, и необходимостью сохранять управляемую структуру, понятную на уровне всего приложения. Благодаря вложенной модульности и строгому разграничению API становится возможным развивать продуктовые сервисы как независимые, самодостаточные единицы, что открывает перспективы для дальнейшего масштабирования и интеграции новых возможностей.

Автоматическая торговля на криптовалютных биржах Покупайте и продавайте криптовалюты по лучшим курсам Privatejetfinder.com (RU)

Далее
LAND FOR SALE FRIENDSHIP E.B.D - Zinctop Realty
Среда, 12 Ноябрь 2025 Земельные участки в Friendship на Восточном берегу Демерары: перспективы инвестиций с Zinctop Realty

Подробное руководство по покупке земли в Friendship, Восточный берег Демерары, от известного риэлтора Zinctop Realty. Узнайте о преимуществах, ценах, размерах участков и возможностях инвестиций на быстроразвивающемся рынке недвижимости Гайаны.

Zinctop.com - This modern apartment is located in a
Среда, 12 Ноябрь 2025 Современная квартира в Квинстауне: комфорт и удобство возле центра Джорджтауна

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

Zinctop.com | Georgetown - Facebook
Среда, 12 Ноябрь 2025 Zinctop.com – Надежный партнер в сфере недвижимости Гайаны в Джорджтауне

Полное руководство по услугам и возможностям Zinctop. com – ведущей компании по недвижимости в Джорджтауне, Гайана.

SINOTOP GROUP
Среда, 12 Ноябрь 2025 SINOTOP GROUP: Лидер в сфере развития агрохимии и сельского хозяйства в Китае

SINOTOP GROUP является одной из ведущих компаний Китая в области производства и поставок агрохимической продукции и развития сельского хозяйства. Организация успешно экспортирует продукцию более чем в 40 стран по всему миру, предлагая широкий ассортимент современных средств защиты растений, удобрений и консалтинговых услуг для агропромышленного комплекса.

Edge Board Protector Machine Honeycomb Board Laminating Machine
Среда, 12 Ноябрь 2025 Передовые технологии производства защитных кромок и сотовых панелей: Как выбрать и использовать оборудование от SINO TOP MACHINERY

Раскрытие особенностей и преимуществ оборудования для производства защитных кромок и сотовых панелей от компании SINO TOP MACHINERY, обзор технологий, предоставляемых решений и влияние на разные отрасли промышленности.

zinctop.com - Home - Zinctop Realty - Zinctop - Sur.ly
Среда, 12 Ноябрь 2025 Zinctop Realty: Надёжный Партнёр в Недвижимости Гайаны и Всего Мира

Zinctop Realty представляет собой ведущую платформу для покупки, продажи и аренды недвижимости в Гайане и за её пределами, предлагая широкий выбор объектов и надёжные услуги для местных и международных клиентов.

Residential Sale Archives - Zinctop Realty
Среда, 12 Ноябрь 2025 Покупка жилой недвижимости в Гайане с Zinctop Realty: руководство для успешной сделки

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