見出し画像

DevOpsエンジニアになれますか?

* どのツールを学べばよいでしょうか?
* ベストプラクティスはありますか?
* MavenやJenkinsは学ぶべきでしょうか?
* DockerやKubernetesはどうですか?
* インフラ構築の自動化はDevOpsエンジニアの作業範囲ですか?
* ChefやPuppetやAnsibleを学んだ方が良いでしょうか?


1 プログラミング言語を学ぶ

* Java
* Python
* JavaScript
もしこれらの言語の経験がなくても、下記のオンラインコースで学ぶことが可能なので心配はいりませんが、これらの言語の内最低でも1つは習得しておくことを強くお薦めします。


Java

あなたがJavaを学びたいなら、UdemyのComplete Java MasterClassは素晴らしいコースです。Java11に対応しています。


python

あなたがPythonを学びたいなら、UdemyのComplete Python BootCampは私のお気に入りのコースです。Pythonの最もポピュラーなバージョンであるPython3を学べます。

javaScript

あなたがJavaScriptを学びたいなら、UdemyのMosh Hamdani’s JavaScript Basics for Beginnersを見過ごしてはなりません。
もしあなたが無料のコースから学ぶことを好む場合は、私のJava、Python、JavaScriptに関する無料コースのリストをいつでもご参照ください。

OSの様々なコンセプトを理解する

ここはOps(運用)の領域です以前は、OSやハードウェアに関してはシステム運用管理者やサポート担当者だけが責任を持っていましたが、DevOpsにおいては、開発者にもこの分野の知見が要求されます。

このロードマップが提示しているように、最低でも「プロセス管理」「スレッドと並行性」「ソケット」「I/O管理」「仮想化」「メモリストレージとファイルシステム」に関しては知っておく必要があるでしょう。
我々のほとんどはOSにはLinuxを使用していますので、Linuxを良く知るためにUdemyのLinux Administration BootCampで学ぶことをお薦めします。
あなたが無料のコースから学ぶことを好む場合は、私のfree Linux coursesのリストをご参照ください。

サーバー管理を学ぶ

Linuxプラットフォームを使用するDevOpsエンジニアにとって、ターミナルにおけるコマンドの使用法に習熟することは非常に重要です。
BashやKsh等のLinuxシェル、あるいはfindやgrepやawk、sedやlsof、そしてnslookupやnetstat等のネットワークコマンド等の知識は不可欠です。
あなたがこれらのツールやコマンドの知識をブラッシュアップしたいなら、PluralsightのLinux Command Line Interface (CLI) Fundamentalsは役に立つでしょう。
Pluralsightは開発者にとってのNetflixのようなものです。既に6000以上の、最先端テクノロジーに関するハイクオリティなオンラインコースが提供されており、それをいつでもどこでも学ぶことが出来ます。(私は主に旅行や通勤の際に学んでいます)
シェルスクリプティングに関する他のコースも知りたい場合は、私のbest courses to learn shell scriptingをご参照ください


ネットワークとセキュリティに関して学ぶ

孤独の時代は過ぎ去り、今日の世界では、全てのものがつながっているので、そのことがネットワークとセキュリティの重要性を高めている。

良いDevOpsエンジニアになりたければ、基本的なネットワークとセキュリティのコンセプト、例えばDNS、OSI参照モデル、HTTP、HTTPS、FTP、SSL、TLS等に関しては必ず知っておく必要があります。
これらに関する知識をアップデートしたいなら、Ed LibermanによるPluralsightのTCP/IP and Networking Fundamentals for IT Prosをお薦めします。


ミドルウェアを理解しセットアップする方法を学ぶ

DevOpsのチャンピオンとして、サーバになにがセットアップされているのか、どのようにセットアップすれば良いのかを知る必要があります。それによってやっと「自動化」について考えることが出来るのです。


一般的に、DevOpsエンジニアはIISやApache、Tomcat等のWebサーバのセットアップ方法を把握しておく必要があります。
キャッシュサーバ、ロードバランサ、リバースプロキシ、ファイアウォールに関しても同様。

あなたがこの分野に関する初学者なら、Colt SteeleによるUdemyのThe Web Developer Bootcampをお薦めします。

インフラのコード化を学ぶ

