Pro Yearly is on sale from $80 to $50! »

fargate運用物語 / Fargate-Story

fargate運用物語 / Fargate-Story

JAWS-UG コンテナ支部 #15 での登壇資料です
https://jawsug-container.connpass.com/event/143245/

88f4e84b94fe07cddbd9e6479d689192?s=128

soudai sone

August 20, 2019
Tweet

Transcript

  1. Fargate運用物語
 ~ 本当にコンテナで幸せになりますか? ~
 JAWS-UG コンテナ支部 #15

  2. What is it?
 結論は突然に


  3. What is it?
 EC2で運用できるならEC2
 EC2で困ってるならコンテナ


  4. What is it?
 シンプルなサービス構成ならFargate


  5. What is it?
 その理由と運用の話をします


  6. What is it?
 大前提!!
 今日はFargateの細かい説明はありません


  7. あじぇんだ
 1. 自己紹介
 2. EC2よりもFargateを使いたい
 3. Fargateで辛かったこと
 4. Fargateで良かったこと
 5.

    コンテナの勘所
 6. まとめ

  8. あじぇんだ
 1. 自己紹介
 2. EC2よりもFargateを使いたい
 3. Fargateで辛かったこと
 4. Fargateで良かったこと
 5.

    コンテナの勘所
 6. まとめ

  9. 自己紹介
 曽根 壮大(34歳)
 株式会社 オミカレ 副社長 CTO
 
 そ  ね  

    たけ とも
 • 日本PostgreSQLユーザ会 勉強会分科会 担当
 • 3人の子供がいます(長女、次女、長男)
 • 技術的にはWeb/LL言語/RDBMSが好きです
 • コミュニティが好き
  10. 婚活といえばオミカレ
 https://party-calendar.net/

  11. None
  12. 本書きました


  13. 先週のそーだいさん


  14. 明日のそーだいさん


  15. あじぇんだ
 1. 自己紹介
 2. EC2よりもFargateを使いたい
 3. Fargateで辛かったこと
 4. Fargateで良かったこと
 5.

    コンテナの勘所
 6. まとめ

  16. EC2よりもFargateを使いたい
 なぜならば、使いたいからだ


  17. EC2よりもFargateを使いたい
 なぜならば、使いたいからだ


  18. EC2よりもFargateを使いたい
 根拠がないと辛みを重ねるだけ


  19. EC2よりもFargateを使いたい
 EC2で辛かったこと


  20. EC2よりもFargateを使いたい
 • AMIやAnsibleの管理
 • 手元の環境との乖離
 • deployの複雑さ
 よくあるEC2で辛かったこと


  21. EC2よりもFargateを使いたい
 • AMIやAnsibleの管理
 • 手元の環境との乖離
 • deployの複雑さ
 よくあるEC2で辛かったこと


  22. EC2よりもFargateを使いたい
 Ansibleで冪等性を担保すればいいじゃん!


  23. EC2よりもFargateを使いたい
 どんどんオートスケール時の起動が遅くなる


  24. EC2よりもFargateを使いたい
 オートスケール用のAMIを作ろう


  25. EC2よりもFargateを使いたい
 オートスケール用のAMIを作ろう
 ↓
 細かい修正をする度にAMIを作り直すことに


  26. EC2よりもFargateを使いたい
 ロールが増えてくると
 サーバの責務が
 Ansibleの責務を超えてしまいがち


  27. EC2よりもFargateを使いたい
 そもそも冪等性は幻想


  28. EC2よりもFargateを使いたい
 複雑になったAnsibleのメンテは大変
 


  29. EC2よりもFargateを使いたい
 複雑になったAnsibleのメンテは大変
 ↓
 最初にちゃんと設計してることは稀
 (スタートアップだと特にそうだと思う)


  30. EC2よりもFargateを使いたい
 Ansibleはとても便利だけど
 頻繁に環境に手を入れるなら
 コンテナの方が向いてる
 Ansibleも便利だけどね


  31. EC2よりもFargateを使いたい
 • AMIやAnsibleの管理
 • 手元の環境との乖離
 • deployの複雑さ
 よくあるEC2で辛かったこと


  32. EC2よりもFargateを使いたい
 LAMPの時は EC2 & Vagrant でも良かった


  33. EC2よりもFargateを使いたい
 LAMPの時は EC2 & Vagrant でも良かった
 ↓
 APIやデータストア層が増えてくると…


  34. LAMPの頃
 PHP データストア フレームワーク httpd EC2=Vagrant
 
 同じAnsibleを実行すれば良い 
 Web


  35. サービスがスケールしてくると…
 PHP データストア フレームワーク httpd Web
 APIサーバ NoSQL

  36. EC2よりもFargateを使いたい
 1つのVagrantではデカすぎる


  37. EC2よりもFargateを使いたい
 1つのVagrantではデカすぎる
 ↓
 AnsibleとVMもロール単位で分けよう


  38. 乱立するVM
 VM2 VM1 VM3 VM3.5 VM4 VM5 VM5.1 VM6

  39. EC2よりもFargateを使いたい
 なるほど、dockerだ!!


  40. EC2よりもFargateを使いたい
 なるほど、dockerだ!!
 ↓
 Ansibleとdockerの二重管理


  41. EC2よりもFargateを使いたい
 こうやって開発環境と乖離してきた


  42. EC2よりもFargateを使いたい
 • AMIやAnsibleの管理
 • 手元の環境との乖離
 • deployの複雑さ
 よくあるEC2で辛かったこと


  43. EC2よりもFargateを使いたい
 はるか昔、deployツールは神から与えられた
 (当時のエースエンジニアが作った)


  44. EC2よりもFargateを使いたい
 Mackerel Web Web Web deployサーバ github ansible 1. MackerelからWebサーバの一覧を取得

    
 2. Inventoryに登録してAnsibleで対象にdeploy 
 3. githubの該当のmasterをPull 

  45. EC2よりもFargateを使いたい
 8年前のデプロイツール、メンテが属人化


  46. EC2よりもFargateを使いたい
 deployをシンプルにしよう


  47. EC2よりもFargateを使いたい
 Web Web Fargate ECR github CircleCI 1. githubの該当のmasterからコンテナを生成 


    2. ECRのコンテナをECSにdeploy 

  48. EC2よりもFargateを使いたい
 最近っぽい


  49. EC2よりもFargateを使いたい
 なんとdocker fileだけメンテすれば良い!


  50. EC2よりもFargateを使いたい
 幸せ!!最高!!!!


  51. あじぇんだ
 1. 自己紹介
 2. EC2よりもFargateを使いたい
 3. Fargateで辛かったこと
 4. Fargateで良かったこと
 5.

    コンテナの勘所
 6. まとめ

  52. Fargateで辛かったこと
 理論はわかったけど
 現実はそんなに甘くない


  53. Fargateで辛かったこと
 
 • 最初の環境構築
 • トラブルシューティング
 • ログ
 • モニタリング


  54. Fargateで辛かったこと
 知見が全く無い状態でいきなり作った


  55. Fargateで辛かったこと
 知見が全く無い状態でいきなり作った
 ↓
 これは失敗だった(自分が悪いけど)


  56. 知見が無くて失敗したこと
 • 既存とVPCを安易に分けてしまった
 • 作りながら学ぶ状態
 • パフォーマンスの計測が甘かった
 • ネットワークのdebugが大変


  57. 知見が無くて失敗したこと
 • 既存とVPCを安易に分けてしまった
 • 作りながら学ぶ状態
 • パフォーマンスの計測が甘かった
 • ネットワークのdebugが大変
 ALBがVPCを超えてターゲットグループを


    指定するにはルーティングテーブルが必要

  58. 知見が無くて失敗したこと
 • 既存とVPCを安易に分けてしまった
 • 作りながら学ぶ状態
 • パフォーマンスの計測が甘かった
 • ネットワークのdebugが大変
 ECRからdeployするときにAWS内に経由の設定ではまったり…


    サイドカー立てるのにハマったり…
 Terraformがまだ未対応の機能を使ったり…

  59. 知見が無くて失敗したこと
 • 既存とVPCを安易に分けてしまった
 • 作りながら学ぶ状態
 • パフォーマンスの計測が甘かった
 • ネットワークのdebugが大変
 本番リリースしたら障害になった


    オートスケールが間に合わなかった

  60. 知見が無くて失敗したこと
 • 既存とVPCを安易に分けてしまった
 • 作りながら学ぶ状態
 • パフォーマンスの計測が甘かった
 • ネットワークのdebugが大変
 つながらなくてコンテナが落ちた時、


    DNSなのかネットワークのルーティングなのかセ キュリティグループなのか…
 (気軽にPINGやCURLが打てない)

  61. Fargateで辛かったこと
 オートスケールは簡単だけど
 増えるより落ちる方が早い場合に困る
 
 EC2の時はオートスケールとは別に
 落ちないインスタンスを用意してた


  62. Fargateで辛かったこと
 Fargateは高い


  63. Fargateで辛かったこと
 Fargateは高い
 ↓
 特にCPUを増やすと金額が跳ねる!


  64. Fargateで辛かったこと
 ログが気軽に保存できない
 


  65. Fargateで辛かったこと
 ログが気軽に保存できない
 ↓
 CloudWatch Logsか…


  66. Fargateで辛かったこと
 コンテナのdebugしたいけど
 大切なときに(負荷がかかってた)
 君(コンテナ)はもういない


  67. Fargateで辛かったこと
 モニタリングしてチューニングしたいけど
 永続的な情報を取るのは難しい


  68. Fargateで辛かったこと
 知見が全く無い状態でいきなり作った


  69. Fargateで辛かったこと
 知見が全く無い状態でいきなり作った
 ↓
 最初はECSで作るべきだったなと思う


  70. あじぇんだ
 1. 自己紹介
 2. EC2よりもFargateを使いたい
 3. Fargateで辛かったこと
 4. Fargateで良かったこと
 5.

    コンテナの勘所
 6. まとめ

  71. Fargateで良かったこと
 もちろん当初の目的(前述)を
 達成したメリットは大きい


  72. Fargateで良かったこと
 さらに運用が回りだせば
 得る物も多い


  73. Fargateで良かったこと
 本番にあるコンテナは全て同じ


  74. Fargateで良かったこと
 本番にあるコンテナは全て同じ
 ↓
 つまり、バージョンを固定することも
 常に最新にすることもコントロールしやすい


  75. Fargateで良かったこと
 本番にあるコンテナは全て同じ
 ↓
 つまり、バージョンを固定することも
 常に最新にすることもコントロールしやすい
 弊社は常に最新のパッケージを使ってます
 つまりセキュアになるし、Fargateはホストのことを 考えなくても良い


  76. Fargateで良かったこと
 ロールバックが簡単
 ECRの履歴を使って戻せる
 (buildやコードの調整は不要)


  77. Fargateで良かったこと
 コンテナは外に閉じているし
 ホスト無いので
 EC2よりも守りやすい


  78. Fargateで良かったこと
 stagingや開発環境の複製が簡単


  79. Fargateで良かったこと
 stagingや開発環境の複製が簡単
 ↓
 パートナーにも環境を提供しやすい
 (これはFargateってよりコンテナ)


  80. Fargateで良かったこと
 CI/CDの環境構築がより簡単に


  81. Fargateで良かったこと
 CI/CDの環境構築がより簡単に
 ↓
 サービスの品質向上へ


  82. Fargateで良かったこと
 Fargateは一旦置いても
 コンテナを利用するメリットは多い


  83. あじぇんだ
 1. 自己紹介
 2. EC2よりもFargateを使いたい
 3. Fargateで辛かったこと
 4. Fargateで良かったこと
 5.

    コンテナの勘所
 6. まとめ

  84. コンテナの勘所
 段階的に学ぶことが大事


  85. コンテナの勘所


  86. コンテナの勘所
 テストが楽になる!


  87. コンテナの勘所
 テストが楽になる!
 ↓
 御社ちゃんとテストあります?
 (テストが無いとメリットが弱い)


  88. コンテナの勘所
 ネットワークとログの設計は
 コンテナの方が難しい
 (無限にCloudWatchに頼るとしても)


  89. コンテナの勘所
 油断するとサイドカーを増やしたくなる


  90. コンテナの勘所
 それ、レンタルサーバで出来るよ


  91. コンテナの勘所
 それ、レンタルサーバで出来るよ
 ↓
 他にもPaaSやFaaSでも良い


  92. コンテナの勘所
 自分たちの解決したい問題の
 スコープを大事にする


  93. コンテナの勘所
 コンテナ技術を使うなら
 仕組み化が重要
 (状態を持たないからこそ仕組み化しやすい)


  94. あじぇんだ
 1. 自己紹介
 2. EC2よりもFargateを使いたい
 3. Fargateで辛かったこと
 4. Fargateで良かったこと
 5.

    コンテナの勘所
 6. まとめ

  95. まとめ
 コンテナ技術は使えばいいと言うものではない


  96. まとめ
 自分たちの解決したい課題に合わせる


  97. まとめ
 自分たちの解決したい課題に合わせる
 ↓
 一部から使うことでもメリットはある
 (例えば開発環境でdockerとか)


  98. まとめ
 運用のことは考えよう


  99. まとめ
 技術で課題を解決する


  100. まとめ
 ご清聴ありがとうございました