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

BASE BANKチームの技術選定と歴史 / how to decide technology selection for startup

BASE BANKチームの技術選定と歴史 / how to decide technology selection for startup

2022/06/28に行われた次のイベントで利用した登壇資料です。

新規事業プロダクト開発時の技術選定どうやった?
-カケハシ×LINE×BASEの開発者が振り返る技術選定プロセスと内省-
https://techplay.jp/event/860202

スライド中に紹介しているスライドは次のリンクです。

知見のない技術スタックをプロダクション導入するエンジニアの導入戦略
https://speakerdeck.com/hgsgtk/a-strategy-to-choice-no-knowledge-technology

Yoichiro Shimizu

June 28, 2022
Tweet

More Decks by Yoichiro Shimizu

Other Decks in Programming

Transcript

  1. © 2012-2022 BASE, Inc. 1
    #TechKKHS
    BASE BANKチームの
    技術選定と歴史
    新規事業プロダクト開発時の技術選定どうやった?
    -カケハシ×LINE×BASEの開発者が振り返る技術選定プロセスと内省-
    BASE株式会社
    柳川 慶太 /清水 陽一郎

    View Slide

  2. © 2012-2022 BASE, Inc. 2
    #TechKKHS
    自己紹介
    所属
    BASE 株式会社 BASE BANKチーム PdM 事業責任者
    経歴
    SIer→広告配信システム→BASEエンジニア→BASE BANK PdM
    キーワード
    新規事業 プロダクト開発 組織開発 とにかくやってみる
    趣味
    アクアリウム ファッション 音楽
    SNS
    Twitter : @gimupop
    柳川慶太 (やながわ けいた)

    View Slide

  3. © 2012-2022 BASE, Inc. 3
    #TechKKHS
    自己紹介
    所属
    BASE 株式会社 BASE BANKチーム Tech Lead
    Go、New Relicや自動化など。
    趣味
    ブログ: https://budougumi0617.github.io/
    SNS
    Twitter : @budougumi0617 
    Github : https://github.com/budougumi0617
    7/22 「詳解Go言語Webアプリケーション開発」出版予定
    清水 陽一郎 (しみず よういちろう)

    View Slide

  4. © 2012-2022 BASE, Inc. 4
    1
    2
    3
    #TechKKHS
    何を考えて技術選定したか
    3年間チームで開発しつづけて思ったこと
    新規事業を開発しつづけるチームに必要なこと
    今日伝えたいこと

    View Slide

  5. © 2012-2022 BASE, Inc. 5
    技術選定をした時にいた人の話

    View Slide

  6. © 2012-2022 BASE, Inc. 6
    #TechKKHS
    今日は導入時のおきもちの話と
    リリース後チーム拡大期の話をします

    View Slide

  7. © 2012-2022 BASE, Inc. 7
    #TechKKHS
    なので初期フェーズ検討の詳細は
    こちらの資料をチェックしてください!
    Speaker Deck 知見のない技術スタックをプロダクション導入するエンジニアの導入戦略

    View Slide

  8. © 2012-2022 BASE, Inc. 8
    #TechKKHS
    2018年夏 渋谷

    View Slide

  9. © 2012-2022 BASE, Inc. 9
    #TechKKHS
    新しく金融系のプロダクト作りたい!
    ショップさんのキャッシュフローをなめらかにしたい!
    作り方は任せます!

    View Slide

  10. © 2012-2022 BASE, Inc. 10
    #TechKKHS
    メンバーは
    初期専任メンバーは
    ● PO1名
    ● エンジニア2名(@hgsgtk @yanagawa)

    View Slide

  11. © 2012-2022 BASE, Inc. 11
    #TechKKHS
    リリース目標は
    まぁ年内行きたいよね

    View Slide

  12. © 2012-2022 BASE, Inc. 12
    #TechKKHS
    ドメインも複雑だし、納期も厳し目だし、リソースも限られている
    のりと勢いで乗り越えるしかないな
    楽しもう

    View Slide

  13. © 2012-2022 BASE, Inc. 13
    #TechKKHS
    僕が考えていたこと
    新規事業に必要な技術選定ってなんだろう?
    要件も決まりきっていないし、リリースしても、すぐにそのまま使われるかわからない。
    とにかく不確実性が高いプロジェクト。
    1. とにかく早く出すこと
    2. 素早く改善サイクルを回し続けられること
    ● 自分たちでコントロールできる範囲が広いほうが良さそう
    ● 既存システムからは切り離したほうが良さそう
    ● 最低限APIとして切り出したい
    ● あえて既存と違う言語、アーキテクチャ、インフラでやるが良さそう

    View Slide

  14. © 2012-2022 BASE, Inc. 14
    #TechKKHS
    僕が考えていたこと
    ここまでは考えたが、個人的には言語とか細かいアーキテクチャはそこまでこだわりはない
    それより早く要件ヒアリングと詳細設計がしたい!逸る気持ちが抑えられない!
    @hgsgtkに基盤周りは任せて要件定義とアプリケーション設計に集中する形に役割分担
    そのパートは任せるので1番いいやつを頼む!
    これがうまくハマってスピードが出た

    View Slide

  15. © 2012-2022 BASE, Inc. 15
    #TechKKHS
    そんなこんなを乗り越え 生まれた
    2018年12月 六本木

    View Slide

  16. © 2012-2022 BASE, Inc. 16
    #TechKKHS
    こういう感じになった
    「YELL BANK」のシステムアーキテクチャ図
    ● 「BASE」加盟店にサービス提供
    ○ BASE BANKで開発するサービス・機能は
    「BASE」のユーザーに提供しています
    ● 独立したシステム構成
    ○ 「YELL BANK」サービスはBASEのシステムと
    疎結合とし、AWS環境も別アカウントで
    運用しています
    ネットショップ作成
    サービス 「BASE」
    分析データ
    データ分析基盤
    認証・認可、ビジネス
    ロジックなどシステム処理
    ショップ情報提供 サービス提供 ショップのデータ提供
    サーバー構成はECS Fargate
    バッチ処理
    (ECS Scheduled Task)
    APIサーバ群
    BASE
    BANK

    View Slide

  17. © 2012-2022 BASE, Inc. 17
    #TechKKHS
    まとめると
    ● 既存システムと切り離したAPI
    ● インフラレイヤーも思い切って切り離す
    ● とにかく自分たちで素早く決めて実行できる状態を作る
    ● 新規事業においては実は技術選定も大事だけどチーム内の役割分担も大事
    ● 特に最初の立ち上がりが大切な新規事業にとって、乗りと勢いは大事
    ● 新規事業は現実人依存
    ● 迷ったら気分が乗る方
    ● 迷ったらオーナーシップがもてる方をやる
    ● 考えて選定した技術には支持者が絶対付く

    View Slide

  18. © 2012-2022 BASE, Inc. 18
    #TechKKHS
    まとめると
    私個人はこのあと、新規プロダクト開発を行う組織に興味がでたので、組織設計
    から行うPdMにジョブチェンジしました。
    どうしたらアジリティを落とさずにプロダクト成長させ続けられるかという課題
    に取り組みながら、新規プロダクト開発とグロースをしています。
    どうしたらプロダクト開発組織はより強くなれるのか、再現性を持って再生産で
    きるかということを日々課題に向き合いながらやっていっています。

    View Slide

  19. © 2012-2022 BASE, Inc. 19
    技術選定後に入った人の話
    4年後の今の話

    View Slide

  20. © 2012-2022 BASE, Inc. 20
    #TechKKHS
    プロダクトの現在
    ● グロースしつづけている

    View Slide

  21. © 2012-2022 BASE, Inc. 21
    #TechKKHS
    チームの現在
    ● エンジニア 8名
    ○ チーム拡大中のため採用も強化中
    ● チームが開発しているプロダクト
    ○ YELL BANKの拡張
    ○ 本人確認機能(eKYC)
    ○ BASEカード(売上残高を使ったカード決済機能)
    ○ 振込申請(売上残高の銀行振込)

    View Slide

  22. © 2012-2022 BASE, Inc. 22
    何が良かったか

    View Slide

  23. © 2012-2022 BASE, Inc. 23
    #TechKKHS
    何が良かったか
    ● アジャイルであること
    ● フルスタックであること
    ● フルサイクルであること
    ● プロダクトに集中できる技術

    View Slide

  24. © 2012-2022 BASE, Inc. 24
    #TechKKHS
    アジャイルであること
    ● 仮説検証を高速でフィードバックすること
    ○ 当然のようにXPやアジャイルのテクニックにたどり着く
    ○ アーキテクチャ・コードとしての正解
    ○ プロダクトとしての正解

    View Slide

  25. © 2012-2022 BASE, Inc. 25
    #TechKKHS
    フルスタックであること
    ● 仮説検証を繰り返すならばチーム内で作業が完結するほうがよい
    ● 選択肢が絞られてはいけない
    ○ ex: AWSリソースの変更を含めたリファクタリング
    ● 反面、求められるスキルは多い
    ○ Vue/CSS/PHP/Go/Python/Terraform/AWS/Docker
    CircleCI/GitHub Actions etc

    View Slide

  26. © 2012-2022 BASE, Inc. 26
    #TechKKHS
    フルサイクルであること
    ● Full Cycle Developers at Netflix — Operate What You Build
    ● 運用しつづけることで得られる気付き
    ● フィードバックループを高速で回すには自分たちで加速させる必要がある
    要件定義
    設計
    企画
    開発
    テスト
    問い合わせ
    対応
    デプロイ
    運用
    Software
    Developers

    View Slide

  27. © 2012-2022 BASE, Inc. 27
    #TechKKHS
    プロダクトに集中できる技術
    ● その課題・複雑さはプロダクトに依存するものか?
    ○ ユーザーの悩み事を解決している?技術的な悩み事を解決している?
    ○ トレードオフはある
    ● プロダクト志向だからこそ技術にとらわれない
    ● 技術志向だからこそプロダクトのためにどんな技術も実践できる

    View Slide

  28. © 2012-2022 BASE, Inc. 28
    プロダクトに集中できる
    技術選定

    View Slide

  29. © 2012-2022 BASE, Inc. 29
    #TechKKHS
    独立したアーキテクチャ
    ネットショップ作成サービ
    ス 「BASE」
    認証・認可、ビジネス
    ロジックなどシステム処理
    ショップ情報提供 サービス提供
    APIサーバ群
    BASE
    BANK
    ● デプロイ/ロールバックを任意に実施できる
    ● 構成やシーケンスの変更も容易
    ○ Lambdaに切り出して非同期化

    View Slide

  30. © 2012-2022 BASE, Inc. 30
    #TechKKHS
    Go
    ● 「プロダクト」以外の問題が少ない
    ○ 開発環境構築が容易
    ■ 最新のGoがあればパッケージ管理、テストが実行可能
    ○ バージョンアップ
    ■ Go1.Xの間は後方互換性が保証されている

    View Slide

  31. © 2012-2022 BASE, Inc. 31
    #TechKKHS
    Go
    ● 「プロダクト」以外の問題が少ない
    ○ コードフォーマットが固定
    ■ 設定やスタイルの良し悪しの議論が発生しない
    ○ 静的解析が充実している
    ■ 自動化(CIによる指摘)がしやすい
    ○ 学習コストが低い
    ■ 言語仕様がミニマム

    View Slide

  32. © 2012-2022 BASE, Inc. 32
    #TechKKHS
    Python
    ● 機械学習エンジニアがAPIサーバをメンテできる
    ● 容易に機械学習系のライブラリを利用できる

    View Slide

  33. © 2012-2022 BASE, Inc. 33
    #TechKKHS
    Amazon ECS on Fargate
    ● コンテナ
    ○ Goと合わせるとAnsibleやChefなどは不要
    ● アプリエンジニアでもメンテが容易
    ○ キャッチアップ可能な量の設定群
    ○ 現状のメンバー数ではKubernetesはオーバースペック

    View Slide

  34. © 2012-2022 BASE, Inc. 34
    #TechKKHS
    Terraform
    ● 専門家でないからこそコード化する
    ○ AWSリソースの可視化
    ○ Unkown Unkownの軽減
    ■ 今存在するリソースすべてをAWS Consoleから把握するのは不可能

    View Slide

  35. © 2012-2022 BASE, Inc. 35
    #TechKKHS
    基盤化
    ● 共通ライブラリ
    ○ DB操作、HTTPサーバとしての基本機能、運用で必要な仕組み
    ■ 全社的なSaaS移行やAPM導入にも柔軟に対応できた
    ● CI/CDの整備
    ○ デプロイの容易さ

    View Slide

  36. © 2012-2022 BASE, Inc. 36
    次の一手

    View Slide

  37. © 2012-2022 BASE, Inc. 37
    #TechKKHS
    未来
    ● より定量的に仮説検証を繰り返したい
    ● データ駆動開発の本格化
    ○ PMMのJOIN
    ■ Product Marketing Manager
    ○ Looker導入
    ○ GA/GTM本格化

    View Slide

  38. © 2012-2022 BASE, Inc. 38
    まとめ

    View Slide

  39. © 2012-2022 BASE, Inc. 39
    #TechKKHS
    柳川まとめ
    自分たちで決めて決めて決め続ける
    4年間を振り返ると、新規事業チームが推進力を持って
    改善しながら進むためのキーワードはこれだと実感しています
    歴史のスタートは振り返ってみると技術選定だったのかもしれません
    技術選定でオーナーシップを持てたことが今まで事業が続いてきた秘訣のように思います
    新規事業はリリースして終わりではなくてグロースが待っています
    グロースする前に死ぬこともあるし、グロースできないと死にます
    とにかく出してチームで改善を回し続ける
    そのためには何ができるか
    技術選定が偉大なチームの第一歩になることを願って
    神になってクリエイションしましょう

    View Slide

  40. © 2012-2022 BASE, Inc. 40
    #TechKKHS
    清水まとめ - 新規事業開発と技術選定
    ● チームがプロダクトに向き合う時間を最大化できるか
    ● チームが学習できるか
    ○ 裁量をもって決断できる
    ○ 試行と反省の回数と速度を最大化する
    ○ 小さく失敗できる
    ● 一緒にフルサイクル開発に挑戦するメンバーを募集中です!

    View Slide