サービス開発部のくればやしです。
今回、社内向けおすすめ本紹介プラットフォーム「さばわの本棚」の運用をはじめたので、それらの背景と採用技術について紹介します。
背景など
社員同士でおすすめ本の紹介をすることはよくありますよね。これまで多くの場合はSlackや各種MTG等で個別に紹介されることが多かったのですが、それらだと流れていってしまうので、どこかに情報をまとめておきたいなと思っていました。
社内で既に様々な用途で利用しているWiki的なサービスもあるのですが、おすすめ本の情報を整理しておくには物足りないなと感じていました。(個人的に本は表紙(装丁)も含めてコンテンツだと思うのですが、それらがうまく載せられなかったりしますよね)
そこで、Webページ上に本棚のような形でまとめておこうと考えました。
技術スタック
要件
現在のシステム要件は以下のとおりです。
- おすすめ本はファイルで管理するため、DBは不要
- 本に関する情報は事前に社内アンケートで収集済み
- 本の登録機能や任意の文字列検索機能はサポートしない
- つまりサーバーサイドの処理は不要
- 「社員」や「テーマ」ごとに表示を分けられる
- クライアントIP制限
- できるだけ安価
構成
採用した構成は以下の通りです。
- おすすめ本のコンテンツは yaml ファイルで管理し、S3バケットに格納
- Webサイト(HTML、CSS、JS)はS3バケットに格納(静的ホスティングではない)
- HTTPS化とIP制限はCloudFront
- IP制限は CloudFront Functions
- S3とCloudFrontはオリジンアクセスコントロール(OAC)で接続
簡単に構成図にすると以下のイメージです。
HTTPS化やIP制限等のやっかいなところはCloudFrontの機能で簡単にカバーできました。便利ですね。
静的Webホスティングの場合はS3バケットに直接アクセス可能となりますが、OACを使うことでS3に直接アクセスされる心配が無い点も嬉しいポイントです。
感想と今後の展望
今回、やりたいことは簡素でしたが、できるだけシンプルかつ安価に実現しようと構成を何パターンか考えました。on EC2や、Lambdaを使った方法も考えましたが、結果、CloudFrontの機能(OACやFunctions)によって非常に簡単に実現できたので、ありがたかったです。
今回はIPアドレス制限としましたが、本サイトのコンテンツが充実していったら、SAML認証等、社内からのアクセスをより便利にする方法も考えたいところです。(そうなるとサーバーサイドの処理も必要なので、また構成を考えなければいけませんが。)
また進展があれば、こちらのブログでご紹介したいと思います📕
参考サイト
紅林輝(くればやしあきら)(サービス開発部) 記事一覧
サービス開発部所属。2015年にサーバーワークスにJOIN。クラウドインテグレーション部を経て、現在はCloud Automatorの開発に従事。ドラクエ部。推しナンバーはⅤ、推しモンスターはクックルー。