本文へ移動

Cloud & Platform

DevOpsエンジニア

DevOpsエンジニアが扱うのは、マージされたコミットと、本番で安全に動いている変更とのあいだの距離です。それを運ぶパイプライン、悪い変更が壊せる範囲を限定するデプロイ戦略、そしてうまくいったかどうかを告げるシグナルです。この職種は、どのツールを動かすかと同じくらい、チームがどう責任を分担するかについての領域でもあります。本ガイドでは、役割の範囲、専任を正当化するデリバリー上の問題、そしてこの職種が開発チームの中でどう位置づくかを扱います。

DevOpsエンジニアは何をする職種ですか

DevOpsエンジニアは、開発者のコミットを稼働中の本番システムへ運ぶ自動化と、その後に何が起きたかをチームへ返すフィードバックを構築し、維持する職種です。対象は、継続的インテグレーション、ビルドとリリースの自動化、コードとして表現されたインフラ、悪い変更の影響範囲を限定するデプロイ戦略、監視とアラート、そしてインシデント対応への参加に及びます。この職種の目的は、リリースを小さく、頻繁に、取り消し可能で、平坦なものにすることであり、それは何を動かすかだけでなく、チームの働き方そのものの変化です。

名前が混乱を招きます。DevOpsは職種名としてではなく、組織構造をめぐる主張として始まったからです。その主張は、ソフトウェアを書く人と動かす人を分けると予測可能な失敗が生じる、というものでした。文脈が失われる引き継ぎ、逆方向を向くインセンティブ、交渉と化すリリース手続きです。肩書きで採用してもその論点は解決しません。うまくいったときにもたらされるのは、変更の流れそのものを担当分野とする人がチームに加わることです。

価値の多くは、リリースを小さくし頻度を上げることから生まれます。大きなリリースは、どこに帰属するか分からないリスクを溜め込みます。何かが壊れたとき、数十の変更がすべて容疑者になるからです。数分で出せて一手で撤回できる小さな変更は、失敗の面積が狭く、撤回できるという事実そのものがチームの挑戦の幅を変えます。デプロイ戦略、自動検証、そして練習済みの戻り道は、上に載せた便利機能ではなく、この考え方が元を取るための仕組みそのものです。

この職種の後半はデプロイのあとに始まります。何を測るのか、何なら人を起こす価値があるのか、そして深夜三時にそのアラートが鳴ったとき何が起きるのかを、誰かが決めなければなりません。鳴り続けるアラートは、無視することを人に学習させます。まったく鳴らないアラートは、たいてい重要なものが見られていないことを意味します。この均衡を保つのは地味で継続的な作業で、職務記述書にはめったに現れず、経験のあるエンジニアと有能な新参者を確実に分けます。

必要性の見極め

この能力が必要になる場面

デリバリーの自動化は、それを最も必要とした人が、機能開発の合間に作っているのが通例です。以下は、積み上がったその体制が持ちこたえなくなった兆候です。

  • リリースが「行事」になっている

    デプロイは決められた時間枠で行われ、手順書の手作業に従い、何かあったときのために人が待機します。代償はその晩だけではありません。すべてが次の時間枠の後ろに並ぶため、まとまりは大きくなり、各リリースは前回より多くの帰属不能なリスクを抱えます。

  • 環境同士が似ていない

    本番には手作業で加えられ記録されなかった変更が積もり、ステージングは記憶を頼りに構成され、「ステージングでは動いた」は安心材料でなくなりました。本番の問題の再現が修正より時間を要するようになり、あらゆる不具合の費用が静かに倍になります。

  • 計測より先に顧客が障害に気づく

    チームは問い合わせで障害を知ります。シグナルが存在しないか、存在はするが誰も信じていない——アラートのチャンネルが長く騒がしく、ミュートされているかのどちらかです。外からは同じに見えますが、必要な手当ては異なります。

  • パイプラインが制約になっている

    継続的インテグレーションに時間がかかり、待ちを避けるためにエンジニアが作業をまとめてしまいます。しかも失敗の一部は本物ではなく不安定さによるものです。通るまで再実行される検査は、もはやゲートとして機能していません。時間を奪い、保証は与えないからです。

  • 手作業の関門が、廃止される速さを上回って増えた

    インシデントのたびに承認やチェックリストや署名が追加され、その後に取り除かれることはありませんでした。手続きは実時間を消費し、提供する保証はほぼ儀礼的です。署名する人が、承認対象を実質的に評価できないからです。

  • デプロイ対象の数が、デプロイの仕方を追い越した

    一つのアプリケーションに合っていた運用が、十五のサービスになると立ち行かなくなります。しかもそれぞれのパイプラインは、別の人が少しずつ違う書き方をしています。新しいサービスを一つ増やす限界費用が上がり、分割したほうが良い設計である場面でも、チームは新設を避けるようになります。

この領域について

中核となる能力

  • 継続的インテグレーション

    共有ブランチを、いつでもリリースできる状態に保つことです。変更ごとの素早いフィードバック、決定的であるがゆえに信頼される検査群、そして一週間分の乖離を溜めるのではなく一日に何度も統合できる程度に短いビルド時間です。

  • リリースとデプロイの自動化

    戻り道が定義された、無人で反復可能なデプロイです。ローリング、ブルーグリーン、カナリアリリース、フィーチャーフラグによる段階的な公開、反映後の自動検証、そして仮定ではなく実際に試したロールバックです。

  • Infrastructure as Code

    サーバー、ネットワーク、クラスタとその設定を、バージョン管理された定義として表現し、変更をレビュー可能で帰属可能にします。この規律の核心はツールよりも、手作業のほうが速い場面で、記録に残らない手作業を選ばないことにあります。

  • アーティファクトの昇格と環境の同一性

    リリース対象のコミットごとに一度だけビルドし、その同じアーティファクトを先の環境へ昇格させ、正当に異なる要素はすべて実行時に与えます。次の環境のために作り直せば別のアーティファクトになり、それまでに検証したものは別物についての検証だったことになります。

  • 監視とアラート

    何を測るかを決め、リソース使用率ではなく利用者から見える影響を反映した閾値を置き、鳴るすべてが対応に値する程度にアラートの数を絞ります。オンコールの設計——ローテーション、エスカレーション、引き継ぎ——は、この作業の後続ではなく一部です。

  • 信頼性目標とエラーバジェット

    信頼性を願望ではなく明示的な目標として述べ、残っているバジェットで次の変更を機能にするか修復にするかを決めます。慎重さをめぐる議論を、エンジニアリングとプロダクトの双方が読める数値へ変換する仕組みです。

  • デリバリー経路上のシークレット

    認証情報をリポジトリ、イメージ、ビルドログから遠ざけ、長期の鍵ではなく短命で権限の狭い認証情報をパイプラインに発行し、ローテーションを、インシデント中に初めて試みるものではなく日常の作業にします。

  • ビルドとサプライチェーンの健全性

    依存関係の固定、何をどのコミットからビルドしたかを記録する来歴、イメージスキャン、そして脅威モデルが求めるなら署名です。広い権限を持つパイプラインは組織内で最も価値の高い標的の一つでありながら、最も守りが薄いことがよくあります。

  • インシデント対応と学習

    役割と単一の連絡経路を定めてインシデントを進行させ、その後、責任追及を伴わない振り返りを行って、担当者の決まった具体的な変更を生み出します。「もっと注意しよう」で終わる振り返りは、原因を特定したのではなく願望を記録しただけです。

背景

技術エコシステム

DevOpsエンジニアリングで一般的に用いられる技術を以下に示します。この一覧は職種として実践されている領域の全体像を説明するものであり、特定のエンジニアが扱う技術についての主張ではありません。パイプラインの設計、デプロイ戦略、アラートの判断は、ツール名から想像されるよりはるかに容易にツール間を移ります。

継続的インテグレーションとデリバリー

  • GitHub Actions
  • GitLab CI
  • Jenkins
  • CircleCI
  • Argo CD
  • Flux

コンテナとオーケストレーション

  • Docker
  • Kubernetes
  • Helm
  • Podman
  • containerd

インフラと構成管理

  • Terraform
  • Pulumi
  • Ansible
  • Packer
  • Kustomize

監視とアラート

  • Prometheus
  • Grafana
  • Alertmanager
  • Datadog
  • PagerDuty

ログとトレース

  • OpenTelemetry
  • Loki
  • Elastic Stack
  • Jaeger
  • Sentry

シークレットとサプライチェーン

  • HashiCorp Vault
  • SOPS
  • Sigstore
  • Trivy
  • Dependabot

スクリプティングと自動化

  • Bash
  • Python
  • Go
  • Make
  • jq

Working model

この役割がお客様のチームとどう協働するか

エンジニアはお客様のチームの中で、お客様の優先順位と基準に沿って業務にあたります。日々の開発の方向性はお客様が決め、Talent.IDは雇用に関する責任を担います。下記の分担が取り決めのすべてです。

お客様が担うこと

  • プロダクト
  • 事業の優先順位
  • ロードマップ
  • アーキテクチャ
  • スプリントの優先順位
  • エンジニアリング標準
  • 日々の技術的な協働

Talent.IDが担うこと

  • 雇用関係
  • 給与支払い
  • 従業員福利厚生
  • タレント管理
  • 継続的な従業員関係

ご契約から参画までの流れ

想定される協働イメージ

実際の進み方の一例

協働のかたちをご理解いただくための想定シナリオです。実在のお客様や完了した案件を示すものではありません。

