Devがawsと出会ってdev opsを目指した話

  • View
    2.347

  • Download
    0

  • Category

    Software

Preview:

Citation preview

DevがAWSと 出会って

DevOpsを目指した話 えびスタ!#1

2014/12/18 Retty, Inc

梅田昌太 @ebisusurf

1

本日のお品書き

• 前菜 ご挨拶

• メイン サービスの成長とインフラの成長

• デザート AWSを使ってDevOpsを目指す

2

サービスの成長とインフラの成長

AWSを使ってDevOpsを目指す

ご挨拶

3

4

近所から来ました

Rettyって?

• 食を通じて世界中の人々をHappyに

• グルメサービスです!

• AppStore Google PlayへGo!

5

About me@ebisusurf 梅田昌太

AWS &

プリンタ6

About me担当

炒飯

7

About me

8

9

将来の夢

本題

10

サービスの成長とインフラの成長AWSを使ってDevOpsを目指す

ご挨拶

11

まずは今の構成をご紹介

• retty.me(メインサービス)

• owner.retty.me(店舗様向けサービス)

12

CloudFront

RDS

EC2ELB

EB

S3

retty.me

RDS

EC2ELB

RDS

EC2ELB

Nginx Nginx

EMR

MongoDB

ELCmemcached

ELCRedis

Route 53

13

Route 53CloudFront

RDS

EC2ELB

EB

S3

owner.retty.me

RDS

EC2ELB

EMR

ELCRedis

EC2development

14

いきなりこうなった訳ではありません

15

サービス総明記

16

UU ~10万

17

retty.me 信頼と安定の某VPS

MySQL

Apache

Linux

PHP

18

サブドメイン 信頼と安定のレンタルサーバ

Wordpress

19

10万~

20

AWS移行 構成は変わらず(EC2)

MySQL

Apache

Linux

PHP

21

50万~ AWSアーキテクチャに

乗ってみる

22

retty.me

AWSアーキテクチャに少し乗ってみる

23

100万~

24

何かよく解らんけど 様子がおかしいぞ?

25

スケールアウトしてみたretty.me

26

監視もしてみた SotfwareDesign 6月号

Nagios Monit

cloud watch オプションでディスクも監視retty.me

27

なんとかなった

28

200万~400万

29

  奇跡のカーニバル   開  幕  だ  n  ___  n  || /___\ ||  || |(゚) (゚)| || 「「「| \‾‾‾/ 「「「| 「‾|  ‾冂‾  「‾| `ヽ |/‾|‾|‾\| ノ

ここら辺で 一気に火を吹きだした

30

起こった事

31

起こった事

• RDSに書き込んでたロギングが限界

• スケールアウト対応が追いつかない&コスパの良いインスタンスが使えない(EC2が32bitPV、PHP5.3)

• RDSのSlave上限にひっかかる(MySQL5.5)

32

起こった事

• 繰り返される緊急デプロイ

• 信頼と安定のrsync

• 鳴り止まないアラート

• 秘伝のタレが継ぎ足されていくami

33

やった事

34

やった事

35

ElasticBeasntalk でインフラの透明化 (後で話します)

やった事• retty.meのPHP5.3->PHP5.5

• EBで色々選べる(5.3はサポート切れる)

• MySQL5.5->MySQL5.6

• 多段レプリケーション

• ログをfluentd + S3 + MongoDB運用

36

Route 53CloudFront

RDS

EC2ELB

S3

結果こうなった

RDS

EC2ELB

RDS

EC2ELB

EMR

MongoDB

ELCmemcached

最初の図に少し 近づいてますね

EB

37

~500万

38

外部サービス連携

39

Route 53CloudFront

RDS

EC2ELB

EB

S3

retty.me

RDS

EC2ELB

RDS

EC2ELB

Nginx Nginx

EMR

MongoDB

ELCmemcached

ELCRedis

40

Route 53CloudFront

RDS

EC2ELB

EB

S3

ログをTRESUREDATAへ

RDS

EC2ELB

RDS

EC2ELB

中継

MongoDB

41

Route 53CloudFront

RDS

EC2ELB

EB

S3

CIはCircleで

RDS

EC2ELB

RDS

EC2ELB

42

Route 53CloudFront

RDS

EC2ELB

EB

S3

RDS

EC2ELB

RDS

EC2ELB

43

Jenkinsを ホストするのは嫌です

サービスの成長とインフラの成長

AWSを使ってDevOpsを目指す

ご挨拶

44

Devの時間を作るために 捗るサービスを使ってOpsの仕事を減らす

45

オレオレBest3

46

Best3

• Elastic Beanstalk(オートスケール&自動デプロイ)

• RDS(自前でレプリケーション, フェイルオーバとか泣ける)

• S3(EBSを拡張するの避ける)

47

ElasticBeanstalk

48

AWS上のHeroku (そもそもHerokuはry)

49

ElasticBeanstalk

• 一般的な Web アプリケーションに必要 な設定を組んで、Public DNS 名を割り振って URL でアクセスできるようにしてくれます。

50

ElasticBeanstalk

• 作るアプリは Web アプリか? Worker か?

• RDS は必要か? Multi-AZ にする?

• ELBを 使 う か? 1インスタンスで動かすか?

51

ElasticBeanstalk のスタック

Application

Enviroment Enviroment Enviroment

production staging development

52

デプロイは?

53

Application

Enviroment Enviroment Enviroment

git

production staging development

git aws.push

54

git aws.push

• gitのリポジトリをそのままデプロイ

• Enviromentとコミットを指定出来る

• 同一Application内であればブラウザでEnvironment間でデプロイ出来る

55

Elastic Beanstalk Command Line Interface (EB CLI)

3.0

56

eb deploy

EBが無いと私の仕事は回らないくらい便利です

57

大事な事• オートスケールを自在に使いこなす

• レガシーアプリケーションの問題は環境変数に押し込む

• インスタンスを使い捨てにする

• .ebextensionでインスタンスを自在に操る

58

使い捨てにするため ログ系はリアルタイムで送る

59

fluentd

Elastic Beanstalk Mongo&中継

S3

S3

60

.ebextensionsで自由自在• デプロイ時のタスクをymlで記述(chefみたいに抽象化はされてない)

• fluentdのインストール, apacheの設定, local memcached, postfix(やめたい)...etc

commands: 01-install-memcached: command: yum install -y memcached

61

RDS

62

ぶっちゃけ高い

63

それを上回るメリット

• 一度でもMySQLの運用をやった事があればMulti-AZの素晴らしさはすぐわかる

• ほぼメンテフリー

• 気軽にスケールアップ

64

S3

65

EBSででかいインスタンスを用意するのは面倒

• Mongoのdiskが溢れてメンテナンス不可能になった

• 因にs3fsはあまりおすすめしないってamazonの人も言ってた

• S3の運用にちゃんと乗った方が楽

66

最近やったこと (直前追記)

67

1.chat ops

68

chat ops@deploy

69

EB Worker

SQS

please deploy

json post

eb deploy

chat opsの 重要性とは?

70

なぜchat ops?

71

臨時デプロイしてください

OK!

なぜchat ops?

72

臨時デプロイしてください

……

臨時デプロイしてください

臨時デプロイしてください

臨時デプロイしてください

臨時デプロイしてください

臨時デプロイしてください

臨時デプロイしてください

……

臨時デプロイしてください臨時デプロイしてください

臨時デプロイしてください

臨時デプロイしてください臨時デプロイしてください

73

イラっ!

オペレーションのせいで人間関係悪化は

良くない

74

75

botちゃんに やってもらいましょう

2.スポットインスタンス を使ってお得に スケールする

76

スポットインスタンス

• 基本的にはコストに対しては理解してもらいましょう(技術関係なし)

• それでも考える時はRIとスポットインスタンスの組み合わせが効果的

• 但し費用対効果考えると微妙

77

78

r3.largeを例にとると オンデマンドだと$0.175 スポットだと$0.0215

79

r3.largeを例に取ると オンデマンドだと$0.175 スポットだと$0.0215

誰かが釣り上げると落とされます

まとめ

80

Q.AWSを使ってDevOpsを目指す上で

最も重要な事は?

81

immutable infrastructure?

82

infrastructure as

code?

83

A.金84

金で解決する事

• 特にRDSとかRDSとかRDSとか

• 負荷がきつかったらパラメータ一生懸命いじっても余りパフォーマンス上がらない、思い切ってスケールアップ

85

金で解決する事

• アプリケーションサーバはEBとかでほったらかすようにする

• AWSはそれぞれのサービスを有機的に結合させることがとても大事

• S3とかSQSとかIAMとか

86

EC2を立てたら 負けだと思ってる

87

言いたかったこと

88

インフラはAWSを 使い倒して(お任せして)

サービスをガンガン開発しよう!

時間があればおまけ

89

90

Rettyでは 仲間を募集してます

91

Rettyでは 仲間を募集してます

92

Rettyでは 仲間を募集してます

93

Rettyでは 仲間を募集してます

ステッカー持ってます

94

95

二次会のお店は Rettyで!

ありがとうございました

96