SlideShare a Scribd company logo
1 of 27
Lamoda приехала!
В контейнерах.
О том, как мы переходим на докер.
Александр
Афенов
Senior
developer
Lamoda
Кто мы?
IT в Lamoda
• Подразделения в Москве и Вильнюсе
• ~300 сотрудников
• In-house разработка 60+ проектов
Команда bobcat
• Сервис order processing
Наши проекты:
• Сайт
• Мобильные приложения (Android, iOS)
• Система управления складом
• Менеджмент адресных объектов
• Автоматизация работы собственной службы доставки
• Сервис по взаимодействию с внешними курьерками
• Система рекомендаций
• Автоматизация работы студии
• Процессинг заказов
• Сервис оплаты
• …
Мы используем:
О процессе разработки:
• Pull request
• Code review
• Тестирование
Предпосылки к докеризации
Разница между окружениями
BLACK FRIDAY
Разделение ответственности
• Администраторы отвечают за железо и сеть
• Разработчики отвечают за программное обеспечение
• Любая система легко декомпозируется
Выбор программного обеспечения
Выбор service discovery
Consul / ZooKeeper
Выбор оркестратора
Kubernetes Mesosphere Nomad
Синхронизация балансера и Consul
Nginx+
Service instance 1 Service instance 2 Service instance N
CONSUL
traefik
Service instance 1 Service instance 2 Service instance N
CONSUL
Возникшие трудности
О логировании
• Логи приложения
• Access-логи
• Логи обменов
Fallback
balancer
Order processing
instance
CREATE ORDER
MySQL Cluster
connect
I’ve gone away
HTTP 500
Fallback
OpenResty: nginx & LuaJIT
Файловые маунты
S3 / Ceph
Cronjobs
Nomad scheduler vs application container
Итоги
• Единообразное окружение на бою, в тестировании и
разработке
• Упрощение отладки и воспроизведения проблем
• Разработчики не думают о железе
• Системные администраторы не касаются работы ПО
• Простота технического аудита систем
https://www.nomadproject.io/
https://www.nginx.com/products/
https://traefik.io/
https://openresty.org
http://ceph.com/
Александр
Афенов
Senior
developer
Lamoda
Вопросы?
www.tech.lamoda.rualeksandr.afenov@lamoda.ru
Кейс
Swiftmailer tricky failure

More Related Content

What's hot

«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банкit-people
 
Владимир Никонов "Вызовы при разработке enterprise продукта"
Владимир Никонов "Вызовы при разработке enterprise продукта"Владимир Никонов "Вызовы при разработке enterprise продукта"
Владимир Никонов "Вызовы при разработке enterprise продукта"Fwdays
 
Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance"
Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance"Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance"
Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance"Fwdays
 
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Coit-people
 
Порядок для скорости. Система структурирования фронтендовой части веб-приложе...
Порядок для скорости. Система структурирования фронтендовой части веб-приложе...Порядок для скорости. Система структурирования фронтендовой части веб-приложе...
Порядок для скорости. Система структурирования фронтендовой части веб-приложе...Ontico
 
Путь DevOps в «Parallels» / Константин Назаров (Parallels)
Путь DevOps в «Parallels» / Константин Назаров (Parallels)Путь DevOps в «Parallels» / Константин Назаров (Parallels)
Путь DevOps в «Parallels» / Константин Назаров (Parallels)Ontico
 
Андрей Чебукин "Построение успешных API"
Андрей Чебукин "Построение успешных API"Андрей Чебукин "Построение успешных API"
Андрей Чебукин "Построение успешных API"Fwdays
 
Платформа для поставки счастья в команду QA
Платформа для поставки счастья в команду QAПлатформа для поставки счастья в команду QA
Платформа для поставки счастья в команду QASlava Kuznetsov
 
RootConf 2015: Как Vagrant и Chef ускорили разработку в несколько раз
RootConf 2015: Как Vagrant и Chef ускорили разработку в несколько разRootConf 2015: Как Vagrant и Chef ускорили разработку в несколько раз
RootConf 2015: Как Vagrant и Chef ускорили разработку в несколько разTimur Batyrshin
 
Денис Иванов
Денис ИвановДенис Иванов
Денис ИвановCodeFest
 
