Создатели ПО рано или поздно должны сделать непростой выбор: какой именно сервис использовать для организации системы, занятой контролем версий? И те, кто уже имеет солидный опыт, все же задумываются в нерешительности: что купить GitLab или все таки GitHub?
Актуальность решений, позволяющих коллективно управлять процессом разработки ПО, постоянно растет. Подобная тенденция прослеживается последние два десятка лет, что немало, если учитывать, что сама история компьютеризации исчисляется далеко не веками. Наличие высокоскоростного интернета позволяет говорить о возникновении и развитии целой отрасли, а именно аутсорс-разработке программ. Все возможности онлайн сервисов еще до конца не использованы – в данном процессе крайне важно наличие сервисов для командной работы и использование систем, позволяющих осуществлять управление версиями программного кода.
Историческая справка
Перелом в данной сфере стал очевиден когда специалистам была представлена система Git, созданная Линусом Торвальдсом. До этого разработчики использовали CVS, SVN и иные варианты администрирования. Главной проблемой в данном случае являлась недоработанная система комита. Обнаруженную ошибку нельзя было исправить, не вмешиваясь в репозиторий. При работе над ядром Linux Линус Торвальдс сформировал собственную систему, которая может управлять версиями. Она предлагает два уровня фиксации данных в репозитории. Сперва делается git commit, выясняется состояние локального репозитория. Далее создается git push – и тут речь идет уже об удаленном репозитории: появившиеся изменения могут видеть все те, кто задействован в проекте.
Git – это вариант, предлагаемый для управления версиями. При необходимости совместной разработки ПО нужно иметь веб-сервис, который обеспечит слаженные действия с кодом по проекту, разрешит отслеживать изменения и осуществлять необходимые взаимодействия. Именно для этого появился GitHub, позволяющий управлять задачами, где присутствует Wiki по каждому из продуктов. Позже пользователям был предложен и GitLab – благодаря обширному набору функций он уверенно занял соответствующую нишу. Основной задачей как GitHub, так и GitLab становится помощь при согласных действиях разработчиков проектов.
При работе над любой задачей, а также поддержке ПО используемая система управления версиями и присутствующая система контроля задач крайне важны. Требования к системам могут меняться постоянно, возникают все новые варианты. Порой достаточно оценить сложность создания ПО – при этом часты ситуации, когда заказчик не может представить себе весь объем необходимой информации и сформулировать все имеющиеся требования к решению еще в самом начале работы.
Ряд разработчиков полагают, что в условиях небольшого проекта выстраивать целую систему контроля и администрирования версий не следует. Но вот речь заходит о реальном продукте и необходимости его поддержки – и тут каждый может убедиться на личном опыте, что отсутствие репозитария кода и системы в целом часто имеет весьма негативные последствия. В репозитарии присутствует исчерпывающая информация по проекту – любое движение записывается в системе. Даже если речь идет о создании простого сайта в HTML, все тщательно фиксируется и после может подлежать оценке. На личном опыте становится очевидным, насколько это может оказаться полезным.
Система GitLab создана Дмитрием Запорожцем. В 2011 году данный специалист в ходе выполнения ряда задач полностью осознал всю важность коммуникаций для проектов – особенно если речь идет о системе, отвечающей за контроль разработки кода и осуществляющей управление задачами.
С первых же дней существования данного варианта пользователь мог сохранить GitLab на частных и облачных серверах, продукт мог похвастать наличием лицензии. В 2013 г. решение был разделено на два направления: Community и Enterprise с наличием лицензии MIT и открытого кода. Сегодня системой пользуются более 100 тысяч компаний с наличием открытого кода, включая таких монстров как IBM. Постараемся взвесить все преимущества и недостатки обеих систем в применении к проектам различного уровня.
Краткий обзор
Сравнение GitLab и GitHub по различным параметрам дает следующие результаты.
Для бизнеса
Преимуществом GitHub с точки руководителей предприятий, занятых в различных сферах бизнеса, состоят в значительном количестве пользователей, которых можно подключить к системе. Именно здесь присутствует немало открытых проектов. В наличии – частные командные репозитарии, предоставляемые бесплатно. Часто это становится основным фактором, на котором основывается выбор GitHub.
Но нельзя не учесть, что GitLab предлагает использование большего числа возможностей (чисто технических), предоставляя пользователю массу различных функций. И с позиции защиты персональных данных определенное преимущество оказывается на стороне этого решения, при этом система легко устанавливается и на частном сервере.
Возможности интеграции
Многие считают, что GitLab предлагает большие возможности в области интеграции – это и использование решения в сложных проектах с использованием механизма подгрупп, и просмотр программ перед объединением с целью сокращения числа дефектов и времени разработки.
Прослеживаются следующие тенденции: GitHub постепенно улучшает работу с CI благодаря системе GitHub Actions. Имея доступ к репозитариям и метаданным сервиса можно детально настроить процесс CI. И тогда перед пользователем откроется много «маленьких приятностей», облегчающих повседневные задачи. Конфигурация осуществляется с использованием YAML файлов. Система свежая и тестируется не столь долго – зато ее гибкость дает возможность исправить обнаруженные недочеты, не обращаясь к специалистам.
Постоянная доставка
GitLab предоставляет пользователю шаблон Auto DevOps – он обеспечивает конкретную конфигурацию Cl/CD, а значит позволяет упростить выполнение всего цикла разработки ПО.
Стоимость
Бесплатная версия GitLab, помимо базовых функций, предоставляет еще множество возможностей. Но все же она является неполной – расширенный вариант предлагается за 220 долларов год. И в этом случае куда лучше становится техподдержка, появляется возможность администрирования большего числа проектов.
Функции
GitLab помогает отследить весь цикл разработки ПО – начиная с планированием и завершая развертыванием. Среди наиболее важных в настоящий момент решений — Burndown Charts и Time Tracking, а также возможность переноса задач в другие проекты и пр.
Система контроля дает возможность импортирования и экспортирования из иных систем (к примеру, Google Code), а также с любых GitURL, присутствующих в доступе. Помимо этого пользователю предлагается поддержка множества репозитариев. С GitHub другая ситуация – лучше поддерживается Visual Studio, поскольку эта компания в настоящий момент владеет сервисом.
Контейнеры Docker — преимущества использования
Оптимальным вариантом становится установка GitLab в частном контейнере – GitHub подобных возможностей не обеспечивает. GitLab готов предоставить слепок (официальный), позволяющий установить систему в контейнерном варианте со всеми плюсами подобного решения, среди которых:
- возможность использовать все очевидные плюсы GitLab в крупных компаниях;
- перенастройка решения на иных серверах без необходимости значительного администрирования и при сохранении пользовательских настроек;
- высокий уровень безопасности при выборе правильных настроек;
- возможность быстро «поднять» систему с использованием других мощностей в ситуации, когда отказало оборудование;
- упрощенный переход в облако или перенос решения между облаками.
Разработчиками предлагается пара версий — Community и Enterprise Edition. В настоящий момент данное решение не может полностью функционировать при работе на Windows, и это несет за собой определенные проблемы для пользователей.
Чтобы сохранить данные применяется host mounted volumes. Возможно, решение не становится оптимальным – в большинстве случаев это становится очевидным при сравнении. К примеру, для Linux гораздо интереснее станет установка пути к домашней папке GitLab при наличии $ GITLAB_HOME. В этом случае данные можно хранить отдельно от лог-файлов и тех, что отвечают за конфигурацию GitLab.
И вот здесь хочется задать вопрос: не проще ли произвести установку базы данных и конфигурации? Конечно, это в некоторой степени усложнит настройку системы, но сделает куда проще администрирование, поскольку база данных и так хранит в себе всю нужную информацию. Скорее всего, подобное решение принималось с учетом желания повысить скорость работы с файлами, при этом не желая излишне перегружать серверы.
Установку GitLab в Docker можно произвести несколькими способами:
- с применением Engine, что является вариантом, используемым чаще других;
- посредством Compose;
- с использованием swarm mode (вариант интересен при наличии приложений с высокой нагрузкой).
Весь процесс крайне прост. Несомненным плюсом Docker становится то, что и различного рода актуальные обновления, и резервные копии решения можно создавать с использованием средств контейнеризации – крайне быстро, не задерживаясь на подобных «мелочах». Основная задача в этом случае – обеспечение стандартизации с Docker. И, при соблюдении всех требований, работа будет налажена повсюду, где присутствует возможность поддержки контейнеризации (в том числе в облаке).
Желая выполнить ряд настроек и оптимизировать контейнерную работу, можно использовать Docker Compose. Но «продвинутые» администраторы пытаются сделать это в личных контейнерах, позволяя осуществить масштабирование удобным способом.
Подведем итоги
GitHub – это оптимальное решение для проектов, которые имеют открытый код. Это может оказаться полезным при создании целостного имиджа компании или непосредственно разработчика. Благодаря значительному числу пользователей проект сможет увидеть широкая аудитория.
Данный вариант идеален для работы над коммерческими проектами, если речь идет исключительно об использовании функций систем, призванных контролировать версии.
А что же GitLab? Решение выбирается в ситуациях, когда нужно построить рабочий CI/CD в облаке. Оно вполне приемлемо, если системы контроля и разработки требуется установить на личном сервере. Это интересное решение для компаний с ограничением доступа к общественным облачным вариантам систем – оно подходит для обработки данных, которые нужно оставить закрытыми для широкого пользования, а также при необходимости повышения уровня безопасности в целом.
GitLab разворачивается в контейнерах при необходимости администрирования значительного числа систем в условиях совместной разработки.
Конечно, имеются и другие варианты, аналогичные описанным решениям – к примеру, это система BitBucket. Что это? Активно использующаяся в настоящий момент платформа для создания ПО, осуществляющегося совместно. Ее используют достаточно часто в проектах как открытого, так и закрытого типа. Основной характеристикой такого варианта становится интуитивно понятный интерфейс, облегчающий использование.
И тот, и другой вариант системы – это развитые современные комплексные решения, отвечающие большинству требований разработчиков прогамного обеспечеия. При этом любой проект требует определенных системных настроек с организацией управления версиями и проектами, но на данный момент GitLab все же является победителем нашего обзора.