SlideShare a Scribd company logo
1 of 139
Download to read offline
микроСЕРВИСЫ
огонь, вода, медные трубы
@tolkv
2
@aatarasoff
3
микроСЕРВИСЫ
огонь, вода, медные трубы
DISCLAIMER
Наше мнение может не совпадать с официальной
позицией банка, начальника, коллег или других
специалистов. Мы не претендуем на роль
последней инстанции в вопросах использования
той или иной технологии. Все представленные
решения вы можете использовать на свой страх и
риск. За все ваши действия ответственность несёте
только вы сами.
5
Agenda
1. Past
2. Present
3. Future
6
Agenda
1. Past
2. Present
3. Future
7
8
9
Ball of Mud
10
11
SOA Principles
● standardized service contract
● loose coupling
● encapsulation
● reusability
● autonomy
● statelessness
● discoverability
12
13
UDDI
● Никто не говорит и никто не знает ;)
● Но все же. Кто знает что это и зачем это?
● А кто внедрял ? :)
14
Прекрасная технология
15
Как это выглядит? “Тогда”
16
Как это выглядит? “Сейчас”
Oracle SOA Governance
17
Как это выглядит? “Сейчас”
18
@UDDIService(
businessKey="uddi:myBusinessKey",
serviceKey="uddi:myServiceKey",
description = "Hello World test service")
@UDDIServiceBinding(
bindingKey="uddi:myServiceBindingKey",
description="WSDL endpoint for the hello${department} Service. This service is
used for testing the jUDDI annotation functionality",
accessPointType="wsdlDeployment",
accessPoint="http://localhost:8080/juddiv3-samples/services/helloworld?wsdl")
Okay, перейдем по ссылке
19
Никто не хочет UDDI
20
<S:Envelope>
<S:Header>
...
<Security S:actor="null" S:mustUnderstand="...">
...
</Security>
...
</S:Header>
...
</S:Envelope>
…а реализация врозь
Не все реализации клиентов могут так сделать :(
21
22
Никто не любит “некрасивые” технологии
поэтому они умирают
А что с людьми?
● Что волновало людей тогда?
● Их волновало то, как не использовать
технологию
● Сейчас эта книга до сих пор продается. 20$
Ничто не не вечно :)
2004 год
24
А что ещё?
25
Выводы
26
Agenda
1. Past
2. Present
3. Future
27
28
Про тренды
29
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
Что такое микросервисы?
30
Определение
1. Набор маленьких сервисов
a. насколько маленьких?
31
Размер имеет значение?
● Method/Function = Microservice?
● 10-300 LOC = Microservice?
● 1 week = Microservice?
● 1 developer = Microservice?
32
Размер не имеет значения*
● Single Responsibility
● One capability
● Bounded context
“In your organization, you should be thinking not in terms
of data that is shared, but about the capabilities those
contexts provide the rest of the domain.”
– Sam Newman, Building Microservices
*до разумных пределов конечно
33
Domain-Driven Development
34
Пример
Микросервис платежей
- принимает платеж и проводит его
- но платежей много типов
- а если внешние системы?
- а если каждый тип разный для разных
групп пользователей?
35
Определение
1. Набор маленьких сервисов
a. насколько маленьких?
2. Изоляция и независимый деплой
36
Process segregation
37
Независимый деплой
build test
38
Trade-off
- name: copy nginx config
sudo: yes
template:
src: "nginx.conf"
dest: "{{nginx_config_dir}}/project1.conf"
tags: copy_nginx_config
- name: copy nginx config
sudo: yes
template:
src: "nginx.conf"
dest: "{{nginx_config_dir}}/project2.conf"
tags: copy_nginx_config
server {
server_name {{ hostname }}.superproject;
}
server {
server_name {{ hostname }}.superproject;
}
39
Failed
40
Определение
1. Набор маленьких сервисов
a. насколько маленьких?
2. Изоляция и независимый деплой
3. Децентрализация
41
Language/technology segregation
42
Data segregation
43
Team segregation
44
Trade-off
- N языков программирования
- M в среднем фреймворков на язык
- L типов источников данных
complexity = N * M * L
45
Пример
- три языка программирования
- два в среднем фреймворка на язык
- семь типов источников данных
- legacy WS
- mongo db
- реляционная БД (oracle)
- хранимые процедуры
- JDBC templates/ORM
- elasticsearch
- neo4j/orient db
- мишкина база
complexity = 3 * 2 * 7 = 42 (!)
46
42!!!
47
Ключевые характеристики
● Domain-Driven Design
● Single responsibility
● Independent DURS
○ deploy, update, replace, scale
● Lightweight contract and communication
● Segregation
○ people
○ technologies
48
Ключевое приемущество
Вывод: микросервисы ради того, чтобы не
впихивать невпихуемое
49
Так на чём писать микросервисы?
50
min (N * M * L) -> max (L)
51
Закон трёх букв
А что есть в мире Java?
● Java EE
● Spring Boot/Spring Cloud
● Ratpack
● Dropwizard
● Vert.x
● Restlet
● Spark
52
Почему Spring Boot/Spring Cloud?
53
Почему Spring Boot/Spring Cloud?
● Развитая экосистема
● Неограниченные возможности кастомизации и
интеграции новых фреймворков
● Не только REST/HTTP
● Великолепные возможности мониторинга
54
А теперь попробуем
55
Demo
Demo -> Deploy Time
Service Discovery
60
61
62
Service Registry
63
Netflix Eureka
64
● Как работает heartbeat?
● Как работает healthcheck?
eureka.instance.leaseRenewalIntervalInSeconds: 3
eureka.instance.leaseExpirationDurationInSeconds: 3
Boo
65
Consul + Docker
https://github.com/docker/docker/issues/8795
docker run --net=host 
--privileged --rm 
cap10morgan/conntrack
production way! :)
66
Boo
67
Demo -> Time to Discover
69
Где мой порт?
70
71
Какие есть варианты?
● Nginx/Haproxy + consul template
● Haproxy + bamboo (need marathon)
● Netflix Zuul (Java way!!!)
● Custom Servlet <- все с этого начинают!
72
Nginx + consul_template
{{range services}}
upstream {{.Name}} {
least_conn;
{{range service .Name}}
server {{.Address}}:{{.Port}} max_fails=3 fail_timeout=60 weight=1;
{{else}}server localhost:60000;{{end}}
}
{{end}}
server {
server_name localhost;
{{range services}}
location /{{.Name}}/ {
proxy_pass http://{{.Name}}/;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
{{end}}
}
73
Nginx + consul_template
upstream hippoapi {
least_conn;
server server1:8080 max_fails=3 fail_timeout=60 weight=1;
server server1:8081 max_fails=3 fail_timeout=60 weight=1;
server server1:8082 max_fails=3 fail_timeout=60 weight=1;
}
server {
server_name localhost;
location /hippoapi/ {
proxy_pass http://hippoapi/;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
74
Bamboo + haproxy + marathon
{ "Marathon": { "Endpoint": "{{bamboo_marathon_endpoint}}", "UseEventStream": true },
"Bamboo": {
"Endpoint": "{{bamboo_endpoint}}",
"Zookeeper": {
"Host": "{{bamboo_zk_hosts}}",
"Path": "/marathon-haproxy/state",
"ReportingDelay": 5
}},
"HAProxy": {
"TemplatePath": "config/haproxy_template.cfg",
"OutputPath": "/etc/haproxy/haproxy.cfg",
"ReloadCommand": "haproxy -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid -D -sf
$(cat /var/run/haproxy.pid)"
},
"StatsD": { "Enabled": false, "Host": "localhost:8125", "Prefix": "{{bamboo_statsd_prefix}}" }
}
Работает при наличии mesos+marathon :)75
Netflix Zuul
76
Netflix Zuul
77
POST /myservice?param1=1&param2=2&param3=3
BODY { “order_id”: 1234 }
Что тут может быть не так?
if(request.getMethod().equalsIgnoreCase("POST") && request.getQueryString() !=null) {
StringTokenizer st = new StringTokenizer(this.request.getQueryString(), "&");
while (st.hasMoreTokens()) {
String s = st.nextToken();
int i = s.indexOf("=");
if (i > 0 && s.length() > i + 1) {
String name = s.substring(0, i);
builder.remove(name);
}
}
}
POST /myservice?param1=1&param2=2&param3=3
Окау, добавим свой Zull pre filter
Boo
78
Demo -> Gateway Time
Demo -> FBI Time
82
+-------------------------------------------+
| Server |
| (single-threaded, event-driven etc) |
+-------------------------------------------+
| Processor |
| (compiler generated) |
+-------------------------------------------+
| Protocol |
| (JSON, compact, binary etc) |
+-------------------------------------------+
| Transport |
| (raw TCP, HTTP etc) |
+-------------------------------------------+
● Просто*
● Гибко*
● Безопасно*
*по нашему скромному мнению
83
Apache Thrift
namespace java info.developerblog.services
struct TUser { #это наш любимый пользователь
1: required i64 userId #а это его идентификатор
}
struct TFbiResponse { #результат вызова сервиса
1: required string lastFink #дата последнего стука ( да, это строка :) )
}
service TFbiService { #а это наш сервис
TFbiResponse fink( #метод “постучи в ФБР”
1: required TUser user,
2: required i32 hippoCount,
3: required i32 fee
)
}
84
Demo -> RPC Time
Безопасность
86
Защита на уровне сервиса
87
Защита на уровне сервиса #2
88
Опять этот gateway
89
REST/HTTP
Authorization: Bearer <TOKEN>
ClientID: <ID>
90
Thrift API Gateway
service InternalTestService {
SomeReturnData getSomeData(
1: UserData userData,
2: RequestData requestData
) throws (1: SomeException e);
}
91
Thrift API Gateway
service InternalTestService {
SomeReturnData getSomeData(
1: UserData userData,
2: RequestData requestData
) throws (1: SomeException e);
}
service ExternalTestService {
SomeReturnData getSomeData(
1: AuthToken authData,
2: RequestData requestData
) throws (1: SomeException e,
99: UnauthorizedException ue);
}
92
int startPosition = findStartPosition(protocol);
TBase userData = exchanger.process(
extractAuthToken(protocol,exchanger.createEmptyAuthToken())
);
int endPosition = findEndPosition(protocol);
return mergeArrays(
getSkippedPart(protocol, startPosition),
serializeUserData(protocolFactory, userData),
getAfterTokenPart(protocol, endPosition, thriftBody.length)
);
93
94
Springway
@SpringBootApplication
@EnableThriftGateway
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
95
Demo -> Thrift the Ripper
Основные возможности
● Fallbacks
● Gracefull degradation
● Concurrency Execution
● Request Collapsing
● Caching
● Metrics polling
99
Demo -> Hystrix the Saviour
Boo
102
Типичная микросервисная архитектура
103
104
А что в этих ваших интернетах?
И чё?
Гибкость
Поддерживаемость
● Микросервисы это непросто
○ orchestration
○ discovery
○ fallback
Скорость
И чё?
● В Spring-е нет:
○ @ThriftHandler
○ @ThriftClient
○ @EnableThriftGateway
● Consul Cloud -> 1.0.0.M3
Помните SOAP ?
Микросервисы тоже не бесплатный обед
Agenda
1. Past
2. Present
3. Future
109
110
Operational requirements
● Orchestration (DURS)
● Service discovery
● Monitoring
● Resiliency
● Culture
111
112
https://xebialabs.com/periodic-table-of-devops-tools/
Docker etc.
113
Docker evolution
114
Эра PAAS
● Mesos + Marathon framework
● Kubernetes
● Cloud foundry
● Other..
○ Heroku
○ Tutum
○ Mesosphere DCOS
○ ... 115
116
Network
HTTP/2
● HTTP/2 Client (Java SE)
○ http://openjdk.java.net/jeps/110
● Servlet 4.0 (HTTP/2)
○ https://www.jcp.org/en/jsr/detail?id=369
117
grpc.io
● http/2
● только async / netty
● protobuf 3
118
Hello grpc world!
service Greeter {
rpc SayHello (HelloRequest) returns (HelloReply) {}
}
message HelloRequest {
string name = 1;
}
message HelloReply {
string message = 1;
}
public static interface Greeter {
public void sayHello(HelloRequest request,
StreamObserver<HelloReply> responseObserver);
}
119
Zuul 2.0
● websocket support
● migrate to netty
120
Docker Network
http://developerblog.info/2015/11/16/splendors-and-miseries-of-docker-network/
● синтаксический сахар
○ docker network create --driver bridge mynet
● пока проблемы с multi-host сетями
○ несколько сетевых интерфейсов
○ рудиментарный DNS
○ плагины не работают/не на 100%
121
Docker Network + Spring Consul Cloud
https://github.com/spring-cloud/spring-cloud-consul/issues/115
public static InetAddress getFirstNonLoopbackAddress() {
///
for (Enumeration<NetworkInterface> enumNic = NetworkInterface.getNetworkInterfaces();
enumNic.hasMoreElements(); ) {
///
}
///
}
eth0 - overlay
eth1 - bridge
122
Ooops
123
Java SE 9
● Jigsaw
○ http://openjdk.java.net/jeps/200
● Java Reactive JEP 266 (не в 9ке видимо)
○ http://openjdk.java.net/jeps/266
124
Eureka 2.0
● server group
● guaranted instance id uniqueness
● fast and simple replication
● write cluster/read cluster
125
Event Sourcing / CQRS / SAGA
http://gotocon.com/dl/goto-chicago-2015/slides/CaitieMcCaffrey_ApplyingTheSagaPattern.pdf
126
127
128
Saga guarantee
● T1 -> T2 -> T3 -> … -> Tn
● T1 -> T2 -> … Tn -> Cn … -> C2 -> C1
129
130
131
132
133
DDDD (4D)
Выводы. Микросервисы...
134
1. должны работать как единая система для
предоставления законченной функциональности
2. дают вам опции, как тестировать и где тестировать
ваш код
3. дают возможность закладывать нужные оси
вариативности в вашу архитектуру (да да,
подготавливаемся вставлять костыли на любых
уровнях!)
4. предполагают, что вы готовы вникать в вещи, не
связанные непосредственно с кодом продукта (а это
80% времени)
5. принесут вам радость, только если налажен CD,
иначе только боль
135
Ссылки
Оригинальное исполнение
https://github.com/bsideup/thrift-spring-boot-starter
Крутой плагин для Gradle
https://github.com/bsideup/GradleThrift
Forward2Docker
https://github.com/bsideup/forward2docker/releases
136
@bsideup
Code. Better. Together.
Spring Thrift Client (Proof of Concept)
https://github.com/aatarasoff/spring-thrift-starter
Thrift API Gateway (Proof of Concept)
https://github.com/aatarasoff/thrift-api-gateway-core
https://github.com/aatarasoff/spring-thrift-api-gateway
Примеры сегодняшнего дня
https://github.com/lavcraft/jug-samples
137
Высокие теории
Sam Newman “Building Microservices”
Martin Fowler “Microservice TradeOff” “Microservices”
“The Twelwe-Factor App” http://12factor.net
Hystrix: managing failures in distributed systems - Tomasz Nurkiewicz https:
//www.youtube.com/watch?v=JadVts_prtA
138
Спасибо! Ваши вопросы
@tolkv
@aatarasoff
139

More Related Content

What's hot

Как приручить реактивное программирование
Как приручить реактивное программированиеКак приручить реактивное программирование
Как приручить реактивное программированиеDotNetConf
 
Эволюция корпоративных Web приложений. Молотков Андрей D2D Just.NET
Эволюция корпоративных Web приложений. Молотков Андрей D2D Just.NETЭволюция корпоративных Web приложений. Молотков Андрей D2D Just.NET
Эволюция корпоративных Web приложений. Молотков Андрей D2D Just.NETDev2Dev
 
Continuous Delivery для ASP.NET MVC проекта под Linux
Continuous Delivery для ASP.NET MVC проекта под LinuxContinuous Delivery для ASP.NET MVC проекта под Linux
Continuous Delivery для ASP.NET MVC проекта под LinuxDotNetConf
 
Как подружить команду админов с N командами разработки / Денис Яковлев (2ГИС)
Как подружить команду админов с N командами разработки / Денис Яковлев (2ГИС)Как подружить команду админов с N командами разработки / Денис Яковлев (2ГИС)
Как подружить команду админов с N командами разработки / Денис Яковлев (2ГИС)Ontico
 
Дорога к микросервисной архитектуре
Дорога к микросервисной архитектуреДорога к микросервисной архитектуре
Дорога к микросервисной архитектуреCodeFest
 
Как это будет: ASP.NET Core
Как это будет: ASP.NET CoreКак это будет: ASP.NET Core
Как это будет: ASP.NET CoreDotNetConf
 
D2D Pizza JS Илья Беда "Куда мы все катимся?"
D2D Pizza JS Илья Беда "Куда мы все катимся?"D2D Pizza JS Илья Беда "Куда мы все катимся?"
D2D Pizza JS Илья Беда "Куда мы все катимся?"Dev2Dev
 
Олег Миколайченко "Как перестать хранить секреты в git и начать использовать ...
Олег Миколайченко "Как перестать хранить секреты в git и начать использовать ...Олег Миколайченко "Как перестать хранить секреты в git и начать использовать ...
Олег Миколайченко "Как перестать хранить секреты в git и начать использовать ...Fwdays
 
Распределенные системы в Одноклассниках / Олег Анастасьев (Одноклассники)
Распределенные системы в Одноклассниках / Олег Анастасьев (Одноклассники)Распределенные системы в Одноклассниках / Олег Анастасьев (Одноклассники)
Распределенные системы в Одноклассниках / Олег Анастасьев (Одноклассники)Ontico
 
Что нам стоит DAL построить? Акуляков Артём D2D Just.NET
Что нам стоит DAL построить? Акуляков Артём D2D Just.NETЧто нам стоит DAL построить? Акуляков Артём D2D Just.NET
Что нам стоит DAL построить? Акуляков Артём D2D Just.NETDev2Dev
 
Никита Галкин "Ловушки микросервисной архитектуры"
Никита Галкин "Ловушки микросервисной архитектуры"Никита Галкин "Ловушки микросервисной архитектуры"
Никита Галкин "Ловушки микросервисной архитектуры"Fwdays
 
Kubernetes is not needed to 90 percents of the companies.rus
Kubernetes is not needed to 90 percents of the companies.rusKubernetes is not needed to 90 percents of the companies.rus
Kubernetes is not needed to 90 percents of the companies.rusIvan Glushkov
 
Micro orm для жизни. Кожевников Дмитрий D2D Just.NET
Micro orm для жизни. Кожевников Дмитрий D2D Just.NETMicro orm для жизни. Кожевников Дмитрий D2D Just.NET
Micro orm для жизни. Кожевников Дмитрий D2D Just.NETDev2Dev
 
Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...
Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...
Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...Ontico
 
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов Николай
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов НиколайnoBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов Николай
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов НиколайOntico
 
Андрей Ситник
Андрей СитникАндрей Ситник
Андрей СитникCodeFest
 
ZFS - файловая система будущего
ZFS - файловая система будущегоZFS - файловая система будущего
ZFS - файловая система будущегоAlex Chistyakov
 
Эволюционный дизайн. Joker Students Day 2016
Эволюционный дизайн. Joker Students Day 2016Эволюционный дизайн. Joker Students Day 2016
Эволюционный дизайн. Joker Students Day 2016Кирилл Толкачёв
 
Денис Иванов
Денис ИвановДенис Иванов
Денис ИвановCodeFest
 
Дмитрий Стогов
Дмитрий СтоговДмитрий Стогов
Дмитрий СтоговCodeFest
 

What's hot (20)

Как приручить реактивное программирование
Как приручить реактивное программированиеКак приручить реактивное программирование
Как приручить реактивное программирование
 
Эволюция корпоративных Web приложений. Молотков Андрей D2D Just.NET
Эволюция корпоративных Web приложений. Молотков Андрей D2D Just.NETЭволюция корпоративных Web приложений. Молотков Андрей D2D Just.NET
Эволюция корпоративных Web приложений. Молотков Андрей D2D Just.NET
 
Continuous Delivery для ASP.NET MVC проекта под Linux
Continuous Delivery для ASP.NET MVC проекта под LinuxContinuous Delivery для ASP.NET MVC проекта под Linux
Continuous Delivery для ASP.NET MVC проекта под Linux
 
Как подружить команду админов с N командами разработки / Денис Яковлев (2ГИС)
Как подружить команду админов с N командами разработки / Денис Яковлев (2ГИС)Как подружить команду админов с N командами разработки / Денис Яковлев (2ГИС)
Как подружить команду админов с N командами разработки / Денис Яковлев (2ГИС)
 
Дорога к микросервисной архитектуре
Дорога к микросервисной архитектуреДорога к микросервисной архитектуре
Дорога к микросервисной архитектуре
 
Как это будет: ASP.NET Core
Как это будет: ASP.NET CoreКак это будет: ASP.NET Core
Как это будет: ASP.NET Core
 
D2D Pizza JS Илья Беда "Куда мы все катимся?"
D2D Pizza JS Илья Беда "Куда мы все катимся?"D2D Pizza JS Илья Беда "Куда мы все катимся?"
D2D Pizza JS Илья Беда "Куда мы все катимся?"
 
Олег Миколайченко "Как перестать хранить секреты в git и начать использовать ...
Олег Миколайченко "Как перестать хранить секреты в git и начать использовать ...Олег Миколайченко "Как перестать хранить секреты в git и начать использовать ...
Олег Миколайченко "Как перестать хранить секреты в git и начать использовать ...
 
Распределенные системы в Одноклассниках / Олег Анастасьев (Одноклассники)
Распределенные системы в Одноклассниках / Олег Анастасьев (Одноклассники)Распределенные системы в Одноклассниках / Олег Анастасьев (Одноклассники)
Распределенные системы в Одноклассниках / Олег Анастасьев (Одноклассники)
 
Что нам стоит DAL построить? Акуляков Артём D2D Just.NET
Что нам стоит DAL построить? Акуляков Артём D2D Just.NETЧто нам стоит DAL построить? Акуляков Артём D2D Just.NET
Что нам стоит DAL построить? Акуляков Артём D2D Just.NET
 
Никита Галкин "Ловушки микросервисной архитектуры"
Никита Галкин "Ловушки микросервисной архитектуры"Никита Галкин "Ловушки микросервисной архитектуры"
Никита Галкин "Ловушки микросервисной архитектуры"
 
Kubernetes is not needed to 90 percents of the companies.rus
Kubernetes is not needed to 90 percents of the companies.rusKubernetes is not needed to 90 percents of the companies.rus
Kubernetes is not needed to 90 percents of the companies.rus
 
Micro orm для жизни. Кожевников Дмитрий D2D Just.NET
Micro orm для жизни. Кожевников Дмитрий D2D Just.NETMicro orm для жизни. Кожевников Дмитрий D2D Just.NET
Micro orm для жизни. Кожевников Дмитрий D2D Just.NET
 
Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...
Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...
Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...
 
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов Николай
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов НиколайnoBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов Николай
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов Николай
 
Андрей Ситник
Андрей СитникАндрей Ситник
Андрей Ситник
 
ZFS - файловая система будущего
ZFS - файловая система будущегоZFS - файловая система будущего
ZFS - файловая система будущего
 
Эволюционный дизайн. Joker Students Day 2016
Эволюционный дизайн. Joker Students Day 2016Эволюционный дизайн. Joker Students Day 2016
Эволюционный дизайн. Joker Students Day 2016
 
Денис Иванов
Денис ИвановДенис Иванов
Денис Иванов
 
Дмитрий Стогов
Дмитрий СтоговДмитрий Стогов
Дмитрий Стогов
 

Viewers also liked

Микросервисы на практике
Микросервисы на практикеМикросервисы на практике
Микросервисы на практикеVitebsk DSC
 
WILD microSERVICES v2 (JEEConf Edition)
WILD microSERVICES v2 (JEEConf Edition)WILD microSERVICES v2 (JEEConf Edition)
WILD microSERVICES v2 (JEEConf Edition)Aleksandr Tarasov
 
Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)
Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)
Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)Ontico
 
