Pull to refresh
23
0
Илья @burlakilia

User

Send message

Проблемы при работе с кэшем и способы их решения

Reading time12 min
Views38K
Привет, Хабр!

Меня зовут Виктор Пряжников, я работаю в SRV-команде Badoo. Наша команда занимается разработкой и поддержкой внутреннего API для наших клиентов со стороны сервера, и кэширование данных — это то, с чем мы сталкиваемся каждый день.

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



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

При работе я исхожу из того, что рассматриваемая система состоит из приложения, базы данных и кэша для данных. Вместо базы данных может использоваться любой другой источник (например, какой-то микросервис или внешний API).
Читать дальше →
Total votes 62: ↑62 and ↓0+62
Comments22

Что особенного в СУБД для данных в оперативной памяти

Reading time31 min
Views32K

Константин Осипов (kostja )


Константин Осипов

Как родилась идея доклада? Я не очень люблю выступать и рассказывать про фичи, особенно про будущие фичи. Выясняется, что и люди не особо любят это слушать. Они любят слушать про то, как все устроено. Это доклад о том, как все устроено или должно быть, с моей точки зрения, устроено в современной СУБД.

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



На макроуровне – это то, как должна быть устроена современная СУБД. Почему у нас сегодня есть возможность создавать новые базы данных, почему нельзя взять текущую и удовлетвориться ее производительностью, подтюнить или написать для нее патч? Просто взять и написать патч, который бы ее ускорил, если она медленная? Из какого пространства решений мы выбираем?
Total votes 67: ↑63 and ↓4+59
Comments22

Микросервисы (Microservices)

Reading time22 min
Views679K
От переводчика: некоторые скорее всего уже читали этот титанический труд от Мартина Фаулера и его коллеги Джеймса Льюиса, но я все же решил сделать перевод этой статьи. Тренд микросервисов набирает обороты в мире enterprise разработки, и эта статья является ценнейшим источником знаний, по сути выжимкой существующего опыта работы с ними.

Термин «Microservice Architecture» получил распространение в последние несколько лет как описание способа дизайна приложений в виде набора независимо развертываемых сервисов. В то время как нет точного описания этого архитектурного стиля, существует некий общий набор характеристик: организация сервисов вокруг бизнес-потребностей, автоматическое развертывание, перенос логики от шины сообщений к приемникам (endpoints) и децентрализованный контроль над языками и данными.
Читать дальше →
Total votes 29: ↑29 and ↓0+29
Comments45

Правила внедрения TDD в старом проекте

Reading time12 min
Views21K
Статья «Скользящая ответственность паттерна Репозиторий» подняла несколько вопросов, на которые очень сложно дать ответ. Нужен ли репозиторий, если абстрагироваться от технических деталей полностью невозможно? На сколько сложным репозиторий может быть, чтобы его написание оставалось целесообразным? Ответ на эти вопросы различается в зависимости от акцента, который делается при разработке систем. Наверно, самый сложный вопрос: нужен ли, вообще, репозиторий? Проблема «текучей абстракции» и рост сложности кодирования с увеличением уровня абстракции не позволяют найти решение, которое удовлетворяло бы оба лагеря. Например, в репортинге intention design приводит к созданию большого числа методов для каждого фильтра и сортировки, а generic решение создает большой оверхед по кодированию. Продолжать можно бесконечно…

Для более полного представления я взглянул на проблему абстракций со стороны применения их в уже готовом коде, в legacy code. Репозиторий, в таком случае, нас интересует только, как инструмент для достижения качественного и безбажного кода. Конечно, этот паттерн — не единственное, что необходимо для применения TDD практик. Наевшись «невкусной еды» в нескольких больших проектах и наблюдая за тем, что работает, а что нет, я вывел для себя несколько правил, которые мне помогают следовать TDD практикам. С удовольствием выслушаю конструтктивную критику и иные приёмы внедрения TDD.
Читать дальше →
Total votes 29: ↑27 and ↓2+25
Comments86

OAuth-авторизация в Mozilla Thunderbird: от зарождения до релиза

Reading time11 min
Views14K



Некоторое время назад мы рассказывали о том, как в Mail.Ru реализован сбор почты с использованием протокола OAuth 2.0. Мы продолжаем повышать безопасность почты и продвигать стандарт OAuth 2.0 в массы. И сегодня расскажем о том, как мы добавили OAuth-авторизацию в почтовый клиент Mozilla Thunderbird. На этом примере мы разберем процесс внесения новой фичи в продукт с открытым исходным кодом, от создания тикета до релиза. Если вы давно хотели сделать свой первый pull request, но не знали как, — читайте нашу историю.

Читать дальше →
Total votes 42: ↑37 and ↓5+32
Comments9

Как выбрать язык программирования?

Reading time7 min
Views52K


Именно таким вопросом задалась команда Почты Mail.Ru перед написанием очередного сервиса. Основная цель такого выбора — высокая эффективность процесса разработки в рамках выбранного языка/технологии. Что влияет на этот показатель?
  • Производительность;
  • Наличие средств отладки и профилирования;
  • Большое сообщество, позволяющее быстро найти ответы на вопросы;
  • Наличие стабильных библиотек и модулей, необходимых для разработки веб-приложений;
  • Количество разработчиков на рынке;
  • Возможность разработки в современных IDE;
  • Порог вхождения в язык.

Кроме этого, разработчики приветствовали немногословность и выразительность языка. Лаконичность, безусловно, так же влияет на эффективность разработки, как отсутствие килограммовых гирь на вероятность успеха марафонца.
Читать дальше →
Total votes 57: ↑39 and ↓18+21
Comments98

Простое объяснение движения денег в банковской системе

Reading time10 min
Views257K
От переводчика: В последние месяцы в жизнь многих людей прочно вошли новости сферы финансов. Одна из недавних тем — возможное отключение России от системы SWIFT. Угроза выглядит очень серьезно, но что на самом деле грозит стране, если события будут развиваться по этому сценарию? Наш сегодняшний материал призван помочь разобраться с тем, как все устроено в глобальном мире финансов.

На прошлой неделе [статья опубликована в ноябре 2013] Twitter сошел с ума из-за того, что кто-то перевел почти 150 миллионов долларов за одну транзакцию в криптовалюте. Появление такого твита было в порядке вещей:



Транзакция 194 993 биткоинов стоимостью в 147 миллионов долларов порождает много тайн и спекуляций

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

С помощью этой статьи я попытаюсь изменить ситуацию и проведу простой, но, надеюсь, не слишком упрощенный, анализ в этой области.
Читать дальше →
Total votes 100: ↑91 and ↓9+82
Comments180

Mail.Ru объявляет о начале закрытого бета-тестирования двухфакторной аутентификации

Reading time1 min
Views17K

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

В нашей реализации в качестве второго фактора выступает код, отправленный по SMS на номер телефона, подключенный к аккаунту.

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

Любую обратную связь по работе двухфакторной аутентификации можно присылать на адрес o.parinov@corp.mail.ru. А если найдете секьюрити-баги, о них можно заявить через нашу bug bounty-программу, в рамках которой мы оплачиваем исследователям найденные уязвимости.

Чтобы принять участие в тестировании, оставьте заявку по адресу https://help.mail.ru/surveys/2auth. Первым откликнувшимся бета-тестерам мы готовы предоставить доступ еще до Нового года, чтобы вы успели потестировать функционал во время праздников.
Total votes 60: ↑47 and ↓13+34
Comments40

Классификация 3D принтеров

Reading time4 min
Views45K


3D печать уверенно набирает обороты и мы все чаще видим посты о том, что 3D принтер научили печатать детали для МКС, органы, дома и многое другое. Зарубежные технологические издания начинают говорить о том, что 3D печать способна воскресить промышленность в штатах, а сервис shapeways, у нас на глазах, показывает интересные темпы роста, хоть и далекие от промышленных. При таком обилии хвалебных текстов о надвигающейся революции в производстве на ум приходит мысль о том, что российский сегмент практически свободен, но так ли просто достигнуть промышленных масштабов при удишевлении самих принтеров и появления open source проектов? Решать вам, а пища для размышлений на тему под катом.
Читать дальше →
Total votes 32: ↑18 and ↓14+4
Comments28

Аппаратное ускорение в жизни верстальщика. Семинар в Яндексе

Reading time6 min
Views70K

Привет! Меня зовут Александр Завьялов. В Яндексе я занимаюсь разработкой интерфейсов. Недавно я выступил перед коллегами с докладом об аппаратном ускорении в жизни верстальщика, где также коснулся смежных тем. Рассказал о производительности веб-страниц, о том, как она измеряется и к чему она может стремиться.



Ссылка, если видео не отображается

На основе доклада я подготовил этот пост. Я расскажу о том, как браузеры оптимизировали процесс отрисовки: с чего начинали и до чего докатились. Что сейчас можно сделать, чтобы жизнь верстальщиков и пользователей стала немного лучше. Я надеюсь, что кого-нибудь натолкну на какие-нибудь улучшения. Мне бы это было приятно.


Читать дальше →
Total votes 96: ↑95 and ↓1+94
Comments21

Как правильно разрабатывать API с поддержкой обратной совместимости. Семинар в Яндексе

Reading time7 min
Views34K
Привет! Меня зовут Сергей Константинов, в Яндексе я руковожу разработкой API Карт. Недавно я поделился опытом поддержки обратной совместимости со своими коллегами. Мой доклад состоял из двух неравных частей. Первая, большая, посвящена тому, как правильно разрабатывать API, чтобы потом не было мучительно больно. Вторая же про то, что делать, если вам нужно что-то рефакторить и не сломать по дороге обратную совместимость.



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

Для разработчика обратная совместимость в первую очередь подразумевает, что единожды принятое обязательство предоставлять какую-либо функциональность невозможно отменить, исправить или перестать поддерживать.
Читать дальше →
Total votes 68: ↑66 and ↓2+64
Comments24

10 дистрибутивов Linux специального назначения

Reading time2 min
Views223K
Прелесть Linux в том, что можно сделать дистрибутив под любые запросы. Требуется лишь время и желание. Многие популярные дистрибутивы Linux — результат работы отдельных энтузиастов или групп, недовольных имеющимся набором опций. Вот некоторые из дистрибутивов Linux специального назначения.

1. Parted Magic OS: дистрибутив для восстановления дисков и работы с разделами, который поддерживает более десяти файловых систем и включает различные утилиты для «переноса, копирования, создания, удаления, расширения и сжатия дисковых разделов. Клонирование дисков и осуществление полного бэкапа. Тестирование дисков на возможность сбоя в будущем. Поиск сбойных секторов. Тестирование производительности компьютера. Безопасная полная очистка диска без возможности восстановления. Доступ к незагружаемым HDD для восстановления важных данных».


Читать дальше →
Total votes 146: ↑121 and ↓25+96
Comments110

BigVideo.js: фоновое видео на весь экран

Reading time1 min
Views37K


Плагин BigVideo.js для jQuery добавляет на страницу видео в качестве фонового изображения через HTML5 Fullscreen API. Видео автоматически растягивается на любой размер экрана. Для работы нужно предварительно загрузить библиотеки jQuery, jQuery UI и jQuery imagesloaded. Запуск:

$(function() {
    var BV = new $.BigVideo();
    BV.init();
    BV.show('http://video-js.zencoder.com/oceans-clip.mp4');
});

В качестве хостинга своих видеороликов удобно использовать Vimeo Pro, он даёт прямую ссылку на mp4-файл и отгружает контент со скоростью более 10 Мбит/с.
Читать дальше →
Total votes 63: ↑44 and ↓19+25
Comments47

Продаем себя сами

Reading time4 min
Views7.6K

От переводчика


Недавно на хабре появились первая и вторая части истории о создании Warcraft: Orcs & Humans, написанные Патриком Вайатом. Блог Патрика содержит не только воспоминания о былых днях, и сейчас вашему вниманию предлагается его статься о том, что нужно делать, чтобы всегда иметь возможность найти работу в сфере разработки ПО. Хоть Патрик говорит о рынке США, практически все применимо и к нашим современным реалиям.
Читать дальше →
Total votes 80: ↑70 and ↓10+60
Comments20

Занимательная геодезия

Reading time9 min
Views99K
Всем привет!
Сегодня я расскажу тебе, %USERNAME%, о башмаках и сургуче, капусте, королях координатах, проекциях, геодезических системах и совсем чуть-чуть о веб-картографии. Устраивайся поудобнее.

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

Вот, казалось бы, простая вещь — географические координаты. Широта и долгота, что может быть проще. А вот представьте, что вы очутились на необитаемом острове. Смартфон утонул, а других средств связи у вас нет. Остаётся только написать письмо с просьбой о помощи и по старинке выбросить его в море в запечатанной бутылке.

Вот только незадача — вы совершенно не знаете, где находится ваш необитаемый остров, а без указания координат никто вас не найдёт, даже если выловит ваше письмо. Что делать? Как определить координаты без GPS?

Об этом и о многом другом - подробнее под катом
Total votes 108: ↑103 and ↓5+98
Comments51

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Works in
Date of birth
Registered
Activity