ݺߣ

ݺߣShare a Scribd company logo
Анатомия

веб-­‐сервиса
Андрей	
 Смирнов
О	
 чем	
 мы	
 будем	
 говорить?
• Введение	
 
• Сетевой	
 ввод-­‐вывод	
 
• Многозадачность	
 
• Драйвер	
 БД	
 
• Взаимодействие	
 
• Фреймворки
Backend
Чем	
 занят	
 backend?
• Склеивание	
 строк	
 
• Сетевой	
 ввод-­‐вывод
L1	
 cache	
 reference	
 

0.5	
 ns	
 
Main	
 memory	
 
reference

100	
 ns	
 
Read	
 1	
 MB	
 sequenRally	
 
from	
 network	
 

10,000,000	
 ns	
 
Read	
 1	
 MB	
 sequenRally	
 
from	
 disk

30,000,000	
 ns
Что	
 делает	
 backend
1. Принять	
 соединение	
 (обычно	
 от	
 proxy)	
 и	
 
распарсить	
 HTTP-­‐запрос	
 
2. Аутенфикация	
 
3. Авторизация	
 
4. Сессия
Что	
 делает	
 backend
5. Распарсить	
 URL,	
 routing	
 
6. Определение	
 формата	
 вывода,	
 rate	
 
limiting,	
 …	
 
7. Бизнес-­‐логика,	
 выполнение	
 запроса,	
 
кеширование	
 
8. Формирование	
 ответа,	
 шаблоны
Сетевой	
 ввод-­‐вывод
• Блокирующийся	
 
• Неблокирующийся	
 
• Асинхронный
UNIX	
 (POSIX)
• fd	
 -­‐	
 файловый	
 дескриптор	
 
• fd	
 =	
 socket()	
 
• listen(fd)/accept(fd)	
 
• read(fd,	
 buf)	
 
• write(fd,	
 buf)	
 
• close(fd)
Блокирующийся	
 

ввод-­‐вывод
• accept(fd)	
 -­‐	
 заблокируется,	
 пока	
 не	
 будет	
 
нового	
 входящего	
 соединения	
 
• read(fd,	
 buf)	
 -­‐	
 заблокируется,	
 пока	
 не	
 
прибудут	
 данные	
 в	
 сокет	
 
• write(fd,	
 buf)	
 -­‐	
 заблокируется,	
 пока	
 не	
 
освободится	
 место	
 в	
 буфере	
 TCP
Неблокирующийся	
 

ввод-­‐вывод
• Любая	
 операция	
 завершается	
 немедленно	
 
• Вместо	
 того,	
 чтобы	
 заблокироваться,	
 вызов	
 
возвращает	
 EAGAIN/EWOULDBLOCK
Опрос	
 готовности
• Нотификации:	
 
• level-­‐triggered	
 (состояние)	
 
• edge-­‐triggered	
 (изменение	
 состояния)	
 
• 	
 Механизмы:	
 
• select(),	
 poll()	
 
• epoll(),	
 kqueue()
Неблокирующий

ввод-­‐вывод
• select(fds,	
 Rmeout)	
 ⇛	
 ready	
 to	
 read/write	
 
• do	
 read/write	
 unRl	
 EAGAIN
Многозадачность
• Обслуживание	
 нескольких	
 клиентов	
 
одновременно	
 
• Цель:	
 минимизировать	
 время	
 отклика	
 при	
 
условии	
 максимальной	
 нагрузки
Процессы
• Полная*	
 изоляция	
 
• Видимость	
 для	
 планировщика	
 ОС	
 
• Сложность	
 коммуникации	
 
• Использование	
 всех	
 процессоров
Процессы
code
r/o
data
heap
code
r/o
data
heap
fork()
listen() accept()
SHM
Нити	
 (ОС)
• Видны	
 планировщику	
 
• Имеют	
 отдельный	
 стек	
 и	
 TLS	
 
• Более	
 легковесные,	
 чем	
 процесс	
 
• Отсутствует	
 изоляция	
 
• Сложность	
 написания	
 корректных	
 программ
