Как стать автором
Обновить
0
0
Олег Серебряков @Bandicoot

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

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

Концепции распределенной архитектуры, с которыми я познакомился при построении крупной системы платежей

Время на прочтение12 мин
Количество просмотров36K
Я присоединился к Uber два года назад в качестве мобильного разработчика, имеющего некоторый опыт разработки бекенда. Здесь я занимался разработкой функционала платежей в приложении — и по ходу дела переписал само приложение. После чего я перешёл в менеджмент разработчиков и возглавил саму команду. Благодаря этому я смог гораздо ближе познакомиться с бэкендом, поскольку моя команда несёт ответственность за многие системы нашего бэкенда, позволяющие осуществлять платежи.

До моей работы в Uber у меня не было опыта работы с распределёнными системами. Я получил традиционное образование в Computer Science, после чего с десяток лет занимался full-stack разработкой. Поэтому, пусть я и мог рисовать различные диаграммы и рассуждать о компромиссах (tradeoffs) в системах, к тому моменту я недостаточно хорошо понимал и воспринимал концепции распределённости — такие, например, как согласованность (consistency), доступность (availability) или идемпотентность (idempotency).

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

Полный ли это список? Скорее всего, нет. Однако, если бы лично я сам узнал про эти концепции раньше, это сделало бы мою жизнь гораздо проще.

Итак, давайте приступим к нашему погружению в SLA, согласованность, долговечность данных, сохранность сообщений, идемпотентность и некоторые другие вещи, которые мне потребовалось выучить на своей новой работе.
Читать дальше →
Всего голосов 24: ↑22 и ↓2+20
Комментарии2

Невидимая рука паразитов

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

В новой статье я хочу рассказать о не самых приятных сожителях нашего организма - о паразитах, об их влиянии на наше поведение, высшие психические функции и в целом на центральную нервную систему (ЦНС). В тексте будут описаны как относительно безобидные, с точки зрения влияния на нервную систему, паразиты, так и агрессивные виды, вызывающие тяжёлое поражение ЦНС и способные привести к летальному исходу без должного лечения.

Читать далее
Всего голосов 39: ↑30 и ↓9+31
Комментарии70

5 вещей, которым я научился за 20 лет программирования

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

Последние 4-5 десятилетий спрос на программистов вырос в сотни раз. По некоторым оценкам их количество удваивается каждые пять лет, и в результате программист с 5-летним опытом работы имеет стаж работы в отрасли больший, чем у половины всех ее сотрудников.

Эрик Дитрих* около 10 лет провел на должностях, где его основной функцией было написание кода. Еще 10 лет были связаны с управлением программистами, их обучением, консультированием организаций, практикой оценки кодовой базы, а в наши дни и контент-маркетингом. Но во всех этих ролях он в той или иной степени писал код. И, по своим расчетам, прошел больший путь, чем 94% работающих в отрасли. Получается некое противопоставление: программист со стажем, который общается с кучей новичков в программировании.

Специально для своего блога Эрик попытался обобщить весь свой опыт в виде кратких советов, которые он хотел бы дать молодым программистам. Под катом — наиболее важные, на взгляд автора, уроки и выводы из его 20-летней карьеры.

*Обращаем ваше внимание, что позиция автора может не всегда совпадать с мнением МойОфис.

Читать далее
Всего голосов 82: ↑74 и ↓8+75
Комментарии111

Кому принадлежит время

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

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

Интернет зависит от времени так, что малейшая ошибка ведет к масштабным проблемам: падению серверов, сбоям в DNS, зависанию приложений. Из-за проблем со временем системы зацикливаются и потребляют излишние ресурсы CPU.

Конечно, программисты знают, откуда берется время. UNIX-time, timestamp, datetime, tzdata, NTP и другие решения дают четкое ощущение контроля времени. Однако кому на самом деле время принадлежит, кто несет за него ответственность?

Это история о бесконечном поиске консенсуса, талантливых одиночках, работающих без зарплаты, крушении «Титаника», увлеченном слепом программисте и смелых решениях, ведущих к новым ошибкам. Это история про время.

Читать дальше →
Всего голосов 44: ↑42 и ↓2+50
Комментарии17

Не мешайте мне работать! Ну пожалуйста

Время на прочтение11 мин
Количество просмотров38K
В 2010 году одно из крупных издательств объявило конкурс на лучшее произведение в стиле офисного романа. Мне об этом рассказала моя уже бывшая коллега за обедом. Она собралась писать и подавать рукопись. На моё удивление она ответила: «А что здесь сочинять? Бери и описывай наш коллектив, тот ещё офисный детектив с элементами хоррора». И то правда: офис из полтысячи сотрудников был богат на интриги, конфликты, локальные серпентарии и уничтожение самооценки человека. Самое интересное, что речь шла об IT-компании, одной из лучших на тот момент. В этой компании было немало ребят, которые задавались вопросом, а можно ли просто спокойно поработать, не ввязываясь в баталии и битвы с местными сколопендрами. Как показал дальнейший опыт, этот вопрос звучит почти везде. Так что же мешает работать, кроме устаревшей техники и медленного интернета, которые почти повсеместно удаётся извести?

