Slide 1

Slide 1 text

個⼈サービスをFargateに移⾏したよ Repro Tech Meetup #1 Docker 畑中 悠作

Slide 2

Slide 2 text

About me • Yusaku Hatanaka (@hatappi) • Speee, Inc • Ruby, Go, TypeScript, etc. • Roppongi.rb organizer • Vimmer (vimと同じ年) • 煎り⼤⾖が好き

Slide 3

Slide 3 text

IUUQTTQFBLFSEFDLDPNIBUBQQJSBJMTQMVTUZQFTDSJQUQMVTSFBDUQMVTIZQFSOPWBEFTIJNFSVTTSSBJIV Rails Developers Meetup 2018 
 Day 3 Extreme

Slide 4

Slide 4 text

時間は有限!!

Slide 5

Slide 5 text

出来るだけメンテするも のは減らしていきたい

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

Fargateとは? • ECSにて下回りのインスタンス群の管理を⾃分で管 理しなくても良くなる • 新しいサービスというよりはECSのEC2と並ぶ新し い起動タイプという捉え⽅がよいかも

Slide 8

Slide 8 text

下回りのインスタンス群の管理を
 ⾃分で管理しなくても良くなる

Slide 9

Slide 9 text

EC2 => Fargate IUUQTBXTBNB[PODPNKQCMPHTOFXTBXTGBSHBUFBQSPEVDUPWFSWJFX

Slide 10

Slide 10 text

今までのECS • Amazon ECSに対応したAMIでインスタン スをAuto Scaling グループなどで⽴てる必 要があった • AMIも⾃前で⽤意する場合はECS Agentや docker daemonなどを⽤意する必要があ る • AMIを固定で使⽤している場合はECS AgentのUpdateなどを⼀定のメンテコス トがかかる • その上でECSのクラスターやタスクを管理 していく IUUQTBXTBNB[PODPNKQCMPHTOFXTBXTGBSHBUFBQSPEVDUPWFSWJFX

Slide 11

Slide 11 text

Fargate IUUQTBXTBNB[PODPNKQCMPHTOFXTBXTGBSHBUFBQSPEVDUPWFSWJFX • ユーザーが意識して管理するのはタスクの 管理 • クラスター管理や使⽤時の最適化も必要な い • ⾃分の使いたいメモリ、vCPUの組み合わ せを指定するだけ後はタスク管理に注⼒で きる • Fargate⾃体はECSに組み込まれているの で新しくAPIを覚えていくみたいな必要は ない

Slide 12

Slide 12 text

⽇本にもきた!!!!

Slide 13

Slide 13 text

移⾏⼿順 • ローカルで動くようにDocker化していく • 今回はNginx, Rails, Hypernovaの3つ • docker-composeで⼀発で⽴ち上がるようにする • ECSでクラスターを作成して新規作成したALBに紐 付ける形で動作検証を⾏う • Routes53で既存のALBとリプレイスを⾏う

Slide 14

Slide 14 text

Docker化 • Packer (https://www.packer.io/) • AMIやDocker Imageなどのマシンイメージを⽣ 成・管理するCLI • EC2で運⽤していた際にAnsibleで実現された資産 があったのでそれを使⽤ • 作成したイメージはECRへPUSH

Slide 15

Slide 15 text

デプロイは何で⾏ったか? • eagletmt/hako • Dockerコンテナをデプロイする ためのツール • YAML, Jsonnetで記載 • 以前ソースを全部読んだことがあり 使い勝⼿が分かっていたので採⽤

Slide 16

Slide 16 text

移⾏出来た

Slide 17

Slide 17 text

移⾏してどうだったか • ホストの管理をしなくても良くなったのでアプリ ケーションに集中できる • DockerImage化することでローカルなどでも同じ環 境で作業が出来るようになった • 何回もデプロイする時にDockerのImageサイズが⼤ きいとpullが毎回遅い • EC2の時はホスト側でキャッシュされていた

Slide 18

Slide 18 text

監視周り • サービス単位ではCPU, メモリ使⽤率などが CloudWatchで取得が出来る • 実⾏しているコンテナ(Rails, Nginx, Hypernova)単 位でメトリクスを取りたい

Slide 19

Slide 19 text

監視周り • Datadog (https://www.datadoghq.com/) • IntegrationによってCloudWatchで取得できるメトリク スを収集できる • コンテナ単位はタスクメタデータを介して取得すること が出来る • お⾦はかかる IUUQTBXTBNB[PODPNKQBCPVUBXTXIBUTOFXBXTGBSHBUFQMBUGPSNWFSTJPO

Slide 20

Slide 20 text

まとめ • Docker化してFargateにのせることでインスタンス の⾯倒を⾒なくても済みアプリケーションの開発に 集中できるようになった • Nginxはリダイレクト⽤途がメインだったので必要 ないかも • ALBでリダイレクトが出来るようになった