~/bescript · vaka analizi
TEKNİK VAKA ANALİZİ · Sipariş üzerine geliştirilmiş ticari yazılım, kaynak kod kapalı

RPA · NODE.JS · ÇOK İŞ PARÇACIKLI MİMARİ

Kendi hızını ayarlayan bir otomasyon paketi

Bir platform üzerindeki tekrarlayan kullanıcı işlemlerini, hesap yönetimini ve veri toplamayı tek merkezi panelden yöneten RPA çözümü. Klasik tarayıcı otomasyonunun ötesine geçip hibrit request/browser mimarisiyle kaynak tüketimini düşürürken işlem hızını yükseltir.

Rolüm
Tek geliştirici
Tip
Freelance · kapalı kaynak
Durum
Production
Çekirdek
Node.js · Express

Mimari yaklaşım

tarayıcıyı sadece gerektiği yerde kullanmak

Tarayıcı otomasyonu güçlüdür ama pahalıdır: her sekme bellek yer, her etkileşim yavaştır. Bu projede tarayıcı yalnızca karmaşık oturum açma ve token yakalama için kullanılıyor; asıl iş yükü ise doğrudan HTTP istekleriyle yürütülüyor. Sonuç, aynı işi çok daha az kaynakla yapan bir sistem.

node.jsexpresspuppeteer axioscheerioworker_threads cloudflare tunnels

Ana modüller

panel, iki bot ve bir tarayıcı

Yönetim paneli

Express.js tabanlı web arayüzü sistemin beyni: anlık başarı/hata oranları, işlem hızı ve canlı log akışı. Hedefler ve limitler JSON tabanlı dinamik konfigürasyonla yönetilir. Admin ve standart kullanıcı için rol tabanlı yetkilendirme var.

Yüksek performanslı işlem botu

Tarayıcı hiç açmadan, saf HTTP istekleriyle çalışır. Keep-Alive agent ile TCP bağlantıları açık tutulup el sıkışma maliyeti düşürülür. 429 veya 5xx hatalarında otomatik yavaşlar, sistem stabil olunca tekrar hızlanır.

Hibrit bot

Puppeteer ile giriş yapıp oturum bilgilerini yakalar, ardından tarayıcıyı yormadan arka planda doğrudan API çağrıları yapar. Hem mobil hem masaüstü istemci davranışını taklit edebilir.

Çok iş parçacıklı tarayıcı

CPU yoğunluklu işleri (regex ve XML ayrıştırma) worker threads ile ana thread'den izole eder, bulunanları çapraz sorgular.

Çözülen mühendislik problemleri

yüksek hacimde iki şey kırılır: event loop ve hız limitleri

1. Event loop bloklanması

Zorluk

Binlerce kaydın ayrıştırılması sırasında Node.js tek iş parçacıklı olduğu için event loop bloklanıyor, yönetim paneli donuyordu.

Çözüm
  • Tarayıcı modülü worker_threads kullanılarak tamamen izole edildi. CPU yoğun işler ayrı iş parçacıklarında koştu.
  • Arayüz tepki süresi ağır yük altında bile milisaniyeler seviyesinde kaldı.

2. Sabit bekleme süresi yerine uyarlanabilir hız

Zorluk

Statik bir bekleme süresi ya çok yavaş kalıp zaman kaybettiriyor ya da çok hızlı olup hedef sunucunun hız limitine takılıyordu. Doğru değer sabit değil, ana göre değişiyordu.

Çözüm
  • Sunucu yanıtlarına göre kendini ayarlayan bir eşzamanlılık kontrolü geliştirildi.
  • Başarılı işlemlerde paralel istek sayısı kademeli artar; hata alındığında logaritmik olarak azalır.
  • Sistem böylece her koşulda mevcut kapasitenin sınırına yakın ama üstünde olmayan bir noktada çalışır.

3. Port açmadan uzaktan yönetim

Zorluk

Yerel sunucuda çalışan panele dışarıdan erişmek gerekiyordu, ama router'da port açmak güvenlik riski yaratırdı.

Çözüm
  • Cloudflare Tunnels entegrasyonu ile yerel sunucu, hiçbir port açılmadan dış dünyaya güvenli şekilde sunuldu.
  • Panel mobilden veya farklı ağlardan erişilebilir hale geldi.

Kazanımlar

bu projeden çıkardıklarım

Karmaşık asenkron yapıların yönetimi, API davranışlarının analizi, oturum ve parmak izi yönetimi ve mikroservise yakın modüler mimari tasarımı konularında derinlemesine tecrübe. En kalıcı ders ise şu oldu: sabit sayılar yerine geri bildirime tepki veren sistemler kurmak — hem daha hızlı hem daha dayanıklı çıkıyor.

Benzer bir otomasyon mu lazım?

Elle yapılan tekrarlayan işleri otomatiğe alıyorum.