-
Структура, высеченная в камне
Сегодня будет небольшой манифест. :) Часто сталкиваюсь с одним очень интересным фактом. Большинство разработчиков с большей охотой идут на изменения в коде, нежели на изменение в структуре проекта. Даже самые очевидные аргументы в этом вопросе работают плохо.
-
Устранение уязвимостей в коде
Сегодня решил рассказать об одном аспекте в разработке ПО, про который очень часто несправедливо забывают. Это способы изоляции приложения и системы, в которой это приложение исполняется.
-
Утилита изоляции процессов Bubblewrap
Представьте, что вам нужно запустить некоторый процесс Linux в изолированной среде. Так, чтобы он не смог нанести вред системе, на которой запускается. Какие инструменты мы используем в таких случаях? Первое, что приходит в голову, это технологии виртуализации или контейнеризации. Но что если нам нужно что-то более легковесное и простое в использовании? На самом деле такой инструмент есть - это утилита командной строки Bubblewrap, один из проектов сообщества Containers (знаменито авторством таких инструментов, как Podman, Buildah, Skopeo и др.).
-
Безопасное исполнение ненадежного кода
Лучший способ о чем-то рассказать - это сделать доклад. :-) Поэтому я подал заявку на участие в конференции TechLeadConf 2025. Сейчас уже могу сказать, что меня включили в программу конференции, поэтому жду вас 5 июня в Москве. Тема доклада - “Безопасное исполнение ненадежного кода”. Приходите, будет интересно. ;-)
-
Проблемы изоляции транзакций
Конкурентный доступ к данным - одна из основных проблем при реализации изоляции транзакций. Способ решения этой проблемы определяет ключевые характеристики базы данных, на которые мы опираемся при выборе подходящего хранилища для своих проектов. И так повелось, что со времен изобретения SQL-стандарта так и не появилось однозначного определения “уровней изоляции транзакций”, благодаря чему у каждой базы данных своё представление относительно этого вопроса. А разбираться с этим многообразием приходится нам - пользователям этих продуктов.
-
Удаление конфиденциальных данных
Бывает так, что встречаешь описание интересного подхода или алгоритма, а потом про него забываешь, так как теория не была подкреплена практикой или прошло очень много времени. И вот когда наступает момент, где можно блеснуть своими знаниями, приходится тратить время, чтобы вспомнить детали. В очередной раз, когда я поймал себя на подобной мысли, я решил, что было бы неплохо делиться подобными находками. ;-) #tip
-
Calvin Protocol для распределенных транзакций
Многие знают про протокол двухфазной фиксации (two-phase commit, 2PC), но мало кто слышал про протокол Calvin. Честно говоря, до недавних пор я тоже относился к этому меньшинству, поэтому решил поделиться своей находкой с вами. Однако для начала предлагаю освежить память и вспомнить про распределенные транзакции и 2PC. :)
-
Конкурентный доступ к данным
Конкурентный доступ к данным — это драйвер всего того, что делается во имя изоляции транзакций. Конечно, речь о транзакциях, которые модифицируют данные (read/write, write/write), поскольку именно в этом случае возникают все те аномалии, о которых шла речь ранее.
-
Хочешь рисуй, не хочешь - вызывай REST
Решил завести нерегулярную рубрику “Утилиты” #tools, в которой буду делиться своими находками удобных и полезных инструментов. Если сталкивались с чем-то похожим, делитесь своими подборками в комментариях. ;)
-
ACID, AID или AD
В свете растущей популярности распределенных систем часто видим упоминание таких слов, как согласованность и изоляция. В контексте работы с данными считается, что эталоном согласованности и изоляции являются проверенные годами реляционные базы данных, а в распределенных системах с этим всё очень плохо, ведь там нет транзакций, поэтому приходится придумывать что-то своё, сильно усложняя прикладной код, а в результате всё равно получается что-то не очень надёжное. Давайте разбираться.