Как найти баланс между созданием и поддержкой собственной инфраструктуры и использованием hosted services? Я предлагаю следующий вариант:
Иногда бывают ситуации, когда технический долг препятствует реализации каких-то задач. При этом наверстывание технического долга может требовать времени гораздо больше, чем решение основной задачи. В этом случае есть смысл воспользоваться техническим кредитом — вместо того, чтобы напрямую заниматься устранением технического долга, можно использовать другие технологии, которые позволяют временно обойти возникшую проблему.
Зачастую в любом новом проекте хочется применить самые новые и актуальные технологии. Обычно это хорошее желание, но иногда оно бывает вредным.
А поэтому вам не нужно пытаться просто копировать все те подходы, которые используются в этих компаниях. Карго-культ – это плохо.
Принимая любое решение в разработке вы решаете задачу с тремя известными: время, деньги, ресурсы.
Если у вас высоконагруженная система и вы используете retry policy для доступа к внешним ресурсам, то в случае сбоя ваши запросы буду откладываться и повторяться через определенный промежуток времени. При этом, если множество запросов будет отложено и выполнена единовременно, вы можете перегрузить внешний ресурс.
Начинающий разработчик еще не знает как называются все паттерны.
Времени вы потратите много, а потом все равно переделывать.
Нанимать нужно не тех, кто хорошо умеет проходить собеседования, а тех кто хорошо умеет работать.
При любом крупном изменении в системе всегда используйте резервирование.