課題
あるエンジニアリングチームは、着実に開発を進めているのにリリースが遅いままです。デプロイは日程を決めて行われ、一部は手作業で、事前の予行演習を伴います。環境は互いに離れてしまい、ステージングでの検証が本番の挙動を予測しなくなりました。チームは何を変えるべきか分かっていますが、ロードマップが続く中でそれに取り組む余地がありません。
進め方
増強された開発体制は、チームが既に運用しているプロセスの中で作業します。使っているブランチモデル、チームが守るレビューの慣習、事業が求める変更管理、そして自分たちの計画で決めた優先順位です。パイプラインとデプロイの作業は、最後に引き渡すのではなく、あとで保守することになるエンジニアと並んで進めます。
チームにもたらされるもの
チームは、アーキテクチャとリリース方針の決定権を保ったまま、先送りしてきたデリバリーの作業に取り組む余地を得ます。プロセスがどうあるべきかは、それを運用するエンジニアが決めることです。

よくあるご質問

よくあるご質問

DevOpsエンジニアとプラットフォームエンジニアは何が違いますか
DevOpsエンジニアが扱うのは変更の流れです。コミットが本番へ至る経路と、そこから返るフィードバックであり、通常はデリバリーチームの内側か、その隣で働きます。プラットフォームエンジニアは、他のエンジニアに向けた社内プロダクトを作ります。セルフサービスの窓口と、その上を通る十分に支えられた経路であり、下に何があるかを理解せずに組織の他の部分が利用できるものです。違いは、対象読者と成果物です。DevOpsの仕事は、変更がどれだけ安全に、どれだけ頻繁に利用者へ届くかで評価され、プラットフォームの仕事は、他のエンジニアが誰にも尋ねずに必要なものを得られるかで評価されます。
DevOpsエンジニアとクラウドエンジニアはどう違いますか
クラウドエンジニアの担当分野はプロバイダー層です。アカウントとネットワークの構成、アイデンティティと権限、マネージドサービスの選定、リージョン障害時にもシステムを維持する仕組み、そして環境全体の運用費用です。DevOpsエンジニアの担当分野は、クラウドかどうかを問わず、既に存在するインフラの上で動くデリバリープロセスです。小さな組織では一人が両方を担うのが一般的ですが、環境が大きくなると分かれます。プロバイダーの深さとデリバリーの深さが、一つの職務に無理なく収まらなくなるからです。
DevOpsは職種ですか、それとも文化ですか
両方であり、その緊張は言葉の綾ではなく実在します。もともとの主張としては、責任の分け方を指します。二つの集団のあいだに壁を置くのではなく、同じ人がソフトウェアを作り、動かすということです。職種名としては通常、責任の共有を実務的に成り立たせる自動化を専門とするエンジニアを指します。責任の分け方を変えないまま肩書きだけを採用すると、壁は新しい場所に建て直され、その向こう側に一人が立つことになりがちです。
監視と可観測性は何が違いますか
監視は、誰かがあらかじめ問うと決めた問いに答えます。キューは伸びているか、エラー率は閾値を超えたか、ディスクは埋まりつつあるか。可観測性は、誰も予期しなかった問いを後から立てられるというシステムの性質で、通常はトレース、構造化イベント、そして事後に切り分けられる高カーディナリティの属性によって支えられます。監視は何かがおかしいことを教えます。可観測性が必要になるのは、原因が誰もダッシュボードを作らなかった条件の組み合わせである場合で、難しい障害の多くはそれに当てはまります。
DevOpsエンジニアはオンコールに入るべきですか
通常は入るべきですが、一人でというのは望ましくありません。呼び出しを一度も受けないエンジニアは、アラートを誠実に保つためのフィードバックを失い、やがてデプロイは快適でも運用は不快なシステムを作るようになります。逆に一人だけが受け続けると、その人が組織で唯一の「仕組みの記憶」になり、静かに膨らむ集中リスクになります。より健全なのは、サービスを作った人たちをそのローテーションに入れ、デリバリーの専門家が全員分を肩代わりするのではなく負荷を分かち合う形です。
この職種がチケットの待ち行列になると、なぜうまくいかないのですか
依頼が起きた理由をなくすことではなく、依頼を閉じることに最適化されてしまうからです。環境の申請、アクセスの申請、パイプラインの修正を一件ずつ処理している人には、それらを不要にする余地がなく、待ち行列は片付く速さより速く伸びます。この職種から成果を得ている組織は、繰り返される依頼を設計上の欠陥として扱います。それは、待ち行列をさばく手を止めて修正に充てる許可を、誰かに与えるということです。
DevOpsエンジニアは既存の開発チームとどのように働きますか
御社のデリバリープロセスの内側で働きます。御社のパイプライン、ランブック、変更管理、オンコール体制であり、優先順位付けと日々の作業の方向づけは御社のエンジニアが行います。プロダクトの意思決定、ロードマップ、アーキテクチャ、エンジニアリング標準は御社のものであり続けます。雇用主はTalent.IDです。雇用関係、従業員福利厚生、給与支払い、タレント管理、そして継続的な従業員関係は当社が担い、今後も担い続けます。

チームに必要なことをお聞かせください

どこに不足があるのか — 業務内容、技術スタック、チームの進め方 — をお聞かせいただければ、対応可能な範囲をお伝えします。ご支援が難しい場合は、その旨も率直にお伝えします。