bmf-techを支える技術

bmf-techを支える技術

Read in: en
bmf-techを支える技術

bmf-techを支える技術

このブログ(bmf-tech.com)を支える技術スタックについてかく。

旧bmf-techの構成

まずは現行のbmf-techはよりも1世代前の構成について。

前世代運用していたアプリーケーションが初代自作CMSであるRubel

これは何年運用したか覚えていないけど、多分3~5年くらいだと思う。

Rubelを運用する前は、Wordpressでオリジナルのテーマを作ってブログを運用していた。

Wordpress(オリジナルテーマ1)→Wordpress(オリジナルテーマ2)→Rubel→今に至るといった感じ。

bmf-tech.comのドメイン年齢を確認してみたら2015年11月2日が取得日であった。

いつからブログ運用を始めたか忘れてしまったが、ドメイン年齢に基づくなら7年近く運用していることになる。

新bmf-techの構成

現行のbmf-techの構成についてかく。

同じ構成でサンプルコードをgobel-exampleにて公開している。

設計

システムをリプレースしたい理由がいくつかあった。

それらの理由から新しいシステムの設計方針をざっくり考えた。

アーキテクチャ構成

設計方針を元に構築したアーキテクチャ構成が以下。

スクリーンショット 2022-11-22 22 53 31

デプロイ

デプロイは特に複雑なことはしていない。

ソースコード管理

コンテナ構成に基づいてソースコード管理がどういう形になっているか示した図が以下。

NOTE - Source code management

アプリケーション設計

API、Client(ユーザー側画面)、Admin(管理画面)それぞれのアプリケーションについて。

API

Client

Admin

DB設計

基本的にはRubelのDB設計をそのまま引き継いでいるが、論理・物理削除を見直して再設計した部分がいくつかある。 後はカラムのデータ型やサイズを見直したりといった感じ。

移行作業

データの移行は自前のデータ移行ツールを書いて対応した。

migrate-rubel-to-gobel

DB設計に大きな差がなかったので移行ツールは2~3日くらいで実装することができた。

サーバー移行については、大したことはしていない。 移行先のサーバー環境を整えて、動作確認するための検証用のドメインを取得し、移行先サーバー環境で各種動作確認を行った。 作っては壊しを繰り返してIaCに問題ないかもチェックした。

リリース作業時はDNSを切り替えるだけで新環境への移行が完了。

旧環境は新環境を1ヶ月くらい運用して問題ないことを確認してから削除、契約終了の手続きをした。

監視

監視ダッシュボードやアラートはGrafanaで作成・設定した。

監視ダッシュボードの方はjsonファイル形式でデータを管理し、プロビジョニングできるようになっているが、アラートはGrafanaのUIから設定している。 (アラートの方はまだプロビジョンニングに対応していないため cf. github.com - grafana/issues/36153 →対応されたのでプロビジョニングできるように対応した。

SLI・SLO

大してトラフィックがないのに設定するのは虚しい気もするが、トラフィックがどうこうというより、一定の可用性を安定して保つことができるか観測するという意味で設定したい。が、まだ未対応。

負荷試験

ちょっとやってみたいと思っているので検討中。

作ったものまとめ

新bmf-techをリリースするまでに作ったものをまとめる。

上記色々作る中でブログに書いたり、LTしたり他に色々やったりしていたので、新bmf-techのリリースにはかなりの時間を使ってしまった。

今後の展望

偶に開発の手を止めたり、道を外れたり、何回か途中でWordpressとか別の既存システムに変えようかと、迷ったことが幾度があったが、無事運用できる形になって肩の荷が下りた。

やれていないことややりたいことは色々といくつかissueを積んでいるので、趣味程度に片手間に対応していきたい。

ただ作るのではなく、どう作るのか、どう運用するのかということに磨きをかけていきたいと思っているので、そのための投資をこのブログシステムを通じてやっていこうと考えている。

自分が自作ブログを運用している理由は学びの要素が強い。実際結構多くのことを学ぶ機会になったり、今後も更に学ぶことができそうである。

当分は現行のシステムを運用し続けていくことができると考えているので気長にやっていこうと思っている。

Tags: Docker Docker Compose VPS Golang Vue.js Prometheus Promtail Loki Grafana Nginx
Share: 𝕏 Post Facebook Hatena
✏️ View source / Discuss on GitHub
☕ サポート

このブログを応援していただける方は、以下からサポートをお願いします。いただいたサポートはブログ運営・技術研鑽に活用します。


関連記事