Зачем командам Salesforce DevOps нужен контроль версий
Становление GitHub как наиболее широко используемой системы контроля версий в мире — и его важность для программного обеспечения с открытым исходным кодом — является явным признаком важности контроля версий. Действительно, все движение CI/CD (непрерывная интеграция и непрерывная доставка) было бы невозможно без репозиториев исходного кода, которые являются первым шагом конвейера CI/CD. Помимо CI/CD, современная доставка программного обеспечения становится все более декларативной, и такие подходы, как GitOps, становятся предпочтительным способом развертывания не только кода, но и контейнерной инфраструктуры. Эти подходы являются неотъемлемой частью автоматизации и ускорения жизненного цикла поставки программного обеспечения и делают его действительно «непрерывным». Все эти разработки за пределами Salesforce влияют на то, как создаются и развертываются приложения Salesforce. Неудивительно, что контроль версий также становится центральным элементом поставки программного обеспечения Salesforce. Salesforce CI/CD больше не является новой концепцией, и на нее в значительной степени опирается каждая организация, создающая приложения Salesforce. Существуют зрелые решения CI/CD, специально созданные для Salesforce. По мере того как команды Salesforce применяют принципы DevOps для создания и поставки приложений, они рассматривают управление версиями как ключевой фактор. В этой статье мы рассмотрим, что такое контроль версий, его преимущества и способы его реализации для доставки приложений Salesforce.

Что такое контроль версий?
Контроль версий позволяет вам управлять изменениями файлов с течением времени. Вы можете использовать систему управления версиями для управления версиями кода, двоичных файлов и цифровых активов.
— Чак Гехман, инженер по техническому маркетингу, Perforce Software
Контроль версий отслеживает изменения в коде, но, что важно, он позволяет разработчикам совместно работать над кодом, работая удаленно. В условиях нынешней пандемии этот акцент на удаленную разработку становится тем более важным.
Традиционно группы доставки программного обеспечения использовали уникальные имена файлов с версиями для сохранения кода — это рудиментарный пример управления версиями. Сегодня существуют мощные инструменты, которые автоматизируют весь этот процесс сохранения новых версий и упрощают работу с ними.
Управление версиями предназначено не только для кода, но и для связанных артефактов, таких как сценарии, документы и плагины. Поскольку процесс разработки программного обеспечения становится все более сложным, управление версиями необходимо для упрощения сложного процесса.
Репозитории являются основой контроля версий. В них хранится код. Изменения из удаленного репозитория переносятся в локальный репозиторий, а затем новые изменения отправляются с локального компьютера обратно в общий репозиторий. Сила репозиториев в том, что их можно клонировать, разветвлять, объединять и сравнивать. Вот как управление версиями обеспечивает совместную работу в масштабе.
Основные преимущества контроля версий
Немедленная обратная связь с разработчиками
Когда разработчики вносят изменения в репозиторий, система контроля версий проверяет наличие конфликтов в коде. Система может автоматически исправлять некоторые конфликты слияния, но для других разработчик может просмотреть список конфликтов и быстро исправить их. Эта немедленная обратная связь о качестве кода служит проверкой работоспособности кода и уменьшает последующие проблемы.
Развертывайте часто 
Лучшие команды инженеров смогли добиться более высокой пропускной способности, 8-кратной частоты развертывания и 8000-кратного сокращения времени развертывания.
— Тали Сорокер, контент-менеджер, OverOp
Контроль версий во многих отношениях улучшает темпы разработки и частоту выпусков. Во-первых, он обеспечивает параллельную разработку, когда несколько разработчиков могут работать над одним и тем же репозиторием по отдельности и, наконец, объединять свои изменения. Во-вторых, это сокращает время, затрачиваемое на устранение проблем, поскольку между командами разработки, контроля качества и эксплуатации сокращается обмен информацией. Проблемы обнаруживаются на ранней стадии и устраняются до того, как они повлияют на пользователей.
Отправляйте надежные приложения
Контроль версий имеет несколько уровней проверки перед развертыванием кода в рабочей среде. Помимо первоначальной проверки на наличие конфликтов, команды QA могут провести проверку кода, прежде чем дать зеленый свет новому коду. Поскольку команды Dev и QA сотрудничают, используя одну и ту же платформу управления версиями, это обеспечивает согласованность и помогает QA «сдвигаться влево», как ожидается в DevOps.
Разработчики в центре внимания
Разработчики становятся центральными участниками всего жизненного цикла поставки программного обеспечения. Благодаря сдвигу влево мы видим, как команды QA и Ops сближаются с командами разработчиков и включают их в процесс тестирования и управления приложениями в рабочей среде. Контроль версий, основанный на репозиториях исходного кода, делает возможным этот сдвиг влево по отношению к разработчикам. Это дает разработчикам возможность влиять на то, что происходит после написания кода. Он также объединяет процессы в трех командах — Dev, QA и Ops. Мы видим, что разработчики Salesforce становятся все более важными в процессе доставки программного обеспечения, и контроль версий поддерживает эту тенденцию.
Управление версиями, ориентированное на Salesforce 
В Salesforce есть несколько уникальных функций, для которых требуется слегка измененная форма управления версиями. Наряду с репозиториями исходного кода Salesforce также включает песочницы, которые во многом похожи на репозиторий, но все же отличаются.
Песочницы Salesforce
Песочница в Salesforce — это копия рабочей организации. Существуют разные типы песочниц — полные, для разработчиков, для разработчиков и частичные песочницы для данных. Только полная песочница содержит копию всех данных и метаданных производственной организации, остальные содержат все метаданные и только часть фактических данных. Команды по доставке программного обеспечения Salesforce используют изолированные программные среды на основе метаданных в соответствии со своими потребностями.
Большинство успешных компаний, с которыми мы общались, пришли к выводу, что у каждого разработчика должна быть своя песочница. Это отлично подходит для аудита и отслеживания работы. У вас также должна быть изолированная программная среда для интеграции, желательно с частичной или полной копией, которую можно использовать для слияния кода по мере разработки функций.
— Алекс Браузеттер, основатель Blue Canvas
Эти песочницы существуют вместе с репозиториями, и конфликты между песочницами и репозиториями могут возникать после каждой фиксации. Затем при развертывании изменений команды могут выбрать развертывание из песочницы или из репозитория. Благодаря более мощным функциям для разрешения конфликтов и совместной работы лучше развертывать из репозитория, чем из песочницы. Тем не менее, наличие обоих вариантов полезно.
Обычно для каждой команды и каждого пользователя существует несколько песочниц и репозиториев. Управление всеми ими может увеличить накладные расходы и стать контрпродуктивным. Вот почему командам Salesforce DevOps следует подумать об управлении песочницей и репозиторием.
Контроль версий и управление песочницей для Salesforce
Такие решения, как AutoRABIT, включают в себя функции, которые помогают управлять как контролем версий, так и песочницами. Например, AutoRABIT обеспечивает «автоматическую фиксацию» изменений из репозитория исходного кода. Эта автоматизация не только экономит время, но и уменьшает количество ошибок, которые могут возникнуть при перемещении кода.
Когда дело доходит до управления песочницами, AutoRABIT предлагает синхронизацию песочниц в разных местах. Он сравнивает разные песочницы и выделяет изменения и незначительные различия между ними. Кроме того, он улучшает управление песочницей с помощью журналов и отчетов о количестве развертываний и ошибок, а также указывает, какие конкретные изменения что-то сломали. Это полезно при работе с песочницами в крупных организациях, которые могут легко выйти из-под контроля.
Контроль версий: обязательный элемент для команд Salesforce DevOps
Контроль версий является неотъемлемой частью разработки программного обеспечения. Это верно, особенно для команд Salesforce DevOps. Им нужна мощная система контроля версий и решение для управления песочницей, чтобы предоставлять программное обеспечение в масштабе и скорости, которые требуются сегодняшнему рынку. Это поставит разработчиков на место водителя и объединит взаимодополняющие команды, такие как QA и Ops, для реализации всего потенциала DevOps для Salesforce. Если вы уже начали применять методы DevOps для создания приложений Salesforce, вам потребуется контроль версий и управление песочницей.