notionツイートこんにちは。最近はGPT-4先生を質問攻めするのが日課となっています。Sites」というサービスをリリースしました。Sites」のサービス内容とその設計に関するお話を、登壇資料とともに簡単に紹介したいと思います。Sites」とは、Notionに書いたページに、独自ドメインをあて、デザインをカスタマイズして、Webサイトとして公開できるサービスになります。1機能として提供しています。必要な費用は「ドメインの取得更新費」のみで、ドメインがあれば無料でサイトが作成可能です。「Notionにコンテンツを書き込んで、自分の好きなドメインで公開したい」「Notionのデザイン好きだけどもう少しだけ自分用にアレンジしたい」といった方々に少しでも寄り添えればなという思いで開発を行いました。このサービスの特徴の1つとしてあげられるのは、あえてデザインカスタマイズできる幅を絞っている点です。厳選された項目のみを提示することで、選択肢から選ぶだけで「これいいな」と思えるサイトに仕上がるよう設計されています。」でもお話しています。YouTubeにアーカイブがありますので、合わせて見ていただければ嬉しいです。Sites」の設計において大きな特徴としてあげられるのは「静的サイトジェネレータ」を用いている点です。大きく以下の4ステップでサイトの作成を実現しています。取得した情報をもとに、Next.jsのSSGを用いて静的サイトをビルド生成したファイルをホスティングサーバーにデプロイサイトの更新時には必ずビルドしなおすステップが必要になりますが、動的サイトに比べて読み込み速度が速くなるためユーザー体験の向上が見込めます。非同期処理の実現方法サイトのビルドとデプロイには時間を要するため非同期処理を用いています。その非同期処理を実現するため、Kubernetesクラスターに以下を構築しています。サイト更新のリクエストを受け取るWebAPIビルドとデプロイを行うジョブワーカーWebAPIとジョブワーカーを繋ぐメッセージキュービルドとデプロイのリクエストはWebAPIで受け取られ、メッセージキューを流れ、ジョブワーカーによって読み込まれ、ビルドとデプロイが実行される、という流れになります。メッセージキューにはインメモリデータストアであるRedisを採用しています。Streamsという機能を利用し、可用性向上のためCluster構成としています。登壇資料を公開していますので、気になる方は以下のスライドをぜひご覧ください。Sites」のサービス内容とその設計の紹介をしました。最後まで読んでいただき、ありがとうございます。公式サイト」を見ていただけると嬉しいです。エンジニア新卒採用に関する情報をまとめたページも公開中!ツイート書いた人kinosuke01ディレクターやデザイナーとわいわい仕事しています。バックエンドの開発が多め。