Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Современная архитектура
Микросервисы, чистый PaaS и
конкурс мисс Россия
Александр Бындю
CEO, Byndyusoft
Цели
#msdevcon
Микросервисы Инструменты Чистый PaaS
Как управлять
микросервисной
архитектурой
На примере конкурса Мисс
Рос...
#msdevcon
Зачем бизнесу микросервисы
Почему начинается переход к микросервисной
архитектуре?
Цели бизнеса
Выбор лучшего решения для
бизнес-задачи без компромиссов
Нам нужна CRM
Покупаем SAP CRM
Но мы хотим SalesForc...
Цели бизнеса
Поставка бизнес-ценности как можно
быстрее
Переходим с SAP CRM на BPM Online
Интеграция нового решения займет...
Цели бизнеса
Дешево масштабировать сервисы, причем
только определенные и только когда это нужно
Сервис Тарификации к Черно...
АйТи берёт бизнес в заложники
«Монолитное» решение
становится вездесущим и
незаменимым для компании.
АйТи начинает диктова...
«Монолиты» берут компанию в заложники
UI
Business Logic
Database
Бизнес-функцию доработали, но она зависит от
других, поэт...
Бизнесу плохо живется с
«монолитами».
Чувствуется это только в
условиях высокой конкуренции.
Microservices,
Microservices,
Microservices!
Microservice
=
Business capability
Монолитом легко
управлять, а как
справиться с сотней
микросервисов?
IT-команда
Developing Microservices with Aggregates, Chris Richardson
«Монолит» простит вас за отсутствие
автоматизации и управляемости.
Сотня микросервисов за это жёстко накажет.
#msdevcon
Инструменты для управления
микросервисной архитектурой
API Gateway, Event bus, Service Discovery, iPaaS,
Contain...
API Gateway
http://microservices.io/patterns/apigateway.html
Единое место вызова API
Умеет:
1. Управление трафиком
2. Авто...
Легко заменяем
сервисы!
Постепенно убираем
монолит.
Масштабируем
нагрузку
Event bus
Единое место для
публикации событий
Асинхронное взаимодействие
Низкая связность сервисов
Горизонтально масштабир...
Легко заменяем
сервисы!
Постепенно убираем
монолит.
Масштабируем
нагрузку
Service Discovery
Подскажет, где запущен «живой»
экземпляр требуемого сервиса
Умеет:
1. Регистрировать сервисы в своей баз...
Легко масштабировать:
увеличивать и уменьшать
кол-во экземпляров
микросервиса
http://rabbitstack.github.io/cloud/microserv...
Containers, Orchestration, IaC
Изолированная среда для разворачивания
микросервиса
Умеет:
1. 100% автоматизация
2. Инфраст...
Полностью
автоматизированные
релизы и
масштабирование
Задачи архитектора:
 Добиться низкой связанности
микросервисов
 Правильно распределить
ответственность между
микросервис...
IT-команда
Заработаем
1. Достижение бизнес-целей:
◦ Гибкость в выборе решений
◦ Ускорение поставок новых функций
◦ Гибкое масштабиров...
Потратим
1. Вложение денег в переход
IT-инфраструктура, создание новых сервисов,
рефакторинг стартых сервисов
2. Переобуче...
Выбор лучшего
решения для
бизнес-задачи без
компромиссов
Microservices, Microservices, Microservices!
Поставка бизнес-
цен...
#msdevcon
Мисс Россия
В 40 раз быстрее за те же деньги и покупка
мощностей только на время конкурса
Конкурс Мисс Россия
• Проходит раз в год
• Отбор по всей стране
• Победительница едет
на Мисс Мира
97% трафика
750К голосов
Нагрузка
1. Форма голосования и
защита от накруток
2. Контент: текст, фото,
видео
Архитектура «монолита»
Проблемы прошлой версии сайта
1. Медленно открывался во время конкурса из-за перегрузки
2. Выдавал 500-ошибку на главной и...
Используем магию «облаков»!
Перенесли виртуалку на Azure… стало хуже
Как новой архитектурой достигнуть
бизнес-целей
1. Разделим приложение на (микро)ответственности
2. Каждая часть будет идеа...
Графики нагрузочных тестов
• Нагружали через сеть с пропускной способностью 1Гбит/с.
• После ~5450 RPS видим первые пробле...
.NET Core и Kestrel
Kestrel под нагрузкой отвечал кодом 502.3, приложение
падало и не оживало до перезапуска.
Проблема в в...
CDN
1. Картинки кэшируются на 7 суток,
HTML обновляется 1 раз в час.
2. JavaScrpit и CSS новых версий
автоматом попадают в...
CDN Akamai vs Verizone
1. Akamai усиливает партнерские отношения с Российскик
интернет провайдерами.
ТТК договорился с Aka...
WebApp
1. Web и API развернуты в отдельных WebApp
2. Во время конкурса на тарифе S3, после
конкурса на тарифе S1
3. При из...
SQL Database
Что хорошего:
1. Сервис автоматически выполняет
резервное копирование каждые 5
минут.
2. Легко масштабировать...
Service Bus vs Queue Storage
Требования к очереди:
• Обмен сообщениями небольшого размера с
коротким временем обработки;
•...
WebJob и проверка голосов
1. Горизонтальное
масштабирование очередей
2. Горизонтальное
масштабирование WebJob
3. Сложные и...
Service Fabric vs WebJob
WebJob
Для написания WebJob можно не
использовать специализированные SDK.
По сути WebJob — консол...
Continuous Delivery из коробки
1. При каждом пуше в Git-репозиторий в
ветку production начинается деплой
новой версии.
2. ...
Выводы
Кэширование позволило
99,7% пользователей
получить страницу
конкурса Мисс Россия
меньше, чем за одну
секунду.
Выводы
Грамотная архитектура позволяет:
• Давать больше ресурсов на нагруженные
части, меньше на ненагруженные.
• Убрать в...
Выводы
Стоимость новой инфраструктуры:
• Во время голосования равна предыдущей
версии (две недели в году).
• В другое врем...
Выбор лучшего
решения для
бизнес-задачи без
компромиссов
Microservices, Microservices, Microservices!
Поставка бизнес-
цен...
Полезные ресурсы
#msdevcon
Подробнее в моих статьях
1. Useful Tools for Managing Complexity of Microservice Architecture
2...
Полезные ресурсы
#msdevcon
База знаний о микросервисах
1. Microservices Resource Guide
Martin Fowler
2. Microservice archi...
Q&A
#msdevcon
Микросервисы, чистый PaaS и
конкурс мисс Россия
Александр Бындю
ceo@byndyusoft.com
http://byndyu.ru
Отзывы💖
Помогите нам стать лучше!
На вашу почту отправлена индивидуальная ссылка на электронную анкету.
Заполните анкету! ...
Микросервисы, чистый PaaS и конкурс Мисс Россия
Upcoming SlideShare
Loading in …5
×

Микросервисы, чистый PaaS и конкурс Мисс Россия

4,404 views

Published on

Выступление на DevCon, 21.04.2017, Москва
https://events.techdays.ru/Modern-Architecture/2017-04/schedule

Published in: Software
  • Be the first to comment

