جاوا مائڪرو سروسز جو ترجمو ۽ موافقت : هڪ عملي گائيڊ . گائيڊ جي پهرين حصي سان ڳنڍيو . ڪو به سرور-سائيڊ جاوا پروگرام، ۽ ان ڪري ڪو به مائڪرو سروس، صرف هڪ فائل آهي .jar يا .war ايڪسٽينشن سان. جاوا ايڪو سسٽم جي باري ۾ هڪ وڏي شيء آهي، يا بلڪه JVM: توهان کي صرف هڪ ڀيرو جاوا ڪوڊ لکڻ جي ضرورت آهي ۽ اهو تقريبا ڪنهن به آپريٽنگ سسٽم تي هلي سگهي ٿو، جيستائين توهان پنهنجي ڪوڊ کي جاوا جي نئين ورزن سان گڏ نه ڪيو آهي. ٽارگيٽ JVM نسخو. اهو سمجهڻ ضروري آهي، خاص طور تي جڏهن اهو اچي ٿو موضوعن جهڙوڪ ڊڪر، ڪبرنيٽس، يا (ڊرم رول!) ڪلائوڊ. ڇو؟ اچو ته مختلف ترتيب ڏيڻ واري منظرنامي تي نظر رکون.
Minimalistic Java Microservice Deployment Example
اچو ته بينڪ جي مثال سان جاري رکون. تنهن ڪري اسان وٽ هڪ monobank.jar فائل آهي (monolith) ۽ اسان جو نئون ڪڍيل riskengine.jar (پهرين خطري جي چڪاس ڪندڙ مائڪرو سروس). اچو ته اهو پڻ فرض ڪريون ته ٻنهي ايپليڪيشنن کي، دنيا جي هر ٻي ايپليڪيشن وانگر، هڪ .properties فائل جي ضرورت آهي. اسان جي صورت ۾، ان ۾ صرف ڊيٽابيس URL ۽ سندون شامل هونديون. گھٽ ۾ گھٽ ڊولپمينٽ ٻن ڊائريڪٽرن تي مشتمل ٿي سگھي ٿي جيڪي ڪجھ ھن طرح نظر اچن ٿا: پھريون:
-r-r------ 1 ubuntu ubuntu 2476 Nov 26 09:41 application.properties
-r-x------ 1 ubuntu ubuntu 94806861 Nov 26 09:45 monobank-384.jar
ubuntu@somemachine:/var/www/www.monobank.com/java$ java -jar monobank-384.jar
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
...
ٻيون:
-r-r------ 1 ubuntu ubuntu 2476 Nov 26 09:41 application.properties
-r-x------ 1 ubuntu ubuntu 94806861 Nov 26 09:45 risk-engine-1.jar
ubuntu@someothermachine:/var/www/risk.monobank.com/java$ java -jar risk-engine-1.jar
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
...
هي سوال کليل ڇڏي ٿو: .properties ۽ .jar فائلون سرور تي ڪيئن اينديون؟ بدقسمتي سان، اتي ڪيترائي جواب ٿي سگھن ٿا.
جاوا مائڪرو سروسز کي ترتيب ڏيڻ لاءِ بلڊ ٽولز، SSH، ۽ جوابي استعمال ڪيئن ڪجي
بورنگ، پر جاوا مائيڪرو سروسز کي ڪيئن ترتيب ڏيڻ جي باري ۾ ڪو به گهٽ بهترين مشورو ناهي... دراصل، بلڪل ائين جيئن سسٽم ايڊمنسٽريٽرن گذريل 20 سالن ۾ ڪمپنين ۾ ڪنهن به جاوا سرور پروگرام کي لڳايو آهي. هي مرکب آهي:- توهان جي پسنديده تعمير جو اوزار (Maven، Gradle)
- نقل ڪرڻ لاءِ سٺو پراڻو SSH/SCP .jars سرور ڏانهن
- بيش اسڪرپٽ ترتيب ڏيڻ واري اسڪرپٽ ۽ سرور کي منظم ڪرڻ لاء
- يا اڃا به بهتر: ڪجهه جوابي اسڪرپٽ.
جاوا مائڪرو سروسز کي ترتيب ڏيڻ لاءِ ڊڪر ڪيئن استعمال ڪجي
اچو ته پسند جي مٺي اذيت ڏانهن موٽون. ڪجھ سال اڳ ڊڪر منظر تي آيو، ۽ ان سان گڏ ڪنٽينرائزيشن. جيڪڏهن توهان ان سان ڪڏهن به ڪم نه ڪيو آهي، هتي هڪ مختصر وضاحت آهي جنهن جو مقصد آخري صارفين ۽ ڊولپرز لاءِ آهي:- هڪ ڪنٽينر (آسان) سٺي پراڻي ورچوئل مشين وانگر آهي، پر ”لائيٽ“. جيڪڏهن توهان واضح نه آهيو ته هن حوالي سان ”آسان“ جو مطلب ڇا آهي، مهرباني ڪري هن جواب کي چيڪ ڪريو Stackoverflow .
- ڪنٽينر پنهنجي پورٽبلٽي جي ضمانت ڏئي ٿو. اهو آهي، اهو ڪٿي به ڪم ڪري ٿو. آواز واقف، ڇا اهو ناهي؟
- پنھنجي جار فائل کي ڊاکر تصوير ۾ بنڈل ڪريو
- ھن تصوير کي پرائيويٽ ڊاڪر رجسٽري ڏانھن ڇڪيو
- ڇڪيو ۽ ھلايو ھن تصوير کي پنھنجي ھدف واري پليٽ فارم تي
- يا نقل ڪريو ڊاڪر تصوير سڌو سنئون توھان جي پيداوار واري نظام ڏانھن ۽ ان کي ھلايو.
جاوا مائڪرو سروسز کي ترتيب ڏيڻ لاءِ Docker Swarm يا Kubernetes ڪيئن استعمال ڪجي
اچو ته چوندا آهن ته توهان Docker جي ڪوشش ڪرڻ جو فيصلو ڪيو. هر دفعي جڏهن توهان جاوا مائيڪرو سروس جوڙيو ٿا، توهان هڪ ڊاڪر تصوير ٺاهيندا آهيو جيڪا توهان جي .jar فائل کي بنڊل ڪري ٿي. اچو ته چئو ته توهان وٽ اهي جاوا مائڪرو سروسز آهن، ۽ توهان انهن خدمتن کي ڪيترن ئي مشينن تي (هڪ ڪلستر ۾) لڳائڻ چاهيو ٿا. سوال پيدا ٿئي ٿو: هن ڪلستر کي ڪيئن منظم ڪجي؟ ڊاڪر ڪنٽينرز کي هلائي، ڪارڪردگي چيڪ ڪريو، تازه ڪاريون ترتيب ڏيو، سسٽم کي ماپ ڪريو (brrr)؟ هن سوال جا ٻه ممڪن جواب آهن Docker Swarm ۽ Kubernetes. ٻنهي اختيارن جي باري ۾ تفصيل ۾ وڃڻ سان اهو اڳ ۾ ئي ڊگهو سبق تمام ڊگهو ٿيندو، پر اسان سمجهون ٿا ته اهو ذڪر ڪرڻ ضروري آهي ته ٻئي اختيار آخرڪار توهان تي YAML فائلون لکڻ تي ڀاڙين ٿا (ڏسو Yaml indentation ڪهاڻيون ) توهان جي ڪلستر کي منظم ڪرڻ لاءِ. جيڪڏھن توھان ڄاڻڻ چاھيو ٿا ته ھي عمل ۾ ڪھڙا احساس پيدا ڪري ٿو، بس ٽائيپ ڪريو ھڪڙو ساڳيو سوال Twitter ڳولا ۾. تنهن ڪري توهان جي جاوا مائڪرو سروسز لاء ترتيب ڏيڻ وارو عمل هاڻي ڪجهه هن طرح نظر اچي ٿو:- Docker Swarm / Kubernetes کي ترتيب ڏيڻ ۽ انتظام ڪرڻ
- Docker لاءِ سڀ قدم (مٿي ڏسو)
- YAML لکو ۽ ان تي عمل ڪريو
جيستائين توھان جي اکين مان رت وهي وڃيجيستائين سڀ ڪجھ ڪم ڪري.
جاوا مائڪرو سروسز کي ڪيئن جانچيو
اچو ته چئو ته توهان پيداوار ۾ مائڪرو سروسز کي لاڳو ڪرڻ جو فيصلو ڪيو. اسان ڪيئن جانچ ڪري سگھون ٿا n-microservices integration ھاڻي ڊولپمينٽ دوران؟ توهان ڪيئن ڏسي سگهو ٿا ته سڄو ڪم فلو ڪم ڪري رهيو آهي، ۽ نه صرف ان جا حصا؟ عملي طور تي، توهان ٽن طريقن مان هڪ استعمال ڪري سگهو ٿا:- ٿورڙي ڪم سان (جيڪڏهن توهان اسپرنگ بوٽ وانگر فريم ورڪ استعمال ڪري رهيا آهيو)، توهان پنهنجي سڀني مائڪرو سروسز کي هڪ لانچر ڪلاس ۾ گڏ ڪري سگهو ٿا ۽ هڪ واحد Wrapper.java ڪلاس استعمال ڪندي سڀني مائڪرو سروسز کي لوڊ ڪري سگهو ٿا - ان تي منحصر آهي ته ڇا توهان وٽ توهان جي مشين تي ڪافي ميموري آهي. انهن سڀني کي توهان جي microservices هلائي.
- توھان نقل ڪري سگھو ٿا Docker Swarm يا Kubernetes سيٽنگون مقامي طور تي.
- بس هاڻي مقامي طور تي انٽيگريشن ٽيسٽ نه هلايو. ان جي بدران، هڪ وقف DEV/TEST ماحول کي ترتيب ڏيو. اهو ڪجهه آهي جيڪو ڪجھه ٽيمون اصل ۾ ڪندا آهن جڏهن اهي مقامي مائڪرو سروس سيٽ اپ جي درد کي منهن ڏين ٿا.
GO TO FULL VERSION