2019年の振り返り(go_vargo)
年をブログで振り返るのは初めてですが、振り返りです
2019年はどんな年だったか
自分にとってはチャレンジの一年だったなー、と。
チャレンジというよりは、初めて挑戦したことが多いという方が正しいかもしれません。
よく頑張れたなー、と我ながら思います。
何に挑戦したか
とりあえず初めて挑戦したことを箇条書きすると、
- ブログ
- Qiita(今年だと思ったら正確には去年の12月だった)
- Advent Calander
- 英語の技術本を読む
- CKA/CKAD
- 転職
- LT登壇
- セッション登壇
- カンファレンス登壇
- OSSコントリビュート(ソース)
- 技術書典で技術書(同人)執筆, 出版
- 商業本出版(技術書典底本)
- Reddit投稿
でした。
簡単に時系列で1年を振り返ると、
12月: おうちK8s構築, 初Qiita
1月: 転職活動開始
2月: 内定
3月: 前職のPJ2本, 退職活動, 技術書(Helm)執筆, 初LT
4月: 初技術書典, CNDF2019のLT登壇, 退職
5月: 商業版執筆, 転職(5/16), CKA取得, 初GCP
6月: CKAD取得, Cloud Native Tokyo LT登壇
7月: 実践Helm出版, Docker Meetup LT, Kubernetes Meetup セッション(CI/CD)
8月: 技術書(Custom Controller)執筆
9月:技術書典 Kubernetes Meetup セッション(Controller)
10月: Minikubeにコントリビュート開始
11月: CNDK2019登壇, KubeCon NA2019
12月: 執筆中
という感じでした。
技術研鑽、転職、外部発表、OSSコントリビュートなどだけもう少し振り返りたいと思います。
技術研鑽
自分が価値観として、一番重きを置いているのがこの部分で、今年は特にKubernetesのスキルを上げようと思っていました(単に大好きだからです)。
Kubernetesは、2018年の10月から仕事で使い始めたので、ようやく1年を超えました。
2019年に入るまでは、標準リソース(Pod, Serviceなど)の知識がある程度でした。
Kubernetesベースでの2019年のスキル目標は
- K8sエコシステムをCNCF Trail Mapの1~5くらいまでを把握,実際に使うこと
- CKA / CKADを取得すること
- CRD + Custom Controllerを作れるようになる
を立ててました。
これらは問題なくクリアできたかな、と思います。
特に良かったのがCKA/CKADの取得と、Custom Controllerの作成でした。
CKA/CKADを取得したあたりから、Kubernetesの分散コンポーネントのそれぞれの役目・目的が明確にわかるようになって、問題が起きた時のトラブルシュート力が上がった気がします。
Custom Controller作成の方は、嬉しい誤算でした。
やり方を調べても複数の方法があって、それを体系的にまとめた方法がドキュメント・Webサイトとしてまとまっておらず、Programming Kubernetesが出た時は本当に嬉しかったです(Kubernetes哲学やapi-machineryを深く知りたい人は読むべき本です)。
しかし、ちょうどKubebuilderがv1からv2に切り替わっていく時期で、Programming KubernetesでもKubebuilder v2については対象外だったので、あっという間に元の混沌に戻ってしまいました。
技術書典7の「実践入門Kubernetes カスタムコントローラへの道」はそのフラストレーションを解消できるように、執筆当時の最新バージョンで書こうと決めてました。
結局参考になるものが世界中になかったので(たぶんapi-machineryのContributorの人の頭の中にだけはあったと思う)、client-goやSample Controllerのソースをひたすらデバッグしていきました。
その成果は次の資料と本にまとめていますが、これを経験したおかげで結果的にKubernetesのAPI哲学や基本メカニズムについて造詣を深めることができました。
Kubernetesに対するレベルはすごく上がったと思います。
毎回技術書を書く時は、自分のやったことのない・知らないものをテーマにしようと考えていますが、HelmもCustom Controllerも一から書いたことで自分の力になりました。技術研鑽という観点だと、やり切って良かったなと思っています。
ちなみに当たり前ですが、本を書くのはめちゃくちゃ疲れる、というのを学んだ一年でした。
技術書典後も書いているから、人の2倍は技術書典している気がする(え、もう次!?)
転職
2019/5月に転職したので、だいたい半年が過ぎました。
前職はSIerで、レガシーシステムの開発・保守をすることが多かったのですが、Cloud Native系の勉強会・カンファレンスに出まくって「自分も同じように(仕事で)Cloud Nativeやりたい!」と思って転職しました。
転職前は外部発表が皆無に等しかったのですが、Cloud Nativeを実践している会社にスカウトをもらえて、今は楽しくCloud Nativeをやってます。
(履歴書には書いてあるけど)、実はインフラを職種で始めたのが2018年10月くらいからで、まだ一年とちょっとくらいの経験です。
新しい環境・新しい技術スタック・大規模な環境など、非常に刺激的でした。
転職して良かったー、というのが一番大きな感想です。
これだけ見るとHappyだけど、最近だとYAMLとシェルとPipelineだけ作ることに飽きてきてしまったので(Cloud Nativeも地道な作業の積み重ねなのだ)、コードを書いて自動化を進めるものとかにコミットできたらなーと思ってます。
最近だとBerglas Secretがその一つで、来年もそっちを継続して進めたいところです。
業務でもすごく大きなプラットフォームの構築・運用をやっていたので、桁がこれまでの感覚と違っていて、未だに(RPSとかQPSとかの)数値感が形成できていません。
そのため、来年はその辺の感覚値を自分の中に形成したいところです。
キャパシティプランニングとパフォーマンスチューニングができるようになりたい...
外部発表
2019年で、LT → セッション → カンファレンスと段階的に発表できたのが良かったです。
発表の中でも、「ゼロから始めるKubernetes Controller」は国内外でも評価していただいてやって良かったのと、「Production Ready Kubernetesに必要な15のこと」も同じく反響が大きくてCNDK2019でBest Speakerに選んでいただけて光栄でした。
外部発表することで、多くの方と知り合い・お話しすることができて楽しかったです。
Twitterとかでも話しかけていただけるとすごく喜びます。
以下は登壇したものです。
Kubernetes Invitational Meetup Tokyo#4
自分のモチベーションとして、すでに多く語られているものは自分がやっても意味がないなと思ってしまうので、誰も言及してなさそうなものを来年も発表したいなーと思っています(今考えているのはkube-api-serverとかkubeletとか)。
えてしてそういうものはDeep Diveになってしまうので、そういうところの需要があるところはあるのだろうか...
探り探りやっていこうと思います。
OSSコントリビュート
OSSコントリビュートは、エンジニアだったらやってみたい! と思っていたのですが、ようやく挑戦できました。
今は、Minikubeにコントリビュートしています。
数えたらPR数はまだ8個でした。がっつりGoのコードを書いてます。
ソフトウェア開発スキルを伸ばせたり、熟練のエンジニアからレビューしてもらえたり、(時間を使うこと以外は)良いことずくめだなーと思います。
リリースノートに自分の名前が載っていると、その喜びがひときわ強くなります。
コントリビュート始める前はなぜか恐い恐いと思っていたのですが、不思議です。
書こうと思うと、色々エピソードもあるのですが、それらはコントリビュータ体験記として技術書典8の同人誌に書こうと思ってます。
OSSコントリビュートのモチベーションは、Kubernetesリポジトリに貢献(コミット)したい、という気持ちです。
今までKubernetesをいかに上手く使うか、という観点でしたが、これからはKubernetesを作る側にシフトしていきたいなと考えるようになりました。
kubernetes/kubernetesにコミットするのが一番ですが、いきなり行くのは無理だな、と判断してMinikubeにコントリビュートし始めました。
しかし、Minikubeへのコントリビュートは上に書いた通り非常に良いことが多かったので、来年も含めて末長く続けていきたいと思っています。
来年やりたいこと
最後に来年やりたいことをまとめて終わりです。
来年挑戦したいことは、KubernetesのDeep Dive, カーネルと英語です。
Kubernetes Deep Dive
2019年はControllerのDeep Diveをしていましたが、同じことを他のコンポーネントでもやりたいなーと思っています。
本当はkube-api-serverは2019年中にはやりたかったけど、忙しくて断念しました。
技術書典で出展したり外部発表したり、とかは実際に検証したあとで考えようと思います。
カーネル
ゲーム会社のインフラをやっているので、インフラの業務としてボトルネックの改善があるのですが、低レイヤーを知らないと話にならないなとこの半年で思い知りました。
カーネルも覚えることが多いのは本の分厚さで表れていますが、ちょっとずつ挑戦しようと思います。
今年読んだ本は「Linuxのしくみ」「ふつうのLinuxプログラミング」「詳解 システム・パフォーマンス」を読みました。
今は「Linux Observability with BPF」を読んでいて、その次に「BPF Performance Tools」に行こうと思っています。
来年は「Linux Kernel Development」と「詳解 Linuxカーネル」を読みたいな...
おすすめ本があったら教えていただきたいです(切実に)
英語
来年もコントリビューションやCloud Nativeを続けていくにあたって、英語でContributorと会話できないと話にならないなとKubeCon NA2019で痛感しました。
KubeCon NA2019ではMinikubeのメンテナーたちと会って話して奇跡的に相手の意図が理解できましたが(多分優しく話してくれていた)、確実に意思疎通できるようになりたい(ならないといけない)と実感しました。
継続的かつ長期的に訓練しないと身に付かないと思っているので、年単位で頑張っていきたいところです。
最後に
2018年以前までは主業務のほとんどが上流で、Excelとパワーポイントで資料を作成する毎日で、ちゃんと技術と向き合ったエンジニアになりたいと思っていました。
2019年はインプットもアウトプットも業務もきちんとできて、ようやくエンジニアをちゃんと名乗れるな、と安堵しています。
2019年は自分なりに頑張った年でしたが、頑張りすぎた面もありました。
スケジュールが完全に土日消失前提だったので、もっと余裕を持ちたいと思います。
仕事しつつ、発表資料作りつつ、執筆しつつ、コントリビュートしつつ、英語の勉強しつつ、技術の勉強しつつ、は自分には無理というのがよくわかったので、来年は要所要所で抑えつつやっていきたいと思います。
今年一年、多くの方々と交流し、お世話になりました。
本当にありがとうございました。
来年も発表を聞いたり、発表をしたり、お話ししたりして、楽しく技術に打ち込んでいきたいと思います。
来年もよろしくお願いします!!