自分のポートフォリオのアーキテクチャをじっと見つめて、それがどれほど断片化してしまったかに気づいた。今、humfurie.orgとhumphrey.humfurie.orgは完全に別々のバックエンドで動いており、正直、雑然として見える。
経緯はこうだ。私はLaravelモノリス(上にInertia + Reactを乗せたもの)から始めた。これは何かをすぐに公開するには最適だった。それからhumfurie.orgをNext.jsプロジェクトとして構築し、まだ自信をつけている最中の言語で書かれた別のバックエンドを使った。両方のフロントエンドはReactで、これは一貫性という点では良いことだが、それらはまったく異なるスタックによって動いている。Laravel側は1つのバンドルとして密結合しているため、フロントエンド層だけを簡単に取り出すことができない。
そこで考えているのはこうだ。もし別々の体験であるふりをやめて、1つのドメインの下に統合したらどうだろう?すべてをhumfurie.org経由でルーティングし、humfurie.org/humphreyでLaravelのポートフォリオセクションを提供する。すべてを1つ屋根の下に。
これに惹かれる理由
1つのドメインは、ブランドの観点からよりクリーンに感じられる。「これは散らばったプロジェクトです」ではなく「これは全部私です」と語る。訪問者にとってのメンタルモデルもシンプルになる。彼らは私のメインの仕事(humfurie.org)を見て、それから私のLaravelバックエンドのスキルを紹介する専用セクションを見る。Laravelでキャリアを築いてきた者として、それは明示的に強調する価値があるように思える。
加えて、私はすでにTraefikを稼働させているので、リバースプロキシは難しい部分ではない。問題は、その複雑さが実際に見合う価値があるかどうかだ。
しかし躊躇させるもの
確信が持てない技術的な部分は、ルーティングだ。Traefikはパスに基づいて異なるバックエンドへリクエストをルーティングすることは間違いなくできる。しかし、アプリケーション層はそのルーティングを知っている必要があるのだろうか?もしLaravelがアセット(CSS、JS)を配信しているなら、そのパスはおそらくルートからの相対パスでハードコードされている。突然それを/humphreyの下に置いたら、すべてが壊れてしまうかもしれない。Next.jsで構築されたReactフロントエンドも独自のクライアントサイドルーティングを持っており、それはドメインのルーティングロジックを自分が所有していることを前提としている。
それから、認証と状態の問題がある。これらのアプリはセッションを共有しているのか、それとも分離されているのか?もし/humphrey/*を完全に別のLaravelインスタンスへルーティングしたら、それらは1つの一貫した体験のように感じられるのか、それとも2つのアプリが気まずく押し込められたように感じられるのか?
より大きなアーキテクチャ上の問い
これが実際に正しい判断なのかどうかも気になっている。複数のドメインは、確かにSEO的にはより分散するが、それらが別個のプロジェクトであることも示している。1つのドメインの下に統合することで、ポートフォリオがより一貫性のあるものに感じられるかもしれないし、あるいは単に混乱を招くだけかもしれない。「待って、なぜこのLaravel管理パネルがhumfurie.orgの下にネストされているの?」というように。
一方で、統一されたドメインは、実際のSaaSプラットフォームがやっていることだ。もしこれを滑らかにやり遂げられれば、技術的負債を作ることなくドメインレベルのルーティングをアーキテクトする方法を理解していることを示せる。
実験としての角度
これが本当にやる価値があるのか、正直まだ確信は持てないが、探求するのは楽しい。実際に何を学べるだろうか?クライアントサイドのナビゲーションを壊さずに、プレフィックスベースのアプリルーティングをどう扱うか。まったく異なる2つのバックエンドを、1つのシステムの一部のように感じさせる方法。統合の手間が、よりクリーンな見た目に見合うかどうか。
このすべての根底にある本当の問いは、私のポートフォリオが1つのストーリーを語るべきか、それとも複数のストーリーを語るべきかということだ。1つのドメインは「私はこの一貫したものを構築した」と語る。複数のドメインは「私は複数のものを独立して構築できる」と語る。どちらも真実だ。
私は試してみる方向に傾いている。主に、両方のアプリのメンテナンスを地獄にすることなくこれが可能かどうかを見てみたいからだ。しかし、まずはトレードオフをじっくり考え抜く方がいいだろう。