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

10分の自動化の導入からクラウドネイティブな開発を始める

 10分の自動化の導入からクラウドネイティブな開発を始める

Masahiko Funaki(舟木 将彦)

September 14, 2022
Tweet

More Decks by Masahiko Funaki(舟木 将彦)

Other Decks in Technology

Transcript

  1. CircleCIってどんな会社 • 世界最大規模のクラウドCI/CDサービス ◦ 22,000以上の組織の 100万以上の開発者が実行する 毎月7億以上のジョブを支えるサービス • ミッション: Manage

    change So software teams can innovate faster (変化をマネージしよう、そうすれば ソフトウェアチームはより速くイノベーションできる ) • 2011年設立、サンフランシスコに本社 2021/05/11 にSeries Fで1億ドルを調達 (これまでに$315Mの投資、$1.7Bの企業価値) • 600+人の社員 (米国、日本、英国、オランダ、フランス+  リモートワーク)
  2. 3 ワークフロー実行回数順位 (CircleCIクラウド版) グローバル 1 米国 2 英国 3 日本

    4 ドイツ 5 カナダ 6 オーストラリア 7 フランス 8 スウェーデン 9 ブラジル 10 イスラエル アジア・太平洋地域 1 日本 2 オーストラリア 3 シンガポール 4 香港 5 ニュージーランド 6 インド 7 韓国 8 マレーシア 9 タイ 10 インドネシア 2010/10~2011/09までの12か月にCircleCIクラウド版で実行されたワークフローより。 ただしサンプルやチュートリアルの実行等は除外している(カウントしていない)。
  3. 6 ソフトウェアはモノからサービスに スマホに5年前入れたままのアプリを使っている人はいない →スマホ自身が2〜3年で買い換えられる中、機種変しても使われ続けるには? • モノの品質(企業であれば5年償却) 買った時点が一番価値が高く、競合の出現や市場の進化により価値が低下 → 数年に一度のモデルチェンジやバージョンアップ インフラ:オンプレ(ハードウェア耐用年数の間、同じソフトを継続利用)

    開発手法:ウォーターフォール (作業の積み上げ or リリース日からの逆算) • サービスの品質 常に最高のサービスを使い続ける(その時点その時点で最高が異なる ) インフラ:クラウド(ソフトの機能アップ、ハードの性能アップ/コスト低減の      恩恵を受けながら継続利用) 開発手法:アジャイル (要件→設計→実装→テストを小さく回す)      ウォーターフォールが進化してもアジャイルにはならない
  4. 7 サービスとしてのソフトウェア開発のプロセス ソフトウェアの 機能拡張 新技術を 取り込みつつ (Opsしやすい) 安定的な ソフトウェア 利用者の増加

    安定的かつ (Devしやすい) 拡張性を備えた 責任範囲をオーバーラップさせる (サイロにしない) 忙しくなりすぎる、普通に考えたら無理 → できない理由ではなく、できるためにするには?
  5. 8 継続するビジネスを支えるソフトウェア開発を標準化 プラン コード ビルド テスト リリース デプ ロイ 運用

    監視 継続的インテグレーション (CI) 継続的 デプロイ (CD) 自動化できない 非正常系は 自動化できない 自動化できる→継続的であるために自動化すべき ビジネスが継続する限り、ソフトウェアの進化は続く コード追加・修正時は 常にビルド・テスト (最後にまとめてやらな い→早く失敗すれば 早く品質が安定する) サービス停止せず常に リリース/デプロイ (失敗時にはクイックに 修正 / 前バージョンに 戻せる)しくみ 人にしかできない ことは、 細分化した上で できる人が 手を挙げてやる →誰でも見える、  参加できる状態 共有 リポジトリ上 で 常に作業 自動化できる ことは 作業手順の 定義を行い 自動実行させる →依頼しない、 抜け漏れしない 運用・監視しやすい 品質をコードに反映 (必要なデータの取得、 スケーラビリティの 確保)
  6. 10 自動化のレベル分け (Industrie 4.0や自動運転から) 操作する人の他に 動力を生み出す人が必要 (石炭→石油により負荷軽減) ※ 紡織の自動化(人が部材取替) 動力(電気)は外部から調達、

    使用量に応じて課金 電線や電池で取り込み可能に ※ 問題時は自動停止(人対応) 人の代替の定型作業から 人の能力を超えた作業を より柔軟に(AI、データ活用) ※ 人の能力を制約にしない
  7. 11 ソフトウェア開発の現況 〜 今の立ち位置を知る ソースコードを GitHubなどの ソースコード 管理システムで管理 日時や週次で テストやビルドを

    自動実行する コードが追加・修正 されるたび、 テストやビルドを 自動実行する ソースコードを 共有フォルダ等で 取りまとめる 動作する直近のバージョンが 失われる可能性がある Linux/Windows/iOS /Android/GPU環境 向けビルドを(クラウド で)一元管理 テスト時間を短縮す ることで、作った記憶 がホットなうちに修正 可能に 必要に応じた スペックのビルド環境を選 択可能(縦に伸ばす) 直列実行だけでなく、 並列実行が簡単に 設定可能(横に広げる) レベル1 コード 共有 + 手作業の 自動化 レベル2 コード 履歴共有 + 手作業の 自動化 (巻戻可) レベル3 スペックや多重度が 変化する自動化 (高速化= 速く気づき 速く直す)
  8. 12 ソフトウェアデリバリーに関わる4つの主要な指標 4つの指標 グローバルの CircleCIユーザー平均値 CircleCIが考える 目標値* スループット (ワークフロー実行回数) 1.43回/日

    プルリクエストの数+ 自動実行数 実行時間 (ワークフロー実行時間) 3.7分 10分 (🙅10分以内) 平均リカバリ所要時間 73.6分 1時間以内 ワークフロー成功率 デフォルトブランチで 77% デフォルトブランチで 90%以上 手動・自動を問わず 現時点の値を踏まえた上で 世の中の平均にまずは 近い目標として到達し、 あるべき姿(目標値)を 実現を目指す取り組みを推進
  9. 15 縦に伸ばす(自動化実行環境のスペックを上げる) リソースクラスと消費クレジット Docker Executor クラス vCPUs RAM クレジット small

    1 2GB 5クレジット/分 medium 2 4GB 10クレジット/分 medium+ 3 6GB 15クレジット/分 large 4 8GB 20クレジット/分 Freeプランでは30,000クレジット/月が無料で付与 (smallクラスなら6000分=100時間に相当) ※月20日換算で一日あたりのジョブ実行時間 5.0時間
  10. 17 横に広げる(並列化) 1 5 50 5 45 40 100 60

    1 0 30 20 100 1 5 50 60 20 1 0 45 40 30 5 100 50 1 0 45 1 5 60 20 5 40 30 1並列 3並列 5並列 1’44” 1’14” 1’09” 1’14” 1’15” 6:20 132クレジット (¢7.92相当) 2’09” 2’09” 2’09” 147クレジット (¢8.82相当) 161クレジット(¢ 9.66相当)
  11. 21 • 自動化の適用で生み出した時間を、人による「開発」「運用」の強化+ α に使う • 自動化の適用で「開発現況」を数値データとして初めて見える化できる →「開発の仕組みや考え方、組織のあり方」を変え、効果を測定する上での  メトリクス (ソースコードの行数やテストの数、印象ベースでの達成%に頼ることなく、

     新機能やバグ修正がお客様にとって利用可能になるまでの時間を見積可能に) • 10分のワークフロー時間は、 ・ ソフトウェア開発時に生み出されたバグなどの問題を素早く直す ・ ソフトウェアの品質を向上する を両立するベストな時間であり、 自社のソフトウェアを競合と差別化する上で目指すべきスタートポイント まとめ