Service Discovery. Spring Cloud Internals
Service Discovery. Spring Cloud InternalsService Discovery. Spring Cloud Internals
Service Discovery. Spring Cloud InternalsAleksandr Tarasov
 
Principles of microservices velocity
Principles of microservices   velocityPrinciples of microservices   velocity
Principles of microservices velocitySam Newman
 
How DevOps messes with your head
How DevOps messes with your head How DevOps messes with your head
How DevOps messes with your head Rob England
 
2015 Upload Campaigns Calendar - SlideShare
2015 Upload Campaigns Calendar - SlideShare2015 Upload Campaigns Calendar - SlideShare
2015 Upload Campaigns Calendar - SlideShareSlideShare
 
What to Upload to SlideShare
What to Upload to SlideShareWhat to Upload to SlideShare
What to Upload to SlideShareSlideShare
 
David fiorito reframe-ia-ignite-deck
David fiorito reframe-ia-ignite-deckDavid fiorito reframe-ia-ignite-deck
David fiorito reframe-ia-ignite-deckDavid Fiorito
 
Proyecto sustentable para san juan tepeuxila, oaxaca
Proyecto sustentable para san juan tepeuxila, oaxacaProyecto sustentable para san juan tepeuxila, oaxaca
Proyecto sustentable para san juan tepeuxila, oaxacaespejodeoesed
 
