DevOpsで必要とされるエンジニアスキルの変化 / engineer skill for devops

C2dd5a8b5b381365e36e4399f22de2de?s=47 mizkich
May 19, 2020

DevOpsで必要とされるエンジニアスキルの変化 / engineer skill for devops

GMO Technology Boot Camp 2020、コンテナ技術講義資料
「DevOpsと継続的デリバリーの関係性」や「技術進化によるエンジニアの担当領域の変化」など

https://techblog.gmo-ap.jp/2020/06/15/gtb_devops/

C2dd5a8b5b381365e36e4399f22de2de?s=128

mizkich

May 19, 2020
Tweet

Transcript

  1. 3.

    ⾃⼰紹介 Mizuki Hirata @mizkich 趣味は⽝×⾞×登⼭。 Full Stack Engineer @GMO AD

    Marketing, Inc. Data Management Platformシステムの開発運⽤担当 (Java × Ruby× Kubernetes × BigQueryなどで構成されたシステム) 3
  2. 8.

    やり直しに強いサービスを作る l ⽇経コンピューターの調査では、2018年度のシステム開発の成功率は52.8%でした。 l 失敗の可能性を常に念頭に置き、失敗をやり直せることがより重要です。 l その為には⼩さな機能を段階的にリリースする、失敗と成功の積み重ねが良いとされています。 l リリースの単位を⼩さくする事は、失敗を恐れずに新しいことに挑戦しやすいメリットにもなりま す。

    8 要件 定義 設計 開発 テスト ユーザ テスト 要件 定義 設計 開発 テスト ユーザ テスト 8ヶ⽉掛かるウォーターフォール型の開発では、 問題が起こったときに最⼤8ヶ⽉の⼿戻りが発⽣する。 1ヶ⽉単位のイテレート型の開発では、 問題が起こったときの⼿戻りは1ヶ⽉となる。 ※ 参考: https://business.nikkei.com/atcl/opinion/15/100753/030700005/
  3. 9.

    サービス間の繋がりを薄くする l 密結合なシステムでは、システム全体で開発やリリースの⾜並みを揃える必要がありました。 l この問題は、機能間の結合をネットワーク越しのI/Fに変えることで、解消することが出来ます。 l 疎結合なサービスでシステムを構成する⽅式をサービス指向アーキテクチャ(SOA)と呼びます。 9 在庫管理機能 販売管理機能

    決済機能 配送管理機能 ECサイト(従来) ECサイト(SOA) 在庫管理機能 販売管理機能 決済機能 配送管理機能 在庫管理サービス 販売管理サービス 決済サービス 配送管理サービス ※ URLなどを⽤いた、ネットワーク越しの連携 ※ 同⼀プログラムからの関数呼び出しでの連携 ※ 参考: https://anond.hatelabo.jp/20111018190933
  4. 14.

    既存機能 l ただ⼀つだけの事をするマイクロサービスは、DevOpsとの⾮常に⾼い親和性を持ちます。 l マイクロサービスの導⼊により、変化や失敗に強い、効率的な開発に適したシステムを⻑期に 渡って維持することが出来ます。 マイクロサービス化の効果 14 サービスの肥⼤化や複雑化を防ぐことができる。 ⼩さな単位(マイクロサービス)で、⾼速に開発サイクルを回せる。

    ・ 局所的な開発がしやすく、開発⽣産性が⾼まる。 ・ 安定したサービスを作りやすく、サービスの再利⽤がしやすい。 モノシリック マイクロサービス ・ プロダクト成⻑に⽐例して、チームへの負担が⼤きくなることを防げる。 ・ 役割毎にサービスが分かれているため、チームで管理しやすい。 モノシリック マイクロサービス 機能追加 Aチーム担当 既存サービス 追加サービス Bチーム担当 Aチーム担当
  5. 17.

    コンテナ制御の⾃動化 l 2015年以降、Kubernetes(K8s)によるコンテナオーケストレーションが普及します。 l K8sは、ポッド(≒コンテナ)の状態監視とPodの増減変更を⾃動化します。 l コンテナのネットワークアドレスを任意の名称で解決できるようになり、複雑なネットワーク設定の 変更やデプロイが不要になりました。 17 ポッドオートヒーリング

    ・ 負荷の⾼いポッドの数を⾃動で増やし、それを認識してくれる。 ・ 負荷の低いポッドの数を⾃動で減らし、それを認識してくれる。 ・ エラーの出たポッドを、システムから⾃動で切り離してくれる。 ・ エラーの出たポッドを、⾃動で再起動してくれる。 ポッドオートスケーラー Kubernetesの機能は、他にも多々あります。 SVC α POD β POD α POD α POD β POD β SVC β 再起動 接続断 SVC α POD β POD β SVC β POD α POD α POD α POD β POD α 追加 追加 削除
  6. 18.

    サーバー構築の⾃動化 l 2017年以降、GCPやAWSなどのクラウド環境でもK8sを利⽤可能になりました。 l クラウド環境のK8sは、ノード(≒サーバー)の状態監視と増減も⾃動化することが出来ます。 l オンプレ環境でのポッドオートスケールは、増やせるポッドの数に上限がありました。 l クラウド環境では、ポッドに連動してノードの数も増減するため、ポッドの数に上限がありません。 18

    クラスタオートスケーラー ノードプロビジョニング Pod 追加 Pod 追加 ・ Pod追加時、既存のNodeのCPUやMemoryに空きが無い場合、 Nodeを新規に構築してくれる。 ・ Node追加時、予め選択していたリソースや割引契約を考慮し、 要求に合うサーバーを⾃動で調達してくれる。 リージョン: vCPU: RAM: 割引契約: 東京 2 core 14 G 継続割(30%OFF) リージョン: vCPU: RAM: 割引契約: ⼤阪 2 core 30 G プリエンプティブ割(75%OFF) 新規Node ⾃動調達 新規サーバ ⾃動調達 空き 空き
  7. 20.
  8. 23.