Successfully reported this slideshow.
Your SlideShare is downloading. ×

Microsoft и Linux на одном проекте: как получить лучшее из обоих миров и не разорваться / Николай Суровенко (News360)

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad

Check these out next

1 of 35 Ad

Microsoft и Linux на одном проекте: как получить лучшее из обоих миров и не разорваться / Николай Суровенко (News360)

Download to read offline

2-3 года назад у нас был на 100% MS стек (Винда, Hyper-V, MSSQL, IIS, C#, WCF, Azure), и было не очень понятно, как продукт дальше развивать: C#, конечно, неплохой язык, но оставаться в рамках MS - слишком большие ограничения по выбору продуктов: чего-то на винде до сих пор нет (например, Докера), а для многих серверных продуктов рынок винды вторичен.

Получалось, что все понимают тупиковость ситуации, но продолжают тащить этот чемодан без ручки, потому что делать-то что-то надо. Переписать весь проект с нуля под новые технологии - это год работы вхолостую для бизнеса, и ни один инвестор в мире на такое не согласился бы.

Так вот, могу рассказать, как нам удалось постепенно выйти из этого тупика без остановки бизнес-девелопмента и переобучения всей команды на другой язык/платформу.

Сейчас у нас диверсифицированная система:
- виртуалки на винде и убунте. HA организуется силами Hyper-V и Rancher;
- несколько разных стораджей: Cassandra, Redis, MS SQL, PostgreSQL и Spark, который из всего этого зоопарка делает общую аналитику (нет, мы не ставили все подряд, они все нужны, зачем - расскажу);
- сервисы на C# и питоне, которые прекрасно общаются по общей шине и мы спокойно можем ждать выхода полноценного .net core еще пару лет.

И, предваряя вопрос - нет, на Mono или текущий .NET core без серьезного переписывания перейти зачастую нельзя. Мы - как раз тот случай.

2-3 года назад у нас был на 100% MS стек (Винда, Hyper-V, MSSQL, IIS, C#, WCF, Azure), и было не очень понятно, как продукт дальше развивать: C#, конечно, неплохой язык, но оставаться в рамках MS - слишком большие ограничения по выбору продуктов: чего-то на винде до сих пор нет (например, Докера), а для многих серверных продуктов рынок винды вторичен.

Получалось, что все понимают тупиковость ситуации, но продолжают тащить этот чемодан без ручки, потому что делать-то что-то надо. Переписать весь проект с нуля под новые технологии - это год работы вхолостую для бизнеса, и ни один инвестор в мире на такое не согласился бы.

Так вот, могу рассказать, как нам удалось постепенно выйти из этого тупика без остановки бизнес-девелопмента и переобучения всей команды на другой язык/платформу.

Сейчас у нас диверсифицированная система:
- виртуалки на винде и убунте. HA организуется силами Hyper-V и Rancher;
- несколько разных стораджей: Cassandra, Redis, MS SQL, PostgreSQL и Spark, который из всего этого зоопарка делает общую аналитику (нет, мы не ставили все подряд, они все нужны, зачем - расскажу);
- сервисы на C# и питоне, которые прекрасно общаются по общей шине и мы спокойно можем ждать выхода полноценного .net core еще пару лет.

И, предваряя вопрос - нет, на Mono или текущий .NET core без серьезного переписывания перейти зачастую нельзя. Мы - как раз тот случай.

Advertisement
Advertisement

More Related Content

Slideshows for you (20)

Viewers also liked (8)

Advertisement

Similar to Microsoft и Linux на одном проекте: как получить лучшее из обоих миров и не разорваться / Николай Суровенко (News360) (20)

More from Ontico (20)

Advertisement

Recently uploaded (20)

Microsoft и Linux на одном проекте: как получить лучшее из обоих миров и не разорваться / Николай Суровенко (News360)

  1. 1. Microsoft и Linux на одном проекте: как получить лучшее из обоих миров и не разорваться Николай Суровенко
  2. 2. Microsoft ? Linux
  3. 3. 2013
  4. 4. Мобильное приложение для персонализированных новостей • 6 лет на рынке • Microsoft Stack • Azure → Self-hosted
  5. 5. Из недавнего… RSS Crawler • MS SQL • 70K LOC C# Новый Crawler
  6. 6. Image Service • ImageMagick + • 40K LOC C# Из недавнего… RSS Crawler nginx + plugin Новый Crawler
  7. 7. Image Service Из недавнего… RSS Crawler Terrible Clustering • 10K LOC C# Streaming Clustering Новый Crawler nginx + plugin
  8. 8. Image Service Из недавнего… RSS Crawler Terrible Clustering Streaming Clustering Real-time Publisher Analytics Новый Crawler nginx + plugin
  9. 9. Image Service Из недавнего… RSS Crawler Terrible Clustering Streaming Clustering Real-time Publisher Analytics Новый Crawler nginx + plugin Text Categorization extras etc…
  10. 10. Почему не винда?
  11. 11. Почему не винда? Для Windows есть: o Python o PostgreSQL o docker o nginx o RabbitMQ o Spark o Cassandra
  12. 12. $7k 4 vCPU $12-24k per server
  13. 13. Плавная миграция
  14. 14. Архитектура3
  15. 15. Совместимость Плохие новости
  16. 16. WCF vs REST Или как победить в любом споре при помощи Google Trends
  17. 17. Совместимость HTTP REST SOAP
  18. 18. Совместимость IExtensibleprotobuf-net python performance
  19. 19. Совместимость Общие хранилища Общий кэш Consistency Levels Anti-entropy repair
  20. 20. Архитектура на низком уровне HTTP REST BinaryFormatter Общие хранилища, кэш
  21. 21. Микросервисы
  22. 22. Взаимодействие Конвейер Retry DLX Optional
  23. 23. Взаимодействие Клиенты — celery, EasyNetQ Exactly once delivery Exactly once delivery
  24. 24. Взаимодействие Общий Continuous Integration workflow Load tests?
  25. 25. Архитектура на высоком уровне Service Oriented Architecture Микросервисы Конвейер, гибкий pipeline Общий CI workflow Autodiscovery? Configuration management?
  26. 26. С чего начать С чего мы начинали Внутренние семинары • Технологии • Сommon pitfalls • Выход из vim
  27. 27. Как начать? Gateway drug: метрики, логи, мониторинг Holy wars
  28. 28. Архитектура на сверхвысоком уровне C# программистам нравится bash Общие инструменты — Grafana, ELK Нанимаем не только C#
  29. 29. Microsoft ? Linux
  30. 30. Наши админы: fevlake.com Контакты Николай Суровенко nsurovenko@news360.ru linkedin.com/in/nikolay-surovenko Тимлид группы персонализации News360

Editor's Notes

  • Linux = экосистема
  • Microsoft нужен = есть код, есть разработчики, есть опыт

    Linux = открытая экосистема, есть решения многих задач из коробки, мир аналитики больших данных и маленьких денег.

  • Пару-тройку лет назад у нас был только Microsoft Stack.

    Казалось что постепенно перейти на Linux stack невозможно.

    Мы горевали и думали:
    - в какие технологии инвестировать
    - кого нанимать
    - как получить все бенефиты открытой экосистемы не меняя всё, без простоя

    С одной стороны изолированный Microsoft, с другой стороны светлое будущее.
  • Перестали волноваться.

    Находимся посередине, получаем плюсы с обоих сторон.

    Доклад о том как нам удалось это совместить,

    Как перейти постепенно

    Что мы считаем важным в этом процессе и три составляющие успеха.
  • Но сначала о нас.

    Сотни тысяч разных топиков на которые вы можете подписаться.

    Бесконечный фид развлечений.

    Windows Stack, мы пробовали Azure

    Крутой state of the art код на C# для наших задач, Windows программисты с богатым опытом.

    За последние пару лет мы успешно внедрили массу открытых продуктов из linux мира.
  • Для примера несколько проектов

    Старый краулер переписали на базе scrapy — фреймворка для краулеров.
  • Тут есть всё— детекция лиц и smart crop, выбор размера и разрешения в зависимости от устройства, и т.д.

    Это набор сервисов + файловое хранилище, всё это мы заменили на файловое хранилище, nginx с плагином и облачный кеш.
  • Поточная кластеризация текстов — до этого у нас было 10 тысяч строк на C#, обратный индекс слов, функция близости полная бизнес-логики.

    Мы перешли на python + nltk + sklearn + gensim, out of core решение в 1000 строк, которому не нужно много ресурсов, а качество и performance мы можем контролировать.
  • Реалтайм веб-аналитика для паблишеров контента. Это наш новый проект, который мы разрабатывали с нуля. Apache Cassandra, Apache Spark.

    20М событий в день.

    Аналитика больших данных <3 Linux stack
  • Что объеденяет эти истории?

    - убрали код, осовременили
    - легче поддержка
    - использовали открытые реализации и не тратили время на свои велосипеды

    Кстати, время. Сроки были сорваны в два раза.

    + С переходом на новые технологии это ожидаемо
    + Сроки ничтожные! (кроме publisher analytics)
  • И почему винда?

    Если вы молоды и красивы, то вам нужно срочно развивать ваш стартап, а не пилить собственные велосипеды для уже решенных задач. В нашем случае, кроме инфраструктуры, краулеров и веб-серверов, у нас есть ещё и наукоемкая работа с текстами, и распределенная аналитика не самых мелких данных, сейчас здесь без Linux не обойтись.

  • Да потому что всё с ужасными костылями,
    И не является главной платфомой для всех этих продуктов.

    + ДЕНЬГИ
    + Искать windows developer’ов для NLP сложно

  • Windows Server стоит всего $800, но если >4 виртуалок, то Datacenter
  • Что мы решили делать.

    Просто переписать всё нельзя.

    Логика в Transact SQL.

    Крутой in-house NLP.
  • Начинаем с хранилищ данных

    Сервисы по-прежнему С#, но читают из новых хранилищ
  • Секрет успеха
  • WCF is dead
  • WCF очень крут и ничто не сможет его заменить. :’(

    Swagger+JSON нравится тестерам.

    Перейти на это на стороне C# очень просто: подключаем пару нагетов.

    +health checks, HAProxy, nginx

    Конечно, JSON’ом единым сыт не будешь.
  • Protobuf-net — странная штука. По-умолчанию не работает расширяемость.

    Т.е. deserialize => object => serialize теряет поля, про которые наша версия кода ничего не знает.
    Это можно исправить и тогда для обновления схемы не нужно обновлять сервисы.

    Python-performance — компилируем C-extensions.
  • Доступ к MSSQL из linux.

    Доступ к данным из всех сервисов.
    Соглашения о том как складывать и как кешировать данные — стандартизация наших сервисов на уровне хранилищ.

    Проблемы с распределенными системами:
    - eventual consistency
    - расхождение реплик
  • Общие рамки для успешного перехода на микросервисы:

    REST, swagger-спецификация как точка синхронизации команд
    Общие форматы
    Общие соглашения о хранении данных
  • Легко перейти, у нас и так была Service Oriented Architecture.

    Не все любят, но нам нравится.
  • У микросервисов много плюсов, все про них знают, нас интересуют два:

    - Можно завести зоопарк технологий (это теперь технически возможно)
    - Можно не переживать о выборе

    Кстати, приходите на наш практический мастеркласс по микросервисам.
  • Общая шина сообщений.

    Сервисы собираем в гибкие конвееры:
    - обработка ошибок
    - опциональные сервисы
    - шардинг

    Получаются сложные схемы.
  • Например такие.

    Админы умеют ими управлять.
  • Пишем сервисы:
    - идемпотентные – чтобы избежать проблем
    - желательно stateless

    Хорошо понимаем библиотеки — ack, retry политики.
  • Linux = docker
    Windows = сервисы по-старинке

    Через общий CI.
  • Общий CI workflow объединяет наш зоопарк.

    Общие рамки — хранилища, форматы, шины сообщений — секрет микросервисов. Свободы много, но не слишком.
  • Linux команды делятся опытом
    Семинары по технологиям и частым ошибкам
  • Посмотрите наш доклад про ELK!

    Начинайте внедрение с общего удобного инструментария.

    Избегайте холиваров при его выборе.
  • Начинаем с метрик и логов
    Проводим семинары
    Теперь нанимаем людей и без C#, ура!
  • Что дальше?
    - Docker для Windows и Windows Server 2016
    - .net Core
  • Вопросы!

×