開発事例 001

サービスの成長をバックアップ

  • クライアント : 株式会社pring様
  • サービス : お金コミュニケーションアプリ「pring」
  • Ruby2.4 / AWS EC2 / MySQL / Redis / DynamoDB

プロジェクト概要

pringは銀行と連携し、アプリ内でお金を送信するサービスです。pringアプリの機能拡張の他、様々な店舗(デバイス)でのAPI対応から保守運用までをサポートしています。企業様にはマイクロサービス化していくという思惑もあり、新機能を追加するにあたっては、モダンかつスケーラブルで可用性の高い仕組みとシステム全体の変革が求められました。公開APIではインタフェース設計〜開発・運用までを承っています。

課題・要望

新機能を追加するにあたって、既存のPHPで作られた仕組みが肥大化していること、メンテナンス性に欠ける点が問題視されていました。これに加えて企業様側にはマイクロサービス化していくという思惑もあり、新機能は新しいサービスとしてRailsとNode.jsでそれぞれ開発することとなりました。

その際、モダンかつスケーラブルで可用性の高い仕組みにするため、新機能をただ追加するだけではなく、システム全体の変革が求められました。具体的にはDynamoDBとRedisの導入、RDB内データ構造の変更等、リスクがありつつも今後のために必要な施策を行う必要がありました。

そのほか新機能だけではなく、他社のサービスとの連携を可能にする公開APIが必要となり、認証周りも含めたインタフェース設計〜開発・運用まで要望として承りました。

開発者の声

チャットの高速化においてRubyはパフォーマンスが良いとはいえなかったため、キャッシュを使って高速化しています。社内にはアプリを専門にしている技術者が在籍しているため、キャッシュや非同期処理への知識があり、ヒントを得て実現しました。

ツールでの負荷試験においては最初は厳しい結果が出ており、そこから何度もトライして高速化を実現していったのですが、システム間を繋ぐキャッシュの扱いに工夫が必要でした。チャットのメッセージを保存するところでRDBではなく、DynamoDB(KVS)を使い高速化しています。
公開APIは汎用な設計を行うとともに、特定顧客向けにイレギュラーな機能追加も容易になるようにメンテナンス性を重視した設計・実装を貫きました。