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

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

پیشنیاز : سه سال سابقه برنامه نویسی
تاریخ شروع طول دوره ساعت برگزاری نام استاد هزینه (تومان) وضعیت
1400/11/07 30 ساعت پنج شنبه ها ساعت 13 تا 16 (حضوری و آنلاین) مهندس محمد آزاد 3,000,000 ثبت نام

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

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


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

این سوالات اکثر کسانی هست که می خواهند وارد دوره Microservice شوند.

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


عنوان فیلم:

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

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

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

سرفصل دوره Microservice

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

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


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

  • قابلیت تست و نگهداری بالا
  • ارتباط از نوع 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 ها برای مشخص کردن مرزبندی میکروسرویس ها
  • مهاجرت از معماری یکپارچه به میکروسرویس
    1. نحوه Refactoring Databases
    2. استراتژی ها مربوط به Transactional Boundaries
    3. استراتژی مباحث مربوط به طراحی Reporting Database


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


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


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


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


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


    • مبانی بنیادی ارتباط بین میکروسرویس ها
    • الگوی Synchronous Blocking
      1. بررسی مزایای ارتباط بصورت Synchronous Blocking
      2. بررسی معایب ارتباط بصورت Synchronous Blocking
      3. بررسی اینکه چه زمانی باید از این روش استفاده کرد
    • الگوی Asynchronous Nonblocking
      1. بررسی مزایای ارتباط بصورت Asynchronous Nonblocking
      2. بررسی معایب ارتباط بصورت Asynchronous Nonblocking
      3. بررسی اینکه چه زمانی باید از این روش استفاده کرد
    • الگوی Communication Through Common Data
      1. بررسی مزایای ارتباط بصورت Communication Through Common Data
      2. بررسی معایب ارتباط بصورت Communication Through Common Data
      3. بررسی اینکه چه زمانی باید از این روش استفاده کرد
    • الگوی Request-Response
      1. پیاده سازی بصورت الگو بصورت Synchronous و Asynchronous
      2. بررسی اینکه چه زمانی باید از این روش استفاده کرد
    • الگوی Event-Driven Communication
      1. Event چیست ؟
      2. پیاده سازی Event Driven Architecture با استفاده از Message Broker
      3. بررسی اینکه چه زمانی باید از این روش استفاده کرد
    • بررسی الگوهای Stability در میکروسرویسها
      1. Time-outs
      2. Retries
      3. Bulkheads
      4. Isolation
      5. Circuit Breakers
      6. Redundancy
      7. Middleware
      8. Idempotency
    • مقایسه Synchronous Communication و Asynchronous Communication
    • آشنایی با الگوی Api Gateway
    • پیاده سازی الگوی Api Gateway
    • آشنایی با الگوی Service Discovery
    • پیاده سازی الگوی Service Discovery
    • بررسی و پیاده سازی مفهوم Idempotency


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


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


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


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


    • تئوری CAP چیست؟
      1. با قربانی کردن Consistency در سیستم توزیع شده چه اتفاقی می افتد؟
      2. با قربانی کردن Availability در سیستم توزیع شده چه اتفاقی می افتد؟
      3. با قربانی کردن Partition Tolerance در سیستم توزیع شده چه اتفاقی می افتد؟
      4. چه زمانی AP را انتخاب کنیم؟
      5. چه زمانی CP را انتخاب کنیم؟
    • بررسی الگوی Database Per Service
    • برسی الگوی Shared Database
    • الگوهای پیاده سازی Consistency در سیستم های توزیع شده
      1. آشنایی با مفهوم Strongly consistency
      2. پیاده سازی Strongly consistency در میکروسرویسها با استفاده از Distributed Transaction
      3. آشنایی با مفهوم Eventual consistency
      4. بررسی روشهای پیاده سازی Eventual consistency
      5. آشنایی با الگوی SAGA جهت پیاده سازی تراکنش بین میکرو سرویس ها
      6. پیاده سازی الگوی SAGA
      7. پیاده سازی Compensating Transactions
      8. آشنایی با الگوی Transactional Outbox
      9. پیاده سازی الگوی Transactional Outbox
    • بررسی روشهای Query گرفتن در میکروسرویسها
      1. آشنایی با الگوی Api Composition
      2. مزایا و معایب استفاده از Api Composition
      3. بررسی الگوی CQRS
      4. مزایا و معایب استفاده از CQRS
      5. نحوه پیاده سازی CQRS
    • آشنایی با Event Sourcing
    • نحوه پیاده سازی Event Sourcing و طراحی مدل سازگار با این الگو
    • بررسی استراتژی ها مربوط به Cache در میکروسرویسها
      1. Caching First Strategy
      2. Enqueuing Tasks


    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 در میکروسرویس ها را مورد بررسی قرار می دهیم.


    • آشنایی با مباحث لاگ کردن رویدادها در میکروسرویس ها
    • پیاده سازی سیستم لاگ
    • آشنایی با مانیتورینگ در میکروسرویس ها
    • سناریو های پیاده سازی سیستم مانیتورینگ
      1. Single Service, Single Server
      2. Single Service, Multiple Servers
      3. Multiple Services, Multiple Servers
      4. بررسی الگوی Correlation IDs


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


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


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


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


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


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

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

ارسال
کاربر میهمان1400/07/14

محمدعلی

سلام. آیا امکان ثبت نام اقساطی هم وجود دارده؟

پاسخ مدیر

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

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

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