2019年7〜9月ふりかえり 〜プラットフォームエンジニアへの闘争〜

0 Shares

四半期ごとの人生振り返りです。

2019年の目標とは別に個人OKRの運用を開始したため、そちらを中心に振り返ります。

サマリ

プラットフォームエンジニアへの闘争を開始します

OKRの振り返り

基本的にやるべきことに集中するために大事なことを列挙する形で設定したのでつぎの3段階くらいでいいかなと思います。

  • できた
  • 微妙
  • できなかった

Objective 1

DIY FaaSのためのKnativeのユースケース、動作の仕組みを理解する

Key Result 1 【できた】

どんな課題に対してどう使うのかを説明できる

  • CloudNative Days Tokyo 2019 登壇
  • ServerlessDays Melbourne 登壇

CloudNative Days Tokyo 2019で『Knativeで実現するKubernetes上のサーバーレスアーキテクチャ』を話してきました #CNDT2019

ServerlessDays Melbourne 2019でBuild serverless application on top of Kubernetesを話してきました #sdmel19

CloudNative Days TokyoではKnativeが「どういう課題に対し、なんの機能がある」という形を意識してユースケースを組み立てました。

それに対してもうちょっとKnativeの大枠の意義や、どういうロール人の何を解決するのか、個々のコンポーネントの使い方でなくて構築したプラットフォームをどう使うのかという部分が知れるとよくなるのではないかというフィードバックをいただきました。

ServerlessDays MelbourneではKubernetesで運用するアプリケーションのツラミからそのソリューションの1つとしてのKnativeのような形に構成を変更して臨みました。

他のソリューションとの比較や構築したプラットフォームの活用までは至っていませんが、それは10〜12月のOKRに深く関係します。

対外的な発表だけでも検証した内容の抽象化や再構築にはとても役立ちますが、フィードバックをいただきブラッシュアップするプロセスはとても大事だと改めて感じました。

また、発表する前にレビューしてもらう段取りができなくて落ち込むこともありました。しかし、長期的なテーマを設定していろいろと取り組む前提で、イベントが終わってからじっくり感想をいただく形式も必ず進捗が生まれるので気が楽になりました。

Key Result 2 【できた】

Knativeを使ったプロダクトでどう利用されているか説明できる

  • CloudNative Days Tokyo 2019 登壇
    • Knative Lambda Runtime
  • 技術書典7執筆 既刊Knative本アップデート
    • Pivotal Function Service
    • OpenFaaS functions on knative
  • 何かCloud Runの話できる機会があれば

技術書典7で『Knativeソースコードリーディング』『Knativeの歩き方 第2版』『Goで学ぶAWS Lambda』を出展します #技術書典

CloudNative Days Tokyoではユースケースの後半にKnative Lambda RuntimeとOpenFaaSのWatchdogを活用したプラットフォーム構築のお話をしました。

その過程で整理したこの1枚のスライドは、Knativeを使って自分でFaaSを組み立てるときに何を開発する必要があるのかという観点でとても大事なことのようです。この知見を元に10〜12月実際に触れるサーバーレスプラットフォームを構築します。

その調査内容を文字化して『Knativeの歩き方』に章を増やす形で足しました。

Cloud Runの話はServerlessDays Melbourneで少し触れました。会社ではGCPを中心にサービスを構築しており、検証環境も充実しているので自然なユースケースで活用できる可能性も高いかなと思います。その観点で仕様の詳細を理解しておくと意味がありそうです。

Key Result 3 【できた】

Knativeの主要機能の実装方法を説明できる

  • 技術書典7執筆 新刊KubernetesのコントローラーをKnativeで理解する
  • 技術雑誌寄稿 kube-apiserverのクライアント
  • Programming Kubernetes: Developing Cloud Native Applications 再読

技術書典7の『Knativeソースコードリーディング入門』の振り返り #技術書典

6月にかなりお世話になったProgramming Kubernetes: Developing Cloud-native Applicationsを再読し、Knativeの実装を追う本を書きました。

Kubernetesのクライアントライブラリを含むコントローラーの追い方は慣れてきたものの、Knativeの固有実装部分までは終えてないなぁと思います。

メトリクスベースでスケールさせる仕組みや証明書管理、イベント関連の抽象化設計などはKnativeに閉じずプラットフォームの設計・実装にとって重要な要素だと思うので引き続き追っていこうと思います。

寄稿については技術書典が終わってからツール作成に着手し、初稿もなんとか10月頭に間に合いました。社内や編集者の方からたくさんのコメントをいただいたので今後の執筆にも大いに役立ちそうです。別途振り返る予定です。11月半ばに発売されるはずなので楽しみにしていてください!

