تعریف معماری سرویس گرا
معماری سرویس گرا (SOA) رهیافتی برای ساخت سیستمهای توزیعشده است که کارکردهای نرمافزاری را در قالب سرویس ارائه میکند، این سرویسها هم توسط دیگر نرمافزارها قابل فراخوانی هستند و هم برای ساخت سرویسهای جدید مورد استفاده قرار میگیرند. این رهیافت برای یکپارچهسازی فناوریها در محیطی که انواع مختلفی از سکوهای نرمافزاری و سختافزاری وجود دارد ایدهآل است. ویژگیهای معماری سرویسگرا به این شرح است:
- استفاده از استانداردهای مستقل از فناوری و موردتوافق برای ارائه مؤلفههای نرمافزاری تحت قالب سرویس
- معرفیکننده یک روش مشخص و موردتوافق برای تعریف و ارتباط بین مؤلفههای نرمافزاری
- امکان بهکارگیری مؤلفههای نرمافزاری منفرد در ساخت دیگر نرمافزارها
- اولویت سرهمبندی اجزاء آماده برای ساخت نرمافزارها
- قابلیت اتصال با نرمافزارهای داخلی و بیرونی با یک پروتکل و استاندارد
وب سرویس (Web Service)
اولین نسل از فناوری یا استانداردی که برای تحقق معماری سرویسگرا ارائه شد، وبسرویس بوده که مربوط به اوایل دهه 2000 میشد. وبسرویس، نوعی مؤلفه نرمافزاری است که جهت تعامل ماشین با ماشین در سطح شبکه طراحی شده است و دارای یک تعریف (توصیف) قابل پردازش توسط ماشین با نام WSDL است. دیگر سیستمها بر طبق این توصیف ازقبل مهیاشده با سرویسدهنده تعامل خواهند داشت، پیامها توسط پروتکل SOAP منتقل میشوند.
سرویسهای REST
سبک REST، نسل جدیدتر وبسرویسها است که مبتنی بر دستورات (افعال) استاندارد بر روی منابع است که از طریق URI فراخوانی میشوند، این سبک نسبت به فناوری SOAP از سادگی و خوشتعریفی بیشتری برخوردار است و محبوبیت زیادی میان مهندسان نرمافزار به دست آورده است.
معماری مایکروسرویس
آخرین نسل معماری سرویس گرا، سبک معماری مایکروسرویسها یا بهاختصار مایکروسرویسها است که در چند سال اخیر بهشدت در حال گسترش و فراگیری در میان توسعهدهندگان و معماران نرمافزار است. مایکروسرویسها بهصورت خلاصه سرویسهای دانهریز و خودمختاری هستند که با یکدیگر همکاری میکنند. هر سرویس باید بتواند مستقلاً تغییر کند بدون اینکه منجر به تغییر دیگر سرویسهای مرتبط یا استفادهکنندگان از سرویس شود. معماری مایکروسرویس رویکردی برای توسعه یک نرمافزار متشکل از تعدادی سرویس کوچک و مستقل است که هر سرویس به اتکای منابع و زیرساخت خودش اجرا شده و از طریق پروتکلهای سبک با دیگران ارتباط دارد. این سرویسها بر اساس قابلیتهای کسبوکار طراحی و ساخته میشوند و بر بسترهای فناوری با زبانهای برنامهنویسی مختلفی قابلاستقرار هستند. این سرویسها حداقل نیاز به مدیریت متمرکز را دارند و هر سرویس منابع و داده مخصوص به خود را مدیریت میکند.
بسیاری از کتابها و مقالاتی که درباره معماری مایکروسرویس وجود دارد، برای توضیح ویژگی و تمایز معماری مایکروسرویس از مقایسه با معماری یکتکه بهره بردهاند. بر مبنای نظر این نویسندگان در سیستمهای یکتکه، مجموعه مؤلفهها-سرویسها-دادهها چنان درهمآمیخته است که نمیتوان بلوکهای سازنده این سیستمها را مستقلاً از هم جدا کرده و یا منتقل (جابجا) نمود؛ اما در معماری مایکروسرویس هدف این است که یک سیستم به مجموعهای از ماژول (سرویس) کاملاً مستقل (خودمختار) تقسیم شود که هر سرویس همه محاسبات، دادهها و قوانین موردنیاز را در خود داشته باشد و برای اجرا به سایر سرویسها نیاز نداشته باشد یا حداقل وابستگی وجود داشته باشد
لازم به ذکر است که واژه «معماری» در معماری سازمانی به معنای داشتن تفکر جامعنگر و مبتنی بر طراحی مدلهای توصیفی منسجم از جنبههای مختلف سازمان پیش از اجرا (پیادهسازی نقشهها) است که در صنعت ساختمانسازی نیز مصداق روشن دارد، درحالیکه همین واژه «معماری» در معماری سرویسگرا نشاندهنده سبک خاصی برای توسعه سیستمهای اطلاعاتی است که بر اتصال سست، قابلیت استفاده مجدد، ترکیبپذیری، خودمختاری، پنهانسازی پیادهسازی داخلی و… تأکید داشته و شامل استانداردهای مستقل از سکو میشود.