Синхронизация
• Любой	
 доступ	
 к	
 общим	
 данным	
 должен	
 
быть	
 синхронизирован	
 
• Атомарные	
 операции	
 (без	
 синхронизации)	
 
• GIL
Deadlock
Worker
Event	
 Loop
Кооперативная	
 
многозадачность
• “Невидима”	
 для	
 ОС,	
 один	
 процесс	
 (нить)	
 
• “Поток”	
 добровольно	
 передает	
 управление	
 
другому	
 (проще	
 синхронизация)	
 
• Явная:	
 callbackи	
 
• Неявная:	
 green	
 threads
Реактор
• “Дай	
 мне	
 кучу	
 сокетов,	
 а	
 я	
 сделаю	
 callback,	
 
когда	
 они	
 будут	
 готовы”	
 
• Таймер:	
 “Вызови	
 меня	
 через	
 X	
 мс”
node.js
var net = require('net');
var client = net.connect({port: 8124},
function() { //'connect' listener
console.log('client connected');
client.write('world!rn');
});
client.on('data', function(data) {
console.log(data.toString());
client.end();
});
client.on('end', function() {
console.log('client disconnected');
});
gevent
def print_head(url):!
print('Starting %s' % url)!
data = urlopen(url).read()!
print('%s: %s bytes: %r' % (url, len(data), data[:50]))!
!
jobs = [gevent.spawn(print_head, url) for url in urls]!
!
gevent.wait(jobs)!
Комбинированные	
 варианты
• 1:1	
 
• N:1	
 
• M:N
Драйвер	
 “БД”
• База	
 данных	
 
• Очередь	
 
• K-­‐V	
 хранилище	
 
• Другой	
 сервис	
 
• …
Анатомия веб-сервиса (РИТ-2014)
Соединение
• Соединение:	
 
• на	
 один	
 запрос	
 
• постоянное
TCP!
connect
Auth Send query Wait Result
Send query Wait Result Send query Wait Result
Disconnect
Pipelining
• Pipelining	
 запросов
Send query Wait Result Send query Wait Result
Send query Send query Result Result
Соединения
• Кол-­‐во	
 соединений:	
 
• одно	
 
• connecRon	
 pool	
 
• по	
 количеству	
 запросов
Proxy
Взаимодействие
• Очереди	
 
• вычислительно	
 сложные	
 задачи	
 
• асинхронные	
 действия	
 
• Архитектурное	
 деление	
 на	
 компоненты	
 
• Обращения	
 к	
 другим	
 сервисам
Очередь	
 задач
Очереди
• Publish-­‐Subcribe	
 vs.	
 Producer-­‐Consumer	
 
• Redis,	
 beanstalkd	
 
• pgq	
 
• RabbitMQ	
 
• Apache	
 Ka•a
RPC
• Синхронное	
 взаимодействие:	
 запрос-­‐ответ
Широковещательная	
 шина
ØMQ
• Коммуникационная	
 библиотека	
 
• Без	
 брокера	
 
• Абстракция	
 установления	
 соединения,	
 
реконнектов,	
 транспорта	
 и	
 т.п.	
 
• Паттерны	
 обмена	
 сообщениями
Service-­‐Oriented	
 Architecture
SOA
• Четко	
 выделенные	
 сервисы	
 со	
 своим	
 
интерфейсом	
 
• Сервисы	
 независимы	
 
• Сложность	
 эксплуатации	
 
• Независимое	
 масштабирование
Реальный	
 мир
• А	
 что	
 же	
 происходит	
 в	
 моем	
 любимом	
 
языке	
 программирования	
 X?
JavaScript
• Однопоточный	
 
• Явная	
 кооперативная	
 многозадачность	
 
• AJAX,	
 Timer,	
 CSS3	
 AnimaRon,	
 …	
 
• jQuery.Deferred()
PHP
• Нет	
 потоков*	
 
• “Начинаем	
 сначала”	
 на	
 каждый	
 запрос	
 
• Потребность	
 в	
 “accelerator”ах	
 
• Персистентные	
 соединения	
 с	
 БД
FastCGI
Ruby	
 on	
 Rails