この分野はおそらくDevOpsエンジニアにとって最重要で、かつ非常に広大な領域でもあります。
DevOpsエンジニアとして、DockerやKubernetes等のコンテナ技術、AnsibleやChefやSaltやPuppetのような構成管理ツール、TerraformやCloudFormationのようなプロビジョニングツール等に関しては必ず知っておく必要があります。

以下は、これらのツールを学ぶ上での私のお薦めオンラインコースの一覧です。
もしあなたがDockerを学びたいなら、UdemyのDocker Mastery: The Complete Toolset From a Docker Captainはその最初のコースとしてベストでしょう。DevOpsエンジニアが知っておくべきツールに関して包括的に網羅されています。
もしあなたがKubernetesを学びたいなら、Learn DevOps: The Complete Kubernetes Courseをお薦めします。Kubernetesにおけるビルドとデプロイ、そして管理手法に関して学ぶことが出来ます。
もしあなたがChefを学びたいなら、Chef Fundamentals: A Recipe for Automating Infrastructureよりも優れたコースは他にありません。Chefを学びたいならおそらく現時点でこのコースが最良でしょう。
Dockerの学習に関してさらに他の選択肢を知りたい方は10 essential courses for DevOps Engineerをチェックしてみてください。

C L/CDツールを学ぶ

* CI:継続的インテグレーション
* CD:継続的デリバリー

これもまたDevOpsの達人やDevOpsのチャンピオンにとっては非常に重要な分野です。(例えばCIやCDのパイプラインの構築等)
CI/CDの領域には、Jenkins、TeamCity、Drone等のたくさんのツールがありますが、私は少なくとも「Jenkins」を学んでおくことを強くお薦めします。
Jenkinsは広く使われており、現在のマーケットではおそらく最も成熟したCI/CDツールです。
もしあなたがJenkinsについて学びたいなら、UdemyのMaster Jenkins CI For DevOps and Developersよりも素晴らしいコースは他にありません。このコースは単純に言って最高のコースで、私のJenkinsに関するほとんどのスキルはこのコースで得ました。
無料コースがお望みなら、6 free Jenkins and Maven courses for Java developersをチェックしてみてください。

ソフトウェアとインフラの監視手法を学ぶ

ミドルウェアのセットアップやデプロイメントとは別に、監視もDevOpsの重要な領域です。そのため、DevOpsエンジニアはアプリケーションやインフラの監視方法について学ばなければいけません。
この分野には、例えばNagios、Icing、Datadog、Zabbix、Monit、AppDynamics、NewRelic等の様々なツールが存在します。
これらの中から適切なツールを、会社のニーズに合わせて選択出来るようになる必要があります。

クラウドプロバイダーについて学ぶ

クラウドは非常に重要な分野であり、あなたの会社のサービスは遅かれ早かれクラウド環境に移行することになるので、DevOpsエンジニアにとって幾つかのクラウドプロバイダーとそれに関する輝度知識を学んでおくことは重要である。
AWSは明らかにこの分野のリーダーですが、Google CloudやAzureも徐々に追いついて来ていますし、HerokuやCloud Foundry、Digital Oceanといった他のプレイヤーも存在します。
クラウドについて学び始める際には、UdemyのAWS Serverless APIs & Apps - A Complete Introductionを強くお薦めします。これが現在のベストのコースでしょう。
無料コースがお望みなら、free AWS coursesをチェックしてみてください。

また今後は、専門のSREやインフラエンジニアを雇う余裕のない企業さんでは「バックエンドエンジニアがDevOpsエンジニアも兼ねる」というケースがどんどん増えていくと思うのですが、その際に「アンマネージドなツールやサービス」を使ってしまうと「運用の手間が格段に増えてしまう」という大きなデメリットがありますので、そういう企業さんでは基本的に「クラウドのマネージドサービスだけでインフラを構築するというポリシーを徹底しておく必要がある」のではないかと思います。
ちなみに記事内で最も驚いたのは、Udemyやその他のオンラインコースのDevOps系学習リソースの充実度です。海外ではDevOpsエンジニアが最も高給取りという調査結果もあるようで、それがオンラインコースの充実にも繋がっているのかなと思うのですが、海外と比較すると日本はDevOpsエンジニアの重要度があまり認識されていないようなので、バックエンドエンジニア兼DevOpsエンジニアとしては寂しい限りです(-_-;)


この記事が気に入ったらサポートをしてみませんか?