República Árabe de Egipto
República Árabe de EgiptoRepública Árabe de Egipto
República Árabe de Egiptoespejodeoesed
 
Getting Started With SlideShare
Getting Started With SlideShareGetting Started With SlideShare
Getting Started With SlideShareSlideShare
 
Practical microservices - javazone 2014
Practical microservices -  javazone 2014Practical microservices -  javazone 2014
Practical microservices - javazone 2014Sam Newman
 

Viewers also liked (20)

Микросервисы на практике
Микросервисы на практикеМикросервисы на практике
Микросервисы на практике
 
WILD microSERVICES v2 (JEEConf Edition)
WILD microSERVICES v2 (JEEConf Edition)WILD microSERVICES v2 (JEEConf Edition)
WILD microSERVICES v2 (JEEConf Edition)
 
Docker In Bank Unrated
Docker In Bank UnratedDocker In Bank Unrated
Docker In Bank Unrated
 
Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)
Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)
Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)
 
Service Discovery. Spring Cloud Internals
Service Discovery. Spring Cloud InternalsService Discovery. Spring Cloud Internals
Service Discovery. Spring Cloud Internals
 
Principles of microservices velocity
Principles of microservices   velocityPrinciples of microservices   velocity
Principles of microservices velocity
 
How DevOps messes with your head
How DevOps messes with your head How DevOps messes with your head
How DevOps messes with your head
 
