DevOps
ジャバ―ド先生!!大変だぁ!!
ことりん君、今日もいつも通りにぎやかだね!今日はどうしたんだい?
ちょっとたぬきさんとこでさ!あの人とこの人が…!なんかあれらしくて…!…とにかく大変なんだ!!
ことりん君、ちょっと何言ってるか分からないので、ゆっくりひとつずつ話してくれる?
うん、よく覚えているよ。
でね、たぬきさんのところの開発チームと運用チームがケンカしちゃったんだって!そのケンカが原因で開発がストップしちゃってるらしいんだ!いったい何が起きているんだろう…
ことりん君、ケンカまではいかないけど、開発チームと運用チームの衝突って珍しいことじゃないんだよ。
え、そうなの!?いい大人でもぶつかっちゃうことがあるの?
ことりん君、いつになく正論だね。開発チームと運用チームってミッションが違うんだよ。1つのアプリケーションがあったとしよう。開発チームは、そのアプリケーションをより便利に成長させるために、どんどん機能を追加していくのがミッションなんだ。一方、運用チームっていうのは、アプリケーションを安定的に稼働させるために不具合を修正したりするのがミッションってわけだ。
なるほどなるほど。
シンプルな言い方をすると「どんどん新しい変更を行うチーム」と「できるだけ変更をしないようにするチーム」だから、当然、相容れないことがでてくるよね。これが衝突の原因になることがあるんだよ。
開発チームと運用チームは見ているところが違うんだね。でもなんか納得いかないな…。同じ会社で、同じアプリケーションを開発しているのに、違う方向を向いて仕事しているのってなんかおかしくない??ホントは力を合わせるべきなんじゃないのかなぁ…。
ことりん君、今日はいつになく鋭いね。本当にことりん君がいう通りだよね。アプリケーションを使うユーザーにとっては、開発チームの意見とか運用チームの主張なんて、全く意味がないものだよね。それは確かなんだけど、エンジニアだって人間だから、こういうことも起こるんだ。だから、最近はこれを防ぐために、DevOps(デブオプス)という手法に力を入れている企業が多いんだよ。
新しい言葉だね!DevOpsってなに??
DevOpsは、開発を意味する「Development」と運用を意味する「Operations」を組み合わせてできた言葉だよ。実際のアプリケーションやサービスには、今までお話してきたような開発チームや運用チームだけではなく、たくさんの人たちが関係しているんだ。そういった関係者が、それぞれバラバラの方向を向いて仕事をしても良い結果は生まれないよね。
うんうん。そう思う!ボクが気になっていたところだ!
そこで、立場の違いはあれど、関係者は全員常にビジネスを意識して、より最大限の価値を生み出すように協力しましょうっていうのがDevOpsの考え方なんだ!DevOpsという開発手法を取り入れることで、より品質が高いサービスを、よりスピーディーに実現することができるんだ!
ジャバ―ド先生ありがとう!DevOpsってとっても大事だね!またひとつ賢くなったよ!じゃあまたね!!
あっ、ことりん君、たぬきさんのこと相談してたんじゃ…。ってもうことりん君行っちゃった…
1分で分かる!DevOpsの基礎知識
DevOpsとは、「開発」と「運用」について、それぞれを別の作業ではなく、1つの作業とみなし、あらゆる作業を最適化・効率化することで、より高速にサービスをリリースしていくという考え方です。
DevOpsという言葉自体は、なにか特定の技術を指すわけではなく、考え方や手法といった概念的なものです。このDevOpsを実現するためには、体制・開発プロセス・ツールといった要素を見直し、うまく活用する必要があります。
DevOpsに関係があるエンジニア
前述したように、DevOpsは特定の作業を担当するエンジニアのためのものではありません。設計を担当するエンジニア、製造を担当するエンジニア、品質を担当するエンジニア、運用や保守を担当するエンジニア…。すべてのエンジニアの関係なくしてDevOpsを実現することはできません。
DevOpsを使うエンジニアの特徴と在籍業界
繰り返しになりますが、DevOpsは特定のエンジニアのためのものではありません。これと同じように、特定の業界のためのものでもありません。ビジネスのスピードが急激に高速化している現在、これまでのような「開発」と「運用」が個別の組織として活動するような古い世代の開発では、競争に打ち勝つことはできません。そのため、どの業界も共通して取り組むべき課題です。
なお、現時点では比較的ビジネスのスピードが速い、Web業界、ゲームなどのスマホアプリ業界などはDevOpsに取り組んでいる率が高いです。
DevOpsの代表的なツール
DevOpsを実現するために重要なものの1つがツールです。DevOpsを実現するためにはさまざまなツールを活用するケースが多いです。それらのツールは一定の学習コストがかかるため、候補者にあらかじめツールに関するスキルを確認しておくと良いでしょう。ご参考までにDevOpsに関連するツールを幾つかご紹介しておきます。
- Jenkins(ジェンキンス)
定型のタスクを自動化するためのツール。プログラムを変更→テストコード実行→エラーがなければデプロイ→エンジニアに通知といった作業をすべて自動化できる。
- Git (ギット)
バージョン管理システム。プログラムの変更履歴を管理するためのツール。
- Docker(ドッカー)
コンピュータを仮想的に管理できるツール。システム構成の情報などをあらかじめ定義化しておくことで、必要な時に迅速にシステムを構築することができる。
- Backlog(バックログ)
課題を管理するためのシステム。開発や運用で発生したタスクはすべてこのツールで管理し、タスクの内容、進捗などを可視化することができる。
求人のポイント
求人を作成する時は、下記の内容を求人に入れるとよいです。
1システム(サービス)の詳細
※特にそのシステム(サービス)をなぜ作っているのかを熱量をもって記載する。
2開発環境
3現在のエンジニア組織の体制
4現行システムの課題と募集の背景
5求められる業務と期待値
6エンジニアとしてのスキルアップ支援制度の有無と詳細
7エンジニアチーム内での相互成長のための仕組み(勉強会やLT会など)の有無と詳細
8選考フロー
9待遇
10キャリアパス
よりよい採用に役立つ予備知識
DevOps関連の資格
DevOps関連の資格としては、AWS社が主催しているAWS Certified DevOps Engineer – Professional や、Google社が主催しているProfessional Cloud DevOps Engineerなどがあります。
DevOpsの進化系
DevOpsをさらに進化させたものとして、DevSecOpsがあります。DevSecOpsとは、これまでご説明してきたDevOpsに加えてSecurityの概念を取り入れたものです。皆さんもご存じのとおり、昨今では情報システムのセキュリティが大きなトラブルの種となるケースが増加しています。DevSecOpsは、これまで場合によっては軽視されることもあったセキュリティについて、重要な要素ととらえ、一緒に取り組んでいこうというものです。