Skip to content

Azzt17/concurrent-job-processor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🚀 Concurrent Job Processor

CI — Test, Race Detect & Security Audit Go Version

Concurrent Job Processor adalah program Command Line Interface (CLI) berkinerja tinggi yang dirancang untuk memproses ribuan tugas secara asinkron. Proyek ini mendemonstrasikan implementasi Worker Pool Pattern, manajemen memori yang ketat (memory-safe), dan praktik DevSecOps (Shift-Left Security).

✨ Fitur Utama

  • Worker Pool Architecture (Fan-Out/Fan-In): Mencegah resource exhaustion dengan membatasi jumlah goroutine yang berjalan secara bersamaan.
  • Race-Free State Aggregation: Menggunakan sync/atomic untuk menjamin integritas data (thread-safe) tanpa bottleneck dari sync.Mutex.
  • Graceful Shutdown: Mendukung propagasi pembatalan (cancellation) ke seluruh unit kerja menggunakan context.Context dan menangkap sinyal OS (SIGINT/SIGTERM).
  • Zero Goroutine Leaks: Orkestrasi saluran (channel) yang aman dipadukan dengan sync.WaitGroup.
  • DevSecOps Ready: Terintegrasi penuh dengan GitHub Actions untuk menjalankan Unit Tests, Race Detector, Staticcheck (Linter), GoSec (SAST), dan govulncheck secara otomatis pada setiap push.

🏗️ Arsitektur Sistem

Proyek ini memisahkan secara ketat antara Input (Job) dan Output (Result) untuk menjunjung tinggi prinsip immutability.

  1. Dispatcher mengirimkan tugas ke dalam buffered channel.
  2. Kumpulan Workers (Goroutines) mengambil tugas dari saluran, memprosesnya, dan mengirimkan hasil ke saluran hasil.
  3. Aggregator mengumpulkan hasil secara aman menggunakan instruksi atomic di tingkat CPU.
  4. Jika pengguna menekan Ctrl+C atau batas timeout tercapai, sinyal akan disebarkan dan seluruh worker akan berhenti secara elegan tanpa merusak status memori.

🚀 Instalasi & Penggunaan

Prasyarat

  • Go versi 1.25 atau lebih baru.

Instalasi

Kloning repositori dan lakukan kompilasi binary:

git clone [https://github.com/Azzt17/concurrent-job-processor.git](https://github.com/Azzt17/concurrent-job-processor.git)
cd concurrent-job-processor
go build -o bin/processor ./cmd/processor/

Cara Menjalankan (CLI)

Gunakan parameter flag untuk mengatur perilaku pemrosesan:

# Menjalankan dengan konfigurasi default (5 pekerja, 100 tugas)
./bin/processor

# Menjalankan dengan konfigurasi kustom
./bin/processor -workers 8 -jobs 1000 -timeout 15s -buffer 20

Daftar Flag yang Tersedia:

  • -workers (int): Jumlah goroutine pekerja konkuren (default: 5).
  • -jobs (int): Jumlah total tugas yang akan disimulasikan (default: 100).
  • -timeout (duration): Batas waktu maksimum eksekusi sebelum dihentikan paksa (default: 30s).
  • -buffer (int): Ukuran buffer saluran antrian tugas dan hasil (default: 10).

Lapisan Keamanan (Shift-Left)

Repositori ini menerapkan pengujian otomatis multi-lapis untuk mendeteksi kerentanan di fase awal pengembangan:

  1. Functional Testing: Memastikan seluruh pekerjaan dieksekusi dengan benar.
  2. Concurrency Audit: Menggunakan go test -race untuk memblokir kode yang rentan terhadap Data Race.
  3. Static Analysis: Menggunakan staticcheck untuk mencegah penggunaan anti-pattern dan efisiensi memori.
  4. SAST (Static Application Security Testing): Terintegrasi dengan gosec untuk memindai pola kode berbahaya (misal: CVE, kriptografi lemah).
  5. Dependency Audit: Menggunakan govulncheck untuk memastikan tidak ada kerentanan rantai pasok (supply chain attacks).

Dikembangkan sebagai bagian dari eksplorasi DevSecOps dan arsitektur sistem konkuren.

About

A high-performance Go CLI demonstrating the Worker Pool pattern, memory-safe concurrency, graceful shutdown, and Shift-Left DevSecOps CI/CD practices.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages