- История разработки проекта LegiNote 3 - Запросы в Go
- В этой статье описывается процесс разработки проекта LegiNote, в котором используется язык Go для получения информации о законодательстве из открытого API Национального собрания. Рассматриваются вопросы HTTP-запросов и определения структуры данных.
Здравствуйте, это StatPan.
Я пишу о разработке сайд-проекта LegiNote.
Ссылки на предыдущие части можно найти здесь:
Четвертая часть о разработке LegiNote, немного отличающаяся от предыдущих, будет посвящена настройке инфраструктуры.
Для разработки сервиса необходимы серверные ресурсы.
Конечно, если вы просто хотите поэкспериментировать и не планируете постоянно поддерживать сервис, можно рассмотреть использование персонального компьютера или бесплатных тарифов от различных компаний.
Можно использовать бесплатные тарифы от крупных облачных провайдеров, таких как AWS, Azure, GCP, для временного использования, или рассмотреть хостинг-сервисы, например, Cafe24, Gabia.
Мой выбор пал на бесплатный тариф Oracle Cloud. Можно сказать, что у них лучшая политика бесплатных тарифов среди облачных провайдеров.
В итоге,
я получил виртуальную машину с 4 OCPU, 24 ГБ ОЗУ и 200 ГБ SSD для постоянного использования в сервисе (трафик не безлимитный, но если вы его исчерпаете, вам уже понадобится платный тариф).
Однако, чтобы использовать эту виртуальную машину, необходимо пройти печально известный тест на регистрацию Oracle Cloud.
Таким образом, я получил одну виртуальную машину с круглосуточной поддержкой.
Ресурсов все еще не хватает
Во время разработки одного узла недостаточно.
По моему опыту, необходимы ресурсы, позволяющие разделять разработку и эксплуатацию для развертывания.
К сожалению, бесплатный тариф Oracle позволяет использовать только один узел (в стандартной конфигурации), поэтому я хотел получить еще одну виртуальную машину с круглосуточной поддержкой.
Альтернатива виртуальной машине — мини-ПК
Для обеспечения аналогичных характеристик сервиса Oracle Free Tier и круглосуточной работы без перерывов необходим сервер с достаточной производительностью и низким энергопотреблением.
При поиске информации мне больше всего помог DC-галерея.
Из таких вариантов, как n100, eqr6, ser8, я выбрал eqr6, поскольку он соответствовал характеристикам моей виртуальной машины и стоил очень дешево.
Barebone eqr6 — 240 000 вон
SSD 256 ГБ — 22 000 вон
ОЗУ 8 ГБ * 2 — 18 000 вон
Итого: 280 000 вон
Считая, что аналогичная виртуальная машина будет работать без перерывов около 1-2 лет, я посчитал, что это оправданная цена и купил его.
До этого момента все было гладко, но...
Начало проблем
Доставка, которая заставляет себя ждать
Да, доставка этих мини-ПК в наше время, когда посылки приходят за день-два, занимает очень много времени.
Две недели ожидания доставки показались очень долгими, и я уже начал думать, что меня обманули китайцы, когда наконец-то получил посылку.
Тем, у кого нет опыта настройки таких ПК, я советую в это время почитать полезные статьи на форуме мини-ПК.
(Например, о подготовке загрузочного диска, помимо прилагаемого USB-накопителя, или о драйверах для установки).
Сборка мини-ПК
Сборка мини-ПК стала для меня новым опытом. Я сам собирал настольный компьютер, поэтому думал, что это будет легко, но в мини-ПК много компонентов в небольшом корпусе, поэтому я столкнулся с некоторыми трудностями при сборке, особенно с выкручиванием застрявших винтов.
Чтобы выкрутить один винт, мне пришлось немного разобрать блок питания, и из-за неплотного соединения компьютер выключался даже при небольшом сотрясении. Было много таких забавных случаев.
Теперь это воспоминание, замаскированное под боль.
Настройка мини-ПК
Затем началась битва с BIOS. После установки Ubuntu оказалось, что видеокарта по умолчанию использует 8 ГБ видеопамяти, оставляя всего 8 ГБ оперативной памяти.
Мне видеопамять практически не нужна, так как я планирую использовать его как сервер, поэтому я долго искал соответствующую функцию в устаревшем меню BIOS. Версия BIOS была старой, поэтому мало руководств в интернете подходило.
В конце концов, я нашел решение в каком-то неизвестном видеоролике на YouTube.
Пользуясь случаем, хочу выразить благодарность неизвестному разработчику...
Настройка домашней сети
Я использую интернет от SK, но меня там не было во время установки, поэтому я не знал, как именно это было сделано, и, имея опыт работы в основном с интернетом KT, я слишком легкомысленно отнесся к этому.
То есть я думал, что используется только один маршрутизатор, подключенный к модему.
Однако в SK необычно то, что есть отдельный модем с прямым подключением к общедоступному IP-адресу, и отдельный модем (маршрутизатор) устанавливается в гостиной.
Сначала я не знал об этом, и маршрутизаторы в гостиной и в спальне постоянно использовали разные диапазоны, поэтому я думал, что проблема в маршрутизаторе в спальне, и несколько раз без толку его перезагружал.
Затем, после поиска, я узнал о существовании еще одного маршрутизатора и обнаружил модем, спрятанный в секретном месте.
Чтобы отомстить за потраченный день, я смело перевел модем с общедоступным IP-адресом в режим моста и попытался контролировать всю сеть, используя внутренний маршрутизатор SK в качестве NAT, но, как всегда, простого решения не бывает.
По неизвестной пока причине я получил два общедоступных IP-адреса.
Я доволен тем, что получил отдельный IP-адрес для сервиса, но всё ещё адаптируюсь к такому подходу, который сильно отличается от других интернет-провайдеров.
Тем, кто планирует настроить домашнюю сеть с использованием интернета от SK, я советую учитывать эти важные моменты, чтобы избежать проблем.
DDNS, DNS и переадресация портов
Думаю, если бы я получил дополнительную виртуальную машину Oracle, то мне не пришлось бы этим заниматься, но это был хороший опыт.
Домашние IP-адреса обычно динамические, поэтому простое сопоставление IP-адреса с DNS-сервером может потребовать повторного сопоставления после каждой перезагрузки маршрутизатора.
Для решения этой проблемы маршрутизаторы иногда предоставляют собственную службу DDNS.
Маршрутизатор SK не предоставляет такую услугу и рекомендует использовать сторонние сервисы.
К счастью, я использую маршрутизатор ASUS, поэтому я использовал встроенную функцию DDNS в панели управления маршрутизатором ASUS и сопоставил её с DNS-сервером, решив таким образом проблему.
Мне повезло, что у меня был опыт работы с DNS при покупке домена, поэтому я смог легко выполнить эту задачу.
Выводы после решения проблемы
Когда я только оценивал стоимость круглосуточной работы виртуальной машины, она казалась довольно высокой, но, учитывая затраты на первоначальную настройку и время, я начал понимать, почему облачные сервисы так популярны.
Тем не менее, я планирую продолжать развивать эту инфраструктуру для поддержания проекта, даже если он не приносит прибыли, а также для личного обучения.
На самом деле, пока нет необходимости в срочном масштабировании количества пользователей.
В будущем я планирую также публиковать информацию об инфраструктуре, поддерживающей этот проект.
Если у вас есть похожие проблемы или планы, я с удовольствием помогу.
На этом всё, это был StatPan!
Комментарии0