
Πώς στήσαμε ένα parallel website auditor με Laravel 13, Horizon και Browsershot/Puppeteer
Καλησπέρα σε όλους, Ήθελα να μοιραστώ την αρχιτεκτονική ενός SaaS που ολοκληρώσαμε πρόσφατα (λέγεται 4uTest) και να συζητήσουμε για το πώς διαχειρίζεστε παρόμοια workloads.
Το app τρέχει 7 διαφορετικά analysis modules σε παράλληλο χρόνο (SEO/Schema, Security, Core Web Vitals, Broken Resources, E-commerce Catalog, Trackers, WCAG).
Πώς δουλεύει behind the scenes:
- Όταν μπαίνει ένα URL, γίνονται dispatch 7 ανεξάρτητα queue jobs στο Redis.
- Χρησιμοποιούμε Laravel Horizon για να τα ελέγχουμε και Browsershot (Puppeteer/Headless Chromium) για τα metrics του Performance.
- Το crawler για τα σπασμένα links/images σκανάρει έως 60 σελίδες με Symfony DomCrawler.
- Μόλις τελειώσουν και τα 7 jobs, γίνεται finalized το report και βγαίνει ένα score από το 100 με βάση συγκεκριμένα point deductions.
Όλο αυτό παίρνει περίπου 30 δευτερόλεπτα ανά site. Αν κάποιος δουλεύει με παρόμοιο stack ή heavy Puppeteer instances σε production, πώς διαχειρίζεστε το memory allocation στα Docker containers για να μην κρασάρουν τα workers σε μεγάλα crawls;
Site: 4utest.com (αν θέλει κανείς να δει το UI/Inertia setup).