Upgrade to Pro — share decks privately, control downloads, hide ads and more …

AWSを使って送金機能を実装してみよう - 「sunabar-GMOあおぞらネット銀行API実...

AWSを使って送金機能を実装してみよう - 「sunabar-GMOあおぞらネット銀行API実験場-」コミュニティイベント第6弾

「sunabar-GMOあおぞらネット銀行API実験場-」コミュニティイベント第6弾「スタートアップ企業さま向け!AWSと始める銀行連携APIソリューション」
2020-12-18 @ Webinar
https://gmo-aozora.com/news/2020/20201130-03.html

Yuichiro SAITO

December 18, 2020
Tweet

More Decks by Yuichiro SAITO

Other Decks in Technology

Transcript

  1. © 2020, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. 齋藤 祐⼀郎 アマゾン ウェブ サービス ジャパン株式会社 スタートアップソリューションアーキテクト 2020/12/18 AWSを使って 送⾦機能を実装してみよう スタートアップ企業さま向け︕AWSと始める銀⾏連携APIソリューション
  2. © 2020, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. 齋藤 祐⼀郎 (id:koemu) スタートアップ事業本部 技術統括部 ソリューションアーキテクト 過去、バックエンドのソフトウェアエンジニアとして、主 に FinTech(決済・出⾦)や CtoC マーケットプレイスのシ ステム開発を担当。 数々のスタートアップ企業に勤務し、IPOなどを経験。 最近は、主にアーリーステージのスタートアップ企業様の 技術⽀援を担当している。
  3. © 2020, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. 今⽇お話しすること • AWSのサーバレスアーキテクチャを活⽤して、⾼い可⽤性・ セキュア・そしてスケーラブルなシステムを開発することが⽐ 較的容易にできます。 • サーバレスのシステムを開発する際、主にAWS Lambdaや Amazon DynamoDBを活⽤することができます。 • ⾮同期で問題ない並列処理を実現する際に、キューは活⽤しや すい解決⼿段の⼀つです。
  4. © 2020, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. Agenda • 送⾦機能を実装するときとは︖ • ネットバンキングで総合振込をしようとすると • AWSを⽤いた参考アーキテクチャ • 参考⽂献
  5. © 2020, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. 想定する聴講者の⽅ • スタートアップ企業に勤める バックエンドソフトウェアエンジニア • 特にSeed〜Series A • 振込に関する機能開発の経験がない
  6. © 2020, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. 今⽇お話ししないこと • セキュリティ • コンプライアンス • 法律 (特に資⾦決済法)
  7. © 2020, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. 送⾦(振込)について ⼤きく分けて2つあります。 • 振込振替 • 1件ずつ送⾦: ATMとかでおなじみの⽅法 • ⼀般に営業時間内なら即時性はある • 総合振込 • まとめて送⾦: 法⼈が取引先などに送⾦する際によく使う⽅法 • 送⾦スケジュールが決まっている • 今回は「総合振込」を前提にお話しします。
  8. © 2020, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. 送⾦機能を実装するときとは︖
  9. © 2020, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. どんな時に送⾦機能を実装するの︖ • 取引で⼀時的に預かったお⾦を⽀払う • 例1) クラウドソーシングサービスの報酬を請け負った⼈に⽀払う • 例2) 個⼈間取引サイトの購⼊代⾦を売り⼿に⽀払う • 加盟店に売上を⽀払う • 例3) ECサイトの購⼊代⾦を加盟店に⽀払う • 例4) アフィリエイトの報酬をアフェリエイターに⽀払う • 受け取ったお⾦を渡すために、なくてはならない機能です。
  10. © 2020, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. ネットバンキングで 総合振込をしようとすると システムを構築した時と状況を⽐較してください
  11. © 2020, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. ネットバンキングで総合振込をしようとすると 1. (使⽤する銀⾏⼝座の預⾦残⾼が⾜りているかを確認する) 2. ⾃社のサービスから振込先が記載された全銀フォーマットのCSVを⼿動出⼒ 3. ネットバンキングのシステムにCSVを⼿動で取り込む 4. 振込⽇に振込結果のCSVをネットバンキングのシステムから⼿動で出⼒ 5. 振込結果を⾃社のサービスの利⽤者に伝える 6. 振込が失敗している場合は⼿数料を引いて利⽤者の残⾼に戻す • これらを、予定通り、⼀部⼿動で、かつ誤りなく終えなければなりません。 • 送⾦システムを開発すると、これらの作業のほぼ全てを⾃動化できます。
  12. © 2020, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. AWSを⽤いた 参考アーキテクチャ 伝統的なアーキテクチャと⽐べつつ
  13. © 2020, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. 伝統的なアーキテクチャ(オンプレミス)の⼀例 On-premise Datacenter 利⽤者 (アプリ) ⾦融機関 API Server Batch Server 負荷が⾼まった時や可⽤性を担保 するためのサーバ増設が⼤変。 Relational Database Server 処理能⼒を⾼めるためには スケールアップしかない (特に締め処理) Credentialはどう扱う︖ Firewall 通知処理などは⾃⼒ で実装が必要
  14. © 2020, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. 伝統的なアーキテクチャ(オンプレミス)の問題点 全般 • 総合振込はバッチ処理が多く、バッチサーバがSPOFになりがちだった。 • Credentialを安全に保存する⽅法に⼯夫が必要だった。 締め処理 • 締め処理など、並列化する処理を書くこと⾃体にノウハウが必要であった。 • 締め処理後の通知処理を⾃⼒(+OSS)で実装する必要があった。
  15. © 2020, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. クラウドを活⽤して問題点を解決する参考アーキテクチャ AWS Cloud 利⽤者 (アプリ) ⾦融機関 VPC for Production Amazon CloudFront Amazon EC2 (API Server) Batch Server Amazon Aurora (RDB) SQS+処理をWorkerに移譲し 締め処理のスループット向上 AWS WAF NAT Gateway Amazon SNS ALB AZ 1 AZ 2 Avaliablilty Zone (AZ)を2つに 分け、Auto Scalingを有効にし て可⽤性を担保。 Amazon SQS Writerはスケールアウト できない SPOFは解決できない (特に総合振込依頼) Credentialを安全に保存 AWS Secrets Manager 通知処理をAWSに任せられる Worker
  16. © 2020, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. マネージドサービスの活⽤によるさらなる効率化 建屋・施設、設備、電源、 ラッキング、配線、等 ネットワークインフラ OS設定、パッチ管理 バックアップ 容量・スケーリング管理 ⾼可⽤性構成 ミドルウェア導⼊・管理 OS導⼊ アプリケーション実装 オンプレ環境 物理サーバ管理(仮想化) コンピュート系 (EC2等) OS設定、パッチ管理 バックアップ 容量・スケーリング管理 ⾼可⽤性構成 ミドルウェア導⼊・管理 アプリケーション実装 マネージドサービス アプリケーション実装 AWSクラウド 建屋・施設、設備、電源、 ラッキング、配線、等 ネットワークインフラ OS導⼊ 物理サーバ管理(仮想化) 建屋・施設、設備、電源、 ラッキング、配線、等 ネットワークインフラ OS設定、パッチ管理 バックアップ 容量・スケーリング管理 ⾼可⽤性構成 ミドルウェア導⼊・管理 OS導⼊ 物理サーバ管理(仮想化) インフラ アプリ マネージドサービスはAWSの統制範囲が広がり、 利⽤者はより本質的なビジネス要件に注⼒できる。
  17. © 2020, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. マネージドサービスを活⽤した参考アーキテクチャ AWS Cloud Amazon DynamoDB (送⾦受付管理) VPC Endpoint Amazon SQS (締め処理並列化) Amazon CloudWatch Events (バッチスケジュール管理) AWS WAF Amazon API Gateway 利⽤者 (アプリ) ⾦融機関 NAT Gateway Amazon Aurora (⼝座情報) Amazon SNS (各種通知) (総合振込依頼) AWS Lambda (送⾦受付) (締め処理) (総合振込状況照会) VPC for Production 総合振込依頼部 締め処理部 受付部 AWS Secrets Manager
  18. © 2020, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. マネージドサービスを活⽤した参考アーキテクチャが 解決できること 伝統的なアーキテクチャ 参考アーキテクチャで改善できること OSをはじめとしたマシンの維 持管理が必要 基盤はAWSの統制範囲でカバーされ、お客様はアプ リケーションの開発と管理に注⼒可能。 バッチサーバがSPOF AWS Lambda + Amazon CloudWatch Eventsを ⽤いることでマネージドかつマルチAZで運⽤でき可 ⽤性を担保できる。 バッチサーバが起動し続ける AWS Lambdaで作ることで必要な時のみ動作し、 コスト削減に貢献。 特に書き込み処理のスケーラ ビリティの担保が難しい AWS Lambda + Amazon SQS + Amazon DynamoDBを⽤いることで⾼いスケーラビリティ が担保できる。
  19. © 2020, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. (再掲) アーキテクチャ図
  20. © 2020, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. まとめ (今⽇お話しすること、の再掲) • AWSのサーバレスアーキテクチャを活⽤して、⾼い可⽤性・ セキュア・そしてスケーラブルなシステムを開発することが⽐ 較的容易にできます。 • サーバレスのシステムを開発する際、主にAWS Lambdaや Amazon DynamoDBを活⽤することができます。 • ⾮同期で問題ない並列処理を実現する際に、キューは活⽤しや すい解決⼿段の⼀つです。
  21. © 2020, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. 参考⽂献 • イチから理解する サーバーレスアプリケーション開発 サーバーレス開発環境とテスト https://pages.awscloud.com/rs/112-TZM- 766/images/20200827_serverless_session2.pdf • AWS Black Belt Online Seminar 実践的サーバーレスセキュリティ プラクティス https://d1.awsstatic.com/webinars/jp/pdf/services/20190813_AWS- BlackBelt_ServerlessSecurityPractice.pdf • Software Design 2019/12〜2020/03号 短期連載 「Webサービスを裏で⽀える!! バッチ処理設計の勘所」 • 備考 [AWS Black Belt 〇〇][検索] していただくと、AWSのSAがご案内している解説資料が⾒つけやすいです︕
  22. © 2020, Amazon Web Services, Inc. or its Affiliates. All

    rights reserved. ありがとうございました