Naoyaさんのトークセッション
Naoyaさんがジュンク堂で「私と技術書」を講演された感想をメモ。
#印象深い部分だけの感想なので注意。
【1】可用性、信頼性などのキャパシティ管理はLinuxカーネルのソースコードから解析する
Naoyaさんのキャリアを初めて聞いた。
Perlを中心としたWebプログラミングを中心にやってきて、はてなの最高技術責任者になって、負荷分散の技術に随分悩んだ話が興味深かった。
今までは、サーバーの負荷が高い時、どのような対処をすればよいか、対症療法しかできなかった。
だから、パッチのような対処しかできず、ずっと悩んでいた、と。
「詳解 Linuxカーネル」などを読んで、仮想メモリ、マルチタスク、I/Oディスクなどの仕組みがソースレベルで分かった。
Linuxカーネルの動きをソースコードレベルで追えたからこそ、何故負荷がかかるのか、理由をもって説明できて対策できる。
本の文章に嘘はあっても、ソースコードに嘘はないから、と。
その辺りのノウハウも含めて、「サーバ/インフラを支える技術」という本を書きました、と。
※補足:「Linuxカーネルの読み方」というスライドシェアが公開されている。
http://www.slideshare.net/naoya1977/how-to-read-linux-kernel/
「サーバ/インフラを支える技術」では、飛び道具のようなノウハウよりも、ローレベルのLinuxカーネル、ハードの計算機部分まで関係しているという部分に力を入れて書いた。
だから、著者が一番力を入れた部分を読み取って欲しいし、この本で全て書いているわけではないが、この本を手がかりにして探って欲しい、とのこと。
昨今のWebシステムが旧来のメインフレームより劣っていた部分は、運用保守にあったと思う。
何故、Cobolのような古い言語がいまだに使われているのか、という理由は、可用性や信頼性が抜群に安定しているメインフレーム上で動くからだ。
いわゆるオープン系のWebシステム、クラサバのシステムは、プログラミングという開発の生産性は抜群に素晴らしいが、24時間365日安定稼動、99.9999%の信頼性という運用保守では、20年以上ノウハウを貯めてきたメインフレームにはまだ劣るだろう。
しかし、「サーバ/インフラを支える技術」という本が出てきたように、Webシステムでも、負荷分散や安定稼動させる運用ノウハウは、以前に比べると随分たまってきたように思う。
メインフレームは大手SIer独自のハードウェアゆえ、その中身はユーザも他の開発者も知りえない。
それに対して、Webシステムが動作する殆どの基盤はLAMPを中心としたオープンソースだから、技術力さえあれば誰でも読める。
LinuxやApacheのソースコードを理解できれば、何故CPUの負荷が高いのか、メモリがオーバーするのか、その原因を突き止めるログや統計結果を自分で作ればいい。
Naoyaさんの話で興味深かったのは、OSの仮想メモリ、マルチタスク、マルチスレッドの動きは、本で書かれた概念と実際のソースに書かれている動きに違いがある、という話。
この辺りの感触も実際にソースを読んでみないと分からないのかな、とも思う。
【2】WebプログラミングからローレベルのLinuxカーネル、計算機科学、そして科学へ
最近のNaoyaさんの興味の話も目を引いた。
最初はPerlなどのWebプログラミングしか知らなかったけれど、ローレベルのLinuxカーネルを知って、負荷分散という技術にも強くなった。
そのおかげで、プログラムという抽象レイヤーのメカニズムも透けて見えるようになった。
今は、もっと深い部分であるコンピュータという計算機がどのように動いているか、という計算機科学に興味が向いている、と。
だから、今、はてなでは計算機科学のセミナーを開いている、とのこと。
NaoyaさんのようなハッカーがWebプログラミングの上層からLinuxカーネルや計算機科学のような下層へ深く掘り下げていく方向へ興味が向いていく話とその経験談がすごく興味深くて面白かった。
情報系の学部で勉強している人なら下層から上層へ進むのだろうが、NaoyaさんのようにWeb開発の経験が豊富な人は上層から下層へ掘り下げていく方が、自分の経験が理論化されて整理されていくだろうから楽しいだろうな、と思う。
プログラム開発と違うサーバー運用保守であっても、やはりプログラミング技術が基本なのだ、と改めて認識させられた。
| 固定リンク
「IT本」カテゴリの記事
- 「世界一流エンジニアの思考法」の感想(2024.12.08)
- アーキテクチャ設計はベストプラクティスを参照するプロセスに過ぎないのか?~Software Processes are Software, Too(ソフトウェアプロセスもまたソフトウェアである)(2024.09.22)
- 「システム開発・刷新のためのデータモデル大全」を読み直した感想~親子頻出アンチパターンは初心者モデラーに多い(2024.08.31)
- 「システムアーキテクチャ構築の原理」の感想part2~非機能要件がシステムのアーキテクチャに影響を与える観点をプロセス化する(2024.05.06)
- 「システムアーキテクチャ構築の原理」の感想(2024.05.06)
「プログラミング」カテゴリの記事
- Javaのモジュールシステムの考え方をまとめてみた(2022.10.21)
- Javaのモジュールシステムは複雑性をより増している(2022.09.10)
- Javaはなぜ関数型言語になろうとしているのか(2022.09.02)
- Javaのラムダ式の考え方(2022.08.10)
- Javaはオブジェクト指向言語ではなく関数型言語だった~「[増補改訂]関数プログラミング実践入門」はお勧めの本だ(2022.08.06)
「ソフトウェア」カテゴリの記事
- 「RedmineのUbuntu+Docker構築への移行」の感想 #redmineT(2024.11.24)
- Javaのモジュールシステムの考え方をまとめてみた(2022.10.21)
- Javaのenum型はシングルトンクラスみたいだ(2022.06.20)
- テスラが従来の自動車メーカーと異なるところは工場までソフトウェア化すること(2022.02.09)
- 「RubyやRailsは終わった」という記事のリンク(2022.01.09)
コメント