1. yammerの日記
  2. awkblogのデモ環境を用意して..
2024-02-13 05:40

awkblogのデモ環境を用意している

2/7に録ったものです。YAPCに登壇する数日前、デモ環境の同時リクエスト受付数がが40倍になった話。

 

アプリケーションのデプロイ先: https://fly.io

データベースの提供元: https://neon.tech 

00:01
こんばんは、2024年2月7日の夜です。
昨日は、awkでウェブアプリケーションを作るという話の登壇資料を作っているという話をしたんですけど、
もうさすがに数日前になったので、時間がないということで、資料を社内の方に共有して見てもらうということにして、社内に共有しました。
一緒に、デモの環境も壊れていたので、一応最低限直してデプロイしました。
ただ、直したと言っても、実際には壊れているところもまだあって、
Nginxがリバースプロキシとしていて、その後ろにG-AUCのプロセスがいるという感じになっているんですけど、
Nginxの親プロセスといいますか、Nginx1台につきG-AUCのプロセスが1つ。
G-AUCのアプリケーションというのは、シングルプロセス、シングルスレット、同期処理という風になっていまして、
同時に1つのリクエストしか受け付けられないという構成になっているんですよね。
このせいで、リクエストがたくさん来るとNginxはいっぱい受け付けられるんだけど、
G-AUCのプロセスは受け付けられないので、Nginxが502を返すみたいなのが時々発生するという状態になっていました。
これは困ったということで、思っていたんですけど、
社内のエンジニアのブテイコとチッパーさんがこれをさらっと直してくださって、
というか、社内に公開したら多分リポジトリ見て苦労してくれたというような感じなんです、というふうに思っているんですけど、
それでプロセスを立ち上げるシェルスクリプトがあるんですけど、
そこでいっぱいプロセスを立ち上げて、別々のポートをバインディング、リッスンさせて、
Nginxのアップストリームにリッスンさせるポートの一覧をバーッと書く、
そんな感じでプレフォーク、
マルチプロセス、固定の数のマルチプロセスの構成になるというのを実装してくださいました。
ありがたいと思って、
今、それを自分のアプリケーションのリポジトリにコミットできるように、
帰りの電車の中でコードに落としていたというような、
コードに落としたというか、もう一回それと同じようなことを書くことをしていました。
ありがたい。これでデモで数十人とか、
03:03
もし使ってくれたら数百人とかの方がアクセスしてくれたらめっちゃ嬉しいんですけど、
そういうのも受け付けられるような状態にできるんじゃないかなというふうに思っています。
インフラ構成を少し話しておくと、
フライアイオンというパースを使っています。
ここにコンテナがデプロイできるので、
Dockerコンテナをデプロイしています。
一つのDockerコンテナの中に、
NginxのプロセスとGeorkのプロセスが同居しているという状態になっています。
前段のReverse Proxyorkとかやってもいいんですけど、
なるべくコンテナをデプロイしたら終わりという状態にしたかったので、
そういう構成にしています。
データベースはNeonというマネージドなデータベースのサービスを使っていて、
これでPostgreSQLを提供してくださっているので、
これでPostgreが動いているというような構成になっています。
シングルプロセスシングルスレッド同期処理なので、
1コンテナ1プロセスで大量にスケールさせて、
コンテナをたくさん横に並べてNeonを乗り切ろうと思っていたけど、
1コンテナで数十とか数百のプロセスを立ち上げるという状態にできると思うので、
この後はどれくらいのメモリがいくのかを確認して、
FlyIOの提供しているMicroVMの1コンテナ分のメモリと使いそうなワーカーがどれくらいのメモリになるかを検討していきたいと思います。
というわけで、発表資料もそうですし、デモの環境ももうちょっと整えていきたいですね。
なんとあと3日ぐらいですかね。では、ご視聴ありがとうございました。
では今日はこれで終わりにします。ではまた。
05:40

コメント

スクロール