Добро пожаловать в молодую, успешную, позитивную, динамично развивающуюся команду!
Читать дальше →
Всего голосов 71: ↑54 и ↓17+53
Комментарии67

Как мы обновили старый кластер Elasticsearch на 3 ПБ без простоев. Часть 5 — два клиента Elasticsearch на одной JVM

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

Прим. переводчика: автор статьи рассказывает, как его команде удалось запустить два клиента Elasticsearch разных версий на одной JVM путем написания специальной библиотеки-обертки для работы с нужной версией.

Это пятая часть серии статей об обновлении кластера Elasticsearch без простоев и с минимальным воздействием на пользователей.

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

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

Сколько стоит техдолг?

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

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

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

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

Влияние сбора статистик на скорость выполнения запросов в СУБД TERADATA

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

Расскажу о такой важной особенности работы СУБД TERADATA, как сбор и использование статистик при выполнении запросов и как их наличие или отсутствие может повлиять на скорость выполнения таких запросов. Попытаюсь объяснить, что представляют собой статистики и для чего они нужны TERADATA.

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

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

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

Постоянно откладываешь дела на потом и не видишь в этом проблемы? Мне это знакомо. Расскажу как не повторить моих ошибок и почему пора это прекращать. Не откладывай эту статью на потом!

Начать читать
Всего голосов 125: ↑100 и ↓25+95
Комментарии174

Строки кода, которые изменили мир

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

{"__typename":"PageLikeAction","action_type":"LIKE","label":{"text":"Like"}


В 2009 году Facebook добавила в интерфейс своей социальной сети код, изменивший мир — кнопку «Like». «Лайк» был детищем нескольких программистов и дизайнеров — Лии Перлман и Джастина Розенштейна. Они предположили, что пользователи Facebook часто бывают слишком заняты, чтобы оставлять комментарии к постам своих друзей, и что поэтому им нужна простая кнопка, нажав которую можно было бы дать понять друзьям, что их пост вам понравился. Так оценивать и поощрять друг друга пользователям стало бы легче, а значит и делали бы они это чаще.

Это сработало — и даже слишком хорошо. К 2012 году пользователи прожали «лайк» триллион раз. У этого оказались и побочные эффекты. Многие стали публиковать фото/видео, чтобы потом сидеть и с тревогой обновлять страницу, ожидая, когда же число лайков возрастёт. Все стали гадать, почему кто-то другой получает больше лайков. Люди подсели на иглу одобрения (вместо того, чтобы сесть на чьё-то лицо), что отразилось на их повседневной онлайн-активности: старались публиковать как можно больше постов, чтобы казаться смешнее, умнее, красивее, спортивнее.

Небольшой фрагмент кода, который внёс почти незаметное изменение в пользовательский интерфейс социальной сети, изменил поведение людей. Ниже представлен список из примеров подобных важных фрагментов кода, которые изменили мир. И на самом деле это неполный список, учитывая огромное количество кода, который был написан.
Читать дальше →
Всего голосов 76: ↑65 и ↓11+69
Комментарии37

Transformer в картинках

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

В прошлой статье мы рассматривали механизм внимания (attention) – чрезвычайно распространенный метод в современных моделях глубокого обучения, позволяющий улучшить показатели эффективности приложений нейронного машинного перевода. В данной статье мы рассмотрим Трансформер (Transformer) – модель, которая использует механизм внимания для повышения скорости обучения. Более того, для ряда задач Трансформеры превосходят модель нейронного машинного перевода от Google. Однако самое большое преимущество Трансформеров заключается в их высокой эффективности в условиях параллелизации (parallelization). Даже Google Cloud рекомендует использовать Трансформер в качестве модели при работе на Cloud TPU. Попробуем разобраться, из чего состоит модель и какие функции выполняет.


Впервые модель Трансформера была предложена в статье Attention is All You Need. Реализация на TensorFlow доступна как часть пакета Tensor2Tensor, кроме того, группа NLP-исследователей из Гарварда создали гид-аннотацию статьи с реализацией на PyTorch. В данном же руководстве мы попробуем максимально просто и последовательно изложить основные идеи и понятия, что, надеемся, поможет людям, не обладающим глубоким знанием предметной области, понять данную модель.

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

«Хакер»: Учимся анализировать программы для x86 с нуля

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

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

Читать далее
Всего голосов 27: ↑24 и ↓3+31
Комментарии17

Брендан Эйх о создании JavaScript за 10 дней и о том, что сегодня он сделал бы по-другому

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

Миллионы современных разработчиков активно используют язык программирования, который родился буквально за 10 дней в период экспоненциального развития интернета. Создатель JavaScript Брендан Эйх не так давно заново обратился к истокам созданного им языка и рассказал о том, как семена, посеянные им в 1995 году, теперь наконец-то взошли.

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

Возможен ли электромагнит без электричества?

Время на прочтение7 мин
Количество просмотров23K
Картинка rawpixel, Freepik

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

Но дело осложняется тем, что навесной или врезной замок может быть нерационально размещать по тем или иным причинам, основной из которых является возможность взлома.

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

Несмотря на кажущуюся странность и парадоксальность вынесенного в заголовок утверждения, подобная возможность (удержания без питания) всё-таки есть, и именно о ней мы и поговорим ниже…
Читать дальше →
Всего голосов 83: ↑80 и ↓3+102
Комментарии86

Взлёт и падение «Живого Журнала». Часть 1: как ЖЖ родился и стал русскоязычным

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

Мёртвый ЖЖ стал мемом ещё десять лет тому назад. Платформа технически продолжает жить и здравствовать, там по сей день есть читаемые и популярные блоги, но эпоха «Живого Журнала» как главной дискуссионной площадки рунета безвозвратно ушла в прошлое. А ведь было, было время!

Именно там кипели бурные страсти и жуткие ср*чи, рождались мемы и дискурсы, вспыхивали звёзды знаменитых блогеров и афедроны комментаторов. Кащениты тгавили пейсателя, падонки учили олбанскей, аффтарами писались тонны лытдыбров, а с многострадальным головным убором Антона Носика чего только ни происходило.

ЖЖызнь кипела во всех формах и расцветках — и казалось, не будет этому конца и края. Конец таки пришёл куда быстрее, чем можно было предположить, но ЖЖ остался в сердцах ветеранов рунета и в истории его развития.

Смахнув скупую слезу ностальгии, попробуем вспомнить некоторые из славных и не очень страниц истории русскоязычного LiveJournal.
Читать дальше →
Всего голосов 125: ↑122 и ↓3+162
Комментарии99

Цифровое хомячество и цифровой минимализм — противоположные концепции и стили жизни

Время на прочтение7 мин
Количество просмотров22K
Отбракованные фотографии на блошином рынке средней школы Фэрфакса, Калифорния. Иллюстрация из статьи про вещизм и скопидомство в Los Angeles Times (2014 год)

Имея в своём распоряжении петабайтные диски, появляется соблазн сохранять абсолютно всё. Все интересные фильмы и музыку, которые мы видели и слышали, семейные видео и фото. Прочитанные книги, написанный код. Письма, полученные и отправленные. Документы, мысли, заметки в Obsidian или Evernote (система типа «второй мозг»). Действительно, зачем удалять хоть один файл, если места хватает?

Противоположный подход — изначально ограничивать себя в потреблении информации, игр, фильмов, любого контента, чтобы не захламлять диск (и сознание) ненужной информацией. И хранить только самое лучшее, в минимальном количестве.
Читать дальше →
Всего голосов 104: ↑104 и ↓0+104
Комментарии92

Как PaaS Авито помогает регулировать потребление ресурсов CPU и RAM

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

Привет! Меня зовут Антон Губарев, я инженер PaaS (Platform-as-a-Service) в Авито. Платформа как сервис позволяет продуктовым командам разработки не тратить время на рутинные инфраструктурные задачи, в том числе такие как определение  оптимальных значений request/limit CPU и RAM для контейнеров в кластерах Kubernetes. Вместо этого они могут сосредоточиться на качестве микросервиса, над которым работают. PaaS умеет автоматически рассчитывать ограничения и выделять ресурсы для каждого из 1 800 микросервисов Авито.

Рассказываю, как мы в Авито собираем метрики потребления ресурсов серверного оборудования, храним и используем их, чтобы спланировать потребление в будущем.

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

Заблуждения программистов о времени

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

Музей-скансен эпохи Средневековья в Дании в режиме обычной работы (слева) ставит целью воссоздать повседневную жизнь города на стыке XIV и XV веков. Для съёмок фильма (справа) он «погрязнел»

Для киносъёмок в музей под открытым небом Middelaldercentret внесли несколько изменений. Вместо аккуратной каменной улицы развели неприятную кашицу из грязи, не самые роскошные стеклянные окна прикрыли досками и развесили везде выцветшее тряпьё. Здания как следует измазали чем-то коричневым, кое-где зачем-то перемешав субстанцию с соломой. В случайное здание воткнули факел, а не попытались изобразить лучину или фонарь.

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

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

Попытки собрать заблуждения про время и часовые пояса на Хабре уже были шесть и десять лет назад. Но без контрпримеров не так интересно.

Заблуждение 1. В сутках 24 часа или 86 400 секунд


Иногда и кое-где стрелки часов переводят, создавая сутки длиной в 23 и 25 часов — всё очевидно. Будет неплохо углубиться в случаи поэкзотичней.
Читать дальше →
Всего голосов 152: ↑145 и ↓7+177
Комментарии313

RabbitMQ: терминология и базовые сущности

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

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

Алексей Барабанов, IT-директор «Хлебница» и спикер курса «RabbitMQ для админов и разработчиков», подготовил конспект, который поможет понять терминологию и базовые сущности RabbitMQ.

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

Информация

В рейтинге
Не участвует
Откуда
Новочебоксарск, Чувашия, Россия
Дата рождения
Зарегистрирован
Активность