Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

13,178 views

Published on

JAWS Days 2017

Published in: Technology
  • Be the first to comment

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

  1. 1. Masashi Terui @ marcy_terui I’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
  2. 2. 3 AWSエンジニアの現状 AWSエンジニアの価値 アプリケーションのこととか DevOpsとはなんだったのか
  3. 3. 4
  4. 4. 5 AWS Summit Tokyoのメインメッセージ(私見) 2014年「クラウドファースト」 2015年「ニューノーマル」 2016年「もう当たり前だから特になし(たぶん)」
  5. 5. 6 AWSJ「市場の拡大期に入った」とパートナー数の増大強化を発表 2016年1月パートナー数 約300→約400 http://www.publickey1.jp/blog/16/post_aws.html
  6. 6. 7 この辺
  7. 7. 8
  8. 8. 9
  9. 9. 10
  10. 10. 11
  11. 11. 12
  12. 12. 13
  13. 13. 14 固定の償却コストが変動コストに スケールによる大きなコストメリット キャパシティ予測が不要に 速度と迅速性の向上 データセンターの運用と保守への投資が不要に わずか数分で世界中にデプロイ https://aws.amazon.com/jp/cloud/ (クラウド導入のメリットより)
  14. 14. 15
  15. 15. 16
  16. 16. 17 固定の償却コストが変動コストに → 落とせない スケールによる大きなコストメリット → スケールできない キャパシティ予測が不要に      → 同上 速度と迅速性の向上         → 変化に柔軟ではない DCの運用と保守への投資が不要に   → 手がかかる わずか数分で世界中にデプロイ    → デプロイに時間がかかる
  17. 17. 18
  18. 18. 19
  19. 19. 20
  20. 20. 21
  21. 21. 22
  22. 22. 23
  23. 23. 24
  24. 24. 25
  25. 25. 26
  26. 26. 27
  27. 27. 28
  28. 28. 29
  29. 29. 30
  30. 30. 31
  31. 31. 32
  32. 32. 33
  33. 33. 34
  34. 34. 35
  35. 35. 36
  36. 36. 37 RDSのデフォルトパラメータは最大公約数 本当に適したパラメータはワークロードによって異なる ワークロードを知るにはどうすれば良い? 実際に流れているクエリを全て記録して解析する?
  37. 37. 38
  38. 38. 39 どのようなクエリが多いと予想できるか? 人気ブログサイト 商品数の多いECサイト DAUの多いソーシャルサービス 社内情報管理系
  39. 39. 40 これらの機能はどうやってできている? ランキング カテゴライズ 閲覧履歴 お友達機能 商品別売上集計
  40. 40. 41
  41. 41. 42 想定されるデータ量はどうか? 各機能の利用頻度はどうか? 今後、要求が変化する可能性はあるか? データの鮮度に対する要求はどうか?(→キャッシュ、バッチ処理) などなど
  42. 42. 43
  43. 43. 44 データベースについて リレーショナルモデル インデックスの仕組み 実行計画の見方 エンジン毎の特性 アプリケーションについて SQLの読み方・書き方 データ構造に対する理解 アルゴリズム DBライブラリに対する理解
  44. 44. 45
  45. 45. 46 RDBとNoSQLは使い分け それぞれ得意なデータ構造や操作がある NoSQLで失敗する例は大抵RDBの置き換えをしようとして失敗する それぞれが得意な領域だけオフロードする DBの種類が増えてもマネージドに寄せれば運用負荷は軽減できる トランザクションが本当に必要かどうかは一考の価値がある JOINができない、結果整合性だからといって本当に使えないのか?
 レプリケーションとシャーディングをしたMySQLも同じでは?
  46. 46. 47
  47. 47. 48
  48. 48. 49
  49. 49. 50
  50. 50. 51
  51. 51. 52
  52. 52. 53
  53. 53. 54
  54. 54. 55
  55. 55. 56
  56. 56. 57 Memcached, RedisなどのインメモリKVS 読み書きの多いSessionデータの格納 中間データの一時的保持 DBの問い合わせ結果や加工済みデータをキャッシュする
  57. 57. 58 RedisとMemcachedは併せて語られることが多いが別物 ステート共有とKey-ValueなCacheだけならMemcached(運用も考慮) 本当に永続化しないといけないか考える Redisは多様なデータ型やデータ操作という観点で選ぶ
 (Sorted set, Increment/Decrement, アトミックなデータ操作、Pub/Subなどなど) ↑を活かせるならRedisを選ぶべき
  58. 58. 59
  59. 59. 60 基本だけど、複数台構成では共有する必要がある NFSは単一障害点になるからダメ 運用で死ねるからダメなやつ(GlusterFS, s3fs等) オブジェクトストレージをAPIで操作するのが一番確実 一時的な認証でクライアントに直接アクセスさせたりする手も けど、ここの実装コストが見えていないと適切な提案ができない
  60. 60. 61
  61. 61. 62
  62. 62. 63
  63. 63. 64
  64. 64. 65
  65. 65. 66
  66. 66. 67 ・
  67. 67. 68
  68. 68. 69
  69. 69. 70
  70. 70. 71 アプリケーションに合わせたキャッシュ設定 URL, GETパラメータ, Cookieなどの利用状況の把握 キャッシュしやすいアプリケーション設計 分かりやすいURLパターン 動的処理をPOSTやPUTに寄せる などなど
  71. 71. 72
  72. 72. 73
  73. 73. 74 開発と運用のコラボレーション? コード化・自動化? インフラエンジニアはコードを書けないといけない?
  74. 74. 75
  75. 75. 76 固定の償却コストが変動コストに → 落とせない スケールによる大きなコストメリット → スケールできない キャパシティ予測が不要に      → 同上 速度と迅速性の向上         → 柔軟ではない DCの運用と保守への投資が不要に   → 手がかかる わずか数分で世界中にデプロイ    → デプロイに時間がかかる
  76. 76. 77 開発と運用のコラボレーション?
 → 適切にスケール・変化に強くなるために必要 コード化・自動化?
 → 迅速・安全にデプロイするために必要 インフラエンジニアはコードを書けないといけない?
 → アプリケーションを理解するために必要
  77. 77. 78
  78. 78. 79
  79. 79. 80
  80. 80. 81 まずは「そのまま乗せる」というアプローチは間違っていない 載せないことには結果も何もない いきなりアプリケーションに手/口を出せることは少ない しかし、それをそのままにしておくと成功体験を損なう 信頼関係を築いて、改善していくというアプローチも必要
  81. 81. 82
  82. 82. 83 「流行りのFWでHello world」して満足してませんか? 自分が関わるアプリケーションのコードを読んでみる ゼロからデプロイして「面倒だな」と思った所を改善してみる 性能劣化時にSlow Queryを見てSQL発行元まで特定してみる あわよくば直してみちゃう 個人プロダクトを作ってみる(そして、運用してみる)
  83. 83. 84
  84. 84. 85 クラウドは普及期・幻滅期に入っている クラウドに適したアプリケーションを載せて成功するのはもう当たり前 そうではないものに対し、さらに踏み込んだ価値を提供する必要がある DevOpsは結果を出すための手段であって目的ではない そのために、アプリケーションを知ろう
  85. 85. 86
  86. 86. 87
  87. 87. 88 アプリケーション開発の世界は、
 他者への依存を強めることで発展してきた歴史がある 低級言語 → 高級言語(コンパイラの進化に伴うマシン語の隠蔽)
 フルスクラッチ→フレームワーク・ライブラリ クラウドもこの流れのインフラ版 インフラを他社に依存することで新しい価値にフォーカスする この流れを突き詰めていくとServerlessに繋がる
  88. 88. 89 
 

  89. 89. 90

×