Upgrade to Pro — share decks privately, control downloads, hide ads and more …

2019 IaaS Workshop in training for new employee...

iwashi
November 29, 2022

2019 IaaS Workshop in training for new employee at NTT Com

2019年のNTTコミュニケーションズグループの新卒研修資料の一部です。

iwashi

November 29, 2022
Tweet

More Decks by iwashi

Other Decks in Technology

Transcript

  1. クラウドの分類① ・IaaS / Infrastructure as a Service ・もっともベーシック ・他を⽀える基礎として抑えておくのが重要 ・IaaSが向いている機能もある

    ・VM、ネットワーク、ストレージを貸出 ・PaaS / Platform as a Service ・アプリ+ミドルウェア以外をマネージ ・HerokuやGoogle App Engineが有名
  2. クラウドの分類② ・CaaS / Container as a Service / 詳しくは明⽇ ・コンテナの実⾏基盤を提供

    ・主流は Kubernetes をマネージ ・GKE / EKS / AKS と各社出している ・FaaS / Function as a Service / 詳しくは明後⽇ ・関数の実⾏環境を提供 ・AWS Lambda、Google Cloud Functions など ・SaaS / Software as a Service、GitHubとか
  3. オンプレは全部やる、データセンタすら作る データセンタ 物理サーバ 仮想化 OS コンテナ 実⾏環境 アプリ 関数 データ

    ネットワーク ストレージ オンプレ ⾃社は事実、データセンタを多く構築している
  4. ホスティングはデータセンタ内のサーバを拝借 データセンタ 物理サーバ 仮想化 OS コンテナ 実⾏環境 アプリ 関数 データ

    ネットワーク ストレージ オンプレ データセンタ 物理サーバ 仮想化 OS コンテナ 実⾏環境 アプリ 関数 データ ネットワーク ストレージ ホスティング
  5. IaaSはOS以上をユーザがやる データセンタ 物理サーバ 仮想化 OS コンテナ 実⾏環境 アプリ 関数 データ

    ネットワーク ストレージ オンプレ データセンタ 物理サーバ 仮想化 OS コンテナ 実⾏環境 アプリ 関数 データ ネットワーク ストレージ ホスティング データセンタ 物理サーバ 仮想化 OS コンテナ 実⾏環境 アプリ 関数 データ ネットワーク ストレージ IaaS
  6. CaaSはコンテナ以上をユーザが対応 データセンタ 物理サーバ 仮想化 OS コンテナ 実⾏環境 アプリ 関数 データ

    ネットワーク ストレージ オンプレ データセンタ 物理サーバ 仮想化 OS コンテナ 実⾏環境 アプリ 関数 データ ネットワーク ストレージ ホスティング データセンタ 物理サーバ 仮想化 OS コンテナ 実⾏環境 アプリ 関数 データ ネットワーク ストレージ IaaS データセンタ 物理サーバ 仮想化 OS コンテナ 実⾏環境 アプリ 関数 データ ネットワーク ストレージ CaaS
  7. PaaSはアプリだけ⾃分で作る データセンタ 物理サーバ 仮想化 OS コンテナ 実⾏環境 アプリ 関数 データ

    ネットワーク ストレージ オンプレ データセンタ 物理サーバ 仮想化 OS コンテナ 実⾏環境 アプリ 関数 データ ネットワーク ストレージ ホスティング データセンタ 物理サーバ 仮想化 OS コンテナ 実⾏環境 アプリ 関数 データ ネットワーク ストレージ IaaS データセンタ 物理サーバ 仮想化 OS コンテナ 実⾏環境 アプリ 関数 データ ネットワーク ストレージ CaaS データセンタ 物理サーバ 仮想化 OS コンテナ 実⾏環境 アプリ 関数 データ ネットワーク ストレージ PaaS
  8. FaaSは関数だけ⾃分で作る データセンタ 物理サーバ 仮想化 OS コンテナ 実⾏環境 アプリ 関数 データ

    ネットワーク ストレージ オンプレ データセンタ 物理サーバ 仮想化 OS コンテナ 実⾏環境 アプリ 関数 データ ネットワーク ストレージ ホスティング データセンタ 物理サーバ 仮想化 OS コンテナ 実⾏環境 アプリ 関数 データ ネットワーク ストレージ IaaS データセンタ 物理サーバ 仮想化 OS コンテナ 実⾏環境 アプリ 関数 データ ネットワーク ストレージ CaaS データセンタ 物理サーバ 仮想化 OS コンテナ 実⾏環境 アプリ 関数 データ ネットワーク ストレージ PaaS データセンタ 物理サーバ 仮想化 OS コンテナ 実⾏環境 アプリ 関数 データ ネットワーク ストレージ FaaS
  9. SaaSは使いたい機能だけ データセンタ 物理サーバ 仮想化 OS コンテナ 実⾏環境 アプリ 関数 データ

    ネットワーク ストレージ オンプレ データセンタ 物理サーバ 仮想化 OS コンテナ 実⾏環境 アプリ 関数 データ ネットワーク ストレージ ホスティング データセンタ 物理サーバ 仮想化 OS コンテナ 実⾏環境 アプリ 関数 データ ネットワーク ストレージ IaaS データセンタ 物理サーバ 仮想化 OS コンテナ 実⾏環境 アプリ 関数 データ ネットワーク ストレージ CaaS データセンタ 物理サーバ 仮想化 OS コンテナ 実⾏環境 アプリ 関数 データ ネットワーク ストレージ PaaS データセンタ 物理サーバ 仮想化 OS コンテナ 実⾏環境 アプリ 関数 データ ネットワーク ストレージ FaaS データセンタ 物理サーバ 仮想化 OS コンテナ 実⾏環境 アプリ 関数 データ ネットワーク ストレージ SaaS
  10. それぞれに向き不向きがある データセンタ 物理サーバ 仮想化 OS コンテナ 実⾏環境 アプリ 関数 データ

    ネットワーク ストレージ オンプレ データセンタ 物理サーバ 仮想化 OS コンテナ 実⾏環境 アプリ 関数 データ ネットワーク ストレージ ホスティング データセンタ 物理サーバ 仮想化 OS コンテナ 実⾏環境 アプリ 関数 データ ネットワーク ストレージ IaaS データセンタ 物理サーバ 仮想化 OS コンテナ 実⾏環境 アプリ 関数 データ ネットワーク ストレージ CaaS データセンタ 物理サーバ 仮想化 OS コンテナ 実⾏環境 アプリ 関数 データ ネットワーク ストレージ PaaS データセンタ 物理サーバ 仮想化 OS コンテナ 実⾏環境 アプリ 関数 データ ネットワーク ストレージ FaaS データセンタ 物理サーバ 仮想化 OS コンテナ 実⾏環境 アプリ 関数 データ ネットワーク ストレージ SaaS ⼤ ← ⾃由度 → ⼩ ⼤ ← ⼯数→ ⼩
  11. IaaSでは ・GUIをポチポチ or APIを叩くと VMが上がる + NW と ストレージが付属 ・NWもまるごと設計できるので

    ⾃由度は⾮常に⾼い その半⾯、イマイチな設計もしやすい (クラウドの⼒を使いこなせない)
  12. SPOFを避ける ・SPOF / Single Point Of Failure ・⽇本語だと「単⼀障害点」 ・その単⼀箇所が働かないと システム全体が障害となるような箇所

    ・解決⽅法の例 ・冗⻑化 ・落ちても⾃動復旧させる 補⾜) 全てSPOFを避けるのではなく、費⽤対効果でSPOFを許容するケースもある
  13. 圧倒的に重要なDBを冗⻑化 App RDB (Primary) RDB (Secondary) 参考: ・⾊々なDBの冗⻑化 ・ACT/ACT、マルチマスタ ・Primary/Secondary、ACT/SBY

    -> 障害時はFailOver Master/Slave(Slaveという⾔葉がいまいちなので最近使わない) ・使うDBの種類、プロダクトによって異なる
  14. 結果的にこうなる App RDB (Primary) RDB (Secondary) App LB LB DNS

    ラウンド ロビン ・IaaSを使った場合の超基本形
  15. さらにマネージドサービスを使うと… App App DNS ラウンド ロビン※ クラウド 提供LB クラウド 提供DB

    ※ クラウドによってラウンドロビンするかは異なる GCPの場合は、単⼀IPアドレスでIPエニーキャストで対応
  16. そこで各クラウドプロバイダはマネージドを⽤意 ・RDB ・AWS RDS ・GCP CloudSQL ・KVS ・AWS ElastiCache ・GCP

    / Cloud DataStore ・LB ・AWS ALB/NLB/CLB ・GCP LB (その他、SQLで扱えるDBは⾊々あるが割愛) ・⾃動で対応 ・セキュリティ パッチアップデート ・冗⻑化 ・バックアップ
  17. そこで各クラウドプロバイダはマネージドを⽤意 ・RDB ・AWS RDS ・GCP CloudSQL ・KVS ・AWS ElastiCache ・GCP

    / Cloud DataStore ・LB ・AWS ALB/NLB/CLB ・GCP LB (その他、SQLで扱えるDBは⾊々あるが割愛) ・⾃動で対応 ・セキュリティ パッチアップデート ・冗⻑化 ・バックアップ 重要なのは サービス・プロダクトの 本来の価値にリソースを集中すること (サボれる部分はサボる)
  18. I. バージョン管理されている1つのコードベースと複数のデプロイ II. 依存関係を明⽰的に宣⾔し分離する III. 設定を環境変数に格納する IV.バックエンドサービスをアタッチされたリソースとして扱う V. ビルド、リリース、実⾏の3つのステージを厳密に分離する VI.アプリケーションを1つもしくは複数のステートレスなプロセスとして実⾏する

    VII.ポートバインディングを通してサービスを公開する VIII.プロセスモデルによってスケールアウトする IX.⾼速な起動とグレースフルシャットダウンで堅牢性を最⼤化する X. 開発、ステージング、本番環境をできるだけ⼀致させた状態を保つ XI.ログをイベントストリームとして扱う XII.管理タスクを1回限りのプロセスとして実⾏する 参考: 12 Factor Apps の各項⽬
  19. I. バージョン管理されている1つのコードベースと複数のデプロイ II. 依存関係を明⽰的に宣⾔し分離する III. 設定を環境変数に格納する IV.バックエンドサービスをアタッチされたリソースとして扱う V. ビルド、リリース、実⾏の3つのステージを厳密に分離する VI.アプリケーションを1つもしくは複数のステートレスなプロセスとして実⾏する

    VII.ポートバインディングを通してサービスを公開する VIII.プロセスモデルによってスケールアウトする IX.⾼速な起動とグレースフルシャットダウンで堅牢性を最⼤化する X. 開発、ステージング、本番環境をできるだけ⼀致させた状態を保つ XI.ログをイベントストリームとして扱う XII.管理タスクを1回限りのプロセスとして実⾏する 参考: 12 Factor Apps の各項⽬ 微妙にイメージが湧きにくいので、たとえばAWSなら
  20. カオスエンジニアリングとは “Chaos Engineering is the discipline of experimenting on a

    distributed system in order to build confidence in the systemʼs capability to withstand turbulent conditions in production.” ・分散システムにおいて ・本番環境のように荒れる環境にも耐える能⼒を持っている ・という確信を得るための実験/検証の規律