SlideShare ist ein Scribd-Unternehmen logo
1 von 101
Downloaden Sie, um offline zu lesen
Путь от монолита на PHP к
микросервисам на Scala
Иванов Денис
2gis.ru
2GIS WebAPI
Данные
3
Данные
•  8 стран
•  300 городов
•  50 тыс населенных пунктов
4
Данные
•  8 стран
•  300 городов
•  50 тыс населенных пунктов
•  5 млн организаций
5
Данные
•  8 стран
•  300 городов
•  50 тыс населенных пунктов
•  5 млн организаций
•  50 млн гео-объектов
И еще много всего
6
Чиселки
7
Чиселки
•  30 млн. пользователей в месяц
8
Чиселки
•  30 млн. пользователей в месяц
•  2000 RPS
9
Чиселки
•  30 млн. пользователей в месяц
•  2000 RPS
•  3 датацентра
10
Одна нода
•  16 CPU
•  16 GB RAM
•  Минимальная нагрузка - 50%
•  18 штук
11
Проблемы
13
Проблемы
•  Долго отрабатывают запросы (95% - 500ms)
14
Проблемы
•  Долго отрабатывают запросы (95% - 500ms)
•  Невозможно параллельно, многопоточно выполнять какие-то задачи
15
Проблемы
•  Долго отрабатывают запросы (95% - 500ms)
•  Невозможно параллельно, многопоточно выполнять какие-то задачи
•  Приложение - один большой кусок, который нужно выкатывать очень
часто и целиком
16
Проблемы
•  Долго отрабатывают запросы (95% - 500ms)
•  Невозможно параллельно, многопоточно выполнять какие-то задачи
•  Приложение - один большой кусок, который нужно выкатывать очень
часто и целиком
•  Кеширование не спасает
17
Проблемы
•  Долго отрабатывают запросы (95% - 500ms)
•  Невозможно параллельно, многопоточно выполнять какие-то задачи
•  Приложение - один большой кусок, который нужно выкатывать очень
часто и целиком
•  Кеширование не спасает
•  Много команд разработчиков, сервисов, интеграций
18
Проблемы
•  Долго отрабатывают запросы (95% - 500ms)
•  Невозможно параллельно, многопоточно выполнять какие-то задачи
•  Приложение - один большой кусок, который нужно выкатывать очень
часто и целиком
•  Кеширование не спасает
•  Много команд разработчиков, сервисов, интеграций
•  Много тестов, которые долго работают
19
Решения
20
Решения
•  Поддерживать существующее и жить дальше
21
Решения
•  Поддерживать существующее и жить дальше
•  Переписать всё нафиг
22
Решения
•  Поддерживать существующее и жить дальше
•  Переписать всё нафиг
•  Подумать и распилить приложение на независимые куски
23
Сервисная архитектура (SOA)
— модульный подход к разработке программного обеспечения,
основанный на использовании распределённых, слабо связанных
заменяемых компонентов, оснащённых стандартизированными
интерфейсами для взаимодействия по стандартизированным
протоколам
24
Микросервисная архитектура
• Малый размер
• Тонкое масштабирование
• Быстрый деплой
• Лёгкость тестирования (Мок)
• Любой язык
25
Микросервисная архитектура
• Десятки приложений вместо одного
• Сложность интеграционного тестирования
26
Поехали!
Микросервисы — это просто!
Микросервисы — это просто!
Что сделали?
•  Дикую новую архитектуру
40
Что сделали?
•  Дикую новую архитектуру
•  Написали роутер на go
41
Что сделали?
•  Дикую новую архитектуру
•  Написали роутер на go
•  Базовый контейнер на busybox
42
Что сделали?
•  Дикую новую архитектуру
•  Написали роутер на go
•  Базовый контейнер на busybox
•  Начали пилить SDK
43
STOP!
Как распилить?
45
Как распилить?
•  Выделить каждую группу методов в отдельный сервис
46
Как распилить?
•  Выделить каждую группу методов в отдельный сервис
•  Начать с самого мелкого и несвязного сервиса
47
Как распилить?
•  Выделить каждую группу методов в отдельный сервис
•  Начать с самого мелкого и несвязного сервиса
•  Постепенно выделять сервисы, переходя к более крупным
48
Прототип
49
Прототип
•  Тяжелый метод - поисковый запрос, запросы в БД, формирование
2000 маркеров с хешами, куча json-а
50
Прототип
•  Тяжелый метод - поисковый запрос, запросы в БД, формирование
2000 маркеров с хешами, куча json-а
•  PHP, PHP7, Java, Scala
51
Прототип
•  Тяжелый метод - поисковый запрос, запросы в БД, формирование
2000 маркеров с хешами, куча json-а
•  PHP, PHP7, Java, Scala
•  SLA - 95% за 300ms
52
Прототип
•  Тяжелый метод - поисковый запрос, запросы в БД, формирование
2000 маркеров с хешами, куча json-а
•  PHP, PHP7, Java, Scala
•  SLA - 95% за 300ms
•  Тачка - 4 ядра (по 2.7), 4 гига
53
Бенчмарк
54
Бенчмарк
Реализация SLA Смерть
php 30 rps 40 rps
php7 70 rps 80 rps
java 160 rps 180 rps
scala 180 rps 200 rps
55
Scala vs Java
56
Scala vs Java
•  Те же библиотеки + свои
57
Scala vs Java
•  Те же библиотеки + свои
•  Меньше кода, чем на Java
58
Scala vs Java
•  Те же библиотеки + свои
•  Меньше кода, чем на Java
•  Много success-story в микросервисах
59
Scala vs Java
•  Те же библиотеки + свои
•  Меньше кода, чем на Java
•  Много success-story в микросервисах
•  Асинхронность и многопоточность намного проще из коробки +
сторонние библиотеки
60
Scala vs Java
•  Те же библиотеки + свои
•  Меньше кода, чем на Java
•  Много success-story в микросервисах
•  Асинхронность и многопоточность намного проще из коробки +
сторонние библиотеки
•  В компании есть несколько команд, использующих Scala на
продакшене
61
Интеграция
Библиотечки
66
Библиотечки
•  Spray
67
Библиотечки
•  Spray
•  Spray json
68
Библиотечки
•  Spray
•  Spray json
•  Typesafe config
69
Библиотечки
•  Spray
•  Spray json
•  Typesafe config
•  Akka
70
Библиотечки
•  Spray
•  Spray json
•  Typesafe config
•  Akka
•  HikariCP
71
Библиотечки
•  Spray
•  Spray json
•  Typesafe config
•  Akka
•  HikariCP
•  JDBC
72
Spray
path("api" / "1.0" / "some" / "method") {
parameters('id.as[String]) { id =>
val response = DoSomeWork(id)
onSuccess(response) { content =>
complete(content)
}
}
}
01.
02.
03.
04.
05.
06.
07.
08.
73
Spray json
case class User(name: String, isOk: Boolean)
implicit val UserFormatter = jsonFormat2(User)
val json = """{"name": "Denis", "isOk": true}"""
val user = json.parseJson.convertTo[User]
01.
02.
03.
04.
05.
06.
07.
74
Typesafe config
databases {
catalog {
host = "127.0.0.1"
port = 5432
timeout = 5s
ssl = true
}
}
01.
02.
03.
04.
05.
06.
07.
08.
75
Инвентарь
76
Инвентарь
•  Scala - основной язык для микросервисов
77
Инвентарь
•  Scala - основной язык для микросервисов
•  TeamCity - сборка и деплой
78
Инвентарь
•  Scala - основной язык для микросервисов
•  TeamCity - сборка и деплой
•  Ansible - деплой
79
Тестирование
80
Тестирование
•  Функциональные и интеграционные тесты на ваш продукт, которые у
вас должны быть
81
Тестирование
•  Функциональные и интеграционные тесты на ваш продукт, которые у
вас должны быть
•  Для нагрузки - gatling
82
Тестирование
•  Функциональные и интеграционные тесты на ваш продукт, которые у
вас должны быть
•  Для нагрузки - gatling
•  gor
83
Тестирование
•  Функциональные и интеграционные тесты на ваш продукт, которые у
вас должны быть
•  Для нагрузки - gatling
•  gor
•  Простой скрипт, кидающий запрос на 2 хоста и делающий diff
84
CI/CD
85
CI/CD
•  Сборка - 2 минуты
86
CI/CD
•  Сборка - 2 минуты
•  Тесты (с нагрузкой) - 5-10 минут
87
CI/CD
•  Сборка - 2 минуты
•  Тесты (с нагрузкой) - 5-10 минут
•  Деплой - 5 минут
88
CI/CD
•  Сборка - 2 минуты
•  Тесты (с нагрузкой) - 5-10 минут
•  Деплой - 5 минут
•  Серверов - 6 вместо 18 (по 2 в каждом ДЦ)
89
Одна нода
•  4 CPU
•  4 GB RAM
•  Средняя нагрузка - 5%
•  Максимальная нагрузка - 30%
90
Что дальше?
92
Что дальше?
•  Продолжать распиливать сервисы
93
Что дальше?
•  Продолжать распиливать сервисы
•  Двигаться к поставленной цели
94
Итоги
95
Итоги
•  Поменьше велосипедов
96
Итоги
•  Поменьше велосипедов
•  Ставьте себе четкие, достижимые цели в короткий срок
97
Итоги
•  Поменьше велосипедов
•  Ставьте себе четкие, достижимые цели в короткий срок
•  Делайте задачи итеративно
98
Итоги
•  Поменьше велосипедов
•  Ставьте себе четкие, достижимые цели в короткий срок
•  Делайте задачи итеративно
•  Решайте проблемы по мере из возникновения
99
Итоги
•  Поменьше велосипедов
•  Ставьте себе четкие, достижимые цели в короткий срок
•  Делайте задачи итеративно
•  Решайте проблемы по мере из возникновения
•  Преждевременная оптимизация - зло
100
Вопросы?
Иванов Денис
dv.ivanov@2gis.ru
101

