Рубрики
Без рубрики

El Chopo: с открытым исходным кодом и короткой URL-адресом, написанный в Python / Flask

Если вы работаете над продуктом, который отправляет уведомления людям, и если эти уведомления могут содержать Li … Помечено Python, безверенно, AWS.

Если вы работаете на продукте, который отправляет уведомления людям, и если эти уведомления могут содержать ссылки, существует высокая вероятность того, что вы используете короткоформат URL, чтобы текст в ссылке отформатирован и легко читать.

Наш продукт имел подобное требование. Мы отправляем автоматические уведомления Transactional WhatsApp для людей, которые размещают заказы на магазинах электронной коммерции, и сообщения выглядят намного лучше с коротким URL-адресом фиксированного размера, а не оригинального URL, который нарушает опыт.

Так что теперь давайте посмотрим на атрибуты, мы ожидаем, что этот доллар URL будет иметь.

  1. Отдельный микроэлектрический сервис, который разбирается от остальной части продукта.
  2. Очень масштабируемо, поскольку мы не знаем, что будет расти наша тома сообщения.
  3. Не иметь необходимости отслеживать и поддерживать, когда-то развернуты.
  4. Используйте наше собственное короткое доменное имя (Bit.ly/Something не будет работать)
  5. Должен быть дешевым (в качестве bootstrappers у нас нет слишком много $$, чтобы потратить на вещи, как это)

Мы посмотрели на многие 3-го вечеринки, которые сделали это, но их бесплатный план не включал фирменные ссылки и их платные планы стоят около 30 долларов в месяц. Мы поняли, что мы можем построить это за день, и это будет стоить нам 1/10 этого.

Почему безведно?

Как вы можете сказать, это услуга, которая не будет иметь устойчивый или предсказуемый вид трафика. Единственный раз, когда нам нужно, когда сообщение должно быть отправлено, поэтому предоставление сервера, который проходит 24×7 для такой вещи, кажется бессмысленным, когда там есть отличные решения без сердца.

У нас также была сильная основа полагать, что если мы использовали AWS Lambda, есть хороший шанс, что мы никогда не превышаем свободный уровень для использования Lambda, и эта услуга будет стоить нам около 0 $.

Некоторое время назад я волновался, что развертывание и бегание функции лямбда на AWS принудило бы замок поставщика, но тогда я обнаружил что-то безумно крутое Zappa Отказ

Zappa позволяет использовать обычную приложение Flask/Django и упаковывать его для запуска во шлюзах AWS Lambda + API. Это, по сути означает, что если я когда-либо хотел выйти из сервеса, я мог легко сделать это, запустив свое приложение на регулярном случае, не изменив ничего в моем приложении.

Заппа также может быть развернута с одним командным сообщением, которое вы получаете URL-адрес, где находится ваше приложение. Честно говоря, это наименьшее количество работы, которую я когда-либо делал в моей жизни, чтобы развернуть приложение, которое масштабируется почти бесконечно.

Что может сделать Эль-Шапо?

Вы можете найти исходный код для El Chopo здесь Наряду с инструкциями о том, как его развернуть. Пожалуйста, не стесняйтесь вилить его и создайте свои собственные вариации. На данный момент это заботится о следующих вещах.

  1. Создайте новый короткий URL, принимая длинный URL и короткий путь.
  2. Перенаправляйте до длинного URL, когда короткий URL уволен.
  3. Позвоните в веб -ookook асинхронно, когда короткий URL уволен. Это может быть очень удобно для отслеживания щелчков и запуску других функций на клик URL.
  4. Развертывание для производства с одной одной командой.

Что нужно для развертывания El Chapo?

  1. Аккаунт AWS.
  2. Короткое доменное имя, которое у вас есть.

Чтобы быть понятным, вам не требуется доменное имя для проверки приложения. Вы можете сделать это с URL-адресом по умолчанию, который Zappa создает для вас, и как только вы закончите с этим, вы можете купить короткий домен и маршрут всех запросов, приходящих к этому домену на этот URL в настройках DNS.

Как работает Эль-Чапо?

El Chopo использует AWS Dynamodb в качестве хранилища данных для сохранения следующей информации:

  1. Короткий путь URL
  2. Оригинальный URL
  3. WebHook Url.

DynamOdb – это очень эффективное и дешевое хранилище данных ключа, которое способно обрабатывать запросы со скоростью даже 20 миллионов в секунду. Он также полностью управляется со встроенным безопасностью, резервным копированием и восстановлением, а также кэширование в памяти для приложений в Интернете.

Мы даже не в конечном итоге удаляли старые укороченные URL-адреса от DynamoDB, потому что это не стоят нам ничего, чтобы сохранить его. Однако, если вы хотите истечь и срок действия и удаления старых записей, вы можете сделать это легко, так как Dynamodb поддерживает TTL для записей в базе данных.

Теперь, когда устанавливается хранилище данных, работа этого приложения довольно прямая. Когда запрос получен для создания нового короткого пути URL, запись создается в базе данных с вышеуказанными 3 полями, и когда кто-то щелкает на коротком URL, они перенаправлены на оригинальный URL и параллельно, если определен веб-канал, это называется. Это в значительной степени это.

Чтобы сделать этот процесс еще проще, Dynamodb имеет Python SDK, который вы можете использовать для определения модели в вашей базе данных так же, как вы будете делать, если бы у вас был доступ к ORM.

Дополнительная документация о внутренней работе приложения определена в Github repo упомянутый ранее.

Закрытие заметок

Поскольку я несколько раз упомянул несколько раз, что это решение очень дешево для поддержания, позвольте мне поддержать это претензию с некоторыми номерами.   В июне в июне у нас было 73 тысяч запросов на чтение и 914К запросы на запись на Dynamodb. Стоимость этого пришла 1,16 $

А что касается лямбда, мы сделали 1,16 миллионов запросов, из которых около 1 миллиона были в свободном уровне, поэтому стоимость этого составила 0,04 $

Наконец, плата за шлюз API составила 3,73 доллара.

Таким образом, общая стоимость обслуживания> 1 млн. Запрос на эту установку стоит около 5 долларов, что не ноль Но это довольно близко к нулю, учитывая нашу МРР и объем.

Ссылка на оригинальный блог

Оригинал: “https://dev.to/sankalpjonna/el-chapo-an-open-source-serverless-url-shortener-written-in-python-flask-1eef”