Микросервисы, чистый PaaS и конкурс Мисс Россия

  1. 1. Современная архитектура
  2. 2. Микросервисы, чистый PaaS и конкурс мисс Россия Александр Бындю CEO, Byndyusoft
  3. 3. Цели #msdevcon Микросервисы Инструменты Чистый PaaS Как управлять микросервисной архитектурой На примере конкурса Мисс Россия рассмотрим возможности Azure Зачем бизнесу микросервисы? Типовые проблемы монолита
  4. 4. #msdevcon Зачем бизнесу микросервисы Почему начинается переход к микросервисной архитектуре?
  5. 5. Цели бизнеса Выбор лучшего решения для бизнес-задачи без компромиссов Нам нужна CRM Покупаем SAP CRM Но мы хотим SalesForce  Надо брать SAP CRM, потому что SAP у нас уже есть, мы знаем, как с ним работать, интеграция проще, обновление проще и в целом SAP CRM неплохая CRM-ка Бизнес: IT: Бизнес: IT: Нам нужна CRM Какая CRM лучше всего решит ваши задачи? SalesForce! Ок, мы интегрируем SalesForce и текущей инфраструктурой на SAP Бизнес: IT: Бизнес: IT:
  6. 6. Цели бизнеса Поставка бизнес-ценности как можно быстрее Переходим с SAP CRM на BPM Online Интеграция нового решения займет полгода Почему так долго?  <Объясняют какая паутина взаимосвязей объединяет SAP CRM c остальными приложениями в компании> Бизнес: IT: Бизнес: IT: Переходим с SAP CRM на BPM Online За неделю переключим точки интеграции Что-то еще требуется для запуска? Еще надо перелить данные и дописать бизнес-функции, но это можно делать параллельно с запуском новой CRM Бизнес: IT: Бизнес: IT:
  7. 7. Цели бизнеса Дешево масштабировать сервисы, причем только определенные и только когда это нужно Сервис Тарификации к Черной пятнице должен выдерживать нагрузку в 2 раза больше обычной Надо купить в 4 раза больше железа и это даст ускорение на 30% Почему так дорого и совсем не в 2 раза?  Ускорение в 2 раза будет стоить как вся наша компания (прим. — при текущей архитектуре) Бизнес: IT: Бизнес: IT: Сервис Тарификации к Черной пятнице должен выдерживать нагрузку в 2 раза больше обычной Ок, сейчас нажмем пару кнопок и увеличим кол-во экземпляров сервиса, чтобы масштабировать нагрузку. Докупать что-то нужно? Ресурсы в облаке, но только на время нагрузки Бизнес: IT: Бизнес: IT:
  8. 8. АйТи берёт бизнес в заложники «Монолитное» решение становится вездесущим и незаменимым для компании. АйТи начинает диктовать бизнесу свои условия в выборе инструментов, сроков и подходов к решению. АйТи начальник
  9. 9. «Монолиты» берут компанию в заложники UI Business Logic Database Бизнес-функцию доработали, но она зависит от других, поэтому ждем «большой заливки»  Можно эту бизнес-функцию заменить другим решением, а остальное не трогать? Нет? Скидки Рассылки
  10. 10. Бизнесу плохо живется с «монолитами». Чувствуется это только в условиях высокой конкуренции.
  11. 11. Microservices, Microservices, Microservices!
  12. 12. Microservice = Business capability
  13. 13. Монолитом легко управлять, а как справиться с сотней микросервисов? IT-команда
  14. 14. Developing Microservices with Aggregates, Chris Richardson
  15. 15. «Монолит» простит вас за отсутствие автоматизации и управляемости. Сотня микросервисов за это жёстко накажет.
  16. 16. #msdevcon Инструменты для управления микросервисной архитектурой API Gateway, Event bus, Service Discovery, iPaaS, Containers + Orchestration
  17. 17. API Gateway http://microservices.io/patterns/apigateway.html Единое место вызова API Умеет: 1. Управление трафиком 2. Авторизация 3. Мониторинг 4. Горизонтальное масштабирование 5. Управления версиями 6. Кэш запросов 7. Трансформация ответов 1
  18. 18. Легко заменяем сервисы! Постепенно убираем монолит. Масштабируем нагрузку
  19. 19. Event bus Единое место для публикации событий Асинхронное взаимодействие Низкая связность сервисов Горизонтально масштабируется 2
  20. 20. Легко заменяем сервисы! Постепенно убираем монолит. Масштабируем нагрузку
  21. 21. Service Discovery Подскажет, где запущен «живой» экземпляр требуемого сервиса Умеет: 1. Регистрировать сервисы в своей базе 2. Проверять «жив» ли каждый экземпляр сервиса 3. Балансирование нагрузки между экземплярами одного сервиса http://microservices.io/patterns/server-side-discovery.html 3
  22. 22. Легко масштабировать: увеличивать и уменьшать кол-во экземпляров микросервиса http://rabbitstack.github.io/cloud/microservices/from-monolithic-to-cloud-native-architectures/
  23. 23. Containers, Orchestration, IaC Изолированная среда для разворачивания микросервиса Умеет: 1. 100% автоматизация 2. Инфраструктура, описанная кодом: сравнение, расшаривание, повторяемость при развертывании 3. Создание нужного окружения за несколько минут 4. Управление сотнями контейнеров на множестве серверов 5. Поддержка в Azure и AWS 6. Serverless
  24. 24. Полностью автоматизированные релизы и масштабирование
  25. 25. Задачи архитектора:  Добиться низкой связанности микросервисов  Правильно распределить ответственность между микросервисами  Добиться полной автоматизации
  26. 26. IT-команда
  27. 27. Заработаем 1. Достижение бизнес-целей: ◦ Гибкость в выборе решений ◦ Ускорение поставок новых функций ◦ Гибкое масштабирование сервисов 2. Меньше людей, которые делают ручную работу 3. Меньше железа, которое не приносит деньги
  28. 28. Потратим 1. Вложение денег в переход IT-инфраструктура, создание новых сервисов, рефакторинг стартых сервисов 2. Переобучение сотрудников 3. Изменение орг. структуры 4. Дорогие специалисты с новыми знаниями 5. Риск ошибиться в выборе микросервисов
  29. 29. Выбор лучшего решения для бизнес-задачи без компромиссов Microservices, Microservices, Microservices! Поставка бизнес- ценности как можно быстрее Дешево масштабировать сервисы
  30. 30. #msdevcon Мисс Россия В 40 раз быстрее за те же деньги и покупка мощностей только на время конкурса
  31. 31. Конкурс Мисс Россия • Проходит раз в год • Отбор по всей стране • Победительница едет на Мисс Мира
  32. 32. 97% трафика 750К голосов
  33. 33. Нагрузка 1. Форма голосования и защита от накруток 2. Контент: текст, фото, видео
  34. 34. Архитектура «монолита»
  35. 35. Проблемы прошлой версии сайта 1. Медленно открывался во время конкурса из-за перегрузки 2. Выдавал 500-ошибку на главной и голосовании при перегрузки любой части системы 3. Только вертикальное масштабирование
  36. 36. Используем магию «облаков»! Перенесли виртуалку на Azure… стало хуже
  37. 37. Как новой архитектурой достигнуть бизнес-целей 1. Разделим приложение на (микро)ответственности 2. Каждая часть будет идеально исполнять свою роль 3. Каждая часть будет заботиться о своем масштабировании 4. Тотальная автоматизация
  38. 38. Графики нагрузочных тестов • Нагружали через сеть с пропускной способностью 1Гбит/с. • После ~5450 RPS видим первые проблемы с ответами сервера. • Время ответа не превышало 1000 мс.
  39. 39. .NET Core и Kestrel Kestrel под нагрузкой отвечал кодом 502.3, приложение падало и не оживало до перезапуска. Проблема в версии Kestrel (версия 1.1.0): • https://github.com/aspnet/IISIntegration/issues/323 • https://github.com/aspnet/IISIntegration/issues/311 Проблема ушла после выхода пакета Microsoft.AspNetCore.Server.Kestrel v1.1.1
  40. 40. CDN 1. Картинки кэшируются на 7 суток, HTML обновляется 1 раз в час. 2. JavaScrpit и CSS новых версий автоматом попадают в CDN, каждая версия кэшируется отдельно. 3. Включено сжатие. 4. Можно вручную сбросить кэш. 5. Поддерживает только домены 3-го уровня missrussia.ru -> www.missrussia.ru
  41. 41. CDN Akamai vs Verizone 1. Akamai усиливает партнерские отношения с Российскик интернет провайдерами. ТТК договорился с Akamai Technologies, Inc. на размещение на новом узле оператора в Москве кеш-серверов CDN-провайдера. (источник: http://www.comnews.ru/node/80287#ixzz4eUkmQKPe) 2. Быстрое развертывание нового endpoint-а: • ~1 минута на Akamai • >90 минут на Verizone
  42. 42. WebApp 1. Web и API развернуты в отдельных WebApp 2. Во время конкурса на тарифе S3, после конкурса на тарифе S1 3. При изменении нагрузки: • Scale Up: повышать/понижать мощность сменой тарифа • Scale Out: увеличивать кол-во инстансов
  43. 43. SQL Database Что хорошего: 1. Сервис автоматически выполняет резервное копирование каждые 5 минут. 2. Легко масштабировать за пару кликов как вверх так и вниз. 3. Управление через веб-интерфейс. 4. Легко настраиваются различные алерты. До 50 rps с тарифом Standard 0
  44. 44. Service Bus vs Queue Storage Требования к очереди: • Обмен сообщениями небольшого размера с коротким временем обработки; • Отсутствие необходимости в транзакциях и поддержки очередности обработки сообщений; • Наличие клиента под .NET Core. Решение проблем с производительностью: • Подняли очереди в том же регионе, что и WebApi; • Увеличили мощность серверов с WebApi; • Зарегистрировали клиент Service Bus как Singleton.
  45. 45. WebJob и проверка голосов 1. Горизонтальное масштабирование очередей 2. Горизонтальное масштабирование WebJob 3. Сложные и тяжелые проверки «накруток» масштабировались, не влияя на основной сайт. 4. Выключаются из инфраструктуры (платы) после голосования.
  46. 46. Service Fabric vs WebJob WebJob Для написания WebJob можно не использовать специализированные SDK. По сути WebJob — консольное приложение и деплоить его достаточно просто. Service Fabric Для работы через Service Fabric под .NET Core нужно устанавливать SDK из специального репозитория Ubuntu. Это создает проблемы и при деплое и при разработке. https://github.com/Azure/azure-content- ruru/blob/master/articles/service- fabric/service-fabric-create-your-first-linux- application-with-java.md Остальные статьи по этой теме предлагали использовать .NET Framework v4.5.2, что для нас было не приемлемо.
  47. 47. Continuous Delivery из коробки 1. При каждом пуше в Git-репозиторий в ветку production начинается деплой новой версии. 2. Web, API и сервисы голосования собираются и разворачиваются независимо. 3. Каждый деплой можно отследить через панель Azure, посмотреть лог процесса и, в случае необходимости, переразвернуть предыдущие версии.
  48. 48. Выводы Кэширование позволило 99,7% пользователей получить страницу конкурса Мисс Россия меньше, чем за одну секунду.
  49. 49. Выводы Грамотная архитектура позволяет: • Давать больше ресурсов на нагруженные части, меньше на ненагруженные. • Убрать влияние частей системы друг на друга. • Под каждую часть выделяются ресурсы только тогда, когда это требуется.
  50. 50. Выводы Стоимость новой инфраструктуры: • Во время голосования равна предыдущей версии (две недели в году). • В другое время в 3 раза дешевле.
  51. 51. Выбор лучшего решения для бизнес-задачи без компромиссов Microservices, Microservices, Microservices! Поставка бизнес- ценности как можно быстрее Дешево масштабировать сервисы
  52. 52. Полезные ресурсы #msdevcon Подробнее в моих статьях 1. Useful Tools for Managing Complexity of Microservice Architecture 2. Clouds, iPaaS, Citizen Integrator and Why India’s Outsourcing Is Losing Money 3. Стратегия крупного ретейлера по изменению IT-архитектуры и процессов
  53. 53. Полезные ресурсы #msdevcon База знаний о микросервисах 1. Microservices Resource Guide Martin Fowler 2. Microservice archite`cture patterns and best practices Chris Richardson
  54. 54. Q&A #msdevcon Микросервисы, чистый PaaS и конкурс мисс Россия Александр Бындю ceo@byndyusoft.com http://byndyu.ru
  55. 55. Отзывы💖 Помогите нам стать лучше! На вашу почту отправлена индивидуальная ссылка на электронную анкету. Заполните анкету! Нам очень важно ваше мнение. #msdevcon Оставляйте отзывы в социальных сетях. Мы все читаем. Спасибо вам! 

×