Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

#cmdevio2015C Agenda(⽬目次) •  Webアプリ実⾏行行環境の変遷 •  アプリケーションコンテナとは •  AWSでDockerを実⾏行行する – Docker  on  EC2 – EC2  Container  Service(ECS) – Elastic  Beanstalk(EB) •  DockerクラスタとElastic  Beanstalkの⽐比 較 classmethod.jp 3

Slide 4

Slide 4 text

#cmdevio2015C Abstract  (⾔言いたいこと) •  Elastic  Beanstalk  Dockerイイですよ! •  Elastic  Beanstalk  Dockerは⼀一般的な Dockerクラスタモデルとは違う •  Elastic  Beanstalk  DockerはAWSの特徴 にマッチした形態になっていて、開発者 向け classmethod.jp 4

Slide 5

Slide 5 text

#cmdevio2015C Webアプリ実⾏行行環境の変遷 •  レンタルサーバー(ランタイムは共有) →  その後PaaSに進化 •  VPS(OSまるごと占有) →  その後IaaSに進化 classmethod.jp 5

Slide 6

Slide 6 text

#cmdevio2015C アプリケーションコンテナとは •  PaaS/Webアプリ開発で使われる⽤用語 –  Heroku –  GAE(Google  App  Engine) •  アプリケーションの実⾏行行単位を指す •  開発者はアプリ動作するために必要なファイ ル⼀一式を⽤用意 •  レンタルサーバーの頃はCGI/Perl,  PHPとか •  最近はPaaSでRuby  on  Rails,  Javaが加わる classmethod.jp 6

Slide 7

Slide 7 text

#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...

Slide 8

Slide 8 text

#cmdevio2015C 従来のアプリコンテナの課題 •  対応するランタイム(プログラミング⾔言 語)しか利利⽤用出来ない •  モジュールやプログラムの追加に制限が ある classmethod.jp 8

Slide 9

Slide 9 text

classmethod.jp 9 呼んだ?

Slide 10

Slide 10 text

#cmdevio2015C Dockerとは •  オープンソースのアプリコンテナエンジ ンとその周辺サービス •  コンテナエンジンはDocker  Engineと呼 ぶ •  実体はLinuxの機能の組み合わせ chroot&Cgroups  +  UnionFSななにか  +   NAT  Networking •  http://docker.io/ classmethod.jp 10

Slide 11

Slide 11 text

#cmdevio2015C Dockerのメリット •  ランタイムをコンテナに同梱する →任意のプログラミング⾔言語が使える。 ただ、コンテナのサイズは⼤大きくなる •  アプリの可搬性(ポータビリティ)が⾼高い →開発環境と本番環境の再現性の話。 ランタイム同梱なのでライブラリ構成に 気を遣わなくて良良い!本当に良良い! classmethod.jp 11

Slide 12

Slide 12 text

#cmdevio2015C AWSでDockerを実⾏行行する 3つのサービス 1.  Elastic  Compute  Cloud  (EC2) 2.  EC2  Container  Service  (ECS) 3.  Elastic  Beanstalk  (EB) classmethod.jp 12

Slide 13

Slide 13 text

#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 $

Slide 14

Slide 14 text

#cmdevio2015C 1.Docker  on  EC2 •  必要に応じてコンテナ 管理理(Dockerクラスタ) ソフトウェアを導⼊入、 いくつか実装がある – CoreOS  +  Fleet – Kubernetes – Docker  Swarm •  最近のDocker界隈の トレンドはこの辺 classmethod.jp 14

Slide 15

Slide 15 text

#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で操作

Slide 16

Slide 16 text

#cmdevio2015C 2.EC2  Container  Service(ECS) •  昨年年のre:Inventで発表、現在プレビュー (要申請)。バージニア北北部、オレゴン、 アイルランドリージョンのみで提供 •  http://aws.amazon.com/jp/ecs/preview/ classmethod.jp 16

Slide 17

Slide 17 text

#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 (ロードバランサ)

Slide 18

Slide 18 text

#cmdevio2015C 3.Elastic  Beanstalk(EB) •  PaaSのようにアプリファイルを慣れた ツール(Git拡張、Eclipse連携がある)で AWS環境にデプロイできる classmethod.jp 18 端末から git  aws.pushでデプロイ EC2

Slide 19

Slide 19 text

#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

Slide 20

Slide 20 text

#cmdevio2015C 3.Elastic  Beanstalk(EB) •  開発者の求める便便利利機能が⼀一通りそろっ ている – アプリバージョンのロールバック – ローリングアップデート – DNSスワップ – バッチ実⾏行行(Worker  Tier) – S3へのアプリログ送信 – Blue-‐‑‒Green  Deploymentの実装が簡単 •  EB⾃自体は無料料! classmethod.jp 20

Slide 21

Slide 21 text

#cmdevio2015C 3.Elastic  Beanstalk(EB) •  昨年年4⽉月にDockerサポート •  EBのランタイムが⼀一気に増える契機に •  ⻑⾧長らく1インスタンス1コンテナという制限があった classmethod.jp 21 Auto scaling Group ap-northeast-1a EC2 ap-northeast-1c EC2

Slide 22

Slide 22 text

#cmdevio2015C EB  Dockerのマルチコンテナ対応 •  先週発表、即時実装 •  BeanstalkインスタンスでECSエージェン トを実⾏行行、コンテナ管理理部分をECSが担当 classmethod.jp 22 ECS管理理 サーバー ECSクラスタ Auto scaling Group EC2  with   EBホストエージェント &  ECSエージェント EC2  with   EBホストエージェント &  ECSエージェント Beanstalk 管理理サーバー

Slide 23

Slide 23 text

#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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

#cmdevio2015C Dockerクラスタ  vs  EB •  コンテナをマルチテナントで展開するなどコンテ ナ⾃自体の管理理を細かくやる場合はDockerクラスタ •  コンテナの起動スピードとリソースの富豪性を期 待する場合もDockerクラスタ •  Dockerを活⽤用したプラットフォームを提供する サービサー向け •  事例例  :  prevs.io classmethod.jp 26

Slide 27

Slide 27 text

#cmdevio2015C Summary  (まとめ) •  Elastic  Beanstalk  Dockerイイですよ! •  Elastic  Beanstalk  Dockerは⼀一般的な Dockerクラスタモデルとは違う •  Elastic  Beanstalk  DockerはAWSの特徴 にマッチした形態になっていて、開発者 向け classmethod.jp 27

Slide 28

Slide 28 text

Any  Questions? classmethod.jp 28

Slide 29

Slide 29 text

#cmdevio2015 ご清聴ありがとうございました。 スライドはSpeakerDeckで公開しています。 「takipone」で検索索ください   We  are  Hiring!! クラスメソッドではAWSエンジニアを募集中! http://classmethod.jp/recruit/ お帰りの際は11F、3Fエレベータ前のボックスに アンケートを投⼊入ください