Мониторинг быстродействия web-проекта / Владимир Буянов (Ultimate Guitar)
Мониторинг быстродействия web-проекта / Владимир Буянов (Ultimate Guitar)Мониторинг быстродействия web-проекта / Владимир Буянов (Ultimate Guitar)
Мониторинг быстродействия web-проекта / Владимир Буянов (Ultimate Guitar)Ontico
 
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...SECON
 
Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС
Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИСКак мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС
Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС2ГИС Технологии
 
OpenStack: от enterprise к сервис-провайдеру / Сергей Пимков (Селектел)
OpenStack: от enterprise к сервис-провайдеру / Сергей Пимков (Селектел)OpenStack: от enterprise к сервис-провайдеру / Сергей Пимков (Селектел)
OpenStack: от enterprise к сервис-провайдеру / Сергей Пимков (Селектел)Ontico
 
Test driven development in net
Test driven development in netTest driven development in net
Test driven development in netAlex Tumanoff
 
Кортунов Никита. Как ускорить разработку приложений или есть ли жизнь после P...
Кортунов Никита. Как ускорить разработку приложений или есть ли жизнь после P...Кортунов Никита. Как ускорить разработку приложений или есть ли жизнь после P...
Кортунов Никита. Как ускорить разработку приложений или есть ли жизнь после P...AvitoTech
 
Олег Савкин
Олег СавкинОлег Савкин
Олег СавкинCodeFest
 
Эволюция процесса деплоя в проекте — Денис Яковлев, 2ГИС
Эволюция процесса деплоя в проекте — Денис Яковлев, 2ГИСЭволюция процесса деплоя в проекте — Денис Яковлев, 2ГИС
Эволюция процесса деплоя в проекте — Денис Яковлев, 2ГИС2ГИС Технологии
 
Антон Галицын
Антон ГалицынАнтон Галицын
Антон ГалицынCodeFest
 

What's hot (19)

«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк
 
Владимир Никонов "Вызовы при разработке enterprise продукта"
Владимир Никонов "Вызовы при разработке enterprise продукта"Владимир Никонов "Вызовы при разработке enterprise продукта"
Владимир Никонов "Вызовы при разработке enterprise продукта"
 
Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance"
Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance"Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance"
Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance"
 
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
 
Порядок для скорости. Система структурирования фронтендовой части веб-приложе...
Порядок для скорости. Система структурирования фронтендовой части веб-приложе...Порядок для скорости. Система структурирования фронтендовой части веб-приложе...
Порядок для скорости. Система структурирования фронтендовой части веб-приложе...
 
Путь DevOps в «Parallels» / Константин Назаров (Parallels)
Путь DevOps в «Parallels» / Константин Назаров (Parallels)Путь DevOps в «Parallels» / Константин Назаров (Parallels)
Путь DevOps в «Parallels» / Константин Назаров (Parallels)
 
Андрей Чебукин "Построение успешных API"
Андрей Чебукин "Построение успешных API"Андрей Чебукин "Построение успешных API"
Андрей Чебукин "Построение успешных API"
 
Платформа для поставки счастья в команду QA
Платформа для поставки счастья в команду QAПлатформа для поставки счастья в команду QA
Платформа для поставки счастья в команду QA
 
RootConf 2015: Как Vagrant и Chef ускорили разработку в несколько раз
RootConf 2015: Как Vagrant и Chef ускорили разработку в несколько разRootConf 2015: Как Vagrant и Chef ускорили разработку в несколько раз
RootConf 2015: Как Vagrant и Chef ускорили разработку в несколько раз
 
Денис Иванов
Денис ИвановДенис Иванов
Денис Иванов
 
Мониторинг быстродействия web-проекта / Владимир Буянов (Ultimate Guitar)
Мониторинг быстродействия web-проекта / Владимир Буянов (Ultimate Guitar)Мониторинг быстродействия web-проекта / Владимир Буянов (Ultimate Guitar)
Мониторинг быстродействия web-проекта / Владимир Буянов (Ultimate Guitar)
 
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
 
Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС
Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИСКак мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС
Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС
 
OpenStack: от enterprise к сервис-провайдеру / Сергей Пимков (Селектел)
OpenStack: от enterprise к сервис-провайдеру / Сергей Пимков (Селектел)OpenStack: от enterprise к сервис-провайдеру / Сергей Пимков (Селектел)
OpenStack: от enterprise к сервис-провайдеру / Сергей Пимков (Селектел)
 
Test driven development in net
Test driven development in netTest driven development in net
Test driven development in net
 
Кортунов Никита. Как ускорить разработку приложений или есть ли жизнь после P...
Кортунов Никита. Как ускорить разработку приложений или есть ли жизнь после P...Кортунов Никита. Как ускорить разработку приложений или есть ли жизнь после P...
Кортунов Никита. Как ускорить разработку приложений или есть ли жизнь после P...
 
Олег Савкин
Олег СавкинОлег Савкин
Олег Савкин
 
Эволюция процесса деплоя в проекте — Денис Яковлев, 2ГИС
Эволюция процесса деплоя в проекте — Денис Яковлев, 2ГИСЭволюция процесса деплоя в проекте — Денис Яковлев, 2ГИС
Эволюция процесса деплоя в проекте — Денис Яковлев, 2ГИС
 
Антон Галицын
Антон ГалицынАнтон Галицын
Антон Галицын
 

Similar to Александр Афенов

Онлайн миграция контейнеров. Взгляд изнутри
Онлайн миграция контейнеров. Взгляд изнутриОнлайн миграция контейнеров. Взгляд изнутри
Онлайн миграция контейнеров. Взгляд изнутриJelastic Multi-Cloud PaaS
 
Jelastic PaaS for DevOps: Hybrid Cloud based on Microsoft Azure
Jelastic PaaS for DevOps: Hybrid Cloud based on Microsoft AzureJelastic PaaS for DevOps: Hybrid Cloud based on Microsoft Azure
Jelastic PaaS for DevOps: Hybrid Cloud based on Microsoft AzureDmitry Lazarenko
 
Микросервисный фронтенд
Микросервисный фронтендМикросервисный фронтенд
Микросервисный фронтендViacheslav Slinko
 
Микросервисный фронтенд / Вячеслав Слинько (ЦИАН)
Микросервисный фронтенд / Вячеслав Слинько (ЦИАН)Микросервисный фронтенд / Вячеслав Слинько (ЦИАН)
Микросервисный фронтенд / Вячеслав Слинько (ЦИАН)Ontico
 
"Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно..."Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно...it-people
 
Микросервисная архитектура на базе CoreOS и Kubernetes
Микросервисная архитектура на базе CoreOS и KubernetesМикросервисная архитектура на базе CoreOS и Kubernetes
Микросервисная архитектура на базе CoreOS и KubernetesDenis Izmaylov
 
Docker in Production with AWS ECS
Docker in Production with AWS ECSDocker in Production with AWS ECS
Docker in Production with AWS ECSDmitry Kataev
 
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)Ontico
 
Javascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только одинJavascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только одинSergey Xek
 
Microsoft , Azure и Drupal
Microsoft , Azure и DrupalMicrosoft , Azure и Drupal
Microsoft , Azure и DrupalPVasili
 
Как справиться с микросервисом
Как справиться с микросервисомКак справиться с микросервисом
Как справиться с микросервисомmimikadze
 
Архитектура программных систем на Node.js
Архитектура программных систем на Node.jsАрхитектура программных систем на Node.js
Архитектура программных систем на Node.jsTimur Shemsedinov
 
JSLab.Тимур Шемсединов. "Архитектура программных систем на Node.js"
JSLab.Тимур Шемсединов. "Архитектура программных систем на Node.js"JSLab.Тимур Шемсединов. "Архитектура программных систем на Node.js"
JSLab.Тимур Шемсединов. "Архитектура программных систем на Node.js"GeeksLab Odessa
 
Андрей Сибирёв "Ваше собственное облако — война за независимость"
Андрей Сибирёв "Ваше собственное облако — война за независимость"Андрей Сибирёв "Ваше собственное облако — война за независимость"
Андрей Сибирёв "Ваше собственное облако — война за независимость"Yandex
 
Daemons In Web on #devrus
Daemons In Web on #devrusDaemons In Web on #devrus
Daemons In Web on #devrusAlex Chistyakov
 
Обзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновОбзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновOntico
 
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только одинHappyDev
 
Jelastic для разработчиков ПО
Jelastic для разработчиков ПОJelastic для разработчиков ПО
Jelastic для разработчиков ПОDmitry Lazarenko
 
Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...
Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...
Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...Ontico
 

Similar to Александр Афенов (20)

