サービスの一時的な飢餓状態とはどういう状態か。その上で、とあるインスタンスが古いインスタンスのリソースを奪い、自身に吸収することによってとあるインスタンスはある種リソースを蓄積する。しかし飢餓状態が長く続くとその循環が起こり続け、いつかインスタンスは少数になりサービスは停止する。
— 松本 亮介 / まつもとりー (@matsumotory) 2017年9月29日
こんなことを以前から考えていました。
生命の個体を維持するために非常に重要な役割を果たしているとされているオートファジーという機能があります。まずは以下のようにWikipediaの解説を見てみましょう。
オートファジー (Autophagy) は、細胞が持っている、細胞内のタンパク質を分解するための仕組みの一つ。自食(じしょく)とも呼ばれる。酵母からヒトにいたるまでの真核生物に見られる機構であり、細胞内での異常なタンパク質の蓄積を防いだり、過剰にタンパク質合成したときや栄養環境が悪化したときにタンパク質のリサイクルを行ったり、細胞質内に侵入した病原微生物を排除することで生体の恒常性維持に関与している。このほか、個体発生の過程でのプログラム細胞死や、ハンチントン病などの疾患の発生、細胞のがん化抑制にも関与することが知られている。
この中で特に自分は以下の動きに着目しました。
個体が飢餓状態におかれて栄養が枯渇し、アミノ酸の供給が断たれることは、細胞にとっては生死に関わる重大なダメージになりうる。しかしオートファジーが働くことによって、細胞は一時的にこのダメージを回避することが可能だと考えられている。オートファジーが起きると、細胞内に常に存在しているタンパク質(ハウスキーピング蛋白)の一部が分解されて、ペプチドやアミノ酸が生成され、それが細胞の生命活動にとって、より重要性の高いタンパク質を合成する材料に充てられると考えられている。ただし、オートファジーによる栄養飢餓の回避はあくまで一時的なものであり、飢餓状態が長く続いた場合には対処することができない。この場合、オートファジーが過度に進行することで、細胞が自分自身を「食べ尽くし」てしまい、細胞が死に至ると考えられている(次項を参照)。
つまり、これをもう少し一般化して考えると、生命の個体というシステムが飢餓状態になると、システムを構成しているコンポーネントが勝手に死に、そのリソースを生きているコンポーネントが吸収して、一時的に元気なコンポーネント群を作って飢餓状態を耐える、というようにも解釈できます。
ではこれをWebシステムに置き換えるとどういう状態になるかを考えてみました。今日は、はてなペパボ技術大会というイベントがあり、久々にわいわいはてなのエンジニアのid:y_uuki さんや id:masayoshi さんとおしゃべりする機会があったので、この辺りをネタにして色々議論してみたところ、概ね構想レベルでまとまったので、それを元に整理してみます。
続きを読む