推しアイデア
2というテーマだったので「通貫」した構成ということで、Goaを用いたマイクロサービスを構築。インフラからフロントまで構築しました!
―
2というテーマだったので「通貫」した構成ということで、Goaを用いたマイクロサービスを構築。インフラからフロントまで構築しました!
ハッカソン時にdiscordを使用していましたが、タスク管理や、情報の管理などで様々なサービスを使う必要があったため、一つで完結するようなアプリが欲しかった。
golangのフレームワークGoaです!Goaを使うことでgRPCのprotoやOpenAPIを記述する手間が省け、designを描かないと開発が始まらないのでスキーマ駆動にもなって最高です!
Discordでチャットや情報共有をしたいけれど、結局他のサービスへのリンク集になってしまったり、サービスも様々なものを使用することで管理が雑になったりするなどの問題がありました。それを解決するための第一歩としてこのソフトウェアの開発を思いつきました。
大規模な開発でも運用が続けれるような技術選定を心掛け、さらにインフラ部分も自前で用意して構築し、クラウドを使うより深めな技術に触れる。
結果、つなぎこみが間に合わず、完成には至りませんでした(泣
構成図
全てのサービスがOpenTelemetryにログやトレース情報などを送信し、Jaegerでトレース表示している状態↓
完全ではないと思いますが、フロントが持つトークンはOpaqueトークンに限定し、API Gatewayを通過する際に内部用のJWTに変換することで、直接エンドポイントを叩けないようにし、万が一内部に侵入されたとしても、他のpodには侵入されないような仕組みを目指しました。 さらに、内部の通信はgRPCを用いることでマイクロサービス間の通信を早くすることを目指しました。 そしてOpenTelemetryを配置することで様々な情報を一箇所に集めた後、複数のサービスで使用できるため、運用面でも実装面でも効率化を図りました。