آموزشگاه برنامه نویسی تحلیل داده
آموزشگاه برنامه نویسی تحلیل داده

دوره آموزش میکروسرویس

پیشنیاز : سه سال سابقه برنامه نویسی
تاریخ شروع طول دوره ساعت برگزاری نام استاد هزینه (تومان) وضعیت
1399/12/01 30 ساعت جمعه ساعت 10 تا 14 مهندس محمد آزاد 1,800,000 ثبت نام

توجه: از دانشجویان عزیز تقاضا میگردد جهت قطعی کردن ثبت نام با آموزشگاه تماس بگیرند.

آموزش آنلاين

دوره آموزش معماری میکروسرویس


معرفی دوره میکروسرویس

قبل از ثبت نام این فیلم را ببینید

میکروسرویس چیست؟

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


هر یک از این سرویس ها دارای ویژگی های زیر هستند :

  • قابلیت تست و نگهداری بالا
  • ارتباط از نوع Loosely Coupled
  • قابلیت توسعه بصورت مستقل
  • امکان سازماندهی برنامه متناسب با اهداف سازمانی و تجاری
  • مقیاس پذیری

برای شرح هر چه بهتر میکروسرویس می توان آن را با سیستم یکپارچه مقایسه کرد :


یک سیستم یکپارچه بصورت یک تک واحد ساخته می شود.

برنامه های سازمانی اغلب دارای سه بخش اصلی client-side user interface، database و server-side application هستند.

application درخواست های HTTP را مدیریت می کند، منطق برنامه را اجرا می کند، داده های موجود در پایگاه داده را بازیابی و بروزرسانی می کند، و دستورات HTML را برای ارسال به مرورگر انتخاب و جمع آوری می کند.

اما نکته قابل توجه این است که Server-side application یک monolith (سیستم یکپارچه) است و برای اعمال هر تغییری در سیستم باید ورژن جدیدی از Server-side application ساخته و توسعه داده شود.


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

برنامه های monolithic (یکپارچه) می توانند نتیجه موفقیت آمیزی داشته باشند، اما این برنامه ها با توجه به افزایش روز افزون برنامه های توسعه داده شده بر روی سیستم ابری ممکن است برای کاربران نا امید کننده باشند.


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


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



چرا معماری میکروسرویس دارای اهمیت بالایی است؟


1. Continuous Delivery


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



2. Maximize deployment velocity


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



3. Faster innovation to adapt to changing market conditions


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



4. Enable developers


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



5. Reduce costs


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



سرفصل دوره میکروسرویس


1. معرفی معماری مایکروسرویس


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


  • آشنایی با معماری یک پارچه (Monolith)
  • بررسی مزیت های و معایب استفاده از معماری یک پارچه(Monolith)
  • آشنایی با معماری میکروسرویس
  • تفاوت میکروسرویس و معماری یکپارچه
  • چرا باید از میکرو سرویس ها استفاده کنیم؟
  • بررسی مزیت های و معایب استفاده از میکرو سرویس


2. طراحی میکرو سرویس ها


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


برای طراحی میکروسرویس ها رویکردهای متفاوتی وجود دارد که از جمله آنها می توان به رویکرد Domain Driven Design یا همان DDD اشاره کرد.


DDD رویکردی برای توسعه نرم افزار است که اساس توسعه نرم افزار را بر ساخت یک domain model قرار می دهد که باید درک درستی از فرایندها و قوانین یک domain داشته باشد. DDD در واقع ساختاری از قواعد و اصول طراحی را برای ساخت برنامه هایی با domainهای پیچیده ارائه می دهد.


  • آشنایی با رویکرد DDD
  • یادگیری الگوهای استراتژیک در DDD
  • استفاده از BoundedContext ها برای مشخص کردن مرزبندی میکروسرویس ها
  • مهاجرت از معماری یکپارچه به میکروسرویس


3. ارتباط بین میکرو سرویس ها


زمان آن رسیده است که به یکی از مهم ترین الگوهای معماری میکروسرویس یعنی ارتباط داخلی میان میکروسرویس ها بپردازیم.


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


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


بسیاری از معمارهای کامپیوتر ارتباط داخلی میان میکروسرویس ها را به دو دسته synchronous و asynchronous تقسیم کرده اند که در این فصل بصورت مفصل به آنها می پردازیم.


  • مبانی بنیادی ارتباط بین میکروسرویس ها
  • بررسی ارتباط Synchronous
  • بررسی ارتباط Asynchronous به وسیله EDA
  • مقایسه Synchronous Communication و Asynchronous Communication
  • آشنایی با الگوی Api Gateway
  • پیاده سازی الگوی Api Gateway
  • آشنایی با الگوی Service Discovery
  • پیاده سازی الگوی Service Discovery


4. الگوهای مدیریت داده در میکرو سرویس ها


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


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


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


  • بررسی الگوی Database Per Service
  • برسی الگوی Shared Database
  • آشنایی با مفهوم Strongly consistency
  • آشنایی با مفهوم Eventual consistency
  • آشنایی با الگوی Api Composition
  • مزایا و معایب استفاده از Api Composition
  • بررسی الگوی CQRS
  • مزایا و معایب استفاده از CQRS
  • نحوه پیاده سازی CQRS
  • آشنایی با Event Sourcing
  • نحوه پیاده سازی Event Sourcing
  • آشنایی با الگوی SAGA جهت پیاده سازی تراکنش بین میکرو سرویس ها
  • پیاده سازی الگوی SAGA
  • پیاده سازی Compensating Transactions
  • آشنایی با الگوی Transactional Outbox
  • پیاده سازی الگوی Transactional Outbox


5. تست میکرو سرویس ها


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


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


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


بطور کلی توصیه می شود که استراتژی تست مورد نظر، تعداد زیادی Unit Test، سپس integration test و پس از آن end to end test را شامل شود.


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


  • آشنایی با رویکرد های مختلف تست در میکرو سرویس ها
  • بررسی تست های Unit
  • بررسی تست های Integration
  • بررسی تست های End To End
  • آشنایی با الگوی Chaos Monkey


6. مانیتورینگ و لاگ در میکروسرویس ها


یکی از بزرگترین چالش های میکروسرویس ها، logging & monitoring هر میکروسرویس است و این مسئله ناشی از ساختار توزیعی توسعه میکروسرویس ها در ابعاد اینترنت است.


دنبال کردن تراکنش های end-to-end بوسیله ایجاد ارتباط میان لاگ های صادر شده توسط میکروسرویس های مختلف، دشوار است.


در این بخش به شرح اهمیت logging & monitoring در میکروسرویس ها می پردازیم و برخی تکنولوژی ها و راه حل های موجود برای logging & monitoring در میکروسرویس ها را مورد بررسی قرار می دهیم.


  • آشنایی با مباحث لاگ کردن رویدادها در میکروسرویس ها
  • پیاده سازی سیستم لاگ
  • آشنایی با مانیتورینگ در میکروسرویس ها
  • پیاده سازی سیستم مانیتورینگ


7. نصب و راه اندازی میکرو سرویس ها


از جمله مزایا بسیار مهم معماری میکروسرویس می توان به چرخه های آزادسازی سریع اشار کرد؛ اما بدون وجود ابزارهای مناسب CI/CD نمی توان به این چرخه های سریع دست یافت.


هدف اصلی CI که مخفف Continuous integration است ایجاد یک روش خودکار و مؤثر برای اعمال تغییرات، ساخت و تست برنامه هاست و CD که مخفف Continuous delivery است پس از CI اتفاق می افتد و باعث انتشار خودکار تغییرات اعمال شده به زیرساختارهای انتخاب شده می شود.


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


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


  • آشنایی با مفهوم CI/CD
  • داکر چیست
  • راه اندازی سرویس ها با استفاده از داکر

دوره آموزش میکروسرویس, آموزش میکروسرویس,آموزش معماری میکروسرویس,کتاب آموزش میکروسرویس,پیاده سازی میکروسرویس,آموزش microservice
ارسال دیدگاه نظرات کاربران
شماره موبایل دیدگاه
عنوان پست الکترونیک

ارسال
آموزشگاه برنامه نویسی تحلیل داده
آموزشگاه برنامه نویسی تحلیل داده

تمامی حقوق این سایت متعلق به آموزشگاه تحلیل داده می باشد .