コントローラーではないもののKubernetesのクライアントを書いたり、関連書籍を読むと自分で書きたい気持ちは高まりました。

Objective 2

嫁氏とゆったりした時間を過ごす

Key Result 1 【できた】

  • スパイダーマン観に行く
  • バンブルビー観る

観た!

Key Result 2 【できた】

  • 花火大会に行く

行った!

行ってみたいところ、やってみたいことは突発的に発生するところだけではなく、計画しないと実現できないこともあります。

カッパドキア行きたいとかクリスマス島のカニ見たいとかディズニーのミラコスタ泊まりたいとか。

リストにすると「やるべき」こと感が出る一方で、本当に実現したいなら先に時間を確保しないと「俺は強くなりたいので今期はそういうのしない」という判断を永遠に繰り返しそうです。でも今期爆進だけではしんどいということを強く体感しました。

10〜12月期はリスト化して、各期そこから1つOKRに入れてみようかなと思います。

OKR総括

全達成よく頑張ったたまには褒めてあげよう!

習慣の振り返り

2019年の目標

  • 本(執筆): 2冊/年
  • CFP: 4ヶ月に1回出してみる
  • OSS: 1PR/月
  • ひとまとまりのソースコード公開: 1リポジトリ/月
  • 技術書(読む): 30分/日
  • その他本(読む): 30分/日
  • ふぁーーーこれやーーーって本に出会いがっつり感想書く: 1回/3ヶ月
  • ピアノ晒す: 1回/月
  • 筋トレ: 1回/週

進捗

本(執筆): 2冊/年

2/2

終わり!

CFP: 4ヶ月に1回出してみる

合計5本提出のまま変わらず。この振り返りが終わったら2本書く予定です。

OSS: 1PR/月

30/3

1つ1つは細かいですがたくさん出しました。lintツールを実行してそれに基づく修正をしているだけです。

何もリントエラーが出ないプロジェクトと、大量すぎて比較的大事な項目だけ選んでPRを出すプロジェクトの差が激しいです。

このgolangci-lintを利用しています。

https://github.com/mercari/wrench/pull/7
https://github.com/mercari/wrench/pull/5
https://github.com/mercari/wrench/pull/4
https://github.com/mercari/wrench/pull/3
https://github.com/mercari/go-emv-code/pull/8
https://github.com/mercari/go-emv-code/pull/7
https://github.com/virtual-kubelet/virtual-kubelet/pull/774
https://github.com/syndbg/goenv/pull/97
https://github.com/google/ko/pull/89
https://github.com/knative/client/pull/412
https://github.com/knative/pkg/pull/646
https://github.com/ijin/serverlessdays-tokyo/pull/16
https://github.com/k1LoW/tbls/pull/137
https://github.com/kedacore/keda/pull/343
https://github.com/GoogleCloudPlatform/cloud-run-button/pull/82
https://github.com/google/kf/pull/659
https://github.com/google/go-cmdtest/pull/1
https://github.com/syndbg/goenv/pull/95
https://github.com/kedacore/keda/pull/323
https://github.com/syndbg/goenv/pull/94
https://github.com/deislabs/osiris/pull/37
https://github.com/kedacore/keda/pull/323
https://github.com/syndbg/goenv/pull/88
https://github.com/syndbg/goenv/pull/86
https://github.com/kubernetes-sigs/kubebuilder/pull/967
https://github.com/knative/client/pull/388
https://github.com/knative/eventing-contrib/pull/557
https://github.com/knative/eventing/pull/1732
https://github.com/syndbg/goenv/pull/91
https://github.com/syndbg/goenv/pull/90

自分な好きなOSSに対しリリースノートに載るようなインパクトのあるコントリビューションがしたいという思いを強めました。

ひとまとまりのソースコード公開: 1リポジトリ/月

1/3

雑誌寄稿に向けて作りました。10月分のような気もします。

https://github.com/toshi0607/jctl

ワンコマンドで下記全部やってくれます。

  • Goアプリケーションビルド
  • コンテナイメージビルド
  • レジストリにプッシュ
  • Kubernetes Jobとして実行

client-gogo-containerregistryを活用したCLIです。

GitHub Actionsでkindを使ってE2Eテストもやってみました。

以上…!

10〜12月期にはこんなの作りたいです。

  • 何かしらコントローラー
  • サーバーとfunctionsをつなぐミドルウェア
  • DIY FaaS用CLI

意図通りのものがあれば詳しく調べて記事にするのでもよさそう

技術書(読む): 30分/日

読んだ

Kubernetesがもっと好きになる!この本がなければKnativeソースコードリーディング入門 Knativeで学ぶKubernetesのカスタムリソースとカスタムコントローラーは生まれませんでした。Knativeに限らずKubernetes本体はもちろん、作られたタイミングがどうであれ他のコントローラーも読める雰囲気が出てきました。

