- Spine एक Go-आधारित backend web framework है जो execution flow को छिपाने के बजाय उसे स्पष्ट रूप से सामने लाता है
- एक single Pipeline पूरे execution order का मालिक होता है, और Controller केवल business logic पर ध्यान देता है
- method signature ही API contract है, और annotation या convention-आधारित automation नहीं है
- request order कोड में स्पष्ट रूप से दिखता है
- शुरुआती productivity से अधिक long-term maintainability और execution flow को trace करना आसान बनाने पर फोकस
- HTTP Transport के रूप में Echo का उपयोग करता है, और ORM-agnostic design होने के कारण Bun/GORM आदि को स्वतंत्र रूप से चुना जा सकता है
Spine परिचय
Spine एक framework है जिसका लक्ष्य web request के execution flow को स्पष्ट रूप से सामने लाना है
ज़्यादातर frameworks सुविधा के लिए जिस execution order को छिपाते हैं, उसे यह code structure में स्थिर करता है
यह ऐसी structure-oriented design अपनाता है जो स्पष्ट रूप से जवाब दे सके: "request कहाँ से शुरू होती है, कौन उसे handle करता है, और किस क्रम में execute होती है"
डिज़ाइन सिद्धांत
कोई magic नहीं नीति
- execution order को जानने वाला component केवल Pipeline है
- "अपने-आप हो जाने वाले" behavior को न्यूनतम रखा गया है
- हर extension और execution को explicitly register किया जाता है और उनका order predictable होता है
signature-आधारित contract
- method signature ही API contract है
- input creation का काम ArgumentResolver करता है, और output processing का काम ReturnValueHandler
- annotation-आधारित mapping और convention-आधारित automatic inference की अनुमति नहीं है
Controller स्वतंत्रता
- Controller, HTTP/Transport types पर निर्भर नहीं करता
- केवल path., query., httperr.* जैसे semantic types का उपयोग करता है
- यह execution model को नहीं जानता, लेकिन input का source type के ज़रिए स्पष्ट किया जाता है
मुख्य फीचर
routing और parameters
- Path Parameter सपोर्ट (order-based binding)
- Query Values utility (Int, String, Boolean parsing)
- Body DTO auto binding
response processing
- ReturnValueHandler के जरिए struct -> JSON automatic conversion
- error -> HTTP status code automatic mapping
- httperr.NotFound, BadRequest आदि जैसे semantic error types
cross-cutting concerns
- Interceptor (PreHandle, PostHandle, AfterCompletion)
- built-in CORS Interceptor
- constructor-based IoC Container
architecture
- Transport layer अलग है (अभी Echo, लेकिन replace किए जा सकने के लिए design किया गया है)
- ORM-agnostic design (Bun, GORM आदि को स्वतंत्र रूप से इस्तेमाल किया जा सकता है ⚠️फ़िलहाल केवल Bun के साथ compatibility verify हुई है)
बड़े पैमाने के environment में ताकत
क्योंकि execution order को जानने वाला केवल एक ही actor है, इसलिए request flow को trace करने की लागत कम हो जाती है
logging, transaction, security जैसी cross-cutting concerns केवल Pipeline में रखी जाती हैं, इसलिए उनके apply होने के points और timing predict किए जा सकते हैं; यह शुरुआती productivity का कुछ हिस्सा छोड़कर लंबे समय में बढ़ती complexity को structure के जरिए absorb करने की रणनीति है
Spine क्या नहीं है
- यह Spring/NestJS का replacement नहीं है
- यह productivity को अधिकतम करने वाला framework नहीं है
- यह annotation-आधारित automation framework नहीं है
- यह HTTP Engine या Router-केंद्रित framework नहीं है
Spine एक ऐसा project है जिसे मदद की ज़रूरत है
Spine अभी एक पूर्ण framework नहीं है; इसे जानबूझकर कई हिस्सों को अधूरा रखते हुए सार्वजनिक किया गया है
यह verify करना ज़रूरी है कि क्या इसकी structure पर्याप्त रूप से explain की जा सकती है, और क्या इसका execution model वास्तविक समस्याओं को अच्छी तरह सामने लाता है
भाग लेने का तरीका
- GitHub पर ⭐️ दबाकर project को follow करें
- इस्तेमाल करके जो महसूस हुआ या जो सवाल हों, उन्हें issue के रूप में छोड़ें
- design पर आलोचना, सुझाव, या सवाल comments में छोड़ें
संदर्भ लिंक
- Spine project: https://github.com/NARUBROWN/spine
- Spine + Bun ORM User Demo: https://github.com/NARUBROWN/spine-user-demo
2 टिप्पणियां
AI के विवरण को थोड़ा सुधारकर अगर और ज़्यादा स्वाभाविक वाक्यों में लिखा जाए, तो विश्वसनीयता बढ़ेगी।
नमस्ते, फ़ीडबैक के लिए सच में धन्यवाद।
क्या आपका मतलब यह है कि GeekNews पर लिखा गया पोस्ट AI जैसा लग रहा था?
मैंने सोचा था कि यहाँ मूल रूप से ऐसे ही लिखना चाहिए ^^… दूसरे पोस्ट भी ऐसे ही लग रहे थे, इसलिए मैंने जानबूझकर इसी तरह लिखा।
https://spine.na2ru2.me/ko/
इसके अलावा, मैंने spine सीखने के लिए एक साइट भी शुरू की है।
अगर आपकी रुचि हो तो कृपया उसे भी देखें, धन्यवाद।