コンテナを利用したWebサービス開発と実運用
TIME rest time current/total
TopicsPlaceHolder

コンテナを利用したWebサービス開発と実運用

はてな×さくらが考えるテクノロジーの未来〜コンテナ・分散型データセンター〜

Mar 20th, 2019

Profile

songmu

Mackerel

Mackerel

【宣伝】書籍発売中

【宣伝】みんなのGo言語

【宣伝】入門 監視

コンテナは20世紀最大の発明

Linux Container

コンテナが実現すること

「コンテナイメージ」によりベンダーがミドルウェアの配布も容易に

コンテナが必要とされた背景

Infrastructure as Code (IaC) やクラウド黎明期で主にVMを使っていた頃のこれらの用語は聞かれなくなった。

冪等性幻想

コンテナが持つ制約を逆手に活用する

制約とも言える以下の特徴をデフォルトで持っている

VMからコンテナへ

twelve factor app

herokuのエンジニアにより2010年提唱されたアプリケーションが満たすべき12個の要件

コンテナ利用ではコードと設定の分離が必須に

動的なインフラの中でどの様に接続先を見つけるのか

ワークフローの変化

ステートを持てない

オーケストレーション

輸送コストの圧縮に必要なのは単に金属製の箱なのではなく、貨物を扱う新しいシステムなのだ コンテナ物語

コンテナを適切に運用するために

設定や認証情報をどこに持たせるのか

サービスメッシュ

進化期にある

コンポーネント設計

コンポーネント分割

VMであってもコンテナであっても基本的な考え方は大きな違いはない

VMは引き算・コンテナは足し算

コンポーネントの作り方が異なる

Pod/Taskをどう捉えるか

システムを構成する最小単位

Pod/Task

その単位でdeployが行われる

コンテナ自体の話

コンテナ自体は単なるプロセス

要素技術

「コンテナ技術入門 - 仮想化との違いを知り、要素技術を触って学ぼう」

OSの機能だからこそ限界もある

単なるプロセスである明快さ

既存のUNIXスタイルをきちんと意識して踏襲しておけば良い。そこの基本的な知識が必要とされるとも言える。

【余談】すべてがコンテナになる?

課題

コネクションプーリング

ウォームアップ

BlueGreenの難しさ

CI/CDの待ち時間問題

LL言語の優位性が減った

状態を持つサーバーの扱い

ローカルファイルを使わずに外部サービスに任せる

無理せずVM as a Containerでも

マイクロサービス時代の監視設計

従来型のアプリケーション設計

「モノリシックなWebアプリケーション」 & 「汎用ミドルウェア群(MySQL, memcached etc.)」

一昔のWebアプリケーションレイヤーというのは比較的薄く単純な作りであり、Webサーバーと密結合していることも多かったため、アプリケーション固有の監視を作るという発想にもあまりならなかった。

healthエンドポイントパターンの発見と命名

マイクロサービス時代における監視設計

監視も同時に設計する

マイクロサービス時代にはそれぞれが独自ミドルウェア的なコンポーネント群になるのが望ましい。

監視をどう設計するか

幾つかのヒント

The Four Golden Signals in SRE Book

SRE本

USE Method

http://www.brendangregg.com/usemethod.html

内部の状態に着目 → ブラックボックス的
「詳解システムパフォーマンス」でも言及
UtilizationとSaturationの違い

RED Method

https://www.slideshare.net/weaveworks/monitoring-microservices

外部からの振る舞いに着目 → ホワイトボックス的

USEとRED

それぞれ補完しあうものである

USEとREDを捉えることで、Four Golden Signalsが見えてくる。

改めてThe Four Golden Signals

USEとREDが網羅されている。

SaturationとUtilizationを分離したほうが良いかもしれないが、おそらくホワイトボックス的なふるまい(RED)のほうが重要なのでSaturationにまとめられていると想像。

例: ある認証コンポーネント

Mackerelコンテナエージェントの話

Mackerelコンテナエージェント

Mackerelコンテナエージェントの特徴

ロールグラフの様子

Mackerelコンテナエージェントの今後

以上