解決策
2000年代初頭、ウェブサーバーは接続ごとにスレッドまたはプロセスを割り当てており、高トラフィックのサイトは約1万の同時接続で壁に突き当たっていた。これがC10K問題である。ロシアの開発者イゴール・シソエフは、ロシアの大手ポータルであるRamblerのためにまさにこの問題を解決すべく、2002年にnginxの開発を始めた。
nginxは接続を少数のプロセスで処理されるイベントとして扱うため、負荷時でもメモリ使用量は低く抑えられ、動作も予測可能なままである。同じコアがHTTPサーバー、リバースプロキシ、コンテンツキャッシュ、ロードバランサー、そしてTCP/UDPまたはメールのプロキシとして機能し、モジュール式のアーキテクチャを備えている。
2004年10月に最初にリリースされたnginxは、ロシアのポータルから世界のウェブサイトの大部分へと広がった。nginx.orgはNetcraftによる世界で最も人気のあるウェブサーバーだとしている。Nginx, Inc.は商用サポートのために2011年に設立され、F5は2019年3月に約6億7000万ドルで同社を買収し、創業者を維持した。
達成したこと
すべての接続をスレッドではなく軽量なイベントとして処理する
うまくいった理由
イベント駆動型の処理により、多数の接続下でもメモリが一定に保たれる
1台のサーバーがプロキシ、キャッシュ、ロードバランシング、TLSをカバーする
オープンソースの基盤が大規模なコミュニティと支持を築いた
低リソース使用により、大規模運用が安価になった
応用できること
ボトルネックが接続ごとのリソースにある場合、リソースモデルを変えるべきである。イベント駆動型の多重化はハードウェアやスレッドの追加に勝り、1台の効率的なサーバーがサーバー群を置き換えられる。
その後
F5の下で、nginxはオープンソースプロジェクトと商用製品ファミリーの両方であり続け、ウェブトラフィックのフロントエンドとして、またKubernetesイングレスコントローラーの標準として広く使われている。買収額は約6億7000万ドルと評価され、オープンソースコミュニティはF5が買収したものの明示的な一部であった。
出典をたどる
出典
- nginx: web server, reverse proxy, load balancer nginx.org · nginx.org
- F5 Acquires NGINX to Bridge NetOps & DevOps F5 Networks · f5.com ·
- nginx Wikipedia · en.wikipedia.org