Я недавно опубликовал некоторые мысли на Django — отличные рамки для приложений Отказ Этот пост расширяется на том, чтобы включить другие произведения инфраструктуры от разработки в производственные среды.
Я использовал этот стек (или те, кто похож на это), чтобы построить небольшие приложения SaaS в 2018, 2019 и сейчас в 2020 году.
Весь мой стек
- Linux Server/VM размещена где угодно (я люблю лазурную, цифровой океан или масштаб)
- Докер. Просто просто докер
- Traefik для обратного прокси и TLS с летанием
- PostgreSQL работает в докере
- Джанго в контейнере
- Intercoolerjs для простого и простота Ajax, как интерфейсная работа
- Sentry для ловли ошибок производства (легкие три линии добавлены в ваш конфиг)
- Трубопроводы Bitbucket для CI/CD
- Zerotier для vpn/controlplane
Для более мелких проектов я пропускаю тесты локально в докеровских контейнерах, а затем подтолкнуть прямо в производство. Я не беспокоюсь с полным CI/CD, потому что мне не нужна сложность все это. Тем не менее, я делаю как трубопроводы Bitbucket.
Простая диаграмма моего Tech Tech Stack
Вуа! Это много, чтобы распаковать здесь. Давайте визуализируем это другим способом.
- Виртуальная машина
- Докер
- Django
- Диски монтируемых объемом данных
- Рабочие (долговечные команды Django)
- Диски монтируемых объемом данных
- Почтовые
- Диски данных, установленные громкости
- ТРАФИК
- Нулевой уровень
- SSH.
Это помогло? Дайте мне знать…
Хостинг
Ваши вещи нуждаются в доме (да, даже в мире «Смертный». РЖУ НЕ МОГУ). Мои личные предпочтения — Azure , Цифровой океан (Партнерская ссылка) или Масштаб Отказ Каждое предлагают достаточно вычислить, варианты сети, хранения и базовые сервисы для создания доказательств концепции или все, что вам может понадобиться.
Еще одно почетное упоминание здесь — Хетцнер . Они предлагают хороший уровень оборудования, обслуживания и цены.
Виртуальные машины
Для тех боковых проектов и многих предпринимательских приложений масштаб не проблема Отказ Это означает, что я не буду служить тысячам одновременных пользователей или обработки терабайт данных. Поэтому я могу пройти от меньших предложений — обычно до $ 20/месяц. Даже Azure (самые дорогие из трех) предлагают свои разрывные виртуальные машины. Вообще я люблю идти с Масштабы разработчики строки серверов Отказ
_ Обратите внимание, что Kubernetes отсутствует в моем стеке? Когда масштаб не является проблемой, то вам не нужны kubernetes. _
Докер. Просто просто докер.
Я не полагаюсь на поставщику ОС (Ubuntu), чтобы убедиться, что я запускаю последний докер на новых виртуальных машинах. Поэтому я использую хорошую маленькую Curl | Bash
техника.
curl -s https://get.docker.com | sudo bash
Это лечение одноклассника получит лучшую и последнюю версию для работы вашей машины.
Traefik для обратного прокси
Трафик был богом-отправителем с тех пор, как я его нашел. Nginx отлично, но он не был построен для Дочсерской Вселенной. Traefik имеет два хищника, которые спасли меня часами на часы:
- Автоматические TLS с летанием. Буквально набор — это и-забытие — это. С помощью правых API ключей и поставщиком DNS вы также можете сделать проверку с DNS.
- Автоматическая настройка NO-RELOOD с помощью этикеток Docker. Когда вы раскрутите новые услуги TRAEFIK, автоматически забирают изменения, потому что он слушает все события, связанные с докерами. Это делает невероятно удобно для добавления, удаления или слияния услуг по мере необходимости без каких-либо хлопот.
Мой только комментарий к Traefik заключается в том, что есть немного кривой обучения. Вы должны решить, как вы хотите настроить его (файл конфигурации, параметры командной строки, YAML или Docker-этикетки или использовать комбинацию!)
Еще одна заметка здесь: у меня уже Опубликовано мои производственные конфигурации для Traefik здесь.
Postgres для базы данных
Пробовал и правда, postgresql никогда не подвел меня. Я обычно прикрепляю одну из этих контейнеров к проекту, который нуждается в этом без каких-либо сложности. Я просто раскрутив контейнер, связывайте порты, а затем связывайте объем данных к моему хосту диску. Сделано и сделано.
Docker-Compose.yml.yml.yml
version: '3.1' services: db: container_name: postgres hostname: postgres image: postgres:11 restart: always environment: POSTGRES_PASSWORD: secretsonly volumes: - ./data:/var/lib/postgresql/data ports: - 5432:5432 networks: - web networks: web: external: true
DoceRized Django для Интернета
Docker развертывает красиво в контейнере, и я делаю это уже несколько лет. Преимущества сопоставления вашей среды развития вашей продукции нельзя завышены, и у меня есть Docker, чтобы поблагодарить за это.
Команды Django для асинхронных задач
Кроме того, для асинхронных задач я просто использую Пользовательские команды Django которые являются частью стандартной структуры. Шаблон здесь простой в то время как
петля с Сон ()
период. Он опросает базу данных для соответствующих действий, а затем делает это.
Intercoolerjs, потому что кому нужна сложность?
Мне много, чтобы сказать об этом, но это придется войти в серию постов. TLDR; Вот что я использую эту прекрасную маленькую библиотеку JavaScript вместе с jQuery ( Ага, Это 2020, и я все еще использую jQuery ) Чтобы сделать части моих приложений чувствовать Как одностраничные приложения, но не на самом деле.
Intercoolerjs сохраняет эту старую школу «Ajax» (помните это слово) добры и позволяет мне обновлять DOM с HTML с бэкэнда. Это бесшовные, гладкие и действительно удобные для вещей, таких как логины и небольшие обновления формы.
Я настоятельно рекомендую вам проверить это: Узнайте больше о Intercoolerjs
Sentry, чтобы поймать ошибки производства
Я делаю ошибки. Много ошибок — но нет необходимости показывать их своим пользователям, верно? Sentry дает мне легкий и удобный способ захватить производственные ошибки, как они случаются. Некоторые классные вещи о них:
- Открытый источник, так что вы можете провести себя, если это ваша вещь.
- Легко несколько строк, добавленных к вашему
settings.py
Файл в Джанго и это так. - Тесная интеграция в ваши системы отслеживания GIT REPOS и выпуска для полной прослеживаемости дефекта производства.
Еще одна хорошая вещь — это то, что вы можете отключить его для развития.
Проверьте Sentry здесь Отказ
Трубопроводы Bitbucket для CI/CD
Там есть так много предложений CI/CD сегодня, но я был доволен предложением BitBucket под названием трубопроводов. Они предлагают вам несколько сотен минут бесплатно каждый месяц с возможностью пополнения по мере необходимости за небольшую плату. У меня были редко были проблемы, и мне действительно наслаждаются своими файлами конфигурации/директивы YAML.
Используя Bitbucket-Pipelines.yml
Файл I смогли выполнить полное сквозное тестирование, включающие несколько контейнеров Docker, загружая базы данных и работают сотни испытаний всего за несколько минут. Это был ключ в ускорении вещей в нашей команде и включил 5+ толкал к производству в день.
Оформить заказ Bitbucket здесь Отказ
Zerotier для самолета VPN/управления
Наконец, мы приходим к немного технологии, которая в значительной степени необязательно, но приятно иметь. Zerotier — это уникальный вид сети/VPN, который я использую, чтобы связать все мои личные машины. Он работает, хотя брандмауэры (дома, в офисе) и предлагает легкую 1 минуту настроек.
Используя Zerotier в моей последней компании, мы смогли удалить SSH Jump Servers, которые вызвали головную боль в терминах управления ключей и совместному пропускной способности на одной машине.
Зеротье работает на Linux, Mac, Windows, Android и iPhone, так Вы в значительной степени покрыты.
Нижний недостаток в Зеротье является то, что я не совсем понимаю, как это работает. Это очень похоже на MacOS или iPhone в том, что он «просто работает», как и ожидалось, и я редко (никогда) нет проблем. Это сила от перспективы пользовательского опыта, но WTF? от перспективы CTO.
Заключение
Надеюсь, это более глубокое погружение будет предлагать некоторые интересы и любопытство о Docker, Django, Traefik и особенно Intercoolerjs. Это просто, легко работать, и позволяет вырвать из него, когда придет время.
Оригинал: «https://dev.to/simplecto/docker-django-traefik-and-intercoolerjs-is-my-go-to-stack-for-building-a-saas-in-2020-pdf»