Стендап Сьогодні 📢 Канал в Telegram @stendap_sogodni
🤖🚫 AI-free content. This post is 100% written by a human, as is everything on my blog. Enjoy!29.10.2023
Система коментарів для блогу
Коротенький огляд того, як в мене на блозі працюють коментарі. Сам по собі блог є статичним сайтом, тож коментарі є єдиним динамічним компонентом. До того ж реалізація такої системи була більше вправою для розваги, бо реально коментарів майже ніколи ніхто не залишає.
А раз вправа, то робив я її сам, замість того, щоб брати щось з систем, які вже існують. Зазначу, вони в більшості працюють не так, як я хотів: а саме, потребують як мінімум локального файлу бази даних, а зазвичай — просто сервер СУБД. (Є ще рішення-сервіси, наприклад, Disqus, але вони начиняють сторінку пачкою рекламних скриптів, та мені це дуже не подобається.)
Я хотів рішення з мінімальним використанням ресурсів. Тому обрав архітектуру яка витрачає гроші тільки на додавання коментарів, а не на відображення. Кеш коментарів до кожної статті зберігається як файл JSON на S3. Відображення здійснюється скриптом на Svelte. Спочатку я хотів зберігати на S3 готовий HTML, але JSON+додаток не тільки простіше в розробці, а й займають менше місця, тобто завантажуються швидше.
А при додаванні підключається додаток на Golang, який міг би бути розташований на безплатній AWS Lambda, але поки залишився на безплатному fly.io. Додаток працює з базою коментарів, яка сидить в безплатному DynamoDB. Від DynamoDB мені були потрібні два запити: пошук коментарів для сторінки та пошук конкретного коментаря за ідентифікатором. До речі, для ідентифікаторів обрав ksuid, бо вони є впорядкованими за часом.
В системі є неявна авторизація — а саме, після створення коментаря в сесії автора залишається ключ, який дозволить відредагувати коментар. По закінченню сесії можливість редагування втрачається. Для перевірки на спам використовую Akismet - з цим сервісом я вже багато років.