自分を好きになる方法 - あるインフラエンジニアのキャリアとか

自分を好きになる方法

あるインフラエンジニアのキャリアとか

自分を好きになる方法 - あるインフラエンジニアのキャリアとか

Uchio Kondo (@udzura)

  • 株式会社SmartHR プロダクトエンジニア
  • 登壇他
    • RubyKaigi (2016 ~)
    • Cloud Native Days (2019 ~)
  • 著書、訳書
    • 『mrubyシステムプログラミング入門』(C&R研究所)
    • 『入門eBPF』(オライリージャパン、共訳)
  • Opinions and life are my own

自分を好きになる方法 - あるインフラエンジニアのキャリアとか

@udzura 37歳

自分を好きになる方法 - あるインフラエンジニアのキャリアとか

転職

自分を好きになる方法 - あるインフラエンジニアのキャリアとか

「基盤チーム」 ->
サービスの「インフラエンジニア」

自分を好きになる方法 - あるインフラエンジニアのキャリアとか

スタートアップ

自分を好きになる方法 - あるインフラエンジニアのキャリアとか

やりたいことをやれそう

自分を好きになる方法 - あるインフラエンジニアのキャリアとか

ミドルウェア開発

技術に向き合うポジション

サービスに触れる

自分を好きになる方法 - あるインフラエンジニアのキャリアとか

実際やってみて

自分を好きになる方法 - あるインフラエンジニアのキャリアとか

挫折

自分を好きになる方法 - あるインフラエンジニアのキャリアとか

俺は仕事ができなかった

自分を好きになる方法 - あるインフラエンジニアのキャリアとか

そもそも、言われたことをちゃんとやれるか?

全ての行動、判断、実装の根拠を説明できるか?

オウナーシップがあるか?

自分を好きになる方法 - あるインフラエンジニアのキャリアとか

瀬尾:「何を身に付けるか」というよりも、任された仕事をきっちりやることが大事な時期かなと思います。

自分を好きになる方法 - あるインフラエンジニアのキャリアとか

毎日泣いてた

自分を好きになる方法 - あるインフラエンジニアのキャリアとか

半年ぐらい?

自分を好きになる方法 - あるインフラエンジニアのキャリアとか

「不格好経営」

自分を好きになる方法 - あるインフラエンジニアのキャリアとか
自分を好きになる方法 - あるインフラエンジニアのキャリアとか

周りの評価は一度捨てる

自分を好きになる方法 - あるインフラエンジニアのキャリアとか

求められたことを全力でやる

自分を好きになる方法 - あるインフラエンジニアのキャリアとか

こんなこと書くと...

  • 前職のことを恐れられそうだが、怖くないよ〜
  • 実際は僕ができなかっただけ
    • 逆にというか、スタートアップである以上、大なり小なりどこもそう
自分を好きになる方法 - あるインフラエンジニアのキャリアとか

とにかくカリカリにやった

自分を好きになる方法 - あるインフラエンジニアのキャリアとか

少しして

自分を好きになる方法 - あるインフラエンジニアのキャリアとか

求められたことをできるようになってきた

  • できるようになったとは言っていない
  • 最後まで、できるようになったのか謎
自分を好きになる方法 - あるインフラエンジニアのキャリアとか

改めてインフラ技術やミドルウェアの運用開発に向き合う

自分を好きになる方法 - あるインフラエンジニアのキャリアとか

思ったこと・感じたこと

自分を好きになる方法 - あるインフラエンジニアのキャリアとか

とにかくオウナーシップ、オウナーシップ、オウナーシップ

  • 自分で最初に見つける
  • 自分が最初に反応する
  • 自分が主導になって直す
自分を好きになる方法 - あるインフラエンジニアのキャリアとか

ユーザ目線の第一歩は、技術的な正しさを突き詰めること

  • 壊れにくい、変化に強い運用にする
  • 必要ないものを作らない、必要なものだけ作る
  • お金を使いすぎない
自分を好きになる方法 - あるインフラエンジニアのキャリアとか

システムを変えたという事実と向き合う

  • 計測できるものは 全部 計測する
  • 監視がないものはサービスされたとはいえない
自分を好きになる方法 - あるインフラエンジニアのキャリアとか

これらができない場合は?

自分を好きになる方法 - あるインフラエンジニアのキャリアとか

「作ってほったらかし」

自分を好きになる方法 - あるインフラエンジニアのキャリアとか

信頼がとにかく大事

  • ミドルウェアより下は特にそう
  • そして信頼はすぐに壊れる
自分を好きになる方法 - あるインフラエンジニアのキャリアとか
We trust you have received the usual lecture from
the local System Administrator. It usually boils 
down to these three things:

#1) Respect the privacy of others.

#2) Think before you type.

#3) With great power comes great responsibility.

Password:
自分を好きになる方法 - あるインフラエンジニアのキャリアとか

これを聞くとミドルウェア開発者って普通に辛そうですけど...

自分を好きになる方法 - あるインフラエンジニアのキャリアとか

楽しかったか?

自分を好きになる方法 - あるインフラエンジニアのキャリアとか

そりゃもちろん楽しかった

  • この10年ぐらいを顧みても圧倒的成長した2年半
  • 「自分の納得いくものを作れるようになる」喜び
自分を好きになる方法 - あるインフラエンジニアのキャリアとか

そりゃもちろんキツい

  • 常にオウナーシップを求められるわけで
  • 責任もでかい
  • スタートアップだし人も足りない
自分を好きになる方法 - あるインフラエンジニアのキャリアとか

自分のコードが人に迷惑をかける

自分を好きになる方法 - あるインフラエンジニアのキャリアとか

自分のコードが人の人生を変えることもある

自分を好きになる方法 - あるインフラエンジニアのキャリアとか

ミドルウェア・クライシス

自分を好きになる方法 - あるインフラエンジニアのキャリアとか

ミドルウェア・クライシスとは?

「ミドルウェア開発のような抽象度の高いソフトウェア課題を仕事にしたいと足掻いているミドルエイジのソフトウェア開発者が突き当たるクライシス」の略

  • @udzura のナイショのCosenseより
自分を好きになる方法 - あるインフラエンジニアのキャリアとか

転職前はそういう感じだった

あと転職してしばらくもそうだった

自分を好きになる方法 - あるインフラエンジニアのキャリアとか

自分を好きになる方法 - あるインフラエンジニアのキャリアとか

<閑話>

</閑話休題>

自分を好きになる方法 - あるインフラエンジニアのキャリアとか

少しだけ自分を好きになれた後

自分を好きになる方法 - あるインフラエンジニアのキャリアとか

なんだかんだ色々やれた

  • 配信システム
    • MP4コンテナやH.264のことも勉強したしコードを書いた
  • VPN、社内システム
  • オブジェクトストレージ
  • クラウドアーキテクチャ
  • CI/CD
  • チューニング
  • OS、カーネル
自分を好きになる方法 - あるインフラエンジニアのキャリアとか

一方で、ミドル・インフラの限界を感じることも

自分を好きになる方法 - あるインフラエンジニアのキャリアとか

「アプリケーション側で直してください」

自分を好きになる方法 - あるインフラエンジニアのキャリアとか

e.g. self DDoS

  • フロント/アプリでretryの設計を間違えて、とんでもない回数のリクエストを投げられてしまったら?
  • インフラでいくら対策しても厳しいし、コストもすごい
  • フロントで実装者が気づいていれば簡単に避けられる
    • Exponental Backoff するとか、正しくエラーにするとか
自分を好きになる方法 - あるインフラエンジニアのキャリアとか

トレードオフ?

  • フロント
    • リトライが早ければユーザに見える待ち時間も短いはず
  • インフラ
    • 大量のリクエストを受けるインフラは無駄がある
自分を好きになる方法 - あるインフラエンジニアのキャリアとか

最終的に到達したところ

自分を好きになる方法 - あるインフラエンジニアのキャリアとか

ミドルウェア・クライシス

今は?

自分を好きになる方法 - あるインフラエンジニアのキャリアとか

最終的に...

  • データ構造とアルゴリズム に行き着くなと思った
    • 分散Redisや、高いIOのシステムを触ってきて見えてきた
