या तो आपका कार्य छोटा है, या आप इसे छोटे कार्यों में विभाजित कर सकते हैं। और एक छोटा सा कार्य एक माइक्रोसर्विस के लिए एकदम सही है।
सॉफ्टवेयर विकास में सॉफ्टवेयर डिजाइन एक आवश्यक चरण है। डिजाइन दृष्टिकोण पूरी परियोजना को प्रभावित कर सकता है और आप विभिन्न आवश्यकताओं को कैसे संभालते हैं।
डेवलपर्स ने अक्सर एक मॉड्यूल में सभी सॉफ़्टवेयर घटकों को बंडल करके एक मोनोलिथिक आर्किटेक्चर का उपयोग किया है। हालाँकि, यह दृष्टिकोण अक्षम साबित हो सकता है, विशेष रूप से बड़े अनुप्रयोगों के लिए।
माइक्रोसर्विसेज का लक्ष्य इन सीमाओं को दूर करना है। एक माइक्रोसेवा एक छोटा, मॉड्यूलर अनुप्रयोग है जो विशिष्ट कार्य करता है। अखंड अनुप्रयोगों के विपरीत, माइक्रोसर्विसेज स्वतंत्र परिनियोजन और स्केलिंग की अनुमति देते हैं। नतीजतन, वे अधिक लचीले और बनाए रखने में आसान होते हैं।
माइक्रोसर्विस आर्किटेक्चर
माइक्रोसर्विस आर्किटेक्चर एक सॉफ्टवेयर डिज़ाइन दृष्टिकोण है जो एक बड़े एप्लिकेशन को स्वतंत्र सेवाओं में विभाजित करता है, प्रत्येक सेवा को एक विशिष्ट व्यावसायिक आवश्यकता को पूरा करने के लिए डिज़ाइन किया गया है।
ये सेवाएं समर्पित संसाधनों पर चलती हैं, जिनमें अलग-अलग डेटाबेस उदाहरण और कंप्यूटिंग शक्ति शामिल है। अखंड प्रणालियों के विपरीत, माइक्रोसर्विस एप्लिकेशन अधिक लचीलेपन की अनुमति देते हुए शिथिल रूप से युग्मित होते हैं।
एक वितरित प्रणाली में, सर्वर नोड्स माइक्रोसर्विस एप्लिकेशन को अलग से तैनात और निष्पादित करते हैं प्रक्रियाएं—संचार प्रोटोकॉल जैसे HTTP या संदेश दलालों के माध्यम से एक दूसरे के साथ संचार करना रैबिटएमक्यू की तरह।
अनिवार्य रूप से, यह वास्तुशिल्प दृष्टिकोण सेवाओं को एक दूसरे से अपनी स्वतंत्रता बनाए रखने में सक्षम बनाता है जबकि सॉफ्टवेयर सिस्टम के भीतर प्रभावी ढंग से काम करता है।
इस ट्यूटोरियल में, हम एक साधारण यूजर माइक्रोसर्विस को लागू करने में आपका मार्गदर्शन करेंगे जो फ्लास्क और पोस्टग्रेएसक्यूएल का उपयोग करके यूजर डेटा का प्रबंधन करता है।
एक PostgreSQL डेटाबेस सेट करें
आरंभ करने के लिए, PostgreSQL स्थापित करें। यदि आपके पास PostgreSQL स्थापित नहीं है, तो आप पता लगा सकते हैं विंडोज़ पर पोस्टग्रेएसक्यूएल कैसे स्थापित करें या MacOS पर PostgreSQL कैसे स्थापित करें.
वैकल्पिक रूप से, आप एक कॉन्फ़िगर कर सकते हैं दूरस्थ PostgreSQL डेटाबेस उदाहरण।
यह मार्गदर्शिका एक PostgreSQL डेटाबेस सेट अप करने के लिए Render के फ्री टियर का उपयोग करेगी। रेंडर पर PostgreSQL डेटाबेस इंस्टेंस को स्पिन करने के लिए इनका पालन करें:
- वहां जाओ रेंडर की वेबसाइट, एक खाते के लिए साइन अप करें, और अपने में लॉग इन करें डैशबोर्ड पृष्ठ।
- अपने डैशबोर्ड पृष्ठ पर, प्रदर्शित सेवाओं की सूची से, PostgreSQL सेवा का चयन करें।
- डेटाबेस सेटिंग्स पेज पर, आवश्यक विवरण भरें और चयन करना सुनिश्चित करें मुक्त स्तर, और अंत में क्लिक करें डेटाबेस बनाएं.
आप इस प्रोजेक्ट का कोड इसमें पा सकते हैं गिटहब रिपॉजिटरी.
फ्लास्क माइक्रोसर्विस बनाएं
- अपने टर्मिनल में, एक नई निर्देशिका बनाएं और उसमें बदलाव करें:
mkdir कुप्पी-microservice
सीडी फ्लास्क-माइक्रोसर्विस - अगला, स्थापित करें virtualenv, एक पृथक आभासी विकास वातावरण बनाने के लिए।
पिप वर्चुअलएन्व स्थापित करें
- अपनी परियोजना में एक आभासी वातावरण बनाएँ:
virtualenv venv
- अंत में, आभासी वातावरण को सक्रिय करें।
# खिड़कियाँ:
.\venv\Scripts\active
# यूनिक्स या MacOS:
स्रोत venv/bin/active
आवश्यक पैकेज स्थापित करें
- कोई नया बनाएं आवश्यकताएँ। txt रूट डायरेक्टरी में फाइल करें और इन पैकेजों को जोड़ें:
फ्लास्क
psycopg2-बाइनरी
sqlalchemy - अगला, संकुल स्थापित करें।
पाइप इंस्टॉल -r आवश्यकताएँ। txt
फ्लास्क सर्वर बनाएं
रूट डायरेक्टरी में एक नई फाइल बनाएं: service.py, और निम्न कोड:
- निम्नलिखित आयात करें:
से फ्लास्क आयात कुप्पी, अनुरोध, jsonify
से sqlalchemy आयात create_engine, कॉलम, पूर्णांक, स्ट्रिंग
से sqlalchemy.orm आयात सेशनमेकर
से sqlalchemy.ext.declarative आयात declarative_base
आयात psycopg2 - फ्लास्क इंस्टेंस बनाएं और डेटाबेस कनेक्शन को कॉन्फ़िगर करें।
कॉपी करें बाहरी डेटाबेस URL रेंडर के डेटाबेस सेटिंग पेज पर। हम उपयोग करेंगे SQLAlchemy create_engine विधि और Psycopg2 डेटाबेस कनेक्शन को कॉन्फ़िगर करने के लिए। उपरोक्त कोड में डेटाबेस URL को अपने स्वयं के PostgreSQL उदाहरण के URL के साथ अपडेट करना और बदलना सुनिश्चित करें जो ऊपर निर्दिष्ट प्रारूप से मेल खाता हो। यदि URL प्रारूप गलत है, तो कोड एक त्रुटि देगा।ऐप = फ्लास्क (__name__)
इंजन = create_engine ("postgresql+psycopg2://flask_service_fe0v_user: 4785MhjfkdjfhjfjyUx67O2Nuzjchb2MQIP@dpg-chffjfjdkgfk54d6mb7860-a.oregon-postgres.render.com/flask_service_fe0v")
- डेटाबेस के लिए एक SQLAlchemy मॉडल बनाएँ।
कोड उपयोगकर्ताओं की तालिका के लिए एक डेटा मॉडल को परिभाषित करता है। मॉडल को परिभाषित करने के बाद, यह का उपयोग करके तालिका बनाता है SQLAlchemy create_all विधि जो डेटाबेस लेती है कनेक्शन इंजन वस्तु एक पैरामीटर के रूप में। अंत में, यह का एक उदाहरण बनाता है सत्र निर्माता डेटाबेस के साथ सहभागिता को सक्षम करने के लिए उसी इंजन ऑब्जेक्ट का उपयोग करना।आधार = घोषणात्मक_बेस ()
कक्षाउपयोगकर्ता(आधार):
__टेबलनाम__ = 'उपयोगकर्ता'
आईडी = कॉलम (पूर्णांक, प्राथमिक_की =सत्य)
नाम = कॉलम (स्ट्रिंग (50))
Base.metadata.create_all (इंजन)
प्रिंट ("तालिका 'उपयोगकर्ता' सफलतापूर्वक बनाई गई।")
सेशन = सेशनमेकर (इंजन) - अंत में, माइक्रोसर्विसेज के लिए एपीआई मार्गों को परिभाषित करें।
@app.route("/api/user", तरीके=["POST"])
डीईएफ़उपयोगकर्ता बनाइये():
डेटा = अनुरोध.get_json ()
नाम = डेटा ["नाम"]
कोशिश:
सत्र = सत्र ()
new_user = उपयोगकर्ता (नाम = नाम)
session.add (new_user)
session.commit ()
वापस करना {"पहचान": new_user.id, "नाम": नया उपयोगकर्ता नाम, "संदेश": च" उपयोगकर्ता {नाम} बनाया था।"}, 201
के अलावा अपवाद जैसा इ:
प्रिंट (च "त्रुटि '{इ}' घटित हुआ।")
वापस करना {"गलती": "उपयोगकर्ता बनाते समय एक त्रुटि हुई।"}, 500
@app.route("/api/user", मेथड्स=["GET"])
डीईएफ़get_all_users():
कोशिश:
सत्र = सत्र ()
उपयोगकर्ता = सत्र.क्वेरी (उपयोगकर्ता)। सभी ()
अगर उपयोगकर्ता:
परिणाम = []
के लिए उपयोगकर्ता में उपयोगकर्ता:
परिणाम.परिशिष्ट({"पहचान": उपयोगकर्ता पहचान, "नाम": उपयोगकर्ता नाम})
वापस करना jsonify (परिणाम)
अन्य:
वापस करना jsonify({"गलती": एफ "उपयोगकर्ता नहीं मिला।"}), 404
के अलावा अपवाद जैसा इ:
प्रिंट (च "त्रुटि '{इ}' घटित हुआ।")
वापस करना {"गलती": "सभी उपयोगकर्ताओं को प्राप्त करते समय एक त्रुटि हुई।"}, 500
अगर __नाम__ == "__मुख्य__":
app.run (डीबग =सत्य, होस्ट ="0.0.0.0")
माइक्रोसर्विस का परीक्षण करें
उपरोक्त कोड एक साधारण उपयोगकर्ता डेटा माइक्रोसर्विस को प्रदर्शित करता है जो पोस्टग्रेएसक्यूएल डेटाबेस से डेटा जोड़ता है और प्राप्त करता है। आदर्श रूप से, माइक्रोसर्विसेज दर्पण करते हैं रेस्ट एपीआई आर्किटेक्चर चूंकि यह वेब सेवाओं के निर्माण के लिए एक लचीले दृष्टिकोण की अनुमति देता है—यह आर्किटेक्चर माइक्रोसर्विसेज के डिजाइन पैटर्न के साथ अच्छी तरह से फिट बैठता है।
हालाँकि, यह ध्यान रखना महत्वपूर्ण है कि सिस्टम की विशिष्ट आवश्यकताओं के आधार पर माइक्रोसर्विसेज अन्य प्रकार के डिज़ाइन दृष्टिकोण और संचार प्रोटोकॉल का भी उपयोग कर सकते हैं।
सेवा का परीक्षण करने के लिए, विकास सर्वर को स्पिन करें और परिभाषित समापन बिंदुओं पर HTTP अनुरोध करने के लिए पोस्टमैन पर जाएं।
फ्लास्क --एप सर्विस रन
पोस्टमैन में, उपयोगकर्ता डेटा जोड़ने के लिए एक POST अनुरोध करें।
डॉकटर के साथ माइक्रोसर्विसेज को कंटेनरीकृत करना
डॉकर कंटेनरों में अनुप्रयोगों और उनकी निर्भरताओं को बंडल करता है। यह दृष्टिकोण उत्पादन वातावरण में माइक्रोसर्विसेज के विकास, परिनियोजन और प्रबंधन को सुव्यवस्थित करता है चूंकि प्रत्येक सेवा स्वतंत्र रूप से काम कर सकती है और कॉन्फ़िगर किए गए संचार का उपयोग करके अन्य सेवाओं के साथ संचार कर सकती है शिष्टाचार।
आरंभ करने से पहले, आपको पहले पर चरणों का पालन करके डॉकर को स्थापित करना होगा डॉकर वेबसाइट. फिर, एक डॉकरफाइल से एक डॉकर छवि बनाएं जिसमें एक कंटेनर में एप्लिकेशन चलाने के लिए आवश्यक निर्भरताओं को स्थापित करने के लिए आवश्यक निर्देश हों।
- अपने प्रोजेक्ट फोल्डर के रूट डायरेक्टरी में एक डॉकरफाइल बनाएं और इन निर्देशों को जोड़ें:
से अजगर:3.9-अल्पाइन
वर्कडिर /app
कॉपी आवश्यकताएँ.txt ./
दौड़ना पाइप इंस्टॉल -r आवश्यकताएँ। txt
कॉपी. .
अनावृत करना5000
अध्यक्ष एवं प्रबंध निदेशक ["अजगर", "./service.py"] - डॉकर छवि बनाने के लिए नीचे दी गई कमांड चलाएँ।
डॉकर बिल्ड-टी फ्लास्क-माइक्रोसर्विस।
- अंत में, डॉकटर कंटेनर को चलाएं।
डॉकर रन-पी 5000: 5000 फ्लास्क-माइक्रोसर्विस
यह फ्लास्क माइक्रोसर्विस चलाने वाला डॉकटर कंटेनर शुरू करेगा और कंटेनर पर पोर्ट 5000 को उजागर करेगा होस्ट मशीन पर पोर्ट 8000, जिससे आप अपने वेब ब्राउज़र या पोस्टमैन से HTTP अनुरोध कर सकते हैं यूआरएल http://localhost: 5000.
माइक्रोसर्विस आर्किटेक्चर को अपनाना
स्केलेबल और मजबूत सॉफ़्टवेयर एप्लिकेशन विकसित करने के लिए माइक्रोसर्विसेज आर्किटेक्चर एक लोकप्रिय दृष्टिकोण बन गया है। एप्लिकेशन को छोटे, स्वतंत्र रूप से तैनात करने योग्य सेवाओं में विभाजित करके, माइक्रोसर्विसेज आर्किटेक्चर सिस्टम को बनाए रखना और स्केल करना आसान बनाता है।
जबकि इस आर्किटेक्चर के संभावित लाभ हैं, यह सभी उपयोग मामलों के लिए उपयुक्त नहीं है। किसी भी मामले में, परियोजना की विशिष्ट व्यावसायिक आवश्यकताओं को मुख्य रूप से अपनाए गए डिजाइन दृष्टिकोण को प्रभावित करना चाहिए।