松原です。
先日、Developers Summit 2023 Inspiredイベントにて「開発者のみんな!DevSecOpsエンジニアを目指そうよ!」をテーマにお話ししました。
今回はその登壇内容の伝えたいところだけピックアップして書きたいと思います。
DevOps / DevSecOps とは
まずは認識合わせのためにざっくりと。
DevOps
開発の手法の一つで、
- 継続的インテグレーション(CI)
- 継続的デリバリー(CD)
- 環境プロビジョニング(Infrastructure as Code)
といったことなどを導入して行くことにより、ビルド及びテストを安定的にスピーディーに行うために自動化を行い、開発 (Development) と運用 (Operations)を連携して開発する手法です。
DevSecOps
DevOpsのワークフローにセキュリティ診断などを組み込み、よりセキュアにしていく手法です。
オンプレでのインフラエンジニア
分類すると大きく分けると2つになると思っています。
サーバーエンジニア
- サーバー機器の調達や配線といった物理作業
- OS・ミドルウェアのセットアップ
ネットワークエンジニア
- ネットワーク機器の設置
- ルーターによるコントロール
クラウドでのインフラ業務
サーバーエンジニア
- インスタンスはコンソールでポチポチするだけ
- OS・ミドルウェアのセットアップは相変わらず必要
ネットワークエンジニア
- ネットワーク機器の設置の必要はなし
- ルーター設定などもコンソールでポチポチするだけ
クラウドインフラエンジニアとしてやっていくべきこととは
つまりは、オンプレでのインフラエンジニアとしての業務の大半は、クラウド側では自動的に設定されたり、コンソールでポチポチすることで構築ができてしまいます。
ベンチャー企業などで働いていて、サービスを1から作成している多くのバックエンドエンジニアの方々なら、クラウド環境では十分インフラ構築できるだけの知識はついているんじゃないかと思っています。
もちろん、ルータの知識や物理の知識は、コンソールのポチポチ作業も理解を持って作業にあたれるのであったほうがよく、複雑な構成のシステムを組むことがあれば必要になってくる知識ではあります。
ただ多くのプロジェクトは、LAMPk環境だったりと複雑ではないことが多いと考えていて、クラウド環境でのインフラエンジニアとしてやっていくためには、また別の領域の知識を広げていかなければならないと考えています。
それは各プラットフォーム毎にかなり多くのマネージドサービスがあり、プラットフォーム毎のサービスの違いなどを把握し、プラットフォームの選定やサービスの選択、時にはマルチクラウドとしてより良い構成となるように設計する知識や技術が必要となり、またプロジェクトによっては予算が厳しい場合等あるので、マネージドサービスと代替となるサービスの構築といったことも必要となると思っています。
これってつまり、サービスを組み合わせパイプラインを作り、安定的にスピード感を持ってサービスのリリースを行なっていく部分でDevOpsの概念で必要となる部分と同じなのではないかと思います。
ジョブチェンジメリット
オンプレ環境はまだまだあるのでインフラエンジニアもまだ需要はあるが、DXと言われているのでどんどんクラウド環境への移行は進んでいると感じています。
またクラウドのマネージドサービス、特にサーバレスなサービスなどを使えば開発エンジニアのみでアプリケーションのローンチも可能になるので、サーバを構築するだけではなく、パイプラインの構築やらプラスαできるDevOpsエンジニアというものは重宝されます。
イメージとしてはインフラエンジニアの上位職種のため、給与もよくなりやすいです。
その先にはプロジェクト全体構成のコーディネイト力や自動化を進めていき、自己学習の確保ができるようになると思います。
DevOps/DevSecOpsで必要なスキル
必要なスキルは色々あります。
- いくつかの言語の知識
- OSの知識
- ネットワークの知識
- IaCプロビジョニングツール
- CI/CDツール
- モニタリング
- 脆弱性診断ツール
具体的な内容についてはロードマップのサイトがあるので確認してるのが良いかもしれません。
https://roadmap.sh/devops/