82
Инфраструктура Инфраструктура

SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе

  • Upload
    secon

  • View
    229

  • Download
    4

Embed Size (px)

Citation preview

Page 1: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе

ИнфраструктураИнфраструктура

Page 2: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе

Рождение "Мое Дело"(MD 0.1.alpha)

Page 3: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе

Инфраструктура "Мое Дело"

Page 4: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе

Основные "подходы" к разработке• Ручная сборка кода программистами

• Ручной деплой в production

• Скрипты по почте

• Отсутствие возможности отката "версии"

• Отсутствие должного тестирования

• Ручное отключение сервиса на релиз (раз в неделю)

Page 5: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе

Мелкие шалости(MD 0.2.alpha)

Page 6: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе

Инфраструктура "Мое Дело"

Page 7: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе

Что мы имели на тот момент...• Терминирование SSL трафика на Nginx

• Частичный перенос бизнес логики на Nginx

Не имели, но очень хотелось :)• Мониторинг

• Логирование ошибок

Page 8: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе

Подходы к разработке сохранялись :)

Page 9: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе

Первые шаги в большом мире(MD 1.0.RELEASE)

Page 10: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе

Инфраструктура "Мое Дело"

Page 11: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе

Темная сторона "Мое Дело"• Распределение нагрузки (IP hash)

• Синхронизация контента между узлами

• Обслуживание узлов "кластера"

• Долгие релизы продолжались :(

Page 12: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе

Светлая сторона "Мое Дело"• Выделение QA как отдельного направления разработки

• Значительный рост команды

• Каждой команде "по тестовому серверу"

• Новый офис!!!

• Ломались подходы к разработке :)

Page 13: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе

Новая игрушка (Teamcity)• Версионность сборок (pack)

• Автоматизированная выкладка (deploy)

• Автоматическое тестирование (unit тесты)

• Обслуживание инфраструктуры (maintenance)

• Централизованное хранилище nuget пакетов

• Выключение сервиса "для чужих"

Page 14: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе

Работа над ошибками (первая двойка в четверти)

(MD 1.0.1.BUGFIX)

Page 15: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе

Сколько времени потребуется

на синхронизацию 1 000 000 файлов

между 2 серверами?

Page 16: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе

Сколько времени потребуется

на синхронизацию 5 000 000 файлов

между 10 серверами?

Page 17: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе

Новая животинка "Мое Дело"

Кто это? монгогрид или гридомонг?

Page 18: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе

Давайте накормим нашего нашу животинку...

И что мы видим???

Page 19: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе

Животинка вдруг выросла, да еще мутировала

Вот теперь это точно породистый реплисетовый гридомонг.

Page 20: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе

Не ошибается лишь тот, кто ничего не делает

(MD 2.0.RELEASE)

Page 21: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе

Мы снова переехали :)

Page 22: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе

Инфраструктура "Мое Дело"

Page 23: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе

Continious integrationTeamcity

Page 24: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе

Где мы используем Teamcity?• Прогон Unit тестов

• Build, Pack, Deploy приложения

• Прогон миграций

• Небольшое обслуживание инфраструктуры (Recycle, Server maintenance)

• Continious Inspection (SonarQube)

• Сборка Nuget пакетов

• Сборка npm пакетов

• Прогон автоматизированных тестов (Selenium)

Page 25: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе

Разбираемся с возможностями Teamcity• MSBuild

• Bash

• Windows CMD

• Powershell

• Plugins (Artifact Deployer, Node.js build runner)

• MetaRunner

• Teamcity Rest API

Page 26: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе

Hot (Re)DeployMD 3.0.RELEASE

Page 27: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе

Мы больше не увидим Андрюшу :(

Page 28: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе
Page 29: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе

Back-endBack-end

Page 30: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе

• CVSC

• Сборка на локальных машинах

• Прямое изменение структуры БД + mail-sharing

• Нет системы логирования

• Нет мониторинга

Page 31: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе

VCS• SVN (1 repo)

Page 32: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе

VCS• SVN (1 repo)

Page 33: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе

VCS• SVN (1 repo)

• TFS (1 repo)

Page 34: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе

VCS• SVN (1 repo)

• TFS (1 repo)

Page 35: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе

VCS• SVN (1 repo)

• TFS (1 repo)

• TFS (10-12 repo)

Page 36: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе

VCS• SVN (1 repo)

• TFS (1 repo)

• TFS (10-12 repo)

• Git (10-12 repo)

Page 37: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе

VCS• SVN (1 repo)

• TFS (1 repo)

• TFS (10-12 repo)

• Git (10-12 repo)

• Git (50+ repo)

Page 38: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе

Repo• Функциональные репозитории (бизнес код, общая схема именования

проектов и sln-файлов)

• Нефункциональные репозитории (полезные скрипты, общие

конфигурации codestyle и т.п.)

Page 39: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе

md-ci• Обновление локальных репозиториев

• Сборка бекенда

• Сборка фронтенда

• Инициализация структуры БД

• Обновление структуры БД

• Маппинг приложений на сайты IIS

• Запуск IIS

Page 40: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе
Page 41: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе
Page 42: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе
Page 43: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе
Page 44: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе

Continuous Integration

Page 45: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе

TeamCity (http://www.jetbrains.com/teamcity)

Page 46: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе

Continuous Integration

Page 47: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе

Continuous Integration

Page 48: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе

Continuous Integration

Page 49: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе

Continuous Integration

Page 50: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе

Microservices

Page 51: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе

Microservices

Page 52: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе

Database migrations• ручное редактирование БД иключено

• обновление состояния БД на всех окружениях

• единоразовое выполнение каждого изменения

• строго предустановленный порядок изменений

• получение изменений БД между версиями

• откат БД на более раннюю версию

Page 53: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе

Database migrationsFluent Migrations

http://www.github.com/schambers/fluentmigrator

Page 54: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе

Database migrations

Page 55: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе

Database migrations

Page 56: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе

Loggly (http://www.loggly.com)

Page 57: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе

NewRelic (http://www.newrelic.com)

Page 58: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе
Page 59: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе

Front-endFront-end

Page 60: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе
Page 61: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе

Новорожденный• Мало скриптов

• Мало стилей

• Js/css файлы лежат вместе с серверным кодом

• Js/css подключаются напрямую в html

• Нет ни ci, ни минификации, файлы загружатся по ftp

Page 62: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе
Page 63: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе

Мы идем в детский сад• Резкий рост количества файлов

• Combres - для минификации и бандлов

• Less вместо css

• Js/css файлы все еще в серверном проекте

• Подключение в html через api Combress

• Появляется ci. Файлы пакуются и диплоются вместе с серверным кодом.

Page 64: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе
Page 65: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе

Школьник• Нет Combres, Gulp - да

• Backbone

• Ядро статки(вендоры, общие стили, библиотеки и компоненты)

• Клиентский код вынесен из серверного проекта в отдельное место

Page 66: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе
Page 67: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе
Page 68: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе
Page 69: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе
Page 70: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе

Студент• Добавили версионность статики и ядра

• Marionette.js

• CDN

Page 71: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе
Page 72: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе

Невеста• Для сборки нового кода используется Webpack

• ESnext (ES6)

Page 73: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе

Невеста• Для сборки нового кода используется Webpack

• ESnext (ES6)

• PostCss

Page 74: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе

Невеста• Для сборки нового кода используется Webpack

• ESnext (ES6)

• PostCss

• Компонентный подход

Page 75: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе

Невеста• Для сборки нового кода используется Webpack

• ESnext (ES6)

• PostCss

• Компонентный подход

• MD-framework

Page 76: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе

Невеста• Для сборки нового кода используется Webpack

• ESnext (ES6)

• PostCss

• Компонентный подход

• MD-framework

• JSCS / Eslint

Page 77: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе

Невеста• Для сборки нового кода используется Webpack

• ESnext (ES6)

• PostCss

• Компонентный подход

• MD-framework

• JSCS / Eslint

• Ядро 2.0

Page 78: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе
Page 79: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе

Мы съезжаем• Отдельный репозиторий и отдельная сборка в TC (back-end и front-end

независимые)

• Скрипты для сборки gulp/webpack - npm пакеты

• Ядро статики - npm пакет

• Npm скрипты

Page 80: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе

npm start

Page 81: SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура и бизнес всегда растут вместе

Спасибо за внимание!