11 poin oleh GN⁺ 2025-04-07 | 2 komentar | Bagikan ke WhatsApp
  • Platform pemrosesan pekerjaan background skala besar berbasis Postgres yang bersifat open source
  • Distributed Task Queue dan platform orkestrasi workflow
  • Mendukung workflow pekerjaan yang kompleks, pemulihan kegagalan, penjadwalan, trigger berbasis event, hingga pemantauan real-time
  • Menyediakan SDK Python, Go, dan TypeScript
  • Lisensi MIT, tersedia dalam versi self-hosted dan cloud

Ringkasan fitur utama

  • Manajemen antrean

    • Sistem antrean durable berbasis Postgres
      • Queueing berbasis key (mewujudkan distribusi pekerjaan yang adil)
      • Rate limiting
      • Sticky Assignment dan Worker Affinity
    • Menangani distribusi pekerjaan, retry, dan notifikasi kegagalan secara otomatis
    • Menyediakan contoh Python / TypeScript / Go
  • Orkestrasi pekerjaan

    • Penyusunan workflow berbasis DAG
      • Eksekusi berbasis kondisi (mis: sleep, trigger berbasis event, eksekusi bersyarat berdasarkan nilai output dari pekerjaan induk, dll.)
      • Dapat menangani logika percabangan yang kompleks
    • Mendefinisikan dependensi antarpekerjaan dan menjalankan banyak pekerjaan secara paralel
    • Mendukung penyimpanan dan pemulihan hasil antara dengan durable task
      • Eksekusi fungsi yang durable: saat gagal, status antara disimpan di cache dan dipulihkan lewat eksekusi ulang
      • Juga mendukung Durable Sleep dan Durable Events
  • Kontrol alur (Flow Control)

    • Batas konkurensi per pengguna
    • Rate limiting global dan dinamis
    • Menjaga stabilitas sistem melalui distribusi pekerjaan yang strategis
  • Penjadwalan pekerjaan

    • Mendukung pekerjaan Cron, eksekusi terjadwal, dan durable sleep
    • Contoh: berjalan setiap tengah malam, dijadwalkan pada waktu tertentu, menunggu hingga waktu yang ditentukan, dll.
  • Routing pekerjaan

    • Sticky Assignment: mengikat pekerjaan ke worker yang sama
    • Worker Affinity: menerapkan logika pemilihan worker yang optimal
  • Trigger berbasis event

    • Dapat menjalankan pekerjaan setelah menerima event eksternal
    • Dapat menggabungkan kondisi event/sleep
  • Web UI real-time

    • Dashboard dan pemantauan real-time
    • Melihat log pekerjaan, mengatur notifikasi (Slack/email)

Kapan sebaiknya menggunakan Hatchet?

  • ✅ Saat membutuhkan penyusunan workflow berbasis DAG
  • ✅ Saat retry dan preservasi status penting ketika pekerjaan gagal
  • ✅ Untuk pemrosesan distribusi pekerjaan pada aplikasi dengan banyak pengguna
  • ❌ Saat hanya membutuhkan antrean sederhana yang mudah di-setup dengan cepat (disarankan Celery/BullMQ, dll.)
  • ❌ Saat integrasi dengan berbagai data connector lebih penting (disarankan Airflow/Prefect, dll.)

Perbandingan: Hatchet vs solusi lain

  • Hatchet vs Temporal

    • Hatchet mendukung queue + DAG + Durable Execution sekaligus
    • Temporal dioptimalkan untuk Durable Execution
    • Hatchet mudah untuk self-hosting (hanya membutuhkan Postgres)
  • Hatchet vs BullMQ / Celery

    • Hatchet memiliki penyimpanan riwayat pekerjaan + visualisasi UI + orkestrasi bawaan
    • BullMQ/Celery adalah library antrean ringan, tetapi fitur monitoring-nya terbatas
  • Hatchet vs Airflow / Prefect

    • Hatchet menawarkan eksekusi cepat, latensi rendah, dan manajemen worker sendiri
    • Airflow/Prefect berfokus pada pipeline data dan unggul dalam connector integrasi

Ringkasan

  • Hatchet adalah platform pemrosesan pekerjaan terdistribusi modern yang berjalan hanya dengan Postgres
  • Sistem pekerjaan yang durable, observable, dan composable dapat diwujudkan dengan satu alat
  • Mendukung cloud maupun self-hosted, dan mudah diintegrasikan dengan Python/Go/TypeScript

2 komentar

 
halfenif 2025-04-08

Menulis ini setelah mencobanya selama 2 jam.

  • Karena saya sedang membangun MQ, saya mencobanya karena penasaran apakah ini sesuatu yang baru berbasis Postgres, tetapi agak kecewa setelah melihat bahwa Rabbit tetap diperlukan
  • Karena ini bukan dari sudut pandang k8s, saya menjalankan docker-compose.yaml di podman(+Arch)
  • Karena saya ingin menggunakan Postgres secara terpisah, saya harus melakukan konfigurasi tambahan, tetapi akhirnya berhenti setelah menemui SSL routines:OPENSSL_internal:WRONG_VERSION_NUMBER: Invalid certificate verification context
  • Jika ada sesuatu yang salah di tengah jalan, saya harus me-drop database Postgres dan memulai lagi dari awal
  • Saya harus membuat API Key setiap kali, tetapi karena key lengkapnya tidak terlihat di layar web, saya harus mengekstraknya menggunakan developer tools.
 
GN⁺ 2025-04-07
Komentar Hacker News
  • Penasaran apa perbedaannya dibandingkan eksekutor job Python berbasis pg lain seperti Procrastinate atau Chancy

  • Sangat menarik

    • Saat dikatakan bahwa FOR UPDATE SKIP LOCKED tidak bisa diskalakan hingga 25k kueri/detik, penasaran di titik mana batasnya tercapai
    • Penasaran tentang pembacaan dan penulisan yang dibuffer, serta perubahan semua tabel besar ke kolom ID
    • Penasaran apakah hal-hal ini merupakan bagian dari solusi untuk menskalakan FOR UPDATE SKIP LOCKED agar sesuai kebutuhan
  • Penasaran apakah pekerjaan antrean (memasukkan pekerjaan ke antrean dan menandainya selesai) terjadi dalam transaksi yang sama dengan logika bisnis saya

    • Menurut saya ini fitur inti dari antrean berbasis database
    • Menyederhanakan logika untuk retry
    • Masalah yang sama juga bisa muncul saat eksekusi job
    • Pada titik ini mungkin lebih baik memakai SQS
  • Saya sedang merancang aplikasi berbasis event/workflow, dan solusi ini tampak sangat menjanjikan

    • Saya juga mempertimbangkan Temporal, tetapi tidak terasa benar-benar cocok
    • Lisensi open source memberi rasa percaya diri dalam merancang aplikasi
    • Saya sedang mencari kondisi seperti CEL
  • Enam perbaikan pada arsitektur Hatchet meningkatkan performa di semua dimensi

    • Partisi berbasis rentang untuk tabel deret waktu
    • Partisi berbasis hash untuk event job
    • Pemisahan tabel pemantauan dan antrean
    • Pembacaan dan penulisan yang dibuffer
    • Mengubah semua tabel besar ke kolom ID
    • Penggunaan trigger Postgres secara agresif
    • Kalau membaca manualnya, kita bisa melakukan hal-hal yang luar biasa
  • README tampaknya mengasumsikan lebih banyak pengguna memakai mode gelap

    • Logonya berwarna putih, jadi tanpa mode gelap tidak terlihat
    • Akan menarik melihat statistik dari GitHub
  • Saat memakai Postgres sebagai message queue, saya pernah menghadapi masalah menangani payload besar (lebih dari 50MB)

    • Solusinya adalah tabel unlogged dan vacuum penuh berkala
    • Saya bukan ahli Postgres, tetapi penasaran apakah masalah ini sudah teratasi
  • Memberikan umpan balik setelah meninjau dokumentasi selama 15 menit

    • Mode terang, open source, logging, dan antarmuka DX-nya bagus
    • Akan lebih baik jika contoh Hello World diganti dengan skenario nyata
    • Kode workflow yang mencakup job multi-tahap tidak terasa intuitif
    • Perlu membiasakan diri dengan cara berpikir, pola, dan istilah Hatchet
    • Tampaknya kurang ada upaya untuk mempermudah bagi pelanggan
    • Tulisan engineering memang masuk akal, tetapi pelanggan tidak peduli dengan infrastruktur cloud
    • Karena ada banyak opsi di pasar workflow, kemungkinan besar akan ditulis ulang atau pivot lagi pada akhirnya
    • Perlu memfokuskan perjalanan otomasi dan membuatnya mudah diambil serta dikonfigurasi orang
    • Sulit menserialisasi workflow ke JSON
    • Workflow Hatchet seharusnya mudah dipindahkan ke perusahaan lain
  • Selamat atas rilis v1

    • Saya sudah memakai Hatchet hampir 1 tahun, dan menerapkannya ke production 6 bulan lalu
    • Dukungan open source dan quickstart-nya luar biasa
    • Pekerjaan engineering yang dimasukkan ke sistem ini sangat terlihat
  • Kesan pertama bagus, selamat atas peluncurannya

    • Saya punya beberapa pertanyaan
    • Penasaran apakah mendukung job persisten
    • Penasaran di mana input dan output job disimpan
    • Penasaran apakah jumlah job per detik yang bisa diproses sistem bisa diperkirakan berdasarkan ukuran instance PostgreSQL dan metrik I/O
    • Saya sedang mengevaluasi berbagai alat, dan ingin tahu seperti apa rasanya memakai Hatchet
    • Saya mencari alat yang bisa dipakai dengan boilerplate seminimal mungkin