FinTechスタートアップAnyPayを支える開発 @ Venture Engineer Meetup #01 -Server Side Night-

FinTechスタートアップAnyPayを支える開発 @ Venture Engineer Meetup #01 -Server Side Night-

FinTechスタートアップAnyPayを支える開発 @ Venture Engineer Meetup #01 -Server Side Night-

29d8c9f22e421a3044572dd66812c22d?s=128

Tomohiro Nakamura

August 03, 2017
Tweet

Transcript

  1. FinTechスタートアップ AnyPayを⽀える開発 AnyPay Inc. Tomohiro Nakamura

  2. ⾃⼰紹介 AnyPay株式会社 CTO Tomohiro Nakamura ( @HAIL ) 2010年 早稲田大学大学院情報理工学専攻

    2010年 Goldman Sachs 2012年 Electronic Arts (ex. Playfish) 2014年 Wekids Inc. 創業 2016年 AnyPay株式会社 CTOとして入社 好き: GCP, Java(Kotlin), golang, TypeScript, IntelliJ なう: AWS, Ruby On Rails, Kotlin, Swift, golang paymo招待コード: PNKYFNP
  3. AnyPay株式会社とは スマートフォン決済を提供する会社

  4. 実現したい世界 友だち間のお⾦のやり取り そして、お店へのお⽀払いを キャッシュレスに

  5. AnyPay/paymoの幅広い守備範囲 WEB販売 リアル店舗 個⼈間 εϚϗͰ lׂΓצz ॊೈʹ ৭ʑͳखஈͰ खܰʹ ௿ίετ

  6. ͓ۚͷೖޱ ͓ۚͷग़ޱ Ϣʔβʔؒ ΫϨδοτ ΧʔυͰܾࡁ ۜߦޱ࠲΁ Ҿ͖ग़͠ ΞΧ΢ϯτ࢒ߴʹΑΔ Ϣʔβʔؒͷࢧ෷͍ ׂΓצ

    paymo/AnyPay֎Ͱ ͓ۚΛ࢖͍͍ͨ ࢒ߴͰAnyPayͷ ग़ళऀ͔Βߪೖ ෺ൢɺαʔϏε… ԿͰ΋ങ͑Δ͓ళʂ ΫϨδοτΧʔυͰ ௚઀ߪೖ΋Մೳ װࣄ ࢀՃऀ ビジネスモデル
  7. EC2 RDS(Aurora) Lambda CloudWatch S3/CloudFront ElastiCache CloudFormation OpsWorks SNS まずざっくり技術スタックまとめ

    Infra Server Web iOS Android BigQuery App Engine Rails 5.0 (unicorn) Paranoia Draper Delayed Job Slavery Vue.js 2 webpack 3 Swift 3 RxSwift 3 Kotlin 1.1 RxJava 2 Dagger 2 Retrofit 2 OkHttp 3 Picasso 2
  8. 開発チーム構成(積極採⽤中!) Infra Server Web iOS Android 2ͭҎ্ͷ৔ॴʹؔΘ͍ͬͯΔΤϯδχΞ΋ଟ͍

  9. 開発で⼤事にしていること • 社員全員GitHubを使う(マーケ、事業企画、CSなど) • みんながみんなサービスつくる会社から来ていない。だ からこそ形から⼊るのが⼤事 • ⼤まかな仕様→GitHub Wiki •

    Due, 担当者, デザインもここ • CS→CS専⽤レポジトリ • 本番データ満載のissueが並ぶ正社員専⽤の場所
  10. こういうこと

  11. こういうこと

  12. マーケの⼈もPR出すぞ • LPぐらい、SourceTreeとか使えばなんとかなるなる!

  13. 開発で⼤事にしていること • API仕様をapiary準拠のBlueprintで管理、サーバエンジニアだけでは なく、アプリエンジニアやディレクターも(!)書く ‒ PMもRESTfulを 理解する! • 全職種が⼀⼈以上Approveしたら開発 ⾮エンジニアによるPR例

  14. API仕様のブランチ運⽤ • master: 本番サーバでの動作が保証されているAPI仕様 • develop: 開発サーバでの動作が保証されているAPI仕様 • feature/*, issue/*:

    API仕様の策定・修正 〜 開発サーバでの動作確認 までやってdevelopに向けてマージされるAPI仕様
  15. 開発で⼤事にしていること • SQLぐらい皆書ける • ビジネス側も全員書く • 環境はエンジニアが⽤意したRedash • ⼀回社内勉強会する •

    SQLをレビューし合うSlackチャンネルも⽤意 • 管理画⾯にちょっと機能が⽋けてたって、CSの⼈も SQL書ける! • こういう努⼒が「開発を皆でしているチーム」をつくる
  16. QAをなるべく容易にする • リリース前に⼀通り確認をするのを前提に developブランチまでのマージは楽に • 各ブランチにpushがあったらHeroku Review Appsが上がる • 簡単なビューの修正はスクショGIF動画もあり

  17. 各PMにスタンプをつくる • リリースの最終GOはスタンプ • 最近神も⼊った

  18. 使っているサービスたち

  19. サーバエラー統計: Raygun • サーバのスタックトレースを記録し統計情報として出して くれる。リファクタリング案出してアサイン⼤会と、 Raygun⼤掃除アサイン⼤会を隔週でやってる

  20. 外部死活監視: UptimeRobot • 定期的に指定URLにリクエストを投げる。4xx, 5xxが返っ てきたらOpsGenieに知らせる

  21. 外部死活監視: OpsGenie 異常を知らせるUpstreamからの連絡を受け、メールをくれた り電話をくれたりする。⼈間、最後は電話で起きることをよく 知っている。当番ローテとかも組める。

  22. メール: SendGrid ⾔わずと知れたメールサービス。やや⾼級品だけど、 • API連携してセグメントを絞ってメールしたり、 • 変数⼊りのテンプレをSendGrid側に登録しておいて、⼩さ いJSONをPOSTするだけでメールできる

  23. ちょっとだけ セキュリティの話

  24. なぜ「ちょっとだけ」 • セキュリティの基本は、リスクをできる限り取らないこと。 よほど技術的に⾰新的なことをやらない限りは、セキュリテ ィも⾰新的になる必要は本来ない。 • Public IPや空いてるポートは最⼩限にする • (ある程度は)枯れてる技術を使う

    • 脆弱性情報を追う。Struts2⼤事件は記憶に新しいが、Nginx, Bash, Railsみたいな著名なものでも稀に事件が起こる • 初回リリースや巨⼤アプデでは、外部セキュリティ監査(要はクラッ キングしてもらう)を受ける • Webサービスも、Netflixが使ってますよみたいな、巨⼈が使⽤して いるものを使うようにする
  25. 悪⼈退治の話 • 本⼈間取引によるクレジットカードの現⾦化 • ポイントを移動させて引き出し など、やっぱり悪い⼈はいる。 これまではルールベースでラベルをつけていたが、 これからは教師あり学習も合わせて倒していく

  26. これからサーバサイドKotlinもやろう と思っています。JOIN US!