32
О том, как оптимизировать работу CI своими силами

О том, как оптимизировать работу CI своими силами

  • Upload
    sqalab

  • View
    9.077

  • Download
    0

Embed Size (px)

Citation preview

О том, как оптимизировать работу CI своими силами

FRONTEND API

WORKER

MongoDB

REDIS

ADMINTOOL

Структурная схема проекта

RabbitMQLOGIN

Git Flow

PROD

Environments

UAT

DEV QA

STAGING

COMMIT

Процесс сборки

BUILD TESTS DEPLOY

Heroku

heroku git:clone -a my_app…git add .git commit -m "my first commit»git push heroku master

web: python app.py

Heroku

СкоростьПростотаГибкость

Множество модулейСтабильность

МультиязычностьHTTPSButtons

+

Heroku

Heroku Buttons

СкоростьПростотаГибкость

Множество модулейСтабильность

МультиязычностьHTTPSButtons

ЦенаОграничения

Время деплоя

+ -

Heroku

Минусы архитектуры

1) Очень дорого2) Невозможность одновременно смотреть разные feature ветки3) Нет возможности параллельного запуска тестов4) Безопасность5) Bamboo6) Долгий деплой

Решение: шаг первый - свой локальный сервер

Решение: шаг первый - свой локальный сервер

Корпус MicroATX Minitower Zalman ZM-T5 Black

Кулер Cooler Zalman CNPS2XБлок

питания 600W ZALMAN ZM600-LE

RAM 2 x DIMM 16Gb 2x8Gb KIT DDR3 PC12800 1600MHz Kingston

SSD 128Gb Samsung 850 Pro Series

Материнская плата

Gigabyte GA-B150M-D3H DDR3 B150 Socket-1151 4xDDR3

Процессор Intel Core i7-6700 Skylake (3.4GHz)

Решение: шаг первый - свой локальный сервер

Общая цена сервера: 56500 ≈ 785$

Цена старой архитектуры в месяц: 4*7+3*7+18*3+10=113$

Окупаемость - 7 месяцев

Решение: шаг первый - свой локальный сервер

Решение: шаг второй - локальный teamcity

Docker

docker run -d --name=teamcity-agent-1 --link teamcity:teamcity --privileged -e

TEAMCITY_SERVER=http://teamcity:8111 sjoerdmulder/teamcity-agent:latest

Docker

Решение: шаг второй - локальный teamcity

sjoerdmulder/teamcity-docker

sjoerdmulder/teamcity-agent

sjoerdmulder/teamcity-agent

sjoerdmulder/teamcity-agent

Сервер

Агент АгентАгент

Решение: шаг третий - Dokku

Решение: шаг третий - Dokku

COMMIT BUILD UNIT TESTS DEPLOY

Решение: шаг третий - Dokku

BACKEND

FRONTEND

WORKER

CONNECT

ADMINTOOL

UNITTESTS

UNITTESTS

UNITTESTS

DOKKUDEPLOY

LOCALWORKER

LOCALCONNECT

LOCALBACKEND

LOCALFRONTEND

LOCALADMIN TOOL

E2ETESTS

E2ETESTS

Старт

Dokku deploy

Передан ли branch name?

Существуют ли контейнеры для данного

брачна?

branch name

develop

нет

да

Создает сервера из сорцов в

репозиториях

Появились ли новые коммиты?

да

нет

Финишнет

Редиплой серверов с

новым кодомда

Решение: шаг третий - Dokku

Решение: шаг третий - Dokku

Решение: шаг четвертый - VPN

Решение: шаг четвертый - VPN

Решение: шаг пятый - Мониториг

Плюсы новой архитектуры

1) На много дешевле, чем старый вариант в перспективе2) Мы имеем столько конфигураций, сколько нам нужно3) Можно одновременно тестировать разные ветки4) Можем запускать тесты одновременно на разных

ветках5) Закрыто за vpn6) Скорость деплоя возросла в несколько раз7) Все приложения стали работать заметно быстрее8) Упростилась возможность потенциального расширения

Вопросы?

[email protected] +79166260768