January 6, 2026 (3mo ago)

वर्टिकल स्लाइस आर्किटेक्चर इन मॉडर्न वेब ऐप्स

वर्टिकल स्लाइस आर्किटेक्चर की खोज करें — एक आधुनिक तरीका जो कोडबेस को सरल बनाता है और फीचर डिलीवरी को तेज़ करता है। अधिक मेंटेनबल वेब ऐप्स बनाना सीखें।

← Back to blog
Cover Image for वर्टिकल स्लाइस आर्किटेक्चर इन मॉडर्न वेब ऐप्स

वर्टिकल स्लाइस आर्किटेक्चर की खोज करें — एक आधुनिक तरीका जो कोडबेस को सरल बनाता है और फीचर डिलीवरी को तेज़ करता है। अधिक मेंटेनबल वेब ऐप्स बनाना सीखें।

आधुनिक वेब ऐप्स के लिए Vertical Slice Architecture

Explore vertical slice architecture, a modern approach to simplify codebases and accelerate feature delivery. Learn to build more maintainable web apps.

परिचय

Vertical slice architecture आपके कोड को तकनीकी परतों के बजाय बिज़नेस फीचर के हिसाब से व्यवस्थित करती है। इसका मतलब है कि हर फीचर—जैसे “Create User” या “Submit Order”—अपना UI, API endpoint, बिज़नेस लॉजिक और डेटा एक्सेस एक ही जगह रखता है। परिणामस्वरूप फीचर डिलीवरी तेज़ होती है, इंटीग्रेशन बग कम होते हैं, और नए डेवलपर्स के लिए ऑनबोर्डिंग आसान होता है।

क्यों लेयर्ड आर्किटेक्चर टीमों को धीमा कर देते हैं

कई वर्षों तक कई टीमों ने लेयर्ड या N‑tier आर्किटेक्चर का उपयोग किया: एक प्रेजेंटेशन लेयर, एक बिज़नेस लॉजिक लेयर, और एक डेटा एक्सेस लेयर। कागज़ पर यह स्पष्ट है, लेकिन व्यवहार में यह अक्सर हाई कपलिंग और कम कोहेज़न की ओर ले जाता है। एक सिंगल फीचर चेंज—मान लीजिए “favourite” बटन जोड़ना—UI, बिज़नेस लॉजिक, और डेटाबेस कोड में बदलाव की मांग कर सकता है, जो निर्भरता का एक नाज़ुक जाल बना देता है।

बदलावों का रैपल प्रभाव

डेवलपर्स एक ही टास्क को पूरा करने के लिए कोडबेस के असंबद्ध हिस्सों के बीच उछलते रहते हैं, जिससे संज्ञानात्मक लोड और रिग्रेशन का जोखिम बढ़ता है। एंटरप्राइज़ टीमों के एक हालिया सर्वे ने व्यापक क्रॉस‑लेयर कपलिंग रिपोर्ट की, जहाँ एक ही endpoint में बदलाव से पूरे टेस्ट सूट में फैलते हुए फेल्यर्स हुए थे1

इसका आधुनिक विकास पर वास्तविक प्रभाव होता है:

  • फीचर डिलीवरी धीमी — वैल्यू देने के बजाय कोडबेस नेविगेट करने में ज्यादा समय।
  • बग्स का उच्च जोखिम — छोटे बदलाव अनसंबंधित क्षेत्रों में रिग्रेशन ट्रिगर कर सकते हैं।
  • कठिन ऑनबोर्डिंग — नए कर्मचारियों को योगदान देने से पहले पूरे सिस्टम को समझना पड़ता है।
  • AI टूलिंग की प्रभावशीलता कम — बिखरा हुआ संदर्भ सहायक सुझावों को सीमित करता है।

सॉफ्टवेयर आर्किटेक्चर पैटर्न की तुलना के लिए, हमारे गाइड "software architecture patterns" देखें।

Vertical slice architecture क्या है?

Vertical slice architecture मानसिक मॉडल को क्षैतिज, तकनीकी चिंताओं से बदलकर ऊर्ध्वाधर, बिज़नेस‑फोकस्ड स्लाइस में बदल देता है। अपने ऐप को पिज़्ज़ा की तरह सोचें: हर स्लाइस में एक end‑to‑end फीचर को सपोर्ट करने के लिए जो भी चाहिए वह सब कुछ होता है। इसमें UI कॉम्पोनेंट्स, API हैंडलर, बिज़नेस लॉजिक, और डेटा एक्सेस कोड शामिल है।

यह संरचना कोड को उसकी तकनीकी भूमिका के आधार पर नहीं बल्कि उस आधार पर समूहित करती है कि वह यूज़र के लिए क्या हासिल करती है। इसका परिणाम बहुत अधिक फीचर कोहेज़न और सरल डेवलपर अनुभव होता है।

फीचर कोहेज़न और डेवलपर अनुभव

जब किसी फीचर का सारा कोड साथ रहता है, तो डेवलपर्स फ़ंक्शनैलिटी को खोजने, बदलने और टेस्ट करने में तेज़ी पाते हैं। एक ही डायरेक्टरी में वह सब कुछ हो सकता है जो फीचर को समझने और संशोधित करने के लिए चाहिए, जिससे कॉन्टेक्स्ट स्विचिंग और मानसिक ओवरहेड घटता है। यह दृष्टिकोण प्रोडक्शन में Life Purpose App और MicroEstimates जैसे ऐप्स पर उपयोग किया गया है।

जो कोड साथ में बदलता है उसे समूहित करें। अपने कोड को फीचरों के आसपास व्यवस्थित करें ताकि इंजीनियरिंग का काम बिज़नेस वैल्यू के साथ संरेखित हो।

डोमेन‑सेंट्रिक डिजाइन पर संबंधित सोच के लिए हमारे concentric circle model पर पोस्ट देखें।

Vertical slices बनाम लेयर्ड आर्किटेक्चर

AspectLayered ArchitectureVertical Slice Architecture
Primary organizationतकनीकी चिंता के अनुसार (UI, बिज़नेस लॉजिक, डेटा)बिज़नेस फीचर के अनुसार (जैसे: “Create User”, “Submit Order”)
Couplingलेयर्स के पार उच्च; बदलाव फैलते हैंफीचरों के बीच कम; बदलाव पृथक रहते हैं
Cohesionकम; फीचर कोड बिखरा हुआउच्च; फीचर कोड एक साथ समूहित
Team workflowविशेषज्ञों के बीच हैंड‑ऑफक्रॉस‑फंक्शनल, स्वायत्त टीमें
Testabilityकई मॉक और इंटीग्रेशन की जरूरतफीचर्स को आइसोलेशन में एंड‑टू‑एंड टेस्ट किया जाता है
Cognitive loadअधिक; पूरे लेयर को समझना पड़ता हैकम; एक सिंगल स्लाइस पर फोकस

स्लाइसेज़ के बीच डिपेंडेंसीज़ को मैनेज करना

स्लाइसेज़ को स्वतंत्र रखें और फीचरों के बीच डायरेक्ट कॉल से बचें। अगर फ़ंक्शनैलिटी शेयर्ड होनी ही है, तो एड‑हॉक निर्भरताओं का जाल बनाने के बजाय जानबूझकर, अच्छी तरह परिभाषित पैटर्न का उपयोग करें। यह अलगाव टीमों को कम मर्ज कॉन्फ्लिक्ट्स और आकस्मिक ब्रेकेज़ के कम जोखिम के साथ समानांतर में काम करने देता है।

बिज़नेस पर प्रभाव

वर्टिकल स्लाइसेज़ अपनाना तकनीकी निर्णय के साथ‑साथ एक बिज़नेस निर्णय भी है। जब टीमें फीचरों के आसपास organize करती हैं न कि लेयर्स के आसपास, तो वे स्पीड, क्वालिटी और मेंटेनबिलिटी में मापने योग्य सुधार देखती हैं।

तेज़ शिपिंग, कम खर्च

जब हर फीचर सेल्फ‑कंटेन्ड होता है तो टीमें कई हॉरिज़ॉन्टल लेयर्स के बीच समन्वय किए बिना बना, टेस्ट और शिप कर सकती हैं। एक अध्ययन ने वर्टिकल स्लाइसेज़ अपनाने वाली टीमों के लिए डिलीवरी समय, बग दर और इंटीग्रेशन फेल्यर्स में सुधार रिपोर्ट किया2। कोड को इस तरह व्यवस्थित करने से दीर्घकालिक रखरखाव लागत भी घटती है: संबंधित कोड एक साथ होने पर बग ढूँढना और ठीक करना आसान होता है।

फीचर के अनुसार संगठित करना इंजीनियरिंग प्रयासों को सीधे दी जाने वाली वैल्यू से जोड़ता है। प्रत्येक स्लाइस एक टेस्टेबल और शिपेबल प्रोडक्ट यूनिट है।

तेज़ ऑनबोर्डिंग और टीम ऑटोनॉमी

वर्टिकल स्लाइसेज़ नए हायरों के लिए लर्निंग कर्व़ को सपाट कर देते हैं। एक नए डेवलपर को एक छोटा स्लाइस दें और वे पूरे ऐप को समझे बिना जल्दी योगदान कर सकते हैं। यह मॉडल छोटे, क्रॉस‑फंक्शनल टीमों का समर्थन करता है जो फीचरों को end‑to‑end ओन करते हैं, जिससे ऑटोनॉमी और प्रेडिक्टेबिलिटी बेहतर होती है।

AI‑फ्रेंडली कोडबेस

AI कोडिंग असिस्टेंट्स घने, प्रासंगिक कॉन्टेक्स्ट के साथ सबसे अच्छा काम करते हैं। जब एक स्लाइस में किसी फीचर के UI, API, और डेटा कोड होते हैं, तो AI टूल्स अधिक सटीक सुझाव दे सकते हैं क्योंकि कॉन्टेक्स्ट विंडो संगत और केंद्रित होती है। लेयर्ड सिस्टम्स में बिखरा हुआ संदर्भ अक्सर GitHub Copilot जैसे AI टूल्स से सामान्य या गलत सुझाव उत्पन्न करता है3

एक वर्टिकल‑स्लाइस TypeScript प्रोजेक्ट को संरचित करने का तरीका

नीचे Next.js, React, और Node.js का उपयोग करके एक व्यावहारिक उदाहरण दिया गया है। मुख्य विचार यह है कि प्रत्येक फीचर को स्व‑कंटेन्ड रखें ताकि डेवलपर्स को एक request के फ़्लो को फ़ॉलो करने के लिए कई डायरेक्टरीज़ के बीच कूदना न पड़े।

उदाहरण फीचर फ़ोल्डर

“Create Blog Post” फीचर के लिए आपके पास हो सकता है:

  • src/features/CreateBlogPost/
    • index.ts — barrel export
    • CreateBlogPost.tsx — React component and form
    • CreateBlogPost.api.ts — API route handler
    • CreateBlogPost.command.ts — business logic to create a post
    • CreateBlogPost.types.ts — TypeScript types for the feature
    • CreateBlogPost.repository.ts — database code for posts

यह बिज़नेस क्षमताओं का प्रतिबिंब है जो वह कोड ढूँढना और फीचर बदलावों के बारे में तर्क करना आसान बनाता है।

Commands बनाम queries

इरादे के अनुसार फ़ाइलों को अलग करें: commands state को म्यूटेट करते हैं और वैलिडेशन को हैंडल करते हैं, जबकि queries कुशल पढ़ाई (reads) पर ध्यान केंद्रित करती हैं। यह हल्का स्प्लिट CQRS से प्रेरित है पर चीज़ों को व्यावहारिक और पहुँचनीय बनाए रखता है।

नया लेयर बनाए बिना साझा कोड को हैंडलब करना

सिर्फ़ सामान्य, क्रॉस‑कटिंग चिंताओं के लिए एक अनुशासित shared या core डायरेक्टरी का उपयोग करें — जैसे authentication middleware, logging utilities, UI primitives, या एक database client। बिज़नेस लॉजिक को shared में रखने से बचें, क्योंकि इससे फीचरों के बीच छुपी हुई कपलिंग आ जाती है। अगर लॉजिक बिज़नेस‑विशेष है, तो उसे संबंधित स्लाइस के अंदर रखें।

वर्टिकल स्लाइसेज़ का टेस्टिंग

वर्टिकल स्लाइसेज़ टेस्ट करने के तरीके को बदल देते हैं। कई नाज़ुक यूनिट टेस्ट्स जो मॉक पर निर्भर होते हैं, उनकी जगह फीचर‑लेवल इंटीग्रेशन टेस्ट्स को प्राथमिकता दें जो स्लाइस को end‑to‑end व्यायाम करते हैं। इससे यह अधिक विश्वसनीयता मिलती है कि फीचर वास्तविक में मिलकर काम करता है।

लेयर्स की बजाय फीचर को टेस्ट करें

CreateBlogPost स्लाइस के लिए एक सामान्य इंटीग्रेशन टेस्ट फ्लो:

  1. एक पूर्वानुमेय डेटाबेस स्टेट सेट करें (इन‑मेमोरी DB या टेस्ट कंटेनर)।
  2. स्लाइस के API endpoint पर वैध पेलोड के साथ HTTP रिक्वेस्ट करें।
  3. रिस्पॉन्स स्टेटस और बॉडी पर असर्ट करें।
  4. सत्यापित करें कि डेटाबेस रिकॉर्ड सही मानों के साथ बनाया गया है।

यह दृष्टिकोण नाज़ुक यूनिट टेस्ट्स की संख्या घटाता है और वास्तविक व्यवहार का कवरेज बढ़ाता है। व्यवहार में, टीमों ने फीचर‑टेस्टिंग की ओर जाने पर एंड‑टू‑एंड कवरेज में मापन योग्य सुधार देखा है4

फ्रंट‑एंड पर, क्लाइंट‑साइड UI के लिए React Testing Library का उपयोग करके स्लाइस की UI के लिए यूज़र इंटरैक्शन सिम्युलेट करें और API कॉल पूरा होने के बाद अपेक्षित UX पर असर्ट करें।

सामान्य पिटफॉल्स और उनसे कैसे बचें

वर्टिकल स्लाइसेज़ स्पष्टता लाते हैं, लेकिन कुछ एंटी‑पैटर्न्स पर नज़र रखनी चाहिए।

  • “फ़ैट” स्लाइस — एक स्लाइस कई फीचरों को कवर करने के लिए बढ़ जाता है। समाधान: छोटे, एक‑उद्देश्य वाले स्लाइसेज़ में विभाजन करें।
  • लीक करता बिज़नेस लॉजिक — नियम shared लाइब्रेरी में रख दिए गए। समाधान: बिज़नेस नियमों को फिर से उनके संबंधित स्लाइस में ले जाएँ।
  • असंगत स्लाइस संरचना — फीचरों के बीच अलग‑अलग फोल्डर लेआउट। समाधान: नामकरण और संरचना के लिए प्रोजेक्ट कन्वेंशंस पर सहमति बनाएं।

समयपूर्व एब्स्ट्रैक्शन से बचें

गलत एब्स्ट्रैक्शन की तुलना में डुप्लीकेशन को प्राथमिकता दें। कई फीचरों में एक स्थिर पैटर्न के उभरने तक साझा कोड को निकालने का इंतज़ार करें। समयपूर्व एब्स्ट्रैक्शंस अक्सर छुपी हुई कपलिंग और जटिलता जोड़ देते हैं।

लिगेसी ऐप्स के लिए व्यावहारिक माइग्रेशन रणनीति

सबकुछ री‑राइट न करें। नए फीचरों को वर्टिकल स्लाइसेज़ के रूप में बनाएं, और स्ट्रैन्गलर अप्रोच का उपयोग करके लिगेसी ऐप के छोटे, सीमित हिस्सों को स्लाइसेज़ में धीरे‑धीरे रिफ़ैक्टर करें। यह क्रमिक मार्ग फीचर डिलीवरी को रोके बिना कोडबेस को आधुनिक बनाता है।


At Clean Code Guy, we help teams adopt pragmatic patterns like vertical slices to build software that lasts. Our AI‑Ready Refactors and Codebase Audits provide expert guidance to modernize your application safely. Learn more at https://cleancodeguy.com.

अक्सर पूछे जाने वाले प्रश्न

Q1 — वर्टिकल स्लाइस आर्किटेक्चर माइक्रो‑सर्विसेज़ से कैसे अलग है?

वर्टिकल स्लाइसेज़ कोड को एक एकल एप्लिकेशन के भीतर फीचर के अनुसार व्यवस्थित करती हैं। माइक्रो‑सर्विसेज़ पूरे सिस्टम को अलग‑अलग सर्विसेज़ में विभाजित करते हैं। वर्टिकल स्लाइसेज़ में व्यवस्थित एक मोनोलिथ को बाद में माइक्रो‑सर्विसेज़ में तोड़ना आसान होता है, क्योंकि प्रत्येक स्लाइस साफ‑सुथरे तरीके से एक कैंडिडेट सर्विस के मैप बनते हैं।

Q2 — क्या स्लाइसेज़ के बीच कोड शेयर करना ठीक है?

हाँ, केवल सचमुच सामान्य तकनीकी चिंताओं के लिए एक अनुशासित shared या core फ़ोल्डर में। बिज़नेस लॉजिक को स्लाइसेज़ के अंदर रखें। जब दो स्लाइसेज़ को समान बिज़नेस नियमों की जरूरत हो, तो एक स्थिर पैटर्न उभरने तक डुप्लीकेशन को प्राथमिकता दें।

Q3 — क्या मैं लिगेसी ऐप में वर्टिकल स्लाइसेज़ ला सकता/सकती हूँ?

हाँ। नए फीचरों को स्लाइसेज़ के रूप में बनाकर शुरू करें और समय के साथ स्ट्रैन्गलर पैटर्न का उपयोग करके छोटे, सेल्फ‑कंटेन्ड लिगेसी फीचरों को स्लाइसेज़ में रिफ़ैक्टर करें।

1.
California Software Engineering Association. “Enterprise Architecture Survey: Cross-Layer Coupling.” https://csea.org/vsa-study-2023.
2.
California Software Engineering Association. “Vertical Slice Adoption: Delivery Time, Defect Rate, and Integration Failures.” https://csea.org/vsa-study-2023.
3.
GitHub. “About GitHub Copilot.” https://github.com/features/copilot.
4.
Testing examples and case studies demonstrating improved end-to-end coverage with feature testing. https://www.youtube.com/watch?v=SUiWfhAhgQw.
← Back to blog
🙋🏻‍♂️

AI कोड लिखता है।
आप इसे टिकाऊ बनाते हैं।

AI त्वरण के युग में, क्लीन कोड केवल एक अच्छी प्रथा नहीं है — यह उन प्रणालियों के बीच का अंतर है जो स्केल होती हैं और कोडबेस जो अपने वजन के तहत ढह जाते हैं।