プロジェクトの背景と開発方針

オンラインレッスン予約システムの開発メンバーとして技術支援を行いました。
行った技術支援は以下になります。

  • OpenAPIとユニットテストの導入
  • OpenSearchの導入
  • 各種機能追加、障害対応

開発のポイント

OpenAPIとユニットテストの導入

対象アプリケーションはSPAとなり、フロントエンドはAngular、バックエンドはPythonという構成でした。
バックエンド側にはユニットテストがまだ整備されておらず、ユニットテスト導入を担当することとなりました。

Pythonのユニットテストやモック周りの仕様はトリッキーな部分があり苦労しましたが、ユニットテスト導入の道筋をつけることができました。

OpenSearchの導入

対象アプリケーションではDynamoDBを採用していました。しかしRDBMSとしてしか使用しておらず、DynamoDBである必要性はありませんでした。またDynamoDBではインデックスやソート、ページングの処理が独特なため絞り込み検索と表示順との組み合わせに難がありました。例えば「レッスンをジャンルで絞り込み料金順でソートする」といったことができませんでした。MySQLに移行したいという話もありましたが、それも進まなかったため、喫緊の課題である表示順問題をOpenSearchで解決しようということになりました。

おおまかなタスクとしては、インデックスの更新とOpenSearchへのクエリ生成があります。インデックスの更新は対象データに変更があった場合にインデックスにも反映させるというものです。まずはデータが変更されるタイミングを洗い出しインデックス更新を組み込んでいきました。次に検索処理をOpenSearchに置き換え、またフロント側のページング処理もOpenSearch用に変更しました。

OpenSearchの導入により絞り込み検索でも表示順を指定することができるようになりました。

振り返り

クライアント様は立ち上げからまだ数年のベンチャー企業で、ダイナミックな勢いを体感することができました。意思決定者と気軽に話せるため毎週のように新しい取り組みが行われていました。しかし同時にさまざまな問題も抱えておられました。誤った技術選定により生産性が低下することもその一つです。特にデータベースは途中での変更が極めて難しいため慎重に判断する必要があると感じました。

プロジェクトデータ

開発期間
-
開発人数
10人

使用技術

言語
Python, TypeScript
Framework
Angular
データベース
DynamoDB
画像アップロード
AWS S3
ホスティング
AWS Lambda