Онлайн миграция контейнеров. Взгляд изнутри
Онлайн миграция контейнеров. Взгляд изнутриОнлайн миграция контейнеров. Взгляд изнутри
Онлайн миграция контейнеров. Взгляд изнутри
 
Jelastic PaaS for DevOps: Hybrid Cloud based on Microsoft Azure
Jelastic PaaS for DevOps: Hybrid Cloud based on Microsoft AzureJelastic PaaS for DevOps: Hybrid Cloud based on Microsoft Azure
Jelastic PaaS for DevOps: Hybrid Cloud based on Microsoft Azure
 
Микросервисный фронтенд
Микросервисный фронтендМикросервисный фронтенд
Микросервисный фронтенд
 
Микросервисный фронтенд / Вячеслав Слинько (ЦИАН)
Микросервисный фронтенд / Вячеслав Слинько (ЦИАН)Микросервисный фронтенд / Вячеслав Слинько (ЦИАН)
Микросервисный фронтенд / Вячеслав Слинько (ЦИАН)
 
"Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно..."Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно...
 
Микросервисная архитектура на базе CoreOS и Kubernetes
Микросервисная архитектура на базе CoreOS и KubernetesМикросервисная архитектура на базе CoreOS и Kubernetes
Микросервисная архитектура на базе CoreOS и Kubernetes
 
Docker in Production with AWS ECS
Docker in Production with AWS ECSDocker in Production with AWS ECS
Docker in Production with AWS ECS
 
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
 
Javascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только одинJavascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только один
 
Microsoft , Azure и Drupal
Microsoft , Azure и DrupalMicrosoft , Azure и Drupal
Microsoft , Azure и Drupal
 
Как справиться с микросервисом
Как справиться с микросервисомКак справиться с микросервисом
Как справиться с микросервисом
 
Архитектура программных систем на Node.js
Архитектура программных систем на Node.jsАрхитектура программных систем на Node.js
Архитектура программных систем на Node.js
 
JSLab.Тимур Шемсединов. "Архитектура программных систем на Node.js"
JSLab.Тимур Шемсединов. "Архитектура программных систем на Node.js"JSLab.Тимур Шемсединов. "Архитектура программных систем на Node.js"
JSLab.Тимур Шемсединов. "Архитектура программных систем на Node.js"
 
Андрей Сибирёв "Ваше собственное облако — война за независимость"
Андрей Сибирёв "Ваше собственное облако — война за независимость"Андрей Сибирёв "Ваше собственное облако — война за независимость"
Андрей Сибирёв "Ваше собственное облако — война за независимость"
 
Daemons In Web on #devrus
Daemons In Web on #devrusDaemons In Web on #devrus
Daemons In Web on #devrus
 
Обзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновОбзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий Насретдинов
 
Sivko
SivkoSivko
Sivko
 
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
 
Jelastic для разработчиков ПО
Jelastic для разработчиков ПОJelastic для разработчиков ПО
Jelastic для разработчиков ПО
 
Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...
Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...
Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...
 

More from CodeFest

Alexander Graebe
Alexander GraebeAlexander Graebe
Alexander GraebeCodeFest
 
Никита Прокопов
Никита ПрокоповНикита Прокопов
Никита ПрокоповCodeFest
 
Денис Баталов
Денис БаталовДенис Баталов
Денис БаталовCodeFest
 
Елена Гальцина
Елена ГальцинаЕлена Гальцина
Елена ГальцинаCodeFest
 
Александр Калашников
Александр КалашниковАлександр Калашников
Александр КалашниковCodeFest
 
Ирина Иванова
Ирина ИвановаИрина Иванова
Ирина ИвановаCodeFest
 
Marko Berković
Marko BerkovićMarko Berković
Marko BerkovićCodeFest
 
Денис Кортунов
Денис КортуновДенис Кортунов
Денис КортуновCodeFest
 
Александр Зимин
Александр ЗиминАлександр Зимин
Александр ЗиминCodeFest
 
Сергей Крапивенский
Сергей КрапивенскийСергей Крапивенский
Сергей КрапивенскийCodeFest
 
Сергей Игнатов
Сергей ИгнатовСергей Игнатов
Сергей ИгнатовCodeFest
 
Николай Крапивный
Николай КрапивныйНиколай Крапивный
Николай КрапивныйCodeFest
 
Alexander Graebe
Alexander GraebeAlexander Graebe
Alexander GraebeCodeFest
 
