海月暮らし

クラゲのように生きていたいエンジニアもどきのブログ

JAWS-UG コンテナ支部 #10に参加しました。

このブログは https://minamo173.com に移転しました。
この記事は下記に移転しました。

JAWS-UG コンテナ支部 10に参加しました。 | 海月暮らし

行ってきました!

jawsug-container.connpass.com

re:Invent recap

  • re:inventはマーケティングイベントではなく学習型カンファレンス
  • AWSはコンテナのエコシステムを構築していく
  • なぜコンテナが愛されているのか?

    • 12 factor Appへの道が開かれる
    • ほとんどのマシンで同様に実行することができる
  • グローバルだと大規模な移行が行われている

  • ECSのフィードバックで最も多いのはアプリケーションの開発に集中したい

  • さらに集中できるようにするために、AWS Fargateがリリースされた

    • OSのパッチ管理が不要
    • クラスタの管理が不要
    • よりコンテナの部分にフォーカスできるようになった
  • FargateはECSと連携できるように開発された

  • 課金基準はCPUとメモリ、秒単位の課金

  • Fargateのユースケース

    • マイクロサービス
    • バッチジョブ
    • オンプレからクラウドへの移行
  • どうやってFargateを動かすのか?

    • ECSでFargateにするかEC2にするかを選べる
    • 今までEC2で起動させていても、簡単に移行できる
    • ロードバランサーも今まで通り使える
  • レイヤーの異なる3つのパーミッションがある

  • コンテナのレジストリ

    • ECR
    • Docker Hubなどなど
  • FargateかEC2を選ぶ時は、Fargateで難しいもの以外はFargateでOK

  • FargateかLambdaを選ぶ場合について

  • ECS, FargateのSLA99.99%

  • kubernetesはオープンソースのコンテナ管理プラットフォーム

  • コンテナの大規模な運用に有用
  • モダンなアプリケーション開発のための基本要素を提供

  • CNCFの調査によるとAWSでkubernetesを利用しているユーザーが63%がいた

  • 「kubernetesがもっとAWSで使いやすかったらもっと開発に専念できるのに」
  • オープンソースのKubernetesのエコシステムはそのまま使い続けたい」
  • そこでEKS(Elastic Container Service for Kubernetes)登場
  • 略称になるとKubernetesのKがなぜ真ん中にあるのかはわからない

  • EKSの意思決定の原則

    • EKSはエンタープライズ企業が本番運用するためのプラットフォームであること
    • EKSはネイティブで最新のKubernetesの体験を提供すること
    • EKSユーザがAWSサービスを使う時、シームレスな連携を実現し不要な作業を取り除くこと
    • EKSチームは積極的にKubernetesプロジェクトに貢献していくこと
  • 簡単にKubernetesを操作できるAPIが用意されている

  • FargateのEKSサポートは2018年予定

  • Masterのconfiguration等は不要

  • master nodeのconfigurationはどうやって見るの?
    • 他のサービスと連携がされている
  • Kubernetesのアドオンは使える
  • オートスケーリングなどは自分で考慮する必要がある
  • provisionはどうすれば?
  • ネットワークの設定は?
  • CNIプラグイン(現在プレビュー)のものを使うことで既存のVPCを利用できたりする
  • Podに対してVPCのIPを割り当てられる
  • Project Calicoを使うと良さそう
  • Security Group相当のことができる

  • IAMの認証は?

    • 認証はIAMでできる
    • 認可はKubernetes側でやる

X-Ray で俺を見ろ!

  • X-Rayとは、リクエストを収集して分析することができるサービス
    • パフォーマンスの問題点の洗い出し
  • 従来の巨大なモノリシックなシステムから脱却していく流れ
  • その分マイクロサービスが増えて管理する数が増える
  • システム全体としての振る舞いを把握することが難しい
  • X-Rayを使えばシステム全体の振る舞いを確認できる
  • 障害発生時の原因究明を可視化しやすい
  • 使うには?
  • daemonを立てる必要がある
  • LambdaでのX-Rayの導入はお手軽

X-RayとECS

  • X-Rayコンテナの入ってるホストが死んでしまったら?を想定する
  • X-RayUDPを使っていて、各ロードバランサーは対応していない
  • X-Rayコンテナをアプリケーションのコンテナとセットで立てることに

AWSコンポーネントが複数の場合

  • サービスマップがぶつ切りになるのは美しくなく、活かしきれていない
  • X-RayのTrace IDを使う
  • Trace IDはX-Rayトランザクションにつく固有のID
  • Trace IDを次に続く処理に渡して、1つの処理としてみなすことができる
  • CloudWatchに一緒にTrace IDを吐き出しておくと、エラー原因が掴みやすくなる

AWS Fargateで損する人得する人

speakerdeck.com

  • スタディサプリENGLISH: 2年くらい前にリリースでECSで稼働中
  • サービスが順調に伸びてきて、提供するコースが増えてきた
  • DBも分割して、ひとつのDBに集中してしまうことがなくなった
  • Taskを詰め込むには、EC2のインスタンスタイプが必然的に大きくなる
  • デプロイに余剰なコストがかかる
  • スケールインしにくい
    • draining対象を選べない(drainingガチャ!)
  • Fargateはクラスタを作らなくていい
  • Fargateを使った方が14%割高だった
    • 人件費を考えたらまあまあ…?
  • 秒課金なので一時的に増える分はほぼ無視できる
  • サービス一つずつじゃなく全サービス並列でデプロイできるので効率が上がる
  • Draining対象を考えなくていい
  • スケールイン・アウトを減らす
  • 夜中はtaskをへらすなどでコスト対策
  • 本当はELBも作りたくない
  • Dockerfileだけを書けば良い世界に行きたい

AWS ECS + Ansible でお手軽 Blue-Green Deployment

  • AnsibleのPlaybookはInventory, Variable, Role から構成される
  • ECSをAnsibleで管理してみる
  • ALBに紐付いたnginxを使ったWebサーバーをBlue-Green Deploymentしてみる
  • BlueとGreen用のInvetory, Variableのファイルを用意、Roleは共通のものを使う
  • Ansibleは2017/12/12時点ではFargate未対応

ECS Events & Lambda でカジュアルにはじめるコンテナスケジューラー

speakerdeck.com

  • CloudWatch Eventsの一種
  • ECS Cluster内のイベントに応じて発火
  • ライブ廃止基盤の裏側がECS
    • EC2から移行した
  • 配信という性質上、常時接続(RTMP
  • Auto Scalingと相性が悪い
  • タスクごとに生存期間を設定
  • 一定時間が過ぎると接続させないようにする
  • Taskの状態変化に応じて監視 ON / OFF
    • ここでTask Eventsを利用
  • StopedReasonは公式ドキュメントに詳しく書いてある
  • FargateもTask Eventsが流れる

AWS Cloud9で手軽にコンテナ開発してみる

  • \スライドはありません/
  • 「Fargate 東京リージョン欲しい人?」 ノノノノノノ(挙手の嵐)
  • npm install する時など、Cloud9で実行すればクラウド上でダウンロードを始めるので速くてパケ死しなくて済む
  • クラウド上からDockerイメージ、デプロイ出来るので楽なんじゃないかな
    • ローカルにDocker入れる必要すらない

Fargate いいよ Fargate

speakerdeck.com

  • Cloud9をFargateで動かす
  • Cloud9もサーバレスにしちゃおう
  • 思ったより良い点より制約があった
  • 最高の開発環境づくりは容易ではない
    • Docker on Cloud9, Fargate ができれば、社内以外にもパケ死しない開発環境を配布しやすくなるのでは

awsvpcモードでリソースから自由になりたい

  • 証券あるあるで専用線を引かされる
  • 11月にawsvpcモードが登場
  • 日本語版ブログが出る前にTerraformにawsvpcモードに対応するプルリクを出した
  • 従来のホストインスタンスからNI分離させた感じ
  • 今後awsvpcに期待すること

雑感

  • やっぱりFargateは注目のサービスなのかなと思いました。

    • 普段ECS等クラウド上でコンテナを使う機会がないのであまり深く理解は出来ていないのですが、EC2が抽象化されるのは大きいことなのですね。
    • 確かにEC2立てるほどじゃないけど、Lambdaだと物足りないかなと思う場面もあるので、お試しで触ってみようと思いました。
  • X-Rayを使うほどの規模のサーバレスな構成に触れる機会がなく、お試し程度でしかX-Rayは使ったことがないのですが、もしも規模の大きいサーバレス構成を使うことになった場合には、パフォーマンスを確認できて、より改善しやすくデバッグしやすい状態にできそうなのは効率良く開発できそうです。

  • Cloud9はLambdaやCodeCommit等のエディタ部分が強化されて便利だなと思っていたのですが、確かにDocker開発に使うのもいいですね。

    • docker pull/push は環境によっては本当時間が掛かるので、クラウド上で実行するメリットは確かにあるなと納得できました。
    • Cloud9はAWSに買収される前から利用していたのですが、買収されて色んなメリットが生まれつつあるようなので、全然縁もゆかりもないのですが、何だか嬉しいです(?)

会場の挙手アンケートでAWSでKubernetes使ってる方があまりいなくて、「他のクラウドで使ってる人は〜?」となったら、少し増えたので結構他のクラウドで使ってる人が多いのかなとツイートをしたらリプライを頂きました。

確かに2016年11月まではGoogle(GCE/GKE)の勢いが強いものの、Amazon(ECS/EC2)は2017年12月までずっと伸び続けているんですね。
EKSでのKubernetesの対応は今後の調査結果にどんな影響を及ぼすのかとても気になります。

あらためてコンテナ支部を開いてくださったみなさま、登壇者のみなさま、有難うございました!