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

個人サービスをFargateに移行したよ

 個人サービスをFargateに移行したよ

Repro Tech Meetup #1 Docker
#reprotech

hatappi

July 27, 2018
Tweet

More Decks by hatappi

Other Decks in Programming

Transcript

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

    View full-size slide

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

    View full-size slide

  3. IUUQTTQFBLFSEFDLDPNIBUBQQJSBJMTQMVTUZQFTDSJQUQMVTSFBDUQMVTIZQFSOPWBEFTIJNFSVTTSSBJIV
    Rails Developers Meetup 2018 

    Day 3 Extreme

    View full-size slide

  4. 時間は有限!!

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  7. 下回りのインスタンス群の管理を

    ⾃分で管理しなくても良くなる

    View full-size slide

  8. EC2 => Fargate
    IUUQTBXTBNB[PODPNKQCMPHTOFXTBXTGBSHBUFBQSPEVDUPWFSWJFX

    View full-size slide

  9. 今までのECS
    • Amazon ECSに対応したAMIでインスタン
    スをAuto Scaling グループなどで⽴てる必
    要があった
    • AMIも⾃前で⽤意する場合はECS Agentや
    docker daemonなどを⽤意する必要があ

    • AMIを固定で使⽤している場合はECS
    AgentのUpdateなどを⼀定のメンテコス
    トがかかる
    • その上でECSのクラスターやタスクを管理
    していく
    IUUQTBXTBNB[PODPNKQCMPHTOFXTBXTGBSHBUFBQSPEVDUPWFSWJFX

    View full-size slide

  10. Fargate
    IUUQTBXTBNB[PODPNKQCMPHTOFXTBXTGBSHBUFBQSPEVDUPWFSWJFX
    • ユーザーが意識して管理するのはタスクの
    管理
    • クラスター管理や使⽤時の最適化も必要な

    • ⾃分の使いたいメモリ、vCPUの組み合わ
    せを指定するだけ後はタスク管理に注⼒で
    きる
    • Fargate⾃体はECSに組み込まれているの
    で新しくAPIを覚えていくみたいな必要は
    ない

    View full-size slide

  11. ⽇本にもきた!!!!

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  15. 移⾏出来た

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide