QUO CARD Digital Innovation Lab Tech Blog

クオカード デジタルイノベーションラボの技術ブログです

QUOカードPayシステムのバックエンドで利用している技術

デジタルイノベーションラボの齋藤です。

今回はQUOカードPayシステムのバックエンドで利用している技術を紹介します。

以下のような技術/サービス/ツールを利用しています。

バックエンドの言語

決済アプリになるので出来るだけ問題を検出しやすいようにしたいと考え、まず静的型付け言語で進める方向で検討をはじめました。その時の候補はJava,Scala,Kotlin,Goです。

実際にシステムを開発する際はプログラミング言語だけでなくフレームワークも重要な要素になると思いますが、KotlinであればJavaの資産も利用でき、またJavaより冗長さが無く良いのではと考えサーバーサイドKotlinを選択しました。 Goは決済システムのバックエンドとしてはプリミティブすぎるのではないかと考え、Scalaは表現力が高いと思いますがメンバーによる差が出やすいと考え選択肢から外しました。

ちなみにGoはLambdaで使っています。

フレームワーク

リリース時はシンプルな部分のみ作っていたことやスケジュール的な都合等色々あり、Lambdaでgoを動かしていました。以下の通り現在解消されたそうですが、当時は色々課題があり、順次Fargateに移行しようとしてました。

Fargate移行後はメンバーの経験しているSpring Bootを利用していましたが、以下きしださんのスライドで説明されているように現在はコンテナの起動時間を考慮しMicronautも利用しています。

speakerdeck.com

O/R Mapperは最初はDomaを利用していましたが、今後jOOQが主流になりそうな雰囲気を感じたのでjOOQを導入しました。今後は以下のExposedがどうなるのかが気になっています。

github.com

インフラ

AWSを利用しています。Fargate上にデプロイしています。細かい部分ではgoをLambdaで動かしています。DBはAurora PostgreSQLを主に使っています。