ゼロからDevOpsエンジニアへ - あなたのバックグラウンドに合わせたDevOpsロードマップ 🔥
DevOpsプロフェッショナルとして時々、初心者の視点からDevOpsに入るってどういうことかを忘れがちです。だから、もし自分がゼロからまたスタートするなら、どのルートを取るかを概説した記事を作成したいと思いました。0️⃣ これまでの知識があるなら、最も効率的な道筋は何か。
つまり、DevOpsエンジニアになるにはどんなステップを踏むべきか、そして何をどんな順序で学ぶべきかです。✅
DevOpsのロードマップについての動画は既に作りましたが、そこではDevOpsを構成するコンセプトやツールについて説明しましたが、今回の動画では異なる視点からアプローチし、もしゼロから始めるとしたら、どうやってDevOpsエンジニアになれるかをお見せしたいと思います。
そして、DevOpsに移行するにあたって最も一般的なバックグラウンドの方々にもっと個別化した内容を作りたかったんです。そしてLinkedInでの皆さんの返信に基づき、最も一般的なバックグラウンド5つを選びました:
- システム管理者
- ソフトウェア開発者
- テスト自動化エンジニア
- ネットワークエンジニア
- IT知識がほとんどない、または全くない人たち
なので、これらのバックグラウンドの1つを持っている場合、このブログ投稿はあなたにとって非常に役立つものになるはずです。あなたにとってのDevOpsへの個別ルートを示します。さぁ、始めましょう! 🙌
これは私の新しいYouTube動画の書かれたバージョンです ✍️
DevOpsが何かわからないなら、この動画を先にご覧ください:
👉 🎬 DevOpsとは?
まず最初に、DevOpsのプロフェッショナルになるためにどんなスキルが必要かを明確にしましょう。🤔
1 - ソフトウェア開発の基本
開発チームと密接に協力して彼らのタスクを改善し、自動化するために、以下のコンセプトを理解する必要があります:
- 開発者がどのように働いているか
- どんなワークフローを使っているか
- 機能開発においてどう協力しているか
- アジャイルやスクラムのような現代的なプロセス
- 彼らが使用しているGitワークフロー
- ソフトウェア開発ライフサイクルがアイデアからコード、最終的にエンドユーザーにリリースするまでをカバーしていることを一般的に理解する
ここで重要なのは、ソフトウェア開発者である必要はないし、アジャイルやスクラムのプロセスを実行する必要もありません。高いレベルで概念的にこれらのことがどのように機能しているかを理解する必要があります。
2 - ソフトウェアデプロイメント
次はソフトウェアデプロイメントです。機能が開発されたら、それをエンドユーザーにリリースする必要があります。つまり、アプリケーションが実行され終端ユーザーに利用可能になる環境を用意する必要があるということです。
2.1 - オペレーティングシステム&Linux基本
そしてDevOpsエンジニアとして、環境を次のように準備し、維持する方法を知る必要があります:
- 環境を準備して
- 維持する方法
これには、仮想マシンの作成、主にLinuxオペレーティングシステムを使ったサーバー管理の一般的な知識、ソフトウェアのインストール、パッチの当て方、オンプレミスとクラウド上でのネットワーキングの設定などが必要です。
2.2 - Dockerを使ったコンテナ
そしてもっと現代的なインフラ概念の一環として、コンテナの使用方法と最も人気のあるコンテナ技術であるDockerについて理解する必要があります。
2.3 - Kubernetesを使ったコンテナオーケストレーション
そして、数十または数百のDockerコンテナを使用するプロジェクトでは、現在最も人気のあるKubernetesのようなコンテナオーケストレーションプラットフォームの使用方法を知る必要があります。
これらのツールは、オンプレミスでもクラウド上でも使用できます。
2.4 - クラウド - 最も人気のあるクラウドプロバイダーの1つを学ぶ
AWSのようなクラウド上で作業している場合、現在最も人気があり最も利用されているクラウドプラットフォームであるため、AWS固有のサービスやAWS上のデプロイメントインフラの管理方法を知る必要があります。
出典:Statista Cloud Infrastructure Market Share
3 - CI/CD - 継続的インテグレーションと継続的デリバリー
これらすべてのピースをまとめるもの、そしてDevOpsプロセスの中心がCI/CDパイプラインです。
ソフトウェア開発とデプロイメントをどのようにつなげるのでしょうか。言い換えると、ソフトウェアが開発されるとき、どのようにして開発された機能をデプロイするのでしょうか?
それはデプロイメント環境に単にデプロイするだけではありません。なぜなら、人間は間違いを犯します。知識不足や単なる手違いによってです。したがって、デプロイメントの前に多くのゲートキーパーを加えます。デプロイされたコードは、最終環境に許可されるためには、これらさまざまなゲートチェックを通過する必要があります。これがDevOpsのCI/CDパイプラインの目的です:
- コードのテスト
- パッケージング
- エンドユーザーに提供するために最終環境までデプロイメント
それではそれらのゲートキーパーとは何か?コード品質のテスト、コードロジックのテスト、既存のコードを壊さないことのテスト、セキュリティ問題のチェック、期待どおりの機能を果たしているかのテストなどです。ですので、このCI/CDパイプライン全体を実装するツールは非常に重要なスキルセットです。
したがって、Jenkins、Gitlab CI/CD、GitHub Actions、Circle CIなどのCI/CDツールを知ること、そして何よりも、これらのツールを他のテクノロジーと統合して、テストしたり、コードをデプロイしたりする方法を知ることは非常に重要です。
4 - モニタリングと可観測性
ここでも、私たちは人間であり、最も慎重な対策と広範なテストをしても、デプロイメントのあらゆる側面を100%テストすることはできないということを前提としています。🤷🏻♂️ だからこそ、本番環境でバグが発生することがあるのですが、それは本番で発生したバグや問題に対処する計画があれば問題ありません。
再び、DevOpsのスキルセットの一部として、本番環境で発見された問題を扱うプロセスを作成することが必要です。つまり、「モニタリング」と「可観測性」というものです。
継続的デプロイメントの最終段階では、コード変更をデプロイした後、私たちは「やったぞ、これで終わりだ」と言わず、起こるかもしれないことをこれからしっかりと観察し、監視する必要があります。ユーザーがエラーに遭遇した場合、何かがクラッシュしたり、機能しなくなったりしたとき、私たちはこれを積極的に修正する必要があることを把握します。従って、デプロイメントの数時間後や数日後は、本番環境で何らかの問題が発生するかどうかを積極的に確認することになるでしょう。
👉🏼 🎬 Prometheus Monitoring explained
5 - 自動化
最後に、本当にDevOpsを掌握するための最後のピースは自動化です。👏 基本的には、他のエンジニアの仕事と自分の仕事のほとんどを自動化してしまいます。特に繰り返し同じタスクを行う必要がある領域での自動化です。
例をいくつか挙げましょう。新しいコードがリリースされるたびに:
- 必ずあなたのアプリケーションをテストする必要があります
- 常にセキュリティをチェックする必要があります
- 常にアプリケーションの変更をパッケージングして
- デプロイする必要があります
これらのタスクは自動的に行われるべきで、したがって、開発者やテストエンジニアが書いた自動化されたテストを確実に実行し、自動化されたセキュリティチェック、品質チェックを持ち、終端環境にコードをデプロイするスクリプトや自動化コードを持つべきです:
ですので、アプリケーションを自分のマシンからローカルでデプロイするのではなく、CI/CDパイプラインが自動的にデプロイするわけです。
こちらの記事はdev.toの良い記事を日本人向けに翻訳しています。
https://dev.to/techworld_with_nana/from-zero-to-devops-engineer-devops-roadmap-for-your-specific-background-4h8n