devopsとか言う前にawsエンジニアに知ってほしいアプリケーションのこと

91

Click here to load reader

Upload: terui-masashi

Post on 12-Apr-2017

10.570 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと
Page 2: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

Masashi Terui @ marcy_teruiI’m a Developer and Cloud Architect.

I’m a Remote-Muliti-Worker at Serverworks Co., Ltd. and Freelance. I’m a member of JAWS-UG and GCPUG.

I’m a best cloud engineer in Hokkaido!!(でありたい) I’m 30 years old. I’m a father of my son and daughter.

2

Page 3: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

3

AWSエンジニアの現状

AWSエンジニアの価値

アプリケーションのこととか

DevOpsとはなんだったのか

Page 4: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

4

Page 5: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

5

AWS Summit Tokyoのメインメッセージ(私見)

2014年「クラウドファースト」

2015年「ニューノーマル」

2016年「もう当たり前だから特になし(たぶん)」

Page 6: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

6

AWSJ「市場の拡大期に入った」とパートナー数の増大強化を発表

2016年1月パートナー数 約300→約400

http://www.publickey1.jp/blog/16/post_aws.html

Page 9: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

9

Page 10: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

10

Page 11: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

11

Page 12: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

12

Page 13: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

13

Page 14: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

14

固定の償却コストが変動コストに スケールによる大きなコストメリット キャパシティ予測が不要に 速度と迅速性の向上 データセンターの運用と保守への投資が不要に わずか数分で世界中にデプロイ https://aws.amazon.com/jp/cloud/ (クラウド導入のメリットより)

Page 15: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

15

Page 16: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

16

Page 17: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

17

固定の償却コストが変動コストに → 落とせない スケールによる大きなコストメリット → スケールできない キャパシティ予測が不要に      → 同上 速度と迅速性の向上         → 変化に柔軟ではない DCの運用と保守への投資が不要に   → 手がかかる わずか数分で世界中にデプロイ    → デプロイに時間がかかる

Page 18: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

18

Page 19: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

19

Page 20: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

20

Page 21: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

21

Page 22: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

22

Page 23: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

23

Page 24: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

24

Page 25: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

25

Page 26: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

26

Page 27: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

27

Page 28: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

28

Page 29: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

29

Page 30: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

30

Page 31: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

31

Page 32: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

32

Page 33: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

33

Page 34: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

34

Page 35: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

35

Page 36: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

36

Page 37: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

37

RDSのデフォルトパラメータは最大公約数

本当に適したパラメータはワークロードによって異なる

ワークロードを知るにはどうすれば良い?

実際に流れているクエリを全て記録して解析する?

Page 38: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

38

Page 39: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

39

どのようなクエリが多いと予想できるか?

人気ブログサイト

商品数の多いECサイト

DAUの多いソーシャルサービス

社内情報管理系

Page 40: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

40

これらの機能はどうやってできている?

ランキング

カテゴライズ

閲覧履歴

お友達機能

商品別売上集計

Page 41: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

41

Page 42: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

42

想定されるデータ量はどうか?

各機能の利用頻度はどうか?

今後、要求が変化する可能性はあるか?

データの鮮度に対する要求はどうか?(→キャッシュ、バッチ処理)

などなど

Page 43: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

43

Page 44: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

44

データベースについて

リレーショナルモデル

インデックスの仕組み

実行計画の見方

エンジン毎の特性

アプリケーションについて

SQLの読み方・書き方

データ構造に対する理解

アルゴリズム

DBライブラリに対する理解

Page 45: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

45

Page 46: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

46

RDBとNoSQLは使い分け それぞれ得意なデータ構造や操作がある NoSQLで失敗する例は大抵RDBの置き換えをしようとして失敗する それぞれが得意な領域だけオフロードする DBの種類が増えてもマネージドに寄せれば運用負荷は軽減できる トランザクションが本当に必要かどうかは一考の価値がある JOINができない、結果整合性だからといって本当に使えないのか?レプリケーションとシャーディングをしたMySQLも同じでは?

Page 47: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

47

Page 48: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

48

Page 49: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

49

Page 50: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

50

Page 51: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

51

Page 52: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

52

Page 53: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

53

Page 54: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

54

Page 55: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

55

Page 56: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

56

Page 57: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

57

Memcached, RedisなどのインメモリKVS

読み書きの多いSessionデータの格納

中間データの一時的保持

DBの問い合わせ結果や加工済みデータをキャッシュする

Page 58: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

58

RedisとMemcachedは併せて語られることが多いが別物 ステート共有とKey-ValueなCacheだけならMemcached(運用も考慮) 本当に永続化しないといけないか考える Redisは多様なデータ型やデータ操作という観点で選ぶ(Sorted set, Increment/Decrement, アトミックなデータ操作、Pub/Subなどなど)

↑を活かせるならRedisを選ぶべき

Page 59: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

59

Page 60: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

60

基本だけど、複数台構成では共有する必要がある

NFSは単一障害点になるからダメ

運用で死ねるからダメなやつ(GlusterFS, s3fs等)

オブジェクトストレージをAPIで操作するのが一番確実 一時的な認証でクライアントに直接アクセスさせたりする手も

けど、ここの実装コストが見えていないと適切な提案ができない

Page 61: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

61

Page 62: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

62

Page 64: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

64

Page 65: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

65

Page 66: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

66

Page 67: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

67

Page 68: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

68

Page 69: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

69

Page 70: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

70

Page 71: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

71

アプリケーションに合わせたキャッシュ設定 URL, GETパラメータ, Cookieなどの利用状況の把握

キャッシュしやすいアプリケーション設計 分かりやすいURLパターン 動的処理をPOSTやPUTに寄せる などなど

Page 72: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

72

Page 73: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

73

Page 74: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

74

開発と運用のコラボレーション?

コード化・自動化?

インフラエンジニアはコードを書けないといけない?

Page 75: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

75

Page 76: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

76

固定の償却コストが変動コストに → 落とせない スケールによる大きなコストメリット → スケールできない キャパシティ予測が不要に      → 同上 速度と迅速性の向上         → 柔軟ではない DCの運用と保守への投資が不要に   → 手がかかる わずか数分で世界中にデプロイ    → デプロイに時間がかかる

Page 77: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

77

開発と運用のコラボレーション?→ 適切にスケール・変化に強くなるために必要 コード化・自動化?→ 迅速・安全にデプロイするために必要 インフラエンジニアはコードを書けないといけない?→ アプリケーションを理解するために必要

Page 78: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

78

Page 79: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

79

Page 80: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

80

Page 81: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

81

まずは「そのまま乗せる」というアプローチは間違っていない 載せないことには結果も何もない いきなりアプリケーションに手/口を出せることは少ない しかし、それをそのままにしておくと成功体験を損なう 信頼関係を築いて、改善していくというアプローチも必要

Page 82: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

82

Page 83: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

83

「流行りのFWでHello world」して満足してませんか? 自分が関わるアプリケーションのコードを読んでみる ゼロからデプロイして「面倒だな」と思った所を改善してみる 性能劣化時にSlow Queryを見てSQL発行元まで特定してみる あわよくば直してみちゃう 個人プロダクトを作ってみる(そして、運用してみる)

Page 84: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

84

Page 85: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

85

クラウドは普及期・幻滅期に入っている

クラウドに適したアプリケーションを載せて成功するのはもう当たり前

そうではないものに対し、さらに踏み込んだ価値を提供する必要がある

DevOpsは結果を出すための手段であって目的ではない

そのために、アプリケーションを知ろう

Page 86: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

86

Page 87: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

87

Page 88: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

88

アプリケーション開発の世界は、他者への依存を強めることで発展してきた歴史がある 低級言語 → 高級言語(コンパイラの進化に伴うマシン語の隠蔽)フルスクラッチ→フレームワーク・ライブラリ クラウドもこの流れのインフラ版 インフラを他社に依存することで新しい価値にフォーカスする この流れを突き詰めていくとServerlessに繋がる

Page 89: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

89

Page 90: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと

90

Page 91: DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと