Как стать автором
Обновить
0
0

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

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

Шардирование: с нуля до Яндекс Диска

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

Меня зовут Андрей Колнооченко. Я отвечаю за ядро файловой системы Яндекс Диска. Когда мы запускали сервис, то сразу ориентировались на рост и приняли решение шардировать базу метаданных о файлах. Но за 11 лет Яндекс Диск настолько вырос, что нам пришлось трижды менять подход к шардированию. В статье расскажу, с какими проблемами мы сталкивались по мере роста сервиса и как от MongoDB пришли в итоге к PostgreSQL.

Эта статья будет полезна, если вы планируете распределить нагрузку на вашу БД или вам просто интересен опыт развития БД для обработки большого числа запросов.

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

Быстро сжимаем, быстро пишем и читаем! На Java

Время на прочтение7 мин
Количество просмотров12K
В ходе разработки IDE 1С:Enterprise Development Tools у нас возникла необходимость быстро оперировать с довольно большими (несколько гигабайтов) объемами данных. Если не вдаваться в детали: при интерактивной работе пользователя с IDE при переключении с одной ветки репозитория на другую нам нужно сохранить текущее состояние проекта и загрузить состояние проекта из новой ветки. Детали (и объяснение – почему счет идет на гигабайты) — в конце статьи, непосредственно к Java это отношения не имеет, кому интересно – прочтет. Ну а что касается Java, то задача выглядит так: быстро сохранить несколько гигабайт информации на диск и быстро считать несколько гигабайт информации с диска. Как мы решали эту задачу, с какими трудностями столкнулись и как их преодолели – под хабракатом.

image
Читать дальше →
Всего голосов 23: ↑20 и ↓3+17
Комментарии10

Как департамент утилизации CPU превратился в департамент экономии железа, выдерживающий нагрузку в 1 млн RPS

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

Привет, меня зовут Мария, когда-то я работала на шахте, потом на заводе, а 3.5 года назад пришла в Ozon Tech. Сейчас я старший Golang-разработчик в команде product-facade. Это самый высоконагруженный сервис маркетплейса, но так было не всегда.

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

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

Как построить систему, способную выдерживать нагрузку в 5 млн rps

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

Всем привет! 

Меня зовут Владимир Олохтонов, я руковожу командой разработки в отделе Message Bus, который является частью платформы Ozon. Мы занимаемся разработкой самых разных систем вокруг Kafka, etcd и Vault. В этой статье я расскажу о том, как мы строили линейно масштабируемую gRPC-прокси перед Kafka, способную обслуживать миллионы запросов в секунду, используя Go.

Читать далее
Всего голосов 114: ↑111 и ↓3+108
Комментарии58

«Правильные JIRA issues». Как правильно разбивать задачи на тикеты

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

Я сейчас занимаюсь тем, что помогаю акаунту в несколько десятков разработчиков зарелизить проект качественно и в срок. Среди прочего у проекта есть проблема с разбиением задач на тикеты в JIRA. Просто для понимания масштаба – проекту год, разработчиков грубо говоря три дюжины, номер последнего тикета 12000+. При этом много тикетов с тегов investigate, много тикетов в результате которых создается pull request на 20 строк при том, что для достижения результата который «можно пощупать руками» (tangible) нужно 100 строк и остальные 80 строк размазаны по другим спринтам и другим командам. Это ведет к следующим проблемам

Читать далее
Всего голосов 24: ↑19 и ↓5+14
Комментарии25

Как «эффективный менеджмент» создаёт катастрофы: изучаем причины техногенных аварий. Часть 1

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

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

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

Конечно, крушение ИТ‑компании, логистического оператора или юридической консалтинговой фирмы не будут так же эффектны или так же опасны, но вряд ли от этого собственники и адекватные руководители захотят наступления своих критических рисков и краха всего бизнеса.

Погрузиться в бездны катастроф
Всего голосов 239: ↑235 и ↓4+231
Комментарии373

Chaos Engineering, применение на практике

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

В современном мире, где ПО является фундаментальной частью нашей жизни, надежность и отказоустойчивость систем приобрела первостепенное значение. Chaos Engineering - это дисциплина, направленная на тестирование и повышение отказоустойчивости сложных распределенных систем путем проведения контролируемых экспериментов, имитирующих реальные сценарии отказов. Такой подход помогает выявить и устранить потенциальные проблемы до того, как они появились и могли бы привести к значительным сбоям, сократить время простоя и повысить общую доступность систем. В этой статье мы рассмотрим Chaos Engineering и преимущества этого подхода, известные интеграции, результаты, а также приведем примеры кода, чтобы показать, как использовать данную технологию на практике.

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

Как программы общаются между собой

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

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

С развитием технологий, прошествием времени и увеличением масштабов ответить на этот вопрос становится всё сложнее.

Давайте совершим экскурс в историю и узнаем, как много было сделано и как мало изменилось.

Предупреждение: в статье я буду упрощать и жертвовать точностью ради понятности.
Читать дальше →
Всего голосов 54: ↑49 и ↓5+44
Комментарии8

Какую СУБД выбрать и почему? (Статья 2)

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

После публикации статьи “Какую СУБД выбрать и почему? (Статья 1)” ко мне поступили справедливые комментарии о том, что я не упомянул такие типы СУБД, как Time Series и Spatial. В этой статье я кратко опишу их и добавлю еще два типа — Search engines и Object-oriented (объектные).

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

Как расти менеджерам: подробная инструкция на примере менеджерской линейки Авито

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

Как расти техническому менеджеру?

Этот вопрос может возникать по разным причинам, например:

- Настоящий ли я Team Lead или Engineering Manager?

- Готов ли я к переходу на следующий уровень?

- Будут ли мои навыки ценны в другой компании? Смогу ли я оказаться на такой же роли?

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

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

Как ускорить работу в командной оболочке Bash

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

Любому начинающему разработчику необходимо научиться пользоваться командной строкой. При этом для выполнения в ней команд требуется оболочка. В статье речь пойдёт об оболочке Bash, которая популярна в UNIX-подобных системах и в большинстве дистрибутивов Linux используется штатно.
Читать дальше →
Всего голосов 77: ↑71 и ↓6+65
Комментарии78

Знакомство с ООП на примере JavaScript

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

Всем привет! В этой статье мы рассмотрим основные характеристики объектно-ориентированного программирования (ООП) на практических примерах JS-кода. В ходе обсуждения мы осветим основные принципы ООП, а также ответим на вопросы, почему и когда этот стиль может быть полезен.
Читать дальше →
Всего голосов 54: ↑49 и ↓5+44
Комментарии33

Требования к разработке приложения в Kubernetes

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

Сегодня я планирую рассказать, как нужно писать приложения и какие есть требования для того, чтобы ваше приложение хорошо работало в Kubernetes. Чтобы с приложением не было никакой головной боли, чтобы не приходилось придумывать и выстраивать какие-то «костыли» вокруг него — и работало всё так, как это задумывалось самим Kubernetes.


Эта лекция в рамках «Вечерней школы Слёрма по Кубернетес». Вы можете просмотреть открытые теоретические лекции Вечерней Школы на Youtube, сгруппированные в плейлист. Для тех же, кому удобнее текст, а не видео, мы подготовили эту статью.


Зовут меня Павел Селиванов, на текущий момент я являюсь ведущим DevOps инженером компании Mail.ru Cloud Solutions, мы делаем «облака», мы делаем мэнедж-кубернетисы и так далее. В мои задачи сейчас как раз-таки входит помощь в разработке, раскатывание эти облаков, раскатывание приложения, которые мы пишем и непосредственно разработка инструментария, который мы предоставляем для наших пользователей.



Читать дальше →
Всего голосов 21: ↑18 и ↓3+15
Комментарии4

Как в Java устроено выделение регистров в памяти

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

Привет, Хаброжители! Обратите внимание на большую распродажу в честь Старого Нового года.

