Перевели для вас цикл статей об эволюции технологической платформы Mercado Libre — от монолитной архитектуры начала 2000-х к современной мультиоблачной платформе Fury, которая обеспечивает разработчикам удобную, масштабируемую и безопасную среду для создания, развёртывания и управления приложениями. В этой — первой — части описывается переход компании от единой базы и медленных релизов к микросервисам и облачным технологиям, что позволило значительно ускорить разработку и повысить надёжность систем. Передаём слово автору — ведущему техническому руководителю Mercado Libre Хулиано Мартинсу (Juliano Martins).

Задумываетесь о переходе к мультиоблачной платформе? Тогда вы попали по адресу! В этом цикле статей мы делимся своим опытом реализации основных функций Fury — нашей внутренней платформы для разработчиков. Она предоставляет пользователям унифицированное окружение для эффективного создания, развёртывания, управления и мониторинга приложений.
Присоединяйтесь: вместе мы отправимся в сердце технической команды Mercado Libre, которая разрабатывает и оркестрирует приложения, составляющие нашу экосистему. Поговорим о технологической эволюции в компании и о том, как мы перешли от монолитной архитектуры к интегрированной и гибкой платформе-как-услуге, не зависящей от конкретной реализации облака.
Чтобы справиться с стремительным ростом, техническая команда Mercado Libre разработала решение, которое позволяет проводить массовое масштабирование и предлагает 15 тысячам инженеров компании пользовательский опыт мирового класса. Они ежедневно используют эту платформу для создания первоклассных приложений. Техническая команда в Mercado Libre управляет более чем 30 000 микросервисов, запущенных на 100 000 инстансов в production, и обеспечивает бесшовную интеграцию, гибкость, простоту и безопасность.
Экосистема Mercado Libre состоит из различных компонентов или бизнес-подразделений, таких как маркетплейсы, финтех, интернет-магазины и ERP, логистика и реклама. В своей работе все эти подразделения опираются на единую платформу Fury. Но как мы пришли к такому инновационному решению?
Взгляд в историю: что было раньше
В 1999 году мы выпустили первую версию маркетплейса Mercado Libre. Он был построен на монолитной архитектуре. В то время платформа насчитывала несколько сотен физических серверов, работающих на одной базе данных Oracle, с одним репозиторием кода, в котором ежедневно взаимодействовали более 200 разработчиков. То, что начиналось как небольшое предприятие, быстро превратилось в гиганта.
Развёртывания проводились еженедельно, что зачастую тормозило разработку, так как приходилось замораживать (freeze) код, чтобы передать его командам контроля качества. Тестировать функции становилось всё сложнее, что приводило к увеличению времени реакции на ошибки. Кроме того, сложная настройка окружений затрудняла тестирование новых технологий.
Разработчики сталкивались с серьёзными проблемами при развёртывании правок в одной и той же кодовой базе. В результате часто возникали конфликты: одни функции работали корректно, другие — ломались. Масштабирование системы превратилось в серьёзную проблему, что в итоге приводило к увеличению времени вывода новых функций на рынок (Time to Market).
Только представьте, какой при таких вводных начался бы хаос, если бы 3000 разработчиков развёртывали код по 10 раз в день, а то и чаще…
MeliCloud: инновации для сложных воркфлоу
Где-то в 2010 году Mercado Libre пришлось принять критическое решение. Было необходимо построить «новый мир», который смог бы освободиться от ограничений и перейти к более масштабируемой инфраструктуре, основанной на микросервисах. Бум мобильных технологий привёл к тому, что API теперь приходилось обрабатывать всё более мудрёные воркфлоу, поэтому наша команда Cloud & Platform занялась поисками и экспериментами. После внимательного рассмотрения мы решили перейти на передовую платформу MeliCloud.
MeliCloud реализовала подход инфраструктура-как-услуга, дающий ряд преимуществ, в том числе повышенную скорость и гибкость разработки. Мы смогли эффективно управлять большим количеством взаимосвязанных микросервисов, включая:
17 500 инстансов;
более 1200 пулов трафика;
развёртывание более 1400 инстансов в день (практически десятая часть от общего числа инстансов);
частичную поддержку при сбоях в работе.
Окей, перешли на микросервисы. Что с хаосом?
После того как мы перешли на микросервисы, возник интересный вопрос: действительно ли хаос теперь под контролем? Слишком высокая гибкость в чём-то усложнила жизнь: значительное время уходило на решение вопросов, связанных с эксплуатацией production, а не на совершенствование продукта. Мы перешли от состояния полного хаоса, когда прогресс казался невозможным, к состоянию хаотической свободы, когда каждый имел неограниченный контроль.
Однако, учитывая имеющиеся на тот момент ресурсы, такая инфраструктура представляла собой серьёзную проблему с точки зрения технического обслуживания:
множество окружений и конфигураций;
сложность в развитии инфраструктуры;
значительные расхождения между окружениями Deployment, Stage и Production;
крутая кривая обучения;
необходимость наличия глубоких знаний инфраструктуры, которые нужны для эксплуатации;
раздувание команд и увеличение числа центров разработки.
Что нам было нужно
Нашей главной целью было упростить операционные задачи для инженеров: предоставить им все необходимые инструменты для лёгкой разработки и управления production, сохранив при этом чёткое разделение между фронтендами и API. Требовалось единое место для инфраструктуры, сборки, развёртывания, метрик и сервисов.
Мы поняли, что необходима надёжная платформа, которая позволила бы разработчикам создавать и запускать приложения всего в три клика. Цель заключалась в том, чтобы они могли загрузить приложение, внести в него изменения и протестировать их за чашечкой кофе: легко запускать, легко развёртывать в production. Поэтому мы спроектировали и создали Fury.

