とあるDevOps案件のk8s日本仮想化技術株式会社水野源2021/06/251
View Slide
DevOpsとは?• Dev(開発)と• Ops(運用)が• うまいこと協力してなんかいい感じに2
しかし対立するDevの要望とOpsの事情3Dev OpsPHPのx.x入れて!このリポジトリ足して!それはサポート期間、もうほとんど残ってないですよ……セキュリティサポートのないパッケージは入れられません……緊急メンテとかマジか……諸々作り直しじゃん……緊急のセキュリティアップデートでサーバー全体を再起動します!OSがEOLするので、ミドルウェアやライブラリのバージョンが変わります!
DevとOpsの責任分界点4ハードウェアOSミドルウェアアプリケーション DevOpsDevOps責任分界点理想 現実
責任分界点を明確にするコンテナ• コンテナはアプリケーション実行環境をカプセル化する• OSやミドルウェアのライフサイクルからの開放• 高速なビルド、テスト、デプロイサイクルとの相性がよい• Dev/Ops双方にとってメリットが大きい5
なぜk8sなのか• 複数ノードでコンテナを協調動作させる際の課題• ノード間通信、死活監視、負荷分散、ログ集約、etc• コンテナをオーケストレーションする仕組みが必要• そこでk8s6
とあるDevOps案件の概要とVTJの担当領域• とあるタブレット用アプリのバックエンド• 現在のユーザー数は3万人↑くらい• 同時接続数は1000人程度を想定• サーバーアプリケーションが動作するインフラの設計、構築、運用• CI/CD環境の設定、運用• 監視システムの設定、運用7
構成要素• インフラストラクチャ → AWS EKS• コーディング、バージョン管理、レビュー、マージ → GitHub• テスト、ビルド、デプロイ → CircleCI• コンフィギュレーション → CloudFormation• モニタリング → Datadogテストや監視も含め、自前で面倒を見ず、SaaSに寄せる方針8
インフラ構成9Private subnetAWS CloudVPCAvailability Zone Availability Zone Availability ZonePublic subnetPrivate subnetPublic subnetPrivate subnetPublic subnetCluster Node GroupDatabase CDNRoute53
ワークフロー10AWS Cloud1. ソースをコミット 2. テスト/ビルド 3. コンテナイメージをpush 4. デプロイ5. リソース/ログの監視6. アラート通知
DevとOpsがいい感じになるために• 責任分界点がシステム的に明確になるメリット• DevとOpsを縦割りにしろ、という意味ではない• 無意味に相手の責任範囲に踏み込まなければならないことを減らしたい• アプリの管理がVMの管理になってしまうつらみ• K8sは便利だけれど、分散システム特有の問題もある• 複雑度は当然上がる• コンテナが不向きなシステムも存在するので、銀の弾丸ではない• 外部SaaSを積極的に利用するメリット• 本質的ではない部分の省力化大事11
12