Microservices: سائيز جو معاملو، جيتوڻيڪ توھان وٽ ڪبرنيٽس آھي

19 سيپٽمبر ماسڪو ۾ جڳه ورتي پهرين موضوعي گڏجاڻي HUG (Highload++ User Group)، جيڪا microservices لاءِ وقف هئي. اتي هڪ پريزنٽيشن هئي “Operating Microservices: Size Matters, even if You have Kubernetes”، جنهن ۾ اسان مائيڪرو سروسز آرڪيٽيڪچر سان آپريٽنگ منصوبن ۾ فلانٽ جي وسيع تجربي کي شيئر ڪيو. سڀ کان پهريان، اهو سڀني ڊولپرز لاء مفيد ٿيندو جيڪي هن طريقي کي استعمال ڪرڻ بابت سوچڻ وارا آهن انهن جي موجوده يا مستقبل جي منصوبي ۾.

Microservices: سائيز جو معاملو، جيتوڻيڪ توھان وٽ ڪبرنيٽس آھي

تعارف ڪرائڻ رپورٽ جي وڊيو (50 منٽ، مضمون کان گهڻو وڌيڪ معلوماتي)، انهي سان گڏ ان مان مکيه اقتباس متن جي شڪل ۾.

نوٽ: وڊيو ۽ پيشڪش پڻ هن پوسٽ جي آخر ۾ موجود آهن.

تعارف

عام طور تي هڪ سٺي ڪهاڻي جي شروعات، هڪ بنيادي پلاٽ ۽ هڪ قرارداد آهي. اها رپورٽ هڪ اڳڀرائي وانگر آهي، ۽ ان تي هڪ افسوسناڪ آهي. اهو پڻ نوٽ ڪرڻ ضروري آهي ته اهو مائڪرو سروسز جي ٻاهرئين نظر کي فراهم ڪري ٿو. استحصال.

مان هن گراف سان شروع ڪندس، جنهن جو ليکڪ (2015 ۾) ٿيو مارٽن فولر:

Microservices: سائيز جو معاملو، جيتوڻيڪ توھان وٽ ڪبرنيٽس آھي

اهو ڏيکاري ٿو ته ڪيئن، هڪ monolithic ايپليڪيشن جي صورت ۾ جيڪو هڪ خاص قدر تائين پهچي ٿو، پيداوار کي رد ڪرڻ شروع ٿئي ٿو. Microservices ان لحاظ کان مختلف هونديون آهن ته انهن سان ابتدائي پيداواري صلاحيت گهٽ هوندي آهي، پر جيئن جيئن پيچيدگي وڌي ويندي آهي، تيئن تيئن ڪارڪردگيءَ ۾ گهٽتائي انهن لاءِ قابل ذڪر نه هوندي آهي.

مان ڪبرنيٽس استعمال ڪرڻ جي صورت ۾ هن گراف ۾ شامل ڪندس:

Microservices: سائيز جو معاملو، جيتوڻيڪ توھان وٽ ڪبرنيٽس آھي

مائڪرو سروسز سان هڪ ايپليڪيشن ڇو بهتر آهي؟ ڇو ته اهڙي فن تعمير کي فن تعمير لاء سنگين گهرجون پيش ڪري ٿو، جنهن جي نتيجي ۾ مڪمل طور تي ڪبرنيٽس جي صلاحيتن سان ڍڪيل آهن. ٻئي طرف، هن ڪارڪردگيءَ مان ڪجهه هڪ monolith لاءِ ڪارآمد ثابت ٿيندي، خاص طور تي ڇاڪاڻ ته اڄ جو عام monolith بلڪل هڪ monolith نه آهي (تفصيل بعد ۾ رپورٽ ۾ ڪيو ويندو).

جئين توهان ڏسي سگهو ٿا، فائنل گراف (جڏهن ٻنهي monolithic ۽ microservice ايپليڪيشنون انفراسٽرڪچر ۾ آهن Kubernetes) اصل کان بلڪل مختلف ناهي. اڳيون اسان ڪبرنيٽس استعمال ڪندي هلندڙ ايپليڪيشنن بابت ڳالهائينداسين.

مفيد ۽ نقصانڪار مائڪرو سروسز

۽ هتي بنيادي خيال آهي:

Microservices: سائيز جو معاملو، جيتوڻيڪ توھان وٽ ڪبرنيٽس آھي

ڇا آھي عام microservice فن تعمير؟ اهو توهان کي حقيقي فائدا آڻڻ گهرجي، توهان جي ڪم جي ڪارڪردگي کي وڌائڻ. جيڪڏهن اسان گراف ڏانهن واپس وڃون ٿا، اهو هتي آهي:

Microservices: سائيز جو معاملو، جيتوڻيڪ توھان وٽ ڪبرنيٽس آھي

جيڪڏهن توهان هن کي سڏيو مفيد، پوءِ گراف جي ٻئي پاسي هوندو نقصانڪار microservices (ڪم ۾ مداخلت):

Microservices: سائيز جو معاملو، جيتوڻيڪ توھان وٽ ڪبرنيٽس آھي

"مکيه خيال" ڏانهن موٽڻ: ڇا مون کي پنهنجي تجربي تي يقين رکڻ گهرجي؟ هن سال جي شروعات کان وٺي مون ڏٺو آهي 85 منصوبا. اهي سڀئي نه هئا microservices (انهن مان هڪ ٽيون اڌ جي باري ۾ هڪ اهڙي فن تعمير هئي)، پر اهو اڃا تائين هڪ وڏو تعداد آهي. اسان (فلانٽ ڪمپني) آئوٽ سورسرز جي طور تي مختلف قسم جي ايپليڪيشنن کي ڏسڻ جو انتظام ڪندا آهيون جيڪي ٻنهي ننڍين ڪمپنين ۾ (5 ڊولپرز سان) ۽ وڏين (~ 500 ڊولپرز) ۾ ترقي يافته آهن. هڪ اضافو فائدو اهو آهي ته اسان ڏسون ٿا اهي ايپليڪيشنون زندهه ۽ ترقي يافته سالن کان.

ڇو microservices؟

microservices جي فائدن جي باري ۾ سوال اتي آهي تمام خاص جواب اڳ ۾ ئي ذڪر ڪيل مارٽن فولر کان:

  1. modularity جي واضح حدون؛
  2. آزاد تعیناتي؛
  3. ٽيڪنالاجي چونڊڻ جي آزادي.

مون سافٽ ويئر آرڪيٽيڪٽس ۽ ڊولپرز سان تمام گهڻو ڳالهايو آهي ۽ پڇيو آهي ته انهن کي مائڪرو سروسز جي ضرورت ڇو آهي. ۽ مون انهن جي اميدن جي لسٽ ٺاهي. هتي ڇا ٿيو آهي:

Microservices: سائيز جو معاملو، جيتوڻيڪ توھان وٽ ڪبرنيٽس آھي

جيڪڏهن اسان ڪجهه نقطن کي بيان ڪريون ٿا ”حساسات ۾،“ پوءِ:

  • ماڊلز جون واضح حدون: هتي اسان وٽ هڪ خوفناڪ مونولٿ آهي، ۽ هاڻي هر شي کي صاف طور تي Git ريپوزٽريز ۾ ترتيب ڏني ويندي، جنهن ۾ هر شيءِ ”شيلفز تي“ آهي، گرم ۽ نرم نه ملايا ويا آهن.
  • مقرري جي آزادي: اسان آزاديءَ سان خدمتون سرانجام ڏيڻ جي قابل ٿي وينداسين ته جيئن ترقي تيز ٿئي (متوازي طور تي نوان خاصيتون شايع ڪريو)؛
  • ترقي جي آزادي: اسان هي مائڪرو سروس ڏئي سگهون ٿا هڪ ٽيم/ڊولپر کي، ۽ اهو هڪ ٻئي کي، جنهن جي مهرباني اسان تيزيءَ سان ترقي ڪري سگهون ٿا؛
  • боوڌيڪ قابل اعتماد: جيڪڏهن جزوي تباهي ٿئي ٿي (20 مان هڪ مائڪرو سروس اچي ٿي)، پوء صرف هڪ بٽڻ ڪم ڪرڻ بند ڪري ڇڏيندو، ۽ سسٽم مڪمل طور تي ڪم ڪرڻ جاري رکندو.

عام (نقصانڪار) مائڪرو سروس فن تعمير

وضاحت ڪرڻ لاءِ ڇو حقيقت اها ناهي جيڪا اسان جي اميد آهي، مان پيش ڪندس اجتماعي ڪيترن ئي مختلف منصوبن جي تجربي جي بنياد تي هڪ microservice فن تعمير جي تصوير.

ھڪڙو مثال ھڪڙو خلاصو آن لائن اسٽور آھي جيڪو Amazon يا گھٽ ۾ گھٽ OZON سان مقابلو ڪرڻ وارو آھي. هن جي microservice فن تعمير هن طرح نظر اچي ٿو:

Microservices: سائيز جو معاملو، جيتوڻيڪ توھان وٽ ڪبرنيٽس آھي

سببن جي ميلاپ لاء، اهي microservices مختلف پليٽ فارمن تي لکيل آهن:

Microservices: سائيز جو معاملو، جيتوڻيڪ توھان وٽ ڪبرنيٽس آھي

جيئن ته هر مائڪرو سروس کي خودمختياري هجڻ گهرجي، انهن مان گهڻن کي پنهنجي ڊيٽابيس ۽ ڪيش جي ضرورت آهي. آخري فن تعمير هيٺ ڏنل آهي:

Microservices: سائيز جو معاملو، جيتوڻيڪ توھان وٽ ڪبرنيٽس آھي

ان جا نتيجا ڇا آهن؟

فولر وٽ پڻ اهو آهي هڪ مضمون آهي - مائڪرو سروسز استعمال ڪرڻ لاءِ ”ادائگي“ بابت:

Microservices: سائيز جو معاملو، جيتوڻيڪ توھان وٽ ڪبرنيٽس آھي

۽ اسان ڏسنداسين ته اسان جون اميدون پورا ٿي ويا.

ماڊلز جون حدون صاف ڪريو...

پر اسان کي ڪيترين ئي مائڪرو سروسز کي درست ڪرڻ جي ضرورت آهي؟تبديلي آڻڻ لاء؟ ڇا اسان اهو به اندازو لڳائي سگهون ٿا ته هر شي ورهايل ٽريڪر کان سواءِ ڪيئن ڪم ڪري ٿي (آخر ۾، ڪنهن به درخواست تي عمل ڪيو ويندو آهي اڌ مائڪرو سروسز)؟

ھڪڙو نمونو آھي "گندگي جو وڏو ٿلهو“، ۽ هتي اها ورهايل گندگي جو ڍير بڻجي وئي. ھن جي تصديق ڪرڻ لاءِ، ھتي ھڪڙي اندازي مطابق بيان آھي ته درخواستون ڪيئن ٿيون وڃن:

Microservices: سائيز جو معاملو، جيتوڻيڪ توھان وٽ ڪبرنيٽس آھي

تعیناتي جي آزادي ...

ٽيڪنيڪل طور تي، اهو حاصل ڪيو ويو آهي: اسان هر مائڪرو سروس کي الڳ الڳ ڪري سگهون ٿا. پر عملي طور تي توهان کي اڪائونٽ ۾ وٺڻ جي ضرورت آهي ته اهو هميشه ڦرندو آهي ڪيتريون ئي microservices، ۽ اسان کي حساب ۾ وٺڻ جي ضرورت آهي انهن جي رولنگ جو حڪم. سٺي طريقي سان، اسان کي عام طور تي هڪ الڳ سرڪٽ ۾ جانچڻ جي ضرورت آهي ته ڇا اسان صحيح ترتيب ۾ ڇڏڻ کي رول ڪري رهيا آهيون.

ٽيڪنالاجي چونڊڻ جي آزادي ...

اها آهي. بس ياد رکو ته آزادي اڪثر ڪري لاقانونيت تي سرحدون آهن. اهو هتي تمام ضروري آهي ته ٽيڪنالاجيون نه چونڊيو صرف انهن سان "راند" ڪرڻ لاء.

ترقي جي آزادي...

پوري ايپليڪيشن لاءِ ٽيسٽ لوپ ڪيئن ٺاهيو (ڪيترن ئي حصن سان)؟ پر توهان اڃا تائين ان کي تازه ڪاري ڪرڻ جي ضرورت آهي. اهو سڀ ڪجهه حقيقت ڏانهن وٺي ٿو ٽيسٽ سرڪٽ جو حقيقي تعدادجنهن کي اسان اصولي طور تي شامل ڪري سگهون ٿا، گهٽ ۾ گهٽ ظاهر ٿئي ٿو.

اهو سڀ ڪجهه مقامي طور تي ترتيب ڏيڻ بابت ڪيئن؟... اهو ظاهر ٿئي ٿو ته اڪثر ڊولپر پنهنجو ڪم آزاديءَ سان ڪندو آهي، پر ”بي ترتيب“، ڇاڪاڻ ته هو ان وقت تائين انتظار ڪرڻ تي مجبور هوندو آهي جيستائين سرڪٽ جاچ لاءِ آزاد نه ٿئي.

جدا جدا ماپ...

ها، پر اهو استعمال ٿيل DBMS جي علائقي ۾ محدود آهي. ڏنل فن تعمير جي مثال ۾، Cassandra کي مسئلا نه هوندا، پر MySQL ۽ PostgreSQL ڪندو.

Боوڌيڪ اعتبار...

نه رڳو حقيقت ۾ هڪ مائڪرو سروس جي ناڪامي اڪثر ڪري سڄي سسٽم جي صحيح ڪارڪردگي کي ٽوڙي ٿو، پر هڪ نئون مسئلو پڻ آهي: ھر مائيڪرو سروس جي غلطي کي برداشت ڪرڻ تمام ڏکيو آھي. ڇاڪاڻ ته مائڪرو سروسز مختلف ٽيڪنالاجيون استعمال ڪنديون آهن (memcache، Redis، وغيره)، هر هڪ لاء توهان کي هر شيء تي سوچڻ ۽ ان تي عمل ڪرڻ جي ضرورت آهي، جيڪو، يقينا، ممڪن آهي، پر وڏي وسيلن جي ضرورت آهي.

لوڊ جي ماپ...

هي واقعي سٺو آهي.

مائڪرو سروسز جي ”روشني“...

اسان وٽ نه رڳو وڏو آهي نيٽ ورڪ مٿي (ڊي اين ايس لاءِ درخواستون وڌي رهيون آهن، وغيره)، پر ان سان گڏوگڏ ڪيترن ئي ذيلي سوالن جي ڪري اسان شروع ڪيو نقل ڊيٽا (اسٽور ڪيش)، جنهن جي نتيجي ۾ هڪ اهم مقدار ۾ اسٽوريج.

۽ هتي اسان جي اميدن سان ملڻ جو نتيجو آهي:

Microservices: سائيز جو معاملو، جيتوڻيڪ توھان وٽ ڪبرنيٽس آھي

پر اهو سڀ ڪجهه ناهي!

ڇاڪاڻ ته:

  • گهڻو ڪري اسان کي هڪ پيغام بس جي ضرورت پوندي.
  • وقت ۾ صحيح وقت تي مسلسل بيڪ اپ ڪيئن ٺاهيو؟ اڪيلو حقيقي ھن لاءِ ٽريفڪ بند ڪرڻ جو اختيار آھي. پر پيداوار ۾ اهو ڪيئن ڪجي؟
  • جيڪڏهن اسان ڪيترن ئي علائقن جي حمايت جي باري ۾ ڳالهائي رهيا آهيون، پوء انهن مان هر هڪ ۾ استحڪام کي منظم ڪرڻ هڪ تمام محنت وارو ڪم آهي.
  • مرڪزي تبديليون ڪرڻ جو مسئلو پيدا ٿئي ٿو. مثال طور، جيڪڏهن اسان کي PHP ورزن کي اپڊيٽ ڪرڻ جي ضرورت آهي، اسان کي هر مخزن کي انجام ڏيڻ جي ضرورت پوندي (۽ انهن مان ڪيترائي آهن).
  • آپريشنل پيچيدگي ۾ واڌ، غير معمولي، تيز آهي.

ان سڀ سان ڇا ڪجي؟

هڪ monolithic ايپليڪيشن سان شروع ڪريو. فولر جو تجربو چوي ٿو ته لڳ ڀڳ سڀ ڪامياب microservice ايپليڪيشنون هڪ monolith جي طور تي شروع ڪيو ته تمام وڏو ٿي ويو ۽ پوء ٽوڙيو ويو. ساڳئي وقت، تقريبن سڀني سسٽم مائڪرو سروسز جي طور تي ٺاهيل شروع کان جلد يا بعد ۾ سنگين مسئلن جو تجربو ڪيو.

هڪ ٻيو قيمتي خيال اهو آهي ته هڪ منصوبي لاءِ مائڪرو سروس آرڪيٽيڪچر سان ڪامياب ٿيڻ لاءِ، توهان کي چڱيءَ طرح ڄاڻڻ گهرجي ۽ موضوع جي ايراضي، ۽ ڪيئن microservices ٺاهڻ لاء. ۽ هڪ موضوع واري علائقي کي سکڻ جو بهترين طريقو هڪ monolith ٺاهڻ آهي.

پر ڇا جيڪڏهن اسان اڳ ۾ ئي هن صورتحال ۾ آهيون؟

ڪنهن به مسئلي کي حل ڪرڻ لاءِ پهريون قدم اهو آهي ته ان سان اتفاق ڪيو وڃي ۽ اهو سمجهڻ گهرجي ته اهو هڪ مسئلو آهي، جنهن ۾ اسان وڌيڪ ڏک نه ٿا چاهيون.

جيڪڏهن، وڏي پئماني تي منوولٿ جي صورت ۾ (جڏهن اسان ان لاءِ اضافي وسيلا خريد ڪرڻ جو موقعو ختم ڪري ڇڏيو آهي)، اسان ان کي ڪٽي ڇڏيون ٿا، ته پوءِ ان صورت ۾ سامهون اچي ٿو ڪهاڻي: جڏهن گهڻيون مائڪرو سروسز هاڻي مدد نه ڪنديون آهن، پر رڪاوٽ ٿينديون آهن. اضافي کي ڪٽيو ۽ وڌايو!

مثال طور، مٿي ڄاڻايل اجتماعي تصوير لاءِ ...

سڀ کان وڌيڪ قابل اعتراض مائڪرو سروسز کان نجات حاصل ڪريو:

Microservices: سائيز جو معاملو، جيتوڻيڪ توھان وٽ ڪبرنيٽس آھي

فرنٽيڊ نسل لاءِ ذميوار سڀني مائڪرو سروسز کي گڏ ڪريو:

Microservices: سائيز جو معاملو، جيتوڻيڪ توھان وٽ ڪبرنيٽس آھي

... ھڪڙي microservice ۾، ھڪڙي ۾ لکيل (جديد ۽ عام، جيئن توھان سمجھو ٿا) ٻولي / فريم ورڪ:

Microservices: سائيز جو معاملو، جيتوڻيڪ توھان وٽ ڪبرنيٽس آھي

ان ۾ ھڪڙو ORM (ھڪڙو DBMS) ھوندو ۽ پھريون ڪجھ ايپليڪيشنون:

Microservices: سائيز جو معاملو، جيتوڻيڪ توھان وٽ ڪبرنيٽس آھي

... پر عام طور تي، توھان ھيٺ ڏنل نتيجو حاصل ڪري سگھوٿا اتي گھڻو وڌيڪ منتقل ڪري سگھو ٿا:

Microservices: سائيز جو معاملو، جيتوڻيڪ توھان وٽ ڪبرنيٽس آھي

ان کان علاوه، Kubernetes ۾ اسان هي سڀ ڪجهه الڳ الڳ مثالن ۾ هلائيندا آهيون، جنهن جو مطلب آهي ته اسان اڃا تائين لوڊ کي ماپ ڪري سگهون ٿا ۽ انهن کي الڳ الڳ ماپ ڪري سگهون ٿا.

اختصار ڪرڻ

وڏي تصوير کي ڏسو. گهڻو ڪري، مائڪرو سروسز سان اهي سڀئي مسئلا پيدا ٿين ٿا ڇاڪاڻ ته ڪو ماڻهو پنهنجو ڪم ورتو، پر "مائڪرو سروسز سان کيڏڻ" چاهي ٿو.

لفظ ”مائڪرو سروسز“ ۾ ”مائڪرو“ حصو بيڪار آهي.. اهي ”مائڪرو“ آهن صرف ان ڪري جو اهي هڪ وڏي مونولٿ کان ننڍا آهن. پر انھن کي ڪجھ ننڍو نه سمجھو.

۽ آخري سوچ لاءِ، اچو ته اصل چارٽ ڏانھن موٽي وڃون:

Microservices: سائيز جو معاملو، جيتوڻيڪ توھان وٽ ڪبرنيٽس آھي

ان تي لکيل هڪ نوٽ (مٿي ساڄي) انهي حقيقت ڏانهن ڇڪي ٿو ٽيم جون صلاحيتون جيڪي توهان جي منصوبي کي ٺاهيندا آهن هميشه بنيادي آهن - اهي توهان جي پسند ۾ اهم ڪردار ادا ڪندا microservices ۽ هڪ monolith جي وچ ۾. جيڪڏهن ٽيم وٽ ڪافي صلاحيتون نه آهن، پر اهو مائڪرو سروسز ٺاهڻ شروع ڪري ٿو، ڪهاڻي ضرور موتمار ٿي ويندي.

وڊيوز ۽ سلائڊ

تقرير کان وڊيو (~ 50 منٽ؛ بدقسمتي سان، اهو سنڌين جي ڪيترن ئي جذبات کي بيان نٿو ڪري، جيڪو گهڻو ڪري رپورٽ جي مزاج کي طئي ڪيو، پر اهو ڪيئن آهي):

رپورٽ جي پيشڪش:

پي ايس

اسان جي بلاگ تي ٻيون رپورٽون:

توھان شايد ھيٺ ڏنل اشاعتن ۾ پڻ دلچسپي وٺندا.

جو ذريعو: www.habr.com

تبصرو شامل ڪريو