Fury: Hello, world
Так в 2015 году на свет появилась Fury. Это внутренняя платформа разработчика (IDP), созданная в компании и позволяющая инженерам создавать, развертывать, мониторить приложения и управлять ими.
Вот её основные моменты:
Единая платформа с определённым технологическим стеком, языками, фреймворками и инструментами, приспособленными к нашим потребностям и стандартам качества.
Переносимость и единообразие развёртываний благодаря контейнеризации.
Подобные и воспроизводимые окружения с переиспользуемыми компонентами и сервисами.
Управление затратами и их оптимизация.
Поддержка мультиоблачности и абстракция облачных провайдеров.
Готовая к использованию инфраструктура развёртывания.
Встроенные в платформу инструменты мониторинга.
Простой процесс разработки.
Ориентированный на пользователя и адаптированный под платформу UI, которым легко управлять и пользоваться.
Масштабируемость для продуктов и команд.
Какие плюсы привносит Fury в Mercado Libre
Fury предлагает ряд преимуществ для Mercado Libre:
Упрощённый процесс разработки: Fury предоставляет централизованную платформу самообслуживания, на которой разработчики получают доступ к необходимым инструментам, сервисам и инфраструктуре для создания и развёртывания приложений. Это повышает производительность разработчиков и ускоряет цикл разработки.
Снижение когнитивной нагрузки: предлагая единую платформу, Fury освобождает разработчиков от когнитивной нагрузки, связанной с использованием множества систем и процессов. Это позволяет им сосредоточиться на создании высококачественных приложений.
Повышенная безопасность и соответствие нормативным требованиям: Fury применяет стандартизированные политики и средства контроля, обеспечивая согласованность и снижая риски, связанные с нестандартными методами разработки. Это повышает безопасность и помогает соблюдать соответствующие нормы.
Гибкость и масштабируемость: благодаря мультиоблачной абстракции команды могут использовать наиболее подходящие услуги и ресурсы от разных облачных провайдеров. Такая гибкость и масштабируемость позволяют Mercado Libre адаптироваться и расти по мере необходимости.
В целом Fury внесла значительный вклад в ускорение, повышение эффективности и безопасности разработки программного обеспечения в Mercado Libre.
Создание приложений ещё никогда не было таким простым
Для создания приложений разработчики могут использовать фронтенд Fury. Он позволяет за пару кликов выбрать нужный тип приложения и технологию. За кулисами платформа автоматически создаёт репозиторий кода на GitHub с необходимыми правами, настраивает CI/CD-пайплайн и формирует базовую структуру с предварительно сконфигурированным контейнеризованным образом.
Кроме того, интерфейс командной строки (CLI), встроенный в Fury, позволяет разработчикам загружать приложение локально, запускать его, тестировать и создавать готовые к развёртыванию версии с помощью терминала на своём компьютере. Такая бесшовная интеграция распространяется не только на инфраструктуру, но и на локальное окружение разработчика, обеспечивая целостность процесса разработки.
Упрощение развёртывания приложений со Scopes
В Mercado Libre мы ввели понятие областей (Scopes) — средства управления версиями, развёртываниями и сегментацией приложений. Scopes служат упрощённым представлением Fury в контейнерах облачных провайдеров вроде AWS или GCP. С помощью Scopes приложения могут быстро переходить из dev-окружения в интегрированную инфраструктуру, что позволяет проводить эффективное тестирование в специальном тестовой или демонстрационной области (scope). Как только финальная версия готова, её можно развернуть в production-области (scope).
При создании области (scope) автоматически создаётся необходимая инфраструктура, включая балансировщик нагрузки, группы автомасштабирования и инстансы. Трафик направляется на эти ресурсы с преднастроенными логами, метриками и мониторинг-алертами. Fury также помогает анализировать расходы на инфраструктуру и применяет автоматическую оптимизацию для их сокращения. Для обеспечения надёжности критически важные приложения разнесены по отдельным областям (scope). Такой подход не даёт сбоям в одной области повлиять на другие, что позволяет более эффективно реагировать на непредвиденные ситуации.
Что это означает для нас? Благодаря платформе Fury инфраструктура автоматически управляется и масштабируется в зависимости от потребностей бизнеса; инстансы добавляются и удаляются по мере необходимости. Так мы максимизируем эффективность и оптимизируем расходы.
Эффективная интеграция кода с Release Process
В 2018 году мы внедрили функцию Release Process для эффективного управления интеграцией кода в приложения. В ней используются концепции непрерывной интеграции (CI) и непрерывной доставки (CD). А инструменты с открытым исходным кодом упрощают и ускоряют процесс, подстраивая его под наши потребности в разработке.
Release process обслуживает более 26 000 репозиториев и автоматически выполняет семь комплексных проверок качества, контролируя целостность каждого приложения. Эти проверки включают в себя зависимости, модели ветвления, CI, покрытие кода и наличие учётных данных в коде. При ошибке в любой из проверок весь процесс прерывается до тех пор, пока проблема не будет устранена. Результат? Бесшовный и эффективный процесс интеграции кода, который поддерживает наших разработчиков на каждом шагу.
Различные стратегии развёртывания в зависимости от критичности сценария
Когда речь заходит о развёртывании приложений, не существует универсального подхода. У каждого сценария уникальные требования и соображения. Поэтому Fury предлагает разработчикам ряд стратегий развёртывания в зависимости от критичности сценария и потенциального влияния на бизнес.
Некоторые стратегии предполагают переиспользование существующей инфраструктуры, что делает их быстрыми и экономически эффективными. Однако в случае ошибок их бывает сложно откатить, что может привести к простою. Эти стратегии идеально подходят для тестирования небольших изменений или для областей с низкой степенью критичности.
С другой стороны, такие стратегии, как blue-green-развёртывание, предполагают создание нового окружения и постепенное переключение трафика. Они идеально подходят для production-областей, требующих быстрого восстановления в случае ошибок. Они обеспечивают быстрый откат без простоев и минимизируют воздействие на пользователей благодаря тщательному мониторингу трафика.
Предоставляя различные стратегии развёртывания, Fury позволяет разработчикам принимать взвешенные решения, основанные на специфических потребностях каждого сценария, обеспечивая эффективное и надёжное развёртывание приложений.
Расширение возможностей разработчиков с помощью инструментов мониторинга приложений
Fury предоставляет разработчикам надёжные инструменты для поддержки работы приложений. Уделяя особое внимание метрикам, логам и мониторингу, мы выявляем проблемы на ранней стадии и сводим к минимуму возможные простои. От отслеживания параметров инфраструктуры (CPU, память) до мониторинга бизнес-показателей, таких как пиковое время обработки платежей, — мы обеспечиваем полный контроль над состоянием системы.
Разработчики полностью владеют своими приложениями и могут настраивать алерты обо всех видах ошибок. Такая культура проактивного мониторинга позволяет принимать меры до того, как проблема обострится. В Fury разработчики могут использовать возможности DataDog, NewRelic и Opsgenie со стандартными мониторами, адаптированными к конкретным используемым сервисам.
Продолжаем стимулировать инновации и рост
Технологическая эволюция Mercado Libre поражает воображение. Трансформация рабочей культуры позволила нам итеративно разрабатывать продукты в режимах agile и decoupled. В то же время она ускорила инновационные процессы, поддерживая экспоненциальный рост Mercado Libre.
С первых дней монолитной архитектуры до сегодняшнего состояния нашей передовой мультиоблачной платформы мы стали свидетелями огромного роста и инноваций. Мы воспользовались преимуществами микросервисов для повышения масштабируемости и гибкости. Внедрение технологии контейнеризации произвело революцию в процессах разработки и развёртывания, что позволило нам быстрее внедрять новые технологии и более эффективно доносить ценность до пользователей.
Переход к мультиоблачному подходу открыл новые возможности, обеспечив гибкость в использовании лучших услуг и ресурсов от различных облачных провайдеров. Такое стратегическое решение не только повысило нашу производительность и устойчивость к внешним воздействиям, но и позволило оптимизировать расходы.
Следующие шаги в нашем путешествии
В Mercado Libre мы всегда ищем новые возможности для внедрения инноваций и расширения границ возможного. Именно поэтому мы создали стратегический альянс с компанией OpenAI, вместе с которой изучаем возможности генеративного искусственного интеллекта (GenAI). Мы убеждены в огромном потенциале GenAI в нашей экосистеме в плане создания революционных решений, которые принесут пользу разработчикам.
Продолжая развиваться и расширять границы возможного, мы по-прежнему стремимся обеспечить лучший опыт для разработчиков. Наша цель — снабдить их лучшими инструментами и ресурсами для выполнения миссии по демократизации торговли и финансовых услуг, чтобы изменить жизнь миллионов людей в Латинской Америке.
В следующих статьях мы подробно рассмотрим такие аспекты, как безопасность трафика, оптимизация затрат и мультиоблачная стратегия. Эти темы жизненно важны для нашего технологического развития, и мы расскажем об инновационных решениях, которые были внедрены для масштабируемости, отказоустойчивости и эффективности наших систем.
Это удивительное путешествие только началось — давайте вместе следить за новыми интересными событиями и идеями. Вместе мы продолжим формировать будущее технологий и революционизировать способы вовлечения людей в торговлю и финансовые услуги.
P. S.
Читайте также в нашем блоге:
Dhwtj
Заходите, здесь не глубоко ©