Что у блога под капотом?
Некоторое время назад я обещал рассказать о тех технических особенностях, которые используются при создании, публикации и обеспечения работоспособности моего блога.
Для создания своего блога я выбрал фреймворк под названием Astro. Как говорится на сайте самого этого фреймворка: Astro is a JavaScript web framework optimized for building fast, content-driven websites. Как мне кажется, идеально подходит под определение блога. Да, пришлось изучить ещё один новый фреймворк! Но когда знаешь уже более трёх десятков различных языков программирования, то изучение нового диалекта – сущая ерунда.
Зато теперь создание нового поста происходит легко и быстро – просто всё надо обернуть в markdown файл по заданной схеме (см. фото №2).
Для хранения исходников, CI/CD, dns, хостинга, сертификатов и т.д. я использую Яндекс Облако. Исходники хранятся в sourcecraft, при каждом push’е запускается встроенный в sourcecraft процесс CI/CD, который (см. фото №3):
- Используя нужный docker-образ собирает статическую версию блога (и моего сайта-портфолио – но об этом как-нибудь в другой раз);
- Инсталлирует внутрь образа awscli, с помощью которого собранные сайты записываются в специальный s3-bucket;
- После этого инсталлируется яндексовская command line утилита yc, которую я использую для вызова cache purge яндексовского content delivery network.
Теперь кое-какие детали.
Доменные зоны я развернул в облаке яндекса. Очень удобно, что есть связка между cloud dns и certificate manager. Достаточно настроить и прописать правильный cname, и wildcard сертификат от let’s encrypt выпускается и продлевается автоматом.
Для блога я создал 3 бакета в объектном хранилище. В первом бакете я храню медиафайлы, используемые в постах – фото, документы, презентации, видео. Над этим бакетом настроен cdn, который делает этот контент доступным.
Ещё один бакет – технический. CI/CD пайплайн загружает в него очередную версию сайта блога в отдельную директорию, название которой соответствует времени сборки (см. фото №4). Если загрузка прошла успешно, то в основном бакете блога происходит атомарное переключение на загруженную версию. Для технического бакета настроена политика, которая автоматом чистит директории старше двух недель. Над основным бакетом, естественно, настроен cdn.
А теперь самое интересное – стоимость всего этого удовольствия. Дороже всего стоит хостинг dns-зон – около 4-х рублей в день (первое фото). Объектное хранилище обходится не дороже полутора рублей, а cdn – 20-30 копеек. Sourcecraft, использование облачных серверов для CI/CD, сертификаты, IAM и прочие вещи не стоят НИЧЕГО!!!
P.S. Правда, ребята из sourcecraft говорят, что с нового года sourcecraft станет платным. Посмотрю, насколько адекватным будет ценник, и тогда решу, что делать дальше.