• Огромное	
 влияние	
 
• Редкие	
 многопоточные	
 применения	
 
• MRI	
 (1.8),	
 YARV	
 (1.9+),	
 JRuby	
 
• Event	
 Machine	
 
• Rack:	
 middleware
Python
• WSGI:	
 middleware	
 
• Блокирующий	
 ввод-­‐вывод	
 (Django,	
 …)	
 
• Явная	
 кооперативная	
 многозадачность	
 
(Twisted,	
 Tornado)	
 
• Корутины	
 (gevent,	
 eventlet,	
 …)
Java
• Потоки	
 ОС	
 
• Неблокирующий	
 ввод-­‐вывод:	
 NIO,	
 NIO2	
 
• Nežy	
 
• Thread	
 Pool
Go
• Горутины	
 (gorouRnes)	
 
• Комбинированный	
 вариант	
 (M:N)	
 
• Неблокирующий	
 ввод-­‐вывод	
 
• Каналы
Erlang
• Actor	
 model	
 
• Process	
 -­‐	
 комбинированная	
 модель	
 
• Полная	
 изоляция	
 (обмен	
 данными	
 через	
 
коммуникацию)	
 
• Распределенные	
 процессы
© Copyright 2014 Andrey Smirnov
Разработка	
 надежных	
 
высоконагруженных	
 систем
• 24,	
 25	
 и	
 26-­‐го	
 мая,	
 Москва	
 
• hžp://smira.highload.ru/	
 
• Мастер-­‐класс	
 с	
 практическими	
 заданиями

More Related Content

What's hot (18)

Отказоустойчивый микрокластер своими руками, Виталий Гаврилов (Ленвендо)
Отказоустойчивый микрокластер своими руками, Виталий Гаврилов (Ленвендо)Отказоустойчивый микрокластер своими руками, Виталий Гаврилов (Ленвендо)
Отказоустойчивый микрокластер своими руками, Виталий Гаврилов (Ленвендо)
Ontico
Архитектура хранения фотографий в Badoo
Архитектура хранения фотографий в BadooАрхитектура хранения фотографий в Badoo
Архитектура хранения фотографий в Badoo
Badoo Development
Язык Lua — секреты производительности / Ник Заварицкий (Mail.ru)
Язык Lua — секреты производительности / Ник Заварицкий (Mail.ru)Язык Lua — секреты производительности / Ник Заварицкий (Mail.ru)
Язык Lua — секреты производительности / Ник Заварицкий (Mail.ru)
Ontico
Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт...
 Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт... Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт...
Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт...
Ontico
Системный администратор Vkontakte. Как? / Антон Кирюшкин (Vkontakte)
Системный администратор Vkontakte. Как? / Антон Кирюшкин (Vkontakte)Системный администратор Vkontakte. Как? / Антон Кирюшкин (Vkontakte)
Системный администратор Vkontakte. Как? / Антон Кирюшкин (Vkontakte)
Ontico
Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)
Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)
Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)
Ontico
Архитектура поиска в Booking.com / Иван Круглов (Booking.com)
Архитектура поиска в Booking.com / Иван Круглов (Booking.com)Архитектура поиска в Booking.com / Иван Круглов (Booking.com)
Архитектура поиска в Booking.com / Иван Круглов (Booking.com)
Ontico
Как собирать gps треки раз в секунду, экономя траффик
Как собирать gps треки раз в секунду, экономя траффикКак собирать gps треки раз в секунду, экономя траффик
Как собирать gps треки раз в секунду, экономя траффик
Andrew Minkin
Инструменты высоконагруженных проектов - кэширование и очереди, Вячеслав Моск...
Инструменты высоконагруженных проектов - кэширование и очереди, Вячеслав Моск...Инструменты высоконагруженных проектов - кэширование и очереди, Вячеслав Моск...
Инструменты высоконагруженных проектов - кэширование и очереди, Вячеслав Моск...
Ontico
Yevgen Lysenko "AWS RDS Aurora Serverless, ECS Fargate and more serverless-pr...
Yevgen Lysenko "AWS RDS Aurora Serverless, ECS Fargate and more serverless-pr...Yevgen Lysenko "AWS RDS Aurora Serverless, ECS Fargate and more serverless-pr...
Yevgen Lysenko "AWS RDS Aurora Serverless, ECS Fargate and more serverless-pr...
Fwdays
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов Николай
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов НиколайnoBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов Николай
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов Николай
Ontico
Cпецкурс 2014, занятие 7. Web-приложения
Cпецкурс 2014, занятие 7. Web-приложенияCпецкурс 2014, занятие 7. Web-приложения
Cпецкурс 2014, занятие 7. Web-приложения
7bits
Хранение json-документов в Tarantool / Андрей Дроздов (Mail.ru Group)
Хранение json-документов в Tarantool / Андрей Дроздов (Mail.ru Group)Хранение json-документов в Tarantool / Андрей Дроздов (Mail.ru Group)
Хранение json-документов в Tarantool / Андрей Дроздов (Mail.ru Group)
Ontico
Антон Турецкий
Антон ТурецкийАнтон Турецкий
Антон Турецкий
CodeFest
Андрей Ситник
Андрей СитникАндрей Ситник
Андрей Ситник
CodeFest
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
Ontico
Курс высокие нагрузки: очереди (отрывок)
Курс высокие нагрузки:  очереди (отрывок)Курс высокие нагрузки:  очереди (отрывок)
Курс высокие нагрузки: очереди (отрывок)
Andrey Smirnov
Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...
Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...
Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...
Ontico
Отказоустойчивый микрокластер своими руками, Виталий Гаврилов (Ленвендо)
Отказоустойчивый микрокластер своими руками, Виталий Гаврилов (Ленвендо)Отказоустойчивый микрокластер своими руками, Виталий Гаврилов (Ленвендо)
Отказоустойчивый микрокластер своими руками, Виталий Гаврилов (Ленвендо)
Ontico
Архитектура хранения фотографий в Badoo
Архитектура хранения фотографий в BadooАрхитектура хранения фотографий в Badoo
Архитектура хранения фотографий в Badoo
Badoo Development
Язык Lua — секреты производительности / Ник Заварицкий (Mail.ru)
Язык Lua — секреты производительности / Ник Заварицкий (Mail.ru)Язык Lua — секреты производительности / Ник Заварицкий (Mail.ru)
Язык Lua — секреты производительности / Ник Заварицкий (Mail.ru)
Ontico
Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт...
 Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт... Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт...
Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт...
Ontico
Системный администратор Vkontakte. Как? / Антон Кирюшкин (Vkontakte)
Системный администратор Vkontakte. Как? / Антон Кирюшкин (Vkontakte)Системный администратор Vkontakte. Как? / Антон Кирюшкин (Vkontakte)
Системный администратор Vkontakte. Как? / Антон Кирюшкин (Vkontakte)
Ontico
Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)
Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)
Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)
Ontico
Архитектура поиска в Booking.com / Иван Круглов (Booking.com)
Архитектура поиска в Booking.com / Иван Круглов (Booking.com)Архитектура поиска в Booking.com / Иван Круглов (Booking.com)
Архитектура поиска в Booking.com / Иван Круглов (Booking.com)
Ontico
Как собирать gps треки раз в секунду, экономя траффик
Как собирать gps треки раз в секунду, экономя траффикКак собирать gps треки раз в секунду, экономя траффик
Как собирать gps треки раз в секунду, экономя траффик
Andrew Minkin
Инструменты высоконагруженных проектов - кэширование и очереди, Вячеслав Моск...
Инструменты высоконагруженных проектов - кэширование и очереди, Вячеслав Моск...Инструменты высоконагруженных проектов - кэширование и очереди, Вячеслав Моск...
Инструменты высоконагруженных проектов - кэширование и очереди, Вячеслав Моск...
Ontico
Yevgen Lysenko "AWS RDS Aurora Serverless, ECS Fargate and more serverless-pr...
Yevgen Lysenko "AWS RDS Aurora Serverless, ECS Fargate and more serverless-pr...Yevgen Lysenko "AWS RDS Aurora Serverless, ECS Fargate and more serverless-pr...
Yevgen Lysenko "AWS RDS Aurora Serverless, ECS Fargate and more serverless-pr...
Fwdays
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов Николай
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов НиколайnoBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов Николай
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов Николай
Ontico
Cпецкурс 2014, занятие 7. Web-приложения
Cпецкурс 2014, занятие 7. Web-приложенияCпецкурс 2014, занятие 7. Web-приложения
Cпецкурс 2014, занятие 7. Web-приложения
7bits
Хранение json-документов в Tarantool / Андрей Дроздов (Mail.ru Group)
Хранение json-документов в Tarantool / Андрей Дроздов (Mail.ru Group)Хранение json-документов в Tarantool / Андрей Дроздов (Mail.ru Group)
Хранение json-документов в Tarantool / Андрей Дроздов (Mail.ru Group)
Ontico
Антон Турецкий
Антон ТурецкийАнтон Турецкий
Антон Турецкий
CodeFest
Андрей Ситник
Андрей СитникАндрей Ситник
Андрей Ситник
CodeFest
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
Ontico
Курс высокие нагрузки: очереди (отрывок)
Курс высокие нагрузки:  очереди (отрывок)Курс высокие нагрузки:  очереди (отрывок)
Курс высокие нагрузки: очереди (отрывок)
Andrey Smirnov
Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...
Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...
Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...
Ontico

Similar to Анатомия веб-сервиса (РИТ-2014) (20)

Анатомия веб-сервиса, Андрей Смирнов (ex-Skype)
Анатомия веб-сервиса, Андрей Смирнов (ex-Skype)Анатомия веб-сервиса, Андрей Смирнов (ex-Skype)
Анатомия веб-сервиса, Андрей Смирнов (ex-Skype)
Ontico
Клиент-серверные приложения на iPhone
Клиент-серверные приложения на iPhoneКлиент-серверные приложения на iPhone
Клиент-серверные приложения на iPhone
Pavel Bashmakov
Использование 0MQ для построения распределёных систем (Андрей Охлопков, Алекс...
Использование 0MQ для построения распределёных систем (Андрей Охлопков, Алекс...Использование 0MQ для построения распределёных систем (Андрей Охлопков, Алекс...
Использование 0MQ для построения распределёных систем (Андрей Охлопков, Алекс...
Ontico
Выжимаем из сервера максимум (Андрей Паньгин)
Выжимаем из сервера максимум (Андрей Паньгин)Выжимаем из сервера максимум (Андрей Паньгин)
Выжимаем из сервера максимум (Андрей Паньгин)
Ontico
андрей паньгин
андрей паньгинандрей паньгин
андрей паньгин
kuchinskaya
Мастер-класс "Микросервисы: удобно, надежно, серебрянопульно" / Евгений Павло...
Мастер-класс "Микросервисы: удобно, надежно, серебрянопульно" / Евгений Павло...Мастер-класс "Микросервисы: удобно, надежно, серебрянопульно" / Евгений Павло...
Мастер-класс "Микросервисы: удобно, надежно, серебрянопульно" / Евгений Павло...
Ontico
Облако в Badoo год спустя
Облако в Badoo год спустяОблако в Badoo год спустя
Облако в Badoo год спустя
Yuriy Nasretdinov
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Badoo Development
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Ontico
Java tricks for high-load server programming
Java tricks for high-load server programmingJava tricks for high-load server programming
Java tricks for high-load server programming
Andrei Pangin
Архитектура программных систем на Node.js
Архитектура программных систем на Node.jsАрхитектура программных систем на Node.js
Архитектура программных систем на Node.js
Timur Shemsedinov
Разгоняем 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
Hosting for forbes.ru_
Hosting for forbes.ru_Hosting for forbes.ru_
Hosting for forbes.ru_
drupalconf
JSLab.Тимур Шемсединов. "Архитектура программных систем на Node.js"
JSLab.Тимур Шемсединов. "Архитектура программных систем на Node.js"JSLab.Тимур Шемсединов. "Архитектура программных систем на Node.js"
JSLab.Тимур Шемсединов. "Архитектура программных систем на Node.js"
GeeksLab Odessa
Developing highload servers with Java
Developing highload servers with JavaDeveloping highload servers with Java
Developing highload servers with Java
Andrei Pangin
Использование 0MQ для построения low latency распределёных систем, Андрей Охл...
Использование 0MQ для построения low latency распределёных систем, Андрей Охл...Использование 0MQ для построения low latency распределёных систем, Андрей Охл...
Использование 0MQ для построения low latency распределёных систем, Андрей Охл...
Fuenteovejuna
Опыт использования NoSQL-хранилищ (Андрей Новиков)
Опыт использования NoSQL-хранилищ (Андрей Новиков)Опыт использования NoSQL-хранилищ (Андрей Новиков)
Опыт использования NoSQL-хранилищ (Андрей Новиков)
Olga Lavrentieva
Незаурядная Java как инструмент разработки высоконагруженного сервера
Незаурядная Java как инструмент разработки высоконагруженного сервераНезаурядная Java как инструмент разработки высоконагруженного сервера
Незаурядная Java как инструмент разработки высоконагруженного сервера
odnoklassniki.ru
Анатомия веб-сервиса, Андрей Смирнов (ex-Skype)
Анатомия веб-сервиса, Андрей Смирнов (ex-Skype)Анатомия веб-сервиса, Андрей Смирнов (ex-Skype)
Анатомия веб-сервиса, Андрей Смирнов (ex-Skype)
Ontico
Клиент-серверные приложения на iPhone
Клиент-серверные приложения на iPhoneКлиент-серверные приложения на iPhone
Клиент-серверные приложения на iPhone
Pavel Bashmakov
Использование 0MQ для построения распределёных систем (Андрей Охлопков, Алекс...
Использование 0MQ для построения распределёных систем (Андрей Охлопков, Алекс...Использование 0MQ для построения распределёных систем (Андрей Охлопков, Алекс...
Использование 0MQ для построения распределёных систем (Андрей Охлопков, Алекс...
Ontico
Выжимаем из сервера максимум (Андрей Паньгин)
Выжимаем из сервера максимум (Андрей Паньгин)Выжимаем из сервера максимум (Андрей Паньгин)
Выжимаем из сервера максимум (Андрей Паньгин)
Ontico
андрей паньгин
андрей паньгинандрей паньгин
андрей паньгин
kuchinskaya
Мастер-класс "Микросервисы: удобно, надежно, серебрянопульно" / Евгений Павло...
Мастер-класс "Микросервисы: удобно, надежно, серебрянопульно" / Евгений Павло...Мастер-класс "Микросервисы: удобно, надежно, серебрянопульно" / Евгений Павло...
Мастер-класс "Микросервисы: удобно, надежно, серебрянопульно" / Евгений Павло...
Ontico
Облако в Badoo год спустя
Облако в Badoo год спустяОблако в Badoo год спустя
Облако в Badoo год спустя
Yuriy Nasretdinov
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Badoo Development
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Ontico
Java tricks for high-load server programming
Java tricks for high-load server programmingJava tricks for high-load server programming
Java tricks for high-load server programming
Andrei Pangin
Архитектура программных систем на Node.js
Архитектура программных систем на Node.jsАрхитектура программных систем на Node.js
Архитектура программных систем на Node.js
Timur Shemsedinov
Разгоняем 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
Hosting for forbes.ru_
Hosting for forbes.ru_Hosting for forbes.ru_
Hosting for forbes.ru_
drupalconf
JSLab.Тимур Шемсединов. "Архитектура программных систем на Node.js"
JSLab.Тимур Шемсединов. "Архитектура программных систем на Node.js"JSLab.Тимур Шемсединов. "Архитектура программных систем на Node.js"
JSLab.Тимур Шемсединов. "Архитектура программных систем на Node.js"
GeeksLab Odessa
Developing highload servers with Java
Developing highload servers with JavaDeveloping highload servers with Java
Developing highload servers with Java
Andrei Pangin
Использование 0MQ для построения low latency распределёных систем, Андрей Охл...
Использование 0MQ для построения low latency распределёных систем, Андрей Охл...Использование 0MQ для построения low latency распределёных систем, Андрей Охл...
Использование 0MQ для построения low latency распределёных систем, Андрей Охл...
Fuenteovejuna
Опыт использования NoSQL-хранилищ (Андрей Новиков)
Опыт использования NoSQL-хранилищ (Андрей Новиков)Опыт использования NoSQL-хранилищ (Андрей Новиков)
Опыт использования NoSQL-хранилищ (Андрей Новиков)
Olga Lavrentieva
Незаурядная Java как инструмент разработки высоконагруженного сервера
Незаурядная Java как инструмент разработки высоконагруженного сервераНезаурядная Java как инструмент разработки высоконагруженного сервера
Незаурядная Java как инструмент разработки высоконагруженного сервера
odnoklassniki.ru

More from Andrey Smirnov (12)

Remote Highload
Remote HighloadRemote Highload
Remote Highload
Andrey Smirnov
Вебинар "Разработка высоконагруженных и надежных систем": Введение
Вебинар "Разработка высоконагруженных и надежных систем": ВведениеВебинар "Разработка высоконагруженных и надежных систем": Введение
Вебинар "Разработка высоконагруженных и надежных систем": Введение
Andrey Smirnov
aptly: система управления репозиториями пакетов (РИТ-2014)
aptly: система управления репозиториями пакетов (РИТ-2014)aptly: система управления репозиториями пакетов (РИТ-2014)
aptly: система управления репозиториями пакетов (РИТ-2014)
Andrey Smirnov
Курс высокие нагрузки и надежность: отрывок
Курс высокие нагрузки и надежность: отрывокКурс высокие нагрузки и надежность: отрывок
Курс высокие нагрузки и надежность: отрывок
Andrey Smirnov
aptly: Debian repository management tool
aptly: Debian repository management toolaptly: Debian repository management tool
aptly: Debian repository management tool
Andrey Smirnov
aptly - система управления Debian-репозиториями пакетов
aptly - система управления Debian-репозиториями пакетовaptly - система управления Debian-репозиториями пакетов
aptly - система управления Debian-репозиториями пакетов
Andrey Smirnov
Twisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в PythonTwisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в Python
Andrey Smirnov
Доклад на РИТ: Высокие нагрузки (2008)
Доклад на РИТ: Высокие нагрузки (2008)Доклад на РИТ: Высокие нагрузки (2008)
Доклад на РИТ: Высокие нагрузки (2008)
Andrey Smirnov
Вебинар "Разработка высоконагруженных и надежных систем": Введение
Вебинар "Разработка высоконагруженных и надежных систем": ВведениеВебинар "Разработка высоконагруженных и надежных систем": Введение
Вебинар "Разработка высоконагруженных и надежных систем": Введение
Andrey Smirnov
aptly: система управления репозиториями пакетов (РИТ-2014)
aptly: система управления репозиториями пакетов (РИТ-2014)aptly: система управления репозиториями пакетов (РИТ-2014)
aptly: система управления репозиториями пакетов (РИТ-2014)
Andrey Smirnov
Курс высокие нагрузки и надежность: отрывок
Курс высокие нагрузки и надежность: отрывокКурс высокие нагрузки и надежность: отрывок
Курс высокие нагрузки и надежность: отрывок
Andrey Smirnov
aptly: Debian repository management tool
aptly: Debian repository management toolaptly: Debian repository management tool
aptly: Debian repository management tool
Andrey Smirnov
aptly - система управления Debian-репозиториями пакетов
aptly - система управления Debian-репозиториями пакетовaptly - система управления Debian-репозиториями пакетов
aptly - система управления Debian-репозиториями пакетов
Andrey Smirnov
Twisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в PythonTwisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в Python
Andrey Smirnov
Доклад на РИТ: Высокие нагрузки (2008)
Доклад на РИТ: Высокие нагрузки (2008)Доклад на РИТ: Высокие нагрузки (2008)
Доклад на РИТ: Высокие нагрузки (2008)
Andrey Smirnov

Анатомия веб-сервиса (РИТ-2014)