mercari.go ♯8で『Goで学ぶKnative』を話してきました #mercarigo

0 Shares

mercari.go #8で登壇してきました。振り返ります。

発表資料はこちらです。

登壇経緯

社内勉強会のGo Fridayに出れるときは出るようにしてるのですが、その勢いです。

勉強会後にSlackの分報部屋で10分くらいなら喋れるかもしれないって呟いたら回収していただきました。

テーマ選定

社内SlackにKnativeのアイコンを登録するなどしている割には何も実装を追ったことがなかったので追ってみることにしました。

KubernetesのコントローラーとKnative

Goで書いてるならまぁ読めるやろくらいの気持ちで臨みました。そしたら個々のコードの意味はなんとなく追えても全体像の見えなさがすごかったです。

Programming Kubernetes: Developing Cloud Native Applications

を読んでみると本番の2、3日前にようやく自分なりの整理の仕方が見えてきました。

「ライブラリとコード生成ツールとSDK」を区別し始めて次のようなポイントに落ち着きました。

kube-apiserverのライブラリclient-goの機能もProgramming Kubernetesや実装を追いながら

  • なぜ直接WatchやListを直接実行せずinformerを介するのか
  • インメモリキャッシュの実体は何か
  • Listとlisterの違いは何か
  • workqueueにエンキューされるのは何か

などを調べました。

この図には至ったものの、sample-controllerの方の図にあるFIFOキューとReflectorがknativeでは見つかってません。

もし無いならなぜ使わない判断をしたのか理解していません。

ちゃんと追いたいところです。

振り返り

Good

30分話しきった

何はともあれ話しきったのはよかったとしたいです。

Kubernetesのコントローラーへの興味が強まった

これまでKnative文脈ではどうしても概念の理解やKubernetes自体に必要な膨大な知識をキャッチアップするのに必死でした。

そこから具体的にどう実装されているのに踏み込むんだことでこれまでと違う視点が得られてよかったです。

CRDとコントローラーも言葉では知っているつもりになっていたものの、いざ追ってみると何一つわかってなくて高まりました。

準備期間がちょうど技術書典7の募集期間と被ったこともあり、Knativeを切り口としたコントローラーの話で応募することにしました。

Knativeの既刊もバージョンアップしたいのでバランスは難しいところですがやっていきです。

Goへの気持ちも高まった

今年前半のお仕事ではがっつり実装していたわけではなかったですが、最近は実装タスクの割合が高く、Goの一実装として学ぶことが多かったです。

  • 無限ループを安定して実行する
  • ゴルーチン、チャネル
  • 複雑なクライアントを組み立てる
  • コード生成
  • スレッドセーフなキュー
  • サーバーリクエストとキャッシュ機構

すぐにでも活かしたい部分があるので活かそうと思います。

Goを学び始めたきっかけの1つがサーバーレスなOSSへのコントリビューションなのでそちらもやっていきたいです。

練習

30分の発表でも事前に4回くらい通して読んで時間調整できたのはよかったです。

最初とりあえず30分読んでみたら16枚余ったので、その時点と比較するといい具合になったと思います。

Challenge

時間のやりくり

毎度イベント前に休んだりしてる気がしますが、今回は発表の週に1日丸々 + 2週間朝晩集中室に引きこもりました。あと土日。

強すぎる切迫感と集中を欠く割にダラダラ過ごした感もあるので、来月の登壇は進め方を工夫します。

集中することを決めるのに集中する。

そして焦っているときほどはやる気持ちを抑えて「25分集中して5分休む」のポモドーロのサイクルを徹底する。

一方で、今回も全体像を見通して集中することを決めようとはしていたものの、何に集中すべきかがよくわからず右往左往した時間が長かったです。それを見つけるために、行き詰まったら人に聞くとかやりようはあるかなと思いました。

会社にもコミュニティにも強い人類はたくさんいるので。

ライブソースコードリーディング

その場でやり切る意図がそこまでない(技術書典の話に繋げたい)にしろ、

  • もう少し大きく映す
  • ゆっくり進む

などやり方は工夫できたかなと思います。

フィードバック

自分で知りたいと思ったことが知れたのはいいとして今回の話を人が聞いてどう思ったんでしょう?

Goを冠した勉強会で話す内容として適切だったんでしょうか?

せっかく懇親会もあるので聞けばよかったですね。

まとめ

つぎは初のCFPを経たカンファレンスでの登壇。

  • 人に事前に2回聞いてもらい、軌道修正する
    • 今月中に目処を添えてお願いする
  • テーマである「解決する課題」を明確にして関係するユースケースを話す
    • デモとかするにしても何のためにやって何を見て欲しいかを明確にする
  • 漠然と機能や実装を追わず検証のゴールを先に決める
    • つぎの土日は項目出しのためにグダグダ調べていい
    • ただしその後は集中すべきことに集中する。やすみやすみ!

というわけでやっていき!!ぜひ遊びに来てください!

https://cloudnativedays.jp/cndt2019/

0 Shares

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です