96
37

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

こんにちは。
株式会社 PRUMのmasaです。

今日はITサービスの"運用"について、初心者エンジニア、プログラミング初学者向けに記事を書きました。

この記事を読むことで、リリース後のシステムがどう守られているかを知り、保守しやすいコードを書く視点を得られると思います。興味があればぜひ読んでいただけると嬉しいです。

「僕は開発者。運用の知識なんて必要ない」……そう思っていませんか?

エンジニア1年目やエンジニアを目指して勉強していると、「いかに高度なコードを書くか」「いかに新しい技術を使いこなすか」に目が向きがちですよね。「運用なんて、どこか別の部署の人がやる仕事でしょ?」と思う気持ちがあるかもしれません。

でも、現場を経験して思うのは、 「開発者は運用の知識や運用の体験が必要」 ということです。

なぜなら、運用を知ることで「保守しやすいコード」が見えてくるからです。

  • 「エラーが起きた時、誰でもすぐ原因がわかるように、親切なログを出しておこう」
  • 「後から設定を変えやすいように、定数は環境変数に切り出しておこう」
  • 「もし途中で処理が止まっても、データが壊れないように設計しよう」

こうした「運用現場で愛される行動をする」ためには、運用の視点が欠かせません。「自分は開発者だから関係ない」と思っている方にこそ、ぜひこの先の運用の知識の一端を覗いてみてほしいです。

1. ITサービスマネジメントの概要と重要性

結論から言うと、システムは完成して終わりではなく、 安定して稼働し続けて初めて価値を生む ということです。

僕たちが開発したアプリを、利用者がいつでも安心して使い続けられるように守り、育てていく活動を「ITサービスマネジメント」と呼びます。

ITサービスマネジメントとは?
ITIL(アイティル:Information Technology Infrastructure Library)などのベストプラクティスに基づき、利用者のニーズに合わせてITサービスを適切に提供し、その品質を維持・改善し続けるための仕組みのことです。

動かないシステムの価値はゼロ

実務1年目やプログラミングの学習中は「ローカルでアプリが動いた!完成!」で満足してしまいがちですよね。僕は1年目の頃そうでした。でも、現場ではそうはいきません。

例えば、みなさんが一生懸命勉強して、Spring Boot(Javaのフレームワーク)で綺麗にコードを書いてタスク管理アプリを作ったとします。しかし、リリース翌日にAWSのサーバーが落ちてしまい、誰もログインできなくなったらどうなるでしょうか。

利用者にとっては、コードが美しいかどうかは関係ありません。「使いたい時に使えない」という一点だけで、そのシステムの価値はゼロになってしまいます。

だからこそ、現場では「どう作るか」と同じくらい「どう動かし続けるか」が重視されています。

2. 障害対応における「インシデント管理」と「問題管理」の違い

実務に入ると、リリース後に何らかのトラブル(障害)に遭遇することがあります。この時、運用の視点では 「一時的な復旧」「根本的な解決」 を明確に分けて考えます。

それが「インシデント管理」と「問題管理」です。

インシデント管理(とにかく直す)

インシデント管理の目的は、 「サービスを1秒でも早く目的のサービスレベルまで回復させること」 です。
「再起動」や「前のバージョンへの切り戻し」などの応急処置がこれに当たります。利用者の困っている時間を最小限にすることが最優先です。

問題管理(原因を絶つ)

主にサービスが復旧した後に始まるのが、問題管理です。目的は、 「なぜトラブルが起きたのかを突き止め、二度と起きないようにすること」 です。
「実は特定の操作で無限ループに入ってメモリを使い切るバグがあった」という真実をログから見つけ出し、コードを修正する、開発プロセスを見直す、チェック体制を変えるなどにより再発を防ぎます。

現場では「スピード重視の復旧」と「じっくり取り組む根本解決」の両輪でシステムを守っていることが多いです。これを意識すると、「まずはサービスを止めないために何ができるか?」という視点でコードが書けるようになります。

3. 運用の現場では「新しいコードや設定変更=システムを壊す脅威」と考える

開発の現場にいると、「新しい機能ができた!早くリリースしよう!」とテンションが上がります。でも、 「運用の現場」 の視点から見ると、これはすごく怖いことなんです。

運用の最大のミッションは 「システムを安定して動かし続けること」 です。運用担当者にとって、新しいコードや設定のアップデートは、安定しているシステムを壊しかねない「脅威」になります。

だからこそ、本番環境を安全に守るための 「構成管理」「変更管理」 という管理方法があります。

「今の状態」を完璧に把握しておく(構成管理)

運用の現場では、障害が起きた時に「あれ?本番サーバーのDBってどのバージョンだっけ?」となっているようでは命取りになります。

構成管理とは、システムを構成するすべての要素(サーバーのスペック、OSのバージョン、ネットワークの設定など)の「現在の正しい状態」を台帳のように管理し、常に把握しておくことです。これらはシステムを安定稼働させるのに必要な情報になります。

「変更」という脅威をコントロールする(変更管理)

開発側から「ここをアップデートしてほしい」と依頼が来た時、運用チームはそのまま素直に本番環境へ反映したりはしません。

  • 「この変更を入れることで、他の機能に予期せぬ影響は出ないか?」
  • 「もしアップデートに失敗したら、どうやって元の状態(構成管理の記録)に戻すのか?」
  • 「ユーザーへの影響が少ない深夜帯に作業すべきではないか?」

こういったリスクを事前に徹底的に調査し、安全だと承認されたものだけが本番環境へ行くことを許されます。

運用の現場では、「いかに変化をコントロールして安定を守るか」に注力しています。この運用側の視点を知っていると、開発者も「運用チームが安心して本番に適用できるような、安全で切り戻ししやすいコードを書かないと」といった意識が持てるようになります。

さいごに

運用を知ることは「保守しやすいアウトプットとは何か」を考える視点に繋がります。いきなり全部理解しなくてOKです。開発の先にある運用の世界を少し意識するだけで、みなさんの視野はグッと広がると思います。一緒に一歩ずつ成長していきましょう!


PRUMのエンジニアの95%以上は未経験からの採用です。
よければコーポレートサイトにも遊びに来てください。
コーポレートサイト

エンジニアの方に役立つ記事をまとめたサイトも運営しています。もしご興味あれば覗いてみてくださいね。
エンジニアに役立つ記事サイト

96
37
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
96
37

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?