Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
FinTechスタートアップAnyPayを支える開発 @ Venture Engineer M...
Search
Tomohiro Nakamura
August 03, 2017
Technology
2
1.1k
FinTechスタートアップAnyPayを支える開発 @ Venture Engineer Meetup #01 -Server Side Night-
FinTechスタートアップAnyPayを支える開発 @ Venture Engineer Meetup #01 -Server Side Night-
Tomohiro Nakamura
August 03, 2017
Tweet
Share
More Decks by Tomohiro Nakamura
See All by Tomohiro Nakamura
ICOコンサルティング事業から得たトークンと全体アーキテクチャ設計方針の知見 @ blockchain.tokyo #2
tomohiron
7
25k
Kotlin + Java EE + MongoDBでサーバ組んで本番で動かしてみた
tomohiron
2
2.1k
Other Decks in Technology
See All in Technology
AI Agentと MCP Serverで実現する iOSアプリの 自動テスト作成の効率化
spiderplus_cb
0
480
動画データのポテンシャルを引き出す! Databricks と AI活用への奮闘記(現在進行形)
databricksjapan
0
140
SwiftUIのGeometryReaderとScrollViewを基礎から応用まで学び直す:設計と活用事例
fumiyasac0921
0
140
o11yで育てる、強い内製開発組織
_awache
3
110
多野優介
tanoyusuke
1
410
Where will it converge?
ibknadedeji
0
160
業務自動化プラットフォーム Google Agentspace に入門してみる #devio2025
maroon1st
0
190
生成AIを活用したZennの取り組み事例
ryosukeigarashi
0
200
ユニットテストに対する考え方の変遷 / Everyone should watch his live coding
mdstoy
0
120
実装で解き明かす並行処理の歴史
zozotech
PRO
1
310
バイブコーディングと継続的デプロイメント
nwiizo
2
410
PLaMoの事後学習を支える技術 / PFN LLMセミナー
pfn
PRO
9
3.8k
Featured
See All Featured
Statistics for Hackers
jakevdp
799
220k
Embracing the Ebb and Flow
colly
88
4.8k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
657
61k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
114
20k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
23
1.5k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
Art, The Web, and Tiny UX
lynnandtonic
303
21k
Building Applications with DynamoDB
mza
96
6.6k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
30
2.9k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.6k
The Invisible Side of Design
smashingmag
301
51k
Transcript
FinTechスタートアップ AnyPayを⽀える開発 AnyPay Inc. Tomohiro Nakamura
⾃⼰紹介 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
AnyPay株式会社とは スマートフォン決済を提供する会社
実現したい世界 友だち間のお⾦のやり取り そして、お店へのお⽀払いを キャッシュレスに
AnyPay/paymoの幅広い守備範囲 WEB販売 リアル店舗 個⼈間 εϚϗͰ lׂΓצz ॊೈʹ ৭ʑͳखஈͰ खܰʹ ίετ
͓ۚͷೖޱ ͓ۚͷग़ޱ Ϣʔβʔؒ ΫϨδοτ ΧʔυͰܾࡁ ۜߦޱ࠲ Ҿ͖ग़͠ ΞΧϯτߴʹΑΔ Ϣʔβʔؒͷࢧ͍ ׂΓצ
paymo/AnyPay֎Ͱ ͓ۚΛ͍͍ͨ ߴͰAnyPayͷ ग़ళऀ͔Βߪೖ ൢɺαʔϏε… ԿͰങ͑Δ͓ళʂ ΫϨδοτΧʔυͰ ߪೖՄೳ װࣄ ࢀՃऀ ビジネスモデル
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
開発チーム構成(積極採⽤中!) Infra Server Web iOS Android 2ͭҎ্ͷॴʹؔΘ͍ͬͯΔΤϯδχΞଟ͍
開発で⼤事にしていること • 社員全員GitHubを使う(マーケ、事業企画、CSなど) • みんながみんなサービスつくる会社から来ていない。だ からこそ形から⼊るのが⼤事 • ⼤まかな仕様→GitHub Wiki •
Due, 担当者, デザインもここ • CS→CS専⽤レポジトリ • 本番データ満載のissueが並ぶ正社員専⽤の場所
こういうこと
こういうこと
マーケの⼈もPR出すぞ • LPぐらい、SourceTreeとか使えばなんとかなるなる!
開発で⼤事にしていること • API仕様をapiary準拠のBlueprintで管理、サーバエンジニアだけでは なく、アプリエンジニアやディレクターも(!)書く ‒ PMもRESTfulを 理解する! • 全職種が⼀⼈以上Approveしたら開発 ⾮エンジニアによるPR例
API仕様のブランチ運⽤ • master: 本番サーバでの動作が保証されているAPI仕様 • develop: 開発サーバでの動作が保証されているAPI仕様 • feature/*, issue/*:
API仕様の策定・修正 〜 開発サーバでの動作確認 までやってdevelopに向けてマージされるAPI仕様
開発で⼤事にしていること • SQLぐらい皆書ける • ビジネス側も全員書く • 環境はエンジニアが⽤意したRedash • ⼀回社内勉強会する •
SQLをレビューし合うSlackチャンネルも⽤意 • 管理画⾯にちょっと機能が⽋けてたって、CSの⼈も SQL書ける! • こういう努⼒が「開発を皆でしているチーム」をつくる
QAをなるべく容易にする • リリース前に⼀通り確認をするのを前提に developブランチまでのマージは楽に • 各ブランチにpushがあったらHeroku Review Appsが上がる • 簡単なビューの修正はスクショGIF動画もあり
各PMにスタンプをつくる • リリースの最終GOはスタンプ • 最近神も⼊った
使っているサービスたち
サーバエラー統計: Raygun • サーバのスタックトレースを記録し統計情報として出して くれる。リファクタリング案出してアサイン⼤会と、 Raygun⼤掃除アサイン⼤会を隔週でやってる
外部死活監視: UptimeRobot • 定期的に指定URLにリクエストを投げる。4xx, 5xxが返っ てきたらOpsGenieに知らせる
外部死活監視: OpsGenie 異常を知らせるUpstreamからの連絡を受け、メールをくれた り電話をくれたりする。⼈間、最後は電話で起きることをよく 知っている。当番ローテとかも組める。
メール: SendGrid ⾔わずと知れたメールサービス。やや⾼級品だけど、 • API連携してセグメントを絞ってメールしたり、 • 変数⼊りのテンプレをSendGrid側に登録しておいて、⼩さ いJSONをPOSTするだけでメールできる
ちょっとだけ セキュリティの話
なぜ「ちょっとだけ」 • セキュリティの基本は、リスクをできる限り取らないこと。 よほど技術的に⾰新的なことをやらない限りは、セキュリテ ィも⾰新的になる必要は本来ない。 • Public IPや空いてるポートは最⼩限にする • (ある程度は)枯れてる技術を使う
• 脆弱性情報を追う。Struts2⼤事件は記憶に新しいが、Nginx, Bash, Railsみたいな著名なものでも稀に事件が起こる • 初回リリースや巨⼤アプデでは、外部セキュリティ監査(要はクラッ キングしてもらう)を受ける • Webサービスも、Netflixが使ってますよみたいな、巨⼈が使⽤して いるものを使うようにする
悪⼈退治の話 • 本⼈間取引によるクレジットカードの現⾦化 • ポイントを移動させて引き出し など、やっぱり悪い⼈はいる。 これまではルールベースでラベルをつけていたが、 これからは教師あり学習も合わせて倒していく
これからサーバサイドKotlinもやろう と思っています。JOIN US!