SlideShare a Scribd company logo
1 of 39
Download to read offline
Архитектура растущего
проекта
на примере ВКонтакте
Алексей Акулович (vk.com)
С чего всё начиналось
● PHP + Apache
● MySQL
● Memcached
● nginx
Как расти?
Как расти?
● nginx - stateless, ставим ещё
● Apache + PHP - stateless, ставим ещё
● MySQL - нужно решать
● Memcached - нужно решать
Масштабирование БД
● Вертикальное
Просто, но имеет низкий потолок
● Горизонтальное
Сложнее, ограничено технической возможностью
Горизонтальное масштабирование БД
● Разнос таблиц по разным серверам
Для начала можно логически
● Шардирование самих таблиц
Виртуальные шарды
● Делаем реплики уже с шардов
БД в огне
● Кэширование
● Предварительное создание кэша
● Негативное кэширование
● Просроченный кэш
● Случайные задержки
● Throttling
Если можно
БД в огне
Очень важно, чтобы при плановой
нагрузке всё работало без кэша
БД пала в огне
БД пала в огне
● Мигрируем с РСУБД
● Берем готовые NoSQL
...
БД пала в огне
● Мигрируем с РСУБД
● Берем готовые NoSQL
Подождите, нет же у нас никаких NoSQL *
БД пала в огне
● Мигрируем с РСУБД
● Берем готовые NoSQL
● Пишем свои частные решения
Свои решения. Первая кровь
Самописные
велосипеды узкозаточенные БД,
использующие протокол Memcached
Свои решения
audiofp
copyfast
friend
hints
image
letters
likes
lists
logs
logs-collector
mc-proxy
memcached
meowdb
money
mutual-friends
news
photo
pmemcached
rpc-proxy
sandbox
search
seqmap
set
statsx
tasks
...
MC протокол
Обычный запрос
$mc->set("key", $value)
MC протокол
Превращается в
$mc->set("letter{$server_num}[,
{$delay}[,{$task_id}]]", $letter)
MC протокол
А иногда и в
$mc->increment("counter$cnt_id[:$sub
cnt_id]#$uid[#$sex$age$status$polit$
section;$city;$region;$country;$sour
ce]")
Доступ к движкам по MC
● Группируем движки по задачам
Кластеры
● Несколько инстанций движка на сервер
Куски
● Доступ к группе как к единому целому
Доступ к движкам по MC
Я разработчик, я не хочу думать, я хочу
х*к-х*к и в продакшен!
$mc = chooseServer('cluster_name');
$mc->get('fooBar');
Где находится кластер и сколько в нем кусков -
для кода обычно не важно
Доступ к движкам по MC
function chooseServer($cluster) {
$map = array(
'cluster1' => array('port' => 11234),
// … ~300 кластеров
);
// list($host, $port) = $map[$cluster];
$mc = new Memcache();
$mc->addServer($host, $port);
return $mc;
}
Доступ к движкам по MC
● Подключение к кластерам через прокси
● Выбор кластера по номеру порта прокси
● Выбор куска в кластере на основе запроса
$mc->set("letter4,0,17", $task)
● hash("letter4,0,17")
● "letter4,0,17"
Подобное решение
twemproxy от Twitter
https://github.com/twitter/twemproxy
наше уже давно deprecated
● Набор команд
get, set, delete, …
● Размер ключей
250 байт
● Экранирование бинарных данных
● Избыточность текстового формата
Ограничения MC протокола
Свой бинарный формат и протокол
Лучшая публичная документация
https://core.telegram.org/mtproto/serialize
https://core.telegram.org/mtproto/TL
Ближайший аналог - protobuf
https://github.com/google/protobuf
Не путать с msgpack, bson - они schemaless
Доступ к движкам по RPC
● Подключение к кластерам через прокси
~340 кластеров
● Выбор кластера по его id из запроса на
уровне прокси
● Выбор куска в кластере на основе запроса
Доступ к движкам по RPC
● Расширение набора команд
Любые “хотелки” по запросам, умные прокси
● Мультиплексирование и асинхронщина
● Не нужно по порту на кластер
Вместо сотен проксей хватает десятка
● Шифрование соединения
● Переход от TCP к UDP
Дальнейший рост
Разделяй и властвуй #1
● Проблема: сайт тормозит
● Выяснили: выросла нагрузка на
кластер общего кеша
● Кто виноват?
Разделяй и властвуй #1
● Проблема: сайт тормозит
● Выяснили: выросла нагрузка на
кластер общего кеша
● Кто виноват?
● А фиг его знает
Разделяй и властвуй #1
● Скажем “нет” общим кластерам
● Каждой задаче - свой кластер
● Выросла нагрузка - знаем точно кто
● Кластер упал - не упало остальное *
Разделяй и властвуй #2
К чему может привести запрос?
$mc->set("key", $value)
Разделяй и властвуй #2
К чему может привести запрос?
$mc->set("key", $value)
Ляжет весь сайт
Разделяй и властвуй #2
1. Запрос попадал на один движок
2. Движок не смог, начал тупить/упал
3. Прокси начали получать таймауты
4. Из-за таймаутов копилась очередь
5. Упали прокси
6. Упал сайт
Разделяй и властвуй #2
● Не писать такой код :)
Разделяй и властвуй #2
● Не писать такой код :)
● Размазывание highload ключей
● Выполнение запросов с вероятностью
● Повторный запрос в другой кусок *
Разделяй и властвуй #3
● Проблема: массовые 50x от kphp
● Выяснили: новый функционал
● Что делать?
Разделяй и властвуй #3
● Проблема: массовые 50x от kphp
● Выяснили: новый функционал
● Что делать?
● Все kphp разделяются на группы
(профили, новости, сообщения и т.п.)
Проблема раздела другие разделы не волнует
Разделяй и властвуй #3
Фронты с nginx, получая от kphp 5xx
ошибку, делают повторный запрос на
другой upstream.
Число таких попыток лимитировано.
И да пребудет с вами Персик
Презентация
https://ater.me/conf/tkconf2016.pdf
Для вопросов после
https://vk.com/ac
2016.10.08

