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

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

Ecd0c945f6911dbf75358a8addee15f7?s=47 takipone
March 28, 2015

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

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

Ecd0c945f6911dbf75358a8addee15f7?s=128

takipone

March 28, 2015
Tweet

Transcript

  1. アプリケーションコンテナと AWSの話 クラスメソッド株式会社 ⼤大瀧隆太 classmethod.jp 1 C-‐‑‒3 2015/03/29 #cmdevio2015  

     (イベント全体) #cmdevio2015C(セッション)
  2. 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
  3. #cmdevio2015C Agenda(⽬目次) •  Webアプリ実⾏行行環境の変遷 •  アプリケーションコンテナとは •  AWSでDockerを実⾏行行する – Docker  on

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

     Dockerは⼀一般的な Dockerクラスタモデルとは違う •  Elastic  Beanstalk  DockerはAWSの特徴 にマッチした形態になっていて、開発者 向け classmethod.jp 4
  5. #cmdevio2015C Webアプリ実⾏行行環境の変遷 •  レンタルサーバー(ランタイムは共有) →  その後PaaSに進化 •  VPS(OSまるごと占有) →  その後IaaSに進化

    classmethod.jp 5
  6. #cmdevio2015C アプリケーションコンテナとは •  PaaS/Webアプリ開発で使われる⽤用語 –  Heroku –  GAE(Google  App  Engine)

    •  アプリケーションの実⾏行行単位を指す •  開発者はアプリ動作するために必要なファイ ル⼀一式を⽤用意 •  レンタルサーバーの頃はCGI/Perl,  PHPとか •  最近はPaaSでRuby  on  Rails,  Javaが加わる classmethod.jp 6
  7. #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...
  8. #cmdevio2015C 従来のアプリコンテナの課題 •  対応するランタイム(プログラミング⾔言 語)しか利利⽤用出来ない •  モジュールやプログラムの追加に制限が ある classmethod.jp 8

  9. classmethod.jp 9 呼んだ?

  10. #cmdevio2015C Dockerとは •  オープンソースのアプリコンテナエンジ ンとその周辺サービス •  コンテナエンジンはDocker  Engineと呼 ぶ • 

    実体はLinuxの機能の組み合わせ chroot&Cgroups  +  UnionFSななにか  +   NAT  Networking •  http://docker.io/ classmethod.jp 10
  11. #cmdevio2015C Dockerのメリット •  ランタイムをコンテナに同梱する →任意のプログラミング⾔言語が使える。 ただ、コンテナのサイズは⼤大きくなる •  アプリの可搬性(ポータビリティ)が⾼高い →開発環境と本番環境の再現性の話。 ランタイム同梱なのでライブラリ構成に

    気を遣わなくて良良い!本当に良良い! classmethod.jp 11
  12. #cmdevio2015C AWSでDockerを実⾏行行する 3つのサービス 1.  Elastic  Compute  Cloud  (EC2) 2.  EC2

     Container  Service  (ECS) 3.  Elastic  Beanstalk  (EB) classmethod.jp 12
  13. #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 $
  14. #cmdevio2015C 1.Docker  on  EC2 •  必要に応じてコンテナ 管理理(Dockerクラスタ) ソフトウェアを導⼊入、 いくつか実装がある – CoreOS

     +  Fleet – Kubernetes – Docker  Swarm •  最近のDocker界隈の トレンドはこの辺 classmethod.jp 14
  15. #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で操作
  16. #cmdevio2015C 2.EC2  Container  Service(ECS) •  昨年年のre:Inventで発表、現在プレビュー (要申請)。バージニア北北部、オレゴン、 アイルランドリージョンのみで提供 •  http://aws.amazon.com/jp/ecs/preview/

    classmethod.jp 16
  17. #cmdevio2015C 2.EC2  Container  Service(ECS) •  コンテナの配置や監視を⾏行行うスケジューラ、ELB との連携、Web管理理画⾯面は今後追加予定 •  クラスタスケジューラのMesosと連携するサンプ ルコードが公開されている

    https://aws.amazon.com/blogs/compute/ cluster-‐‑‒management-‐‑‒with-‐‑‒amazon-‐‑‒ecs/ classmethod.jp 17 EC2 EC2 EC2 ECS クラスタ ELB (ロードバランサ)
  18. #cmdevio2015C 3.Elastic  Beanstalk(EB) •  PaaSのようにアプリファイルを慣れた ツール(Git拡張、Eclipse連携がある)で AWS環境にデプロイできる classmethod.jp 18 端末から

    git  aws.pushでデプロイ EC2
  19. #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
  20. #cmdevio2015C 3.Elastic  Beanstalk(EB) •  開発者の求める便便利利機能が⼀一通りそろっ ている – アプリバージョンのロールバック – ローリングアップデート – DNSスワップ – バッチ実⾏行行(Worker

     Tier) – S3へのアプリログ送信 – Blue-‐‑‒Green  Deploymentの実装が簡単 •  EB⾃自体は無料料! classmethod.jp 20
  21. #cmdevio2015C 3.Elastic  Beanstalk(EB) •  昨年年4⽉月にDockerサポート •  EBのランタイムが⼀一気に増える契機に •  ⻑⾧長らく1インスタンス1コンテナという制限があった classmethod.jp

    21 Auto scaling Group ap-northeast-1a EC2 ap-northeast-1c EC2
  22. #cmdevio2015C EB  Dockerのマルチコンテナ対応 •  先週発表、即時実装 •  BeanstalkインスタンスでECSエージェン トを実⾏行行、コンテナ管理理部分をECSが担当 classmethod.jp 22

    ECS管理理 サーバー ECSクラスタ Auto scaling Group EC2  with   EBホストエージェント &  ECSエージェント EC2  with   EBホストエージェント &  ECSエージェント Beanstalk 管理理サーバー
  23. #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
  24. #cmdevio2015C Dockerクラスタ  vs  EB  Docker •  EC2の課⾦金金体系にマッチするのは EB  Docker classmethod.jp

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

    25 Dockerクラスタ EC2 EC2 EB(Auto scaling) EC2 EC2 •  EC2インスタンスごとの リソース使⽤用状況を把握 し、インスタンス数やコ ンテナ配置を管理理しなけ ればならない •  Auto  Scalingやローリング アップデートによってス ケールアウトやインスタン スタイプ変更更(スケールアッ プ)が容易易に⾏行行える
  26. #cmdevio2015C Dockerクラスタ  vs  EB •  コンテナをマルチテナントで展開するなどコンテ ナ⾃自体の管理理を細かくやる場合はDockerクラスタ •  コンテナの起動スピードとリソースの富豪性を期 待する場合もDockerクラスタ

    •  Dockerを活⽤用したプラットフォームを提供する サービサー向け •  事例例  :  prevs.io classmethod.jp 26
  27. #cmdevio2015C Summary  (まとめ) •  Elastic  Beanstalk  Dockerイイですよ! •  Elastic  Beanstalk

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

  29. #cmdevio2015 ご清聴ありがとうございました。 スライドはSpeakerDeckで公開しています。 「takipone」で検索索ください   We  are  Hiring!! クラスメソッドではAWSエンジニアを募集中! http://classmethod.jp/recruit/

    お帰りの際は11F、3Fエレベータ前のボックスに アンケートを投⼊入ください