Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

What is it?
 結論は突然に


Slide 3

Slide 3 text

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


Slide 4

Slide 4 text

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


Slide 5

Slide 5 text

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


Slide 6

Slide 6 text

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


Slide 7

Slide 7 text

あじぇんだ
 1. 自己紹介
 2. EC2よりもFargateを使いたい
 3. Fargateで辛かったこと
 4. Fargateで良かったこと
 5. コンテナの勘所
 6. まとめ


Slide 8

Slide 8 text

あじぇんだ
 1. 自己紹介
 2. EC2よりもFargateを使いたい
 3. Fargateで辛かったこと
 4. Fargateで良かったこと
 5. コンテナの勘所
 6. まとめ


Slide 9

Slide 9 text

自己紹介
 曽根 壮大(34歳)
 株式会社 オミカレ 副社長 CTO
 
 そ  ね   たけ とも
 ● 日本PostgreSQLユーザ会 勉強会分科会 担当
 ● 3人の子供がいます(長女、次女、長男)
 ● 技術的にはWeb/LL言語/RDBMSが好きです
 ● コミュニティが好き

Slide 10

Slide 10 text

婚活といえばオミカレ
 https://party-calendar.net/

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

本書きました


Slide 13

Slide 13 text

先週のそーだいさん


Slide 14

Slide 14 text

明日のそーだいさん


Slide 15

Slide 15 text

あじぇんだ
 1. 自己紹介
 2. EC2よりもFargateを使いたい
 3. Fargateで辛かったこと
 4. Fargateで良かったこと
 5. コンテナの勘所
 6. まとめ


Slide 16

Slide 16 text

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


Slide 17

Slide 17 text

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


Slide 18

Slide 18 text

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


Slide 19

Slide 19 text

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


Slide 20

Slide 20 text

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


Slide 21

Slide 21 text

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


Slide 22

Slide 22 text

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


Slide 23

Slide 23 text

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


Slide 24

Slide 24 text

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


Slide 25

Slide 25 text

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


Slide 26

Slide 26 text

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


Slide 27

Slide 27 text

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


Slide 28

Slide 28 text

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


Slide 29

Slide 29 text

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


Slide 30

Slide 30 text

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


Slide 31

Slide 31 text

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


Slide 32

Slide 32 text

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


Slide 33

Slide 33 text

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


Slide 34

Slide 34 text

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


Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

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


Slide 37

Slide 37 text

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


Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

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


Slide 40

Slide 40 text

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


Slide 41

Slide 41 text

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


Slide 42

Slide 42 text

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


Slide 43

Slide 43 text

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


Slide 44

Slide 44 text

EC2よりもFargateを使いたい
 Mackerel Web Web Web deployサーバ github ansible 1. MackerelからWebサーバの一覧を取得 
 2. Inventoryに登録してAnsibleで対象にdeploy 
 3. githubの該当のmasterをPull 


Slide 45

Slide 45 text

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


Slide 46

Slide 46 text

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


Slide 47

Slide 47 text

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


Slide 48

Slide 48 text

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


Slide 49

Slide 49 text

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


Slide 50

Slide 50 text

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


Slide 51

Slide 51 text

あじぇんだ
 1. 自己紹介
 2. EC2よりもFargateを使いたい
 3. Fargateで辛かったこと
 4. Fargateで良かったこと
 5. コンテナの勘所
 6. まとめ


Slide 52

Slide 52 text

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


Slide 53

Slide 53 text

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


Slide 54

Slide 54 text

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


Slide 55

Slide 55 text

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


Slide 56

Slide 56 text

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


Slide 57

Slide 57 text

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


Slide 58

Slide 58 text

知見が無くて失敗したこと
 ● 既存とVPCを安易に分けてしまった
 ● 作りながら学ぶ状態
 ● パフォーマンスの計測が甘かった
 ● ネットワークのdebugが大変
 ECRからdeployするときにAWS内に経由の設定ではまったり…
 サイドカー立てるのにハマったり…
 Terraformがまだ未対応の機能を使ったり…


Slide 59

Slide 59 text

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


Slide 60

Slide 60 text

知見が無くて失敗したこと
 ● 既存とVPCを安易に分けてしまった
 ● 作りながら学ぶ状態
 ● パフォーマンスの計測が甘かった
 ● ネットワークのdebugが大変
 つながらなくてコンテナが落ちた時、
 DNSなのかネットワークのルーティングなのかセ キュリティグループなのか…
 (気軽にPINGやCURLが打てない)


Slide 61

Slide 61 text

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


Slide 62

Slide 62 text

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


Slide 63

Slide 63 text

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


Slide 64

Slide 64 text

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


Slide 65

Slide 65 text

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


Slide 66

Slide 66 text

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


Slide 67

Slide 67 text

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


Slide 68

Slide 68 text

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


Slide 69

Slide 69 text

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


Slide 70

Slide 70 text

あじぇんだ
 1. 自己紹介
 2. EC2よりもFargateを使いたい
 3. Fargateで辛かったこと
 4. Fargateで良かったこと
 5. コンテナの勘所
 6. まとめ


Slide 71

Slide 71 text

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


Slide 72

Slide 72 text

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


Slide 73

Slide 73 text

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


Slide 74

Slide 74 text

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


Slide 75

Slide 75 text

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


Slide 76

Slide 76 text

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


Slide 77

Slide 77 text

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


Slide 78

Slide 78 text

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


Slide 79

Slide 79 text

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


Slide 80

Slide 80 text

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


Slide 81

Slide 81 text

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


Slide 82

Slide 82 text

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


Slide 83

Slide 83 text

あじぇんだ
 1. 自己紹介
 2. EC2よりもFargateを使いたい
 3. Fargateで辛かったこと
 4. Fargateで良かったこと
 5. コンテナの勘所
 6. まとめ


Slide 84

Slide 84 text

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


Slide 85

Slide 85 text

コンテナの勘所


Slide 86

Slide 86 text

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


Slide 87

Slide 87 text

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


Slide 88

Slide 88 text

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


Slide 89

Slide 89 text

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


Slide 90

Slide 90 text

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


Slide 91

Slide 91 text

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


Slide 92

Slide 92 text

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


Slide 93

Slide 93 text

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


Slide 94

Slide 94 text

あじぇんだ
 1. 自己紹介
 2. EC2よりもFargateを使いたい
 3. Fargateで辛かったこと
 4. Fargateで良かったこと
 5. コンテナの勘所
 6. まとめ


Slide 95

Slide 95 text

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


Slide 96

Slide 96 text

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


Slide 97

Slide 97 text

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


Slide 98

Slide 98 text

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


Slide 99

Slide 99 text

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


Slide 100

Slide 100 text

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