• Twilio Segment ने सैकड़ों microservices वाले स्ट्रक्चर को चलाने के बाद, बढ़ती जटिलता और maintenance burden के कारण single service (monolithic) में बदलाव किया
  • शुरुआत में हर destination API को अलग करके failure isolation और scalability हासिल की गई, लेकिन services की संख्या 140 से अधिक होते ही operational overhead तेज़ी से बढ़ गया
  • कई repositories और shared libraries को manage करना मुश्किल हो गया, और testing तथा deployment के दौरान पूरे service set पर असर पड़ने लगा
  • इसे हल करने के लिए Centrifuge system और monorepo structure अपनाया गया, और test automation के लिए Traffic Recorder बनाया गया
  • नतीजतन development speed और stability में बड़ा सुधार हुआ, और Twilio Segment अब productivity और operational efficiency के लिए monolithic structure बनाए हुए है

microservices अपनाने और उनकी सीमाएँ

  • Twilio Segment ने customer data infrastructure के लिए microservices architecture अपनाया, जिसमें हर उद्देश्य-आधारित service को events को स्वतंत्र रूप से process करने के लिए design किया गया
    • यह सैकड़ों server-side destinations (जैसे Google Analytics, Optimizely आदि) तक data पहुंचाता था
    • शुरुआत में एक single queue का इस्तेमाल किया गया, लेकिन किसी खास destination में failure होने पर पूरे सिस्टम में delay पैदा करने वाली head-of-line blocking समस्या सामने आई
  • इसे हल करने के लिए हर destination के लिए अलग service और queue बनाई गई, जिससे failure isolation और independent scaling संभव हुआ
  • लेकिन services की संख्या बढ़ने के साथ operational complexity और maintenance cost तेज़ी से बढ़ी, जिसका असर development speed में गिरावट और defect rate में बढ़ोतरी के रूप में दिखा

अलग repositories और shared libraries की समस्या

  • हर destination अलग API format का इस्तेमाल करता था, इसलिए custom transformation code की जरूरत पड़ती थी
    • शुरुआत में इन्हें एक single repo में manage किया गया, लेकिन test failures का असर पूरे सिस्टम पर पड़ता था, इसलिए repo separation किया गया
  • बाद में 50 से अधिक नए destinations जुड़ने से 50 से अधिक repositories बन गईं
    • common functionality के लिए shared libraries लाई गईं, लेकिन version mismatch और deployment burden बढ़ गया
  • हर service के load patterns अलग थे, इसलिए autoscaling settings को configure करना मुश्किल था, और कई बार operators को manually adjustment करना पड़ता था

monolithic migration और Centrifuge का अपनाना

  • 140 से अधिक services को एक single service में consolidate करने का फैसला लिया गया
    • अलग-अलग queues की जगह Centrifuge system विकसित किया गया, जो सभी events को single service तक पहुंचाता था
    • बाद में Centrifuge, Twilio Segment के Connections backend infrastructure में विकसित हुआ
  • single service structure में बदलाव के साथ operational burden में कमी और incident response की सरलता हासिल हुई

monorepo और test automation

  • सभी destination code को एक repository में merge किया गया, और 120 से अधिक dependencies को एक single version पर standardize किया गया
    • इससे version management आसान हुआ और maintenance efficiency बेहतर हुई
  • test automation के लिए Traffic Recorder अपनाया गया
    • यह real HTTP request/response को record करके replay करता था, जिससे external network dependency हट गई
    • test speed कई मिनटों से घटकर milliseconds स्तर तक आ गई, और stability में बड़ा सुधार हुआ
  • test failure rate कम हुई और developer productivity में बड़ा सुधार आया

monolithic structure के प्रभाव और trade-offs

  • single service में consolidation के बाद deployment speed और development efficiency में बड़ा सुधार हुआ
    • 1 साल में shared libraries improvement की संख्या 32 से बढ़कर 46 हो गई
    • एक single engineer कुछ ही मिनटों में deployment कर सकता था
  • operational efficiency भी बेहतर हुई, और load spike के समय बड़े worker pool के जरिए ट्रैफिक absorb किया जा सका
  • हालांकि defect isolation में कठिनाई, cache efficiency में कमी, और dependency update risk जैसी कमियाँ भी रहीं
    • इनका कुछ हिस्सा operational simplicity और productivity gains से offset हो गया

निष्कर्ष

  • microservices ने शुरुआती performance समस्याएँ हल कीं, लेकिन large-scale expansion और batch updates के लिए वे उपयुक्त नहीं रहीं
  • monolithic migration ने operational stability और development speed दोनों में सुधार किया
  • सफल migration के लिए मजबूत testing framework और trade-offs को स्वीकार करने की तैयारी जरूरी है
  • Twilio Segment कुछ infrastructure में अब भी microservices रखता है, लेकिन server-side destinations के लिए monolithic model को अधिक उपयुक्त माना गया है

अभी कोई टिप्पणी नहीं है.

अभी कोई टिप्पणी नहीं है.