روز مانده به شروع دوره
Python - پایتون
روز مانده به شروع دوره
Machine learning
ورود
021-88146330
0903-9737-034
تقویم آموزشی

آموزشگاه تحلیل‌داده

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

title title
نام دوره شهریه نام استاد مدت زمان تاریخ شروع زمان برگزاری پیشنیاز وضعیت دوره
دوره آموزش میکروسرویس 3,000,000 مهندس محمد آزاد 30 1401/04/02
(در حال برگزاری)
پنجشنبه ها ساعت 13:15 تا 16:15 سه سال سابقه برنامه نویسی حضوری و آنلاین
  • معماری میکرو سرویس برای یک سازمان و توسعه دهنده نرم افزار چه فوایدی دارد؟
  • و چرا نسبت به معماری میکرو سرویس باید دانش داشته باشیم
  • میکرو سرویس کجا به کارمان می آید؟
  • میکرو سرویس اگر به اشتباه انتخاب شود چه مشکلاتی برای سازمانی ایجاد می کند
  • چالشهای مهاجرت به معماری میکرو سرویس چیست؟
  • آیا شرکت کنندگان ، بعد پایان دوره آموزش میکرو سرویس با چالشهای یک پروژه واقعی برخورد می کنند؟
  • و ...

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

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

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

TAHLILDADEH ACADEMY

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

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

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

  • قابلیت تست و نگهداری بالا
  • ارتباط از نوع 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. از آنجا که در میکروسرویس ها هر سرویس در محدوده مشخصی قرار گرفته و اجرا می شود، پس می توان هر سرویس را در محدوده مخصوص به آن ویرایش کرد، بدون اینکه برای دیگر سرویس ها مشکلی ایجاد شود. این مسئله مدت زمان از کار افتادگی سیستم را به صفر می رساند و عیب یابی در سیستم را آسان می کند؛ علاوه بر این اگر در سیستم مشکلی تشخیص داده شود، نمی تواند باعث قطعی سیستم شود و امکان اعمال تغییرات در سیستم و بروز رسانی آن بصورت پیوسته و ایمن را فراهم می کند.

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

  5. Faster innovation to adapt to changing market conditions
  6. از آنجا که میکروسرویس ها امکان بروزرسانی و تست سریع برنامه ها را برای شما فراهم می کنند، به شما کمک می کنند که خود را سریعتر با تغییر شرایط بازار وفق داده و محصولات خود را ارتقا دهید؛ زیرا میکروسرویس ها باعث می شوند برنامه نویسان بدون اینکه نگران ایجاد مشکل در دیگر سرویس ها باشند، بتوانند تغییرات مورد نیاز خود را در سرویس های مورد نظر اعمال کنند.

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

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

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


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

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

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

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

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

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

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

    • آشنایی با رویکرد DDD
    • یادگیری الگوهای استراتژیک در DDD
    • استفاده از BoundedContext ها برای مشخص کردن مرزبندی میکروسرویس ها
    • مهاجرت از معماری یکپارچه به میکروسرویس
      • نحوه Refactoring Databases
      • استراتژی ها مربوط به Transactional Boundaries
      • استراتژی مباحث مربوط به طراحی 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
    • آشنایی با مفهوم کانتینر ها
    • داکر چیست
    • راه اندازی سرویس ها با استفاده از داکر

گواهی پایان دوره

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

مشاهده نمونه مدرک
همین حالا ثبت نام کن!
teacherImage
مهندس محمد آزاد

استاد آزاد

مشاهده رزومه

Top Skills

  • ASP.NET
  • C#
  • Test Driven Development

Certifications

Advanced Distributed Systems Design using SOA & DDD

Experience

Rahyab Rayaneh Gostar
CTO
April 2021 - Present (6 months)

 Sekhavat F.C.I.
Technical Team Lead
2016 - Present (5 years)
Tehran Province, Iran

 Core Banking, Accounting, Banking, Treasury
DDD, CQRS, ESB, WPF, WF

 Tahlildadeh Institute
Lecturer
October 2019 - Present (2 years)
Enterprise Architecture , Domain Driven Design, CQRS

 Noyan System
Technical Team Lead
January 2015 - June 2016 (1 year 6 months)
Company belongs to SAMAN financial group

 Faraconesh Corporation
Senior Software Developer
April 2011 - December 2014 (3 years 9 months)

 SimplyDesk
Senior Software Developer
September 2013 - September 2014 (1 year 1 month)

SimplyDesk is a cloud based ITIL v3 service desk.
Request for a demo at http://www.simplydesk.com and you are able to see the application live on the web

 HonoPardaz
Web Developer
September 2009 - January 2011 (1 year 5 months)

Education

Azad University (IAU)

سوالات پر تکرار

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

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

من شهرستان هستم، آیا می توانم در کلاس های شما شرکت کنم؟

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

پشتیبانی و پاسخگویی به دانشجویان در حین دوره چگونه است؟

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

محمدعلی

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

محمدعلی

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

برای ارسال سوال لازم است، ابتدا وارد سایت شوید.