36-ая встреча IT talk Spb (18/02/2016)
«Microservices. Как правильно делать и когда применять?»
Вячеслав Михайлов, Solutions Architect, DataArt
http://it-talk.dataart.ru/events/events-spb/2016/02/priglashaem-druzej-na-36-j-it-talk-v-peterburge/
Dive into this topic by reading our eBook all about lump sum: http://resources.urbanbound.com/ebook-new-lump-sum-new-generation
Lump sum is a popular method for businesses to use to supplement various aspects of their transferees' relocations.
The problem is—it can get pretty complicated.
Learn about why moving this process online is so critical, as it will not only make your jobs easier, it will make the process quick and seamless for your transferees as well.
Dive into this topic by reading our eBook all about lump sum: http://resources.urbanbound.com/ebook-new-lump-sum-new-generation
Lump sum is a popular method for businesses to use to supplement various aspects of their transferees' relocations.
The problem is—it can get pretty complicated.
Learn about why moving this process online is so critical, as it will not only make your jobs easier, it will make the process quick and seamless for your transferees as well.
Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)Ontico
Начав разработку нового продукта через микросервисы, мы неожиданно для себя обнаружили, что микросервисы — это не просто "вместо одного большого приложения теперь пишем много маленьких". При разработке большой системы она сама собой через какое-то время становится набором отдельных сервисов, которые должны взаимодействовать между собой, поэтому стабильная работа сервисов и их взаимодействие не стало чем-то новым. Неожиданностью стало то, что система стала значительно более динамической, она стала постоянно изменяться отдельными небольшими частями, сервисы стали часто перезапускаться, а количество запущенных нод сервисов стало расти по экспоненте.
Очень быстро стал актуальным вопрос конфигурирования — если раньше, выкатив новую версию монолита с единым конфигом, мы применяли правки на всю систему сразу, то с микросервисами все сложнее — пара сотен работающих нод и всем нужно применить изменения. Требования к деплою также поменялись — он стал частью процесса разработки, а тестирование стало частью деплоя. Количество необходимого ПО для функционирования системы также стало некоторым сюрпризом.
В докладе я расскажу о том, как в итоге это работает у нас, как мы решили такие вопросы как:
- конфигурирование сервисов;
- интеграция между собой;
- тестирование;
- версионирование;
- масштабирование.
Расскажу, какие тулзы мы в итоге используем, а от каких отказались.
Чему мы научились разрабатывая микросервисы?Vadim Madison
Доклад с конференции Backend Conf 2016
Начав разработку нового продукта через микросервисы, мы неожиданно для себя обнаружили, что микросервисы — это не просто "вместо одного большого приложения теперь пишем много маленьких". При разработке большой системы она сама собой через какое-то время становится набором отдельных сервисов, которые должны взаимодействовать между собой, поэтому стабильная работа сервисов и их взаимодействие не стало чем-то новым. Неожиданностью стало то, что система стала значительно более динамической, она стала постоянно изменяться отдельными небольшими частями, сервисы стали часто перезапускаться, а количество запущенных нод сервисов стало расти по экспоненте.
Очень быстро стал актуальным вопрос конфигурирования — если раньше, выкатив новую версию монолита с единым конфигом, мы применяли правки на всю систему сразу, то с микросервисами все сложнее — пара сотен работающих нод и всем нужно применить изменения. Требования к деплою также поменялись — он стал частью процесса разработки, а тестирование стало частью деплоя. Количество необходимого ПО для функционирования системы также стало некоторым сюрпризом.
В докладе я расскажу о том, как в итоге это работает у нас, как мы решили такие вопросы как:
- конфигурирование сервисов;
- интеграция между собой;
- тестирование;
- версионирование;
- масштабирование.
Расскажу, какие тулзы мы в итоге используем, а от каких отказались.
Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)Ontico
Начав разработку нового продукта через микросервисы, мы неожиданно для себя обнаружили, что микросервисы — это не просто "вместо одного большого приложения теперь пишем много маленьких". При разработке большой системы она сама собой через какое-то время становится набором отдельных сервисов, которые должны взаимодействовать между собой, поэтому стабильная работа сервисов и их взаимодействие не стало чем-то новым. Неожиданностью стало то, что система стала значительно более динамической, она стала постоянно изменяться отдельными небольшими частями, сервисы стали часто перезапускаться, а количество запущенных нод сервисов стало расти по экспоненте.
Очень быстро стал актуальным вопрос конфигурирования — если раньше, выкатив новую версию монолита с единым конфигом, мы применяли правки на всю систему сразу, то с микросервисами все сложнее — пара сотен работающих нод и всем нужно применить изменения. Требования к деплою также поменялись — он стал частью процесса разработки, а тестирование стало частью деплоя. Количество необходимого ПО для функционирования системы также стало некоторым сюрпризом.
В докладе я расскажу о том, как в итоге это работает у нас, как мы решили такие вопросы как:
- конфигурирование сервисов;
- интеграция между собой;
- тестирование;
- версионирование;
- масштабирование.
Расскажу, какие тулзы мы в итоге используем, а от каких отказались.
Чему мы научились разрабатывая микросервисы?Vadim Madison
Доклад с конференции Backend Conf 2016
Начав разработку нового продукта через микросервисы, мы неожиданно для себя обнаружили, что микросервисы — это не просто "вместо одного большого приложения теперь пишем много маленьких". При разработке большой системы она сама собой через какое-то время становится набором отдельных сервисов, которые должны взаимодействовать между собой, поэтому стабильная работа сервисов и их взаимодействие не стало чем-то новым. Неожиданностью стало то, что система стала значительно более динамической, она стала постоянно изменяться отдельными небольшими частями, сервисы стали часто перезапускаться, а количество запущенных нод сервисов стало расти по экспоненте.
Очень быстро стал актуальным вопрос конфигурирования — если раньше, выкатив новую версию монолита с единым конфигом, мы применяли правки на всю систему сразу, то с микросервисами все сложнее — пара сотен работающих нод и всем нужно применить изменения. Требования к деплою также поменялись — он стал частью процесса разработки, а тестирование стало частью деплоя. Количество необходимого ПО для функционирования системы также стало некоторым сюрпризом.
В докладе я расскажу о том, как в итоге это работает у нас, как мы решили такие вопросы как:
- конфигурирование сервисов;
- интеграция между собой;
- тестирование;
- версионирование;
- масштабирование.
Расскажу, какие тулзы мы в итоге используем, а от каких отказались.
Доклад на конференции "Комплексная автоматизация IT. Средства мониторинга и сервисный подход в современной инфраструктуре предприятий" (Алматы, 28 июня 2013 г.)
Эволюция корпоративных Web приложений. Молотков Андрей D2D Just.NETDev2Dev
Для многих enterprise-разработка ассоциируется с бесконечным унаследованным кодом, устаревшими технологиями и неповоротливыми монолитами. Использование подходов построения сервис-ориентированной архитектуры может существенно улучшить ситуацию. Мы пишем небольшие приложения с чёткой зоной ответственности и покрытием модульными тестами, используем современные протоколы OData и OAuth, а legacy-приложения развиваем подключением повторно используемых модулей. В своем докладе я расскажу о том, чего удалось добиться за последние пару лет, какие роли мы выделили и с какими сложностями столкнулись.
DevOps и системы управления конфигурацией. SECON 2015Ivan Evtukhovich
Что такое DevOps, зачем он нужен, что включается в это понятие. Что такое Continuous Delivery, системы управления конфигурацией, сравнение Chef и Ansible.
Решения для разумной оптимизации ИТ-инфраструктуры. Сокращение ваших расходов...Yaryomenko
Решения для Управления и автоматизации ИТ- инфраструктуры
Решение для автоматизации процессов управления ИТ-услугами
Решение для Управления активами предприятия
\\
DataArt Custom Software Engineering with a Human ApproachDataArt
DataArt is a global software engineering firm that takes a uniquely human approach to solving problems. With over 20 years of experience, teams of highly-trained engineers around the world, deep industry sector knowledge and ongoing technology research, we help clients create custom software that improves their operations and opens new markets. Powered by our People First principle, we work with clients at any scale and on any platform, and adapt alongside them as they evolve.
DataArt is a global software engineering firm that takes a uniquely human approach to solving problems. With over 20 years of experience, teams of highly-trained engineers around the world, deep industry sector knowledge, and ongoing technology research, we help clients create custom software that improves their operations and opens new markets. Powered by our People First principle, we work with clients at any scale and on any platform, and adapt alongside them as they evolve.
DataArt Financial Services and Capital MarketsDataArt
DataArt is a global software engineering firm that takes a uniquely human approach to solving problems. With over 20 years of experience, teams of highly-trained engineers around the world, deep industry sector knowledge, and ongoing technology research, we help clients create custom software that improves their operations and opens new markets. Powered by our People First principle, we work with clients at any scale and on any platform, and adapt alongside them as they evolve.
We integrate our engineering excellence with deeply human values that drive our business and our approach to relationships: curiosity, empathy, trust, honesty, and intuition. These qualities help us deliver high-value, high-quality solutions that our clients depend on, and lifetime partnerships they believe in.
DataArt has earned the trust of some of the world’s leading brands and most discerning clients, including Nasdaq, Travelport, Ocado, Centrica/Hive, Paddy Power Betfair, IWG, Univision, Meetup and Apple Leisure Group among others. DataArt brings together expertise of over 3000 professionals in 20 locations in the US, Europe, and Latin America.
Мы ежедневно посещаем десятки и сотни сайтов и периодически видим рекламу, зачастую даже не задумываясь, откуда она вообще берется. Почему именно эта реклама показана вам именно здесь? И какая роль JS во всем этом?
Рассмотрим:
• поговорим о жизненном цикле рекламного баннера и проследим его путь от рекламодателя до браузера;
• узнаем, кто же постоянно следит за нами в интернете, как много информации о нас им доступно;
• определим способы выявления некачественного трафика;
• разберемся, зачем нужно контролировать качество просмотров;
• обсудим, почему нельзя так просто взять и просмотреть всю статистику по рекламе в одном месте (или все-таки можно?).
Алексей Уманский, JS Developer, AnyMind Group. Опыт работы в IT – четыре года. Участвовал в тревел- и gamedev-проектах: разрабатывал крупный сервис по покупке авиабилетов, создавал систему игровых автоматов для онлайн казино. Последний год работал в Таиланде над продуктами в области Digital Marketing: онлайн биржа для influencer-ов и сервис по управлению рекламой на сайте, а так же сбору статистики по ней.
DevOps Workshop:Что бывает, когда DevOps приходит на проектDataArt
Александр Снеговой, DevOps Software Engineer в DataArt.
Более шести лет в IT. Сертифицированный AWS Solutions Architect Associate. Докладчик на международных научных конференциях. Религиозный фанат Docker.
Оксана Харчук, Senior QA Engineer.
Презентация:
Коммуникация в жизни QA. Как выстроить эффективные коммуникации тестировщику с бизнес аналитиком, разработчиком, менеджером и клиентом.
Нельзя просто так взять и договориться, или как мы работали со сложными людьмиDataArt
Эллина Азадова, QA Lead в DataArt Kherson.
Презентация:
Реальные примеры из своей практики, как работать со сложными людьми: интровертами, экстравертами, излишне эмоциональными и с постоянно пессимистически настроенными.
Дмитрий Клипинин, DevOps Engineer в GlobalLogic, более 10 лет опыта работы в IT, сертифицированный специалист Microsoft по технологиям Active Directory и SQL Server.
Презентация:
1. Эволюция системного администратора.
2. DevOps-практики.
3. Основные DevOps-инструменты.
Александр Снеговой, DevOps Software Engineer в DataArt Kherson. Более шести лет в IT. Сертифицированный AWS Solutions Architect Associate. Докладчик на международных научных конференциях. Религиозный фанат Docker.
Презентация:
1. Докеризация приложения.
2. Настройка CI/CD.
3. Развертывание инфраструктуры в AWS с помощью Terraform.
2. О чем доклад?
• Что такое микросервисы?
• Немного теории
• За и против различных типов архитектур
• Способы взаимодействия сервисов
• Когда делать монолит, а когда микросервисы?
2
12. CA – consistency + availability
• Данные во всех узлах согласованы
• Обеспечена доступность
• Жертвуем распадом на секции
• ACID
• классические монолиты
12
13. CP – consistency + partitioning
• Данные во всех узлах согласованы
• Способна разделяться на независимые секции
• Жертвуем отсутствием отклика
(долго согласуются транзакции)
• Монолиты, которым пришлось
скалироваться.
13
14. AP – availability + partitioning
• Система доступна с предсказуемым временем отклика
• Система распределена
• Отказ от целостности результата.
• Eventually consistent
• DNS
14
- Знаете как заинтересовать идиота?
- Как?
- Завтра расскажу
15. Развитие системы
15
• Как сделать систему доступной из разный регионов?
• Как обеспечить согласованность данных?
• Как ускорить систем в N раз?
НИКАК!
23. Small
• Насколько маленький?
• Разрабатывается одной командой (7±2)
• Одна бизнес задача
• Один человек в состоянии понять сервис
23
24. Focused
• Что значит сфокусированный?
• Решает только одну бизнес задачу,
но решает ее хорошо
• Имеет смысл в отрыве от остальных
сервисов
24
25. Low coupled
• Что такое сильное зацепление и слабое зацепление?
• Изменения одного класса/модуля слабо влияет на необходимость
изменений другого
• IoC, DI
25
26. High cohesion
• Высокое сцепление (согласованность)
• Класс/компонент содержит все нужные
методы для решения поставленной задачи
26
27. High cohesion vs SRP
• У нас есть класс, отвечающий за управление кухней
• SRP – Класс содержит методы по управлению только КУХНЕЙ
• HC – Класс содержит ВСЕ методы по управлению кухней
27
28. Характеристики микросервисов
• Разделение на компоненты (сервисы)
• Группировка по бизнес задачам
• Сервисы имеют бизнес-смысл
• Умные сервисы & простые коммуникации
• Децентрализованное управление
• Децентрализованное управление данными
• Автоматизация развертывания и мониторинга
• Design for failure (Chaos Monkey)
28
48. Message Bus
• Нужно уметь готовить
• Нужно поддерживать
• Снижение производительности за счет появления брокера
48
49. Message Bus
49
ЗА ПРОТИВ
Диктует архитектуру Сложно менять контракты
Легко расширять Обычно асинхронны
Построена для скалируемости Нужна хорошая квалификация
Круто звучит Сложности развертывания и поддержки
Есть готовые решения. Написано не нами
53. Переход от монолита к микросервисам
• Ограниченный бизнес контекст
• Частота изменений
• Структура команды (Conway’s law)
• Меняем то, что сильнее болит
53
56. Как выбрать?
56
Монолит Микросервисы
Новый домен, нет знаний домена Точно нужно будет скалировать линейно
Прототипы, Быстрое решение Мы можете обеспечить согласованность на бизнес уровне
Низкая квалификация (все джуны)
Высокая квалификация, есть опыт и пара загубленных
проектов в прошлом
Написал и забыл Готовы инвестировать в инфраструктуру
Мало денег Много денег
57. За и против
57
Микросервисы дают преимущества… За счет…
Strong Module Boundaries
Микросервисы усиливают модульную структуру, что
особенно важно для больших команд разработчиков.
Distribution
Тяжелее разрабатывать. Нужен опыт и хороший опыт.
Аvailability
Сервисы могут работать не все
Eventual Consistency
придется иметь дело со слабой (отложенной) целостностью
Technology Diversity
Легко менять технологии, пробовать что-то действительно
подходящее. Правильные инструменты
Operational Complexity
Опытная команда Devop’ов
Independent Deployment
Простые сервисы проще деплоить
Меньше вероятность отказа системы
58. Jeff Bezos Manifesto
• All teams will henceforth expose their data and functionality through
service interfaces.
• Teams must communicate with each other through these interfaces.
• no direct linking
• no direct reads of another team’s data store
• no shared-memory model
• no back-doors whatsoever.
• The only communication allowed is via service interface calls over the network.
• It doesn’t matter what technology they use.
• All service interfaces, without exception, must be designed from the
ground up to be externalizable.
• No exceptions.
58
Большинство NoSQL-систем принципиально не гарантируют целостности данных, и ссылаются на теорему CAP как на мотив такого ограничения[5]. Задачей при построении AP-систем становится обеспечение некоторого практически целесообразного уровня целостности данных, в этом смысле про AP-системы говорят как о «целостных в конечном итоге» (англ. eventually consistent)[15] или как о «слабо целостных» (англ. weak consistent)[16].
Большинство NoSQL-систем принципиально не гарантируют целостности данных, и ссылаются на теорему CAP как на мотив такого ограничения[5]. Задачей при построении AP-систем становится обеспечение некоторого практически целесообразного уровня целостности данных, в этом смысле про AP-системы говорят как о «целостных в конечном итоге» (англ. eventually consistent)[15] или как о «слабо целостных» (англ. weak consistent)[16].
Набор правил, как одно приложение или компонет взаимодействует с другими.
И механизм, который обеспечивает это взаимодействие
Обычно это не про UI
Взаимодействие виде Software-to-software (Component)
Размер микросервисов – единственная вещь про которую программисты могут гордиться у кого меньше
Two pizza team at amazon
Проблема перевода
Convey’s Law
Есть три вещи которые все говорят что делают
Подростковый секс
DevOps
ОЧЕНЬ ВАЖНО.
Новый компы, развертывание, мониториг, отладка
Строгие контракты
Строгие контракты
Строгие контракты
Строгие контракты
The law is based on the reasoning that in order for a software module to function, multiple authors must communicate frequently with each other.
Therefore, the software interfaces structure of a system will reflect the social boundaries of the organization(s) that produced it, across which communication is more difficult.
Conway's law was intended as a valid sociological observation, although sometimes it's taken in a humorous context.
The law is based on the reasoning that in order for a software module to function, multiple authors must communicate frequently with each other.
Therefore, the software interfaces structure of a system will reflect the social boundaries of the organization(s) that produced it, across which communication is more difficult.
Conway's law was intended as a valid sociological observation, although sometimes it's taken in a humorous context.
The law is based on the reasoning that in order for a software module to function, multiple authors must communicate frequently with each other.
Therefore, the software interfaces structure of a system will reflect the social boundaries of the organization(s) that produced it, across which communication is more difficult.
Conway's law was intended as a valid sociological observation, although sometimes it's taken in a humorous context.
The law is based on the reasoning that in order for a software module to function, multiple authors must communicate frequently with each other.
Therefore, the software interfaces structure of a system will reflect the social boundaries of the organization(s) that produced it, across which communication is more difficult.
Conway's law was intended as a valid sociological observation, although sometimes it's taken in a humorous context.