Upgrade to Pro — share decks privately, control downloads, hide ads and more …

アプリケーションコンテナとAWSの話

takipone
March 28, 2015

 アプリケーションコンテナとAWSの話

Developers.IO 2015( http://devio2015.classmethod.jp/ )トラックC-3の資料です。

takipone

March 28, 2015
Tweet

More Decks by takipone

Other Decks in Technology

Transcript

  1. classmethod.jp 2 •  Ryuta  Otaki        @takipone • 

    Job  title  :      AWS  Consulting  Div.    Pre-‐‑‒sales/Engineer •  Interest  :      Network  /      Deployment  Tools •  Favorite  AWS  Service      Amazon  Route  53 classmethod.jp 2 About  me
  2. #cmdevio2015C Agenda(⽬目次) •  Webアプリ実⾏行行環境の変遷 •  アプリケーションコンテナとは •  AWSでDockerを実⾏行行する – Docker  on

     EC2 – EC2  Container  Service(ECS) – Elastic  Beanstalk(EB) •  DockerクラスタとElastic  Beanstalkの⽐比 較 classmethod.jp 3
  3. #cmdevio2015C Abstract  (⾔言いたいこと) •  Elastic  Beanstalk  Dockerイイですよ! •  Elastic  Beanstalk

     Dockerは⼀一般的な Dockerクラスタモデルとは違う •  Elastic  Beanstalk  DockerはAWSの特徴 にマッチした形態になっていて、開発者 向け classmethod.jp 4
  4. #cmdevio2015C アプリケーションコンテナとは •  PaaS/Webアプリ開発で使われる⽤用語 –  Heroku –  GAE(Google  App  Engine)

    •  アプリケーションの実⾏行行単位を指す •  開発者はアプリ動作するために必要なファイ ル⼀一式を⽤用意 •  レンタルサーバーの頃はCGI/Perl,  PHPとか •  最近はPaaSでRuby  on  Rails,  Javaが加わる classmethod.jp 6
  5. #cmdevio2015C アプリコンテナの例例 $  tree  -‐‑‒LF  1  myapp/ myapp/ ├──  Gemfile

    ├──  Gemfile.lock ├──  README.rdoc ├──  Rakefile ├──  app/ ├──  bin/ ├──  config/ ├──  config.ru ├──  db/ ├──  lib/ ├──  log/ ├──  public/ ├──  test/ ├──  tmp/ └──  vendor/ classmethod.jp 7 •  Railsの場合 – app/  :  アプリコード本体 – public/  :  静的コンテンツ – config/  :  構成ファイル etc...
  6. #cmdevio2015C Dockerとは •  オープンソースのアプリコンテナエンジ ンとその周辺サービス •  コンテナエンジンはDocker  Engineと呼 ぶ • 

    実体はLinuxの機能の組み合わせ chroot&Cgroups  +  UnionFSななにか  +   NAT  Networking •  http://docker.io/ classmethod.jp 10
  7. #cmdevio2015C AWSでDockerを実⾏行行する 3つのサービス 1.  Elastic  Compute  Cloud  (EC2) 2.  EC2

     Container  Service  (ECS) 3.  Elastic  Beanstalk  (EB) classmethod.jp 12
  8. #cmdevio2015C 1.Docker  on  EC2 •  LinuxインスタンスにDockerをインス トールし実⾏行行する •  UbuntuやAmazon  Linuxはパッケージが

    ⽤用意されているので簡単 classmethod.jp 13 $  sudo  yum  install  docker $  sudo  service  docker  start $  sudo  docker  ps CONTAINER  ID                IMAGE                              COMMAND                          CREATED                           STATUS                            PORTS                              NAMES $
  9. #cmdevio2015C 1.Docker  on  EC2 •  必要に応じてコンテナ 管理理(Dockerクラスタ) ソフトウェアを導⼊入、 いくつか実装がある – CoreOS

     +  Fleet – Kubernetes – Docker  Swarm •  最近のDocker界隈の トレンドはこの辺 classmethod.jp 14
  10. #cmdevio2015C 2.EC2  Container  Service(ECS) •  Dockerクラスタ管理理をサービスとして提供 •  あらかじめDockerインストール済みのインスタン スでECSエージェントを実⾏行行してクラスタに参加 • 

    操作はAWS  CLI(aws  ecs  *) で⾏行行う(Web管理理画⾯面はまだ 無い) classmethod.jp 15 EC2 EC2 EC2 ECSクラスタ ECS管理理サーバー (AWS  Managed) 端末から AWS  CLIで操作
  11. #cmdevio2015C 3.Elastic  Beanstalk(EB) •  EC2インスタンスのほか、AWSのWebス タック標準構成(ELB  +  Auto  Scaling  +

      RDS)をまとめて作成してくれる classmethod.jp 19 Auto scaling Group ap-northeast-1a EC2 ap-northeast-1c EC2 ELB (ロードバランサ) RDS  Multi-‐‑‒AZ (データベース) AP
  12. #cmdevio2015C EB  Dockerのマルチコンテナ対応 •  先週発表、即時実装 •  BeanstalkインスタンスでECSエージェン トを実⾏行行、コンテナ管理理部分をECSが担当 classmethod.jp 22

    ECS管理理 サーバー ECSクラスタ Auto scaling Group EC2  with   EBホストエージェント &  ECSエージェント EC2  with   EBホストエージェント &  ECSエージェント Beanstalk 管理理サーバー
  13. #cmdevio2015C ECSクラスタ Auto scaling Group EC2  with   EBホストエージェント &

     ECSエージェント EC2  with   EBホストエージェント &  ECSエージェント EB  Dockerのマルチコンテナ対応 •  ECS  +  Auto  Scalingの組み合わせは初めてかも •  Auto  Scaling(複数インスタンス)でも1インスタ ンスごとのコンテナ構成は全インスタンス共通 –  ⼀一般のDockerクラスタとはだいぶ雰囲気が異異なる –  ecs:RunTaskではなくecs:StartTaskを実⾏行行している •  現時点でEB  CLI  3.xは⾮非対応 classmethod.jp 23 A A B B
  14. #cmdevio2015C Dockerクラスタ  vs  EB  Docker •  EC2の課⾦金金体系にマッチするのは EB  Docker classmethod.jp

    24 Dockerクラスタ EC2 EC2 EB(Auto scaling) EC2 EC2 •  実⾏行行コンテナ数に依らず、 EC2インスタンスのタイ プと数で課⾦金金される •  インスタンス数と実⾏行行コン テナ数が⽐比例例するので、 キャパシティに合わせてイ ンスタンス数を調整、課⾦金金 を容易易に最適化できる
  15. #cmdevio2015C Dockerクラスタ  vs  EB  Docker •  リソース管理理コストが軽減されるのは EB  Docker classmethod.jp

    25 Dockerクラスタ EC2 EC2 EB(Auto scaling) EC2 EC2 •  EC2インスタンスごとの リソース使⽤用状況を把握 し、インスタンス数やコ ンテナ配置を管理理しなけ ればならない •  Auto  Scalingやローリング アップデートによってス ケールアウトやインスタン スタイプ変更更(スケールアッ プ)が容易易に⾏行行える
  16. #cmdevio2015C Summary  (まとめ) •  Elastic  Beanstalk  Dockerイイですよ! •  Elastic  Beanstalk

     Dockerは⼀一般的な Dockerクラスタモデルとは違う •  Elastic  Beanstalk  DockerはAWSの特徴 にマッチした形態になっていて、開発者 向け classmethod.jp 27