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

۱۹ مطلب در دی ۱۴۰۱ ثبت شده است

  • ۰
  • ۰

مقدمه:
نحوه ساخت برنامه های کاربردی سازمانی با پذیرش معماری Microservice کاملاً تغییر کرده است. در این دوران معاصر، یکی از مرسوم ترین معماری های نرم افزاری است. برخلاف رویکرد معماری پیچیده و کند، اکنون شرکت ها و توسعه دهندگان به سمت اجرای معماری میکروسرویس روی آورده اند. برای هر مبتدی که کنجکاو است یاد بگیرد میکروسرویس چیست، مقاله زیر کمک زیادی می کند. اما قبل از پرداختن به عمق، بیایید دلایل برجسته یادگیری میکروسرویس ها را بدانیم:

 

دلایل یادگیری میکروسرویس ها:

  • پوسته پوسته شدن دانه ای را ارائه می دهد
  • ساخت و نگهداری برنامه ها آسان است
  • کد با کیفیت را ارائه می دهد
  • از هماهنگی بین تیمی پشتیبانی می کند
  • انعطاف پذیری استفاده از ابزارهای متنوع
  • احتمال خطرات کمتر
  • تحویل مستمر
  • از حداقل منابع با کاهش هزینه مالکیت استفاده کنید
  • روش های عالی داده های بزرگ را تسهیل می کند
  • مشاغل پردرآمد

 

چالش های معماری یکپارچه:

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

قبل از یادگیری عمیق در مورد میکروسرویس ها، به چالش های معماری یکپارچه نگاه کنید:

  • با تکنولوژی های مختلف نمی توان ساخت
  • اگر یکی از ویژگی ها کار نکند، کل سیستم ناکارآمد است
  • برنامه ها را نمی توان به راحتی مقیاس بندی کرد زیرا هر بار نیاز به به روز رسانی دارند
  • چندین ویژگی از برنامه ها را نمی توان به طور همزمان ایجاد و پیاده سازی کرد
  • توسعه زمان بر است
  • برای کاربردهای پیچیده مناسب نیست

 

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

 

دلیل پذیرش میکروسرویس:

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

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

 

حالا بیایید به جزئیات معماری میکروسرویس بپردازیم:

معماری میکروسرویس چیست؟
در ساده‌ترین عبارت، معماری میکروسرویس اساساً یک سبک معماری است که یک برنامه کاربردی را از طریق سرویس‌های به هم پیوسته آزاد پیکربندی می‌کند. چنین ماژول ها یا مجموعه هایی را می توان به طور مستقل پیاده سازی، راه اندازی و نگهداری کرد.

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

 

مختصری در مورد اجزای میکروسرویس:

  • مشتریان - متشکل از کاربران مختلف از دستگاه های مختلف که درخواست ارسال می کنند.
  • ارائه دهندگان هویت - هویت مشتریان یا کاربران را تأیید می کند و همچنین توکن های امنیتی صادر می کند.
  • API Gateway - درخواست های مشتری را مدیریت می کند.
  • مدیریت – سرویس ها را روی گره ها تثبیت می کند و همچنین خرابی ها را شناسایی می کند.
  • محتوای ثابت - کل محتوای سیستم را ذخیره می کند.
  • شبکه های تحویل محتوا - شامل شبکه توزیع شده سرورهای پروکسی به همراه مراکز داده آنها است.
  • کشف سرویس - راهنمای یافتن مسیر ارتباط بین میکروسرویس ها.
  • سرویس از راه دور - به اطلاعات دسترسی از راه دور که در سیستم دستگاه های IT وجود دارد اجازه می دهد.
  •  

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

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

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

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

 

طبقه بندی میکروسرویس ها:
2 نوع عمده ریز خدمات وجود دارد - بدون تابعیت و دولتی.

1.بی تابعیت:

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

2.دولتی:

هر میکروسرویس مستقل است. هنگامی که دو یا چند میکروسرویس با هم ارتباط برقرار می کنند، میکروسرویس های حالت دار یک حالت درخواست سرویس را حفظ می کنند. آنها این کار را با ذخیره اطلاعات جلسه در کد انجام می دهند. اگر مواردی وجود دارد که اطلاعات جلسه باید ذخیره شود، بهتر است به سراغ سرویس های دولتی بروید.

پس از آشنایی کافی با مبانی Microservices، اکنون زمان آن است که نحوه پیاده سازی آن را درک کنید.

 

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

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

 

شما همچنین باید با تست آشنا باشید، بنابراین به زیر نگاه کنید:

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

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

 

مزایای میکروسرویس ها:

  • بر اساس قابلیت های تجاری سازماندهی شده است
  • بسیار قابل نگهداری و آزمایش پذیر
  • استقرار مستقل
  • سست جفت شده است
  • ایزوله سازی اشتباه
  • بهره وری و سرعت را افزایش می دهد
  • پشته فناوری ترکیبی

 

برای استفاده حداکثری از پیاده سازی، می توانید به بهترین شیوه ها به صورت زیر نگاه کنید:

بهترین روش ها برای طراحی میکروسرویس ها:

  • ذخیره اطلاعات جداگانه برای هر میکروسرویس
  • کد را در یک سطح بلوغ مشابه حفظ کنید
  • ساخت جداگانه برای هر میکروسرویس
  • در کانتینرها مستقر کنید
  • سرورها را بدون تابعیت در نظر بگیرید

 

 

  • sahar saha sql
  • ۰
  • ۰

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

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

 

پارچه سرویس لاجورد
معماری یک برنامه کاربردی مبتنی بر میکروسرویس به توسعه دهندگان نیاز دارد تا کد اضافی برای ارتباط بین سرویس ها و رسیدگی به خرابی ها بنویسند. اینجاست که مایکروسافت Azure Service Fabric می آید که ساخت و استقرار برنامه های کاربردی مبتنی بر میکروسرویس را ساده می کند تا سازمان ها را با برنامه های چابک مقیاس پذیر و قابل اعتماد، چه در Azure اجرا شوند، چه در محل یا در دیگر ابرها، ارائه دهد. و توسعه‌دهندگان باید روی کدهایی تمرکز کنند که ارزش کسب‌وکار را ارائه می‌کند که به این معنی است که مشتریان سریع‌تر ویژگی‌های جدید را دریافت می‌کنند.

 

پارچه سرویس Azure با نظارت بر وضعیت سلامت خوشه، گزارش دادن یا اقدام خودکار برای کاهش مشکلات، از برنامه ها در برابر خرابی محافظت می کند. به بسیاری از مدل‌های برنامه‌نویسی داخلی برای ساده‌سازی توسعه مجهز شده است که نه تنها به شما امکان می‌دهد هر کد برنامه‌ای را در میکروسرویس‌های سنتی بدون حالت اجرا کنید، بلکه از سرویس‌های میکرو وضعیتی هم‌مکان‌سازی محاسبات و داده‌ها برای کاهش تأخیر و افزایش عملکرد پشتیبانی می‌کند.

 

Azure Service Fabric مورد استفاده مایکروسافت
مایکروسافت سال‌هاست که از Azure Service Fabric در تولید برای تکامل داخلی خود برای برخی از محصولات استفاده می‌کند، از داخل محل تا ابر و از یکپارچه تا برنامه‌های مبتنی بر میکروسرویس. Azure Service Fabric خدماتی از جمله Azure Document DB، Azure SQL Database، Skype for Business، Intune و Cortana را تامین کرده است. آنها همان فناوری را که برای خود به عنوان یک سرویس در Azure استفاده می کردند منتشر کرده اند.

مدل های برنامه نویسی پارچه سرویس Azure
در Azure Service Fabric، سرویس‌ها را می‌توان به هر نوع زبان یا کدی که در یک میزبان کانتینر یا کلاستر اجرا می‌شود، با استفاده از APIهای Service Fabric نوشت تا از ویژگی‌های پلتفرم و چارچوب‌های کاربردی استفاده کامل کند.

  • فایل های اجرایی مهمان: هر کد اجرایی موجود یا دلخواه که به هر زبانی نوشته شده باشد، می تواند به عنوان فایل های اجرایی مهمان در بافت سرویس اجرا شود. آنها روی گره‌های خوشه قرار می‌گیرند اما نمی‌توانند مستقیماً سرویس Fabric SDK API را فراخوانی کنند. اما همچنان از ویژگی‌هایی مانند نظارت بر سلامت، تراکم، قابلیت کشف، گزارش بار و مدیریت کامل چرخه عمر برنامه از این پلتفرم بهره خواهد برد.
  • کانتینرها: می توانید کانتینرهای لینوکس/ویندوز را در Service Fabric بدون هیچ تغییری در برنامه خود مستقر کنید. در همین اپلیکیشن می توانید ترکیبی از سرویس ها در فرآیندها و سرویس ها در کانتینرها را داشته باشید. خدمات Fabric خدمات قابل اعتماد بدون دولت یا دارای وضعیت یا Reliable Actors در کانتینرها
  • خدمات قابل اعتماد: Service Fabrics دارای مدل های برنامه نویسی برای به دست آوردن برخی ویژگی های اضافی است که سبک وزن، قدرتمند هستند و به شما کمک می کنند تا آنچه را که برای برنامه شما مهم است بیان کنید. این به طور خودکار توسط Service Fabric مدیریت می‌شود و می‌تواند بدون تابعیت یا دولتی باشد. ویژگی هایی مانند تکرار و پارتیشن بندی باعث می شود خدمات قابل اعتماد بسیار در دسترس باشد.
  • ASP.NET Core: Service Fabric با ASP.NET Core ادغام می‌شود و از برنامه‌های بدون حالت و حالت دولتی پشتیبانی می‌کند و مزیت دیگری از قابلیت‌های ارکستراسیون پیشرفته Reliable Collections دارد.
  • Reliable Actors: یک چارچوب برنامه کاربردی، ساخته شده بر روی Reliable Services، که الگوی بازیگر مجازی را پیاده سازی می کند. این بر اساس الگوی طراحی بازیگر خواهد بود و می تواند از تمام ویژگی های ارائه شده توسط پلتفرم Azure Service Fabric بهره مند شود.

 

مفاهیم پارچه سرویس لاجورد

  • خوشه: مجموعه‌ای از ماشین‌های مجازی یا فیزیکی که از طریق شبکه‌ای به یکدیگر متصل شده‌اند که ما میکروسرویس‌های خود را در آن مستقر و مدیریت می‌کنیم، که می‌تواند به هزاران ماشین تبدیل شود.
  • Node: یک ماشین فیزیکی یا مجازی منفرد در آن خوشه که با یک نام اختصاص داده شده است. گره ها دارای ویژگی های قرارگیری هستند، سرویس ویندوز را به طور خودکار راه اندازی می کند. همچنین می توان با استفاده از برخی فایل های اجرایی، چندین گره را روی یک ماشین فیزیکی یا مجازی واحد میزبانی کرد.
  • برنامه ها و خدمات: مجموعه ای از خدمات به عنوان یک برنامه کاربردی نامیده می شود در حالی که یک سرویس یک واحد عملکردی کامل است که عملکردهای خاصی را ارائه می دهد. ما نوع برنامه و انواع خدمات مرتبط با آن را برای ایجاد یک برنامه Service Fabric تعریف می کنیم. از آنجایی که کد، پیکربندی و داده‌ها در Service Fabric از یکدیگر جدا شده‌اند، می‌توانید چندین نسخه از برنامه‌ها را در یک کلاستر مستقر کنید.
  • پارتیشن ها و کپی ها: یک سرویس می تواند یک یا چند پارتیشن داشته باشد و یک پارتیشن می تواند کپی های زیادی داشته باشد. پارتیشن‌ها به عنوان مکانیزم مقیاس‌بندی برای توزیع بارهای کاری به سرویس‌های مختلف استفاده می‌شوند. با داشتن یک ماکت اولیه و چند نسخه ثانویه، اگر ماکت اولیه ناموفق باشد، ماکت ثانویه به طور خودکار به حالت اولیه ارتقا می‌یابد تا در دسترس بودن سرویس باقی بماند و ماکت‌های ثانویه بیشتری را برای بازگرداندن اضافه می‌کنند. به سطح مورد نظر برای حفظ افزونگی کافی.
  • بدون تابعیت: سرویسی که در آن هیچ الزامی برای تسخیر ایالت برای اهداف آینده وجود ندارد. به عنوان مثال، برنامه ای را برای ایجاد یک تصویر کوچک از یک تصویر در نظر بگیرید. از آنجایی که هر بار تصویر جدیدی به ما ارائه می شود، برای اهداف آینده نیازی به گرفتن هیچ وضعیتی در آنجا نداریم، بنابراین از سرویس بدون وضعیت استفاده می کنیم.
  • Stateful: در یک سرویس Stateful باید وضعیت سرویس خود را بدست آوریم. به عنوان مثال، در مورد یک سبد خرید، که در آن کاربر برخی از محصولات را از برخی صفحات اضافه می کند و سپس به صفحه دیگری می رود که در آنجا محصول دیگری را انتخاب می کند، ما باید از میکروسرویس های stateful برای حفظ حالت ها استفاده کنیم. تغییر نام وضعیت سرویس ماکت اولیه به همه کپی های ثانویه توسط پارچه سرویس تکرار می شود.
  • فایل‌های اجرایی مهمان: فایل‌های اجرایی نوشته شده به هر زبانی مانند Node.js، جاوا یا C++ که در سیستم عامل میزبان اجرا می‌شوند و به هیچ‌یک از فایل‌های زمان اجرا Service Fabric پیوند نمی‌دهند یا به آن ارجاع نمی‌دهند. این نوع ها نمی توانند از برخی ویژگی های Service Fabric مانند سرویس نامگذاری برای کشف نقطه پایانی استفاده کنند.

 

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

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

ارتباطات و گردش کار
ارتباط بین لایه های مختلف در مورد سرویس ابری و سرویس در مورد سرویس فابریک معمولاً در دو مدل اتفاق می افتد: مستقیم و از طریق یک ذخیره سازی بادوام خارجی. در سرویس‌های ابری، لایه‌ها مستقیماً با انتخاب نمونه نقش VM و اتصال مستقیم به نقطه پایانی ارتباط برقرار می‌کنند، در حالی که در بافت سرویس ما فقط به یک سرویس متصل می‌شویم.

 

مزایای پارچه سرویس Azure

  • زمان‌های استقرار سریع به‌عنوان ایجاد ماشین‌های مجازی زمان‌بر است، در حالی که در بافت سرویس به سرعت در خوشه‌ها مستقر می‌شود.
  • میزبانی با چگالی بالا زیرا می توانیم تعداد زیادی برنامه را در تعداد کمتری از VM ها مستقر کنیم.
  • قابلیت اجرا در هر محیط یا هر سیستم عاملی. حضور در Azure اجباری نیست، می تواند در داخل محل نیز اجرا شود.
  • مدیریت برنامه های کاربردی توزیع شده

 

 

خلاصه
Service Fabric که از سال‌ها تجربه در ارائه خدمات ابری حیاتی در خود مایکروسافت زاده شده است، صدها سازمان دیگر را نیز قادر می‌سازد از مزایای یک سرویس از طریق Microsoft Azure برخوردار شوند. پشتیبانی از بسیاری از ابزارهای توسعه‌دهنده و مدل‌های برنامه‌نویسی، بهره‌وری توسعه‌دهنده را بهبود می‌بخشد و می‌توان از آن برای ساخت سرویس‌های بدون حالت و میکروسرویس‌های دولتی استفاده کرد. همچنین از ویژگی هایی مانند مدیریت چرخه عمر برنامه، مدیریت وضعیت، ارتقاء زمان خرابی صفر و تشخیص و نظارت سلامت پشتیبانی می کند.

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

  • sahar saha sql
  • ۰
  • ۰

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

میکروسرویس چیست؟
بیایید کلمه Microservice را به دو قسمت تقسیم کنیم. اولاً، اصطلاح "Micro" به معنای کوچک یا کوچک است، در حالی که اصطلاح "سرویس" به معنای نوعی عمل است که می تواند کار شما را انجام دهد. حالا هر دو را با هم ترکیب کنید و ما تعریف خود را به شکل ساده تر آن داریم. میکروسرویس ها شکل کوچکی از عمل هستند که می توانند کار شما را انجام دهند.

سناریوی زیر را در نظر بگیرید. شما از یک سایت تجارت الکترونیک مانند آمازون بازدید می کنید و تمایل دارید چندین فعالیت به نام درخواست خدمات مانند ورود به سیستم، جستجوی محصول(ها)، افزودن/حذف محصول(ها) به سبد خرید یا لیست آرزوها و غیره انجام دهید. اگر به دیدگاه کاربردی فکر کنیم،

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

و خیلی کارهای دیگر که انجام می دهید. هر یک از این سرویس(ها) توسط بلوک های اختصاصی در سطح برنامه مدیریت می شوند. چنین بلوک هایی به عنوان Microservices در نظر گرفته می شوند که به عنوان Microservice Architecture نیز شناخته می شوند.

طبق https://microservices.io، Microservice یک سبک معماری است که یک برنامه کاربردی را به عنوان مجموعه ای از خدمات ساختار می دهد.

 

  • بسیار قابل نگهداری و آزمایش پذیر
  • سست جفت شده است
  • به طور مستقل قابل استقرار
  • بر اساس قابلیت های تجاری سازماندهی شده است
  • متعلق به یک تیم کوچک

API ها چیست؟
حال اجازه دهید به رابط برنامه نویسی برنامه، که به نام API نیز شناخته می شود، نگاهی بیندازیم. اجازه دهید همان نمونه های خدماتی را که برای توضیح Microservices در نظر گرفتم در نظر بگیرم.

  • برای احراز هویت و تأیید وجود حساب خود در سایت تجارت الکترونیک، نام کاربری و رمز عبور را به میکروسرویس خود ارسال می‌کنید و سپس شخصی از DB سؤال می‌کند تا بررسی کند که آیا اعتبارنامه وجود دارد یا خیر و پاسخ را بر اساس آن برمی‌گرداند.
  • وقتی محصولی را جستجو می‌کنید، فهرستی از گزینه‌ها را برمی‌گرداند که با نام محصول یا نوع محصولی که جستجو می‌کنید مطابقت دارد. برای واکشی داده ها بر اساس فاکتور جستجوی شما، شخصی فاکتور جستجو را از شما می گیرد و برای دریافت پاسخ مناسب از بانک اطلاعاتی درخواست می کند.
  • اگر می خواهید محصولی را بخرید، آن را به سبد خرید خود اضافه کرده و تسویه حساب کنید، جزئیات صورتحساب و تحویل خود را انتخاب کرده و پرداخت را انجام دهید. و سپس یک نامه فاکتور دریافت می کنید. شخصی موظف است محاسبه را انجام دهد، با سایت های پرداخت تماس گرفته و پاسخ را ارسال کند. در صورت پرداخت موفقیت آمیز، فاکتوری ایجاد می شود که تمام جزئیات محصول، کاربر واکشی شده و برای کاربر پست می شود.

بنابراین، اصطلاح "کسی" که همه کارها را انجام می دهد چیزی نیست جز API(ها). تصویر زیر برای نشان دادن API ها در سناریوی ما به روز شده است.

 

یکی از API های پرکاربرد که برای ایجاد ریزسرویس ها استفاده می شود، به نام RESTful (انتقال وضعیت نمایندگی) شناخته می شود. آنها انواع مختلفی دارند و با استفاده از افعال HTTP تعریف می شوند. می‌توانید از یکی از مقاله‌های من دیدن کنید که به شما در درک جزئیات API کمک می‌کند.

تفاوت های میکروسرویس ها و API ها
بنابراین اکنون که شما بچه ها Microservices و API ها را به صورت جداگانه درک کرده اید، من مطمئن هستم که شما باید تفاوت های بین این دو را نیز فرض کرده باشید. اینطور نیست؟  اجازه دهید یک بار دیگر تفاوت را بررسی کنیم.

  • میکروسرویس‌ها را می‌توان به‌عنوان «بلوک ساختمانی» برای تفکیک و تعریف سرویس‌های مختلف برای داشتن یک معماری تمیز و مقیاس‌پذیر در نظر گرفت، در حالی که API را می‌توان به‌عنوان «بلوک عملکردی» برای تعریف کاری در نظر گرفت که یک میکروسرویس مسئول انجام آن است.
  • API بخشی از Microservice است.
  • میکروسرویس ها می توانند یک یا چند API داشته باشند.

 

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

آیا شنیده اید که معماری Microservices مهارتی است که متخصصان فناوری اطلاعات باید داشته باشند؟ به شما امکان می دهد مهارت های موجود خود را ارتقا دهید تا یاد بگیرید چگونه Microservices را در پروژه های موجود و آینده خود پیاده سازی کنید. با در نظر گرفتن همین موضوع، ما در Dot Net Tricks یک برنامه آموزشی Microservices نامحدود را ارائه می‌کنیم که با اجرای پروژه‌ها در زمان واقعی هماهنگ است.

 

 

  • sahar saha sql
  • ۰
  • ۰

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

 

1. تفاوت های اصلی بین میکروسرویس ها و معماری یکپارچه چیست؟
A: معماری یکپارچه به طور کلی به طور محکم جفت شده است در حالی که معماری Microservices به طور سست جفت شده است. میکروسرویس ها به جای پروژه ها بر محصولات تمرکز دارند. برعکس در مورد Monolithic صادق است. راه اندازی سرویس در میکروسرویس سریعتر از معماری یکپارچه است. در معماری میکروسرویس، هر تغییری که در یک مدل داده واحد اجرا می شود، بر سایر ریزسرویس ها تأثیر نمی گذارد. اما در معماری یکپارچه، هر گونه تغییر در مدل داده بر کل پایگاه داده تأثیر می گذارد.

 

2. اجزای کلیدی Microservices را نام ببرید:
A: اجزای اصلی معماری Microservice عبارتند از کلاینت ها، فرمت های پیام رسانی، ارائه دهندگان هویت، دروازه API، مدیریت، پایگاه های داده، کشف سرویس و محتوای ثابت.

 

3. چالش های موجود در استقرار Microservice را توضیح دهید؟
پاسخ: استقرار میکروسرویس نیاز به سرمایه گذاری عظیم و راه اندازی زیرساخت عظیم دارد. مدیریت برنامه، پیکربندی و انتخاب کارکنان دشوار می شود. علاوه بر این، ارتباطات پیچیده است و چندین تهدید امنیتی وجود دارد. گاهی اوقات، آزمایش و اشکال زدایی سرویس ها دشوار می شود. یک سازمان برای مدیریت سربار عملیات به برنامه ریزی شدید نیاز دارد.

 

4. در چه مواردی باید معماری میکروسرویس را در نظر بگیرید؟
پاسخ: مواردی که باید معماری میکروسرویس را پیاده سازی کنید در زیر آمده است:

شما قبلاً از یک برنامه monolith استفاده می کنید و بعداً به سطحی می رسد که در مقیاس بندی مشکلاتی وجود دارد.
شما نمی توانید از ماژول ها یا مؤلفه ها یا خدمات بر روی پلتفرم های مختلف پروژه ها استفاده مجدد کنید.
اجرای ویژگی های جدید دشوار و مستعد خطا است.

 

5. کوپلینگ را تعریف کنید و میکروسرویس ها چگونه کوپل شده اند؟
ج: کوپلینگ میزان وابستگی متقابل بین ماژول های نرم افزار است. به زبان ساده، نشان دهنده نزدیکی متصل به دو ماژول یا روال است. میکروسرویس ها به طور آزاد با یکدیگر جفت می شوند.

 

6. کدام شرکت های محبوب معماری Microservice را پیاده سازی می کنند؟
پاسخ: اکثر وب سایت های بزرگ مقیاس مانند نتفلیکس، اوبر، آمازون، eBay، توییتر و اسپاتیفای معماری میکروسرویس ها را اتخاذ کرده اند.

 

7. 3 نوع تست برای Microservices را توضیح دهید؟
پاسخ: 3 نوع آزمایش به شرح زیر است:

تست های عمومی مانند تست عملکرد و واحد در تست سطح پایین انجام می شود. چنین آزمایشاتی کاملاً خودکار هستند.

در سطح متوسط، تست‌های تحقیقی مانند تست‌های قابلیت استفاده و تست استرس انجام می‌شوند.


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

 

8. چرا میکروسرویس ها از ظروف استفاده می کنند؟
پاسخ: کانتینرها ساده ترین و کارآمدترین روش برای رسیدگی به همه برنامه های مبتنی بر میکروسرویس هستند. علاوه بر این، به شما کمک می کند تا به طور جداگانه توسعه و پیاده سازی کنید. میکروسرویس می تواند از ظروف بدون تلاش اضافی استفاده کند.

 

9. API Gateway چیست؟
API Gateway یک کلاس استثنایی از ریزسرویس ها است که الزامات یک برنامه مشتری واحد را برآورده می کند. همچنین، منابع پشتیبان، یعنی میکروسرویس ها را با یک نقطه ورودی واحد خدمت می کند. از این رو، دیگر نگرانی مربوط به نظارت، امنیت و انعطاف پذیری وجود ندارد. API Gateway از یک کتابخانه متعادل کننده بار سمت کلاینت برای پخش بار در تمام نمونه ها بسته به مد دور استفاده می کند.

 

10. RESTful چیست؟
پاسخ: RESTful که به عنوان وب سرویس REST (انتقال وضعیت نمایندگی) نیز شناخته می شود، اساساً یک سبک معماری است که به سیستم های رایانه ای کمک می کند تا به طور یکپارچه در سراسر اینترنت ارتباط برقرار کنند. چنین سرویس‌های وب، درک و استقرار میکروسرویس‌ها را آسان‌تر می‌کنند.

 

11. تست پایان به پایان Microservices چیست؟
A: آزمایش End to End هر فرآیند را در گردش کار تأیید می کند تا مطمئن شود همه چیز بی عیب و نقص کار می کند. همچنین، اطمینان حاصل می کند که سیستم به صورت یکپارچه عمل می کند و بنابراین نیازهای تجاری را برآورده می کند. تست‌های مربوطه می‌توانند شکاف‌ها را در طول آزمایش یکپارچه‌سازی یا تست واحد در بر گیرند. همچنین، اطمینان حاصل می کند که پارامترهای شبکه به درستی پیکربندی شده اند و پیشرفت میکروسرویس ها را تسهیل می کند.

 

12. چکمه فنری چیست؟
پاسخ: هنگامی که یک پروژه جدید را شروع می کنید، اضافه کردن آخرین مسیر ساخت یا وابستگی های Maven اجباری است. بنابراین، شما باید تمام فرآیندها را از ابتدا انجام دهید. Spring Boot راه حلی است که به شما کمک می کند تا از تنظیمات کد جلوگیری کنید.

 

13. ابر بهار چیست؟
پاسخ: Spring Cloud یک چارچوب میکروسرویس کوتاه مدت است که برای ساخت سریع برنامه هایی که قادر به انجام مقادیر ثابتی از پردازش داده هستند مفید است.

 

14-مشکلاتی که Spring Cloud حل می کند چیست؟
پاسخ: ابر بهار می تواند با مشکلات زیر مقابله کند:

  • مسائل افزونگی که در سیستم های توزیع شده رخ می دهد
  • مشکلات شبکه، مشکلات پهنای باند، سربار تاخیر و مسائل امنیتی
  • تثبیت تخصیص بار در بین منابعی مانند CPU، پیوندهای شبکه، خوشه ها و غیره
  • مشکلات کشف سرویس برای تضمین ارتباط بی عیب و نقص در میان خدمات در یک خوشه
  • مشکلات عملکرد ناشی از سربار عملیاتی

 

15. محرک چیست؟
A: محرک در درجه اول برای ارائه اطلاعات عملیاتی در مورد پارامترهای مختلف یک برنامه کاربردی در حال اجرا استفاده می شود. این پارامترها معیارها، سلامت، dump، info، env و غیره هستند. برای تعامل روان، از دانه‌های JMX یا نقاط پایانی HTTP استفاده می‌کند.

 

16. نیاز به گزارش و داشبورد در میکروسرویس چیست؟
پاسخ: گزارش ها و داشبوردها اساساً برای نظارت و نگهداری میکروسرویس ها مفید هستند. ابزارهای متعددی برای دستیابی به این هدف در دسترس است.

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

 

17. مزایا و معایب معماری میکروسرویس چیست؟
A: مزایای معماری میکروسرویس:

  • انعطاف پذیری در استفاده از فناوری های مختلف
  • هر میکروسرویس روی یک قابلیت کار می کند
  • امنیت هر سرویس را تضمین می کند
  • چندین سرویس به طور همزمان توسعه یافته و مستقر می شوند
  • از انتشار مکرر نرم افزار پشتیبانی می کند

معایب معماری میکروسرویس:

  • برای پیکربندی و سایر وظایف به تلاش بیشتری از طرف کاربر نیاز دارد
  • عیب یابی مشکل است
  • تاخیر به دلیل تماس از راه دور را افزایش می دهد
  • حفظ امنیت معاملات مشکل است
  • ردیابی داده ها در مرزهای مختلف دشوار است

 

18. تراکنش توزیع شده چیست؟
پاسخ: تراکنش توزیع شده وضعیتی است که در آن یک رویداد واحد منجر به تبدیل دو یا چند منبع داده جدا شده می شود که نمی توانند به صورت اتمی تخصیص داده شوند.

 

19. OAuth چیست؟
پاسخ: OAuth فرم کامل پروتکل مجوز استاندارد باز است. این چارچوبی است که نشان می‌دهد چگونه سرویس‌ها و سرورهای متمایز می‌توانند با خیال راحت دسترسی معتبر به دارایی‌های خود را فعال کنند. برای همین، نیازی به به اشتراک گذاشتن اعتبارنامه مرتبط و مرتبط با ورود به سیستم وجود ندارد. امکان به اشتراک گذاری منابع ذخیره شده در یک وب سایت با وب سایت دیگر وجود دارد. نیازی به استفاده از اعتبار آنها نیست. OAuth همچنین دسترسی به منابع را از طرف مالک منبع فعال می کند. این کار را با اجازه دادن به برنامه های مشتری در ارائه دهندگان شخص ثالث مانند GitHub، Facebook و غیره انجام می دهد.

 

20. یکپارچه سازی پیوسته (CI) چیست؟
A: یکپارچه سازی مداوم (CI) روشی است که در آن ساخت و آزمایش کد به صورت خودکار هر زمان که یک عنصر تیم کنترل نسخه را تغییر می دهد، می باشد. در نتیجه، توسعه دهندگان را به اشتراک گذاری کد و همچنین تست های واحد تشویق می کند. همین کار پس از ترکیب تغییرات در یک مخزن کنترل نسخه مشترک و پس از تکمیل هر کار کوچک انجام می شود.

 

21. Eureka در رابطه با Microservices چیست؟
پاسخ: Eureka به عنوان سرور کشف سرویس نتفلیکس معروف است. این از Spring Cloud استفاده می کند و به طور کلی به عنوان راه اندازی پرکاربرد برای راه اندازی کشف سرویس شناخته می شود. از آنجایی که روند توسعه اپلیکیشن چندان سنگین نیست، در بین توسعه دهندگان مشهور شده است.

 

22. قرارداد مصرف کننده محور را توضیح دهید:
پاسخ: CDC ها (قرارداد مبتنی بر مصرف کننده) یک نمونه اولیه برای توسعه خدمات است و توسط سیستم های خارجی استفاده می شود. وقتی روی میکروسرویس کار می‌کنید، یک ارائه‌دهنده خاص وجود دارد که آن را می‌سازد و مصرف‌کنندگان منفرد یا چند نفره از میکروسرویس استفاده می‌کنند. به طور معمول، ارائه دهندگان رابط ها را در یک سند XML بیان می کنند. با این حال، در CDCها، هر مصرف‌کننده خدمات، رابط مورد انتظار از ارائه‌دهنده را ارتباط می‌دهد.

  • sahar saha sql
  • ۰
  • ۰

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

 

چرا میکروسرویس ها را یاد بگیریم؟

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

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

 

اصول میکروسرویس ها

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

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

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

پنهان کردن جزئیات پیاده سازی:
میکروسرویس ها
باید به گونه ای طراحی شوند که جزئیات داخلی را آشکار نکنند. نه اجرای فنی و نه قوانین تجاری که آن را هدایت می کند. این امر کوپلینگ را کاهش می دهد و به انجام تغییرات و بهبودها بدون تأثیر بر معماری کلی کمک می کند.

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

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

جداسازی شکست: تأثیر یک خرابی در معماری میکروسرویس در مقایسه با نوع یکپارچه کمتر است زیرا فقط بر آن سرویس خاص و ارتباط آن تأثیر می گذارد در حالی که سایر سرویس ها می توانند به کار خود ادامه دهند. سرویس‌های مرتبط باید چنین سناریوهایی را در زمانی که وابسته پاسخگو یا کند است، مدیریت کنند.

برنامه‌های بزرگتر یا سازمانی ممکن است عمدتاً تحت تأثیر شکست یک ماژول قرار نگیرند و به همین دلیل، سایر بخش‌های برنامه به طور همزمان در حال اجرا هستند که در اکثر مواقع دسترسی این ویژگی را برای مشتریان افزایش می‌دهد.

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

 

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

میکروسرویس‌ها از نظر فنی از SOA تکامل یافته‌اند، جایی که این ویژگی‌ها بیشتر به سرویس‌های سطح وظایف تقسیم می‌شوند و معماری ریزدانه آن را ایجاد می‌کنند. در حالی که معماری سرویس‌گرا از معماری متمرکزی پیروی می‌کند که در آن هر جزء توسط یک میان‌افزار مرکزی کنترل می‌شود، در میکروسرویس‌ها یک سیستم حاکم غیرمتمرکز است که اجزای آن مستقیماً با یکدیگر صحبت می‌کنند و می‌توانند به زبان‌های برنامه‌نویسی مختلف نوشته شوند و بدون کمک هیچ واسطه‌ای با یکدیگر ارتباط برقرار کنند. با کمک REST API انجام می شود.

تفاوت بین میکروسرویس ها و SOA می تواند کمی مبهم باشد در حالی که جنبه های فنی هر دوی آنها را می توان به نوعی بین میکروسرویس ها و معماری SOA ترسیم کرد و به احتمال زیاد در مورد نقش "اتوبوس خدمات سازمانی"، برای تعریف تفاوت، بسیار آسان است که تفاوت را به عنوان یکی از حوزه ها در نظر بگیریم. معماری SOA یکی از تلاش‌های گسترده برای استاندارد کردن روش کار تمام وب سرویس‌ها در یک سازمان برای گفتگو و ادغام با یکدیگر بود، و وقتی صحبت از معماری میکروسرویس می‌شود، نوعی پلتفرم مخصوص برنامه‌ها است.

 

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

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

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

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

  • کابل Comcast
  • اوبر
  • نتفلیکس
  • آمازون
  • eBay
  • ابر صدا
  • کارما
  • مایکروسافت
  • گروپون
  • هایلو
  • طلاکاری
  • زالاندو
  • باشگاه وام دهی
  • AutoScout24

 

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

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

بدون به خطر انداختن یکپارچگی یک برنامه، به طور مستقل توسعه، استقرار، گسترش مجدد، نسخه و مقیاس کردن خدمات مؤلفه در چند ثانیه

ایزوله‌سازی بهتر خطا باعث می‌شود سایر سرویس‌ها کار کنند، حتی اگر سرویس‌ها از کار افتاده باشند.

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

 

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

  • پیچیدگی اضافی برای اجرای یک مکانیسم ارتباط بین فرآیندی بین خدمات.
  • نوشتن تست‌های خودکار شامل چندین سرویس چالش برانگیز است و ایجاد محیط‌های آزمایشی سازگار می‌تواند دشوار باشد.
  • به سطح بالایی از اتوماسیون برای مدیریت چندین نمونه از انواع مختلف خدمات در تولید نیاز دارد.
  • همه باید ثبات نهایی را مدیریت کنند زیرا حفظ ثبات رشته بسیار دشوار می شود.
  • مدیریت چندین پایگاه داده و تراکنش های آنها دشوار است.
  • تماس های بین فرآیندی کند هستند.
  • اشکال زدایی دشوار خواهد شد.
  • پیچیدگی در DevOps
  • هزینه نظارت بر تولید بیشتر است.
  • سربار اسناد رسمی
  • عدم حاکمیت.

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

 

  • sahar saha sql
  • ۰
  • ۰

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

میکروسرویس ها چگونه کار می کنند؟
برای درک مزایای معماری میکروسرویس های امروزی، بسیار مهم است که بفهمیم همه چیز از کجا شروع شد.

کاربردهای یکپارچه

در ابتدا هر برنامه، که بر روی یک سرور قرار داشت، شامل سه لایه بود:

  • ارائه
  • کاربرد/منطق کسب و کار
  • پایگاه داده

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

در این معماری یکپارچه، کاربران با لایه ارائه تعامل داشتند، که با لایه منطق تجاری و لایه پایگاه داده صحبت می‌کرد و اطلاعات پس از پشته به کاربر نهایی منتقل می‌شد. اگرچه این روشی کارآمد برای سازماندهی یک برنامه بود، اما بسیاری از نقاط شکست را ایجاد کرد، که در صورت وجود نقص سخت افزاری یا اشکال کد، می تواند منجر به قطع طولانی مدت شود. متأسفانه «خوددرمانی» در این ساختار وجود نداشت. اگر بخشی از سیستم آسیب دیده باشد، باید با مداخله انسانی در قالب تعمیر سخت افزاری یا نرم افزاری تعمیر شود.

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

معماری سرویس گرا (SOA)

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

SOA همچنین با ظهور ماشین مجازی (VM) مصادف شد که منابع فیزیکی سرور را کارآمدتر کرد. سرویس‌ها را می‌توان خیلی سریع‌تر بر روی ماشین‌های مجازی کوچک‌تر نسبت به برنامه‌های یکپارچه قبلی روی سرورهای فلزی خالی مستقر کرد. با این ترکیب از فناوری‌ها، راه‌حل‌های با قابلیت دسترسی بالا (HA) بهتر، هم در معماری خدمات و هم با فناوری‌های زیرساخت مرتبط توسعه داده شد.

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

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

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

معماری‌های میکروسرویس‌ها همراه با کانتینرهای Docker - یک ساختار بسته‌بندی و استقرار - مورد استفاده قرار گرفته‌اند. تصاویر VM سال‌هاست که به عنوان مکانیزم انتخابی استفاده می‌شوند. اما کانتینرها حتی کارآمدتر از ماشین‌های مجازی هستند و به کد (و کتابخانه‌های کد مورد نیاز) اجازه می‌دهند در هر سیستم لینوکس (یا هر سیستم‌عاملی که از کانتینرهای Docker پشتیبانی می‌کند) مستقر شوند. کانتینرها بردار استقرار کاملی برای میکروسرویس ها هستند. آنها را می توان در عرض چند ثانیه راه اندازی کرد، بنابراین می توان آنها را به سرعت پس از شکست یا مهاجرت مجدداً مستقر کرد، و می توانند به سرعت مقیاس شوند تا خواسته ها را برآورده کنند. از آنجایی که کانتینرها بومی لینوکس هستند، سخت افزار کالا را می توان در مزارع وسیع میکروسرویس ها در هر مرکز داده، ابر خصوصی یا چند ابری ترکیبی اعمال کرد.

میکروسرویس‌ها تقریباً از ابتدا با معماری‌های بومی ابری در هم تنیده شده‌اند، بنابراین از بسیاری جهات از یکدیگر قابل تشخیص نیستند. از آنجایی که میکروسرویس ها و کانتینرها بسیار انتزاعی هستند، می توانند روی هر سیستم عامل سازگار (معمولا لینوکس) اجرا شوند. این سیستم عامل می تواند در هر جایی وجود داشته باشد: در فضای ابری عمومی، در محل، در یک هایپروایزر مجازی یا حتی روی فلز خالی. همانطور که توسعه بیشتر در فضای ابری انجام می شود، معماری ها و شیوه های بومی ابری دوباره به مراکز داده داخلی مهاجرت کرده اند. بسیاری از سازمان‌ها در حال ساختن محیط‌های محلی خود هستند تا ویژگی‌های اساسی یکسانی را با ابر به اشتراک بگذارند، و یک روش توسعه واحد را در هر مکان یا به‌صورت بومی ابری در هر مکانی ممکن می‌سازند. این رویکرد بومی ابری با پذیرش معماری‌های میکروسرویس و فناوری‌های کانتینری ممکن و ضروری می‌شود.

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

  • می‌توانید کد را در هر زمان با استفاده از یکپارچه‌سازی/تحویل پیوسته (CI/CD) به‌روزرسانی کنید. با CI/CD، می توانید مقدار کمی کد را به جای بسته های غول پیکر منتشر کنید.
  • همانطور که تغییرات در قسمت پشتی رخ می دهد، کاربر آنها را مشاهده نمی کند.
  • تیم های توسعه می توانند به صورت موازی کار کنند. تیم های کوچک می توانند سریعتر از تیم های بزرگ حرکت کنند.
  • اجزای سرویس برنامه ایزوله شده اند. اگر یکی از کار بیفتد، بقیه به کار خود ادامه می‌دهند، که امکان تنزل دلپذیر را فراهم می‌کند.
  • تنها زمانی که انسان باید به یک هشدار واکنش نشان دهد زمانی است که یک اشکال سیستم وجود دارد.
  • اگر یک تابع back-end (مانند فراخوانی پایگاه داده) از کار بیفتد، چیز مفیدی را برمی گرداند. میکروسرویس ها برای رسیدگی منطقی به خطاها ساخته شده اند.
  • از آنجایی که اجزای معماری میکروسرویس ها دانه ای هستند، بهبود و نگهداری کد آسان تر است.
  • توسعه‌دهندگان و گروه‌ها می‌توانند برای اطمینان از APIهای مشترک بین سرویس‌ها همکاری کنند.
  • میکروسرویس ها بهترین شیوه های توسعه کد مدولار را گسترش می دهند.

ظروف

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

تنظیم و ارکستراسیون

ابزار ارکستراسیون کانتینر تقریباً به اندازه خود کانتینرها وجود داشته است. هزاران ریزسرویس برای تشکیل سرویس‌ها و برنامه‌های کاربردی با هم کار می‌کنند و مدیریت دستی آنها حتی با وجود ارتشی از مدیران تقریباً غیرممکن است. با ثابت ماندن بودجه بیشتر کارکنان فناوری اطلاعات، افزایش اتوماسیون و اتخاذ شیوه‌های DevOps، نیاز به ابزارهای هماهنگ‌سازی خوب بسیار مهم است.

اولین نسخه Kubernetes (K8s) در سال 2015، اندکی پس از ظهور کانتینرهای Docker منتشر شد و به سرعت به ابزار ارکستراسیون غالب در چشم انداز کانتینر تبدیل شد. Kubernetes به توسعه دهندگان اجازه می دهد یک برنامه کاربردی یا میکروسرویس مبتنی بر کانتینر را در یک کتابخانه مشترک ثبت کنند و یک فایل مانیفست را برای کنترلر Kubernetes ارائه دهند. سپس Kubernetes با استفاده از تصویر کانتینر در رجیستری مشترک، برنامه را با توجه به مشخصات فایل مانیفست در گره‌های کارگر خود مستقر می‌کند.

"وضعیت مطلوب"، یک مفهوم کلیدی در Kubernetes، به عملکرد خود ترمیم و ارتقاء خودکار اجازه می دهد تا در راه حل یکپارچه باشد. به عنوان مثال، فرض کنید حالت مورد نظر شما این است که 10 نمونه از یک میکروسرویس خاص (در یک کانتینر پاد) در نسخه 1.1 همیشه باید در حال اجرا باشد. Kubernetes استقرار را برای اطمینان از وضعیت مطلوب نظارت می کند. اگر یکی از کانتینرها از کار بیفتد و فقط 9 کانتینر در حال اجرا باشد، Kubernetes یک کانتینر دیگر را مستقر کرده و آن را راه اندازی می کند تا به حالت دلخواه 10 نمونه در نسخه 1.1 برسد. اگر مانیفست برای مشخص کردن نسخه 1.2 تغییر یابد، Kubernetes وضعیت مورد نظر را به‌عنوان ناموفق می‌بیند و یک ارتقای متحرک از هر 10 نمونه را به نسخه 1.2 انجام می‌دهد (با فرض اینکه نسخه 1.2 یک تصویر موجود در رجیستری کانتینر باشد).

به راحتی می توان فهمید که چرا Kubernetes به سرعت رشد کرده و بر حوزه هماهنگی کانتینر تسلط یافته است، و چرا هر ارائه دهنده بزرگ ابر عمومی (Amazon Web Services، Microsoft Azure، Google Cloud Platform) نسخه مخصوص به خود Kubernetes را دارد.

  • sahar saha sql
  • ۰
  • ۰

زبان برنامه نویسی پایتون چیست؟ و چگونه آن را نصب کنیم؟
پایتون (python) یک زبان برنامه نویسی محبوب است که توسط Guido van Rossum در سال 1991 ایجاد و منتشر شده است. زبان برنامه نویسی پایتون کاربردهای زیادی دارد که از جمله مهم ترین آن می توان به موارد زیر اشاره کرد:

توسعه وب (سمت سرور)
توسعه نرم افزار
ریاضیات
هوش مصنوعی
یادگیری ماشین
پردازش تصویر ، علم داده
تست نفوذ
بازی سازی
و …
پایتون چه کاری می تواند انجام دهد؟
پایتون را می توان در سرور برای ایجاد برنامه های وب استفاده کرد.
با پایتون می توان به پایگاه داده ها متصل شد و آنها را مدیریت کرد.
از پایتون می توان برای مدیریت داده های بزرگ و انجام ریاضیات پیچیده استفاده کرد.
پایتون را می توان برای نمونه سازی سریع یا برای تولید نرم افزار استفاده کرد.
از پایتون میتوان در برنامه نویسی شبکه استفاده کرد.
چرا پایتون؟
پایتون روی سیستم عامل های مختلف (ویندوز ، مک ، لینوکس ، Raspberry Pi و غیره) کار می کند.
پایتون نحوی ساده و شبیه به زبان انگلیسی دارد.
پایتون دارای نحوی است که به توسعه دهندگان امکان می دهد تا برنامه هایی با کدنویسی کم تر نسبت به دیگر زبان های برنامه نویسی بنویسند.
پایتون روی یک سیستم مترجم کار می کند، به این معنی که به محض نوشتن کد می توان آن را اجرا کرد. این بدان معنی است که نمونه سازی بسیار سریع می تواند انجام شود.
با پایتون می توان به راحتی برنامه های شی گرا نوشت.
خوب است بدانید
جدیدترین نسخه اصلی Python، پایتون 3 است که در این آموزش از آن استفاده خواهیم کرد. با این حال ، پایتون 2 ، اگرچه فقط به روز رسانی های امنیتی را دریافت می کند، اما هنوز هم کاملاً محبوب است.
 برای کد نویسی پایتون میتوان از ویرایشگر متن استفاده کرد. همچنین میتوانیم از محیط های برنامه نویسی Thonny, Pycharm, Netbeans یا Eclipse نیز استفاده کنیم که کدنویسی را برای ما راحت تر و قابل فهم تر می کنند.
سینتکس Python در مقایسه با سایر زبان های برنامه نویسی
پایتون برای خوانایی بهتر طراحی شده و شباهت هایی با زبان انگلیسی دارد.
پایتون برخلاف سایر زبانهای برنامه نویسی که غالباً از سمیکالن یا پرانتز استفاده می کنند، از خطوط جدید برای تکمیل یک فرمان استفاده می کند.
و …
نصب python و بهره برداری از آن
بسیاری از رایانه های شخصی پایتون را به صورت نصب پیش فرض دارند. برای بررسی اینکه آیا پایتون روی رایانه شما نصب است یا خیر؟ می توانید آن را در رایانه خود سرچ کنید یا می توانید در محیط خط فرمان ویندوز (cmd.exe) دستور زیر را اجرا کنید:

[code]C:\Users\Your Name>python –version[/code]
برای بررسی اینکه آیا پایتون بر روی سیستم عامل لینوکس یا مک نصب شده است یا خیر؟ میتوانید محیط ترمینال را باز کنید و دستور زیر را تایپ کنید:

python --version
در صورتی که پایتون بر روی سیستم شما نصب نبود، می توانید آن را به صورت رایگان از وب سایت python دریافت کنید.

نوشتن اولین برنامه در پایتون (hello world)
پایتون یک زبان برنامه نویسی تفسیر شده است، به این معنی که به عنوان یک توسعه دهنده، کدنویسی های پایتون (.py) خود را در یک ویرایشگر متن می نویسید و سپس آن پرونده ها را در مفسر پایتون قرار می دهید تا اجرا شود.

روش اجرای یک فایل پایتون مانند خط فرمان زیر است:

C:\Users\ Your Name >python helloworld.py
عنوان “helloworld.py” نام پرونده پایتون شماست.

بیایید اولین پرونده Python خود را با نام helloworld.py بنویسیم، که می تواند در هر ویرایشگر متن انجام شود.

print("Hello, World!")
به همین سادگی برنامه سلام دنیا را نوشتیم!! حال پرونده خود را ذخیره کنید. خط فرمان خود را باز کنید، به پوشه ای که پرونده خود را ذخیره کرده اید بروید و مانند دستور زیر اجرا کنید:

C:\Users\ Your Name >python helloworld.py
خروجی دستور بالا به صورت زیر می باشد:
Hello, World!
تبریک، شما اولین برنامه پایتون خود را نوشتید و اجرا کردید.

خط فرمان پایتون
برای تست یک کد کوتاه در پایتون، گاهی سریع ترین و آسانترین راه، نوشتن کد در فایل نیست. زیرا پایتون می تواند کدها را در خط فرمان نیز اجرا کند. موارد زیر را در خط فرمان Windows ، Mac یا Linux تایپ کنید:

C:\Users\ Your Name >python
زبان برنامه نویسی پایتون چیست؟
نوشتن برنامه hello world در خط فرمان
C:\Users\ Your Name >python
Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:04:45) [MSC v.1900 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> print("Hello, World!")
که Hello, World را برای ما نشان خواهد داد.

C:\Users\ Your Name >python
Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:04:45) [MSC v.1900 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> print("Hello, World!")
Hello, World!
بعد از پایان کد نویسی در خط فرمان، میتوانید دستور زیر را برای خروج از آن به کار ببرید.

exit()
 

  • sahar saha sql
  • ۰
  • ۰

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

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

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

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

معماری میکروسرویس برای چیست؟
به طور معمول، میکروسرویس ها برای سرعت بخشیدن به توسعه برنامه ها استفاده می شوند. معماری‌های میکروسرویس‌هایی که با استفاده از جاوا ساخته می‌شوند، رایج هستند، به‌ویژه معماری‌های Spring Boot. همچنین مقایسه میکروسرویس ها با معماری سرویس گرا نیز رایج است. هر دو هدف یکسانی دارند، یعنی تجزیه برنامه های یکپارچه به اجزای کوچکتر، اما رویکردهای متفاوتی دارند. در اینجا چند نمونه معماری میکروسرویس آورده شده است:
  مهاجرت وب سایت
یک وب سایت پیچیده که بر روی یک پلت فرم یکپارچه میزبانی می شود، می تواند به یک پلت فرم میکروسرویس مبتنی بر ابر و کانتینر منتقل شود.

  محتوای رسانه
با استفاده از معماری میکروسرویس‌ها، تصاویر و دارایی‌های ویدئویی را می‌توان در یک سیستم ذخیره‌سازی اشیاء مقیاس‌پذیر ذخیره کرد و مستقیماً به وب یا موبایل ارائه کرد.

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

  پردازش داده ها
یک پلت فرم میکروسرویس می تواند پشتیبانی ابری را برای خدمات پردازش داده های مدولار موجود گسترش دهد.

محصولات و خدمات مرتبط
وقتی از Google Cloud استفاده می‌کنید، می‌توانید به راحتی میکروسرویس‌ها را با استفاده از سرویس کانتینر مدیریت‌شده، Google Kubernetes Engine، یا پیشنهاد بدون سرور کاملاً مدیریت‌شده، Cloud Run، مستقر کنید.

بسته به مورد استفاده، Cloud SQL و سایر محصولات و خدمات Google Cloud را می توان به راحتی برای پشتیبانی از معماری میکروسرویس ها ادغام کرد.


موتور Google Kubernetes
سرویس Kubernetes ایمن و مدیریت شده با مقیاس خودکار چهار طرفه و پشتیبانی از چند خوشه.

Cloud Run
پلت فرم محاسباتی کاملاً مدیریت شده برای استقرار و مقیاس بندی برنامه های کاربردی کانتینری به سرعت و ایمن.

 

ابر SQL
سرویس پایگاه داده رابطه ای کاملاً مدیریت شده برای MySQL، PostgreSQL و SQL Server.

آنتوس
برنامه‌های کاربردی موجود را مدرن کنید و برنامه‌های بومی ابری را در هر مکانی بسازید تا چابکی و کاهش هزینه را ارتقا دهید.


توسعه اپلیکیشن بومی ابری
با Google Cloud برنامه‌های بومی ابری بسازید، اجرا و اجرا کنید. از رویکردهای مدرن مانند بدون سرور، میکروسرویس ها و کانتینرها استقبال کنید. کدنویسی، ساخت، استقرار و مدیریت سریع بدون به خطر انداختن امنیت یا کیفیت.

باز کردن قفل برنامه های قدیمی با استفاده از API
عمر برنامه های قدیمی را افزایش دهید، خدمات مدرن بسازید، و به سرعت تجربیات جدیدی را با پلتفرم مدیریت API Google به عنوان یک لایه انتزاعی در بالای سرویس های موجود ارائه دهید.

  • sahar saha sql
  • ۰
  • ۰

معماری میکروسرویس یک روش متمایز برای توسعه سیستم‌های نرم‌افزاری است که سعی می‌کند بر ساخت ماژول‌های تک عملکردی با رابط‌ها و عملیات‌های کاملاً تعریف شده تمرکز کند.

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

میکروسرویس‌ها مزایای زیادی برای تیم‌های Agile و DevOps دارند - همانطور که مارتین فاولر اشاره می‌کند، Netflix، eBay، Amazon، Twitter، PayPal و سایر ستاره‌های فناوری همگی از معماری یکپارچه به معماری میکروسرویس تکامل یافته‌اند.

تمایز

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

ماژولار بودن کلید است

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

در حالی که این کارها را مقیاس پذیرتر و انعطاف پذیرتر می کند، نیاز به تغییری پویا دارد. میکروسرویس ها اغلب از طریق API ها به هم متصل می شوند و می توانند از بسیاری از ابزارها و راه حل هایی استفاده کنند که در اکوسیستم RESTful و وب سرویس رشد کرده اند. آزمایش این APIها اکنون غیرقابل مذاکره برای اطمینان از استقرار نرم افزار با کیفیت است. با اعتبارسنجی مسیرهای ارتباطی و جریان داده ها در سراسر استقرار میکروسرویس شما کار می کند.

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

استقرار ساده تر

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

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

خدمات کوچکی مانند سیستم های پرداخت یا ورود به سیستم را در سراسر کسب و کار به اشتراک بگذارید.
جداسازی سریع تر نقص

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

از قفل شدن در فن آوری ها یا زبان ها اجتناب کنید - تغییر در پرواز با حداقل خطر.

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

ببینید چگونه SwaggerHub به تیم ها کمک می کند تا با Microservices شروع کنند
شش ویژگی میکروسرویس ها

1.اجزای چندگانه

می توان آن را به چندین سرویس جزء تقسیم کرد. چرا؟ به طوری که هر سرویس را می توان به طور مستقل بدون به خطر انداختن یکپارچگی یک برنامه مستقر، بهینه سازی و باز استقرار کرد. به این ترتیب، ممکن است به جای استقرار مجدد کل برنامه ها، تنها نیاز به تغییر یک سرویس مجزا داشته باشید. اما این رویکرد دارای جنبه‌های منفی است، از جمله تماس‌های گران قیمت از راه دور (به‌جای تماس‌های در حین فرآیند)، APIهای راه دور با دانه درشت‌تر، و پیچیدگی بیشتر هنگام توزیع مجدد مسئولیت‌ها بین مؤلفه‌ها.

2.ساخته شده برای تجارت

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

3.مسیریابی ساده

میکروسرویس‌ها تا حدودی مانند سیستم یونیکس کلاسیک عمل می‌کنند: درخواست‌ها را دریافت می‌کنند، آنها را پردازش می‌کنند و بر اساس آن پاسخ تولید می‌کنند. این برخلاف بسیاری از محصولات دیگر مانند ESB (اتوبوس های خدمات سازمانی) است. اینجاست که از سیستم‌های با فناوری پیشرفته برای مسیریابی پیام، طراحی رقص و اعمال قوانین تجاری استفاده می‌شود. می توان گفت که میکروسرویس ها دارای نقاط پایانی هوشمندی هستند که اطلاعات را پردازش می کنند و منطق را اعمال می کنند، و "لوله های گنگ" که اطلاعات از طریق آنها جریان می یابد.

4.غیر متمرکز

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

5.مقاوم در برابر شکست

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

6.تکاملی

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

نمونه هایی از میکروسرویس ها
نتفلیکس معماری گسترده ای دارد که از یکپارچه به SOA تکامل یافته است. هر روز بیش از یک میلیارد تماس، از بیش از 800 نوع دستگاه مختلف، به API پخش ویدئو دریافت می کند. سپس هر تماس API حدود پنج تماس اضافی را به سرویس باطن درخواست می‌کند.

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

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

طرفداران

  • به توسعه دهندگان این آزادی را می دهد که به طور مستقل خدمات را توسعه و استقرار دهند
  • می تواند توسط یک تیم نسبتا کوچک توسعه یابد
  • کد برای خدمات مختلف می تواند به زبان های مختلف نوشته شود (اگرچه بسیاری از پزشکان آن را منع می کنند)
  • ادغام آسان و استقرار خودکار (با استفاده از ابزارهای یکپارچه سازی پیوسته منبع باز مانند جنکینز، هادسون و غیره)
  • درک و تغییر برای توسعه دهندگان آسان است، بنابراین می تواند به یک عضو جدید تیم کمک کند تا به سرعت سازنده شود
  • توسعه دهندگان می توانند از آخرین فناوری ها استفاده کنند
  • کد بر اساس قابلیت های تجاری سازماندهی شده است
  • ظرف وب را سریعتر راه اندازی می کند، بنابراین استقرار نیز سریعتر است
  • هنگامی که تغییر در بخش خاصی از برنامه مورد نیاز است، فقط سرویس مربوطه را می توان تغییر داد و مجدداً مستقر کرد - بدون نیاز به تغییر و استقرار مجدد کل برنامه
  • ایزوله‌سازی بهتر خطا: اگر یک میکروسرویس از کار بیفتد، دیگری به کار خود ادامه می‌دهد (اگرچه یک ناحیه مشکل‌ساز از یک برنامه مونولیت می‌تواند کل سیستم را به خطر بیندازد)
  • مقیاس بندی و ادغام با خدمات شخص ثالث آسان است
  • عدم تعهد طولانی مدت به پشته فناوری

منفی

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

فشار دادن سوزن به جلو

میکروسرویس ها یک گلوله نقره ای نیستند و با اجرای آنها ارتباطات، کار تیمی و سایر مشکلاتی را که ممکن است ضمنی بوده باشند اما اکنون به اجبار آشکار شده اند را آشکار می کنید. اما چند راه برای کاهش این افت وجود دارد:

  • استفاده از API Gateways در Microservices می تواند زمان و تلاش ساخت و کیفیت کیفیت را تا حد زیادی کاهش دهد
  • اجرای آزمایش قرارداد با Pactflow یک راه اثبات شده برای کاهش اتکا به تست پیچیده E2E است.

یکی از مسائل رایج شامل به اشتراک گذاری منطق طرحواره/ اعتبارسنجی در بین سرویس ها است. آنچه A برای در نظر گرفتن برخی داده ها معتبر نیاز دارد، همیشه در مورد B صدق نمی کند، اگر B نیازهای متفاوتی داشته باشد. بهترین توصیه اعمال نسخه سازی و توزیع طرحواره در کتابخانه های مشترک است.

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

معماری میکروسرویس چگونه کار می کند
1) یکپارچه ها و قانون کانوی

قانون کانوی: "سازمان هایی که سیستم ها را طراحی می کنند ... مجبور به تولید طرح هایی هستند که کپی هایی از ساختارهای ارتباطی این سازمان ها هستند."

تصور کنید شرکت X با دو تیم: پشتیبانی و حسابداری. به طور غریزی، ما فعالیت های پرخطر را جدا می کنیم. تصمیم گیری در مورد مسئولیت هایی مانند بازپرداخت مشتری دشوار است. در نظر بگیرید که چگونه می‌توانیم به سؤالاتی مانند «آیا تیم حسابداری افراد کافی برای پردازش بازپرداخت و اعتبار مشتری دارد؟» پاسخ دهیم؟ یا، "آیا بهتر است از افراد پشتیبان ما اعتبار استفاده کنیم و با مشتریان ناامید برخورد کنیم؟"

پاسخ‌ها با خط‌مشی جدید شرکت X حل می‌شوند: پشتیبانی می‌تواند اعتباری اعمال کند، اما برای پردازش بازپرداخت به حسابداری نیاز است. نقش ها و مسئولیت ها در این سیستم به هم پیوسته با موفقیت تقسیم شده است، در حالی که رضایت مشتری را به دست آورده و خطرات را به حداقل می رساند.

به همین ترتیب، در ابتدای هر طراحی نرم‌افزاری، شرکت‌ها معمولاً یک تیم جمع می‌کنند و یک پروژه ایجاد می‌کنند. با گذشت زمان، تیم رشد می‌کند و پروژه‌های متعددی در یک پایگاه کد تکمیل می‌شوند.

این اغلب منجر به پروژه‌های رقیب می‌شود: برای دو نفر کار کردن در اهداف متقابل در یک حوزه کد بدون ایجاد معاوضه دشوار است. و افزودن افراد بیشتر به معادله فقط مشکل را بدتر می کند. همانطور که فرد بروکس می گوید، 9 زن نمی توانند در یک ماه بچه دار شوند.

علاوه بر این، در شرکت X (یا هر تیم توسعه‌دهنده)، اولویت‌ها اغلب تغییر می‌کنند که منجر به مشکلات ارتباطی می‌شود. مورد با بالاترین اولویت ماه گذشته ممکن است باعث شده باشد که تیم به شدت برای ارسال کد فشار بیاورد - اما اکنون یک کاربر مشکلی را گزارش می‌کند و ما دیگر زمانی برای حل آن به دلیل اولویت این ماه نداریم. این قانع‌کننده‌ترین دلیل برای اتخاذ رویکردهای سرویس‌محور (SOA) از جمله انواع میکروسرویس‌ها است. SOA ها اصطکاک های موجود بین تغییرات مدیریت، دانش دامنه و اولویت های تجاری را تشخیص می دهند و به تیم های توسعه دهنده اجازه می دهند تا به آنها رسیدگی کنند. البته، این به خودی خود یک معامله است - این نیاز به هماهنگی دارد. اما به شما این امکان را می دهد که اصطکاک را متمرکز کنید و کارایی را معرفی کنید، برخلاف اینکه از تعداد زیادی ناکارآمدی کوچک رنج می برید.

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

با این حال، بدون فکر دقیق، این می تواند منجر به ایجاد تصادفی دو تکه کوچکتر اما در حال رشد شود که اکنون با نوعی پل مرتبط هستند. پیامد این امر می تواند پنهان کردن کدهای مهم در سمت اشتباه یک مانع باشد: تیم A به خود زحمت نمی دهد از آن مراقبت کند، در حالی که تیم B به آن نیاز دارد، بنابراین آنها آن را دوباره اختراع می کنند.

2) میکرو سرویس ها: اجتناب از یکپارچه ها
ما برخی از مشکلات را نام برده ایم که معمولاً ظاهر می شوند. اکنون بیایید شروع به بررسی برخی از راه حل ها کنیم.

چگونه می‌توانید خدمات نسبتاً مستقل و در عین حال یکپارچه را بدون ایجاد یکپارچه‌های تصادفی اجرا کنید؟

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

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


3) اشیاء خدمات و داده های شناسایی
پس چگونه از یکپارچه به خدمات برویم؟ یک راه از طریق اشیاء سرویس است. بدون حذف کد از برنامه خود، به طور موثر شروع به ساختاردهی آن می کنید که انگار کاملاً خارجی است.

برای انجام این کار، ابتدا باید اقداماتی را که می‌توان انجام داد و داده‌هایی که به‌عنوان ورودی و خروجی آن اقدامات وجود دارد، متمایز کرد. کد زیر را با مفهوم انجام کاری مفید و وضعیت آن کار در نظر بگیرید.

# A class to model a core transaction and execute it
  
          class Job
            def initialize
              @status = 'Queued'
            end
  
            def do_useful_work
              ....
              @status = 'Finished'
            end
  
            def finished?
              return @status == 'Finished'
            end
  
            def ready?
              return @status == 'Queued'
            end
          end

 

برای اینکه این کار شبیه یک میکروسرویس به نظر برسد، چه کاری انجام می‌دهید؟

  # Service to do useful work and modify a status
  
        class JobService
          def do_useful_work(job_status)
            ....
  
            job_status.finish!
  
            return job_status
          end
        end
  
        # A model of our Job's status
  
        class JobStatus
          def initialize
            @status = 'Queued'
          end
  
          def finished?
            return @status == 'Finished'
          end
  
          def ready?
            return @status == 'Queued'
          end
  
          def finish!
            @status = 'Finished'
          end
       

 

اکنون ما دو کلاس مجزا را متمایز کرده ایم: یکی که داده ها را مدل می کند و دیگری که عملیات را انجام می دهد. نکته مهم، کلاس JobService ما وضعیت کمی دارد یا اصلاً وجود ندارد - می‌توانید اقدامات مشابه را بارها و بارها فراخوانی کنید، فقط داده‌ها را تغییر دهید و انتظار داشته باشید که نتایج ثابتی دریافت کنید.

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

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


4) هماهنگی و لوله های "خنگ".
حال بیایید نگاهی دقیق‌تر به این بیندازیم که چه چیزی چیزی را در مقایسه با SOA سنتی یک میکروسرویس می‌کند.

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

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

بیایید به سیستم شغل و فاکتور شرکت X برگردیم. هر کدام یک تراکنش را کنترل می کنند و می توانند با هم یا جداگانه استفاده شوند: فاکتورها را می توان برای مشاغل ایجاد کرد، مشاغل را می توان بدون فاکتور ایجاد کرد و فاکتورها را می توان بدون کار ایجاد کرد.

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

فرض کنید می‌خواهیم عملیات کلیدی را که به طور مکرر اجرا می‌شوند استخراج کنیم - خدمات ارسال فاکتور، تغییر وضعیت شغل و تغییر وضعیت فاکتور. اینها کاملاً جدا از وظیفه تداوم داده ها هستند.

این به ما امکان می دهد تا اجزای مجزا را به دو خط لوله متصل کنیم:

کاربر یک فاکتور دستی ایجاد می کند

داده ها را به فاکتور اضافه می کند، وضعیت ایجاد شده است
- BillingPolicyService را فراخوانی می کند تا مشخص کند که چه زمانی یک فاکتور برای یک مشتری خاص قابل پرداخت است

فاکتور برای مشتری صادر می شود
همچنان به سرویس داده فاکتور، وضعیت ارسال شده است
کاربر یک کار را تمام می کند و یک فاکتور ایجاد می کند

کار اعتبار سنجی تکمیل شدنی است
داده ها را به فاکتور اضافه می کند، وضعیت ایجاد شده است
- BillingPolicyService را فراخوانی می کند تا مشخص کند که چه زمانی یک فاکتور برای یک مشتری خاص قابل پرداخت است

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

برخلاف SOA سنتی، تفاوت در اینجا این است که ما جزئیات سطح پایین را از طریق یک رابط ساده در معرض نمایش قرار می دهیم، در مقایسه با یک فراخوانی API سطح بالا که ممکن است کل یک عملیات تجاری را اجرا کند.

با یک API سطح بالا، در واقع، سیم‌کشی مجدد اجزای کوچک با هم دشوار می‌شود، زیرا طراح سرویس بسیاری از درزها یا انتخاب‌هایی را که می‌توانیم با ارائه یک رابط یک‌شات انتخاب کنیم، حذف کرده است.

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

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

SOA در مقابل میکروسرویس ها

ممکن است بگویید «یک دقیقه صبر کن»، «آیا این فقط نام دیگری برای SOA نیست؟» معماری سرویس گرا در چند سال اول این قرن ظهور کرد و معماری میکروسرویس (که برخی به اختصار MSA نامیده می شوند) شباهت های زیادی دارد.

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

در هر صورت، ما فکر می‌کنیم که تفاوت‌های کافی برای توجیه مفهوم «سرویس میکرو» متمایز وجود دارد (حداقل به عنوان شکل خاصی از SOA، همانطور که بعداً نشان خواهیم داد).

به عنوان مثال، مدل SOA معمولی معمولاً دارای ESB های وابسته بیشتری است و میکروسرویس ها از مکانیسم های پیام رسانی سریع تری استفاده می کنند. SOA همچنین بر برنامه‌نویسی ضروری تمرکز دارد، در حالی که معماری میکروسرویس‌ها بر سبک برنامه‌نویسی واکنش‌گرا متمرکز است.

علاوه بر این، مدل‌های SOA تمایل به داشتن یک پایگاه داده رابطه‌ای بزرگ‌تر دارند، در حالی که میکروسرویس‌ها اغلب از پایگاه‌های داده NoSQL یا micro-SQL (که می‌توانند به پایگاه‌های داده معمولی متصل شوند) استفاده می‌کنند. اما تفاوت واقعی در وهله اول به روش های معماری مورد استفاده برای رسیدن به مجموعه یکپارچه از خدمات مربوط می شود.

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

برنامه های کاربردی مبتنی بر ابر مقیاس پذیر، سازگار، ماژولار و سریع در دسترس تقاضای زیادی دارند. و این باعث شده است که بسیاری از توسعه دهندگان رویکرد خود را تغییر دهند.

آینده معماری میکروسرویس
چه معماری میکروسرویس به سبک مطلوب توسعه دهندگان در آینده تبدیل شود یا خیر، به وضوح یک ایده قدرتمند است که مزایای جدی برای طراحی و اجرای برنامه های کاربردی سازمانی ارائه می دهد. بسیاری از توسعه‌دهندگان و سازمان‌ها، بدون استفاده از نام یا حتی برچسب‌گذاری عمل خود به عنوان SOA، از رویکردی برای استفاده از APIهایی استفاده می‌کنند که می‌توانند به عنوان میکروسرویس طبقه‌بندی شوند.

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

اما این فناوری ها با اجرای نسبتاً پیچیده به خطر افتاده اند و تمایل دارند در پروژه های جدیدتر مورد استفاده قرار نگیرند. سرویس‌های مبتنی بر REST با مشکلات مشابهی روبرو هستند و اگرچه می‌توانید از WSDL با REST استفاده کنید، اما این کار به طور گسترده انجام نمی‌شود.

با فرض اینکه کشف یک مشکل حل شده است، به اشتراک گذاری طرح و مفهوم در بین برنامه های کاربردی نامرتبط همچنان یک پیشنهاد دشوار برای هر چیزی غیر از میکروسرویس ها و سایر سیستم های SOA باقی مانده است. فن آوری هایی مانند RDFS، OWL و RIF وجود دارند و استاندارد شده اند، اما معمولا مورد استفاده قرار نمی گیرند. JSON-LD و Schema.org نگاهی اجمالی به یک کل وب باز که تعاریف را به اشتراک می گذارد، ارائه می دهند، اما این موارد هنوز در شرکت های خصوصی بزرگ به کار گرفته نشده اند.

با این حال، قدرت تعاریف مشترک و استاندارد شده در داخل دولت نفوذ می کند. نتایج از طریق data.gov و data.gov.uk قابل مشاهده است، و می‌توانید تعداد زیادی از مجموعه داده‌های موجود به عنوان داده‌های مرتبط با توصیف خوب را در اینجا کاوش کنید.

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

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

 

  • sahar saha sql