技芸のコードによるボトムアップ #phpgenba #phpconfuk #gocon
最近やっていることの記録です。
技芸のコードによるボトムアップ
「技芸のコードによるボトムアップ」「技芸のコード化」というのは、端的にいうと自分の「サーバオペレーション」の能力を、自分の得意な分野である「コード化」の側面からボトムアップしていこうという取り組みです。
この取り組みは先進的ではないのですが、これには少なからず意味があると思っていて、それはサーバオペレーションというある種の速度や経験が必要な領域を、再現可能なコードで一部でもカバーできれば、それだけで人をまたいだ全体の作業効率が向上すると考えているからです。
「サーバオペレーションの速度も経験もない。なら、コードが書けるんだから、コードで差を埋めていく」
というのが「技芸のコードによるボトムアップ」という言葉に込めた気持ちです。
ここらへんの話を最初に外でしたのは @shin1x1 さんのポッドキャスト「PHPの現場」に呼んでいただいた時だったと思います。
他の話も転職してから約1年のタイミングで、話すことで自分としても現状を整理できたと感じています。 あと、 @shin1x1 さんの安心感がすごい。
本当に良い機会をもらいました。ありがとうございました。
ログオペレーション
ログ、特に生ログについては、前からうまく扱えないかと考えています。というのもやはりサーバオペレーションの能力に大きく関係するからです。
例えば障害発生時の初動に役に立つのはアラートやメトリクスだと思うのですが、最後の原因特定からの解決などにはやはりログが重要な部分を占めると思っています。
「適切なログファイルを見つけて、そのログから有用な情報を読み解く能力」というのは、有事でも平時でも非常に強力な能力なので、この部分をボトムアップできないかというのは前から考えていました。
当時の構想などはWSA研で発表していたりします。
上記は「ログファイルを見つける」側のアプローチです。
このWSA研で @hirolovesbeer さんと Hayabusa に出会い、そこから実装のアプローチを参考にして現在作っているのが Harvest です。
Harvestは、スキーマを定義しておくことで、サーバへの事前インストールなしに複数のサーバのログを1つに集約し、時系列に保存したりリアルタイムにtailしたりするツールです。SSHでログインできるサーバ/インスタンスやローカルのログだけではなくKubernetesのPodのログも透過的に取得可能です。
Harvestには、さらにWSA研で発表した構想からアップデートしたものを機能として実装したいと考えています。「tag DAG」と呼んでいるのですが、これについてはまだ足りないピースをどうしようか考えながら寝かせています。
「ログから有用な情報を読み解く」側のアプローチでは、「例えばログ内の数値情報などは検出しやすいし、特徴量を取得しやすいのではないか?」とトークンナイザを作ってみたりして、次のアイデアを思いつくまでこれもまた寝かせています(そしてそのアイデアは残念ながらまだ生まれてきません)。
PHPカンファレンス福岡2019
では、現実の現場はどうなのか?ということで、ログオペレーションとそれへのコードによるアプローチについて私が経験したことを、PHPカンファレンス福岡2019で発表させてもらいました。
資料では色々書いていますが、今時点での私の感想は「とはいえ、やはり私自身の練度が足りない」という残念な感想なのですが。これは頑張ります。
PHPカンファレンス福岡2019自体は、またレベルがあがっていてすごいと思いました。安定感があって楽しく過ごせました。本編前後の非公式コンテンツも楽しい。
ただ、私にとっては今回は「PHPコードチャレンジ -マネクラからの挑戦状-」の年でした。
チームとしても結構なコストをかけて開催しました。当日もほぼかかりっきりでしたが、楽しんでもらえているのが目に見えて嬉しかったです。
内輪の話ですが、脆弱性修正チャレンジを「やりますよー」と、すっと問題を作ってくれるセキュリティ対策室の @mrtc0 すごい。
あと、Webサイトコードゴルフ、もうちょっと流行らせたい。
Go Conference'19 Summer in Fukuoka
GoCon Fukuokaではログ関連で作ったツールの、特にデータ収集処理に着目してそれぞれのアーキテクチャをパイプラインの実装という文脈で紹介しました。
図とデモとコードを混ぜて説明したのは概ね好評だったみたいで、ほっとしました(結構しゃべりを入れて説明したので資料ではわかりにくいかも)。
スライドでユースケースとして紹介した各ツールについてはまた別途エントリを書きたいと思います。
カンファレンス自体は、少人数のスタッフで回していたらしいのですが、そんなことを感じることなくノーストレスで楽しめて、最後のスタッフ集合まで少人数であることに気づかないくらいでした。あと、生ハムとビールがカンファレンス途中に出てくるのはズルい。自分の発表が終わるまで飲めなかった。。
Goならではのコミュニティの雰囲気を感じることができて楽しかったです。
これから
「技芸のコードによるボトムアップ」というアプローチは、対象をサーバオペレーションに絞っているだけであって、基本的にはコードによる汎用化・効率化の領域だと思っています。
少しづつですが、効果がでているのでまだ続けていこうと思います。
それとは別に、そもそも私のサーバオペレーションの練度が足りない点については、精進しようと思います。。。
いつまでたってもログを見るのを忘れる俺は。。。。
— k1LoW (@k1LoW) 2019年7月19日