Работаю фронтенд-разработчиком, но меня всё больше привлекают задачи из сферы DevOps. У меня есть большое желание полностью перейти в эту область, так как я уже устал от постоянного кодинга. Подскажи, как лучше развиваться в этом направлении? Стоит ли идти по роадмапу и изучать всё последовательно? И где можно брать практические задачи? Например, я могу развернуть кластер, но не совсем понимаю, как имитировать ошибки для тренировки.
Например, падение приложения. Заходим на узел кластера, делаем ps, находим приложение и посылаем ему kill -9. Смотрим, как кубер это обнаруживает и восстанавливает работу приложения.
Или нехватка ресурсов. Пусть приложение еле-еле работает при 1.2 Гб выделенной памяти. Ставим лимит 1.23 Гб, а потом любым образом создаём нагрузку. Например, с помощью jmeter. Смотрим, как приложение не вписывается в лимит и прибивается.
Можно зашить в тестовое приложение какую-то логику. Например, пусть healthcheck выдаёт с вероятностью 1/100 ошибку. Смотрим, что через некоторое время healthcheck вызывает перезапуск приложения.
Можно сделать так, чтобы healthcheck задерживал ответ на случайное количество секунд, и смотреть, как оно иногда не вписывается в таймауты.
Можно имитировать проблемы внешних сервисов. Например, пусть приложение ходит за данными в чужой API. Ставим на пусти к API прокси-приложение, в котором создаём какую-нибудь проблему. Например, возвращаем ошибку 500 или 429 или просто задерживаем ответ, имитируя тормоза на сети.