weblog.ason.asのしくみ

weblog.ason.asはどうやって動いているのかを書いてみる

まだmermaidで図を書くこともできないけど、基本的にはAWSが提供しているサービスに身を寄せている。アクセスする順でいうと

DSQLを使っているのが、今どきというか今過ぎて開発環境での動作に困ったりするのだが、まぁ安く高性能なデータベースを運用できるというのはありがたい。

LambdaではAPIサーバーとしてSinatra(Ruby)を動かしている。

フロントエンドはあまり詳しくないので

あたりを利用している。APIとRouteの分岐のさせ方がちょっとわからなかったりしたのだけどAIくんに聞いたらサッと実装してくれてた。

全文検索の仕組みはもAWSに乗せていて、記事が保存されたらS3にSQLiteのDBがシュッと生成される。

登場人物としては記事に関することを司ってくれる「Authoring Lambda」と「Search Indexer Lambda」がそれぞれいて記事の保存後にAuthoring LambdaがSQSへ通知して、Search Indexer LambdaがDSQLの公開記事からqmdのSQLiteの索引を生成する。実体は内容ハッシュを含む不変の世代キーへ置き、検証後にmanifestを切り替えるようにしている

qmdを使っているのがLLM-Wiki時代っぽい。でもこのウェブサイトの文章は人間が書くんだよな。

可用性などを犠牲にしつつ、それっぽく全文検索を用意した。OpenSearchとか使うとそれだけでコストが跳ね上がるしね。

気になるコスト面だと、サーバーレス構成なので無料枠の中に収まれば1ドル以内で済みそう。

元になる技術要素としてはこんな感じだが、もう少し便利なサービスが出てきたらまた変わるだろうなと思う。

サーバーレスなのでcold startになると5秒ぐらい起動を待つことになるのはご愛嬌…

リポジトリはpublicです。

https://github.com/asonas/weblog.ason.as