2015 Upload Campaigns Calendar - SlideShare
2015 Upload Campaigns Calendar - SlideShare2015 Upload Campaigns Calendar - SlideShare
2015 Upload Campaigns Calendar - SlideShare
 
What to Upload to SlideShare
What to Upload to SlideShareWhat to Upload to SlideShare
What to Upload to SlideShare
 
Digi pack-new
Digi pack-newDigi pack-new
Digi pack-new
 
Evaluation
Evaluation Evaluation
Evaluation
 
David fiorito reframe-ia-ignite-deck
David fiorito reframe-ia-ignite-deckDavid fiorito reframe-ia-ignite-deck
David fiorito reframe-ia-ignite-deck
 
Volunteer impact report
Volunteer impact reportVolunteer impact report
Volunteer impact report
 
Proyecto sustentable para san juan tepeuxila, oaxaca
Proyecto sustentable para san juan tepeuxila, oaxacaProyecto sustentable para san juan tepeuxila, oaxaca
Proyecto sustentable para san juan tepeuxila, oaxaca
 
Leidy23
Leidy23Leidy23
Leidy23
 
Evaluation
EvaluationEvaluation
Evaluation
 
Storyboard Final
Storyboard Final Storyboard Final
Storyboard Final
 
República Árabe de Egipto
República Árabe de EgiptoRepública Árabe de Egipto
República Árabe de Egipto
 
Getting Started With SlideShare
Getting Started With SlideShareGetting Started With SlideShare
Getting Started With SlideShare
 
Practical microservices - javazone 2014
Practical microservices -  javazone 2014Practical microservices -  javazone 2014
Practical microservices - javazone 2014
 

Similar to микроСЕРВИСЫ: огонь, вода и медные трубы

Дикие микросервисы на JUG Екатеринбург
Дикие микросервисы на JUG ЕкатеринбургДикие микросервисы на JUG Екатеринбург
Дикие микросервисы на JUG ЕкатеринбургКирилл Толкачёв
 
OpenResty: превращаем NGINX в полноценный сервер приложений / Владимир Прота...
OpenResty: превращаем NGINX в полноценный сервер приложений  / Владимир Прота...OpenResty: превращаем NGINX в полноценный сервер приложений  / Владимир Прота...
OpenResty: превращаем NGINX в полноценный сервер приложений / Владимир Прота...Ontico
 
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...IT-Portfolio
 
Highload++2013: TopGun - архитектура терабитной платформы DPI
Highload++2013: TopGun - архитектура терабитной платформы DPIHighload++2013: TopGun - архитектура терабитной платформы DPI
Highload++2013: TopGun - архитектура терабитной платформы DPILeonid Yuriev
 
