Как стать автором
Обновить
-5
1.5

Пользователь

Отправить сообщение

Это база: нюансы работы с Redis. Часть 2, репликация

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров9.2K

Всем привет, на связи Пётр, инженер компании Nixys. В прошлой статье мы разобрали основные концепции Redis. Теперь рассмотрим базовую репликацию Redis и настроим эту БД на высокий уровень отказоустойчивости.

Читать далее
Всего голосов 14: ↑14 и ↓0+16
Комментарии2

Сравнение технологий WebSockets, Server-Sent-Events, Long-Polling, WebRTC и WebTransport

Время на прочтение16 мин
Количество просмотров13K

При работе с современными веб-приложениями реального времени незаменима возможность отправлять события с сервера на клиент. Именно этой необходимостью продиктовано то, что за годы работы было изобретено несколько методов для этой цели, каждый с собственным набором достоинств и недостатков. Первоначально единственным вариантом был длинный опрос. Затем в качестве альтернативы появились веб-сокеты — более надёжное решение для двунаправленной коммуникации. Вслед за веб-сокетами появились события, отправляемые сервером (SSE), более простой метод, обеспечивающий однонаправленную связь от сервера к клиенту. Забегая вперёд, сейчас разрабатывается ещё и протокол WebTransport, который может тем более изменить ландшафт этой области, обеспечивая более эффективный и гибкий подход, располагающий к масштабированию. В некоторых нишевых случаях можно присмотреться и к технологии WebRTC, предназначенной для работы с событиями в направлении сервер-клиент.

В этой статье мы подробно разберём данные технологии, сравним их производительность, подчеркнём их достоинства и недостатки, а также порекомендуем, что делать в различных практических случаях, расскажем, как принимать информированные решения при создании веб-приложений реального времени. Эта статья — экстракт моего совокупного опыта, приобретённого в ходе реализации протокола репликации RxDB, обеспечивающего совместимость с различными технологиями серверной части.

Читать далее
Всего голосов 24: ↑22 и ↓2+27
Комментарии4

Основные настройки для управления ресурсами в PostgreSQL: настройка памяти, CPU и I/O

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров12K

Привет, Хабр!

При работе с PostgreSQL (да и в целом с любой БД) важно правильно настраивать и управлять ресурсами, такими как память, процессорное время и дисковые операции, и так далее для обеспечения лучшей производительности и стабильности работы БД.

В этой статье мы как раз и рассмотрим кратко о том, как управлять ресурсами в PostgreSQL.

Читать далее
Всего голосов 13: ↑12 и ↓1+14
Комментарии18

Как создать свой Spring Boot 3 — стартер?

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров12K

Допустим, Вы разрабатываете несколько приложений или микросервисов на Java. Каждое из них уникальное, и содержит свою собственную бизнес логику. Однако, в каждом из них может быть необходимость использовать общую логику. Например, логику аутентификации, как это часто бывает в мире микросервисов.

Spring Boot starter'ы - отличный способ управлять созданием, развитием и поставкой общей кодовой базы. О том как создать свой Spring Boot 3 стартер и поговорим в этой статье.

Читать далее
Всего голосов 13: ↑12 и ↓1+12
Комментарии8

Как работает etcd с Kubernetes и без него

Время на прочтение23 мин
Количество просмотров19K

Если вы когда-либо взаимодействовали с кластером Kubernetes, скорее всего, он был основан на etcd. etcd лежит в основе работы Kubernetes, но несмотря на это, напрямую взаимодействовать с ним приходится не каждый день.

Этот перевод статьи от learnk8s познакомит вас с принципами работы etcd, чтобы вы могли глубже понять внутреннюю работу Kubernetes и получить дополнительные инструменты для устранения неполадок в вашем кластере. Мы установим и сломаем кластер etcd с тремя нодами и узнаем, почему Kubernetes использует etcd в качестве базы данных.

Читать далее
Всего голосов 22: ↑22 и ↓0+22
Комментарии2

Как я уронил прод на полтора часа (и при чем тут soft delete и partial index)

Время на прочтение7 мин
Количество просмотров41K

В жизни любого разработчика наступает момент, когда он роняет прод. Представьте: полдень, в Skyeng час пик, тысячи запланированных онлайн-уроков, а наша платформа лежит… 

Все упало из-за ошибки в процессе деплоя, которая связана с тонкостью PostgreSQL. К сожалению, на этом моменте у нас прокололась не одна команда. И чтобы такое больше не произошло ни у нас, ни в другой компании — велкам под кат.

Читать далее
Всего голосов 146: ↑142 и ↓4+165
Комментарии174

Kotlin Coroutines. Часть 1: Первое погружение

Время на прочтение10 мин
Количество просмотров10K

Привет, Хабр!

Меня зовут Соловьев Андрей, я Java-разработчик в «Рексофт». Сегодня мы поговорим про Kotlin Coroutines. Это моя первая серьезная публикация, и я буду рад вашему фидбеку.

Ну что ж, давайте начинать!

Читать далее
Всего голосов 13: ↑11 и ↓2+11
Комментарии8

Почему работодатель хочет, чтобы вы были ИП

Время на прочтение7 мин
Количество просмотров67K

Представим сферическую ситуацию в вакууме. Вы никогда до этого не были предпринимателем, только работали по найму. У вас на руках два оффера. Оба по 100 000 руб. на руки, оба на плюс-минус одинаковых условиях. Офис, 5 дней в неделю по 8 часов. Но один работодатель хочет заключить с вами трудовой договор, а другой предлагает вам оформиться как ИП.

Для начала зададимся вопросом, почему работодатель предлагает оформить отношения с вами как с ИП, а не берёт в штат? Если кратко, то работодателю так проще и дешевле. Почему? Давайте разберёмся.

Читать далее
Всего голосов 117: ↑105 и ↓12+117
Комментарии268

4 вида распространённых ошибок в Event-Driven системах

Время на прочтение8 мин
Количество просмотров5.7K

В последние несколько лет в крупных компаниях наблюдается значительный рост внедрения event-driven (событийно-ориентированных) систем. Каковы основные причины этой тенденции? Это чистой воды хайп или есть веские причины, побуждающие к внедрению этой архитектуры? С нашей точки зрения, основными причинами, по которым многие компании выбирают этот путь, являются:

Читать далее
Всего голосов 13: ↑11 и ↓2+13
Комментарии5

Выжимаем из Random Forest максимум: увеличиваем полноту при 100% точности

Уровень сложностиСредний
Время на прочтение16 мин
Количество просмотров4.1K

Была классическая задача: по табличным данным предсказать некое событие — случится или нет. И как бы я к этим данным ни подбирался, с какого ракурса ни смотрел, результат, увы, не впечатлял. Данных было мало, а то, что было, обладало слабой предсказательной силой. Хотя казалось, что что-то вытащить все-таки можно.

И вот, просматривая отдельные деревья решений, меня осенило — попробую-ка я обрезать все деревья, используемые в Random Forest, до одной, но самой эффективной ветки. И — о чудо! — заметно выросла как точность (precision), так и полнота (recall). И особенно полнота выросла на высоких уровнях точности.

Проверил этот способ на других задачах. И везде при 100% точности заметно выростала полнота. Что же я сделал?

Читать далее
Всего голосов 7: ↑7 и ↓0+7
Комментарии4

Сбор логов в Kubernetes с помощью Vector: преимущества, архитектура, реальные кейсы

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров9K


Всем привет! На связи Максим Набоких, архитектор и технический руководитель Deckhouse Kubernetes Platform. В ноябре 2023 года я выступил на VK Kubernetes Conf, где рассказал, как мы делаем доставку логов в Kubernetes надёжной и отказоустойчивой с помощью Vector. Эта статья — текстовая версия моего доклада.
Читать дальше →
Всего голосов 38: ↑37 и ↓1+45
Комментарии16

Безопасная параллельная разработка. Istio

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров4.8K

Как-то в конторе появилась мысль, что надо бы продумать как нам распараллелить работу над одни микриком, так чтобы команды не пересекались друг с другом. Есть некоторые API над которыми работают несколько команд. Каждая работает над своей фичей локально и пишет тесты, а вот при деплое на стэнд получается столпотворение потому, что нужно изменения слить в одну ветку аля develop и её закинуть на тест. При этом могут быть конфликты при мерже кода или измениться проперти, которые не совместимы между разными ветка.

Мобильный банк сейчас обслуживает 450+ микриков. Над которыми работают более 90 команд. Так как у нас в проекте нет code ownership, то каждая команда вносит изменения в нужные им микрики. Чтобы избежать различного рода сложностей, которые приводят к увеличению времени time to market, нужно было развести разработку отдельных команд так, чтобы они не влияли друг на друга и могли работать параллельно.

Читать далее
Всего голосов 20: ↑19 и ↓1+22
Комментарии7

$2500 в месяц на сервисе с 1 функцией, которая уже была у крупных компаний

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров52K

Разбираем, как разработчик создал простой продукт с выручкой $2500 в месяц, связав два популярных сервиса. Несмотря на то, что это уже было сделано до него крупными компаниями.

Читать далее
Всего голосов 84: ↑66 и ↓18+58
Комментарии39

Использование Redis почти как SQL БД: Реализация чата с кешированием сообщений

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров11K

Допустим, мы хотим создать чат и хранить сообщения для него. Вполне возможно, мы можем добавить для этого простую базу данных (БД), такую как MySQL или даже NoSQL БД.

Обычно многие используют Redis как key‑value (dictionary) хранилище. Тем не менее, Redis — это несколько большее, чем key‑value, как многие привыкли думать.

Читать далее
Всего голосов 8: ↑8 и ↓0+8
Комментарии6

Гексагональная Архитектура и Spring Boot

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров12K

Всем привет!

Хочу рассказать про опыт применения гексагональной архитектуры в одном из наших микросервисов. С чем столкнулся и какие выводы сделал.

Читать далее
Всего голосов 14: ↑14 и ↓0+14
Комментарии15

Мифы и реалии «Мультимастера» в архитектуре СУБД PostgreSQL. Часть. 1

Время на прочтение12 мин
Количество просмотров13K

Привет, Хабр! Недавно мы делали доклад на конференции HighLoad 2023 — «Мифы и реалии Мультимастера в архитектуре СУБД PostgreSQL». Мы — это Павел Конотопов (@kakoka) и Михаил Жилин (@mizhka), сотрудники компании Postgres Professional. Павел занимается архитектурой построения отказоустойчивых кластеров, а Михаил — анализом производительности СУБД. У каждого за плечами более десяти лет опыта в своей области.

Порассуждаем о том, как развивалась технология «Мультимастер» в экосистеме PostgreSQL, остановимся на том, что она из себя представляет, на каких внутренних механизмах PostgreSQL основана и как её можно использовать.

Мы также поговорим о том, существует ли «Честный Мультимастер» (само понятие «Честный Мультимастер» достаточно специфично и в основном употребляется в кругу разработчиков), какие реализации у него есть и как его следует применять.

Читать далее
Всего голосов 40: ↑40 и ↓0+40
Комментарии5

Во что обойдется линеаризуемость в распределенной системе

Уровень сложностиСредний
Время на прочтение13 мин
Количество просмотров6.9K


Всем привет, меня зовут Сергей Петренко, я программист в Tarantool. Сегодня мы посмотрим, с какими трудностями сталкивается клиент, когда вместо того чтобы общаться с системой, расположенной на одном инстансе, начинает общаться с распределенной системой. И разумеется, поговорим о том, как эти трудности преодолеть. Я расскажу, что такое линеаризуемость, как мы ее реализуем в Tarantool и как это делают другие СУБД. В завершение мы поговорим о накладных расходах от линеаризуемости.
Читать дальше →
Всего голосов 50: ↑49 и ↓1+59
Комментарии3

Когнитивные искажения, о которых стоит помнить

Время на прочтение15 мин
Количество просмотров89K

Из-за когнитивных искажений мы иногда принимаем иррациональные решения, а также выносим суждения на основе информации, которую мы обрабатываем. Фактически, когнитивные искажения — это запрограммированная ошибка в нашем мозге.

Также их можно представить как простые правила, которым следует мозг, чтобы обрабатывать поступающую информацию с минимальными затратами.

Когнитивных искажений существует большое множество, и о них полезно знать. В этой статье мы сделаем обзор 151 искажения, которые часто встречаются в повседневной жизни: как в личной, так и в профессиональной.

Читать далее
Всего голосов 84: ↑76 и ↓8+79
Комментарии36

Как работать с Kafka-consumer в Spring-проектах

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров12K

Эта статья сборник небольших рекомендаций как работать с Kafka-consumer в Spring основанных на личном опыте.

Читать далее
Всего голосов 5: ↑5 и ↓0+5
Комментарии2

Как я устроился в Амазон и перестал переживать за свой английский

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров94K

Готовитесь к собеседованию за рубежом и переживаете за свой английский? Хотели бы работать в международной компании, но сомневаетесь, хватит ли языка? Не уверены, поймут ли ваш акцент? Тогда эта статья может помочь.

Меня зовут Андрей Столбовский, последние 5 лет я работал в Яндексе, а в прошлом году перешёл в Амазон и теперь работаю Software Development Manager в AWS Redshift – это мой первый полноценный опыт работы в международной компании. 

В этой статье хочу поделиться своими наблюдениями и выводами относительно владения английским языком, которые я сделал после прохождения собеседований и поработав почти год. 

Итак, поехали. 

Поехали!
Всего голосов 235: ↑232 и ↓3+275
Комментарии160

Информация

В рейтинге
1 446-й
Зарегистрирован
Активность

Специализация

Специалист
PostgreSQL
OOP
Java
Git
High-loaded systems
Elasticsearch
MongoDB
RabbitMQ
Java Spring Framework
Apache Kafka