SlideShare a Scribd company logo
1 of 122
1
Микросервисы
п е р в а я к р о в ь
Сячин Максим
2
maxsyachin@gmail.com
https://twitter.com/FinneTrolle
https://github.com/finnetrolle
3
4
5
6
7
8
9
10
Договоренности
• -Все что я рассказываю мой личный опыт
• QAДля вопросов будет секция в конце
выступления
• -Для больших вопросов
дискуссионная зона после выступления
11
12
?А мне что с того
Где набираетесь
?опыта
• Собственные проекты
• Работа или фриланс
• Open source проекты
• Дипломные и научные работы
13
14
15
?
16
?
17
?
18
-С монолитом сложно
- !Но микросервисы не монолит
Проект с
-микросервисами
лучший вариант работы
для студента
19
20
21
?Что мы делаем
• Сопровождаем процесс подписки
• Печатаем документы для сторон
• Строим разные графики и отчеты
22
23
24
Что такое
?микросервисы
25
In short, the microservice architectural style is an approach to
developing a single application as a suite of small services,
each running in its own process and communicating with
lightweight mechanisms, often an HTTP resource API. These
services are built around business capabilities and
independently deployable by fully automated deployment
machinery. There is a bare minimum of centralized
management of these services, which may be written in
different programming languages and use different data storage
technologies.
-- James Lewis and Martin Fowler
26
-Чем выше продуктивность
тем быстрее внедряется новая
функциональность
-Чем выше продуктивность
тем быстрее внедряется новая
функциональность
-Чем дольше разрабатываем
тем больше функциональности
и тем выше сложность
-Чем дольше разрабатываем
тем больше функциональности
и тем выше сложность
http://martinfowler.com/microservices/
27
28
29
!Грааль найден
30
31
Monolith First
32
33
34
Обязательные
требования
• Реализуем интерфейсы для разбиения
• Не допускаем высокую связность
• Поддерживаем высокую дисциплину
• Закладываем время на разбиение
35
36
37
ПервыйрелизПервыйрелиз
Monolith FirstКак помог
?нашему проекту
• ( !)Ускорен выпуск релиза мы успели
• Определились границы между модулями
38
39
40
41
42
43
44
45
46
Недостатки большого
количества сервисов
• Большая операционная сложность
• Труднее воспроизвести окружение для
тестирования
• -Отказы это данность
47
Преимущества большого
количества сервисов
• Горизонтальное масштабирование из коробки
• ...Низкая связность между сервисами
• ... !и между командами
• ...Каждая часть системы достаточно мала чтобы
48
49
=>Найти небольшую задачу
=>Быстро разобраться
=>Быстро выполнить
Раньше начать приносить пользу
=>
Хороший первый
день на новой
!работе
50
51
52
Netflix?А как там у
• 600Более сервисов
• EC2 AmazonДесятки тысяч нод в
• Миллиарды запросов ежедневно
Команды ответственны за
жизненный цикл
разработанных
приложений
53
• Разработка
• /Релиз деплой
• Обслуживание сервисов в проде
54
Моя
!прелесть
55
56
Не все вокруг
гвозди
57
58
?Что лучше
59
60
Зависит от задачи
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
Eventual consistency
79
Минусы зоопарка
технологий
• Не всегда существуют лучшие практики
• Высокая общая сложность системы
• Больше сервисов для обслуживания
• Сложнее управлять разработкой
• SHOKВысокий риск появления
80
81
Single
Head
Of
Knowledge
Дорога в ад для любого проекта
Плюсы свободы выбора
инструментов
• -Каждой задаче лучший инструмент
• Новое взамен устаревшего
• Расширяет кругозор
82
83+ 10 скиллов в резюме
84
Наш скромный стек
85
86
87
Композитный ответ
JSONОсобо жирный
JSONКомпозитный
88
http://catalogue/api/subscription/1234
Какая цена для издания 1234
в регионе с кодом 44?
89
90
91
subscription.getRegionalOptions().stream()
.filter(o -> o.getTcfpsCode().equals("44"))
.findFirst()
.get().getPriceGroup();
92
subscription.getPriceGroups().stream()
.filter(g -> g.getId().equals(
subscription.getRegionalOptions().stream()
.filter(o -> o.getTcfpsCode().equals("44"))
.findFirst()
.get().getPriceGroup()))
.findFirst()
.get().getPrice();
93
http://catalogue/api/subscription/1234/prices
94
http://catalogue/api/subscription/1234/region/908/priceMin
95
Richardson maturity model
96
APIДольше делать
97
• Результат
качественнее
• Экономия трафика
• Экономия ресурсов
Вы приблизитесь
к искусству
создания
красивого и
функционального
API
98
APIЭволюция
99
100
101
?!Серьезно
?Что хотелось бы
• APIВовремя узнавать об изменениях внешних
сервисов
• Иметь возможность поддерживать изменения в
,течение времени не сразу
• И знать как мигрировать
102
103
Expand and Contract
104
Expand and Contract
105
Expand and Contract
106
Expand and Contract
107
API v1 -> v2 migration timeline
• 28 2016июня - API v1 deprecatedстановится
• 28 2016сентября - ваши новые пользователи
получат уведомление
• 28 2017марта - все ваши пользователи
emailполучат уведомление по
• 28 2017июня - API v1 будет выключен
108
109
API v1 -> v2 migration guide
110
,Отмечено что
• " "Быстрее въезжаешь в проект
• Понимание оркестрации приходят постепенно
• Знакомишься с новыми технологиями
• Определяешься с любимой специализацией
111
112
Свой любимый микросервис
Проект с
-микросервисами
лучший вариант работы
для студента
113
114
,Говорят вы перешли на микросервисы
?И как они вам
115
116
Использовали
Monolith First
правильно
117
Следили
за вашим
зоопарком
сервисов
118
Каждой задаче
свой инструмент
119
Тщательно
продумывали
API ваших
приложений
120
APIИзменяли
по паттерну
Expand
and
Contract
121
122

