सॉफ़्टवेयर आर्किटेक्चरपरीक्षा की शाम Evidence थी, Capacity Guarantee नहीं — NovaCommerce 5
दो वास्तविक परीक्षाएँ, एक scale-in गलती और planning model। अंतिम समीक्षा observations, extrapolation, operating cost और बचे tests अलग रखती है।
अलग frontend उपयोगी अनुभव दे सकता है, पर उसकी ज़िम्मेदारी भी चाहिए। पूरा lifecycle तुलना करें; price, stock, order और payment की authority एक engine में रखें।
लेखक
Anichur Rahaman

एक retailer के पास एक website और 3,000 products हैं। सोमवार की planning meeting में competitor जैसा app माँगा जाता है। Agency नई headless website सुझाती है। Framework चुनने से पहले operations manager पूछते हैं: अलग website चाहिए, नया app चाहिए या मौजूदा दुकान का shopping journey बेहतर करना है?
यह teaching scene है, किसी customer का observed outcome नहीं। एक website के लिए भी headless सही हो सकता है; कई channels अपने आप मुनाफ़ा नहीं देते। निर्णय valuable capability, operable design और तीसरे साल भी support देने वाले owner पर टिकता है।
Coupled/built-in storefront commerce platform के हिस्से के रूप में मिलता और maintain होता है। उसमें APIs, workers, CDN और कई deployment components हो सकते हैं। वह ज़रूरी नहीं कि एक process/server या बिना customisation का बंद theme हो।
Headless storefront अलग संचालित presentation app है, जो commerce interfaces इस्तेमाल करता है। Engine built-in storefront या hosted checkout भी दे सकता है; headless नाम हर ज़रूरी API action का प्रमाण नहीं। Hybrid कुछ journeys में built-in रखकर उसी core पर app या चुना अनुभव जोड़ता है।
Composable commerce capabilities चुनकर जोड़ना है। हर feature का अलग supplier, microservices या कोई एक hosting model अनिवार्य नहीं। हर अतिरिक्त service के contracts, identity, observability और failure handling जाँचें।
हर विकल्प में merchandising, preview, accessibility, translation/RTL, privacy/consent, analytics, SEO, extensions, patches और रात के incident का owner तय करें। दोनों models में tools ये दे सकते हैं; theme में सब free या headless में सब scratch से बनता है—दोनों अनुचित अनुमान हैं। Agency भी credible long-term owner हो सकती है यदि contract, access, exit plan और support capacity वास्तविक हों।
Table एक currency unit में invented annual operating budget है; vendor quote, salary survey या StoreConsole price नहीं। दोनों में maintenance और QA/security शामिल हैं। Common commerce-engine costs समान मानकर छोड़ी हैं; अपने model में फ़र्क़ हो तो जोड़ें। Staff time दो बार न गिनें।
| Annual operating line | Built-in | Separate frontend |
|---|---|---|
| UI maintenance और support | 24,000 | 54,000 |
| Hosting और CDN allocation | 6,000 | 12,000 |
| QA, accessibility और security | 8,000 | 18,000 |
| Preview, analytics और localisation | 4,000 | 12,000 |
| कुल annual operation | 42,000 | 96,000 |
One-off build/migration built-in 20,000 और separate frontend 80,000 मानें। Annual operation 42,000 बनाम 96,000 है: साल का 54,000 अतिरिक्त। तीन साल का undiscounted total 20,000+3×42,000=146,000 और 80,000+3×96,000=368,000; अंतर 222,000 ।
Illustrative incremental contribution margin 25% पर केवल extra recurring cost के लिए 54,000÷0.25=216,000 annual extra sales चाहिए। Initial extra 60,000 को तीन साल बाँटें तो 20,000 सालाना और; 74,000÷0.25=296,000 annual extra sales इस सरल तीन-वर्ष तुलना को cover करते हैं। यह forecast, cash-payback date या guarantee नहीं।
Contribution में goods, payment, fulfilment और expected returns/support समेत relevant variable costs घटते हैं; केवल gross margin नहीं। Discounts, demand uncertainty, financing/tax और non-sales benefit अलग model करें। Shared API work reuse हो सकता है; चार channels से कुल bill चौथाई नहीं होता। हर channel का design, testing और operation रहता है।
Actual journey audit करें: variants, customer-specific prices, currencies, availability, cart changes, shipping, tax, discounts, payment methods, orders, returns और account access । Catalogue-only API पूरी shop के लिए पर्याप्त नहीं। अपने enabled modules के अनुसार versioned contracts, rate limits, extensions, errors और backward compatibility जाँचें।
Frontend quote दिखा और intent ले सकता है; authoritative engine permissions, current rules और approved total validate करता है। हर app में inventory reservation, tax या discount policy न दोहराएँ। Cached price/displayed stock final order authority नहीं। Basket/terms बदलें तो आवश्यक नया confirmation लें।
OWASP authorization guidance हर request और object boundary पर लागू है। Button छिपाना, order ID जानना या login होना दूसरे customer/entity का access नहीं देता। Privileged secrets browser में न रखें। Public caching और account/cart/quote responses अलग रखें; relevant market, currency और permission variation शामिल हों।
Payment screen से लौटना payment proof नहीं। Stripe fulfilment guide server-side confirmation और duplicate-safe handling बताता है; actual payment state और async methods मायने रखते हैं। Operation identity बचाएँ, unknown result में दोबारा collect करने से पहले query करें। Transient failures में bounded backoff और owned exception रखें। दूसरी UI पर fallback दूसरा order/charge न बनाए।
अच्छे Core Web Vitals targets: 75 th percentile पर LCP≤2.5 s, INP≤200 ms, CLS≤0.1; mobile/desktop अलग देखें। Lab Lighthouse score field measurement नहीं। Architecture का नाम दोनों में pass सिद्ध नहीं करता।
Server rendering/static generation browser work घटा सकते हैं, पर slow origin, images, fonts, hydration और third-party code असर डालते हैं। INP में input delay, event processing और presentation शामिल हैं, केवल framework JavaScript नहीं। Public reads को edge cache दोनों models में बचा सकता है; checkout writes/private state को capacity और correctness चाहिए।
Google JavaScript SEO guidance crawling/rendering समझाता है। Useful content, crawlable links, उचित status और consistent metadata दें। Rendered product data, canonicals, translated routes और structured data देखें। Server HTML indexing/ranking guarantee नहीं।
Hosting और release work budget करें। उदाहरणतः Next.js self-hosting documentation multi-instance caches/builds और version skew बताता है। अलग frontend में compatible API/UI changes, invalidation, monitoring और recovery owner चाहिए; built-in में भी disciplined release/testing ज़रूरी है। Actual editors से marketing preview और extensions demonstrate कराएँ।
Decision table experiments बताती है, universal winner नहीं। Specialised configurator अकेली अलग website justify कर सकता है; mobile app built-in web के साथ रह सकता है। Traffic peak अकेला निर्णय नहीं, क्योंकि cache misses, writes और shared dependencies रहते हैं।
| ज़रूरत | उपयोगी comparison/test |
|---|---|
| Standard shopping journey | Current storefront सुधार बनाम alternatives |
| App या partner channel | Shared engine पर hybrid बनाम website replace |
| Distinctive single-site experience | Missing capability prototype; API/lifecycle cost |
| Frequent marketing changes | Editors preview/publishing दिखाएँ |
| बड़े traffic peaks | Cold-cache, write-path/failure capacity मापें |
| Limited delivery capacity | हर model में credible maintenance/support owner |
एक ही business outcome पर repaired current storefront, focused hybrid और अलग frontend तुलना करें। Image weight या upstream stock error असली समस्या हो तो सीधे repair पहचानें। वह सस्ता हो सकता है; guaranteed conversion lift या तय हफ़्तों का result न गढ़ें।
Supplier review module/capability map से शुरू होकर working acceptance journey पर खत्म हो। Feature coverage, maintainers, support और exit/export plan देखें। “One backend” अकेले दोनों storefronts के एक जैसे behaviour का प्रमाण नहीं।

Build से पहले baseline और acceptance goal लिखें। Product/account journeys, keyboard/accessibility, translations/RTL, mobile performance, tax/price display और consent सहित analytics test करें। एक authoritative engine रखें; competing rules वाले दो live write paths नहीं।
Isolated read-only page उपयोगी pilot हो सकता है, पर page-by-page हमेशा safest boundary नहीं। Cart identity, cookies, auth, redirects और payment callbacks pages/domains पार करते हैं। Coherent journey, stable cohorts और monitored stop conditions चुनें; random percentage safety guarantee नहीं।
जहाँ संभव useful URLs रखें। बदलाव में Google site-move guidance के mappings, permanent redirects और monitoring अपनाएँ। Relevant redirects कम-से-कम एक साल, users के लिए सम्भव हो तो अधिक रखें। Unrelated old pages को एक generic destination न भेजें। पहले/बाद metadata, sitemaps और crawling जाँचें।
Existing carts, order refs, active sessions, deployed schema/API versions और in-progress payments के साथ rollback exercise करें। Old UI में वापसी तभी सुरक्षित है जब contracts compatible रहें। वह लिया payment नहीं पलटती, नया order नहीं मिटाती। Blind replay की जगह outcomes और unfinished obligations reconcile करें।
Representative trading और recovery evidence के बाद old route retire करें, केवल अच्छा launch day देखकर नहीं। Named support owner और accepted cost model रखें। सोमवार की meeting का उपयोगी जवाब working journey और sustainable operation है; framework name या हर sales problem मिटने का वादा नहीं।
समीक्षा 6 November 2026 । Anichur Rahaman, StoreConsole के निर्माता। Costs और break-even teaching examples हैं; prices, observed outcomes या financial forecasts नहीं।
लेखक का परिचय
Anichur Rahaman
पढ़ना जारी रखें