創業者のMitchellさんが来たHashiCorp Meetupに参加した!

VagrantやConsul,Terraformなどさまざまな有名なプロダクトを開発しているHashiCorp社.その創業者の1人であるMitchell Hashimotoさんの来日に伴うMeetupがあったので参加してきた!

hashicorp.connpass.com

Consul

MitchellさんがConsulの概要やConsul Connectについて話された.

従来のデータセンターであればすべてをVMで作るといったようにシンプルな構成だった.しかし最近は複数データセンターがあり,そこに乗っているプラットフォームがベアメタルKubernetesVMクラウドだったりとさまざまで,その間で通信が行われている.さまざまな環境で複雑に絡みあうネットワークでService Registry & discovery,Service Meshを実現するのがConsul.特にService Meshを実現している機能をConsul Connectという.以下Consul Connectの機能説明.

Mesh Gateways

各ネットワークのエッジに置かれるMesh Gateway.詳しくは公式に書いてある.

  • 各ネットワークにMesh Gatewayを置くとルーティングができる.ネットワークの違うKubernetesクラスタも通信が可能になる.
  • APIからDBはOK,WebからDBはNGなどのルールを書くことができる.
  • Mesh Gateway間は暗号化される

www.consul.io

Connect Layer7 Feature

L7のオプションが色々設定できる.詳しくは公式に書いてある.

  • HTTP Routing
    • PathやHeaderに基づいて色々Rewriteできる
  • Traffix Splitting
    • トラフィックのうち10%をv1のサービス,90%をv2のサービスに流すといったことができる
  • Custom Resolution
    • 「データセンターにあるサービスのヘルスチェックがうまくいかなかった場合のトラフィックを流す先を指定する」など複雑なルールを作ることができる.

www.consul.io

感想

Consul知らなかった勢なのでとても勉強になった.全体を通して,Consulはマルチデータセンターやマルチプラットフォームで動くことが強調されていた気がする.

www.slideshare.net  

Ask Mitchell Anything

ここからは自由にMitchellさんに質問できるコーナーだった.事前に集めていた質問とその場で出た質問をいくつかMitchellさんに答えてもらった.

Q1. 仮想化技術,コンテナ技術,マイクロサービス化,デリバリ技術など,インフラ技術は目まぐるしく進化し続けている.インフラ技術の今後にどのような未来を描いているか. 

  • KubernetesがDockerを意識させなくしているが,Dockerがもう少し前に出てくるような技術が出てくるのではと思う.

Q2. Terraformがv1.0になるために必要なことは何か.

  • bugfixが終わればすぐ!

Q3. 「何を製品化するか」を決定する際,うまく進める秘訣はあるか.

  • サービスの使う方でもあり.他のサービスと自分のサービスを週単位で使い分け,いいものと悪いものを把握している. 会社が大きくなるほど何を目的としてサービスを作っているのか分からなくなるが,自分は前述のやり方を徹底している.

Q4. HashiCorp社のプロダクトのいくつか(Terraform,Consul,Nomadなど)について,共存も可能であるがKubernetesと比較されることがあると思う.仮に,世の中の全てのITサービスが Kubernetes 上で動く世の中であった場合,各プロダクトの在り方がどう変わってくると思うか.

Q5. NomadをTerraform CloudのようなPaaSサービスとして展開していくような計画はないか.

  • NomadのPaaSサービス化はいいかもしれない.

Q6.技術者兼経営者として,苦労されたことは何か.そしてそれをどう解決したか.また技術者兼経営者としての理想の姿とは何か.

  • お客様の使い方と自分の使い方が違ったりすると困る.将来,技術的にはこうしたいっていうのがあっても,お客様が違う使い方をしてるとそれに対応する必要がある.
  • パートナーの創業者と,お客様と話す&プロダクト開発を交互に回していていい関係が築けている.

Q7. 趣味は何か.

  • パイロットも興味あるので勉強.ゲーム.

Q8. いまつくっているもの,気になっているものを教えて欲しいです

Q9. 新しい技術で気になるものは何か.

  • 新しい技術はみるけど,それをみてなにができるかを考えることが多い.

Q10. HashiCorp社の従業員数が飛躍的に拡大しているという話を聞いた.HashiCorp社が人を惹きつける最大の魅力は何だと分析されているか.またどのような人材を求めているか.最後に,Mitchellさんが大切にしているもの,自身のコアとなるものは何か.

  • HashCorpは社員の500/700くらいがリモートで働いている.リモートも魅力の1つ.
  • 大切にしているものはTao of HashiCorpに書いてあることがすべて.

pocketstudio.jp

Q11 IstioとConsulの違いは何か.

  • Istioは1つのプラットフォームで動かすことを前提としている.Consulは複数のプラットフォームで動く.
  • 詳しくは公式に書いてある.

www.consul.io

Q12. 当時はHowToとか少ないのにGo言語を選んだのはなぜか.

  • プロセスを少なくしたかった.
  • Rustは新しすぎた.JavaJVMが嫌い,
  • Cを選びかけたが他のプラットフォーム(WindowsMac)の違いで動かないことがあったのでGoにした.
  • DockerやKubernetesが後から採用したので,先に使ってた自分たちは嬉しく思った.

Q13. リモートで設計などのMTGをするのが難しい.何かいい方法があるか.

  • 1年1回は最低会うように予算は取っている.その時に新しい製品などについて話し合う.
  • チームごとだと一年に数回会えるようにしている.
  • リモートの場合はZoomとかで会議できるようにしている.

感想

自分は仕事でWebサービスを提供しているので競合調査として他社のWebサービスを使う.同じ理由で他社プロダクトを使っているという話を聞いて,従事している仕事が違うと調査するポイントも色々違いそうだなと感じた.

弊社配信基盤を支えるHashiCorp OSS

主に動画コンテンツを扱っているサービスにおいてConsulでキャッシュヒット率をあげたお話をされた.

  • 動画配信はトラフィックの負荷がすごいのでキャッシュヒット率を高める必要がある
  • コンテンツとユーザが多いDMMではコンテンツごとにCDNやオリジンなどに振り分けるよう設計
    • オンプレのキャッシュサーバにアクセス情報がたまるのでConsul Eventで情報を転送
    • 最終的にその情報を元にユーザはリダイレクトされ,以後その場所から動画コンテンツを取得するようになる
  • キャッシュヒット率が30%程度から80%程度に!

感想

Consul Eventの使い方も参考になったが,何よりキャッシュのヒット率をあげる構成がすごいと思った!

Journey to Terraform Enterprise with upgrading v0.10 to v0.12

Terraformを使っていて顕在化してきた問題をEnterpriseによって解決した話をされた.また,それにともなってTerraformのバージョンを0.10から0.12にあげた時の苦労話もされた.

以下の3つの問題を解決するためにTerraform Enterpriseを採用

  • 11人で70ものAWSアカウントをTerraformで管理しており,あるアカウント内のメンバーが他のアカウントに異動したとき毎回Credentialをrevokeするのが大変
  • Github Enterpriseを使用しており,アカウント内にあるCIなどのサードパーティ製のサービスがGithubにアクセスする.そのアクセスをIPホワイトリストで制限していて,それぞれのアカウントでTerraformを使って管理したい.
  • アカウントは顧客が使っているのでTerraformでのインシデントはなくしたい.Terraformに関するプルリクエストをマージする際に承認ステップのあるスマートなワークフローが欲しい.

Terraform Enterpriseを使う際一緒にやったこと

  • モジュールの構造を変更.リソース単位ではなくユースケース単位によって管理
  • Workspacesの統合
    • 140近くあったWorkspacesを半分にした
  • CredentialではなくAssumeRollとExtendIDで管理
  • Terraformを0.12へバージョンアップ
    • tfstateは現状のものから復元するために800行のShell書いた

はまったポイント

  • 自動リカバリが動かない
    • /etc/replicated.confがおかしい.リカバリのドキュメンとではなくインストールのドキュメントに書いてあるので注意.

感想

モジュールをユースケース単位で分割するのは良いなと思った.あと,Terraformの現状をインポートしたShellが気になった.

www.slideshare.net

merpay Vault on GKE

マイクロサービスにおける認証方法でどのようにVaultを使っているかを話された.

  • Vaultを使い始めた理由
    • メルペイユーザが増えてきてCloud KMSのパフォーマンス劣化が気になり始めた時,Kubernetesっぽく扱えるVaultがその代替になりそうだったから
  • Vaultはクラスタが組めてHigh Availability構成にできる
  • Vaultの管理
    • 導入当時はVaultの管理は全て自作だったが,今はHELMを使って管理している.公式にはKubernetesのバグサポートとDatadogの設定ができるくらいなので公式は使っていない.
  • よかったこと
    • 開発者にはreadのみをSREにはread・write両方をVaultに対して実行できるようにTerraformを作るのがよかった.

感想

Vaultも初めて知った勢なのでまずは使い方を調べてみる.あと,セキュリティに関するところは管理側で握っておき,それ以外は開発側に任せる運用はすごく分かるしやっていこうと思った.

grasysにおけるConsulの位置付けと実用例

grasysでConsulがどのように活用されているかを話された.

  • Service Discoveryによるオーケストレーション

    • クラスタ全体や任意のVMに任意のコマンドを実行したい
      • Consul Execで流す.コマンドが実行されたかどうかは保証されない
  • Checks/Health/KVによる監視

    • シンプルな内製監視システムが欲しい
      • ConsulがCheckDefinitionsに従いスクリプトを実行しExit Codeに応じてHealthを管理するKVを更新する
      • KVを元に可視化したり,CLIでHealthのステータスを確認したりする
    • Vuls脆弱性検知においてパッケージ管理対象外もスキャンしたい
      • Consulが/usr/local配下などパッケージインストールしていないものを収集してKVに保存
      • 別途スキャン用のサーバでKVに保存されたプログラムを取得しスキャンする
  • Lockによるクラスタ排他制御
    • データを収集してBigQueryに入れるバッチ処理
      • Job Queue Engine + ConsulでStreamingAPIのRate Limitに引っかからず,実行単位でデバッグできる環境を構築
      • GCSへのアップロード先URLをKVへ保存,さらにそれらを取得する処理においてLockを使っている
  • Consul Templateの連携
    • MySQLがフェイルオーバーしたら勝手にHAProxy reconfig/reload
      • フェイルオーバーした際,MySQLが乗っているVM上でConsulのタグが変更され,それをHAProxyが乗っているVMにあるConsulが検知し自身のTemplateを変更する.そうすることで正常に稼働している方のMySQLへだけアクセスさせることができる.

感想

Consulで使える機能が活用事例を交えて多く紹介されている濃い内容だった!自分の業務でも使えそうなものがいくつかあったので検討してみようと思う.

www.slideshare.net

まとめ

  • 創業者のMitchellさんが来たHashiCorp Meetupに参加した
  • Consulはマルチクラウドマルチプラットフォームで動く今にぴったりなプロダクトだった
  • LTではConsulの活用事例が数多く紹介された