2021-02-05 10:45:03
12 факторов: сервисы — это подключаемые ресурсыЕсли попросить джуна настроить отсылку почты, он вполне может впасть в крайность и вызвать /usr/sbin/sendmail. Если попросить сделать файловое хранилище, то он сделает папочку /home/app/files.
Тем самым он подкинет много работы админам: мало того что всё это добро должно быть внутри контейнера с приложением, так это ещё и целая инфраструктура: нужно поддерживать репутацию почтовых доменов; следить, чтобы все файлы были доступны всем инстансам приложения (файл сохранили на одной машине, а прочитать его надо на другой); бэкапить и мониторить всё это, наконец.
Более продвинутый джун уже знает про SES и S3: он затянет в приложение их официальные либы, решив существенную часть проблем. Но не все: к примеру, на openshift уже не смигрируешь, да и на локальной машине отладка и тестирование сильно усложнится — нужно будет либо мoкать хождение в амазон, либо на каждый тест, который, скажем, генерит юзера, класть его аватарку в облако.
Продвинутые ребята рассматривают такие зависимости как внешние ресурсы, поддерживая для них полноценные абстракции. К примеру, в джанге складывают файлы через storage api и django-storages, а почту шлют через django-anymail. Поменял переменную окружения — и вот уже файлы складываются на рамдиск вместо s3, а почта шлётся через sendgrid вместо postmark.
12.0K viewsedited 07:45