Merge pull request #162 from ptux/tr-day07

This commit is contained in:
Michael Cade 2022-08-05 09:37:41 +01:00 committed by GitHub
commit 9b4c8cca73
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 31 additions and 31 deletions

View File

@ -1,60 +1,60 @@
--- ---
title: '#90DaysOfDevOps - The Big Picture: Learning a Programming Language - Day 7' title: '#90DaysOfDevOps - 全体像: DevOpsとプログラミング言語の学習 - 7日目'
published: false published: false
description: 90DaysOfDevOps - The Big Picture DevOps & Learning a Programming Language description: 90DaysOfDevOps - 体像: DevOpsとプログラミング言語の学習
tags: 'devops, 90daysofdevops, learning' tags: 'devops, 90daysofdevops, learning'
cover_image: null cover_image: null
canonical_url: null canonical_url: null
id: 1048856 id: 1048856
--- ---
## The Big Picture: DevOps & Learning a Programming Language ## 体像: DevOpsとプログラミング言語の学習
I think it is fair to say to be successful in the long term as a DevOps engineer you've got to know at least one programming language at a foundational level. I want to take this first session of this section to explore why this is such a critical skill to have, and hopefully, by the end of this week or section, you are going to have a better understanding of the why, how and what to do to progress with your learning journey. DevOpsエンジニアとして長期的に成功するためには、少なくとも1つのプログラミング言語を基礎的なレベルで知っておく必要がある、と言ってもいいと思います。最初のセッションでは、なぜこのような重要なスキルが必要なのかを探ります。この週やセクションが終わる頃には、なぜ、どのように、何をすれば学習を進めることができるのかについて、より深く理解できるようになっていることを願っています。
I think if I was to ask out on social do you need to have programming skills for DevOps related roles, the answer will be most likely a hard yes? Let me know if you think otherwise? Ok but then a bigger question and this is where you won't get such a clear answer is which programming language? The most common answer I have seen here has been Python or increasingly more often, we're seeing Golang or Go should be the language that you learn. もし私がソーシャル上で「DevOps関連の職務にプログラミングスキルは必要ですか」と尋ねたら、その答えはおそらく「イエス」でしょうそうでない場合は、私に教えてください。しかし、もっと大きな疑問があり、ここで明確な答えが得られないのが、どのプログラミング言語かということです。 ここで私が見た最も一般的な答えはPythonで、最近ではGolangやGoを学ぶべきという意見も増えています。
To be successful in DevOps you have to have a good knowledge of programming skills is my takeaway from that at least. But we have to understand why we need it to choose the right path. DevOpsで成功するためには、プログラミングスキルに関する十分な知識が必要だというのが、少なくとも私が得た教訓です。しかし、正しい道を選択するためには、なぜそれが必要なのかを理解する必要があります。
## Understand why you need to learn a programming language. ## なぜプログラミング言語を学ぶ必要があるのかを理解する
The reason that Python and Go are recommended so often for DevOps engineers is that a lot of the DevOps tooling is written in either Python or Go, which makes sense if you are going to be building DevOps tools. Now this is important as this will determine really what you should learn and that would likely be the most beneficial. If you are going to be building DevOps tools or you are joining a team that does then it would make sense to learn that same language, if you are going to be heavily involved in Kubernetes or Containers then it's more than likely that you would want to choose Go as your programming language. For me, the company I work for (Kasten by Veeam) is in the Cloud-Native ecosystem focused on data management for Kubernetes and everything is written in Go. PythonとGoがDevOpsエンジニアに頻繁に推奨される理由は、DevOpsツールの多くがPythonかGoで書かれているからです。このことは、あなたが何を学ぶべきかを決定し、最も有益である可能性が高いので、重要なことです。もしあなたがDevOpsツールを作ろうとしている、あるいは作っているチームに参加しようとしているのなら、同じ言語を学ぶのは理にかなっていますし、もしあなたがKubernetesやコンテナに深く関わっているのなら、プログラミング言語としてGoを選びたいと思うかもしれませんね。私の場合、私が働いている会社Kasten by Veeamは、Kubernetesのデータ管理に焦点を当てたCloud-Nativeエコシステムで、すべてがGoで記述されています。
But then you might not have clear cut reasoning like that to choose you might be a student or transitioning careers with no real decision made for you. I think in this situation then you should choose the one that seems to resonate and fit with the applications you are looking to work with. しかし、そのような明確な理由がない場合、学生であったり、キャリアの転換期であったりして、本当の意味での決断ができないかもしれません。そんなときは、自分がやりたいアプリケーションに共鳴し、フィットしそうなものを選べばいいと思います。
Remember I am not looking to become a software developer here I just want to understand a little more about the programming language so that I can read and understand what those tools are doing and then that leads to possibly how we can help improve things. 私はソフトウェア開発者になりたいわけではなく、プログラミング言語についてもう少し理解したいだけなのです。
I would also it is also important to know how you interact with those DevOps tools which could be Kasten K10 or it could be Terraform and HCL. These are what we will call config files and this is how you interact with those DevOps tools to make things happen, commonly these are going to be YAML. (We may use the last day of this section to dive a little into YAML) また、Kasten K10やTerraform、HCLといったDevOpsツールとどのように連携するのかも重要です。これは設定ファイルと呼ばれるもので、DevOpsツールとどのようにやり取りして物事を実現するかというものです。(このセクションの最終日にYAMLについて少し掘り下げます。
## Did I just talk myself out of learning a programming language? ## プログラミング言語の習得を断念したのは、私自身のせい?
Most of the time or depending on the role, you will be helping engineering teams implement DevOps into their workflow, a lot of testing around the application and making sure that the workflow that is built aligns to those DevOps principles we mentioned over the first few days. But in reality, this is going to be a lot of the time troubleshooting an application performance issue or something along those lines. This comes back to my original point and reasoning, the programming language I need to know is the one that the code is written in? If their application is written in NodeJS it wont help much if you have a Go or Python badge. ほとんどの場合、あるいは職務によっては、エンジニアリングチームがワークフローにDevOpsを導入するのを支援し、アプリケーションに関する多くのテストを行い、構築されたワークフローが最初の数日間で述べたDevOpsの原則に合致していることを確認することになります。しかし実際には、アプリケーションのパフォーマンス問題などのトラブルシューティングを行うことが多いようです。これは、私が知っておくべきプログラミング言語は、コードが書かれている言語なのか、という最初の論点と理由に戻ります。アプリケーションがNodeJSで書かれている場合、GoやPythonのバッジを持っていても、あまり役に立ちません。
## Why Go ## なぜGoを習得するのか
Why Golang is the next programming language for DevOps, Go has become a very popular programming language in recent years. According to the StackOverflow Survey for 2021 Go came in fourth for the most wanted Programming, scripting and markup languages with Python being top but hear me out. [StackOverflow 2021 Developer Survey Most Wanted Link](https://insights.stackoverflow.com/survey/2021#section-most-loved-dreaded-and-wanted-programming-scripting-and-markup-languages) DevOpsのための次のプログラミング言語がGolangである理由近年、Goは非常に人気のあるプログラミング言語になっています。2021年のStackOverflow Surveyによると、Goは最も欲しいプログラミング、スクリプト、マークアップ言語の第4位で、Pythonがトップですが、私の話を聞いてください。[StackOverflow 2021 Developer Survey - Most Wanted Link](https://insights.stackoverflow.com/survey/2021#section-most-loved-dreaded-and-wanted-programming-scripting-and-markup-languages)
As I have also mentioned some of the most known DevOps tools and platforms are written in Go such as Kubernetes, Docker, Grafana and Prometheus. また、Kubernetes、Docker、Grafana、Prometheusなど、最も有名なDevOpsツールやプラットフォームがGoで書かれていることも紹介した通りです。
What are some of the characteristics of Go that make it great for DevOps? DevOpsに最適なGoの特徴にはどのようなものがあるのでしょうか。
## Build and Deployment of Go Programs ## Goプログラムのビルドとデプロイメント
An advantage of using a language like Python that is interpreted in a DevOps role is that you dont need to compile a python program before running it. Especially for smaller automation tasks, you dont want to be slowed down by a build process that requires compilation even though, Go is a compiled programming language, **Go compiles directly into machine code**. Go is known also for fast compilation times. Pythonのようなインタプリタ言語をDevOpsの役割で使用する利点は、Pythonプログラムを実行する前にコンパイルする必要がないことです。特に小規模な自動化タスクでは、コンパイルが必要なビルドプロセスで時間がかかるのは避けたいものです。 Goはコンパイルが速いことでも知られています。
## Go vs Python for DevOps ## DevOpsにおけるGoとPythonの比較
Go Programs are statically linked, this means that when you compile a go program everything is included in a single binary executable, no external dependencies will be required that would need to be installed on the remote machine, this makes the deployment of go programs easy, compared to python program that uses external libraries you have to make sure that all those libraries are installed on the remote machine that you wish to run on. Goプログラムは静的にリンクされています。つまり、Goプログラムをコンパイルすると、すべてが単一のバイナリ実行ファイルに含まれ、リモートマシンにインストールする必要のある外部依存は必要ありません。
Go is a platform-independent language, which means you can produce binary executables for *all the operating systems, Linux, Windows, macOS etc and very easy to do so. With Python, it is not as easy to create these binary executables for particular operating systems. Goはプラットフォームに依存しない言語です。つまり、Linux、Windows、macOSなど*すべてのオペレーティングシステム用のバイナリ実行ファイルを作成することができ、非常に簡単に実行することができます。Pythonでは、特定のオペレーティングシステム用のバイナリ実行ファイルを作成するのはそれほど簡単ではありません。
Go is a very performant language, it has fast compilation and fast run time with lower resource usage like CPU and memory especially compared to python, numerous optimisations have been implemented in the Go language that makes it so performant. (Resources below) Goは非常にパフォーマンスの高い言語であり、特にPythonと比較してCPUやメモリなどのリソース使用量が少なく、高速なコンパイルと高速な実行が可能で、Go言語には数多くの最適化が実装されているため、非常にパフォーマンスが高い。(下記リソース)
Unlike Python which often requires the use of third party libraries to implement a particular python program, go includes a standard library that has the majority of functionality that you would need for DevOps built directly into it. This includes functionality file processing, HTTP web services, JSON processing, native support for concurrency and parallelism as well as built-in testing. Pythonでは、特定のPythonプログラムを実装するためにサードパーティのライブラリを使用する必要がありますが、Goには標準ライブラリがあり、DevOpsに必要な機能の大部分が直接組み込まれています。これには、ファイル処理、HTTPウェブサービス、JSON処理、並行処理と並列処理のネイティブサポート、組み込みのテストなどの機能が含まれます。
This is by no way throwing Python under the bus I am just giving my reasons for choosing Go but they are not the above Go vs Python it's generally because it makes sense as the company I work for develops software in Go so that is why. これは決してPythonを投げつけるわけではなく、私がGoを選んだ理由を述べているのですが、上記のGo vs Pythonということではなく、私が働いている会社がGoでソフトウェアを開発しているので、一般的に理にかなっているから、というのが理由です。
I will say that once you have or at least I am told as I am not many pages into this chapter right now, is that once you learn your first programming language it becomes easier to take on other languages. You're probably never going to have a single job in any company anywhere where you don't have to deal with manage, architect, orchestrating, debug JavaScript and Node JS applications. この章をまだ読み終えていないのですが、最初のプログラミング言語を習得すると、他の言語への挑戦が容易になると言われています。おそらく、どこの会社でも、JavaScriptやNode JSアプリケーションの管理、アーキテクト、オーケストレーション、デバッグに携わらない仕事はないでしょう。
## Resources ## リソース
- [StackOverflow 2021 Developer Survey](https://insights.stackoverflow.com/survey/2021) - [StackOverflow 2021 Developer Survey](https://insights.stackoverflow.com/survey/2021)
- [Why we are choosing Golang to learn](https://www.youtube.com/watch?v=7pLqIIAqZD4&t=9s) - [Why we are choosing Golang to learn](https://www.youtube.com/watch?v=7pLqIIAqZD4&t=9s)
@ -64,6 +64,6 @@ I will say that once you have or at least I am told as I am not many pages into
- [FreeCodeCamp - Learn Go Programming - Golang Tutorial for Beginners](https://www.youtube.com/watch?v=YS4e4q9oBaU&t=1025s) - [FreeCodeCamp - Learn Go Programming - Golang Tutorial for Beginners](https://www.youtube.com/watch?v=YS4e4q9oBaU&t=1025s)
- [Hitesh Choudhary - Complete playlist](https://www.youtube.com/playlist?list=PLRAV69dS1uWSR89FRQGZ6q9BR2b44Tr9N) - [Hitesh Choudhary - Complete playlist](https://www.youtube.com/playlist?list=PLRAV69dS1uWSR89FRQGZ6q9BR2b44Tr9N)
Now for the next 6 days of this topic my intention is to work through some of the resources listed above and document my notes for each day. You will notice that they are generally around 3 hours as a full course, I wanted to share my complete list so that if you have time you should move ahead and work through each one if time permits, I will be sticking to my learning hour each day. さて、このトピックの次の6日間、私の意図は、上記のリソースのいくつかに取り組んで、毎日の私のートを文書化することです。もし、あなたが時間があれば、先に進み、時間が許す限り、それぞれを学習してください。
See you on [Day 8](day08.md). それでは、【8日目】(day08.md)でお会いしましょう。

View File

@ -26,9 +26,9 @@ English Version | [中文版本](zh_cn/README.md) | [繁體中文版本](zh_tw/R
- [✔️] ♾️ 5 > [計画 > コーディング > ビルド > テスト > リリース > デプロイ > オペレート > 監視](Days/day05.md) - [✔️] ♾️ 5 > [計画 > コーディング > ビルド > テスト > リリース > デプロイ > オペレート > 監視](Days/day05.md)
- [✔️] ♾️ 6 > [DevOps - 本当の話](Days/day06.md) - [✔️] ♾️ 6 > [DevOps - 本当の話](Days/day06.md)
### Learning a Programming Language ### プログラミング言語の学習
- [✔️] ⌨️ 7 > [The Big Picture: DevOps & Learning a Programming Language](Days/day07.md) - [✔️] ⌨️ 7 > [全体像: DevOpsとプログラミング言語の学習](Days/day07.md)
- [✔️] ⌨️ 8 > [GoとHello WorldのためのDevOps環境のセットアップ](Days/day08.md) - [✔️] ⌨️ 8 > [GoとHello WorldのためのDevOps環境のセットアップ](Days/day08.md)
- [✔️] ⌨️ 9 > [Let's explain the Hello World code](Days/day09.md) - [✔️] ⌨️ 9 > [Let's explain the Hello World code](Days/day09.md)
- [✔️] ⌨️ 10 > [The Go Workspace & Compiling & running code](Days/day10.md) - [✔️] ⌨️ 10 > [The Go Workspace & Compiling & running code](Days/day10.md)