13 poin oleh narubrown 2026-01-18 | 2 komentar | Bagikan ke WhatsApp
  • Spine adalah framework web backend berbasis Go yang menampilkan alur eksekusi secara eksplisit tanpa menyembunyikannya
  • Satu Pipeline memiliki seluruh urutan eksekusi, dan Controller hanya fokus pada logika bisnis
  • Signature method adalah kontrak API itu sendiri, tanpa otomatisasi berbasis anotasi atau konvensi
  • Urutan request terlihat jelas di dalam kode
  • Berfokus pada kemudahan pemeliharaan jangka panjang dan kemudahan menelusuri alur eksekusi dibanding produktivitas awal
  • Menggunakan Echo sebagai HTTP Transport, dengan desain independen ORM sehingga bisa bebas memilih Bun/GORM dan lainnya

Gambaran Umum Spine

Spine adalah framework yang bertujuan menampilkan alur eksekusi request web secara eksplisit
Sebagian besar framework menyembunyikan urutan eksekusi demi kenyamanan, tetapi Spine menetapkannya dalam struktur kode
Berorientasi pada struktur yang dapat menjawab dengan jelas, "dari mana request dimulai, siapa yang menanganinya, dan dijalankan dalam urutan seperti apa"

Prinsip Desain

Kebijakan tanpa sihir

  • Hanya ada satu komponen yang mengetahui urutan eksekusi, yaitu Pipeline
  • Meminimalkan perilaku yang "menangani sendiri secara otomatis"
  • Semua ekstensi dan eksekusi didaftarkan secara eksplisit dan memiliki urutan yang dapat diprediksi

Kontrak berbasis signature

  • Signature method adalah kontrak API itu sendiri
  • Pembuatan input ditangani oleh ArgumentResolver, dan pemrosesan output ditangani oleh ReturnValueHandler
  • Pemetaan berbasis anotasi dan inferensi otomatis berbasis konvensi tidak diperbolehkan

Independensi Controller

  • Controller tidak bergantung pada tipe HTTP/Transport
  • Hanya menggunakan tipe semantik seperti path., query., httperr.*
  • Tidak perlu mengetahui model eksekusi, tetapi sumber input dinyatakan lewat tipe

Fitur Utama

Routing dan parameter

  • Mendukung Path Parameter (binding berbasis urutan)
  • Utilitas Query Values (parsing Int, String, Boolean)
  • Binding otomatis Body DTO

Pemrosesan respons

  • Konversi otomatis struct -> JSON melalui ReturnValueHandler
  • Pemetaan otomatis error -> kode status HTTP
  • Tipe error berbasis semantik seperti httperr.NotFound, BadRequest

Cross-cutting concerns

  • Interceptor (PreHandle, PostHandle, AfterCompletion)
  • CORS Interceptor bawaan
  • IoC Container berbasis konstruktor

Arsitektur

  • Pemisahan lapisan Transport (saat ini Echo, dirancang agar bisa diganti)
  • Desain independen ORM (bebas menggunakan Bun, GORM, dll. ⚠️ saat ini kompatibilitas baru dikonfirmasi untuk Bun)

Kekuatan di lingkungan skala besar

Karena hanya ada satu pihak yang mengetahui urutan eksekusi, biaya pelacakan alur request berkurang
Cross-cutting concerns seperti logging, transaction, dan security hanya ditempatkan di Pipeline sehingga titik penerapan dan waktunya dapat diprediksi; strategi ini mengorbankan sebagian produktivitas awal untuk menyerap kompleksitas yang meningkat dalam jangka panjang melalui struktur

Yang bukan Spine

  • Bukan pengganti Spring/NestJS
  • Bukan framework untuk memaksimalkan produktivitas
  • Bukan framework otomatisasi berbasis anotasi
  • Bukan framework yang berpusat pada HTTP Engine atau Router

Proyek yang membutuhkan bantuan untuk Spine

Spine belum merupakan framework yang selesai, dan sengaja dirilis dalam keadaan banyak bagian masih belum lengkap
Perlu divalidasi apakah strukturnya sudah cukup mudah dijelaskan, dan apakah model eksekusinya benar-benar menampilkan masalah nyata dengan baik

Cara berpartisipasi

  • Tekan ⭐️ di GitHub untuk mengikuti proyek ini
  • Coba gunakan lalu tinggalkan kesan atau pertanyaan Anda sebagai issue
  • Tinggalkan kritik, saran, atau pertanyaan tentang desain di kolom komentar

Tautan referensi

2 komentar

 
bsh998 2026-01-20

Sepertinya tingkat kepercayaannya akan meningkat jika penjelasan AI sedikit diperbaiki dan ditulis dengan kalimat yang lebih natural.

 
narubrown 2026-01-20

Halo, terima kasih banyak atas masukannya.
Apakah yang Anda maksud terdengar seperti AI adalah tulisan di GeekNews?

Saya kira memang seharusnya menulis seperti ini di sini ^^… karena tulisan lain juga seperti ini, jadi saya sengaja menulisnya seperti ini.

https://spine.na2ru2.me/ko/
Selain itu, saya juga telah membuka situs untuk belajar spine.
Kalau Anda tertarik, silakan lihat juga. Terima kasih.