学問に王道なし

書山有路勤為径  学海無涯苦作舟

学問に王道なし

書山有路勤為径  学海無涯苦作舟

【訳】2018年のデキるDevOpsエンジニアになれる為のロードマップ

はじめに

snowdays.hatenablog.comの続き。
今回の場合は、コメントいっさいないため、自分の備考はいっぱい追加するしかない。
客観性はいまいちのでご了承ください。

言いたいこと

DevOpsは開発文化の一つとの認識なので、タイトルを見た瞬間「DevOpsエンジニア」ってなに?と一瞬で思った。
よくよく考えてみたら、作成者「バックエンド開発者は、運用のことも積極的に勉強しよう!」を言いたかったはずだ。
ある提出されたPRを読んで見たら、ほぼ同じ意見が出されていた。

but I need to say I have some major concerns about this Back-end -> DevOps step. In my opinion you also need an additional part about "Ops", as there is much more than just run an operating system. You are also required to understand and manage things like backups, storage technologies, networking etc.

↓↓↓↓↓↓↓↓↓↓↓

自分は「バックエンド→DevOps」のステップに対して、ちょっと個人意見を持っている。個人的に、「DevOps」より、「Ops」パートとして存在するべきでは?
運用は、OSをメンテすることだけでなく、バックアップやストレージ技術やネットワークの知識を理解しなければならない。

参考図

f:id:zhangnan198711:20180404231852p:plain

さて、ルートの訳に始めよう。

Station 1

(訳者注:運用保守経験ない方は、下記の知識を勉強しよう)

Operating System

(役者注:Windows Serverもあるが、サーバーのOSはほとんど *nix 系である。UnixLinuxそれぞれ分かれているが、Linuxを勉強しよう。
Linux製品はたくさんあるが、RHELの無料版であるCentOSから始めるのはいいかと)

Cloud

(訳者注:Cloudサービスは広がって使われるサービスである。AWSGCPなどの無料のサービスを利用して、Cloud体験しよう)

  • Cloud Foundry
  • Rackspace
  • AWS
  • Heroku
  • Azure
  • Google Cloud Platform
  • Digitalocean

Automation

(訳者注:保守運用の効率を向上する為、現場と合わせているツールを選んで、どんどん自動化を導入しよう)

  • Terraform
  • CF Engine
  • Packer
  • SaltStack
  • Chef
  • Ansible
  • Puppet
  • Powershell
  • AWS Cloud Formation

CI / CD

(訳者注:高頻度リリースをサポートする為、CI(Continuous Integration) / CD (Continuous Distribution)ツールは必須の為、代表的なツールとして、Jenkinsを使ってみよう)

  • Jenkins
  • Travis
  • CircleCI
  • Drone
  • Bamboo

Station 2

(訳者注:そして下記のフィールドに手を出そう)

Monitoring and Alerting

(訳者注:サイトのサービスレベルと安定性を監視する為、監視ツールがいる。現場は必ずどっちを使っているだろう。こういうツールを触ってみよう)

  • New Relic
  • Nagios
  • AppDynamics
  • PagerDuty
  • Munin
  • Graphite
  • Prometheus
  • Zabbix

Log Management & Analysis

(訳者注:ログの集計 / 管理は、データ蓄積や監査に一番大事である。下記のサービスの概要を知ろう)

  • Papertrail
  • ELK
  • Graylog
  • Splunk

Containers

(訳者注:コンテナ仮想化技術は、最近大ヒートとなっている。スケールインやスケールアウトや開発環境構築の効率を向上できる為、代表的な製品のDockerの動作原理や使い方を勉強しよう)

  • Docker
  • rkt
  • LXC

Cluster Managers

(訳者注:コンテナを本番環境で大規模利用する場合、一括管理・設定は必須となる。そこで下記のツールを軽く理解しよう。複数製品あるが、最近大人気のKubernetesから勉強しよう)

  • Kubernetes
  • Mesosphere
  • Mesos
  • Docker Swarm
  • Nomad

Web Servers

(役者注:Webサーバーはサービスのスタートポイント、サービスの門番みたいな存在である。そこで、Webサーバーを勉強しよう。相対的に新しいNginxから始めよう。ただ他の製品との相違点も理解しよう)

ターミナル作業を好きになろう

(訳者注:サーバーで作業を行う際、GUIなしでコマンドライン作業は普通。「運用能力は、ターミナル操作能力である」を言っても過言ではないため、ターミナル作業を身につけよう)

把握すべきコマンド
  • テキスト操作
    • awk
    • sed
    • grep
    • sort
    • uniq
    • cat
    • cut
    • echo
    • fmt
    • tr
    • nl
    • egrep
    • fgrep
    • wc
    • など
  • プロセス監視
    • ps
    • top
    • htop
    • atop
    • など
  • システム性能
    • nmon
    • iostat
    • sar
    • vmstat
    • など
  • ネットワーク

Keep on Going...

(訳者注:下記の知識も必須なので、勉強しよう)

  • ネットワークOSIモデル、TCP/IP/UP、良く使われるポート
  • それぞれファイスシステムを分かろう(訳者注:NTFS / FAT32 / EXT4 / EXT3)
  • リバースプロキシを設定してみよう (Nginx...)
  • キャッシュイングサーバーを設定しよう (Squid、Nginx ...)
  • ロードバランサーを設定してみよう (HAProxy、Nginx...)
  • ファイアウォールを設定してみよう
  • 暗号化通信を知ろう(TLSSSLHTTPS、 SCP、SSH、SFTP)
  • レスキュー・障害対応・原因分析を体験しよう(訳者注:障害発生しないサービスは存在しない)