IT・ビジネススキル・人材育成の情報を掲載 | 人材育成のトレノケート【公式ブログ】

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

おはようございます。

ラーニングサービス本部 テクニカルトレーニング第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研修(AWS認定トレーニング)

トレノケートのAWS認定トレーニングでは、AWS社の厳格なテクニカルスキル及びティーチングスキルチェックに合格した認定トレーナーがコースを担当します。AWS初心者向けの研修や、AWS認定資格を目指す人向けの研修をご提供し、皆様のAWS知識修得のサポートをいたします。
トレノケートのAWS研修(AWS認定トレーニング)はこちら


▼AWS初心者の方は、 AWS Cloud Practitioner Essentialsから!
座学中心の研修で、AWSを初めて学ぶ方や、営業などで提案に関わる方におすすめです。
「AWS Certified Cloud Practitioner」資格取得を目指す方の基礎知識修得にも最適です。
→ AWS Cloud Practitioner Essentials 詳細・日程はこちらから

​​​​​​​