RSS

Комментарии

GitHub или GitLab, что лучше выбрать? Незнаком с обоими системами
GitLab — это мощная платформа для управления репозиториями Git, которая позволяет хранить, отслеживать и разрабатывать код в командной среде. Помимо базового функционала Git, GitLab предлагает инструменты для CI/CD, управления проектами, мониторинга и обеспечения безопасности, что делает его идеальным для крупных и малых проектов. В этой статье разберем, как начать работу с GitLab, от регистрации до первого коммита.

1. Регистрация и создание репозитория

Создайте аккаунт. Перейдите на GitLab.com и зарегистрируйтесь, указав адрес электронной почты, имя пользователя и пароль. Подтвердите свою почту.
Создание нового проекта:
— После входа в GitLab нажмите на кнопку «New Project».
— Выберите «Create Blank Project» или «Import Project», если у вас уже есть готовый репозиторий.
— Дайте проекту имя, настройте уровень приватности (Private, Internal, Public) и создайте проект.

2. Установка Git и настройка SSH-ключей

Установка Git: На macOS: brew install git
На Ubuntu/Debian: sudo apt update && sudo apt install git
На Windows: скачайте Git for Windows и установите.
Создание SSH-ключа:
В терминале выполните команду:ssh-keygen -t rsa -b 4096 -C «your_email@example.com»

Скопируйте публичный ключ:cat ~/.ssh/id_rsa.pub
Добавление SSH-ключа в GitLab: Войдите в GitLab и откройте Settings > SSH Keys.
Вставьте ключ в поле Key и нажмите Add Key.

3. Настройка репозитория

Теперь, когда SSH-ключ добавлен, клонируйте репозиторий на свой компьютер.

Клонирование репозитория: На странице вашего проекта скопируйте SSH URL репозитория.

В терминале выполните:git clone git@gitlab.com:username/repo-name.git

Переходите в директорию репозитория:cd repo-name

4. Работа с Git: Основные команды

Создание новой ветки:git checkout -b new-feature
Создание коммита:
Добавьте файлы в индекс:git add.

Зафиксируйте изменения:git commit -m «Добавлен новый функционал»
Отправка изменений на сервер:git push origin new-feature
Создание Merge Request: На странице проекта в GitLab выберите свою ветку и создайте Merge Request.
Опишите изменения и отправьте на ревью.

5. Настройка CI/CD

GitLab предоставляет встроенные инструменты для CI/CD, позволяющие автоматически тестировать и разворачивать код. Начнем с простого конвейера.

Создание .gitlab-ci.yml: В корне проекта создайте файл .gitlab-ci.yml, который будет описывать ваш конвейер.

Пример простого файла:stages:
— build
— test

build_job:
stage: build
script:
— echo «Building the project»

test_job:
stage: test
script:
— echo «Running tests»
Добавление CI/CD в проект:
GitLab автоматически обнаружит .gitlab-ci.yml и запустит описанные процессы после каждого коммита.

6. Полезные советы

Ветки: Создавайте отдельные ветки для каждой фичи или бага. Это упрощает ревью и уменьшает вероятность конфликтов.
Защита веток: В настройках проекта можно настроить Protected Branches, чтобы разрешить коммиты только после ревью.
Pipeline и Jobs: Используйте Pipeline для автоматизации задач, таких как тестирование и деплой.

GitLab — это больше, чем хранилище кода. Это целая платформа, которая объединяет управление проектами, автоматизацию и безопасность в одном месте. Начать работу просто, а возможности GitLab позволяют глубоко интегрировать его в процессы разработки и деплоя. Удачи в работе с GitLab!
Есть две хорошие практики, которые может взять на вооружение любая команда.

Бюджет ошибки. SRE-команды считают так называемый бюджет ошибки — допустимый период, в течение которого сервис может работать ниже целевых уровней. С помощью бюджета можно измерять серьёзность инцидентов. Если, например, инцидент истратил 30% бюджета, его можно считать серьёзным. Это помогает SRE-инженерам не отвлекаться на минорные проблемы, которые регулярно возникают даже в самых оттестированных проектах.

Постмортемы. Это грустное слово означает отчёт или небольшую статью, которую пишут по результатам решения проблемы. С помощью постмортемов SRE-инженер делится важным знанием с командами разработки, помогая избежать ошибок в будущих проектах.
Хорошо. А чему разработчики и команды могут научиться у парадигмы SRE, даже если таких специалистов в штате нет?
Вроде того, он настоящий Бэтмен. Чтобы задержать преступника быстрее полиции, важно действовать не хуже настоящего полицейского. SRE должен разбираться в инфраструктуре, конфигурации серверов, быстро читать логи. Он умеет писать код не хуже программистов — ведь часто для исправления бага нужно быстро переписать что-то руками.

Чтобы работать очень быстро, в SRE используют парадигму «инфраструктура как код». Инженеры могут управлять инфраструктурой и настраивать её через процедуры в коде — так они работают со всеми компонентами в одной среде и не отвлекаются на ручное «накликивание» настроек серверов.

Чтобы SRE-инженер хорошо знал свой продукт, он часто участвует в его разработке. Как правило, это очень опытный, сильный программист, вожак стаи с самыми мощными лапищами. Иначе команда просто не будет ему доверять.
Получается, SRE-специалист — это такой сисадмин-девопс-программист
У команды по доступности работает мощный мониторинг, отслеживаются десятки показателей жизнедеятельности сервиса. Если метрики начинают сыпаться, срабатывают алерты.

