Fear and loathing in distributed systems [russian]
Если ваше приложение внезапно перестаёт помещаться на один сервер, то надо ставить ещё N серверов рядом, ведь ничего же сложного, разве что-то может пойти не так?
Но встав на шаткую дорожку создания распределенной системы с неокрепшим умом, можно с удивлением обнаружить, что ваш кластер внезапно теряет и портит данные, страдает раздвоением мозга и живёт своей насыщенной жизнью против вашей воли.
Этот доклад попытается прояснить:
- Какие проблемы встречаются при создании распределенных систем;
- Как можно налажать и допустить типичные ошибки при проектировании;
- Матчасть о целостности, CAP-теореме, линеаризации и консенсусе;
- Как все эти знания применять на практике, и какие бывают инструменты для облегчения нелёгкой жизни разработчика распределенных систем.
В процессе рассуждений и откровений для закрепления материала мы вживую напишем простенькую редисо-подобную распределенную систему на Scala и Akka в 100 строк, а потом достанем Jepsen и весело её разломаем, заставив терять данные.