# プロジェクト概要
ライブ配信を行うアプリケーションの追加開発や運用保守で自社メンバーの他、業務委託や他社と所属が違うメンバーで開発を行った。
## 開発メンバー
PM x 1人
デザイナー x 1人
エンジニア x 4 ~ 7人
# 担当内容
リードエンジニアとして参加しバックエンド・フロントエンドの開発を担当した。
- 既存環境のCI/CDの修正/構築
- ステージ環境の構築と導入
- 決裁システムの設計/実装
- チャット機能のリプレイス
- ライブ機能の拡張
- 動画エンコードサーバーの構築
- バックエンドアーキテクチャのリファクタリング
- コードレビューと技術的フォロー
# 使用技術
- Docker
- GCP
- Typescript
- Firebase
- GCE
- Agora
# 工夫した点や取り組み
1. バックエンド処理が全てCloudfunctionsでモノリシックに実装されていたため、機能毎の管理が乱雑かつ処理スピードに問題があった。
そのような状態で開発を進めると、技術的な負債が大きくなくほか、障害時の問題の切り分けが難しくなると考えた。
【取り組み】
サービスが既に稼働しているということもあり、基本機能のものはそのままにバッチ処理やFirestoreの更新などはCloudfunctionsのイベントトリガーなどに切り分け、動画のエンコード機能はGCEで実装するなどし上記問題を解決した。
2. 手動でデプロイをしていたため、リリース時に実装したまたは削除した機能などが含まれたりしていた。
複数人での開発のため、各々の手作業でのデプロイはミスを生みやすいと考えた。
【取り組み】
既存のGithubActionsを改修し、自動テストやブランチによるデプロイ先の変更などリリースフローを含むCI/CDを実現したことで問題を解決した。
3. アプリケーションの特性により、クライアントサイドにロジックが集中していたため問題発生時に対応が困難であった。
【取り組み】
Sentryを用いてクライアントサイドのログを収集し、問題を解決までの時間を短縮した
4. 初級エンジニアにはペアプログラミングやコードレビューを行うことで、技術的・精神的フォローをするように努めた
5. 業務委託や社外メンバーとはチャットやチケットで実装内容を確認するなどし、実装漏れや考慮漏れが発生しないように努めた