Weitere ähnliche Inhalte

Was ist angesagt?

Облако в Badoo год спустя
Облако в Badoo год спустяОблако в Badoo год спустя
Облако в Badoo год спустяYuriy Nasretdinov
 
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)Ontico
 
Юрий Насретдинов, Badoo
Юрий Насретдинов, BadooЮрий Насретдинов, Badoo
Юрий Насретдинов, BadooOntico
 
Android Cloud... точнее Cloud из Android / Охрименко Алексей (Acronis)
Android Cloud... точнее Cloud из Android / Охрименко Алексей (Acronis)Android Cloud... точнее Cloud из Android / Охрименко Алексей (Acronis)
Android Cloud... точнее Cloud из Android / Охрименко Алексей (Acronis)Ontico
 
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...Ontico
 
smart balancing with nginx+lua / Андрей Кононов (IPONWEB)
smart balancing with nginx+lua / Андрей Кононов (IPONWEB)smart balancing with nginx+lua / Андрей Кононов (IPONWEB)
smart balancing with nginx+lua / Андрей Кононов (IPONWEB)Ontico
 
OpenResty: превращаем NGINX в полноценный сервер приложений / Владимир Прота...
OpenResty: превращаем NGINX в полноценный сервер приложений  / Владимир Прота...OpenResty: превращаем NGINX в полноценный сервер приложений  / Владимир Прота...
OpenResty: превращаем NGINX в полноценный сервер приложений / Владимир Прота...Ontico
 
Архитектура хранения фотографий в Badoo
Архитектура хранения фотографий в BadooАрхитектура хранения фотографий в Badoo
Архитектура хранения фотографий в BadooBadoo Development
 
Андрей Акиньшин
Андрей АкиньшинАндрей Акиньшин
Андрей АкиньшинCodeFest
 
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)Ontico
 
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)Ontico
 
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)Ontico
 
Где живут Ваши объявления / Тюрин Михаил (Avito)
Где живут Ваши объявления / Тюрин Михаил (Avito)Где живут Ваши объявления / Тюрин Михаил (Avito)
Где живут Ваши объявления / Тюрин Михаил (Avito)Ontico
 
Евгений Потапов (Сумма Айти)
Евгений Потапов (Сумма Айти)Евгений Потапов (Сумма Айти)
Евгений Потапов (Сумма Айти)Ontico
 
Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)
Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)
Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)Ontico
 
Анатомия веб сервиса (HighLoad-2014)
Анатомия веб сервиса (HighLoad-2014)Анатомия веб сервиса (HighLoad-2014)
Анатомия веб сервиса (HighLoad-2014)Andrey Smirnov
 
Виртуализированные сетевые сервисы на line rate в серверном окружении / Алекс...
Виртуализированные сетевые сервисы на line rate в серверном окружении / Алекс...Виртуализированные сетевые сервисы на line rate в серверном окружении / Алекс...
Виртуализированные сетевые сервисы на line rate в серверном окружении / Алекс...Ontico
 
MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...
MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...
MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...Ontico
 
Как собирать gps треки раз в секунду, экономя траффик
Как собирать gps треки раз в секунду, экономя траффикКак собирать gps треки раз в секунду, экономя траффик
Как собирать gps треки раз в секунду, экономя траффикAndrew Minkin
 
Чему мы научились разрабатывая микросервисы?
Чему мы научились разрабатывая микросервисы?Чему мы научились разрабатывая микросервисы?
Чему мы научились разрабатывая микросервисы?Vadim Madison
 

Was ist angesagt? (20)

Облако в Badoo год спустя
Облако в Badoo год спустяОблако в Badoo год спустя
Облако в Badoo год спустя
 
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
 
Юрий Насретдинов, Badoo
Юрий Насретдинов, BadooЮрий Насретдинов, Badoo
Юрий Насретдинов, Badoo
 
Android Cloud... точнее Cloud из Android / Охрименко Алексей (Acronis)
Android Cloud... точнее Cloud из Android / Охрименко Алексей (Acronis)Android Cloud... точнее Cloud из Android / Охрименко Алексей (Acronis)
Android Cloud... точнее Cloud из Android / Охрименко Алексей (Acronis)
 
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
 
smart balancing with nginx+lua / Андрей Кононов (IPONWEB)
smart balancing with nginx+lua / Андрей Кононов (IPONWEB)smart balancing with nginx+lua / Андрей Кононов (IPONWEB)
smart balancing with nginx+lua / Андрей Кононов (IPONWEB)
 
OpenResty: превращаем NGINX в полноценный сервер приложений / Владимир Прота...
OpenResty: превращаем NGINX в полноценный сервер приложений  / Владимир Прота...OpenResty: превращаем NGINX в полноценный сервер приложений  / Владимир Прота...
OpenResty: превращаем NGINX в полноценный сервер приложений / Владимир Прота...
 
Архитектура хранения фотографий в Badoo
Архитектура хранения фотографий в BadooАрхитектура хранения фотографий в Badoo
Архитектура хранения фотографий в Badoo
 
Андрей Акиньшин
Андрей АкиньшинАндрей Акиньшин
Андрей Акиньшин
 
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)
 
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
 
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)
 
Где живут Ваши объявления / Тюрин Михаил (Avito)
Где живут Ваши объявления / Тюрин Михаил (Avito)Где живут Ваши объявления / Тюрин Михаил (Avito)
Где живут Ваши объявления / Тюрин Михаил (Avito)
 
Евгений Потапов (Сумма Айти)
Евгений Потапов (Сумма Айти)Евгений Потапов (Сумма Айти)
Евгений Потапов (Сумма Айти)
 
Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)
Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)
Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)
 
Анатомия веб сервиса (HighLoad-2014)
Анатомия веб сервиса (HighLoad-2014)Анатомия веб сервиса (HighLoad-2014)
Анатомия веб сервиса (HighLoad-2014)
 
Виртуализированные сетевые сервисы на line rate в серверном окружении / Алекс...
Виртуализированные сетевые сервисы на line rate в серверном окружении / Алекс...Виртуализированные сетевые сервисы на line rate в серверном окружении / Алекс...
Виртуализированные сетевые сервисы на line rate в серверном окружении / Алекс...
 
MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...
MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...
MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...
 
Как собирать gps треки раз в секунду, экономя траффик
Как собирать gps треки раз в секунду, экономя траффикКак собирать gps треки раз в секунду, экономя траффик
Как собирать gps треки раз в секунду, экономя траффик
 
Чему мы научились разрабатывая микросервисы?
Чему мы научились разрабатывая микросервисы?Чему мы научились разрабатывая микросервисы?
Чему мы научились разрабатывая микросервисы?
 

Andere mochten auch

Денис Паясь
Денис ПаясьДенис Паясь
Денис ПаясьCodeFest
 
Денис Запорожан
Денис ЗапорожанДенис Запорожан
Денис ЗапорожанCodeFest
 
Денис Башев
Денис БашевДенис Башев
Денис БашевCodeFest
 
Евгений Брянцев
Евгений БрянцевЕвгений Брянцев
Евгений БрянцевCodeFest
 
Олег Бартунов и Иван Панченко
Олег Бартунов и Иван ПанченкоОлег Бартунов и Иван Панченко
Олег Бартунов и Иван ПанченкоCodeFest
 
Вадим Макеев
Вадим МакеевВадим Макеев
Вадим МакеевCodeFest
 
Антон Шаяхов
Антон ШаяховАнтон Шаяхов
Антон ШаяховCodeFest
 
Роман Янке
Роман ЯнкеРоман Янке
Роман ЯнкеCodeFest
 
Дмитрий Кулижников
Дмитрий КулижниковДмитрий Кулижников
Дмитрий КулижниковCodeFest
 
Michael Widenius
Michael WideniusMichael Widenius
Michael WideniusCodeFest
 
Андрей Светлов
Андрей СветловАндрей Светлов
Андрей СветловCodeFest
 
Саша Гладких и Андрей Старков
Саша Гладких и Андрей СтарковСаша Гладких и Андрей Старков
Саша Гладких и Андрей СтарковCodeFest
 
Алексей Ильичев
Алексей ИльичевАлексей Ильичев
Алексей ИльичевCodeFest
 
Km based ecomomy e tyrtyshny
Km based ecomomy e tyrtyshnyKm based ecomomy e tyrtyshny
Km based ecomomy e tyrtyshnyEvgeny Tyrtyshny
 
Pm crowdsourcing et 190412
Pm crowdsourcing et 190412Pm crowdsourcing et 190412
Pm crowdsourcing et 190412Evgeny Tyrtyshny
 
10 pm mythes and tables rus
10 pm mythes and tables rus10 pm mythes and tables rus
10 pm mythes and tables rusEvgeny Tyrtyshny
 
Управление рисками: распространенные препятствия и заблуждения
Управление рисками: распространенные препятствия и заблужденияУправление рисками: распространенные препятствия и заблуждения
Управление рисками: распространенные препятствия и заблужденияAnna Grebennikova
 
проектная игра Pm pro et 140813
проектная игра Pm pro et 140813проектная игра Pm pro et 140813
проектная игра Pm pro et 140813Evgeny Tyrtyshny
 
Управление рисками
Управление рискамиУправление рисками
Управление рискамиCKPPK
 
Дмитрий Химион и Сергей Белов
Дмитрий Химион и Сергей БеловДмитрий Химион и Сергей Белов
Дмитрий Химион и Сергей БеловCodeFest
 

Andere mochten auch (20)

Денис Паясь
Денис ПаясьДенис Паясь
Денис Паясь
 
Денис Запорожан
Денис ЗапорожанДенис Запорожан
Денис Запорожан
 
Денис Башев
Денис БашевДенис Башев
Денис Башев
 
Евгений Брянцев
Евгений БрянцевЕвгений Брянцев
Евгений Брянцев
 
Олег Бартунов и Иван Панченко
Олег Бартунов и Иван ПанченкоОлег Бартунов и Иван Панченко
Олег Бартунов и Иван Панченко
 
Вадим Макеев
Вадим МакеевВадим Макеев
Вадим Макеев
 
Антон Шаяхов
Антон ШаяховАнтон Шаяхов
Антон Шаяхов
 
Роман Янке
Роман ЯнкеРоман Янке
Роман Янке
 
Дмитрий Кулижников
Дмитрий КулижниковДмитрий Кулижников
Дмитрий Кулижников
 
Michael Widenius
Michael WideniusMichael Widenius
Michael Widenius
 
Андрей Светлов
Андрей СветловАндрей Светлов
Андрей Светлов
 
Саша Гладких и Андрей Старков
Саша Гладких и Андрей СтарковСаша Гладких и Андрей Старков
Саша Гладких и Андрей Старков
 
