勉強備忘録, DevOps

サーバ/インフラエンジニア養成読本 DevOps編 の勉強メモ①

DevOps

背景

  • 昔に比べると、ソフトウェアのビジネスへの貢献度がどんどん増している
  • ソフトウェア開発プロセスも変化している
    • ウォーターフォール => アジャイル開発
    • MVP(Minimum Viable Product) 作って、ユーザのフィードバックを得ながら方向性を決める等
  • 一方、ビジネスにおいてはソフトウェア開発者(Dev) と 運用者(Ops) が組織的な理由で分かれている
    • 新規開発 & リリース vs 安定運用
    • アジャイル開発手法においてもシステム運用については触れられることが少なかった

DevOpsとは?

  • DevOpsは、開発者と運用者がお互いに協力し合いながらビジネスの価値を実現していくことを目的とした活動全般

導入にあたり

  • 組織への適応と推進
    • ※ 手法やツールはソリューションの一つにすぎないので導入が目的になってしまうのはNG
  • 課題の洗い出し、あるべき姿、優先順位、解決度合いを測る指標、達成目標の時期を決めるのが重要
  • DevOpsに関連するツール群
    • Version管理ソフト
    • プロジェクト管理ソフト
    • テストの自動化
    • 継続的インテグレーション
    • 仮想環境構築ツール
    • プロビジョニングツール
    • 監視ツール

Infrastructure as Code

Infrastracture as Codeとは?

  • 今まで手作業で行っていたインフラ構築や変更作業をコードで記述することで、自動化されたインフラを実現する方法の一つ。
  • 利点
    • コードを適用するだけなので、作業対象が増えても構築に時間がかからない
    • 「コード=手順書」になるので作業ミスが混入しづらくなる
    • テストとメンテもしやすい
    • コード化することで再利用も容易になる

実現方法

  • シェルスクリプト
  • デプロイツール
  • Infrastructure as Code ツール

コードによるインフラ管理の範囲

  • ネットワークの構築
  • 複数のクラウドサービスやデータセンターの構築・設定
  • サーバ自体の構築や設定
  • 仮想サーバのテンプレート構築

冪等性 と Immutable Infrastructure

  • 冪等性
    • 何度同じ処理を実行しても同じ結果に収束するという意
    • Chef, Ansible, puppet等のツールは、冪等性の考え方に基づいている
  • Immutable Infrastructure
    • だが、実際に冪等性を担保しようとするのは難しい
    • インストールの順序、パッケージアップデートによる依存問題等でハマること多々...
    • Immutable Infrastructure は不変のインフラという意味で、一度サーバを構築したらその後はサーバのソフトウェアに変更を加えないことを指す
    • 新しいサーバを作って既存のものをすべて入れ替える
    • 実現するための代表的な技術としてコンテナ技術がある
  • Immutable Infrastructureのメリット
    • すべてのサーバが同じ状態であることが保証されている
    • 作りなおすことが前提なので、冪等性のさまざまな考慮から開放される
    • コードが簡素化され、メンテナンスも容易
    • deploy時はLB, リバースプロキシの設定変更で済むため、切り戻しも容易

Tomoyasu Ishikawa

Read more posts by this author.