Вадим Смирнов
Вадим СмирновВадим Смирнов
Вадим СмирновCodeFest
 
Константин Осипов
Константин ОсиповКонстантин Осипов
Константин ОсиповCodeFest
 
Raffaele Rialdi
Raffaele RialdiRaffaele Rialdi
Raffaele RialdiCodeFest
 
Rene Groeschke
Rene GroeschkeRene Groeschke
Rene GroeschkeCodeFest
 
Иван Бондаренко
Иван БондаренкоИван Бондаренко
Иван БондаренкоCodeFest
 
Mete Atamel
Mete AtamelMete Atamel
Mete AtamelCodeFest
 
Алексей Акулович
Алексей АкуловичАлексей Акулович
Алексей АкуловичCodeFest
 

More from CodeFest (20)

Alexander Graebe
Alexander GraebeAlexander Graebe
Alexander Graebe
 
Никита Прокопов
Никита ПрокоповНикита Прокопов
Никита Прокопов
 
Денис Баталов
Денис БаталовДенис Баталов
Денис Баталов
 
Елена Гальцина
Елена ГальцинаЕлена Гальцина
Елена Гальцина
 
Александр Калашников
Александр КалашниковАлександр Калашников
Александр Калашников
 
Ирина Иванова
Ирина ИвановаИрина Иванова
Ирина Иванова
 
Marko Berković
Marko BerkovićMarko Berković
Marko Berković
 
Денис Кортунов
Денис КортуновДенис Кортунов
Денис Кортунов
 
Александр Зимин
Александр ЗиминАлександр Зимин
Александр Зимин
 
Сергей Крапивенский
Сергей КрапивенскийСергей Крапивенский
Сергей Крапивенский
 
Сергей Игнатов
Сергей ИгнатовСергей Игнатов
Сергей Игнатов
 
Николай Крапивный
Николай КрапивныйНиколай Крапивный
Николай Крапивный
 
Alexander Graebe
Alexander GraebeAlexander Graebe
Alexander Graebe
 
Вадим Смирнов
Вадим СмирновВадим Смирнов
Вадим Смирнов
 
Константин Осипов
Константин ОсиповКонстантин Осипов
Константин Осипов
 
Raffaele Rialdi
Raffaele RialdiRaffaele Rialdi
Raffaele Rialdi
 
Rene Groeschke
Rene GroeschkeRene Groeschke
Rene Groeschke
 
Иван Бондаренко
Иван БондаренкоИван Бондаренко
Иван Бондаренко
 
Mete Atamel
Mete AtamelMete Atamel
Mete Atamel
 
Алексей Акулович
Алексей АкуловичАлексей Акулович
Алексей Акулович
 

Александр Афенов

Editor's Notes

  1. Один из крупнейших e-commerce в России Предоставляем как услуги business to client Продаем одежду, обувь, аксессуары, храним миллионы товаров на собственных складах и складах партнеров и развозим как своей службой доставки Lamoda Express, так и при помощи внешних курьерских служб Так же представляем B2B услуги по размещению товаров других компаний на нашем сайте
  2. Москва – разработка оснвоных информационных систем Вильнюс – программное обеспечение для колл-центра часть системных администраторов
  3. СВОЙ САЙТ И МОБИЛЬНЫЙ САЙТ ПРИЛОЖЕНИЯ КОГДА-ТО БЫЛИ ЛИШЬ ВЬЮШКАМИ ДЛЯ МОБ САЙТА НО СЕЙЧАС МЫ КРУТЫЕ Управление складом: от банального подсчета KPI сотрудников до разработки прошивок для мобильных сканеров штрихкодов И автоматизации управления сортировщиками и конвеерами Синхронизация адресных объектов с внешними системами Своя доставка Курьерки – статусы, оповещения Обработка и хранение миллионов заказов Взаимодействие с сервисами оплаты
  4. Мы используем php7 / go в сервисах для пушей, питон в апи сайта и модуле по работе с купонами, в качестве хранилищ выступают постгре и мускуль, используем редис для кешей и счетчиков мониторинга, Solr в поиске, RabbitMQ для обмена сообщениями
  5. Для управления проектом, постановки задач и логирования времени используем Jira, код ворочаем в Stash Команда смотрит и одобряет (в идеале) pull request, после чего задача переходит в стадию тестирования. Именно на этом процессе остановимся чуть подробнее, так как желание его видоизменить – одна из предпосылок к докеризации. QA-специалист раскладывает ветку из стеша на своем личном стенде. И вот тут есть нюанс
  6. Теперь поговорим о том, что же такое докеризация и какие к этому были предпосылки Докер - это открытая платформа для доставки приложений, которая реализует концепцию контейнерной виртуализации И позволяет запустить ваше приложение в изолированных контейнерах, сэкономив ресурсы по сравнению с виртуальными машинами, работающими через гипервизор Одним из своих основных плюсов авторы докера называют устранение типовой проблемы «на моём компе все это работало правильно» именно об этом мы и поговорим чуть подробнее
  7. Нюанс. На определенном этапе сложилось расхождения на организационном уровне: поддержкой боевых и тестовых стендов занимались разные люди, что привело к расхождению инфраструктур. Стенд тестировщика в виртуалке на FreeBsd. Ветки раскладываются через jenkins, агент которого есть на каждой виртуалке. На бою cent os Таким образом закономерно появилось желание унифицировать окружение в разработке, тестировании и на бою. Разработчик при выполнении задачи и при отладке наблюдает состояние системы максимально приближенное к боевому. Это же касается и тестировщика, который в итоге получает на руки систему в виде множества контейнерор похожих на продакшен. И тут мы переходим к следующей причине, исторической
  8. Одна из отправных точек Что такое черная пятница Это крупнейший день распродаж в году, приходится на двадцатые числа ноября Вы могли слышать о таких событиях как «киберпонедельник» или «день холостяка» Для наших it-систем такой день означает одно: большой наплыв посетителей, многократный рост нагрузки по сравнению с любым другим днём года, необходимость Временно выделить дополнительные вычислительные ресурсы и многократно убедиться в том, что не возникнет проблем со стабильностью работы Имела место быть смена команд системных администраторов перед Черной пятницей несколько лет назад. Важно понимать, что для крупного e-commerce-проекта это один из важнейших дней в году, но сокращение «ЧП» появилось не просто так. Подобная акция – это серьезная проверка на прочность по части производительности и стабильности работы it-систем.
  9. Ребята решали задачу комплексно, не только готовясь к повышенным нагрузкам, но и стремясь перейти на новую концепцию: разграничить ответственность за железо и код между собою и разработкой. С переходом на докер-контейнеры каждый проект превратился в понятный набор простых «коробок», стало легче понять каков конечный набор компонентов для каждого конкретного проекта. При этом системные администраторы минимизируют свои столкновения с кодом: возникающие внутри контейнеров программные ошибки и изменение тех или иных метрик системы лежит в зоне ответственности разработчиков. Разработчикам же не нужно думать о железе или о том, какая версия операционки окажется на бою: всё под руками.
  10. Теперь поговорим о том, что же такое докеризация и какие к этому были предпосылки Докер - это открытая платформа для доставки приложений, которая реализует концепцию контейнерной виртуализации И позволяет запустить ваше приложение в изолированных контейнерах, сэкономив ресурсы по сравнению с виртуальными машинами, работающими через гипервизор Одним из своих основных плюсов авторы докера называют устранение типовой проблемы «на моём компе все это работало правильно» именно об этом мы и поговорим чуть подробнее
  11. Что такое service discovery Задача звучит достаточно просто: при появлении в вашей сети новой ноды, которая готова Предоставлять некие услуги, другие ноды должны иметь возможность узнать об этом и начать ею пользоваться Рассматривался вариант с ZooKeeper, но поддерживать его не хотелось из-за нелюбви к Java, и он не предоставлял достаточно удобного Инструментария для проверки живости сервисов в каждом из контейнеров, а с консулом у команды системных администраторов уже был опыт при Построении архитектуры колл-центра, поэтому выбор был недолгим
  12. В процессе докеризации неоднократно вставал вопрос выбора той или иной технологии. Одним из таких вопросов был выбор оркестратора – программного продукта, который управляет созданием, убиением и конфигурацией контейнеров кубенетс были экспериенты в кц и ламоде и все было очень клево если запускаешь на aws как только начинаешь мэйнтэйнить локально со своей сетью и прочим - адище даже удалось достичь юзабеьного состояния но были легаси-системы  нужно было как-то совместить эту инфраструктуру со старой, но не было решения мезосфера давайте с ней можно было совместить старую инфру с новой был план как это сделать правильно все хорошо кроме одного но тогда зукипер мезосфере кластер везде демона и везде много явы КАК Я УЖЕ ГОВОРИЛ зукупер поддерживать не хштелось В сухом остатке – Nomad, вместо котрого сначал вообще были шелл-скрипты, и который на настоящий момент полностью устраивает
  13. ПОДАВЛЯЮЩЕЕ БОЛЬШИНСТВО СИСТЕМ РАБОТАЕТ ПО HTTP И ПЕРЕД КАЖДЫМ БАЛАНСЕР Для того чтобы динамически изменять upstream исходя из данных от Consul потребовалось использовать nginx+ upstream api Nginx+ умеет работать с Consul по подписке Эта схема используется для продакшен-среды, для QA применяется traefik. Он позволяет реализовать полностью рабочую схему, но На наш взгляд недостаточно стабилен для боевого применения
  14. Эта схема используется для продакшен-среды, для QA применяется traefik. Он позволяет реализовать полностью рабочую схему, но На наш взгляд недостаточно стабилен для боевого применения
  15. Теперь поговорим о том, что же такое докеризация и какие к этому были предпосылки Докер - это открытая платформа для доставки приложений, которая реализует концепцию контейнерной виртуализации И позволяет запустить ваше приложение в изолированных контейнерах, сэкономив ресурсы по сравнению с виртуальными машинами, работающими через гипервизор Одним из своих основных плюсов авторы докера называют устранение типовой проблемы «на моём компе все это работало правильно» именно об этом мы и поговорим чуть подробнее
  16. Одна из проблем, возникших при переходе на докер – логирование. Сервис order processing, разработкой которого я занимаюсь, пишет три основных типа логов: информацию о работе приложения Access-логи и, самое интересное, логи обменов По долгу службы мы взаимодействуем со многими внешними и внутренними системами, и для того чтобы оперативно И достоверно восстановить ход событий, нам нужно иметь под рукой полную информацию об обменах Например, мы послали на склад оповещение о том, что заказ, в общем-то, пора собирать, и склад ответил ошибкой. Ранее эта информация клалась в базу данных, что было очень удобно: мы ведь это ещё и выводим в веб-интерфейс, но Со временем база стала распухать и мы перешли на elk: elastic search + logstash + kibana Проблемой стало то, что данных мы передаем очень много, и в stdout записывать их не получилось, так как они обрезались по длине около 2к символов, на выходе fluent пишущий в syslog
  17. Пока мы не ушли далеко от темы балансеров, упомяну один интересный момент Есть случаи в которых приложение пятисотит, но позволить себе это проигнорировать мы просто не можем Самый яркий пример такого случая: post-запрос на создание заказа Возможны различные варианты, каждый из которых по-своему плох для бизнеса, ведь мы теряем деньги Заказ не был создан – мы потеряли клиента Заказ был создан, приложение ответило некорректно, пришел повторный запрос, мы получили дубликат заказа, это, честно говоря, ничем не лучшев
  18. В итоге было принято решение сохранять заказы (запросы на их создание) любой ценой, и с этой целью был сделан fallback на базе Nginx + openresty. Lua-скрипт складирует проблемные запросы, чтобы мы потом могли разобраться и при необходимости переотправить их
  19. Сервис обработки заказов работает с различными файлами, например генерирует для клиентов pdf-файлы Для оформления возврата товара, к нам загружают различные отчеты, сканы и так далее. Хранить всё это в файловой системе контейнеров мы не можем ввиду её мгновенной и невозвратной смертности, Каждый раз разворачиваются на разных нодах, мы не стали использовать докеровские маунты и реализовали в приложении поддержку s3 С настоящего момента мы можем лить файлы в облако, а можем (и так и делаем) использовать развернутый у себя Ceph – платформу для организации хранения и доступа к данным
  20. В системе много крон-задач, так как регулярно нужно ходить во внешние системы и что-то запрашивать, Разгребать очереди и так далее Изначально использовалась схема 1-крон – 1 контейнер и шедулинг на уровне Nomad К настоящему моменту от неё отказались в пользу одного контейнера со всеми кронами. Каждый крон записывает в базу информацию о локе, так что несколько параллельно работающих контейнеров с кронами не берут одни и те же задачи
  21. Рассказать о кейсе про base64