こんにちは、技術開発室の與島です。

2019年6月11日〜13日にカリフォルニア州サンノゼで開催されたO'Reilly Velocity Conference 2019 San Joseに、弊社から細田、伊藤、與島の3名が参加してきました。

ハートビーツではここ数年、毎年この時期に行われるO'Reilly Velocity Conferenceに参加しています。 なお、Velocity Conferenceは主に運用やDevOps向けのイベントになります。

本記事では興味深かったセッションをいくつか紹介します。

なお、内容については紹介している資料を確認してください。聞き間違えたり、認識が違っているかもしれないためです。

Velocity 2019 会場

Production Engineering, SRE, and DevOps

Move fast and learn from incidents

  • 資料: なし

下記のPDFのルールを参考にいくつかのロールに別れ、実際の障害例を元に障害報告書を書くためのロールプレイングを行うというチュートリアルのセッションでした。

参考) Debriefing Facilitation Guide
https://extfiles.etsy.com/DebriefingFacilitationGuide.pdf

目的を防止するための項目ではなく、その失敗から学ぶことが重要とされており、HowではなくWhyに着目し、うまく情報を引き出すためのファシリテートの方法などが記載されています。

(伊藤)

Building Cloud Native Systems

Pack your bags: Managing distributed applications with CNAB

CNAB(Cloud Native Application Bundle)はMicrosoft, HashiCorp, Docker, Bitnamiなどが提唱している、特定のクラウド基盤に依存せずに複数のサービスを持つ分散アプリケーションをパッケージングし、プロビジョニング、デプロイ、アップデートを含むライフサイクルを管理できるようにする仕組みとして開発されました。

このチュートリアルセッションではCNABの仕様に準拠した クラウドインストーラー であるPorterを利用しながら基本的な構成ファイルの説明、ユーザー定義パラメータやクレデンシャルの扱いなどの一通りの利用法を学ぶことができます。

ワークショップの資料、リポジトリが公開されているので、手順に従ってこのワークショップを追体験できます。

(細田)

How embracing unreliability can make infrastructure reliable and cost-effective

大規模な公衆Wi-Fiサービスなどを展開するMist Systems社では日々大量のリアルタイム処理を必要とするストリーミングデータが送信されてきます。

異常検知に利用するものや機械学習に利用するものまで様々で、それらを一元処理するデータ処理基盤を運用しています。

日々加速度的に増加する処理データ量とともにクラウド基盤にかかる費用はMist Systems社を悩ませていました。

セッション内ではカオスエンジニアリングの活用によりEC2 Spot Fleetを用いても高い信頼性を保ち、コストパフォーマンスの高いインフラの構築事例を紹介しました。

(細田)

How Lyft migrated to a service mesh with Envoy

  • 資料: なし

モノリシックなシステムからどのようにマイクロサービス化して行ったのか、その流れについてのセッションでした。

Lyftの例だと、最初は一部の機能をモノリシックから引き剥がしアプリケーションからHAProxyをつかってサービス間で接続していったようです。最終的にはEnvoyを利用しているということでした。

また、サービスが増えるに連れて問題になったのがEnvoyへのコンフィグファイルの配布方法で、静的ファイル -> templateを使った動的生成 -> 管理マネージャーでの集権管理 という形で変化していったとのことでした。

マイクロサービス化は興味があったのですが、モノリシックなサービスに対して改善を進めていくのはやはり難しいので、こういった事例や現状の問題点について聞けたのはとても良い刺激になりました。

(伊藤)

Building Resilient Systems

This should be faster; what's going on?

  • 資料: なし

VenmoのAndre Henry氏のセッションです。

最初にアプリケーションの持つ様々なレイテンシの種類に触れた上で、様々なコンポーネントが複雑に関連する現代のサービス開発とレイテンシ削減の戦いをECサイトのレスポンス事例(2秒以上待てない人々)や高頻度取引における人類の挑戦の歴史など、ユーモアを交えて振り返りました。

そして物理層からアプリケーションプロトコルに至るまでの様々な高速化テクニックが紹介されていました。

どこの世界にもこういった職人の努力と技があるんだなと共感を覚えるセッションでした。

(細田)

Building Secure Systems

Intro to Kubernetes security; or, Taming the Great Spaghetti Monster

  • 資料: なし

Kubernetesのセキュリティについての話です。

Kubernetesは完璧なツールではないとして、Kubernetesであってもセキュリティについては下記の様な一般的な構成と変わらない対応が必要だという話でした。

  • TLSを常に利用する
  • AppArmor/SELinuxを有効にする + PodSecurityPoliciesを利用する
  • コンテナはrootユーザー以外のユーザーで実行する
  • SSHではなく、execを利用する
  • イメージスキャンを行う & IDSを利用する

また、Falcoのようなセキュリティのモニタリングツールやkube-hunterなどの診断ツールなどの紹介もされており、この辺のツールについては知らなかったので検証していこうと思います。

(伊藤)

Base64 is not encryption: A better story for Kubernetes secrets

Kubernetesクラスタで稼働するアプリケーションがビルド時や実行時に利用する秘密情報を、EncryptionConfigurationリソースを利用して管理する方法について学ぶチュートリアルセッションでした。

このチュートリアルのデモでは、まずはじめにSecretリソースで管理している秘密情報が暗号化されていないことを、etcdのデータを直接見て確認しました。

その後、EncryptionConfigurationリソースを利用して、秘密情報が暗号化された状態でetcdに保存されることを確認します。
EncryptionConfigurationの暗号化プロバイダとして、ローカルで管理しているキーを利用する方法(デモではaescbcを利用)とKMSプロバイダを利用する方法(kms)を試しました。

KMSプロバイダでは、サードパーティ製のKMSを利用することができます。ローカルで管理しているキーを利用する方法と比較して、キーの生成・管理・ローテーションなどを外部に任せられる点がメリットです。

チュートリアルで利用したデモ環境はGitHubで公開されています。

GitHub - sethvargo/base64-is-not-encryption

(與島)

Monitoring, Observability, and Performance

eBPF-powered distributed Kubernetes performance analysis

eBPFを利用したKubernetesクラスタのパフォーマンス分析についてのセッションです。

以下のツールを利用した手法を紹介していました。

BPFというカスタムリソースによってカスタムコントローラであるBPF runnerをクラスタにデプロイする手法です。
BPF runnerはBPFプログラムで取得したメトリックをeBPF mapに保存し、それをPrometheusのメトリクスとして開示します。BFPプログラムはConfigMapとして定義しておいて、それをBPFリソースの定義内から参照します。

kubectl traceによって、BPFプログラムをクラスタのノードで実行する手法です。
クラスタ側での準備は特に不要で、オプションと引数によってBFPプログラムとそれを実行するノードを指定すれば利用できます。

また、セッションの最後に以下の書籍の紹介がありました。2019/06時点ではまだ発売されていませんが、O'Reilly Safari Books Onlineでは既にリリースされているため、会員であれば読めるようになっています。

eBPFについては、このセッションの他にもチュートリアルセッションがあったようです(未参加)。注目度の高さを感じました。

(與島)

Observability for developers: How to get from here to there

DevとOpsの橋として、Dev側もMonitoringやTracingを利用しましょうという話です。
Devsのミッションとして下記の3つをあげていました。

  • 直感的にソフトウェアを書くのをやめ、データに基づいて書く
  • Ops以上に話せるように可視化ツールについて学ぶ
  • 疑問についてたくさんの仮説を立てて検証をする

Ops側として、特にぐっときたのはログの話でした。

「STOP SEARCHING, START ANALYZING」

  • ログは履歴を探すものであって、分析するものではない
  • ログは人間ではなく、機械によってスケールするもの
  • 異常な情報を識別するためには視覚化が必要

ログをgrepして眺めることはOps側としてもやめたいですね。
モニタリングを共通の認識として持つことでより効率的な改善が出来ますし、Ops側としても導入を進めていこうと思います。

(伊藤)

プロダクションにおけるシステム観測がシステムの改善プロセスにおけるひとつの要素であるという切り口から、その取り組みをするため重要な概念としてのObservability、またObservabilityの確保・向上のために重要な以下のポイントについて解説していました。

  • インストルメンテーション
  • ログ分析
  • トレーシング

インストルメンテーションにおけるメトリクスの命名やログにどのような情報を含めるべきかなど、意味のある出力を得るために意識するべきポイントがつかめる内容になっていました。

(與島)

Extracting signal: Fast traffic analysis and smart aggregation in global edge networks

  • 資料: なし

世界的なDNSプロバイダであるNS1における事例です。

最初にConsulを利用したNS1のシステムの概要の説明(control plane と data plane の間の signal collection)とエッジサーバから中央へ収集する様々な情報を制御するポリシーについて解説しました。

後半では収集されたデータの具体的な高速集計テクニック、それらを用いた迅速なDDoSへの対処や収集したデータを元に経営レベルでの意思決定事例などを踏まえて即時性データの有効性を説明していました。

(細田)

Serverless

Isolate computing

サーバレスコンピューティングのバックエンドの実行環境において、"isolate-based"なコンピューティングがどのような利便性をもたらすかについて紹介したセッションでした。

「"isolate-based"なコンピューティング」というのは、個々のプログラムの実行コンテキストを単一プロセス内で分離したものを指します。仮想マシン、コンテナによって実行コンテキストを分離した環境と比較して、次のようなメリットがあるとしています。

  • コンテキストスイッチやOSによるマシンリソース消費などのオーバーヘッドの低減
  • マシンリソース(CPU, メモリなど)の利用効率の向上

セッションの資料は公開されていませんが、発表者のZack Bloom氏が書いた関連する内容のブログ記事がありましたので、参考資料として載せておきます。

(與島)

Keynote

From puzzles to products

キーノートセッションの1つです。どのようにプロダクトを成長させ、それによって世の中に価値を見出すかという話をしていました。

タイトルにある「puzzles(パズル)」はソフトウェア開発における明確に終了状態が定義された課題やそれに到達するための手段を、「products(プロダクト)」は継続的に価値を提供するものを、それぞれ指しています。

より本質的な課題に注力するために何をアウトソースすべきか、プロダクトの成長のためにデザインをどのように変化させるかなど、非常に興味深い内容でしたので紹介します。

本セッションの内容は参考資料のブログ記事にまとめられていますので、ぜひご覧になってみてください。

(與島)

最後に

最後に、参加したメンバーからの感想を掲載します。

初めての海外のカンファレンス参加でした。
周りのエンジニアを見ていると気軽に知らない人と情報交換をおこなったり議論していたりしていました。
私自身も話かけられておどおどしながら受け答えしました(日本にいたことのあるエンジニアでした)。
せっかく勉強会に参加しているのですから、日本の勉強会でも参加者同士の交流も多くしていきたいなと思います。

また、内容についてはKnativeや周辺のプロダクトなどKubernetesの話が多く、Kubernetesが動くクラウドなどについての話はほぼありませんでした。
皆当たり前のようにKubernetesを導入しているなか、日本で扱っている企業はまだ少なくなんとも言えない焦りを感じました。
Kubernetesの最初のリリースが2015/7/18ですでにリリースから4年ほど立っており、周りのプロダクトも充実しています。
弊社としても開発会社と協力し当たり前のものとして、Kubernetesを取り入れていけるようにしたいです。

(伊藤)

今回あまりセッションに割り振られたカテゴリにはこだわらず、気になるキーワード的な発想で様々なセッションを聽いてみました。

こういったイベントに参加するのは初めてでしたがどのセッションもその当人達の抱えている課題や直面した危機をどの様に乗り越えたか、リアルな感情とともに感じることができて貴重な機会でした。

そしてその課題や悩みは規模の大小こそあれ我々MSPの向き合うべき日常と同じ方向性を向いていることを確認できたのはモチベーションに繋がりました。

(細田)

Velocity Conferenceへの参加は、去年に引き続き2回目でした。

今年は主にObservabilityのセッションを聴いてきました。セッションで話されていた内容は次のように多岐に渡っていました。

  • ツール・サービスについて
  • 組織としての取り組みかた
  • 観測データをどのように活用するか
  • ...

個人的には、技術トピックとしてeBPFが興味深く感じたので、今後深追いできればと思っています。

(與島)

株式会社ハートビーツのインフラエンジニアから、ちょっとした情報をお届けします。