Борис Павлович - Производительность и масштабируемость OpenStack
Борис Павлович - Производительность и масштабируемость OpenStack Борис Павлович - Производительность и масштабируемость OpenStack
Борис Павлович - Производительность и масштабируемость OpenStack Yandex
 
МРТ для данных / Анастасия Горячева (Avito)
МРТ для данных / Анастасия Горячева (Avito)МРТ для данных / Анастасия Горячева (Avito)
МРТ для данных / Анастасия Горячева (Avito)Ontico
 
МРТ для данных, Frontend Conf 2016
МРТ для данных, Frontend Conf 2016МРТ для данных, Frontend Conf 2016
МРТ для данных, Frontend Conf 2016Anastasia Goryacheva
 
SmartOS/Solaris app tuning tools/technologies on HL++ 2013
SmartOS/Solaris app tuning tools/technologies on HL++ 2013SmartOS/Solaris app tuning tools/technologies on HL++ 2013
SmartOS/Solaris app tuning tools/technologies on HL++ 2013Alex Chistyakov
 
Git in Sky presentation @ HighLoad++ 2013
Git in Sky presentation @ HighLoad++ 2013Git in Sky presentation @ HighLoad++ 2013
Git in Sky presentation @ HighLoad++ 2013Serguei Gitinsky
 
Чему мы научились разрабатывая микросервисы?
Чему мы научились разрабатывая микросервисы?Чему мы научились разрабатывая микросервисы?
Чему мы научились разрабатывая микросервисы?Vadim Madison
 
Windows Azure & NodeJS Microsoft SWIT 2012
Windows Azure & NodeJS Microsoft SWIT 2012 Windows Azure & NodeJS Microsoft SWIT 2012
Windows Azure & NodeJS Microsoft SWIT 2012 Dmytro Mindra
 
PostgreSQL performance recipes
PostgreSQL performance recipesPostgreSQL performance recipes
PostgreSQL performance recipesAlexey Ermakov
 
Построение облачных процессов с помощью Mistral
Построение облачных процессов с помощью MistralПостроение облачных процессов с помощью Mistral
Построение облачных процессов с помощью MistralCodeFest
 
Nikita Galkin "5 production Node.js stories"
Nikita Galkin "5 production Node.js stories"Nikita Galkin "5 production Node.js stories"
Nikita Galkin "5 production Node.js stories"OdessaJS Conf
 
High Load 2009 Dimaa Rus Ready
High Load 2009 Dimaa Rus ReadyHigh Load 2009 Dimaa Rus Ready
High Load 2009 Dimaa Rus ReadyHighLoad2009
 
Сергей Житинский, Александр Чистяков (Git in Sky)
Сергей Житинский, Александр Чистяков (Git in Sky)Сергей Житинский, Александр Чистяков (Git in Sky)
Сергей Житинский, Александр Чистяков (Git in Sky)Ontico
 
