Member-only story
How To Become a DevOps Engineer In Six Months or Less, Part 4: PackageーPart 2
6か月以内にDevOpsエンジニアになる方法 パート4:パッケージ化 (第二章)
前回に引き続き、DevOpsについて詳しく見ていきたいと思います。長い記事なので2回に分けて投稿してます。今回は第二回目(最終章)です。AWS Lambdaなどについても触れています。
Benefits of Docker
Process Isolation
それではDockerの長所から見ていきたいと思います。
Dockerを使用すると、すべてのサービスでプロセスを process isolation.(完全に分離)ができます。 サービスAは、すべてのディペンデンシーを備えた独自の小さなコンテナー内にあります。 サービスBは、すべてのディペンデンシーとともに、そのコンテナ内に存在します。 そして、2つは対立していません!
さらに言えば、1つのコンテナが不具合を起こした場合、そのコンテナのみが影響を受けます。 残りは問題なく実行を続けます(というか、実行し続けなければいけません)。
これはセキュリティにも役立ちます。 コンテナが危険にさらされている場合、そのコンテナから抜け出してベースOSをハッキングすることは非常に困難です(難しいというだけで、不可能だということではありません!)。
そして、コンテナが誤動作している(CPUまたはメモリを過剰に消費している)場合、システムの他の部分に影響を与えることなく、そのコンテナだけを影響範囲内に「含める」ことができます。
Deployment
さまざまなアプリケーションが実際にどのように構築されるかを考えてみてください。
Pythonアプリの場合、多数のさまざまなPythonパッケージが含まれます。一部は pip モジュールとしてインストールされ、他はrpmまたはdebパッケージとして、またその他は単純なgit cloneインストールとしてインストールされます。または、virtualenvで行った場合、virtualenvディレクトリ内のすべてのディペンデンシーのzipファイルになります。
一方、Javaアプリの場合は、すべてのディペンデンシーが適切な場所にプルされ、振りかけられたgradleビルドが作成されます。
さまざまな言語とさまざまなランタイムでビルドされたさまざまなアプリは、これらのアプリを製品にデプロイする際の課題となります。
どうすればすべてのディペンデンシーの状態をキープできるのでしょうか。