ハイライト
foura.aiをゼロからリニューアルし、2日間ですべてのFourAプロパティに新しいデザインを適用しました。ブログ、ドキュメント、アップデートポータル、認証ページ、メールテンプレート、エラーページ。FourAの名前が付いているものであれば、すべてデザインが統一されています。インフラ面では、誤アラートを排除するためにモニタリングシステムを刷新し、適切なインシデントログを備えた設定可能なしきい値を追加しました。
新機能・アップデート
ウェブサイトの完全リニューアル
メインサイトのビジュアルを全面的に刷新しました。新しいタイポグラフィ(Outfit)、インディゴのカラーパレット、およびシステムデフォルトのオプションを備えた適切なダーク/ライトテーマへの対応を行いました。料金カード、プレイグラウンド、ランディングページ、問い合わせおよび法的ページ、および(静的なスクリーンショットではなくライブHTMLを表示するようになった)ダッシュボードプレビューセクションなど、すべてのコンポーネントを再構築しました。
サーバーサイドのOGメタタグを追加したため、SlackやDiscordでFourAのリンクを共有した際に、各ページの正しいタイトルと説明が表示されるようになりました。また、すでにログインしている場合、ボタンは自動的に"Try Free"から"Go to Dashboard"に切り替わります。
1つのデザインシステムを、すべての場所に
単一のリニューアルも素晴らしいものです。しかし、すべてのタッチポイントにおける一貫性こそが、それを確固たるものにします。私たちは、同じデザインシステムを以下に適用しました。
- 新しいタイポグラフィ、カラー、標準化されたヘッダーを備えたブログおよび**ドキュメント**
- メインサイトと完全に統一されたアップデートポータル
- すべてのログインおよびサインアップフローがFourAの外観と一致するようになった認証ページ
- APIキーの通知、クォータ警告、モニタリングアラート用のメールテンプレート
- 502エラーであってもブランドらしさを感じられるエラーページ
ダークモードを一度設定すれば、どこに移動しても適用されます。私たちは、.foura.ai全体で共有されるcookieを使用し、system、light、darkの3つの状態を持つクロスサイトのテーマ同期を構築しました。設定した好みは、タブやセッションをまたいで維持されます。
Cmd+K コマンドパレット
ブログ、ドキュメント、またはアップデートポータルでCmd+K(またはCtrl+K)を押してください。即座に検索とナビゲーションを利用できます。検索フィールドが空のときは、移動可能な候補が表示されます。入力を開始すると、コンテンツがリアルタイムでフィルタリングされます。小さな機能ですが、利便性は大きく向上します。
複数通貨による価格表示
価格表示はGeoIPを介して現在地を検出し、現地の通貨で金額を表示するようになりました。ローンチ時点ではUSD、EUR、GBPに対応しています。為替レートはライブの市場データから毎週更新され、GeoIPデータベースは2週間ごとにアップデートされます。実際にいくら支払うことになるのかを推測する必要はもうありません。
技術的な舞台裏
モニタリング機能の刷新
最大の課題は誤アラートでした。従来のCPUモニタリングでは、シングルコアの使用率をマルチコアコンテナの制限値と比較していました。4コアコンテナにおいて、1つのコアの90%を消費しているNode.jsプロセスは、全体では90%ではなく22.5%になります。すべてのCPUメトリクスを、実際のコンテナ容量に合わせて正規化しました。
rate limitの評価は、インスタンスごとのカウントから、実際に制限が適用されるAPIゲートウェイへと移行しました。これにより、内部サービス間のトラフィックをカウントしてしまうことで発生していた、誤った"approaching rate limit"警告が解消されました。
しきい値はデータベースで管理されるようになり、読み取りと編集のための完全なAPIが用意されました。再デプロイすることなく、アラートの感度を調整できます。また、ヒステリシスを備えたインシデントログを追加したため、サービスの状態が不安定に変動しても、50回も通知が飛ぶようなことはありません。
19,000リクエストの幽霊
リクエストパイプラインにおけるパースエラーにより、アクティブなrequestカウンターのリークが発生していました。検証に失敗した際にカウントがインクリメントされるものの、デクリメントされない状態になっていました。proxy routingサービスは、19,390件の"active"requestを報告していました。実際の数値は約20件でした。requestの追跡処理を適切なエラーハンドリングでラップすることで、この問題を修正しました。
インフラストラクチャ
ClickHouseをv24からv26 LTSにアップグレードし、システムログテーブルの7日間TTL設定、バックグラウンドスレッドの削減、メモリの2GBから4GBへの増強といったパフォーマンスチューニングを行いました。proxy-vaultのデータベースも同様にメモリを増強しました。CI側では、複数のワークフローが同時にトリガーされた際のデプロイの競合状態を防ぐため、コンカレンシーグループを追加しました。
しかし、最も未来を見据えた変更は、最も小さなものかもしれません。AIアシスタントがFourAの機能に関する構造化された説明を読み取れるよう、llms.txtを追加しました。時は2026年です。検索エンジンではなく、AIを通じてツールを見つける開発者が増えています。それなら、そのプロセスを簡単にしておくべきでしょう。