मोनोलिथ बनाम माइक्रोसर्विसेज़: 2026 में वास्तुकला कैसे चुनें

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

वह सहमति अब नहीं रही। पिछले तीन वर्षों में उन टीमों की समीक्षाओं की बाढ़ आई है जिन्होंने माइक्रोसर्विसेज़ बहुत जल्दी, बहुत आक्रामक ढंग से या ग़लत कारणों से अपनाए। Amazon Prime Video की टीम ने एक अध्ययन प्रकाशित किया जिसमें सर्वरलेस माइक्रोसर्विसेज़ से मोनोलिथ पर लौटने से लागत 90% घटी। InnoGames ने माइक्रोसर्विसेज़ को वापस मोनोलिथ में समेटकर अवसंरचना की जटिलता आधी करने की बात कही। ये कहानियाँ अपवाद नहीं, एक सुधार की अगली कड़ी हैं।

यह लेख एक वास्तुकला के पक्ष में दूसरी के ख़िलाफ़ दलील नहीं है। यह दोनों के बीच चुनाव का ढाँचा है, 2026 के लिए लिखा गया, उस लाभ के साथ जो पूरे उत्साह-और-निराशा के चक्र को देख चुकने से मिलता है। अंत तक आप ठीक-ठीक जान जाएँगे कि अगली वास्तुकला चुनने से पहले कौन-से सवाल पूछने हैं।

पेंडुलम वापस झूल गया

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

ये लाभ असली हैं, पर इनकी क़ीमत उत्साह के वर्षों में लगातार कम आँकी गई। हर माइक्रोसर्विस नेटवर्क विलंब, वितरित सिस्टम की जटिलता, डेटा की संगति की समस्याएँ और परिचालन का बोझ जोड़ती है। मोनोलिथ में एक तैनाती-संवाहक होता है, निगरानी के लिए एक ऐप्लिकेशन, संभालने के लिए एक डेटाबेस और घूमने के लिए एक कोडबेस। दस माइक्रोसर्विसेज़ में हर चीज़ दस होती है, और ऊपर से उनके बीच के एकीकरण-बिंदु।

उद्योग ने जो बुनियादी बात फिर से खोजी, वह यह है कि माइक्रोसर्विसेज़ एक लागत हैं, लाभ नहीं। वे विशिष्ट बाध्यताओं — टीम का आकार, स्केलिंग की माँग, तैनाती की आवृत्ति — को संभालने का औज़ार हैं, कोई अंतिम अवस्था नहीं जिसकी ओर हर सिस्टम को बढ़ना चाहिए। अगर वे समस्याएँ आपके पास हैं ही नहीं जिन्हें माइक्रोसर्विसेज़ हल करते हैं, तो वे सिस्टम को बेहतर नहीं बनाते। वे उसे महँगा और बदलने में कठिन बनाते हैं।

माइक्रोसर्विसेज़ समस्याओं के एक ख़ास समूह का अच्छा हल हैं। अगर वे समस्याएँ आपके पास नहीं हैं, तो आप माइक्रोसर्विसेज़ की क़ीमत चुका रहे हैं और लाभ नहीं पा रहे। सबसे महँगी वास्तुकला वही है जो उन समस्याओं को हल करती है जो आपके पास हैं ही नहीं।

2026 का परिदृश्य इसी सुधार को दर्शाता है। शुद्ध माइक्रोसर्विस वास्तुकलाएँ अब उन्हीं संगठनों में केंद्रित हैं जिन्हें उनकी सचमुच ज़रूरत है — दर्जनों टीमों वाले बड़े इंजीनियरिंग विभाग, ऐसे मंच जहाँ अलग-अलग घटकों को स्वतंत्र स्केलिंग चाहिए, और ऐसे उत्पाद जहाँ अलग-अलग सेवाओं की विश्वसनीयता या विलंब की ज़रूरतें मूलतः अलग हैं। बाक़ी हर जगह टीमें सरल वास्तुकलाएँ चुन रही हैं और माइक्रोसर्विसेज़ उन्हीं हिस्सों के लिए बचा रही हैं जिन्हें वे सचमुच चाहिए।

