Рубрики
Uncategorized

Docker, Django, Traefik и Intercoolerjs — мой Go-to Stack для создания Сааса в 2020 году

Недавно я опубликовал несколько мыслей на Django, являющуюся отличными рамками для приложений. Этот пост EXPA … с меткой CodeSnippetsForpr, DevOps, Django, Docker.

Я недавно опубликовал некоторые мысли на 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 имеет два хищника, которые спасли меня часами на часы:

  1. Автоматические TLS с летанием. Буквально набор — это и-забытие — это. С помощью правых API ключей и поставщиком DNS вы также можете сделать проверку с DNS.
  2. Автоматическая настройка 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 дает мне легкий и удобный способ захватить производственные ошибки, как они случаются. Некоторые классные вещи о них:

  1. Открытый источник, так что вы можете провести себя, если это ваша вещь.
  2. Легко несколько строк, добавленных к вашему settings.py Файл в Джанго и это так.
  3. Тесная интеграция в ваши системы отслеживания 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»