2019年1月31日
The 2019 DevOps RoadMap
(2018-10-08)by javinpaul
本記事は、原著者の許諾のもとに翻訳・掲載しております。
DevOpsエンジニアになるためのイラストガイド(関連コースへのリンク付き)
DevOpsは今とてもホットなテーマです。多くの友人、同僚、上級開発者である知人がDevOpsのエンジニアとなり自分のいる組織の中で第一人者になろうと一生懸命になっています。
私は DevOps の恩恵を心から認めています。DevOpsはソフトウェア開発とデプロイの改善に直結しているからです。しかし私の限られた経験から言っても、DevOpsのエンジニアになるのは 簡単ではありません。 非常に多くのツールと事例があり、適切な学び方を選ぶのがとても難しいのです。
Javaのブロガー としてよく質問を受けます。例えば、 DevOpsのエンジニアになるにはどうすれば? どのツールを学べば? どんな事例を参考にすれば? DevOpsエンジニアにはMavenとJenkinsがマストですか? DockerやKubernetesはどうなのでしょう? DevOpsのインフラ自動化パートって? Chef 、 Puppet 、あるいは Ansible を習得すべきですか? こういった質問が私のもとへ来ます。
私は自分の少ない経験から何とか答えようとしましたが、分かりやすくて再利用できるような簡潔な書き方ができませんでした。でも、ご心配なく。
本日シェアする優れたリソースがあなたの望むDevOpsエンジニアとなるのに役立ちます。それが 2019 DevOps RoadMap です。
昨日、気ままにネットサーフィンをしていたら、 Kamranahmedse による この 優れたGitHubのページにたどりつきました。それは、フロントエンドの開発者、バックエンドの開発者、フルスタックのWeb開発者、そして忘れてはならないDevOpsエンジニアになるために役立つロードマップの組み合わせでした。
このRoadMapはあらゆる意味で目を見はるもので、 DevOpsエンジニア の役割を明らかにするだけではなく、この分野で習得すべきツールや技術も教えてくれます。
まずロードマップは、感じの良い色合いで視覚的にアピールしてきます(黄色とクリーム色と青いラインは嫌いではありませんよね)。プリントアウトして机にピン止めしておくとすぐに参照できるものです。
ロードマップは何を習得すべきかを教えてくれるという点で優れていますが、習得の方法や習得する場所は教えてくれません。ロードマップを完全なものにするために、有料無料に関わらず、いくつかの有用なオンライン学習コースをシェアしました。ツールや自分の望む分野を学んでスキル改善に役立ててください。
開発者向けThe 2019 DevOps RoadMap
何はともあれ、これが話題にしている2019 DevOps RoadMapです。
出典:kamranahmedse( https://github.com/kamranahmedse/developer-roadmap )
それでは、1段階ずつRoadMapを追っていき、2019年のDevOps指導者となるために基礎的なスキルをどのように習得できるかを見つけていきましょう。
1.プログラミング言語を学ぶ
言うまでもなく、あなたは3つの主要プログラミング言語のどれかを知っていることと思います。3つとは Java 、 Python 、 JavaScript です。
もし知らなくても、自分でプログラミング言語を選んで学ぶ下記のコースを検討できるだろうかという心配はいりません。とはいえ、広い用途のある主要プログラミング言語から少なくとも1つを習得することを強く勧めます。
Java
Javaを学ぶなら The Complete Java MasterClass (完全Javaマスタークラス)がとても優れています。最近Java10向けにアップデートされました。
Python
Pythonをお望みなら、 The Complete Python BootCamp (完全Pythonブートキャンプ)が私のお気に入りです。Pythonの中で最も評判のよいバージョンであるPython3が学べます。
JavaScript
JavaScriptを学びたいなら、UdemyにあるMosh Hamdaniの JavaScript Basics for Beginners (初心者向けJavaScriptの基礎)を忘れないでください。
もっと選択肢が欲しくて、無料のリソースで学ぶことに抵抗がないのであれば、 Java 、 Python 、 JavaScript のそれぞれについて私が作った学習コースのリストをご覧ください。
2. さまざまなOSの概念を理解する
これはOpsに該当するパートです。以前は、単独にサポートされOSやハードウェアについて知識を持つ要員やシステム管理者が担うものでしたが、DevOpsでは開発者も知っておく必要があります。
ロードマップが示すように、少なくともプロセスマネジメント、スレッドと並行処理、ソケット、入出力マネジメント、仮想化、メモリと記憶装置、ファイルシステムについて知っておくべきです。
多くの人はLinuxで仕事をしますので、Linux OSを深く学び理解するためにUdemyの Linux Administration BootCamp (Linux管理者ブートキャンプ)コースをお勧めします。
もっと選択肢が欲しくて、無料のリソースで学ぶことに抵抗がないのであれば、 free Linux courses (Linuxの無料コース)のリストもご検討ください。
3. 端末からの操作を学ぶ
DevOpsエンジニア、特にLinux上で仕事するエンジニアにとって、コマンドライン上に優れたコマンドを入れることが大切です。Bashや Kshといったシェル、更にツールの find 、 grep 、awk、 sed 、 lsof 、そして nslookup とnetstatといったネットワーク関連のコマンドを知っておくことが必須です。
もし、こういったコマンドやツールを復習したければ、Plurasightの Linuxコマンドライン(CLI)の基礎 を受講すべきです。
これは初心者であるかベテランであるかに関わらずLinuxユーザにとって優れた再学習コースです。受講には Pluralsightの会員になる 必要があります。月3,200円または 年間32,500円 の会費がかかりますが、間違いなくそれだけの価値があります。
Pluralsightは開発者のNetflixのようなものです。最新テクノロジーについて6000以上のクオリティーの高い学習コースを設けています。何もかもがあらゆる所で習得できます。私はほとんどを旅行中や通勤中に学びました。
ところで、もっと多くの選択肢から選びたい、シェルのスクリプトの達人になりたいという方は、私の作った best courses to learn shell scripting (シェルスクリプト学習のベストコース)というリストをご検討ください。
4. ネットワーク構築とセキュリティ
スタンドアロンの時代は去り、今の世界は全てが全てにつながり、おかげでネットワーク構築とセキュリティが非常に重要となりました。
優れたDevOpsエンジニアとなるためには、ネットワーク構築とセキュリティの基本的な概念の知識が必要です。例えば、DNS、OSIモデル、 HTTP 、HTTPS、FTP、SSL、TSLなどです。
注釈:基本的な概念を再度学習するのでしたらPlurasightのEd Libermanによる TCP/IP and Networking Fundamentals for IT Pro (IT技術者向けTCP/IPとネットワーク構築の基礎)で学んでください。
もっと多くの選択肢が欲しい場合は、Udemyのコースもご確認ください。ネットワーク構築なら The Complete Networking Fundamentals (完全なネットワーク構築の基礎)が優れています。セキュリティについては The Complete Cyber Security Course: Network Security! (完全なサイバーセキュリティコース/ネットワークセキュリティ!)を見てください。
5.何を、どのようにセットアップするのか
DevOpsの第一人者として、マシンに何がセットアップされているのか、どのようにしたらセットアップできるのかを知る必要があります。そうして初めて自動化について考えられるのです。
一般的に、DevOpsエンジニアは、IISや Apache 、 Tomcat といったWebサーバのセットアップ方法を分かっていなければいけません。
更に、キャッシュサーバ、ロードバランサ、リバースプロキシ、ファイアウォールなどについても理解が必要です。Web開発について学び始めたばかりであれば、Colt Steeleによる The Web Developer Bootcamp (Web開発者向けブートキャンプ)もチェックすることをお勧めします。
6.コードとしてインフラを学ぶ
これはおそらく、DevOpsエンジニアが最も重要視する部分であると同時に、非常に広範な領域にわたります。DevOpsエンジニアなら、 Docker や Kubernetes などのコンテナや、 Ansible や Chef 、 Salt 、 Puppet などの構成管理ツール、そしてTerraformやCloud Formationといったプロビジョニングについて把握しておくべきです。これらのツールを学べるお勧めのコースをリンクからご覧いただけます。
Dockerを学びたいなら、Udemyの Docker Mastery: The Complete Toolset From a Docker Captain (Dockerマスター:ツールセット完全習得)コースから始めるのが一番です。DevOpsエンジニアが必要とする全てのツールを包括的に説明しています。
もしKubernetesを学びたいのであれば、 Learn DevOps: The Complete Kubernetes Course (DevOpsを学ぶ:Kubernete完全習得コース)に参加するといいでしょう。Kubernetesでのビルド、デプロイ、管理の方法を教えてくれます。
そして、Chefについて学びたいのであれば、Udemyの Chef Fundamentals: A Recipe for Automating Infrastructure (Chefの基礎:インフラ自動化のレシピ)に勝る学習コースはありません。おそらく現時点では、Chefを学べる最良のコースです。
Dockerでの選択肢を増やしたいなら、 ベテランエンジニア向け10の必修コース のリストで探してみてください。
7.継続的インテグレーション(CI)と継続的デリバリ(CD)ツールを学ぶ
CIとCDのPipelineのセットアップなども、DevOpsの指導者や第一人者たちにとっては非常に重要です。 Jenkins やTeamCity、droneなど、CI/CDの分野には数多くのツールがあります。
しかし、最低限、これだけは学んでほしいと強く勧めるのはJenkinsです。というのは、これが最も広く普及していて、市場に出回っているCI/CDのツールの中ではおそらく最も成熟しているからです。もしJenkinsを知らないのであれば、手始めにうってつけのコースがあります。
Jenkinsを学びたい人にとって、Udemyの名コース、 Learn DevOps: CI/CD with Jenkins using Pipelines and Docker (DevOps を学ぶ:PipelineとDockerを使ったJenkinsによるCI/CD)以上のコースはありません。とにかく素晴らしいコースで、私もJenkinsに関するほとんどの技術をこのコースで獲得しました。
ところで、もっと選択肢が欲しくて、無料のリソースで学ぶことに抵抗がないのであれば、 MavenとJenkinsに関する6つのJava開発者向け無料オンラインコース のリストをチェックしてもいいでしょう。
8.ソフトウェアとインフラの監視方法を学ぶ
セットアップやデプロイメントとは別に、監視もDevOpsの重要な一面です。そのためDevOpsエンジニアにとって、インフラとアプリの監視について学ぶことが重要になります。
Nagios、Icing、 Datadog 、Zabbix、Monit、AppDynanic、New Relicなど、この領域にはたくさんのツールがあります。
AppDynamicとNagiosなど、あなたの会社で使っているツールに合わせて、いくつか選ぶことができます。
9.クラウドプロバイダを学ぶ
今後、重要になるのがクラウドで、アプリは遅かれ早かれクラウドに移行しなければなりません。そのため、少なくとも、いくつかの人気のクラウドプロバイダと、その基本的な内容を知っておくことはDevOpsエンジニアにとって重要です。
クラウド分野で突出しているのは AWS ですが、Google CloudやAzureも徐々に追いついてきていますし、Heroku、Cloud Foundry、Digital Oceanなど、他のサービスも存在します。
初めて学習する人に強くお勧めするのは、Udemyの名コース、 AWS Serverless APIs & Apps – A Complete Introduction (AWS サーバレスAPIとアプリ:イントロダクション完全版)コースで、これは本当に素晴らしいコースです。
ところで、もっと選択肢が欲しくて、無料のリソースで学ぶことに抵抗がないのであれば、開発者やDevOpsエンジニア向けの 無料AWSコース のリストをチェックしてください。
あなたにお勧めのプログラミングの記事
10 Reasons to Learn Python in 2019 (2019年にPythonを学ぶべき10の理由)
10 Programming languages You can Learn in 2019 (2019年に学ぶべき10のプログラミング言語)
10 Tools Every Java Developer Should Know (全てのJava開発者が知るべき10のツール)
10 Reasons to Learn Java Programming languages (プログラミング言語Javaを学ぶべき10の理由)
10 Frameworks Java and Web Developer should learn in 2019 (2019年にJavaとWeb開発者が学ぶべき10のフレームワーク)
10 Tips to become a better Java Developer in 2019 (2019年にJava開発者としてのスキルを上げる10のヒント)
Top 5 Java Frameworks to Learn in 2019 (2019年に学ぶべきJavaフレームワークのトップ5)
10 Testing Libraries Every Java Developer Should Know (全てのJava開発者が知るべき10のテストライブラリ)
終わりに
ここまで本稿を読んでくださり、ありがとうございます。学ぶべきことや、参加するべきコースが膨大にあると感じたかもしれませんが、心配する必要はありません。
あなたは既に大半を知っているかもしれませんし、利用できる無料で便利なリソースもたくさんあります(無料ではありませんがお金を出す価値のある最良のコースとともに無料コースのリンクも貼っておきました)。
私は特にUdemyのコースが好きです。非常に手頃な価格で大きな価値を提供しているからです。しかし、どんなコースを選ぶかはあなたの自由です。
最終的に、ここで述べたことに関する十分な知識と経験を得てください。
あなたが立派なDevOpsエンジニアになることを祈ります。決して 簡単な道ではないでしょう。 しかし、このロードマップとガイドに従えば、夢のDevOpsエンジニアに一歩近づきます。
もし本稿を気に入って頂けたら、Mediumで私をフォローしてください( javinpaul )。新しい投稿情報を知りたい場合はTwitterで Javarevisited をフォローすることもお忘れなく。
あなたのDevOpsエンジニアへの旅路が良きものであることを祈り、このような素晴らしいコンテンツを作ってくれた Kamran Ahmed に感謝します。
追記:まず1つのコースからDevOpsを学び始めたい場合は、 Learn DevOps: CI/CD with Jenkins using Pipelines and Docker (DevOps を学ぶ:PipelineとDockerを使ったJenkinsによるCI/CD)が最良のコースでしょう。
株式会社リクルート プロダクト統括本部 プロダクト開発統括室 グループマネジャー 株式会社ニジボックス デベロップメント室 室長 Node.js 日本ユーザーグループ代表
- Twitter: @yosuke_furukawa
- Github: yosuke-furukawa