Опытом делится Виталий Лихачёв, SRE в booking.com и спикер курса Слёрма «Golang-разработчик». Он рассказывает, о чём стоит подумать перед выкаткой сервиса в жестокий прод, где он может не справиться с нагрузкой или деградировать из-за резких всплесков при наплыве пользователей и по вечерам.
Считайте это некоторым чек-листом, но не применяйте все пункты as is, потому что каждая система уникальна и иногда вполне допустимо построить менее надежную систему с целью значительного сокращения затрат на разработку, поддержку и эксплуатацию (например, отсутствие резервирования). Однако бэкапы обязательно должны быть 🙂
Некоторые термины не будем переводить не в силу лени автора, а в силу устойчивости терминов в литературе.
Отдельные пункты внимательный читатель может отнести сразу к нескольким разделам верхнего уровня. Поэтому деление на подгруппы довольно условное.
Если возникнет вопрос, а почему не описан некоторый X в чек-листе, то ответ простой: статья и так получилась огромной, и вы вероятно сможете найти что-то полезное для себя.
Статья состоит из 5 частей, которые будут выходить по очереди:
1. Надежность.
2. Масштабируемость/отказоустойчивость.
3. Resiliency/отказоустойчивость.
4. Безопасность. Процесс разработки. Процесс выкатки.
5. Наблюдаемость. Архитектура. Антипаттерны.