Slide 1

Slide 1 text

自己紹介 氏名: 田川裕隆(たがわひろたか) 大学: 同志社大学社会学部社会学科 2回 配属: 23卒実践就業型インターン@AWA 得意技術: JS/TS 興味: 大規模サービス/テスト自動化/自然言語処理 マイブーム: 音楽(YOASOBI/ヨルシカ/ずとまよ)/読書(エッセイ集)/OSS活動(any潰し/テスト追加) リンク集: https://wafuwafu13.hateblo.jp/

Slide 2

Slide 2 text

配属先紹介 配属先: AWA株式会社 (1)  サブスクリプション型(定額制)音楽ストリーミングサービスを提供  ユーザー同士がリアルタイムに、同じ空間で同じ音楽を楽しみながらチャットができるオンライン空間  『LOUNGE(ラウンジ)』をリリース (2) メンター: 山下さん/佐々木さん (1) https://www.cyberagent.co.jp/corporate/overview/awa/ (2) https://news.awa.fm/jpn/2021/3/9/lounge-launch

Slide 3

Slide 3 text

やったこと ● Terraform のバージョンアップ (v0.12 => v0.13) ● 本番LOUNGEサーバーのリソース増強 (Terraform/Datadog) ● LOUNGE検索の追加 (MongoDB/Mongo Connector/Elasticsearch/Jenkins/Ansible) ● ドキュメント作成 (DocBase) ● LOUNGEの検索処理 (Go/gRPC/grpc-gateway)

Slide 4

Slide 4 text

背景と用語 用語 MySQL MongoDB Elasticsearch database database index table collection mapping raw (record) document document column field field 背景 LOUNGEを将来的に検索できるようにしておきたい 検索周辺のコードやツールは 1年以上触られていない コード、ドキュメント、過去の issueを参考に実装 LOUNGE = Room

Slide 5

Slide 5 text

アーキテクチャ Mongo Connector admin admin user rooms searchRooms search Elasticsearch Head grpc-gateway terminal rooms

Slide 6

Slide 6 text

MongoDB admin rooms searchRooms ● LOUNGE検索用collectionであるsearchRoomsのスキーマをGo で定義 ● 定義からアクセス用コードを Goで自動生成 (I/Oの型安全) ● roomsのCRUDに合わせてsearchRoomsもCRUD

Slide 7

Slide 7 text

Jenkins/Elasticsearch/Elasticsearch Head ● LOUNGE検索用のindexをJenkinsのJobで作成 ● Elasticsearch Head で index等を可視化 Elasticsearch Head

Slide 8

Slide 8 text

Ansible/Mongo Connector/papertrail Mongo Connector searchRooms ● MongoDBのデータをElasticsearchに同期 ● ECSを使う以前の歴史的経緯 ● JenkinsのJobとしてAnsibleのsshがうまくい かなかったのでローカルで実行 ● papertrailでログ監視

Slide 9

Slide 9 text

gRPC/grpc-gateway admin user search ● LOUNGE検索用のproto定義、コード生成 ● マイクロサービス間の通信 ● grpc-gatewayでデバッグ ● クリーンアーキテクチャ ● admin画面作る時間は足りなかった grpc-gateway terminal rooms

Slide 10

Slide 10 text

感想 Mongo Connector Elasticsearch Head ● 夕会すごい ● Go読みやすい ● インフラ周り楽しい ● 触るレポジトリ多かった ● サービスの歴史の理解が重要 ● 意外と自走できる部分はあった grpc-gateway