$30 off During Our Annual Pro Sale. View Details »

スタートアップにおける Platform Engineering の 片鱗 / A glimp...

スタートアップにおける Platform Engineering の 片鱗 / A glimpse of platform engineering in startups

登壇者名:大高浩太郎
登壇したイベントタイトル:Platform Engineering Kaigi 2024
登壇したイベントのURL:https://www.cnia.io/pek2024/
登壇したイベントの登壇者URL:https://www.cnia.io/pek2024/sessions/e8640973-187a-47ca-98a6-5bfc7cd4e561/

More Decks by 株式会社ビットキー / Bitkey Inc.

Other Decks in Technology

Transcript

  1. Copyright © Bitkey Inc. All rights reserved. スタートアップにおける Platform Engineering

    の 片鱗 株式会社ビットキー 大高浩太郎 / 津島雅俊 2024.07.09
  2. Copyright © Bitkey Inc. All rights reserved. 大高 浩太郎 2020.04

    2022.11 now 新卒社会人として Web業界にてエンジニア人生開幕 AWS Lambda など Serverless による開発を経験 株式会社ビットキーへジョイン BKP ( bitkey platform ) & HubCoreModule チーム Google Cloud を活用した デジタルキーを管理するプラットフォーム開発 認証認可なども実装 技術本部 / プラットフォーム開発部 Cross Service Backend チーム 認証・認可基盤を Go で実装したり GitHub Actions でピタゴラスイッチ作ったり The Go gopher was designed by Renée French. The icon was designed by @avocadoneko. Kotaro Otaka / @otakakot
  3. Copyright © Bitkey Inc. All rights reserved. Outline 1. チームトポロジーで考えるビットキー開発組織

    2. 事例①:GitHub Actions 3. 事例②:Cloud Run 4. 事例③:社内標準仕様 5. まとめと今後の展望
  4. Copyright © Bitkey Inc. All rights reserved. ビットキー組織 CEO CRO

    COO CFO CHRO workhub 事業本部 homehub 事業本部 製品開発本部
 技術本部
 製品品質本部
 プロダクトバリュー デザイン部 homehub開発部 workhub開発部 プラットフォーム 開発部 ファームウェア 開発部 ハードウェア 開発部 製品検査部 デバイス品質保証部 研究開発部 CAO エンジニアリング 
 マネジメント室 

  5. Copyright © Bitkey Inc. All rights reserved. ビットキー組織 CEO CRO

    COO CFO CHRO workhub 事業本部 homehub 事業本部 製品開発本部
 技術本部
 製品品質本部
 プロダクトバリュー デザイン部 homehub開発部 workhub開発部 プラットフォーム 開発部 ファームウェア 開発部 ハードウェア 開発部 製品検査部 デバイス品質保証部 研究開発部 CAO エンジニアリング 
 マネジメント室 
 コーポレート ビジネス 開発
  6. Copyright © Bitkey Inc. All rights reserved. チームトポロジー ストリームアラインドチームが自律的に すばやく価値を届ける

    ↕ homehub や workhub が自律的 にすばやく価値を届ける https://pub.jmam.co.jp/book/b593881.html
  7. Copyright © Bitkey Inc. All rights reserved. SREチーム • 2名体制

    • ストリームアラインドチームの SLI / SLO の管理 • アーキテクチャ設計支援・管理 (terraform)
  8. Copyright © Bitkey Inc. All rights reserved. 課題 • GitHub

    Actions をセキュアに利用するためのプラクティ スの実施状況がリポジトリによってバラツキ • OIDC によるパブリッククラウドの認証や GitHub Apps を利用したAPIトークンの発行はやり方を知らなければ改善 の動機も生まれない
  9. Copyright © Bitkey Inc. All rights reserved. 解決策 • GitHub

    Actions の Composite Actions や Reusable workflow をまとめるリポジトリを作成 • 組織内で再利用可能に • 事前に必要な設定はあらかじめ済ませておくことで、コード をコピペするだけで利用可能
  10. Copyright © Bitkey Inc. All rights reserved. Composite Actions •

    action.yaml / action.yml で定義 • uses によって 利用
  11. Copyright © Bitkey Inc. All rights reserved. Composite Actions /

    Reusable workflow • Google Cloud の OIDC による認証 • 機密情報のハードコードを防ぐ静的解析 • Slack への通知 • Jira チケットとの自動紐付け • GitHub Apps を利用したAPIトークンの発行 ◦ のちに公式から Actions が提供
  12. Copyright © Bitkey Inc. All rights reserved. 結果 • 中央集権的なリポジトリを用意

    • 共通の課題を解決するコードを集約 • 開発者は仕組みを理解していなくても、安全に便利に GitHub Actionsを利用可能
  13. Copyright © Bitkey Inc. All rights reserved. 片鱗ポイント • Composite

    Action や Reusable workflowごとに READMEを充実 • InnerSource を意識して OSS のように README を 手厚く用意 • カタログとしての機能は持たせておらず検索によって発見 されるので、認知の向上に課題 ※ InnerSource ... オープンソースの原則を社内のソフトウェア開発に適用すること
  14. Copyright © Bitkey Inc. All rights reserved. 遊撃隊チーム • 2名体制

    • workhub チームへの支援 ◦ 共通性が高いもの ◦ 深いシステムへの対応 • 広守備範囲 • なんでもやる
  15. Copyright © Bitkey Inc. All rights reserved. Cloud Run •

    Google Cloud が提供するコンテナを実行できる マネージドなサービス ◦ 任意の言語、ライブラリ、バイナリ ◦ 高速な自動スケーリング ◦ サイドカーパターン
  16. Copyright © Bitkey Inc. All rights reserved. 課題 • 通常のWebアプリケーションとは別で画像生成サーバーな

    どドメインの異なるサービスが増えてきた • ビルドフローのコード内に追加するような形だと開発者が 追加していきづらいしわかりづらいので設定可能にしたい • image 差し替えを terraform ではなくアプリケーション 側のデプロイフローに載せたい
  17. Copyright © Bitkey Inc. All rights reserved. 解決策 • Cloud

    Run サービスに必要な設定項目用に独自の yaml ( cloud_run.yaml )を規定 • それを処理するスクリプトを実装 • 最初は cloud_run.yaml とスクリプトだけでやっていたが、 image のビルド最適化のために image に関する設定は docker bake に分離 • アプリケーションと独立したインフラとしての設定値は terraform で管理
  18. Copyright © Bitkey Inc. All rights reserved. cloud_run.yaml IDE にてJSON

    Schema への補完や説明が記載される デプロイするための環境を指定 デプロイ対象のサービスリスト デプロイ対象のイメージ名 引数指定 デプロイ時の順序
  19. Copyright © Bitkey Inc. All rights reserved. 実行スクリプト ref: https://github.com/google/zx

    お手軽に JS を shell で実行するおまじない 設定を config として読み込む デプロイしたいサービスを絞りたければ指定
  20. Copyright © Bitkey Inc. All rights reserved. 実行スクリプト 複数のコマンドを用意 オーダー順に並び替え

    デプロイ関数を実行 デプロイ関数 gcloud コマンドによるデプロイ
  21. Copyright © Bitkey Inc. All rights reserved. 結果 • 最小限の設定だけ気にすればよいので認知的負荷は減少

    • アプリケーション開発者がCloud Runサービスを追加する 機会はさほど多くはないので役立った場面は少ない • docker bakeについてはさほど難しいものではないが、 追加で覚えることが増えて認知的負荷は上昇しているかも
  22. Copyright © Bitkey Inc. All rights reserved. 片鱗ポイント • 開発者が

    Cloud Run サービスを簡単に追加できるよう に仕組み化 • 独自yamlと簡易スクリプトだけなのでプラットフォームと呼 べるほどではないがプラットフォームエンジニアリングの実 現していることに相似 • workhub にしか適応できていない
  23. Copyright © Bitkey Inc. All rights reserved. 津島 雅俊 Masatoshi

    Tsushima 2004 ソフトウェア開発との出会い Webサイトや携帯アプリを作って遊んでいました 2018秋 Bitkeyに参画 当初はbitkey platformの開発を担当 主にGoでサーバサイドを開発 2019秋 ファームウェアチームを立ち上げ 第一世代デバイスのファームウェアを内製化 現在に続く開発スタイルを構築 2020夏 第二世代ロックデバイスの開発 内製を前提としたファームウェア開発 2021春リリース 2022夏 Individual contributor (?) Android/iOS/Flutter、デバイスQA用アプリ、社 内仕様の標準化、Makefile職人、CIおじさん
  24. Copyright © Bitkey Inc. All rights reserved. 組込み開発者のためのツール・サービス • ビルド/エディタ設定生成ツール

    ◦ CMake 的な役割 • BLE クライアントアプリ ◦ curl 的な役割 • 社内標準仕様 • 社内向け仕様書ホスティング • CI/CD 用 Docker & GitHub Actions • アップデートの配布
  25. Copyright © Bitkey Inc. All rights reserved. 社内標準仕様ができる前のテスト bitlock LITE

    bitbutton bitlock GATE bitlock MINI bitlock PRO bitreader+ … bitlock homehub homehub Crew workhub bitreader bitbutton bitreader+ … 待ち受ける方 つなぎに行く方
  26. Copyright © Bitkey Inc. All rights reserved. 社内標準仕様ができる前のテスト bitlock LITE

    bitbutton bitlock GATE bitlock MINI bitlock PRO bitreader+ … bitlock homehub homehub Crew workhub bitreader bitbutton bitreader+ … これ、毎回全部テストするの…? (実際やってた)
  27. Copyright © Bitkey Inc. All rights reserved. これは近い将来ヤバいことになる…! • 全部テストしないと安心できない

    • 一覧管理しないといつか被る • バグってる方ではなく、直せる方を直してしまう ◦ アプリ開発者「悪いのは、俺の実装の方か…?」 ◦ 後段の出荷物にワークアラウンドをコピペしまくる
  28. Copyright © Bitkey Inc. All rights reserved. 社内で標準化した方が良いと思う領域 • ページネーション

    • エラー • ログレベル • デザイントークン • ロケールやタイムゾーンの扱い • Slack チャネルのプレフィックス
  29. Copyright © Bitkey Inc. All rights reserved. まとめ • ビットキーの組織とチームトポロジー

    ◦ プラットフォームエンジニアリングを主務としたチームの不在 • 各チームでのプラットフォームエンジニアリングの片鱗 ◦ GitHub Actions ◦ Cloud Run ◦ 社内標準仕様
  30. Copyright © Bitkey Inc. All rights reserved. 今後の展望 • プラットフォームエンジニアリングの理解

    • ストリームアラインドチームへの説明 • 組織としてプラットフォームエンジニアリングチーム