जावा में माइक्रोसर्विसेज़: डरें नहीं, यह जितना लगता है उससे कहीं ज़्यादा आसान है
\n\nक्या आपने कभी किसी मोनोलिथिक एप्लिकेशन को देखा है और सोचा है: "काश मैं इसे भागों में बाँट पाता, ताकि यह डर न रहे कि एक बदलाव सब कुछ तोड़ देगा"? बधाई हो — आप माइक्रोसर्विसेज़ के लिए तैयार हैं। जावा की दुनिया में, यह विषय अविश्वसनीय जटिलता और ढेर सारी तकनीकों के मिथकों से घिरा हुआ है। वास्तव में, आप दो क्लास और एक application.yml फ़ाइल से शुरुआत कर सकते हैं।
इस लेख में, हम कोई अंतरिक्ष यान नहीं बनाएँगे। हम दो सरल माइक्रोसर्विसेज़ लिखेंगे जो HTTP पर एक-दूसरे से बात करेंगे, और समझेंगे कि वास्तव में कहाँ से शुरू करना है। कोई जादू नहीं — केवल जावा, Spring Boot और सामान्य ज्ञान।
\n\nमाइक्रोसर्विस क्या है (सरल शब्दों में)
\n\nएक रेस्तराँ की कल्पना करें। मोनोलिथ तब होता है जब एक ही रसोइया सब कुछ करता है: सूप बनाना, स्टेक भूनना और बर्तन धोना। माइक्रोसर्विसेज़ एक टीम की तरह हैं: एक रसोइया केवल सूप के लिए ज़िम्मेदार है, दूसरा मांस के लिए, तीसरा मिठाई के लिए। हर कोई स्वतंत्र रूप से काम करता है, लेकिन साथ मिलकर एक सामान्य मेनू बनाते हैं।
\n\nजावा में, माइक्रोसर्विस एक स्वतंत्र एप्लिकेशन है जो एक व्यावसायिक कार्य (जैसे, "उपयोगकर्ता प्रबंधन" या "ऑर्डर प्रोसेसिंग") के लिए ज़िम्मेदार है। इसका अपना डेटाबेस, अपना कोड होता है, और यह नेटवर्क (आमतौर पर HTTP/REST या मैसेज ब्रोकर के माध्यम से) पर अन्य सर्विसेज़ के साथ संवाद करता है।
\n\nकहाँ से शुरू करें: एक सज्जन व्यक्ति का टूलकिट
\n\nपहले प्रोजेक्ट के लिए, आपको केवल तीन चीज़ों की आवश्यकता होगी:
\n\n- \n
- Java 17+ — उपयोगी सुविधाओं (records, sealed classes) के साथ आधुनिक संस्करण। \n
- Spring Boot 3.x — जावा में माइक्रोसर्विसेज़ के लिए सबसे लोकप्रिय फ्रेमवर्क। यह 80% नियमित काम अपने हाथ में ले लेता है। \n
- Maven या Gradle — बिल्ड के लिए। शुरुआत के लिए Maven आसान है, Gradle तेज़ है। \n
अतिरिक्त, जब आप जटिलता बढ़ाना चाहें:
\n- \n
- Docker — सर्विस को कंटेनर में पैकेज करने के लिए। \n
- Spring Cloud — सर्विस डिस्कवरी और लोड बैलेंसिंग के लिए। \n
- PostgreSQL/H2 — पसंद का डेटाबेस। \n
सुझाव: तुरंत Kubernetes और Kafka सीखने की कोशिश न करें। सरल REST संचार से शुरुआत करें।
\n\nपहला माइक्रोसर्विस लिखना: उपयोगकर्ता सर्विस
\n\nहम एक सरल माइक्रोसर्विस बनाएँगे जो उपयोगकर्ताओं के बारे में जानकारी प्रदान कर सके। Spring Initializr (start.spring.io) का उपयोग करें या मैन्युअल रूप से प्रोजेक्ट बनाएँ।
\n\npom.xml में डिपेंडेंसी जोड़ें:
<dependency>\n <groupId>org.springframework.boot</groupId>\n <artifactId>spring-boot-starter-web</artifactId>\n</dependency>\n\n<dependency>\n <groupId>org.springframework.boot</groupId>\n <artifactId>spring-boot-starter-data-jpa</artifactId>\n</dependency>\n\n<dependency>\n <groupId>com.h2database</groupId>\n <artifactId>h2</artifactId>\n <scope>runtime</scope>\n</dependency>\n\nअब उपयोगकर्ता का मॉडल लिखें:
\n\nimport jakarta.persistence.*;\n\n@Entity\n@Table(name = "users")\npublic class User {\n @Id\n @GeneratedValue(strategy = GenerationType.IDENTITY)\n private Long id;\n private String name;\n private String email;\n\n // कंस्ट्रक्टर, गेटर, सेटर (Lombok का उपयोग कर सकते हैं)\n public User() {}\n\n public User(String name, String email) {\n this.name = name;\n this.email = email;\n }\n\n // गेटर और सेटर\n}\n\nरिपॉजिटरी (डेटा तक सरलीकृत पहुँच):
\n\nimport org.springframework.data.jpa.repository.JpaRepository;\n\npublic interface UserRepository extends JpaRepository<User, Long> {\n}\n\nऔर कंट्रोलर — REST एंडपॉइंट:
\n\nimport org.springframework.web.bind.annotation.*;\n\nimport java.util.List;\n\n@RestController\n@RequestMapping("/api/users")\npublic class UserController {\n\n private