मोनोलिथ कब जीतता है

अधिकांश प्रोजेक्टों के लिए मोनोलिथ ही सही डिफ़ॉल्ट है। अनुभवी वास्तुकारों के बीच यह कोई विवादास्पद कथन नहीं, पर यह उस संदेश के विपरीत है जो कई डेवलपरों ने माइक्रोसर्विस उत्साह के दौर में आत्मसात किया। मोनोलिथ जितने परिदृश्यों में हारता है, उससे ज़्यादा में जीतता है, और असली बात यह जानना है कि वे परिदृश्य कौन-से हैं।

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

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

# What a simple monolithic deployment looks like in 2026
# One Dockerfile, one service, zero orchestration

FROM node:22-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --omit=dev
COPY . .
RUN npm run build
EXPOSE 3000
CMD ["node", "dist/server.js"]

# One docker-compose.yml for the whole stack
services:
  app:
    build: .
    ports:
      - "3000:3000"
    environment:
      - DATABASE_URL=postgres://db:5432/app
  db:
    image: postgres:17
    volumes:
      - pgdata:/var/lib/postgresql/data

इस व्यवस्था की परिचालन सरलता को कम आँकना कठिन है। निगरानी के लिए एक सेवा, जाँचने के लिए लॉग की एक धारा, वापस लौटाने के लिए एक तैनाती। एक कनिष्ठ डेवलपर पूरा तैनाती-संवाहक एक दिन में समझ सकता है। कुछ टूटे तो कारण खोजने के लिए ठीक एक जगह होती है। यह सरलता विलासिता नहीं, एक रणनीतिक लाभ है जो समय के साथ बढ़ता है।

डोमेन की जटिलता भी मोनोलिथ की ओर धकेलती है। विरोधाभास यह है कि डोमेन जितना जटिल होगा, समय से पहले सेवाओं में बाँटना उतना ही ख़तरनाक होगा। अगर आप जटिल डोमेन को उसकी स्वाभाविक सीमाएँ समझने से पहले काट देंगे, तो ऐसी सेवाएँ बनेंगी जो सब ग़लत तरीक़ों से आपस में बँधी होंगी — जिन्हें स्वतंत्र रूप से तैनात नहीं किया जा सकता क्योंकि एक में बदलाव दूसरे में बदलाव माँगता है; जो डेटाबेस साझा करती हैं क्योंकि डेटा साफ़-साफ़ बँटता नहीं; जिन्हें एक साथ तैनात करना पड़ता है क्योंकि उनके अनुबंध लगातार बदलते रहते हैं।

मॉड्यूलर मोनोलिथ: वह वास्तुकला जिस पर अधिकांश टीमें विचार ही नहीं करतीं

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

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

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

// A modular monolith boundary in TypeScript
// Each module exposes only its public API

// modules/orders/public-api.ts
export {
  createOrder,
  getOrderById,
  getOrdersByUser,
  OrderService,
} from "./order-service";

// modules/orders/internal/  ← everything here is private
//   order-repository.ts
//   order-validator.ts
//   order-pricing.ts

// modules/payments/public-api.ts
export {
  processPayment,
  getPaymentStatus,
  refundPayment,
} from "./payment-service";

// Cross-module dependency is explicit and auditable
import { getOrderById } from "../../orders/public-api";

मॉड्यूलर मोनोलिथ अनिश्चित भविष्य के विरुद्ध सबसे अच्छा बीमा भी है। अगर आपने मॉड्यूलर मोनोलिथ बनाया और बाद में पाया कि कोई मॉड्यूल स्वतंत्र सेवा बननी चाहिए, तो निकालना यांत्रिक होगा: मॉड्यूल का कोड नई सेवा में ले जाइए, उसका सार्वजनिक API HTTP या संदेश-क़तार से खोलिए और पुकारने वाले को जोड़ दीजिए। मॉड्यूल की सीमाएँ पहले से हैं। इंटरफ़ेस पहले से परिभाषित हैं। कठिन काम — डोमेन की सीमाएँ समझना — पहले ही हो चुका है।

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

  • मॉड्यूलर मोनोलिथ: तैनाती की एक इकाई, नेटवर्क कॉल की जगह फ़ंक्शन कॉल, लागू होने वाली मॉड्यूल-सीमाएँ, सेवा निकालने का आसान रास्ता।
  • पारंपरिक मोनोलिथ: तैनाती की एक इकाई, कोई लागू सीमा नहीं, शुरुआत में पूरी आज़ादी, निकालने का कष्टदायक रास्ता।
  • माइक्रोसर्विसेज़: तैनाती की कई इकाइयाँ, नेटवर्क से संवाद, लागू होने वाली सेवा-सीमाएँ, ऊँची परिचालन लागत।
  • मॉड्यूलर मोनोलिथ आमतौर पर बेहतर शुरुआती बिंदु है, क्योंकि यह विकल्प खुले रखता है और आज ही वितरित सिस्टम की जटिलता का वचन नहीं देता।

माइक्रोसर्विसेज़ सचमुच कब सार्थक हैं

माइक्रोसर्विसेज़ ग़लत नहीं हैं। वे अधिकांश टीमों के लिए ग़लत हैं, पर कुछ परिदृश्य हैं जहाँ लागत लाभ से न्यायोचित है। असली बात यह ईमानदारी से तय करना है कि आपका परिदृश्य वही है या नहीं।

स्वतंत्र स्केलिंग सबसे बचाव-योग्य कारण है। अगर आपके सिस्टम के अलग-अलग हिस्सों की स्केलिंग बिल्कुल अलग है — API गेटवे को प्रति सेकंड एक लाख अनुरोध संभालने हैं और रिपोर्टिंग सेवा को प्रति घंटे सौ — तो उन्हें एक ही तैनाती-इकाई में रखना संसाधनों की बर्बादी है। रिपोर्टिंग का हार्डवेयर बेकार पड़ा रहता है, जबकि गेटवे की स्वतः-स्केलिंग रिपोर्टिंग सेवा के ठंडे-प्रारंभ समय से बँध जाती है। अलग सेवाएँ स्वतंत्र रूप से स्केल होती हैं, और संसाधनों के कुशल उपयोग की बचत परिचालन बोझ की भरपाई कर सकती है।

टीम की स्वायत्तता दूसरा वैध कारण है। जब एक ही सिस्टम पर कई टीमें काम कर रही हों और हर टीम को अपनी लय में तैनात करना हो, माइक्रोसर्विसेज़ तालमेल की अड़चन हटा देते हैं। टीम A दिन में तीन बार तैनात कर सकती है, टीम B की समीक्षा पूरी होने का इंतज़ार किए बिना। पर सीमा पर ध्यान दें: यह दलील तभी लागू होती है जब टीमें सचमुच कई हों। अगर पूरे संगठन में दस डेवलपर हैं, तो आपके पास वह तालमेल की समस्या है ही नहीं जिसे माइक्रोसर्विसेज़ हल करते हैं। आपके पास संवाद की समस्या है, जिसे एक साझा चैनल हल कर देता है।

विश्वसनीयता या विलंब की अलग ज़रूरतें भी माइक्रोसर्विसेज़ को न्यायोचित ठहराती हैं। अगर आपकी भुगतान सेवा को 99.999% उपलब्धता चाहिए और विश्लेषण सेवा कभी-कभार के ठहराव सह सकती है, तो उन्हें अलग करने से रिपोर्टिंग की एक ख़राबी ग्राहकों की ख़रीदारी नहीं रोकती। इसी तरह अगर सिस्टम के एक हिस्से को बेहद कम विलंब चाहिए और दूसरा ज़्यादा विलंब सह सकता है, अलग करने से हर एक को स्वतंत्र रूप से अनुकूलित किया जा सकता है।