More Related Content

What's hot

Мифы о DevOps / Александр Титов, Иван Евтухович (Экспресс 42)
Мифы о DevOps / Александр Титов, Иван Евтухович (Экспресс 42)Мифы о DevOps / Александр Титов, Иван Евтухович (Экспресс 42)
Мифы о DevOps / Александр Титов, Иван Евтухович (Экспресс 42)Ontico
 
DevOps в Agile среде. Как, почему и когда инструменты помогают.
DevOps в Agile среде. Как, почему и когда инструменты помогают.DevOps в Agile среде. Как, почему и когда инструменты помогают.
DevOps в Agile среде. Как, почему и когда инструменты помогают.Alexander Titov
 
Вебинар о конференции HighLoad++
Вебинар о конференции HighLoad++Вебинар о конференции HighLoad++
Вебинар о конференции HighLoad++Ontico
 
Учебный день конференции HighLoad++ 2013
Учебный день конференции HighLoad++ 2013Учебный день конференции HighLoad++ 2013
Учебный день конференции HighLoad++ 2013Ontico
 
ChatOps на практике. Организация работы команды сопровождения / Евгений Потап...
ChatOps на практике. Организация работы команды сопровождения / Евгений Потап...ChatOps на практике. Организация работы команды сопровождения / Евгений Потап...
ChatOps на практике. Организация работы команды сопровождения / Евгений Потап...Ontico
 
DevOps модное слово или следующая ступень эволюции
DevOps модное слово или следующая ступень эволюцииDevOps модное слово или следующая ступень эволюции
DevOps модное слово или следующая ступень эволюцииAndrey Rebrov
 
«DevOps — это о передаче смысла» — Александр Титов, Express 42
«DevOps — это о передаче смысла» — Александр Титов, Express 42«DevOps — это о передаче смысла» — Александр Титов, Express 42
«DevOps — это о передаче смысла» — Александр Титов, Express 42DevDay
 
MagicPlot @ UXSPb @ IT Global Meetup #7
MagicPlot @ UXSPb @ IT Global Meetup #7MagicPlot @ UXSPb @ IT Global Meetup #7
MagicPlot @ UXSPb @ IT Global Meetup #7Alexander Levantovsky
 
Куда движется управление инфраструктурой
Куда движется управление инфраструктуройКуда движется управление инфраструктурой
Куда движется управление инфраструктуройIvan Evtukhovich
 
DevOps-трансформация Альфа-Банка / Антон Исанин (Альфа-Банк)
DevOps-трансформация Альфа-Банка / Антон Исанин (Альфа-Банк)DevOps-трансформация Альфа-Банка / Антон Исанин (Альфа-Банк)
DevOps-трансформация Альфа-Банка / Антон Исанин (Альфа-Банк)Ontico
 
Всеволод Поляков: “Организованный DevOps”
Всеволод Поляков: “Организованный DevOps”Всеволод Поляков: “Организованный DevOps”
Всеволод Поляков: “Организованный DevOps”Provectus
 
DevOps от и до - что, зачем и почему
DevOps от и до - что, зачем и почемуDevOps от и до - что, зачем и почему
DevOps от и до - что, зачем и почемуAndrey Rebrov
 
Daemons In Web on #devrus
Daemons In Web on #devrusDaemons In Web on #devrus
Daemons In Web on #devrusAlex Chistyakov
 
SECON'2016 Евтухович Иван, Эксплуатация завтрашнего дня: от DevOps к NoOps
SECON'2016 Евтухович Иван, Эксплуатация завтрашнего дня: от DevOps к NoOpsSECON'2016 Евтухович Иван, Эксплуатация завтрашнего дня: от DevOps к NoOps
SECON'2016 Евтухович Иван, Эксплуатация завтрашнего дня: от DevOps к NoOpsSECON
 
Реальный DevOps в энтерпрайзе / Александр Тараторин (Райффайзенбанк)
Реальный DevOps в энтерпрайзе / Александр Тараторин (Райффайзенбанк)Реальный DevOps в энтерпрайзе / Александр Тараторин (Райффайзенбанк)
Реальный DevOps в энтерпрайзе / Александр Тараторин (Райффайзенбанк)Ontico
 
Практика организации ИТ-конфереций и других мероприятий для разработчиков
Практика организации ИТ-конфереций и других мероприятий для разработчиковПрактика организации ИТ-конфереций и других мероприятий для разработчиков
Практика организации ИТ-конфереций и других мероприятий для разработчиковSQALab
 
организация мероприятий без упячки. герасимович. Itotvet 19 20 октября
организация мероприятий без упячки. герасимович. Itotvet 19 20 октябряорганизация мероприятий без упячки. герасимович. Itotvet 19 20 октября
организация мероприятий без упячки. герасимович. Itotvet 19 20 октябряit-people
 

What's hot (17)

Мифы о DevOps / Александр Титов, Иван Евтухович (Экспресс 42)
Мифы о DevOps / Александр Титов, Иван Евтухович (Экспресс 42)Мифы о DevOps / Александр Титов, Иван Евтухович (Экспресс 42)
Мифы о DevOps / Александр Титов, Иван Евтухович (Экспресс 42)
 
DevOps в Agile среде. Как, почему и когда инструменты помогают.
DevOps в Agile среде. Как, почему и когда инструменты помогают.DevOps в Agile среде. Как, почему и когда инструменты помогают.
DevOps в Agile среде. Как, почему и когда инструменты помогают.
 
Вебинар о конференции HighLoad++
Вебинар о конференции HighLoad++Вебинар о конференции HighLoad++
Вебинар о конференции HighLoad++
 
Учебный день конференции HighLoad++ 2013
Учебный день конференции HighLoad++ 2013Учебный день конференции HighLoad++ 2013
Учебный день конференции HighLoad++ 2013
 
ChatOps на практике. Организация работы команды сопровождения / Евгений Потап...
ChatOps на практике. Организация работы команды сопровождения / Евгений Потап...ChatOps на практике. Организация работы команды сопровождения / Евгений Потап...
ChatOps на практике. Организация работы команды сопровождения / Евгений Потап...
 
DevOps модное слово или следующая ступень эволюции
DevOps модное слово или следующая ступень эволюцииDevOps модное слово или следующая ступень эволюции
DevOps модное слово или следующая ступень эволюции
 
«DevOps — это о передаче смысла» — Александр Титов, Express 42
«DevOps — это о передаче смысла» — Александр Титов, Express 42«DevOps — это о передаче смысла» — Александр Титов, Express 42
«DevOps — это о передаче смысла» — Александр Титов, Express 42
 
MagicPlot @ UXSPb @ IT Global Meetup #7
MagicPlot @ UXSPb @ IT Global Meetup #7MagicPlot @ UXSPb @ IT Global Meetup #7
MagicPlot @ UXSPb @ IT Global Meetup #7
 
Куда движется управление инфраструктурой
Куда движется управление инфраструктуройКуда движется управление инфраструктурой
Куда движется управление инфраструктурой
 
DevOps-трансформация Альфа-Банка / Антон Исанин (Альфа-Банк)
DevOps-трансформация Альфа-Банка / Антон Исанин (Альфа-Банк)DevOps-трансформация Альфа-Банка / Антон Исанин (Альфа-Банк)
DevOps-трансформация Альфа-Банка / Антон Исанин (Альфа-Банк)
 
Всеволод Поляков: “Организованный DevOps”
Всеволод Поляков: “Организованный DevOps”Всеволод Поляков: “Организованный DevOps”
Всеволод Поляков: “Организованный DevOps”
 
DevOps от и до - что, зачем и почему
DevOps от и до - что, зачем и почемуDevOps от и до - что, зачем и почему
DevOps от и до - что, зачем и почему
 
Daemons In Web on #devrus
Daemons In Web on #devrusDaemons In Web on #devrus
Daemons In Web on #devrus
 
SECON'2016 Евтухович Иван, Эксплуатация завтрашнего дня: от DevOps к NoOps
SECON'2016 Евтухович Иван, Эксплуатация завтрашнего дня: от DevOps к NoOpsSECON'2016 Евтухович Иван, Эксплуатация завтрашнего дня: от DevOps к NoOps
SECON'2016 Евтухович Иван, Эксплуатация завтрашнего дня: от DevOps к NoOps
 
Реальный DevOps в энтерпрайзе / Александр Тараторин (Райффайзенбанк)
Реальный DevOps в энтерпрайзе / Александр Тараторин (Райффайзенбанк)Реальный DevOps в энтерпрайзе / Александр Тараторин (Райффайзенбанк)
Реальный DevOps в энтерпрайзе / Александр Тараторин (Райффайзенбанк)
 
Практика организации ИТ-конфереций и других мероприятий для разработчиков
Практика организации ИТ-конфереций и других мероприятий для разработчиковПрактика организации ИТ-конфереций и других мероприятий для разработчиков
Практика организации ИТ-конфереций и других мероприятий для разработчиков
 
организация мероприятий без упячки. герасимович. Itotvet 19 20 октября
организация мероприятий без упячки. герасимович. Itotvet 19 20 октябряорганизация мероприятий без упячки. герасимович. Itotvet 19 20 октября
организация мероприятий без упячки. герасимович. Itotvet 19 20 октября
 

Viewers also liked

Viewers also liked (13)

Manual de Gmail
Manual de GmailManual de Gmail
Manual de Gmail
 
Wiki
WikiWiki
Wiki
 
Sistema tipo tunel
Sistema tipo tunelSistema tipo tunel
Sistema tipo tunel
 
Pitch Presentation
Pitch PresentationPitch Presentation
Pitch Presentation
 
Cannes 2013 | Grazia
Cannes 2013 | Grazia Cannes 2013 | Grazia
Cannes 2013 | Grazia
 
Power mk1
Power mk1Power mk1
Power mk1
 
Matematica financiera
Matematica financieraMatematica financiera
Matematica financiera
 
Iva grardiaxio (1)
Iva grardiaxio (1)Iva grardiaxio (1)
Iva grardiaxio (1)
 
Functioneel trainen met de MAPLe Gebruikersdag 2016
Functioneel trainen met de MAPLe Gebruikersdag 2016Functioneel trainen met de MAPLe Gebruikersdag 2016
Functioneel trainen met de MAPLe Gebruikersdag 2016
 
California San Francisco Ballot Propositions 2016 ESP
California San Francisco Ballot Propositions 2016 ESPCalifornia San Francisco Ballot Propositions 2016 ESP
California San Francisco Ballot Propositions 2016 ESP
 
El club de la comedia
El club de la comediaEl club de la comedia
El club de la comedia
 
Bab 6
Bab 6Bab 6
Bab 6
 
Internet
InternetInternet
Internet
 

Similar to Микросервисы: первая кровь

Учебный день конференции HighLoad++ 2013
Учебный день конференции HighLoad++ 2013Учебный день конференции HighLoad++ 2013
Учебный день конференции HighLoad++ 2013Ontico
 
Эволюция корпоративных Web приложений. Молотков Андрей D2D Just.NET
Эволюция корпоративных Web приложений. Молотков Андрей D2D Just.NETЭволюция корпоративных Web приложений. Молотков Андрей D2D Just.NET
Эволюция корпоративных Web приложений. Молотков Андрей D2D Just.NETDev2Dev
 
Как мы делаем Banki.ru
Как мы делаем Banki.ruКак мы делаем Banki.ru
Как мы делаем Banki.ruRoman Ivliev
 
Дикие микросервисы на JUG Екатеринбург
Дикие микросервисы на JUG ЕкатеринбургДикие микросервисы на JUG Екатеринбург
Дикие микросервисы на JUG ЕкатеринбургКирилл Толкачёв
 
D2D Pizza JS Илья Беда "Куда мы все катимся?"
D2D Pizza JS Илья Беда "Куда мы все катимся?"D2D Pizza JS Илья Беда "Куда мы все катимся?"
D2D Pizza JS Илья Беда "Куда мы все катимся?"Dev2Dev
 
Developmentmanage3.0
Developmentmanage3.0Developmentmanage3.0
Developmentmanage3.0WRider
 
Developmentmanage1.0
Developmentmanage1.0Developmentmanage1.0
Developmentmanage1.0HighLoad2009
 
Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)
Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)
Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)Ontico
 
История проекта, который никогда не падает / Андрей Шетухин
История проекта, который никогда не падает / Андрей ШетухинИстория проекта, который никогда не падает / Андрей Шетухин
История проекта, который никогда не падает / Андрей ШетухинOntico
 
Innovecs Meetup Lifestory
Innovecs Meetup LifestoryInnovecs Meetup Lifestory
Innovecs Meetup LifestoryInnovecs
 
Инструменты разные нужны, инструменты разные важны
Инструменты разные нужны, инструменты разные важныИнструменты разные нужны, инструменты разные важны
Инструменты разные нужны, инструменты разные важныRoman Dvornov
 
Software Analytics in frontend
Software Analytics in frontendSoftware Analytics in frontend
Software Analytics in frontendDenis Kolesnikov
 
Что DevOps должен знать про статический анализ кода?
Что DevOps должен знать про статический анализ кода?Что DevOps должен знать про статический анализ кода?
Что DevOps должен знать про статический анализ кода?Andrey Karpov
 
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...Tech Talks @NSU
 