kedacore/kedaとか読むとよさそうです。

【レビュー】『改訂2版 みんなのGo言語』(2019/8/1、技術評論社)の感想

技術書全然読んでへんわろたw

その他本(読む): 30分/日

読んだ

前作に引き続き読みました。日報とか強化し始めた気がします。社会を形作るのは絶対的な原則ではなく人間なのでたまには処世術に触れるのもよいのではないでしょうか。

氏の本は読むのに時間がかかる本の後にパーッと読みたくなります。

プレゼンの神様、Microsoft澤さんの本です。自分のプレゼンを直視して改めて絶望したので、聞く人の気持ちを考えることにしてみました。まずは社内でやるプレゼンにいくらか活かしてみました。

今も自分が喋りたいことを喋る基本姿勢は変わってません。けど、喋る目的は発信することでフィードバックを得てよりよい理解・アウトプットに繋げることです。なのでこの本で言われているように伝えたい中核となるものや聴衆観点で何をもって帰ってもらうのかを整理することは結果的に自分がもらえるかもしれないフィードバックの質を確実に上げます。

任天堂のWiiの企画をした方の本です。既知の良さと未知の良さがあって、最初は受け入れられないかもしれない未知の良さを探求する方法が具体的なお話を添えて解説されていました。

未知の良さを提供し、最終的に世界を良くするのは大変かもですがやりがいはありますよね。サーバーレスとか直感的に現実的でない、良さよくわからんみたいな声が依然として強いのでチャンスです。

読んでる

Windowsプログラミングの父?チャールズペゾルドさんの本です。コンピュータが動く仕組みを解説する「読み物(≠技術書)」です。めちゃくちゃ面白い。バイナリコードの説明が、「通りを挟んで反対側に住む子供同士が夜中にどうやって会話するか?」から始まって懐中電灯、モールス信号みたいな風に進んでいって「コンピュータの仕組み」的な本と一線を画しています。

CAREER SKILLSで紹介されてて読んでみて正解でした。けっこう時間かかりそう。

あとは筋トレ中のAudible始めました。

ふぁーーーこれやーーーって本に出会いがっつり感想書く: 1回/3ヶ月

今Qベストは世界№1プレゼン術でした。

ピアノ晒す: 1回/月

鍵盤1回も触らなかった…久石譲さんやっていきたい。

筋トレ: 1回/週

完璧!締め切りがいろいろ厳しくて2回くらいスキップしようとしたもののちゃんと行ってえらい。

今後の話

プラットフォームの運用・構築・開発、利用サポートができるエンジニアになりたい思いが強まったので、個人OKRもそれに寄せていきたいです。人と話して目の前の技術スタックに活きる順番ではまずKubernetesの使い方・動作原理を理解してより低レイヤーに降りていくのが現実的そうでした。本業として実現できるように頑張る。

サーバーレスも何かしらのPaaSやFaaSを使って開発することが目的ではなく、嫌なオペレーションを少なく、ビジネス価値により集中できるプラットフォームを活用して開発するのが本旨です。

これらを踏まえて技術スタックを3ヶ月単位で積み上げていきます。そういう方向性をもって人生を歩んだ結果3ヶ月後に全然違うことを言うのはありとします。7〜9月のOKRや集中すべきことを考えたり、運用したりする中で、何をやってもなにかしら自分にとってプラスの経験にもなるし思いもよらないよい出会いもあるけれど、長期的に目指したい姿を思い描いた上でやる方がよりワクワク過ごせそうです。集中もセレンディピティも失うことなく進んでいくのです。

10〜12月の個人OKRはつぎのような感じでいきます。

Objective 1

プラットフォームエンジニアへの闘争

Key Result 1

DIY Serverlessプラットフォームを構築する

  • ServerlessDays Tokyo
  • ServerlessDays Fukuoka
  • CLI
  • server -> functionのミドルウェア

Key Result 2

Kubernetesの知識を網羅的・原理的に理解する

  • CKA取得
  • 何かコントローラー作る
  • つぎの図をソースコードに基づき説明できるようになる

Key Result 3

プラットフォームを支えるOSSにコントリビューションする

機能 > テスト > リントツールでわかるもの > 設定ファイル > ドキュメント・コメント

Objective 2

ゆとりある心で秋〜冬を感じる

Key Result 1

心があたたまる食べ物を食べる

  • 鍋パする

Key Result 2

季節のイベントに参加する

  • ディズニーハロウィン
  • 温泉
  • もみじ、山

Key Result 3

やりたこと、いきたいことリストをつくりワクワクする

登壇

執筆

記事

0 Shares

コメントを残す

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