Микросервисы: первая кровь
Микросервисы: первая кровьМикросервисы: первая кровь
Микросервисы: первая кровьМаксим Сячин
 
Windows Azure and node js
Windows Azure and node jsWindows Azure and node js
Windows Azure and node jsAlex Tumanoff
 
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala  / Денис Иванов (2GIS)Путь от монолита на PHP к микросервисам на Scala  / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)Ontico
 

Similar to микроСЕРВИСЫ: огонь, вода и медные трубы (20)

Дикие микросервисы на JUG Екатеринбург
Дикие микросервисы на JUG ЕкатеринбургДикие микросервисы на JUG Екатеринбург
Дикие микросервисы на JUG Екатеринбург
 
Wild microservices and imaginary DevOps
Wild microservices and imaginary DevOpsWild microservices and imaginary DevOps
Wild microservices and imaginary DevOps
 
OpenResty: превращаем NGINX в полноценный сервер приложений / Владимир Прота...
OpenResty: превращаем NGINX в полноценный сервер приложений  / Владимир Прота...OpenResty: превращаем NGINX в полноценный сервер приложений  / Владимир Прота...
OpenResty: превращаем NGINX в полноценный сервер приложений / Владимир Прота...
 
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
 
Highload++2013: TopGun - архитектура терабитной платформы DPI
Highload++2013: TopGun - архитектура терабитной платформы DPIHighload++2013: TopGun - архитектура терабитной платформы DPI
Highload++2013: TopGun - архитектура терабитной платформы DPI
 
Борис Павлович - Производительность и масштабируемость OpenStack
Борис Павлович - Производительность и масштабируемость OpenStack Борис Павлович - Производительность и масштабируемость OpenStack
Борис Павлович - Производительность и масштабируемость OpenStack
 
МРТ для данных / Анастасия Горячева (Avito)
МРТ для данных / Анастасия Горячева (Avito)МРТ для данных / Анастасия Горячева (Avito)
МРТ для данных / Анастасия Горячева (Avito)
 
МРТ для данных, Frontend Conf 2016
МРТ для данных, Frontend Conf 2016МРТ для данных, Frontend Conf 2016
МРТ для данных, Frontend Conf 2016
 
SmartOS/Solaris app tuning tools/technologies on HL++ 2013
SmartOS/Solaris app tuning tools/technologies on HL++ 2013SmartOS/Solaris app tuning tools/technologies on HL++ 2013
SmartOS/Solaris app tuning tools/technologies on HL++ 2013
 
Git in Sky presentation @ HighLoad++ 2013
Git in Sky presentation @ HighLoad++ 2013Git in Sky presentation @ HighLoad++ 2013
Git in Sky presentation @ HighLoad++ 2013
 
Чему мы научились разрабатывая микросервисы?
Чему мы научились разрабатывая микросервисы?Чему мы научились разрабатывая микросервисы?
Чему мы научились разрабатывая микросервисы?
 
Windows Azure & NodeJS Microsoft SWIT 2012
Windows Azure & NodeJS Microsoft SWIT 2012 Windows Azure & NodeJS Microsoft SWIT 2012
Windows Azure & NodeJS Microsoft SWIT 2012
 
PostgreSQL performance recipes
PostgreSQL performance recipesPostgreSQL performance recipes
PostgreSQL performance recipes
 
Построение облачных процессов с помощью Mistral
Построение облачных процессов с помощью MistralПостроение облачных процессов с помощью Mistral
Построение облачных процессов с помощью Mistral
 
Nikita Galkin "5 production Node.js stories"
Nikita Galkin "5 production Node.js stories"Nikita Galkin "5 production Node.js stories"
Nikita Galkin "5 production Node.js stories"
 
High Load 2009 Dimaa Rus Ready
High Load 2009 Dimaa Rus ReadyHigh Load 2009 Dimaa Rus Ready
High Load 2009 Dimaa Rus Ready
 
Сергей Житинский, Александр Чистяков (Git in Sky)
Сергей Житинский, Александр Чистяков (Git in Sky)Сергей Житинский, Александр Чистяков (Git in Sky)
Сергей Житинский, Александр Чистяков (Git in Sky)
 
Микросервисы: первая кровь
Микросервисы: первая кровьМикросервисы: первая кровь
Микросервисы: первая кровь
 
Windows Azure and node js
Windows Azure and node jsWindows Azure and node js
Windows Azure and node js
 
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala  / Денис Иванов (2GIS)Путь от монолита на PHP к микросервисам на Scala  / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
 

микроСЕРВИСЫ: огонь, вода и медные трубы