Puppeteerのコストを70%削減するLightpandaへの移行方法
28 अप्रैल 2026
0
Computing/SoftwareRelated Video
5:35Lightpanda: Chromeより60倍速い64MBの軽量ブラウザ
Better Stack
Comments (0)
Log in to leave a comment
No posts yet
5:35Better Stack
Log in to leave a comment
No posts yet
サーバーレス環境において、Puppeteerは悩みの種です。メモリを大量に消費し、初期化も低速です。AWS LambdaやGoogle Cloud Functionsの運用コストが急騰する原因の一つでもあります。Zig言語で開発されたLightpandaは一味違います。このツールは、初期実行速度を30倍に高め、メモリ使用量を10分の1に削減します。
サーバーレスの料金は、メモリ割り当て量と実行時間に比例します。Chromiumエンジンは、スクレイピングには不要なフォントレンダリングやGPU設定などを処理するため、最初のページ読み込みだけで4.5秒を費やします。一方、Lightpandaなら0.4秒で完了します。100ページを並列処理する場合、Chromiumは4.2GBのメモリを占有しますが、Lightpandaなら410MBで十分です。この違いだけで、Lambdaのメモリ設定を1024MBから256MBに下げることができ、運用コストを即座に70%削減可能です。
既存のPuppeteerコードをすべて書き換える必要はありません。アダプターパターンを使えば、環境変数を変えるだけでエンジンを切り替えられます。
puppeteer-coreをインストールします。puppeteer.launch() の代わりに puppeteer.connect({ browserWSEndpoint: 'ws://127.0.0.1:9222' }) を呼び出すよう関数を作成します。docker run -d -p 9222:9222 lightpanda/browser:nightly を実行してLightpandaサーバーを立ち上げ、コードが正常に動作するかテストします。この手法なら、問題が発生した際すぐに従来のChromium環境へロールバックできるため安全です。
毎回ブラウザを再起動するのはコストの無駄です。関数外でブラウザインスタンスを維持する「ウォームスタート」方式を適用しましょう。
LightpandaManager クラスを宣言します。browser.createBrowserContext() を生成してセッションを分離し、作業終了後に context.close() でメモリを即座に解放します。単純にブラウザの再起動を減らすだけでも、システム処理速度は5倍向上します。
Lightpandaでは解決が難しい複雑なSPAは、Chromiumと組み合わせて処理しましょう。すべてを重いエンジンに任せる必要はありません。
page.evaluate() で必要なJSONのみを抽出します。ワークフローの90%をLightpandaで処理し、高コストなリソースが必要な瞬間にのみ使い分ければよいのです。