catch-img

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

おはようございます。

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

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

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

 

何をやったか?

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

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

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

 

normal-Dec-07-2023-09-00-54-9605-AM

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

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

normal (2)-Dec-07-2023-09-01-07-1166-AM

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

 

normal (3)-Dec-07-2023-09-01-34-3093-AM

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

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

 

どのような仕組みか?

 

original-Dec-07-2023-09-02-00-6779-AM

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

個人で所有しているドメインでアクセスできるようにしていますので、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 詳細・日程はこちらから

​​​​​​​

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

トレノケート株式会社 講師。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として表彰されている。また、各コミュニティの運営にも個人的に関わり、勉強会にてスピーカーや参加をしている。

無料ダウンロード

オススメコンテンツ

オススメ記事

プロジェクトマネジメント PMP AWS ビジネススキル Microsoft PMBOKⓇ 田中淳子 IT資格 人材育成 山下光洋 AMA Azure コミュニケーション 人材開発用語集 PMBOK®ガイド入門 クラウド ITスキル 新入社員 横山哲也 人材育成応援ラジオ re:Invent セキュリティ DX PMP試験問題に挑戦 Cisco PMBOKⓇガイド 第6版 試験体験記 イベント・セミナー AI(人工知能) PMBOK®ガイド第6版の変更点 人材開発 CCIE CCNA テレワーク ネットワーク リモートワーク 研修 GCP PMP(R)試験問題 第6版対応 PMP合格体験記 Windows Server AWS_Q&A Active Directory DX人材育成 IT人材 IT資格解説 アセスメント キャリア デジタルビジネス ヒューマンスキル リーダーシップ 人気コースランキング 大喜利 部下の育成 AI人材 Conversations PMの心得 グローバル人材 新入社員研修といえば IoT OJT reinvent2022 リスキリング 生成AI CCNP Security Windows PowerShell クリエイティビティ プログラミング 人材トレンド 試験対策問題 PMP試験対策一問一答 コーチング プロジェクト プロトタイプビルダー 1on1 AWS_DiscoveryDay AWSトレーニングイベント GCP無料セミナー Google Cloud Google Cloud Platform G検定 ITインフラ oVice アワード クリティカルシンキング サンプル問題 ステークホルダー ダイバーシティ ディープラーニング ワーケーション 自律 試験Tips Linux PMI Power Platform Python Teams Web会議 cybozudays