Когда виртуальная машина Java компилирует ваш исходный код Java в машинный, одна из задач, которые она должна при этом выполнить – решить, где хранить локальные переменные Java и другие подобные временные значения. В вашей машине отсутствует концепция локальных переменных, поэтому на этапе компиляции необходимо определиться, какое место в памяти стека (какой машинный регистр) будет использоваться для хранения каждой переменной. Эта операция называется «выделение регистров». Может показаться, что выделение регистров – сложная абстрактная теоретическая тема, но в этом коротком посте я покажу, как сначала соотнести исходный код Java с теорией, потом понять, как его видит компилятор, а потом – показать результирующий машинный код. В данном случае моя цель – продемонстрировать, что все эти концепции очень легко опробовать на практике с реальным компилятором. 

Читать далее
Всего голосов 25: ↑20 и ↓5+15
Комментарии3

Мой опыт в управлении проектами с нуля, или 10 советов от начинающего ПМа

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

Предисловие

Всем привет! Меня зовут Александр, и я Junior Project Manager в ICL Services. На путь ПМа я встал в начале 2021 – и пора бы рассказать, с чего все началось и кто стал инициатором моего пути.  В лучших традициях свой рассказ я разбил на фазы управления проектом, ведь мое развитие – тоже своего рода проект. В конце статьи поделюсь советами и выводами, которые, возможно, будут полезны тем, кто до сих пор не решился на смену деятельности или не знает, с чего начать.

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

Код ревью с учётом человеческих слабостей

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

Проверка кода (code review) — отличный инструмент для повышения качества кода, но он не учитывает один факт: отправляют и просматривают код люди, а они устают, теряют сосредоточенность, ленятся, да и просто испытывают эмоции в самые неожиданные моменты.

Поэтому хочу представить свое видение хороших и плохих практик код ревью с учётом человеческих особенностей.

Читать далее
Всего голосов 27: ↑25 и ↓2+23
Комментарии7

Мифология и реальные методы прагматичного программирования

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

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

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

Читать далее
Всего голосов 74: ↑69 и ↓5+64
Комментарии27

Как писать bash-скрипты надежно и безопасно: минимальный шаблон

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

Скрипты на Bash. Как много в этом слове. Любому разработчику рано или поздно приходится их писать. Почти никто не скажет "да, я люблю писать bash-скрипты", и поэтому этой теме уделяют мало внимания.

Я не буду пытаться сделать из вас эксперта в Bash, а просто покажу минимальный шаблон, который поможет сделать ваши скрипты более надежными и безопасными.

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

Архитектурные паттерны в распределенных высоконагруженных системах

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

Всякая сложная инфраструктура, поступательно развивавшаяся на протяжении длительного времени, содержит в себе набор разных архитектурных неоптимальностей, а то и откровенных недостатков. Порой эти недостатки становятся неожиданным препятствием для внедрения новых сервисов. Инфраструктура М.Видео-Эльдорадо в этом отношении не является исключением, в чем мы признаемся без излишней рефлексии. Но что с этим делать? Как сделать систему надежной и пригодной для дальнейшего развития? За ответами мы пришли к Александру Алехину, директору по развитию ИТ архитектуры.

Читать далее
Всего голосов 54: ↑53 и ↓1+52
Комментарии7

Почему принцип программирования на уровне интерфейсов в большинстве случаев ошибочен и приводит к плохой архитектуре

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

(Disclaimer!) Данная точка зрения не претендует на роль абсолютной истины и является лишь результатом моего опыта, чтения, наблюдений и размышлений.

Думаю многие знают или слышали о принципах и советах в стиле "Программируйте на уровне интерфейсов, а не реализаций". Хотя в теории, данный принцип кажется полезным и его аргументация звучит логично, но при более глубоком анализе оказывается, что предпосылки лежащие в его основе не реалистичны. 

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

Читать далее
Всего голосов 137: ↑112 и ↓25+87
Комментарии123

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность