آموزش هوش تجاری از ۰ تا ۱۰۰

  • ۰
  • ۰

Microservices یک روند معماری عصر جدید در توسعه نرم افزار است که برای ایجاد و استقرار برنامه های کاربردی بزرگ و پیچیده استفاده می شود. بازیکنان برتر فناوری امروز مانند آمازون، اوبر، نتفلیکس، اسپاتیفای و غیره نیز این انتقال را انجام داده‌اند. همیشه برای متخصصان فناوری ضروری است که با تسلط بر فناوری‌های مورد تقاضا از بازار جلوتر بمانند و Microservices همان چیزی است که باید به آن مسلط شوید. این آموزش Microservices به شما کمک می کند تا با همه چیزهایی که برای شروع کار با Microservices نیاز دارید آشنا شوید.

آموزش میکروسرویس برای مبتدیان:
در این آموزش میکروسرویس، ما از اصول میکروسرویس شروع می کنیم و تمام مفاهیم اصلی میکروسرویس را که یک متخصص میکروسرویس باید از آن آگاه باشد، یاد می گیریم. حال، بیایید نگاهی به اجزای این آموزش بیندازیم.

  • معماری یکپارچه
  • چالش های معماری یکپارچه
  • میکروسرویس چیست؟
  • اصول میکروسرویس ها
  • معماری یکپارچه در مقابل میکروسرویس
  • انواع میکروسرویس ها
  • مزایا و معایب میکروسرویس ها
  • چارچوب های میکروسرویس جاوا
  • ابزارهای میکروسرویس
  • بهترین شیوه های میکروسرویس ها


قبل از شروع کار با Microservices، همه ما در مورد یک الگوی معماری به نام معماری یکپارچه می دانیم که در ابتدا در بازار غالب شد. استفاده از این الگوی معماری معایب خاصی دارد، اما ابتدا بیایید دقیقاً بفهمیم که معماری یکپارچه به چه معناست.

 

معماری یکپارچه
یکپارچه چیزی است که از یک قطعه تشکیل شده است. با توجه به اصطلاحات عامیانه، معماری یکپارچه شبیه یک ظرف بزرگ است که تمام اجزای برنامه را در یک بسته واحد جمع می کند.

بیایید نمونه‌ای از این معماری یکپارچه را ببینیم تا بفهمیم برنامه‌ها چگونه بر روی این چارچوب ساخته شده‌اند، چگونه کار می‌کنند و چگونه ارتباط برقرار می‌کنند.

 

مدل سرور مشتری

هنگامی که یک کاربر یک رابط کاربری وب را باز می کند، فقط یک وب سایت را مشاهده کنید. اما، در پشت صحنه، برنامه سمت سرور دارای ویژگی های مختلفی است که همه آن ها را با هم مدیریت می کند.

ویژگی هایی مانند رسیدگی به درخواست های HTTP، اجرای منطق خاص دامنه، و بازیابی داده ها از پایگاه داده بر روی یک چارچوب واحد ساخته شده اند. بنابراین اگر هر یک از اجزاء کار نکند، کل سیستم از کار می افتد. همچنین، اگر هر یک از ویژگی ها به روز شود، کل سیستم نیاز به بازسازی دارد. اینها چالش های مهمی برای توسعه دهندگانی بود که روی معماری یکپارچه کار می کردند.

 

همچنین، چندین چالش دیگر با معماری یکپارچه وجود دارد. حالا یک به یک آنها را بررسی می کنیم:

چالش های معماری یکپارچه (معایب)

  • چابکی - معماری یکپارچه می تواند تغییرات جدید برنامه را با چابکی کمتر در خود جای دهد. توسعه دهندگان باید برای هر تغییر جزئی همه چیز را بسازند.
  • مقیاس ناپذیر - مقیاس پذیری چیزی نیست جز قابلیت یک سیستم/برنامه برای مدیریت بهتر رشد کار. بیایید فرض کنیم که یک برنامه تجارت الکترونیک در حال جذب مشتری زیادی است و می‌خواهد برنامه را مقیاس‌بندی کند تا مشتریان جدید بیشتری به دست آورد.
  • توسعه دهندگان نمی توانند برنامه را به طور همزمان مقیاس کنند. هر زمان که یک ویژگی جدید باید اضافه یا به روز شود، آنها باید نمونه های جدیدی از برنامه را ایجاد کنند. همچنین، ماژول های مختلف نیازهای منابع متناقضی دارند.
  • تحمل خطا - یک اشکال در هر ماژول به طور بالقوه می تواند کل فرآیند را از بین ببرد. بر در دسترس بودن برنامه ها تأثیر می گذارد.
  • فن آوری های ترکیبی - برنامه های کاربردی یکپارچه مانعی برای پذیرش فناوری های جدید دارند. از آنجایی که تغییرات در فریمورک ها یا برنامه نویسی کل برنامه را تحت تاثیر قرار می دهد، هزینه بالایی دارد.
  • بلوک های توسعه مداوم - همه ویژگی های برنامه را نمی توان به طور همزمان ساخته و اجرا کرد.
  • توسعه آهسته - توسعه در برنامه های یکپارچه کند است زیرا هر ویژگی باید یکی پس از دیگری ساخته شود.

 

همه این چالش ها دلایل اصلی تکامل میکروسرویس ها بودند. خب حالا بیایید بفهمیم میکروسرویس به زبان ساده چیست؟

میکروسرویس چیست؟
معماری Microservices یا به سادگی Microservices - یک سبک معماری است که یک برنامه کاربردی واحد را به مجموعه‌ای از سرویس‌ها تبدیل می‌کند که به طور مستقل قابل استقرار هستند، به‌طور آزاد با هم پیوند می‌خورند، حول قابلیت‌های تجاری سازمان‌دهی می‌شوند و به راحتی قابل نگهداری و آزمایش هستند. هر سرویس فرآیند خاص خود را اجرا می کند و اغلب از طریق پیام رسانی یا HTTP با استفاده از پروتکل های سبک با یکدیگر ارتباط برقرار می کند.

گرایش میکروسرویس ها در سال های اخیر رو به افزایش است زیرا امکان تحویل سریع و قابل اعتماد برنامه های کاربردی بزرگ و پیچیده (یکی از حیاتی ترین مهارت ها برای توسعه دهندگان جاوا) را فراهم می کند. میکروسرویس ها را می توان به عنوان شکل بعدی معماری سرویس گرا (SOA) در نظر گرفت.

 

معماری میکروسرویس ها

  • معماری میکروسرویس‌ها شامل سرویس‌های کوچک و مستقلی است که هر کدام مستقل هستند و یک قابلیت تجاری واحد را پیاده‌سازی می‌کنند. همه این سرویس‌ها دارای محیط‌های اجرایی و متعادل‌کننده‌های بار برای انجام عملکردهای مختلف و گرفتن داده‌هایشان هستند. آنها از طریق گذرگاه HTTP REST/Message برای انجام اتوماسیون و قابلیت های نظارت با یکدیگر ارتباط برقرار می کنند. دروازه API به عنوان یک ارتباط دهنده برای انتقال درخواست مشتری به معماری داخلی عمل می کند.
  • بیایید عملکردهای این اجزا را یک به یک درک کنیم:
  • مشتریان - کاربران مختلف درخواست ها را از دستگاه های مختلف ارسال می کنند.
  • Identity Providers - درخواست های مشتری توسط ارائه دهندگان هویت احراز هویت می شوند و سپس به API Gateway ارسال می شوند.
  • API Gateway - درخواست های مشتری را مدیریت می کند.
  • فرمت های پیام - آنها از طریق دو نوع پیام همزمان و ناهمزمان ارتباط برقرار می کنند.
  • مدیریت داده ها - هر میکروسرویس دارای یک پایگاه داده خصوصی برای گرفتن داده های خود و اجرای عملکردهای تجاری مربوطه است. همچنین پایگاه داده های Microservices فقط از طریق سرویس API خود به روز می شوند.
  • محتوای ثابت - تمام محتوای سیستم را در خود جای می دهد.
  • مدیریت - این مؤلفه مسئول متعادل کردن سرویس ها در گره ها و شناسایی خرابی ها است.
  • کشف سرویس - این جزء به عنوان یک راهنما برای یافتن مسیر ارتباط بین میکروسرویس ها عمل می کند.
  • شبکه های تحویل محتوا - محتوا را به کاربران نهایی توزیع شده ارائه می دهد.
  • سرویس از راه دور - روشی پویا، مستقل از حمل و نقل و مدولار برای نمایش ریزسرویس ها ارائه می دهد.

 

نمونه معماری میکروسرویس ها
برنامه تجارت الکترونیک با معماری Microservices

در معماری یکپارچه، همه اجزا در یک ماژول ادغام می شوند. اما، در معماری Microservices، آنها به ماژول های فردی (microservice) گسترش می یابند.

در اینجا، هر ویژگی (پیشنهاد، جدید، سبد خرید، خدمات مشتری و غیره) با یک میکروسرویس متفاوت تخصیص داده می‌شود، داده‌های آن‌ها را مدیریت می‌کند و سایر عملکردها را انجام می‌دهد. هر میکروسرویس روی یک قابلیت تجاری متمرکز است. از طریق آن، می‌توانیم هر زمان که نیاز باشد ویژگی‌های فردی را بدون تأثیر بر عملکرد کل برنامه، مستقر کنیم.

این واحدهای منفرد قابل استقرار از طریق یک رابط کاملاً تعریف شده به نام REST یا گذرگاه پیام با یکدیگر ارتباط برقرار می کنند.

 

اصول میکروسرویس ها
اصول کلیدی میکروسرویس ها عبارتند از:

  • اصل مسئولیت واحد - بیان می کند که هر کلاس یا ماژول در میکروسرویس ها باید یک مسئولیت واحد داشته باشد. داشتن مسئولیت های متعدد منجر به اتصال محکم می شود و منجر به طرح های شکننده می شود که به سختی تکامل می یابند و می توانند با تغییر به راه های غیرمنتظره تبدیل شوند.
  • اتصال شل - وابستگی بین سرویس ها از طریق اتصال شل به حداقل می رسد.
  • تحمل خطا - میکروسرویس ها لزوماً مقاوم به خطا ساخته می شوند تا خرابی در سمت سرویس های همکار آن تأثیر کمتری بر SLA خود داشته باشد.
  • اتوماسیون زیرساخت - در رویکرد میکروسرویس، هر سرویس با تعبیه همه وابستگی ها و اجرا به صورت مستقل ساخته می شود.
  • استقرار - میکروسرویس ها پلتفرم آگنوستیک هستند. این بدان معناست که سرویس ها به طور مستقل بدون تأثیرگذاری بر دیگران طراحی و اجرا می شوند.

 

انواع میکروسرویس ها
میکروسرویس ها دو نوع هستند:

1. ریز خدمات بدون تابعیت
ریزسرویس های بدون تابعیت بلوک های سازنده یک سیستم توزیع شده هستند. آنها وضعیت جلسه را بین درخواست ها حفظ نمی کنند. اگر هر سرویسی حذف شود، بر منطق عملکرد کلی سرویس تأثیری نخواهد گذاشت.

2. Microservices دولتی
در مقایسه با میکروسرویس‌های بدون تابعیت، ریزسرویس‌های دولتی در زندگی واقعی کمتر ترجیح داده می‌شوند. آنها اطلاعات جلسه را در کد نگهداری می کنند. و هنگامی که بیش از دو سرویس با یکدیگر تعامل دارند، وضعیت درخواست سرویس را حفظ می کنند.

این در مورد انواع میکروسرویس ها است. از آنجایی که هر الگوی معماری مزایا و معایب خود را دارد، اکنون لازم است قبل از اتخاذ آن، مزایا و معایب Microservice را بدانید.

 

مزایا و معایب میکروسرویس ها
مزایای میکروسرویس ها

مزایای Microservices به اندازه کافی قوی است که برخی از بازیکنان بزرگ مانند Netflix، eBay و غیره را متقاعد کند که این روش را اتخاذ کنند. بیایید یک به یک آنها را مورد بحث قرار دهیم:

1. میکروسرویس ها به راحتی مقیاس پذیر هستند.

از آنجایی که خدمات مجزا هستند، می توانید به راحتی به جای برنامه کامل، موارد مورد نیاز را در زمان های مورد نیاز مقیاس کنید.

2. میکروسرویس ها از طریق جداسازی خطا، زمان خرابی را کاهش می دهند.

برنامه‌های بزرگ می‌توانند برای خرابی یک ماژول بی‌تأثیر باقی بمانند.

3. استقرار کوچکتر و سریعتر

میکروسرویس‌ها را می‌توان به‌طور مستقل مستقر کرد و امکان بهبود مستمر و به‌روزرسانی سریع‌تر برنامه‌ها را فراهم کرد.

4. سهولت درک

با سادگی بیشتر، توسعه دهندگان می توانند به راحتی عملکرد یک سرویس را درک کنند.

 

معایب میکروسرویس ها
میکروسرویس ها چند معایب دارند. برخی از آنها به شرح زیر است:

  • سربار عملیاتی بالا - میکروسرویس ها اغلب بر روی کانتینرها یا ماشین های مجازی خود مستقر می شوند و باعث افزایش کار بحث VM می شوند.
  • قابل درک - همانطور که می دانیم، میکروسرویس ها دارای حداقل خدمات برای استقرار و نگهداری هستند. نظارت بر مشکلات درون آن سخت می شود.
  • مدیریت پیکربندی - این یکی دیگر از چالش های اصلی میکروسرویس ها است. از آنجایی که شامل چندین سرویس کوچک است، نیاز زیادی به مدیریت تنظیمات تمام سرویس ها در محیط های مختلف وجود دارد.
  • اشکال زدایی - بررسی هر سرویس معماری برای وجود خطا برای یک توسعه دهنده دشوار می شود. و اشکال زدایی یک خطا در هر یک از این سرویس ها بسیار پیچیده است.
  • خودکار کردن اجزا - تمام چرخه از ساخت را خودکار کنید، استقرار تا نظارت پیچیده تر می شود.
  • ثبات - حفظ سازگاری داده ها بین خدمات یک کار چالش برانگیز است.
  • تست - تست تعاملات بین سرویس ها پیچیده تر می شود.
  • ارتباط بین سرویس ها پیچیده است - ارتباطات بین سرویس و مقابله با اجرای شکست جزئی چالش برانگیز است.
     

چارچوب های میکروسرویس جاوا
چندین فریمورک میکروسرویس وجود دارد که می توانید برای توسعه جاوا از آنها استفاده کنید. برخی از محبوب ترین آنها در زیر ذکر شده است:

1. چکمه فنری
Spring Boot فریم ورک پیشرو برای ساخت اپلیکیشن های میکروسرویس در جاوا است. این برنامه در بالای زبان ها برای وارونگی کنترل، برنامه نویسی جنبه گرا و غیره کار می کند. Spring Boot یک چارچوب بالغ، منبع باز و غنی از ویژگی ها با مستندات عالی و یک جامعه گسترده است. پروژه های بوت بهار شامل پلتفرم IO، Cloud، Framework، Security، Batch، Data، REST Docs و غیره است.

2. Dropwizard
Dropwizard یک چارچوب منبع باز محبوب است که برای توسعه سریع خدمات وب RESTful استفاده می شود. این چارچوب کتابخانه‌های جاوا بالغ و پایدار را در یک پلتفرم کاملاً کاربردی ادغام می‌کند: Jersey برای REST، Jetty برای HTTP، و Jackson برای JSON، FreeMarker، Mustache و غیره.

ما می توانیم Dropwizard را با استفاده از Maven با افزودن آخرین نسخه به POM راه اندازی کنیم.

علاوه بر این، برای توسعه برنامه های کاربردی میکروسرویس دارای عملکرد بالا و دوستی عملیات است. برنامه‌های Dropwizard مانند Spring Boot در فایل‌های JAR با سرور برنامه Jetty قرار می‌گیرند.

3. جرسی
Jersey یک چارچوب منبع باز است که برای توسعه خدمات وب RESTful در جاوا استفاده می شود که از پیاده سازی API های JAX-RS پشتیبانی می کند. بهترین چیز در مورد جرسی این است که مستندات استثنایی همراه با مثال دارد.

4. میکرونورد
این یک فریم ورک میکروسرویس مدرن و مبتنی بر JVM است که برای ساخت برنامه‌های میکروسرویس ماژولار به راحتی قابل آزمایش است. تمام ابزارهای مورد نیاز برای ساخت اپلیکیشن های میکروسرویس با امکانات کامل را فراهم می کند. از Kubernetes، کشف سرویس، ردیابی توزیع شده و توابع بدون سرور پشتیبانی می کند.

5. AxonIQ
این یک چارچوب میکروسرویس جاوا است که برای ساخت معماری میکروسرویس ها مطابق با اصول طراحی دامنه محور (DDD) استفاده می شود. همچنین به شما امکان می دهد الگوهای میکروسرویس مانند معماری رویداد محور و Command-Query-Responsibility-Segregation (CQRS) را پیاده سازی کنید.

در حال حاضر، شما با فریمورک های میکروسرویس جاوا که اغلب استفاده می شود آشنا شده اید. در مرحله بعد، اجازه دهید به جلو برویم و در مورد ابزارهای مختلف مورد استفاده در هنگام توسعه برنامه های کاربردی در معماری Microservices بیاموزیم.

 

ابزارهای میکروسرویس
در زیر ابزارهای میکروسرویس محبوبی که برای عملکردهای مختلف استفاده می شوند آورده شده است:

1. داکر
یک ابزار منبع باز که امکان ساخت و استقرار برنامه ها را با استفاده از کانتینرها فراهم می کند. توسعه دهندگان می توانند با استفاده از این کانتینرها یک برنامه را به صورت یک بسته واحد اجرا کنند.

2. هیستریکس
Hystrix یک کتابخانه تحمل خطا است که برای جداسازی نقاط دسترسی به سیستم های راه دور، سرویس ها و کتابخانه های شخص ثالث توسعه یافته است.

3. AWS Lambda
این ابزار AWS Lamda از سرورهای بدون زیرساخت برای ساخت‌های میکروسرویس‌ها و کاربرانی که با نرخ پرداخت به ازای استفاده دریافت می‌کنند، پشتیبانی می‌کند. بیشتر، ما از این ابزار برای میزبانی خدمات REST یا API در ترکیب با دروازه API AWS استفاده می کنیم.

4. پرومتئوس
Prometheus یک ابزار نظارتی است که برای شناسایی الگوهای عجیب و غریب Microservices استفاده می شود.

5. Logstash
Logstash یک ابزار منبع باز است که برای بررسی گزارش ها استفاده می شود. این به شما امکان می دهد داده های میکروسرویس ها را ذخیره، متمرکز و تبدیل کنید.

6. RabbitMQ
این ابزار از الگوهایی برای تعامل بین میکروسرویس ها استفاده می کند و همچنین برنامه را به طور همزمان مقیاس می کند. با کمک این ابزار می توانید میکروسرویس ها را برای حل مشکلات سیستم های توزیع شده متصل کنید.

7. آپاچی کافکا
آپاچی کافکا یک پلت فرم پردازش جریان توزیع شده است که برای پردازش داده یا تماس های API استفاده می شود.

 

در نهایت، در این مقاله آموزشی Microservices، بهترین روش‌ها برای طراحی میکروسرویس‌ها را مورد بحث قرار می‌دهیم.

بهترین روش های میکروسرویس ها
تا به حال، شما باید درک کرده باشید که چگونه تغییر به سمت میکروسرویس ها به توسعه، عملیات و استقرار سود می رساند.

در اینجا بهترین روش ها برای طراحی معماری میکروسرویس ها آمده است:

  • در ابتدا، ذخیره داده ها را برای هر میکروسرویس جدا کنید.
  • سپس کد را در سطح بلوغ مشابه نگه دارید.
  • پس از آن، هر Microservice را به طور جداگانه با توجه به ویژگی خود بسازید و سپس آن را در کانتینرها مستقر کنید.
  • در نهایت، سرورهای بدون تابعیت را برای ارتباط درمان کنید.

نتیجه

این ما را به پایان این مقاله می‌رساند، جایی که ما آموخته‌ایم که میکروسرویس‌ها چیست و چگونه برای معماری سازمانی، بهترین روش‌ها، و غیره سود می‌برند. امیدواریم همه چیزهایی که در این آموزش میکروسرویس برای شروع با شما به اشتراک گذاشته شده است، روشن باشید. .

امیدواریم مقاله مفید و آموزنده بوده باشد.

  • ۰۱/۱۰/۲۷
  • sahar saha sql

نظرات (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی