Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Copyright © Bitkey Inc. All rights reserved. スタートアップにおける Platform Engineering の 片鱗 株式会社ビットキー 大高浩太郎 / 津島雅俊 2024.07.09
Slide 2
Slide 2 text
Copyright © Bitkey Inc. All rights reserved. みなさんの組織に プラットフォームエンジニアリングチーム は存在していますか?
Slide 3
Slide 3 text
Copyright © Bitkey Inc. All rights reserved. プラットフォームエンジニアリング 理解できていますか?
Slide 4
Slide 4 text
Copyright © Bitkey Inc. All rights reserved. ビットキーに プラットフォームエンジニアリング を主務としたチームは存在しません
Slide 5
Slide 5 text
Copyright © Bitkey Inc. All rights reserved. しかし、これって プラットフォームエンジニアリングなのでは? といった片鱗が存在します
Slide 6
Slide 6 text
Copyright © Bitkey Inc. All rights reserved. プラットフォームエンジニアリングとは? 自分たちの組織でもできるかな?
Slide 7
Slide 7 text
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
Slide 8
Slide 8 text
Copyright © Bitkey Inc. All rights reserved. Outline 1. チームトポロジーで考えるビットキー開発組織 2. 事例①:GitHub Actions 3. 事例②:Cloud Run 4. 事例③:社内標準仕様 5. まとめと今後の展望
Slide 9
Slide 9 text
Copyright © Bitkey Inc. All rights reserved. チームトポロジーで考えるビットキー組織
Slide 10
Slide 10 text
Copyright © Bitkey Inc. All rights reserved. Copyright © Bitkey Inc. All rights reserved.
Slide 11
Slide 11 text
Copyright © Bitkey Inc. All rights reserved. ソフトウェアとハードウェアに跨る自社開発プロダクト
Slide 12
Slide 12 text
Copyright © Bitkey Inc. All rights reserved. ビットキー組織 CEO CRO COO CFO CHRO workhub 事業本部 homehub 事業本部 製品開発本部 技術本部 製品品質本部 プロダクトバリュー デザイン部 homehub開発部 workhub開発部 プラットフォーム 開発部 ファームウェア 開発部 ハードウェア 開発部 製品検査部 デバイス品質保証部 研究開発部 CAO エンジニアリング マネジメント室
Slide 13
Slide 13 text
Copyright © Bitkey Inc. All rights reserved. ビットキー組織 CEO CRO COO CFO CHRO workhub 事業本部 homehub 事業本部 製品開発本部 技術本部 製品品質本部 プロダクトバリュー デザイン部 homehub開発部 workhub開発部 プラットフォーム 開発部 ファームウェア 開発部 ハードウェア 開発部 製品検査部 デバイス品質保証部 研究開発部 CAO エンジニアリング マネジメント室 コーポレート ビジネス 開発
Slide 14
Slide 14 text
Copyright © Bitkey Inc. All rights reserved. チームトポロジー ストリームアラインドチームが自律的に すばやく価値を届ける ↕ homehub や workhub が自律的 にすばやく価値を届ける https://pub.jmam.co.jp/book/b593881.html
Slide 15
Slide 15 text
Copyright © Bitkey Inc. All rights reserved. チームトポロジーで考えるビットキー開発組織
Slide 16
Slide 16 text
Copyright © Bitkey Inc. All rights reserved. チームトポロジーで考えるビットキー開発組織 Platform Engineering を主務とする チームは存在せず
Slide 17
Slide 17 text
Copyright © Bitkey Inc. All rights reserved. チームトポロジーで考えるビットキー開発組織 事例① 事例③ 事例②
Slide 18
Slide 18 text
Copyright © Bitkey Inc. All rights reserved. 事例①:GitHub Actions
Slide 19
Slide 19 text
Copyright © Bitkey Inc. All rights reserved. SREチーム ● 2名体制 ● ストリームアラインドチームの SLI / SLO の管理 ● アーキテクチャ設計支援・管理 (terraform)
Slide 20
Slide 20 text
Copyright © Bitkey Inc. All rights reserved. 課題 ● GitHub Actions をセキュアに利用するためのプラクティ スの実施状況がリポジトリによってバラツキ ● OIDC によるパブリッククラウドの認証や GitHub Apps を利用したAPIトークンの発行はやり方を知らなければ改善 の動機も生まれない
Slide 21
Slide 21 text
Copyright © Bitkey Inc. All rights reserved. 解決策 ● GitHub Actions の Composite Actions や Reusable workflow をまとめるリポジトリを作成 ● 組織内で再利用可能に ● 事前に必要な設定はあらかじめ済ませておくことで、コード をコピペするだけで利用可能
Slide 22
Slide 22 text
Copyright © Bitkey Inc. All rights reserved. Composite Actions ● action.yaml / action.yml で定義 ● uses によって 利用
Slide 23
Slide 23 text
Copyright © Bitkey Inc. All rights reserved. Reusable workflow ● workflow を uses によって利用
Slide 24
Slide 24 text
Copyright © Bitkey Inc. All rights reserved. Composite Actions / Reusable workflow ● Google Cloud の OIDC による認証 ● 機密情報のハードコードを防ぐ静的解析 ● Slack への通知 ● Jira チケットとの自動紐付け ● GitHub Apps を利用したAPIトークンの発行 ○ のちに公式から Actions が提供
Slide 25
Slide 25 text
Copyright © Bitkey Inc. All rights reserved. Google Cloud の OIDC による認証
Slide 26
Slide 26 text
Copyright © Bitkey Inc. All rights reserved. Google Cloud の OIDC による認証
Slide 27
Slide 27 text
Copyright © Bitkey Inc. All rights reserved. Jira チケットとの自動紐付け
Slide 28
Slide 28 text
Copyright © Bitkey Inc. All rights reserved. Jira チケットとの自動紐付け
Slide 29
Slide 29 text
Copyright © Bitkey Inc. All rights reserved. Jira チケットとの自動紐付け
Slide 30
Slide 30 text
Copyright © Bitkey Inc. All rights reserved. 結果 ● 中央集権的なリポジトリを用意 ● 共通の課題を解決するコードを集約 ● 開発者は仕組みを理解していなくても、安全に便利に GitHub Actionsを利用可能
Slide 31
Slide 31 text
Copyright © Bitkey Inc. All rights reserved. 片鱗ポイント ● Composite Action や Reusable workflowごとに READMEを充実 ● InnerSource を意識して OSS のように README を 手厚く用意 ● カタログとしての機能は持たせておらず検索によって発見 されるので、認知の向上に課題 ※ InnerSource ... オープンソースの原則を社内のソフトウェア開発に適用すること
Slide 32
Slide 32 text
Copyright © Bitkey Inc. All rights reserved. 事例②:Cloud Run
Slide 33
Slide 33 text
Copyright © Bitkey Inc. All rights reserved. 遊撃隊チーム ● 2名体制 ● workhub チームへの支援 ○ 共通性が高いもの ○ 深いシステムへの対応 ● 広守備範囲 ● なんでもやる
Slide 34
Slide 34 text
Copyright © Bitkey Inc. All rights reserved. Cloud Run ● Google Cloud が提供するコンテナを実行できる マネージドなサービス ○ 任意の言語、ライブラリ、バイナリ ○ 高速な自動スケーリング ○ サイドカーパターン
Slide 35
Slide 35 text
Copyright © Bitkey Inc. All rights reserved. 課題 ● 通常のWebアプリケーションとは別で画像生成サーバーな どドメインの異なるサービスが増えてきた ● ビルドフローのコード内に追加するような形だと開発者が 追加していきづらいしわかりづらいので設定可能にしたい ● image 差し替えを terraform ではなくアプリケーション 側のデプロイフローに載せたい
Slide 36
Slide 36 text
Copyright © Bitkey Inc. All rights reserved. 解決策 ● Cloud Run サービスに必要な設定項目用に独自の yaml ( cloud_run.yaml )を規定 ● それを処理するスクリプトを実装 ● 最初は cloud_run.yaml とスクリプトだけでやっていたが、 image のビルド最適化のために image に関する設定は docker bake に分離 ● アプリケーションと独立したインフラとしての設定値は terraform で管理
Slide 37
Slide 37 text
Copyright © Bitkey Inc. All rights reserved. cloud_run.yaml IDE にてJSON Schema への補完や説明が記載される デプロイするための環境を指定 デプロイ対象のサービスリスト デプロイ対象のイメージ名 引数指定 デプロイ時の順序
Slide 38
Slide 38 text
Copyright © Bitkey Inc. All rights reserved. 実行スクリプト ref: https://github.com/google/zx お手軽に JS を shell で実行するおまじない 設定を config として読み込む デプロイしたいサービスを絞りたければ指定
Slide 39
Slide 39 text
Copyright © Bitkey Inc. All rights reserved. 実行スクリプト 複数のコマンドを用意 オーダー順に並び替え デプロイ関数を実行 デプロイ関数 gcloud コマンドによるデプロイ
Slide 40
Slide 40 text
Copyright © Bitkey Inc. All rights reserved. 結果 ● 最小限の設定だけ気にすればよいので認知的負荷は減少 ● アプリケーション開発者がCloud Runサービスを追加する 機会はさほど多くはないので役立った場面は少ない ● docker bakeについてはさほど難しいものではないが、 追加で覚えることが増えて認知的負荷は上昇しているかも
Slide 41
Slide 41 text
Copyright © Bitkey Inc. All rights reserved. 片鱗ポイント ● 開発者が Cloud Run サービスを簡単に追加できるよう に仕組み化 ● 独自yamlと簡易スクリプトだけなのでプラットフォームと呼 べるほどではないがプラットフォームエンジニアリングの実 現していることに相似 ● workhub にしか適応できていない
Slide 42
Slide 42 text
Copyright © Bitkey Inc. All rights reserved. 事例③:社内標準仕様
Slide 43
Slide 43 text
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おじさん
Slide 44
Slide 44 text
Copyright © Bitkey Inc. All rights reserved. 組込み開発者のためのツール・サービス ● ビルド/エディタ設定生成ツール ○ CMake 的な役割 ● BLE クライアントアプリ ○ curl 的な役割 ● 社内標準仕様 ● 社内向け仕様書ホスティング ● CI/CD 用 Docker & GitHub Actions ● アップデートの配布
Slide 45
Slide 45 text
Copyright © Bitkey Inc. All rights reserved. ソフトウェアとハードウェアに跨る自社開発プロダクト 再掲
Slide 46
Slide 46 text
Copyright © Bitkey Inc. All rights reserved. 社内標準仕様ができる前のテスト bitlock LITE bitbutton bitlock GATE bitlock MINI bitlock PRO bitreader+ … bitlock homehub homehub Crew workhub bitreader bitbutton bitreader+ … 待ち受ける方 つなぎに行く方
Slide 47
Slide 47 text
Copyright © Bitkey Inc. All rights reserved. 社内標準仕様ができる前のテスト bitlock LITE bitbutton bitlock GATE bitlock MINI bitlock PRO bitreader+ … bitlock homehub homehub Crew workhub bitreader bitbutton bitreader+ … これ、毎回全部テストするの…? (実際やってた)
Slide 48
Slide 48 text
Copyright © Bitkey Inc. All rights reserved. Web で そんな困り方しなくない?
Slide 49
Slide 49 text
Copyright © Bitkey Inc. All rights reserved. RFC で定まっているから RFC 7230, 7231, 7232, 7233, 7234, 7235
Slide 50
Slide 50 text
Copyright © Bitkey Inc. All rights reserved. これは近い将来ヤバいことになる…! ● 全部テストしないと安心できない ● 一覧管理しないといつか被る ● バグってる方ではなく、直せる方を直してしまう ○ アプリ開発者「悪いのは、俺の実装の方か…?」 ○ 後段の出荷物にワークアラウンドをコピペしまくる
Slide 51
Slide 51 text
Copyright © Bitkey Inc. All rights reserved. RFC/IANA を参考にまとめる
Slide 52
Slide 52 text
Copyright © Bitkey Inc. All rights reserved. 出来上がったもの 標準仕様 番号の割り当て ツール
Slide 53
Slide 53 text
Copyright © Bitkey Inc. All rights reserved. 社内で標準化した方が良いと思う領域 ● ページネーション ● エラー ● ログレベル ● デザイントークン ● ロケールやタイムゾーンの扱い ● Slack チャネルのプレフィックス
Slide 54
Slide 54 text
Copyright © Bitkey Inc. All rights reserved. まとめと今後の展望
Slide 55
Slide 55 text
Copyright © Bitkey Inc. All rights reserved. まとめ ● ビットキーの組織とチームトポロジー ○ プラットフォームエンジニアリングを主務としたチームの不在 ● 各チームでのプラットフォームエンジニアリングの片鱗 ○ GitHub Actions ○ Cloud Run ○ 社内標準仕様
Slide 56
Slide 56 text
Copyright © Bitkey Inc. All rights reserved. 今後の展望 ● プラットフォームエンジニアリングの理解 ● ストリームアラインドチームへの説明 ● 組織としてプラットフォームエンジニアリングチーム