あのときの、ほら!あれ、あれ!

SIer勤務のAWSなエンジニア(父)が好きなことをアウトプットして人生のなにがしかに役立てたり役立てなかったりするブログ

オンラインセッション「はじめてのコンテナワークロード」個人的まとめ

(今更ながら)AWS Innovate オンラインカンファレンスに参加しました

昨日、AWS Innovate オンラインカンファレンスに参加してみました。

aws.amazon.com

昨年からUdemyやらBlackbeltでAWSの学習はすすめていたのですが
オンタイムでAWSのカンファレンスに参加するのは初めてです。

様々なセッションが容易されている中で、以前から
名前は知っているけどよく知らない」状態だった
Dockerコンテナ技術のセッションがあったので
「はじめてのコンテナワークロード」のセッションを拝聴させて頂きました。

セッション自体はPart1~Part3まであり、すべて見させて頂いたのですが
(スピーカーの原さんが息切れするほど笑)かなり濃密な内容で
特にPart2,3についてはビジネスでコンテナ技術を導入するにあたっての
障壁やケーススタディ的な要素が多かったため今回はPart1の内容で
学びとなった内容をまとめていきたいと思います。

セッションのゴール

  • コンテナを持つ技術的な特徴と価値を整理
  • 単一環境でコンテナを動かせるようになる

コンテナ仮想化とは

ひとつのホストOSの上に、アプリケーション実行に必要な要素を一通りそろえた
仮想的なユーザー空間(コンテナ)」を 複数作成することができる技術

通常のサーバー仮想化と比較

  • サーバ仮想化では

ひとつのホストOSの上にさらに仮想OSを作り、アプリケーション実行環境を構築する
→OS起動しアプリケーションが利用可能になるまでのオーバーヘッドが長くなりがち

  • コンテナ仮想化では

「コンテナ」は実質的にはホストOSのプロセスを切り出して独立させているだけ
→アプリケーション実行までの待ち時間が短くてすむ

f:id:nogasalog:20191016121129p:plain

コンテナ技術導入で解決できる課題

  • 環境差異によるアプリケーション実行時の障害やそれを防止するための環境移動時のコード修正/設定変更
  • 開発/本番環境の環境差異(ランタイムのバージョンや環境変数)などが起因とされる障害

コンテナ技術がどのように解決するか

アプリケーションの

  • ランタイム/エンジン
  • 依存ライブラリ/パッケージ
  • コード

をまとめて「コンテナイメージ化」し、各環境間でイメージを簡単にデリバリすることが可能

まとめ

Dockerコンテナの技術的特性

  • アプリケーションの依存物すべてをひとつにパッケージングが可能
  • パッケージの統一的なデリバリ方法を実現するコマンド群(イメージレジストリとのやり取り)
  • コンテナを実行するための統一的なコマンド群

期待できる効果

  • アプリケーション実行環境の再現容易性向上
    →環境依存要素の考慮不要
  • アプリケーションの可搬性向上
    →push/pullでアプリケーションを動かせる
  • (上記によって)高速な開発とリリースサイクルが実現できる

セッションを受講してみて

これまで「名前を聞いたことがあるけど、よく知らない技術」だったコンテナ技術について
技術的な特性や利点を整理して理解することができました。

今後も気になっているけど参入障壁高い(そう感じてしまいがち)技術については
軽い気持ちでWebinarやセッションを聞いて、やってみるというサイクルを活用していきたいと思います。

また、少し調べてみると個人開発レベルでもDockerコンテナを利用して開発している方もいるようです。
確かに「ローカルで開発した環境をまるごとイメージ化してAWSの仮想サーバにDocker環境作ってローンチ」は
かなり開発スピード上りそうで魅力的ですね。

参考

注目を浴びる「Dockerコンテナ」、従来の仮想化と何が違うのか? | 新野淳一コラム | 東京エレクトロンデバイス株式会社