自分を好きになる方法 - あるインフラエンジニアのキャリアとか

勘所と思ったこととか

  • Raft をバックエンドに持つRedis互換
    • 何がボトルネックになるのか、Raftの実装を追いかけながら調べ、できることとできないことを切り分ける
  • memcachedの負荷分散調査
    • ハッシュテーブルアルゴリズムを深掘りすることで、サーバの追加、削除に強くしたり、パフォーマンスを上げたりできそう
  • オブジェクトストレージ
    • 想定リクエストに対しIOが保てるか?バックエンドのデータ構造をよく考えて、妥協点を探る
  • 配信に関わるMP4やH.264、他独自プロトコル
    • データ構造を考え抜くことで、運用性を高めたり、遅延を抑えたりする
自分を好きになる方法 - あるインフラエンジニアのキャリアとか

新しい技術は色々出てくるが

  • 色々な技術的領域があるけど、原理原則を押さえれば、必要なことを勉強してキャッチアップするだけではないか?
    • メディアでもOSでもストレージでも、多分僕の知らないその他でも
自分を好きになる方法 - あるインフラエンジニアのキャリアとか

さらに言えば

  • 結果や成果物をちゃんと計測する能力があれば、unknown unknownを少しずつ確実に削り取れるのでは?
    • 先述の運用開発案件は、全部 泥臭い可視化、しつこい計測 で形にしていった
  • それを支える統計をはじめとした数学の力も大事
自分を好きになる方法 - あるインフラエンジニアのキャリアとか

じゃあさ

自分を好きになる方法 - あるインフラエンジニアのキャリアとか

ミドルウェア開発にも低レイヤにもこだわる必要なくね?

自分を好きになる方法 - あるインフラエンジニアのキャリアとか

どんな分野でもちゃんと向き合ったらディープダイブポイントがある

自分を好きになる方法 - あるインフラエンジニアのキャリアとか

それぞれの「低レイヤ」がある

自分を好きになる方法 - あるインフラエンジニアのキャリアとか

そんな中で

自分を好きになる方法 - あるインフラエンジニアのキャリアとか

アーキテクトという観点に再注目したい

自分を好きになる方法 - あるインフラエンジニアのキャリアとか

自分が影響を受けたアーキテクトに関する言説など

  • 島田浩二さん
    • 「ソフトウェアアーキテクチャの基礎」をはじめ、アーキテクトに関する一連の著書の翻訳者
    • Rubyist
  • WHOLENESS, REPAIRING, AND TO HAVE FUN
自分を好きになる方法 - あるインフラエンジニアのキャリアとか

自分を好きになる方法 - あるインフラエンジニアのキャリアとか

自分が影響を受けたアーキテクトに関する言説など

自分を好きになる方法 - あるインフラエンジニアのキャリアとか

現代では「作って終わり」という開発は減り、リーンスタートアップのような考え方が一般に知られるようになりました。こうした変化の中でアーキテクトは、目新しい問題を解き続けるというキャリアとは違う、新しいキャリアを歩けるようになってきました。

こうした新しいアーキテクトのあり方を、この記事では「継続性」のアーキテクトと呼んでいます。スナップショットでサービスにとって必要な設計をするのではなく、サービスに継続して関わり、成長段階に合わせて必要な設計をし続けるという役割です。

自分を好きになる方法 - あるインフラエンジニアのキャリアとか

アーキテクトとは?

システムアーキテクチャの全体像を描き、さらに継続的に進化させる

どの分野でもあり、どの分野でもないのでは

であれば...

自分を好きになる方法 - あるインフラエンジニアのキャリアとか

自分の基本の能力をちゃんと試せる土俵

自分を好きになる方法 - あるインフラエンジニアのキャリアとか

@udzura 40歳

自分を好きになる方法 - あるインフラエンジニアのキャリアとか

結論めいたもの

自分を好きになる方法 - あるインフラエンジニアのキャリアとか

end

自分を好きになる方法 - あるインフラエンジニアのキャリアとか

謝辞

  • 突然言及した、sonotsさん、Songmuさん、島田浩二さん、たなべすなおさん、なんかすいません...
  • いつかまたご挨拶させてください mm 機会があれば