Настало время еженедельного дневника. На прошлой неделе я потратил 7 часов на программирование моего персонального веб-сайта в свободное от работы время.
Интеграция Huma & OpenAPI 🌐
Интегрировал фреймворк Huma Rest в проект. Идея была давненько, но что-то никак не решался за неё браться. Но на прошлой неделе всё таки сделал переход. Пытался использовать LLM, чтобы дело быстрее шло, но Huma Rest - не особо популярная библиотека, поэтому LLM частенько тупит. Особенно это было заметно на первоначальном этапе, когда нету примеров в коде моего проекта.
В результате, имею документацию для моего сервера в формате OpenAPI. Эта документация автоматически импортируется в код frontend. Раньше такой роскоши не было, и приходилось прописывать все функции самому дважды: сначала в Go, затем в TypeScript. Теперь достаточно прописать Go, а ошибки в TypeScript обнаруживает компилятор.
Проверил производительность сервера после перехода на Huma Rest, и получил такой результат:
- Go Standard Library HTTP: 300 запросов в секунду
- Используем Huma Rest: 260 запросов в секунду
Производительность упала, но не критично: теряем примерно 13% 📉
Итоги
По итогу, у меня такой вопрос к самому себе: а что, так можно было?? 🙄 С самого начала подключить Huma Rest, и не париться с ручным прописыванием каждого нового API? Да, но не всё так просто. Кроме падения производительности, имеем ещё такие два недостатка:
- Код фреймворка периодически меняется, а вот Golang Standard Library остаётся стабильным практически навсегда
- Очередную неделю я потратил на рефакторинг. Это время можно было потратить на новые фичи
Грустить из-за недостатков я, конечно же, не буду. Проект продолжит использовать Huma Rest, ибо уменьшение ручной работы является большим плюсом 💹