Хьюстон, у нас проблема. Дизайн систем на отказ, паттерны разработки внутренних сервисов облака Amazon Архитектуры, масштабируемость
Начинал Unix-админом. Потом 6 лет занимался большими железками Sun Microsystem и преподавал технические курсы. 11 лет проповедовал дата-центричность мира в EMC. Дизайнил и реализовывал проекты от Кейптауна до Осло. Окончательно убедившись, что ИТ подходы 20-летней давности больше не работают, выпрыгнул из зоны комфорта и подался в публичные облака.
Сейчас архитектор Amazon Web Services в странах Европы, Ближнего Востока и Африки. Техническими советами помогаю мигрировать и развиваться в облаке AWS.
Программные и аппаратные компоненты решения постоянно ломаются, ведут себя непонятно и непредсказуемо. Кошмар разработчика? Да нет, совершенно обычная ситуация. Для распределенных систем такое поведение нормально и является следствием эффекта масштаба и банальной статистики. Именно поэтому Design for failure является базовым принципом при проектировании облачных сервисов AWS. Системы изначально строятся так, чтобы сделать незаметным ущерб от известных и даже пока еще неизвестных сбоев и максимально быстро восстанавливать свою штатную работу.
Мы обсудим некоторые причины отказов сервисов и на их примере разберем паттерны проектирования распределенных систем, используемыми разработчиками Amazon. Поговорим о том, что такое Cell-based architecture, Constant Work, Shuffle Sharding, и пр. Используйте подходы AWS в своих собственных решениях.