More Related Content

What's hot

Разработка высокопроизводительных серверных приложений для Linux/Unix (Алекса...
Разработка высокопроизводительных серверных приложений для Linux/Unix (Алекса...Разработка высокопроизводительных серверных приложений для Linux/Unix (Алекса...
Разработка высокопроизводительных серверных приложений для Linux/Unix (Алекса...
Ontico
 
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Ontico
 
Механика DDoS (Александр Крижановский)
Механика DDoS (Александр Крижановский)Механика DDoS (Александр Крижановский)
Механика DDoS (Александр Крижановский)
Ontico
 
Реализация восстановления после аварий / Сергей Бурладян (Avito)
Реализация восстановления после аварий / Сергей Бурладян (Avito)Реализация восстановления после аварий / Сергей Бурладян (Avito)
Реализация восстановления после аварий / Сергей Бурладян (Avito)
Ontico
 
Практическое применение HTML5 в Я.Почте
Практическое применение HTML5 в Я.ПочтеПрактическое применение HTML5 в Я.Почте
Практическое применение HTML5 в Я.Почте
Alexey Androsov
 
Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...
Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...
Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...
Ontico
 
"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)
"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)
"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)
AvitoTech
 
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов Николай
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов НиколайnoBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов Николай
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов Николай
Ontico
 
Highload Begun Pankov
Highload Begun PankovHighload Begun Pankov
Highload Begun Pankov
Ontico
 

What's hot (20)

Разработка высокопроизводительных серверных приложений для Linux/Unix (Алекса...
Разработка высокопроизводительных серверных приложений для Linux/Unix (Алекса...Разработка высокопроизводительных серверных приложений для Linux/Unix (Алекса...
Разработка высокопроизводительных серверных приложений для Linux/Unix (Алекса...
 
Async Javascript
Async JavascriptAsync Javascript
Async Javascript
 
DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)
DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)
DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)
 
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
 
FrontTalks: Алексей Андросов (Яндекс), «Ошибки, которые мы любим»
FrontTalks: Алексей Андросов (Яндекс), «Ошибки, которые мы любим»FrontTalks: Алексей Андросов (Яндекс), «Ошибки, которые мы любим»
FrontTalks: Алексей Андросов (Яндекс), «Ошибки, которые мы любим»
 
Механика DDoS (Александр Крижановский)
Механика DDoS (Александр Крижановский)Механика DDoS (Александр Крижановский)
Механика DDoS (Александр Крижановский)
 
Реализация восстановления после аварий / Сергей Бурладян (Avito)
Реализация восстановления после аварий / Сергей Бурладян (Avito)Реализация восстановления после аварий / Сергей Бурладян (Avito)
Реализация восстановления после аварий / Сергей Бурладян (Avito)
 
Современная операционная система: что надо знать разработчику / Александр Кри...
Современная операционная система: что надо знать разработчику / Александр Кри...Современная операционная система: что надо знать разработчику / Александр Кри...
Современная операционная система: что надо знать разработчику / Александр Кри...
 
Тюним память и сетевой стек в Linux: история перевода высоконагруженных серве...
Тюним память и сетевой стек в Linux: история перевода высоконагруженных серве...Тюним память и сетевой стек в Linux: история перевода высоконагруженных серве...
Тюним память и сетевой стек в Linux: история перевода высоконагруженных серве...
 
05 - Web-технологии. Сетевые протоколы
05 - Web-технологии. Сетевые протоколы05 - Web-технологии. Сетевые протоколы
05 - Web-технологии. Сетевые протоколы
 
Практическое применение HTML5 в Я.Почте
Практическое применение HTML5 в Я.ПочтеПрактическое применение HTML5 в Я.Почте
Практическое применение HTML5 в Я.Почте
 
Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...
Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...
Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...
 
pgconf.ru 2015 avito postgresql
pgconf.ru 2015 avito postgresqlpgconf.ru 2015 avito postgresql
pgconf.ru 2015 avito postgresql
 
Ddos
DdosDdos
Ddos
 
"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)
"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)
"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)
 
Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...
Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...
Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...
 
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов Николай
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов НиколайnoBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов Николай
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов Николай
 
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)
 
Профилирование кода на C/C++ в *nix системах
Профилирование кода на C/C++ в *nix системахПрофилирование кода на C/C++ в *nix системах
Профилирование кода на C/C++ в *nix системах
 
Highload Begun Pankov
Highload Begun PankovHighload Begun Pankov
Highload Begun Pankov
 

Viewers also liked

үйл ажиллагааны тайлан бичих ерөнхий загвар 03
үйл ажиллагааны тайлан бичих ерөнхий загвар 03үйл ажиллагааны тайлан бичих ерөнхий загвар 03
үйл ажиллагааны тайлан бичих ерөнхий загвар 03
Mtuya.hsum
 
үйлдвэрлэлийн дадлагын тайлан
үйлдвэрлэлийн дадлагын тайланүйлдвэрлэлийн дадлагын тайлан
үйлдвэрлэлийн дадлагын тайлан
essasura
 
LinkedIn - A Professional Network built with Java Technologies and Agile Prac...
LinkedIn - A Professional Network built with Java Technologies and Agile Prac...LinkedIn - A Professional Network built with Java Technologies and Agile Prac...
LinkedIn - A Professional Network built with Java Technologies and Agile Prac...
LinkedIn
 
LinkedIn Communication Architecture
LinkedIn Communication ArchitectureLinkedIn Communication Architecture
LinkedIn Communication Architecture
LinkedIn
 

Viewers also liked (8)

Dadlaga Uildverlel
Dadlaga UildverlelDadlaga Uildverlel
Dadlaga Uildverlel
 
дадлага тайлан
дадлага тайландадлага тайлан
дадлага тайлан
 
үйл ажиллагааны тайлан бичих ерөнхий загвар 03
үйл ажиллагааны тайлан бичих ерөнхий загвар 03үйл ажиллагааны тайлан бичих ерөнхий загвар 03
үйл ажиллагааны тайлан бичих ерөнхий загвар 03
 
үйлдвэрлэлийн дадлагын тайлан
үйлдвэрлэлийн дадлагын тайланүйлдвэрлэлийн дадлагын тайлан
үйлдвэрлэлийн дадлагын тайлан
 
дадлагын тайлан 1
дадлагын тайлан 1дадлагын тайлан 1
дадлагын тайлан 1
 
дадлагын тайлан
дадлагын тайландадлагын тайлан
дадлагын тайлан
 
LinkedIn - A Professional Network built with Java Technologies and Agile Prac...
LinkedIn - A Professional Network built with Java Technologies and Agile Prac...LinkedIn - A Professional Network built with Java Technologies and Agile Prac...
LinkedIn - A Professional Network built with Java Technologies and Agile Prac...
 
LinkedIn Communication Architecture
LinkedIn Communication ArchitectureLinkedIn Communication Architecture
LinkedIn Communication Architecture
 

Similar to Архитектура растущего проекта, на примере ВКонтакте

Hosting for forbes.ru_
Hosting for forbes.ru_Hosting for forbes.ru_
Hosting for forbes.ru_
drupalconf
 
специализированные http-демона (Сергей Боченков, Александр Панков)
специализированные http-демона (Сергей Боченков, Александр Панков)специализированные http-демона (Сергей Боченков, Александр Панков)
специализированные http-демона (Сергей Боченков, Александр Панков)
Ontico
 
Сергей Житинский, Александр Чистяков (Git in Sky)
Сергей Житинский, Александр Чистяков (Git in Sky)Сергей Житинский, Александр Чистяков (Git in Sky)
Сергей Житинский, Александр Чистяков (Git in Sky)
Ontico
 
Git in Sky presentation @ HighLoad++ 2013
Git in Sky presentation @ HighLoad++ 2013Git in Sky presentation @ HighLoad++ 2013
Git in Sky presentation @ HighLoad++ 2013
Serguei Gitinsky
 
Что такое Postgresql (Максим Богук)
Что такое Postgresql (Максим Богук)Что такое Postgresql (Максим Богук)
Что такое Postgresql (Максим Богук)
Ontico
 
Daemons In Web on #devrus
Daemons In Web on #devrusDaemons In Web on #devrus
Daemons In Web on #devrus
Alex Chistyakov
 
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Ontico
 
Практический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQLПрактический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQL
Alex Chistyakov
 
Mysql replication DevConf 2012
Mysql replication DevConf 2012Mysql replication DevConf 2012
Mysql replication DevConf 2012
Alex Chistyakov
 
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
IT-Portfolio
 

Similar to Архитектура растущего проекта, на примере ВКонтакте (20)

Deployment to production with an unexpected load
Deployment to production with an unexpected loadDeployment to production with an unexpected load
Deployment to production with an unexpected load
 
Hosting for forbes.ru_
Hosting for forbes.ru_Hosting for forbes.ru_
Hosting for forbes.ru_
 
Developing highload servers with Java
Developing highload servers with JavaDeveloping highload servers with Java
Developing highload servers with Java
 
Highload 2011-demona
Highload 2011-demonaHighload 2011-demona
Highload 2011-demona
 
Практическое применение WebWorkers / Алексей Фомкин (Data Monsters)
Практическое применение WebWorkers / Алексей Фомкин (Data Monsters)Практическое применение WebWorkers / Алексей Фомкин (Data Monsters)
Практическое применение WebWorkers / Алексей Фомкин (Data Monsters)
 
Суперсилы Chrome DevTools — Роман Сальников, 2ГИС
Суперсилы Chrome DevTools — Роман Сальников, 2ГИССуперсилы Chrome DevTools — Роман Сальников, 2ГИС
Суперсилы Chrome DevTools — Роман Сальников, 2ГИС
 
Ice Php Framework Preview Release
Ice Php Framework Preview ReleaseIce Php Framework Preview Release
Ice Php Framework Preview Release
 
специализированные http-демона (Сергей Боченков, Александр Панков)
специализированные http-демона (Сергей Боченков, Александр Панков)специализированные http-демона (Сергей Боченков, Александр Панков)
специализированные http-демона (Сергей Боченков, Александр Панков)
 
Сергей Житинский, Александр Чистяков (Git in Sky)
Сергей Житинский, Александр Чистяков (Git in Sky)Сергей Житинский, Александр Чистяков (Git in Sky)
Сергей Житинский, Александр Чистяков (Git in Sky)
 
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
 
Что такое Postgresql (Максим Богук)
Что такое Postgresql (Максим Богук)Что такое Postgresql (Максим Богук)
Что такое Postgresql (Максим Богук)
 
Daemons In Web on #devrus
Daemons In Web on #devrusDaemons In Web on #devrus
Daemons In Web on #devrus
 
Максим Богук. Postgres-XC
Максим Богук. Postgres-XCМаксим Богук. Postgres-XC
Максим Богук. Postgres-XC
 
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
 
OpenSource SQL Databases Enter Millions Queries per Second Era
OpenSource SQL Databases Enter Millions Queries per Second EraOpenSource SQL Databases Enter Millions Queries per Second Era
OpenSource SQL Databases Enter Millions Queries per Second Era
 
Практический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQLПрактический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQL
 
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...
 
Mysql replication DevConf 2012
Mysql replication DevConf 2012Mysql replication DevConf 2012
Mysql replication DevConf 2012
 
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
 

More from TKConf

TК°Conf. Как мы делали ЖЖ. Егор Толстой.
TК°Conf. Как мы делали ЖЖ. Егор Толстой.TК°Conf. Как мы делали ЖЖ. Егор Толстой.
TК°Conf. Как мы делали ЖЖ. Егор Толстой.
TKConf
 
Функциональное программирование в продуктовой разработке
Функциональное программирование в продуктовой разработкеФункциональное программирование в продуктовой разработке
Функциональное программирование в продуктовой разработке
TKConf
 
Проектирование архитектуры крупных веб-систем
Проектирование архитектуры крупных веб-системПроектирование архитектуры крупных веб-систем
Проектирование архитектуры крупных веб-систем
TKConf
 

More from TKConf (19)

TК°Conf. Как мы делали ЖЖ. Егор Толстой.
TК°Conf. Как мы делали ЖЖ. Егор Толстой.TК°Conf. Как мы делали ЖЖ. Егор Толстой.
TК°Conf. Как мы делали ЖЖ. Егор Толстой.
 
TК°Conf. Организация разработки Frontend. Виталий Слободин.
TК°Conf. Организация разработки Frontend. Виталий Слободин.TК°Conf. Организация разработки Frontend. Виталий Слободин.
TК°Conf. Организация разработки Frontend. Виталий Слободин.
 
TК°Conf. Ещё не поздно учить WebGL. Антон Корзунов.
TК°Conf. Ещё не поздно учить WebGL. Антон Корзунов.TК°Conf. Ещё не поздно учить WebGL. Антон Корзунов.
TК°Conf. Ещё не поздно учить WebGL. Антон Корзунов.
 
TК°Conf. Stylelint — как и зачем линтить CSS. Андрей Ситник.
TК°Conf. Stylelint — как и зачем линтить CSS. Андрей Ситник.TК°Conf. Stylelint — как и зачем линтить CSS. Андрей Ситник.
TК°Conf. Stylelint — как и зачем линтить CSS. Андрей Ситник.
 
TК°Conf. Хайп против реальности: год жизни с изомофорным React-приложением. И...
TК°Conf. Хайп против реальности: год жизни с изомофорным React-приложением. И...TК°Conf. Хайп против реальности: год жизни с изомофорным React-приложением. И...
TК°Conf. Хайп против реальности: год жизни с изомофорным React-приложением. И...
 
TК°Conf. Как оформить права на программный продукт, чтобы его не угнали конку...
TК°Conf. Как оформить права на программный продукт, чтобы его не угнали конку...TК°Conf. Как оформить права на программный продукт, чтобы его не угнали конку...
TК°Conf. Как оформить права на программный продукт, чтобы его не угнали конку...
 
TК°Conf. Как проложить путь к успеху с помощью банковских карт. Александр Сычев.
TК°Conf. Как проложить путь к успеху с помощью банковских карт. Александр Сычев.TК°Conf. Как проложить путь к успеху с помощью банковских карт. Александр Сычев.
TК°Conf. Как проложить путь к успеху с помощью банковских карт. Александр Сычев.
 
TК°Conf. «Быстрокод» и что за это бывает. Артём Кулаков.
TК°Conf. «Быстрокод» и что за это бывает. Артём Кулаков.TК°Conf. «Быстрокод» и что за это бывает. Артём Кулаков.
TК°Conf. «Быстрокод» и что за это бывает. Артём Кулаков.
 
TК°Conf. Как отвечать за продакшн. Андрей Сумин.
TК°Conf. Как отвечать за продакшн. Андрей Сумин.TК°Conf. Как отвечать за продакшн. Андрей Сумин.
TК°Conf. Как отвечать за продакшн. Андрей Сумин.
 
TК°Conf. Микросервисы и Docker. Глеб Паньшин.
TК°Conf. Микросервисы и Docker. Глеб Паньшин.TК°Conf. Микросервисы и Docker. Глеб Паньшин.
TК°Conf. Микросервисы и Docker. Глеб Паньшин.
 
TК°Conf. 10 проблем автоматизации UI и их решение с помощью JDI. Роман Иовлев.
TК°Conf. 10 проблем автоматизации UI и их решение с помощью JDI. Роман Иовлев.TК°Conf. 10 проблем автоматизации UI и их решение с помощью JDI. Роман Иовлев.
TК°Conf. 10 проблем автоматизации UI и их решение с помощью JDI. Роман Иовлев.
 
TК°Conf. Обеспечение качества в продуктовых проектах. Наталья Руколь.
TК°Conf. Обеспечение качества в продуктовых проектах. Наталья Руколь.TК°Conf. Обеспечение качества в продуктовых проектах. Наталья Руколь.
TК°Conf. Обеспечение качества в продуктовых проектах. Наталья Руколь.
 
TК°Conf. Сетевые орг.структуры. Владимир Каленов.
TК°Conf. Сетевые орг.структуры. Владимир Каленов.TК°Conf. Сетевые орг.структуры. Владимир Каленов.
TК°Conf. Сетевые орг.структуры. Владимир Каленов.
 
TК°Conf. Красивый интерфейс — это лишь часть крутого UX. Никита Ефимов.
TК°Conf. Красивый интерфейс — это лишь часть крутого UX. Никита Ефимов.TК°Conf. Красивый интерфейс — это лишь часть крутого UX. Никита Ефимов.
TК°Conf. Красивый интерфейс — это лишь часть крутого UX. Никита Ефимов.
 
TК°Conf. Impact Mapping: планирование разработки продукта с учетом бизнес цел...
TК°Conf. Impact Mapping: планирование разработки продукта с учетом бизнес цел...TК°Conf. Impact Mapping: планирование разработки продукта с учетом бизнес цел...
TК°Conf. Impact Mapping: планирование разработки продукта с учетом бизнес цел...
 
Функциональное программирование в продуктовой разработке
Функциональное программирование в продуктовой разработкеФункциональное программирование в продуктовой разработке
Функциональное программирование в продуктовой разработке
 
SQL vs NoSQL: 
проблема выбора
SQL vs NoSQL: 
проблема выбораSQL vs NoSQL: 
проблема выбора
SQL vs NoSQL: 
проблема выбора
 
Разработка через микросервисы
Разработка через микросервисыРазработка через микросервисы
Разработка через микросервисы
 
Проектирование архитектуры крупных веб-систем
Проектирование архитектуры крупных веб-системПроектирование архитектуры крупных веб-систем
Проектирование архитектуры крупных веб-систем
 

Архитектура растущего проекта, на примере ВКонтакте