Второе видео из серии о нормализации отношений баз данных. На примере понятно и доступно рассказывается о том, как спроектировать таблицу базы данных, чтобы она соответствовала условиям второй нормальной форме.
Очевидно, что обновлять технологический стек в проекте с долгой историей — это как перебирать двигатель самолета на лету. Подобная ситуация и у нас в Авито. В докладе я расскажу как итеративно, поступательно мы меняем фронтенд в Авито, внедрили серверный рендеринг, менеджмент зависимостей микрофронтендов, а так же какие грабли встретили и какие выводы из всего этого сделали.
Этот доклад для разработчиков middle и senior уровня, работающих с большой централизованной кодовой базой (и желающих эту кодовую базу распилить).
Большинство backend программ начинает свое сетевое общение с REST. По мере развития разработчику приходится отвечать на мелкие, но важные вопросы: как передавать дату и время, большие объемы данных, обеспечивать авторизацию и так далее.
Сетевые коммуникации в современном бэкенде — это множество конкурирующих протоколов, стандартов и подходов. У нас есть «REST», который каждый разработчик реализует по-своему, есть пересекающиеся JSON Schema и Open API, есть JSON API, GraphQL, gRPC, из-за угла выглядывает RAML.
В докладе Григорий рассказывает про современные подходы коммуникаций backend друг с другом и фронтендом, с какими сложностями мы боремся и что хорошего есть в нашем арсенале решений.
Краткий обзор. Какие проблемы решает, а какие создает? Что выбрать, реализацию через наследование или декларативный подход? Рассмотрим возможности СУБД в этих направлениях, историю развития и тенденции. Разберем более подробно декларативный подход и реализацию секционирования в своем проекте.
Спойлер: 100 500 строк кода остается между документацией и внедрением в проекте.
Чтобы делать хороший код-ревью мало просто смотреть на код и писать свое мнение о нем
Необходимо определиться с целью: зачем мы вообще ревьим код? Каждый вкладывает в процесс что-то свое: от обучения до дизайн-ревью
Нужно подготовить кучу всего: размер кода, размер задачи и ее постановку, описание проблемы и ее решения
Затем очистить код от примесей и ошибок, которые не должен проверять человек: от архитектурных до пропущенных пробелов
Проверить оформление и следование регламенту: конечно, автоматически
Правильно выбрать ревьюера: конечно, автоматически
Затем совершить сам акт общения и ревью: по делу, жестко, но без агрессии
Рассмотрим особенности использования REST API Elastic:
Как повысить утилизацию ресурсов кластера Elastic, что и как влияет на производительность
Особенности хранения логов в Elastic
Детальный разбор высоконагруженного пайплайна с логами поможет лучше понять, как устроен кластер Elastic. А практические советы по индексации больших объёмов данных — не наступать на грабли.
AWS Lambda от Amazon достаточно новая, но интересная и перспективная технология, впервые увидевшая свет чуть менее 5 лет назад. В своем докладе я расскажу как мы разрабатывали с нуля и докатили до прода в достаточно короткие сроки систему на базе AWS Lambda.
Основная задача системы — запуск ML моделей для генерации предсказаний по заданным гипотезам. Однако архитектура получилась достаточно гибкая и позволяет расширять набор моделей практически «на лету».
Я расскажу о некоторых особенностях работы с AWS Lambda, а также немного ближе познакомлю с облачными сервисами Amazon (SQS, SNS, EC2, S3, etc.)
Эта история о том, как мы храним документы. О том, как мы прошли путь от кастомного файлового хранилища до объектного хранилища. О том, на какие грабли и вилы мы наступили и какое светлое будущее с объектным хранилищем мы видим и ждём.
А приправлена эта история аспектами эволюции нашей технологической архитектуры, включающей такие технологии как OpenShift, GlusterFS, NFS и другие.
Я расскажу, как мы комплексно подошли к проблеме отказоустойчивости PostgreSQL, какие варианты мы рассматривали и как остановились на Patroni.
Доклад содержит этапы тестирования этого решения, как мы обеспечили быстрое внедрение на production и с какими проблемами мы столкнулись и как их решали.