- इस लेख में लेखक SaaS application में Postgres performance manage करने के अपने अनुभव पर चर्चा करते हैं, जहाँ database को load संभालने में कठिनाई हो रही थी.
- लेखक की टीम database के बहुत व्यस्त हो जाने पर हर बार उसे बड़े instance से बदलकर vertically scale करती रही. लेकिन वे पहले ही सबसे बड़े instance का उपयोग कर रहे थे और सिस्टम overload की स्थिति के करीब पहुँच गया था.
- दो संभावित समाधान सुझाए गए: writes को स्वतंत्र database clusters में shard करना, और monolith को कई आपस में जुड़े services (microservices) में विभाजित करना.
- दोनों समाधान capacity बढ़ा सकते हैं और fault tolerance तथा operational resilience के दिलचस्प विकल्प दे सकते हैं, लेकिन वे complexity को काफी बढ़ा देंगे.
- लेखक का तर्क है कि बढ़ी हुई complexity की असली कीमत attention है, और यही बाद के हर technical decision को अधिक जटिल बना देती है.
- लेखक सुझाव देते हैं कि complexity को बहुत बढ़ाने से पहले आमतौर पर मौजूदा सिस्टम से थोड़ा अतिरिक्त performance “निचोड़ने” का अवसर होता है, चाहे वह workload को समायोजित करके हो, performance tuning से हो, या सिस्टम को किसी तरह supplement करके.
- उनके मामले में, भारी queries को optimize करके, Postgres settings को tune करके, और कुछ महंगी read-only queries को replica DB पर offload करके, उन्होंने database का साप्ताहिक अधिकतम CPU उपयोग 90% से घटाकर 30% कर दिया.
- लेखक निष्कर्ष निकालते हैं कि complexity कभी-कभी आवश्यक और अपरिहार्य होती है, लेकिन जहाँ तक संभव हो complexity बढ़ाने को टालना और पहले मौजूदा सिस्टम से अधिकतम performance निकालना बेहतर है.
1 टिप्पणियां
Hacker News राय