Но обычного письма или пуша для SRE-инженера мало. Алерт в его случае работает многоступенчато. Например, сперва разработчик получает уведомление через телеграм-бота. После этого он должен быстро отметить в мониторинговой админке, что увидел проблему. Если этого не сделать, мониторинг начнёт звонить SRE-специалисту по телефону, вызывая на бой с багами. Многоступенчатость важна, ведь сервис может упасть и ночью, а во сне можно случайно пропустить вызов или машинально отменить его, как будильник.

В небольших и средних компаниях обычно дежурит один SRE-инженер. Если он пропустит алерт, то решение ситуации придётся откладывать. В больших компаниях инженеров сразу несколько — они могут подстраховать друг друга.
А как SRE узнает, что что-то случилось?
Возьмёт и починит сам. SRE-инженер — это «дежурный программист», который не только первым узнаёт о проблеме, но и сразу же приступает к её решению. В итоге он экономит несколько часов для своей компании и пользователей. А программисты могут спокойно отдыхать, даже если у сервиса проблемы.

В компаниях с командой из 10–15 человек можно обойтись без SRE: обычно разработчики дежурят по очереди. А вот большому высоконагруженному сервису, например банку, без такого специалиста не обойтись: в случае проблем счёт идёт на минуты.
А что в такой ситуации сделает SRE-инженер?
Была — но её обеспечивали иначе. Представим большой и популярный онлайн-кинотеатр. Это сложный сервис, который должен показывать сериалы и фильмы 24/7 с минимальной задержкой.

Предположим, что в пятницу у сервиса два важных события: вечером выходит финальный эпизод сериала «Игры у стола» и тем же вечером разработчики апдейтят бэк. Тесты проходят, всё работает, «Игры» летят — разработчики уходят в бар отмечать долгожданный релиз. А в субботу утром десятки тысяч людей не могут нормально посмотреть сериал: вместо 20 мс сайт работает с задержкой 100500 мс.

При традиционном подходе к надёжности первыми о ситуации узнают сотрудники поддержки, ведь расстроенные зрители заполнят все чаты. Специалист поддержки не может восстановить работу сервиса — он эскалирует проблему, передав её в технический хелп. Там увидят, что случилась большая беда, и начнут вызванивать разработчиков. Не факт, что все они на связи в субботу, ведь у всех нас есть свои дела по выходным. В итоге через несколько часов соберётся консилиум программистов и будет решать, что делать: откатывать апдейт или попытаться пофиксить текущий билд. На восстановление нормальной работоспособности уйдут часы или даже дни — а такой простой очень дорого обходится бизнесу.
А что, до SRE безотказности сервисов не было?
Есть две хорошие практики, которые может взять на вооружение любая команда.

Бюджет ошибки. SRE-команды считают так называемый бюджет ошибки — допустимый период, в течение которого сервис может работать ниже целевых уровней. С помощью бюджета можно измерять серьёзность инцидентов. Если, например, инцидент истратил 30% бюджета, его можно считать серьёзным. Это помогает SRE-инженерам не отвлекаться на минорные проблемы, которые регулярно возникают даже в самых оттестированных проектах.

Постмортемы. Это грустное слово означает отчёт или небольшую статью, которую пишут по результатам решения проблемы. С помощью постмортемов SRE-инженер делится важным знанием с командами разработки, помогая избежать ошибок в будущих проектах.
Хорошо. А чему разработчики и команды могут научиться у парадигмы SRE, даже если таких специалистов в штате нет?
Вроде того, он настоящий Бэтмен. Чтобы задержать преступника быстрее полиции, важно действовать не хуже настоящего полицейского. SRE должен разбираться в инфраструктуре, конфигурации серверов, быстро читать логи. Он умеет писать код не хуже программистов — ведь часто для исправления бага нужно быстро переписать что-то руками.

Чтобы работать очень быстро, в SRE используют парадигму «инфраструктура как код». Инженеры могут управлять инфраструктурой и настраивать её через процедуры в коде — так они работают со всеми компонентами в одной среде и не отвлекаются на ручное «накликивание» настроек серверов.

Чтобы SRE-инженер хорошо знал свой продукт, он часто участвует в его разработке. Как правило, это очень опытный, сильный программист, вожак стаи с самыми мощными лапищами. Иначе команда просто не будет ему доверять.
Получается, SRE-специалист — это такой сисадмин-девопс-программист
У команды по доступности работает мощный мониторинг, отслеживаются десятки показателей жизнедеятельности сервиса. Если метрики начинают сыпаться, срабатывают алерты.

Но обычного письма или пуша для SRE-инженера мало. Алерт в его случае работает многоступенчато. Например, сперва разработчик получает уведомление через телеграм-бота. После этого он должен быстро отметить в мониторинговой админке, что увидел проблему. Если этого не сделать, мониторинг начнёт звонить SRE-специалисту по телефону, вызывая на бой с багами. Многоступенчатость важна, ведь сервис может упасть и ночью, а во сне можно случайно пропустить вызов или машинально отменить его, как будильник.

В небольших и средних компаниях обычно дежурит один SRE-инженер. Если он пропустит алерт, то решение ситуации придётся откладывать. В больших компаниях инженеров сразу несколько — они могут подстраховать друг друга.
А как SRE узнает, что что-то случилось?
Возьмёт и починит сам. SRE-инженер — это «дежурный программист», который не только первым узнаёт о проблеме, но и сразу же приступает к её решению. В итоге он экономит несколько часов для своей компании и пользователей. А программисты могут спокойно отдыхать, даже если у сервиса проблемы.

В компаниях с командой из 10–15 человек можно обойтись без SRE: обычно разработчики дежурят по очереди. А вот большому высоконагруженному сервису, например банку, без такого специалиста не обойтись: в случае проблем счёт идёт на минуты.
А что в такой ситуации сделает SRE-инженер?