catch-img

コース中の質問をサーバーレスなアーキテクチャで受けて共有

おはようございます。

ラーニングサービス本部 テクニカルトレーニング第1部の山下です。

この記事が公開される頃には、日本は12月を迎えて年越しの準備とクリスマスで街が高揚している頃だと思います。私は予定通りであれば、re:Invent最終日の朝を迎えているはずです。

Advent Calendar初日を担当させていただきます。


何をやったか?

コース中の質問をサーバーレスな構成で受け付けて、質問と回答をRedmineに蓄積して他のインストラクターと共有します。(山下がデモとして行っていますので、山下の一部のトレーニングコースにて期間限定で実施しています。)

私が担当しているArchitecting on AWS, Developing on AWSにて、デモも兼ねまして、サーバーレスアーキテクチャでどういったものができるかを受講者に実感してもらおうとも思い構築してみました。

まずは、動きを簡単に画面でおってみたいと思います。


シンプルな質問フォームです。HTTPSで通信できます。

質問内容のみを入力して送信します。

質問した内容がRedmineにチケットとして登録されます。


そして同時に弊社が使用しているコミュニケーションツールのTeamsに通知されます。

これにより、私は質問が来ていることをリアルタイムで知ることができます。


どのような仕組みか?


アーキテクチャ図を元に解説を書きます。

個人で所有しているドメインでアクセスできるようにしていますので、Route 53のAレコードのエイリアスで、CloudFrontのドメインを指定しています。

Certificate Managerでドメインの証明書を発行して、Route 53のCNAMEでドメイン認証をしています。

CloudFrontにはCertificate Managerで発行した証明書を設定しています。

オリジンにはS3バケットを指定して、OAIにてバケットへのCloudFrontを介さない直接のアクセスをできないようにしています。

S3バケットにはHTML, CSS, JavaScriptを配置して入力フォームをCloudFront経由で配信しています。

[質問]ボタンが押されると質問内容がURLパラメータとしてAPI GatewayでデプロイしたAPIにPOSTされます。

API GatewayではURlパラメータをJSONに変換してLambdaにEventデータとして渡してLambdaを実行します。

Lambdaはメッセージを受け取って、SNSトピックへ発行します。

SNSトピックは2つのSQSキューへメッセージをファンアウトします。

1つ目のSQSキューからメッセージを受信したLambdaはRedmineのAPIへ質問内容をPOSTして新しいチケットを作成し、RedmineのURLとあわせてTeamsに通知します。

2つ目のSQSキューからメッセージを受信したLamndaはリクエスト内容と時間、送信元IPアドレスなどの情報とともにDynamoDBへ書きます。

ちなみにRedmineは、ALBで負荷分散しているAuto Scaling GroupのEC2とAurora Serverlessで構築しています。

Redmineの添付ファイルはEFSに格納するように、起動設定のユーザーデータでEC2からマウントしています。

設定画面、コードなど詳細は本ブログでは割愛いたします。


まとめ

例えば今回のような質問フォームをRedmineの機能として追加したいとします。RedmineはOSSなのでカスタマイズすることもできますし、プラグインを作ることもできます。

ですが、Redmineのバージョンアップのことや今後の運用を考えると、あまり手は入れたくありません。

オンプレミスから移行してくるアプリケーションにも同じようなことが言えるケースがあるのではないでしょうか。手を入れたくてもそもそも触れなかったり、保守、運用を考えるとカスタマイズが適さないケースもあります。

そのようなケースで本ブログのデモ構成のように、追加する部分だけをサーバーレスアーキテクチャを採用して実装してみてはいかがでしょうか?

アプリケーション(Redmine)には一切手を加えずに、追加機能を実装することができました。

それでは楽しいクリスマスを、よい年末をお過ごしになって、よいお年をお迎えください!


>> Trainocate Advent Calendar 2018 に戻る​​​​​​​

山下 光洋(やました みつひろ)

山下 光洋(やました みつひろ)

トレノケート株式会社 講師。AWS Authorized Instructor Champion / AWS認定インストラクター(AAI) / AWS 認定ソリューションアーキテクト - プロフェッショナル /AWS認定DevOpsエンジニア - プロフェッショナル / AWS 認定デベロッパー - アソシエイト / AWS 認定 SysOps アドミニストレーター - アソシエイト / AWS 認定クラウドプラクティショナー / kintone認定 カスタマイズスペシャリスト他。AWS認定インストラクターとしてAWS認定コースを実施。毎年1,500名以上に受講いただいている。AWS 認定インストラクターアワード2018, 2019を日本で唯一受賞。著書『AWSではじめるLinux入門ガイド』(マイナビ出版社)。共著書『AWS認定試験対策 AWS クラウドプラクティショナー』(SBクリエイティブ社)。前職では2016年にAWS Summitにパネラーとして参加。その前はLotus Technical Award 2009 for Best Architectとして表彰されている。また、各コミュニティの運営にも個人的に関わり、勉強会にてスピーカーや参加をしている。
   

AWS認定資格サンプル問題に挑戦

AWS に関する記事

人気記事

© Trainocate Japan, Ltd. 2008-2023