Jpoint 2017 - как это было (обзор конференции)
Jpoint 2017 - как это было (обзор конференции)Jpoint 2017 - как это было (обзор конференции)
Jpoint 2017 - как это было (обзор конференции)CleverDATA
 
Мастер-класс про организацию службы эксплуатации
Мастер-класс про организацию службы эксплуатацииМастер-класс про организацию службы эксплуатации
Мастер-класс про организацию службы эксплуатацииNikolay Sivko
 

Similar to Микросервисы: первая кровь (20)

Учебный день конференции HighLoad++ 2013
Учебный день конференции HighLoad++ 2013Учебный день конференции HighLoad++ 2013
Учебный день конференции HighLoad++ 2013
 
Scrum Wars
Scrum WarsScrum Wars
Scrum Wars
 
Эволюция корпоративных Web приложений. Молотков Андрей D2D Just.NET
Эволюция корпоративных Web приложений. Молотков Андрей D2D Just.NETЭволюция корпоративных Web приложений. Молотков Андрей D2D Just.NET
Эволюция корпоративных Web приложений. Молотков Андрей D2D Just.NET
 
Как мы делаем Banki.ru
Как мы делаем Banki.ruКак мы делаем Banki.ru
Как мы делаем Banki.ru
 
Дикие микросервисы на JUG Екатеринбург
Дикие микросервисы на JUG ЕкатеринбургДикие микросервисы на JUG Екатеринбург
Дикие микросервисы на JUG Екатеринбург
 
Wild microservices and imaginary DevOps
Wild microservices and imaginary DevOpsWild microservices and imaginary DevOps
Wild microservices and imaginary DevOps
 
D2D Pizza JS Илья Беда "Куда мы все катимся?"
D2D Pizza JS Илья Беда "Куда мы все катимся?"D2D Pizza JS Илья Беда "Куда мы все катимся?"
D2D Pizza JS Илья Беда "Куда мы все катимся?"
 
Developmentmanage3.0
Developmentmanage3.0Developmentmanage3.0
Developmentmanage3.0
 
Developmentmanage1.0
Developmentmanage1.0Developmentmanage1.0
Developmentmanage1.0
 
Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)
Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)
Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)
 
История проекта, который никогда не падает / Андрей Шетухин
История проекта, который никогда не падает / Андрей ШетухинИстория проекта, который никогда не падает / Андрей Шетухин
История проекта, который никогда не падает / Андрей Шетухин
 
Oblachnye vychisleniya -_ponyatiya_i_tehnologii
Oblachnye vychisleniya -_ponyatiya_i_tehnologiiOblachnye vychisleniya -_ponyatiya_i_tehnologii
Oblachnye vychisleniya -_ponyatiya_i_tehnologii
 
Innovecs Meetup Lifestory
Innovecs Meetup LifestoryInnovecs Meetup Lifestory
Innovecs Meetup Lifestory
 
Инструменты разные нужны, инструменты разные важны
Инструменты разные нужны, инструменты разные важныИнструменты разные нужны, инструменты разные важны
Инструменты разные нужны, инструменты разные важны
 
Software Analytics in frontend
Software Analytics in frontendSoftware Analytics in frontend
Software Analytics in frontend
 
Что DevOps должен знать про статический анализ кода?
Что DevOps должен знать про статический анализ кода?Что DevOps должен знать про статический анализ кода?
Что DevOps должен знать про статический анализ кода?
 
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
 
Критерии выбора системы электронного документооборота
Критерии выбора системы электронного документооборотаКритерии выбора системы электронного документооборота
Критерии выбора системы электронного документооборота
 
Jpoint 2017 - как это было (обзор конференции)
Jpoint 2017 - как это было (обзор конференции)Jpoint 2017 - как это было (обзор конференции)
Jpoint 2017 - как это было (обзор конференции)
 
Мастер-класс про организацию службы эксплуатации
Мастер-класс про организацию службы эксплуатацииМастер-класс про организацию службы эксплуатации
Мастер-класс про организацию службы эксплуатации
 

Микросервисы: первая кровь