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

なぜSIerは自動化するのか/Why do SIers automate?

なぜSIerは自動化するのか/Why do SIers automate?

あんでぃー

March 25, 2020
Tweet

More Decks by あんでぃー

Other Decks in Technology

Transcript

  1. --- name: "Daiki Yamaguchi" company: entry_year: 2012 department: シス基 TB基盤

    hobby: - ゲーム - 勉強 like: - あんでぃー @answer_d (裏の顔) インフラエンジニア9年生
  2. アジェンダ • 日本のIT業界に起きている変化 • 人間 vs 機械 • 自動化のはじまりと発展 •

    自動化が作る変化への強さ • DevOps/DXとの関連 • これからの歩き方
  3. 非機能要件 人間 機械 可用性 壊れたら動かない、冗長化不可 冗長 性能 ◦秒/step ◦ミリ秒/step 信頼性

    指示通りに作業を実行しないリスク プログラムにより指示した通りに作業を遂行 拡張性 手順書または口頭による指示を超高度なAIが解釈 し、自動的に機能を拡張 処理追加分のプログラム実装が必要 運用・保守性 稼働時間 8~12h/日 24h/365d 計画停止 土日祝日 なし 稼働率 3日+α/年のペースで非稼働 監視不可能なパフォーマンス劣化あり 99% バックアップ なし あり 監視 目視、たまに自動報告機能あり エラー時自動通報(メール/チャット) 移行性 ドキュメント、口頭 ツールによる移行機能あり セキュリティ 指示と自己蓄積された情報に従って担保しようと する、たまにサボる 実装次第で自動担保可能 人間 vs 機械
  4. 自動化の発展 │ playbook.yml │ ├─roles │ ├─XXX │ └─YYY └─tests

    verify.yml 設計書 手順書 テスト 仕様書 構築コード実行 テストコード実行 人間の作業 機械の作業 コード化 IaC Ansible ジッコウ
  5. 変更にかかるオーバーヘッドでかすぎ問題 設計 実装 テスト 変化の要因 パッチ適用 障害対応 スケール アップ リリース

    作業 • 実機と設計の乖離 • 関係者/他シス調整 • 影響調査 • 変更管理 • 設計反映漏れ • ヒューマンエラー • 設計や手順の不備 • 難しいリカバリ対応 • デグレード • 確認漏れ(サボり) 仕様変更 新脆弱性 加速する リリース 人の流動 リプレース EOL 新規技術 OSS 事業買収 「作業ルールの徹底!」 「2人作業、指差し確認!」 「チェックリスト遵守!!!」
  6. そして訪れる限界 設計 実装 テスト 変化の要因 パッチ適用 障害対応 スケール アップ リリース

    作業 仕様変更 新脆弱性 加速する リリース 人の流動 リプレース EOL 新規技術 OSS 事業買収
  7. 自動化で変わるシステム構築のプロセス • そもそも仕様が変わらない前提がおかしいのでは? • 「システムに求められる要件は日々変化する」という現実 • ビジネスのスピードはどんどん早くなっている • そうだ、自動化で解決しよう •

    IaCにアプリケーション開発で培われたプラクティスを適用 • バージョン管理 • CI/CD • TDD • ...etc • 自動化をベースとしたシステムアーキテクチャとプロセスを構築 「変化に強いシステム」
  8. 変化に強いシステムの例 IaC │ playbook.yml │ ├─roles │ ├─XXX │ └─YYY

    └─tests verify.yml push 構築コード実行 テストコード実行 人間の作業 継続的改善 検知+自動起動
  9. 目指すべき地点:DevOps • すっごいイケイケな状態 • 1日何十回!みたいな高頻度のリリース • 開発と運用(インフラ)の垣根が消失 • チームが真の顧客価値めがけて改善する文化が形成される •

    DevOpsなチームは • 「素早く」「間違いなく」リリースができる • システムの(無駄な)管理から解放される • 組織はより生産的な活動に人的リソースを割ける 「ビジネススピードの向上」 顧客が実現したい「DX」に必要不可欠な要素 かつSIer自身のDXでもある \はやくこれになりたい/
  10. 闇2:内製化の闇 • ユーザ企業さん「自社内でシステム作ればええやん!」 • でも… • そもそもSIerへの依存度が高すぎ企業はスキルや要員の不足で無理 • 今から育てられる? •

    ユーザ企業は自社内に優秀なIT人材を確保したがるが… • SIerからの人材流出が加速するとSIer側の人手が不足する可能性あり • 日本のベンダー依存度の高さから考えると、業界全体のシステムモダナイズの阻 害要因となる • 最悪のケース • ~5年後、DXしたのは金のあるユーザ企業だけだった~
  11. 闇3:ITベンダーが抱える商売の闇 • 「人月商売」文化がアブナイ! • 自動化を進めると工数が減ることがある • 知見共有が上手く行ったり • 上手く自動化できた実績を元に類似性の高いシステムを作る場合 •

    工数が減ると売上が下がる • 同じ仕事でも、自動化していない人(=たくさん稼働を出す人)の方が高 く評価される • いつしか自動化するためのモチベーションが働かなくなるかも…
  12. 闇4:自動化実装自体には時間がかかるぞ問題 • 自動化は継続的改善を行う時にこそ大きく効果を発揮する • ということは初期構築さえ乗り切れば良いPJ形態では…? • 自動化実装そのものがスケジュールリスクとなる • 学習含めると基本的には手作業の構築よりもコスト増の傾向 •

    ぶっちゃけワンショットなら手作業+ツール化(従来の自動化)の方が早い • 仕様変更や運用を考えて初めて成果が現れる類のもの • でも自動化しないと行けない状況 → 「なんちゃって自動化」の横行 • システムの効率化という観点が度外視されたアドホックな実装 • 上辺はツール使ってても、結局やってることは手作業と変わらない • そのコードが共有され、隣のPJも同じことに… • ~そして非効率なシステムが量産されていった~
  13. 闇5:ローテーション人事 • 能力開発、属人化解消などのために行っている人事異動 • 「どこに異動しても使える技術」とは? • エンジニアリングスキルではなくヒューマンスキル • マネジメント、リードなど •

    エンジニアリングは外注し、どこにいっても人を操ってPJをこなせる人材を作る 方が効率的だから • スペシャルなスキルを持つ要員が少なくなる • そりゃあアプリケーション開発のプラクティスが必要な自動化は推進できないよ ね?
  14. 担当~主任がやると良さそうなこと • 知識習得 • コードを読み書きできないとヤバい時代が来る • これからはインフラもコードにより表現される • そしてDevとOpsの境界はどんどん曖昧になる •

    「プログラミングのできるDev」と「プログラミングのできないOps」 • Opsの価値って? • 「Ansibleはプログラミングではない」は文字的には合ってるが、基本的に嘘 • プログラミング的な知識や概念は残念ながら必要 • 体感が無いのはB2Bのシステムが「まだ」モダナイズされてないだけ • これから急速にされていくし、もしされなかったらこの会社(あるいは日本?)は 崖に落ちてる • アプリケーション開発のプラクティスも学んでいこう • IaCのメリットを享受するため • 知見のアウトプット • 組織と自分の成長の両面で役立つ、オープンマインドを信じろ