तकनीकी विविधता माइक्रोसर्विसेज़ के पक्ष में सबसे कमज़ोर दलील है। हाँ, वे अलग-अलग सेवाओं के लिए अलग भाषाएँ और डेटाबेस उपयोग करने देते हैं। पर व्यवहार में अधिकांश संगठन वैसे भी कुछ ही तकनीकों पर सिमट जाते हैं, और कई रनटाइम संभालने की परिचालन लागत लाभ से ज़्यादा होती है। अगर आपकी पूरी टीम TypeScript और PostgreSQL जानती है, तो सिर्फ़ विविधता के लिए एक सेवा Rust में और दूसरी Go में लिखना वह विलासिता है जो अधिकांश संगठन वहन नहीं कर सकते।

«मोनोलिथ से शुरू करें, सेवाएँ निकालें» वाला तरीक़ा

2026 में सिस्टम बनाने का सबसे भरोसेमंद तरीक़ा सबसे सरल भी है: मॉड्यूलर मोनोलिथ से शुरू करें, फिर सेवाएँ तब निकालें जब प्रमाण मिले कि वे चाहिए। इसे कभी «पहले मोनोलिथ» तो कभी «माइक्रोसर्विस निष्कर्षण» कहा जाता है, और यह उन संगठनों की डिफ़ॉल्ट सिफ़ारिश बन चुका है जो माइक्रोसर्विस उत्साह के दौर से गुज़रकर बचे हैं।

यह तरीक़ा चार चरणों में चलता है। पहला चरण मॉड्यूलर मोनोलिथ है। आप पूरा ऐप्लिकेशन तैनाती की एक इकाई के रूप में, कड़ी मॉड्यूल-सीमाओं के साथ बनाते हैं। हर मॉड्यूल अपने डेटा का स्वामी है, सार्वजनिक API देता है और कार्यान्वयन निजी रखता है। अनुशासन वही है जो माइक्रोसर्विसेज़ का होता — स्पष्ट अनुबंध, डेटा का बँटा हुआ स्वामित्व, स्पष्ट निर्भरताएँ — पर सब कुछ एक ही प्रक्रिया में चलता है।

दूसरा चरण मापन है। आप देखते हैं कि कौन-से मॉड्यूल सबसे अधिक बदलते हैं, कौन-सी टीमें किन मॉड्यूल पर काम करती हैं और किन मॉड्यूल की स्केलिंग या विश्वसनीयता की ज़रूरतें अलग हैं। आप अंतर्ज्ञान या अटकल के आधार पर सेवाएँ नहीं निकालते। आप डेटा के आधार पर निकालते हैं — इस असली प्रमाण के आधार पर कि मोनोलिथ कोई अड़चन बना रहा है जिसे सेवा-सीमा हटा सकती है।

तीसरा चरण निष्कर्षण है। आप वह मॉड्यूल लेते हैं जिसने सिद्ध कर दिया कि उसे सेवा बनना चाहिए — क्योंकि उसके बदलाव की दर मोनोलिथ की बहुत ज़्यादा तैनातियाँ करा रही है, या उसकी स्केलिंग की ज़रूरत बाक़ी सिस्टम से अलग है — और उसे निकाल लेते हैं। चूँकि मॉड्यूल की सीमाएँ पहले से साफ़ हैं, निष्कर्षण यांत्रिक होता है। आप अपने तैनाती-संवाहक वाली नई सेवा बनाते हैं, मॉड्यूल का सार्वजनिक API HTTP या संदेश-क़तार से खोलते हैं, और मोनोलिथ को सीधे मॉड्यूल के बजाय नई सेवा पुकारने के लिए अद्यतन कर देते हैं।

// Step 1: identify the extraction candidate as a module
// monolith/src/modules/reports/public-api.ts
export async function generateReport(
  reportId: string
): Promise<ReportResult> {
  // Implementation detail: reads from a separate replica,
  // takes 30 seconds, must not block the main application
}

// Step 2: when the evidence says this should be a service:
// 1. Create a new service from the module's code
// 2. Expose the same API over HTTP
// 3. Replace the direct call with a service client

// monolith/src/clients/reporting-service.ts
const client = new ServiceClient({
  name: "reporting",
  baseUrl: process.env.REPORTING_SERVICE_URL,
  timeout: 60000, // this service is slow
});

export async function generateReport(reportId: string) {
  return client.post("/reports", { reportId });
}

चौथा चरण दोहराव है। सिस्टम बढ़ने के साथ आप चक्र दोहराते हैं — मापें, निकालें, फिर मापें। कुछ निकाली गई सेवाओं को शायद आगे और छोटी सेवाओं में बाँटना पड़े। कुछ को शायद वापस मोनोलिथ में लाना पड़े, अगर निकालने से कोई मूल्य नहीं मिला। असली बात यह है कि हर निष्कर्षण प्रमाण पर टिका हो, वास्तुकला के सिद्धांत-वाक्य पर नहीं।

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

चुनाव कैसे करें: निर्णय का ढाँचा

नया सिस्टम डिज़ाइन करते समय या मौजूदा वास्तुकला आँकते समय इन सवालों से क्रम से गुज़रें। उत्तर आपको सही वास्तुकला की ओर ले जाएँगे, और भविष्य की भविष्यवाणी करने की ज़रूरत नहीं पड़ेगी।

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

दूसरा सवाल: क्या आपके सिस्टम में ऐसे घटक हैं जिनकी स्केलिंग मूलतः अलग है? अगर हर हिस्से को लगभग एक जैसी दर से स्केल होना है, उन्हें बाँटने का कोई अर्थ नहीं। अगर एक घटक को प्रति सेकंड दस हज़ार अनुरोध संभालने हैं और दूसरे को दस, तो बाँटिए — पर शुरुआत केवल उस भारी घटक को अलग सेवा बनाकर कीजिए, पूरे सिस्टम को नहीं।

तीसरा सवाल: क्या आप सिस्टम के सारे हिस्से एक ही कार्यक्रम पर तैनात कर सकते हैं? अगर हाँ, मोनोलिथ आपका संवाहक सरल करता है और तालमेल की लागत घटाता है। अगर नहीं — क्योंकि अलग-अलग हिस्सों के रिलीज़-चक्र, नियामक अपेक्षाएँ या जोखिम अलग हैं — तो माइक्रोसर्विसेज़ हर हिस्से को अपनी लय में चलने देते हैं।

चौथा सवाल: अगर आपके सिस्टम के सारे हिस्से एक साथ बैठ जाएँ तो क्या होगा? अगर उत्तर है «कारोबार पूरी तरह रुक जाएगा», तो माइक्रोसर्विसेज़ से आपको सह-क्षमता मिल ही नहीं रही — आप बस उनकी क़ीमत चुका रहे हैं। असली सह-क्षमता के लिए केवल अलग सेवाएँ काफ़ी नहीं; अलग अवसंरचना, अलग डेटा-भंडार और सेवाओं के बीच सौम्य क्षरण भी चाहिए। अधिकांश टीमें यह नहीं बनातीं। वे ऐसी सेवाएँ बनाती हैं जो तैनाती में कसकर बँधी होती हैं और सिद्धांत में ढीली — दोनों दुनियाओं का सबसे बुरा हिस्सा।

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

पाँचवाँ सवाल: अपने डोमेन की सीमाओं पर आप कितने आश्वस्त हैं? अगर आप किसी सुपरिचित डोमेन में बना रहे हैं जहाँ पैटर्न जमे हुए हैं — ई-कॉमर्स, कंटेंट प्रबंधन, बिलिंग — तो सीमाएँ अपेक्षाकृत स्थिर हैं और माइक्रोसर्विसेज़ का जोखिम कम है। अगर डोमेन नया है और सीमाएँ अब भी बन रही हैं, तो मोनोलिथ आपकी समझ बढ़ने के साथ रीफ़ैक्टर करने की क्षमता बचाए रखता है। समय से पहले खींची गई सेवा-सीमाएँ ऐसी बाध्यताएँ बन जाती हैं जो ठीक उसी सीखने की प्रक्रिया को धीमा करती हैं जिससे आपको गुज़रना है।

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

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

See what your own repository can account for.

Thirty minutes on a repository you choose, including the part the record cannot attribute.