Алексей Ильичев
Алексей ИльичевАлексей Ильичев
Алексей Ильичев
 
Km based ecomomy e tyrtyshny
Km based ecomomy e tyrtyshnyKm based ecomomy e tyrtyshny
Km based ecomomy e tyrtyshny
 
Pm crowdsourcing et 190412
Pm crowdsourcing et 190412Pm crowdsourcing et 190412
Pm crowdsourcing et 190412
 
10 pm mythes and tables rus
10 pm mythes and tables rus10 pm mythes and tables rus
10 pm mythes and tables rus
 
Управление рисками: распространенные препятствия и заблуждения
Управление рисками: распространенные препятствия и заблужденияУправление рисками: распространенные препятствия и заблуждения
Управление рисками: распространенные препятствия и заблуждения
 
проектная игра Pm pro et 140813
проектная игра Pm pro et 140813проектная игра Pm pro et 140813
проектная игра Pm pro et 140813
 
Управление рисками
Управление рискамиУправление рисками
Управление рисками
 
Дмитрий Химион и Сергей Белов
Дмитрий Химион и Сергей БеловДмитрий Химион и Сергей Белов
Дмитрий Химион и Сергей Белов
 

Ähnlich wie Денис Иванов

Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala  / Денис Иванов (2GIS)Путь от монолита на PHP к микросервисам на Scala  / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)Ontico
 
«Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС
«Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС «Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС
«Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС 2ГИС Технологии
 
Юрий Буянов «Архитектура Goozy»
Юрий Буянов «Архитектура Goozy»Юрий Буянов «Архитектура Goozy»
Юрий Буянов «Архитектура Goozy»e-Legion
 
YuryByyanov (e-legion) @ CodeCamp2011
YuryByyanov (e-legion) @ CodeCamp2011YuryByyanov (e-legion) @ CodeCamp2011
YuryByyanov (e-legion) @ CodeCamp2011CodeCamp
 
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...Yandex
 
Дмитрий Дегтярев, "Хабикаса"
Дмитрий Дегтярев, "Хабикаса"Дмитрий Дегтярев, "Хабикаса"
Дмитрий Дегтярев, "Хабикаса"Ontico
 
HSE{Consult}: DevOps – новая методология разработки
HSE{Consult}: DevOps – новая методология разработкиHSE{Consult}: DevOps – новая методология разработки
HSE{Consult}: DevOps – новая методология разработкиBusiness incubator HSE
 
«DevOps — это о передаче смысла» — Александр Титов, Express 42
«DevOps — это о передаче смысла» — Александр Титов, Express 42«DevOps — это о передаче смысла» — Александр Титов, Express 42
«DevOps — это о передаче смысла» — Александр Титов, Express 42DevDay
 
DevOps или исскуство ухода за Интернет-проектом
DevOps или исскуство ухода за Интернет-проектомDevOps или исскуство ухода за Интернет-проектом
DevOps или исскуство ухода за Интернет-проектомAlexander Titov
 
Tarantool, .net, newsql
Tarantool, .net, newsqlTarantool, .net, newsql
Tarantool, .net, newsqlAnatoly Popov
 
Как превратить приложение в платформу
Как превратить приложение в платформуКак превратить приложение в платформу
Как превратить приложение в платформуVadim Kruchkov
 
MongoDB. Области применения, преимущества и узкие места, тонкости использован...
MongoDB. Области применения, преимущества и узкие места, тонкости использован...MongoDB. Области применения, преимущества и узкие места, тонкости использован...
MongoDB. Области применения, преимущества и узкие места, тонкости использован...phpdevby
 
Обзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновОбзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновOntico
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Ontico
 
Zabbix в badoo, от lld к super discovery
Zabbix в badoo, от lld к super discoveryZabbix в badoo, от lld к super discovery
Zabbix в badoo, от lld к super discoveryBadoo Development
 
D2D Pizza JS Илья Беда "Куда мы все катимся?"
D2D Pizza JS Илья Беда "Куда мы все катимся?"D2D Pizza JS Илья Беда "Куда мы все катимся?"
D2D Pizza JS Илья Беда "Куда мы все катимся?"Dev2Dev
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Ontico
 
Migrating from PHP/MySQL to Redis/Lua, my talk on High load++ (Russian)
Migrating from PHP/MySQL to Redis/Lua, my talk on High load++ (Russian)Migrating from PHP/MySQL to Redis/Lua, my talk on High load++ (Russian)
Migrating from PHP/MySQL to Redis/Lua, my talk on High load++ (Russian)Dmitry Degtyarev
 
Hosting for forbes.ru_
Hosting for forbes.ru_Hosting for forbes.ru_
Hosting for forbes.ru_drupalconf
 

Ähnlich wie Денис Иванов (20)

Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala  / Денис Иванов (2GIS)Путь от монолита на PHP к микросервисам на Scala  / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
 
«Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС
«Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС «Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС
«Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС
 
Юрий Буянов «Архитектура Goozy»
Юрий Буянов «Архитектура Goozy»Юрий Буянов «Архитектура Goozy»
Юрий Буянов «Архитектура Goozy»
 
YuryByyanov (e-legion) @ CodeCamp2011
YuryByyanov (e-legion) @ CodeCamp2011YuryByyanov (e-legion) @ CodeCamp2011
YuryByyanov (e-legion) @ CodeCamp2011
 
Sivko
SivkoSivko
Sivko
 
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...
 
Дмитрий Дегтярев, "Хабикаса"
Дмитрий Дегтярев, "Хабикаса"Дмитрий Дегтярев, "Хабикаса"
Дмитрий Дегтярев, "Хабикаса"
 
HSE{Consult}: DevOps – новая методология разработки
HSE{Consult}: DevOps – новая методология разработкиHSE{Consult}: DevOps – новая методология разработки
HSE{Consult}: DevOps – новая методология разработки
 
«DevOps — это о передаче смысла» — Александр Титов, Express 42
«DevOps — это о передаче смысла» — Александр Титов, Express 42«DevOps — это о передаче смысла» — Александр Титов, Express 42
«DevOps — это о передаче смысла» — Александр Титов, Express 42
 
DevOps или исскуство ухода за Интернет-проектом
DevOps или исскуство ухода за Интернет-проектомDevOps или исскуство ухода за Интернет-проектом
DevOps или исскуство ухода за Интернет-проектом
 
Tarantool, .net, newsql
Tarantool, .net, newsqlTarantool, .net, newsql
Tarantool, .net, newsql
 
Как превратить приложение в платформу
Как превратить приложение в платформуКак превратить приложение в платформу
Как превратить приложение в платформу
 
MongoDB. Области применения, преимущества и узкие места, тонкости использован...
MongoDB. Области применения, преимущества и узкие места, тонкости использован...MongoDB. Области применения, преимущества и узкие места, тонкости использован...
MongoDB. Области применения, преимущества и узкие места, тонкости использован...
 
Обзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновОбзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий Насретдинов
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
 
Zabbix в badoo, от lld к super discovery
Zabbix в badoo, от lld к super discoveryZabbix в badoo, от lld к super discovery
Zabbix в badoo, от lld к super discovery
 
D2D Pizza JS Илья Беда "Куда мы все катимся?"
D2D Pizza JS Илья Беда "Куда мы все катимся?"D2D Pizza JS Илья Беда "Куда мы все катимся?"
D2D Pizza JS Илья Беда "Куда мы все катимся?"
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
 
Migrating from PHP/MySQL to Redis/Lua, my talk on High load++ (Russian)
Migrating from PHP/MySQL to Redis/Lua, my talk on High load++ (Russian)Migrating from PHP/MySQL to Redis/Lua, my talk on High load++ (Russian)
Migrating from PHP/MySQL to Redis/Lua, my talk on High load++ (Russian)
 
Hosting for forbes.ru_
Hosting for forbes.ru_Hosting for forbes.ru_
Hosting for forbes.ru_
 

Mehr von 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
 
Максим Пугачев
Максим ПугачевМаксим Пугачев
Максим ПугачевCodeFest
 
Rene Groeschke
Rene GroeschkeRene Groeschke
Rene GroeschkeCodeFest
 
Иван Бондаренко
Иван БондаренкоИван Бондаренко
Иван БондаренкоCodeFest
 
Mete Atamel
Mete AtamelMete Atamel
Mete AtamelCodeFest
 

Mehr von 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
 

Денис Иванов