معماری سرویس گرا (بخش هفتم) – دسته بندی سرویس ها
هنگام تولید یک سرویس، موارد زیر با توجه به کاربرد این سرویس مورد توجه قرار می گیرد:
- نوع خدمتی که که سرویس ارایه می دهد (Type of Logic)
- میزان قابلیت استفاده مجدد از آن سرویس (Reusability)
- سرویس در چه حوزه و دامنه ای (Domain) از سازمان دسته بندی می شود
با توجه به موارد بیان شده، سرویس ها را می توان به سه دسته زیر تقسیم بندی کرد:
- Entity Services
- Task Services
- Utility Services
در نتیجه این دسته بندی، لایه های زیر ایجاد می گردد:
Entity Services:
در هر سازمان با توجه به حوزه خدمات و نوع تجارت آن، موجودیتهای مختلفی وجود دارند. به عنوان مثال، تقریبا در همه سازمانهای موجودیت "پرسنل" (Employee) وجود دارد. سرویس هایی که بر اساس موجودیتهای (Entities) مورد نیاز سازمان ایجاد می شوند در دسته بندی Entity Services قرار می گیرند. این دسته از سرویس ها دارای قابلیت استفاده مجدد (Reusability) بالایی هستند چرا که وابسته به یک وظیفه (Task) یا پروسه خاص سازمانی نبوده و مستفل از عملیات سازمانی با حیات خود ادامه می دهند.
Task Services:
سرویسی که عملکرد آن به طور مستفیم با کار یا وظیفه ای (Task) در سازمان مرتبط باشد در این دسته بندی قرار می گیرد. مثلا سرویس "تولید گزارشات مالی" در این دسته بندی قرار می گیرد. با توجه به ماهیت این نوع از سرویس ها، قابلیت استفاده مجدد این سرویس ها کم است.
Utility Services:
سرویس های دسته بندی شده در دو مورد بالا همگی وابسته به موجودیت یا وظیفه ای خاص مرتبط با سازمان مورد نظر هستند. در مواردی لازم است که سرویسهای ایجاد شوند که وابستگی مستقیم به امور سازمانی یا تجارت خاصی ندارند. این گونه سرویس ها سرویس هایی هستند که قابلیت استفاده مجدد بالایی داشته و در بسیاری از کاربردها مورد استفاده قرار می گیرند. سرویس "ثبت وقایع" (Log) کاندید خوبی برای این دسته بندی است.
جدول زیر خلاصه ای از این دسته بندی را نمایش می دهد:
|
Short Description |
Example |
Best Practices / Characteristics |
Task Service |
A business service directly associated with a specific parent business task or process. |
- AnalyzeRevenue - GenerateReport - HandleOrder |
- Naming convention: [verb][noun] - Low reusability - Business Centric - aka: “Task-centric Business Services” or “Business Process Services” |
Entity Service |
A business centric service based on one or more business entities. |
- Employee - Invoice - Customer |
- Naming convention: [noun] - Highly reusable - Business Centric - aka: “Entity-centric Business Services” or “Business Entity Services” |
Utility Service |
Cross-cutting, non-business centric service providing utility functionality |
- Logging -Exception Handling |
- Highly reusable - Non-Business Centric - aka: “Application Services”, “Infrastructure Services” or “Technology Services” |
توجه شود که با توجه به تصمیم معماران محیط سرویس گرایی سازمان، می توان دسته بندی ها (لایه ها) ی دیگری نیز تعریف کرد. اما به نظر می رسد که سه دسته بندی بالا، تقریبا برای هر سازمانی قابل گسترش است.
دسته بندی سرویس ها در شرکت کالایاب
پس از تحلیل نیازمندیهای شرکت و برگزاری چندین جلسه با حضور معمار سازمانی (Enterprise Architect)، معمار راه حلها (Solutions Architect)، معمار اطلاعات سازمانی (Information Architect) و همچنین چند نماینده از بخش های مختلف سازمان (Subject Matter Experts)، تصمیم گیری شد که لایه های زیر برای دسته بندی سرویس ها در شرکت کالایاب مورد استفاده قرار گیرد:
- Task Service Layer
- Entity Service Layer
- Utility Service Layer
- External Partners Service Layer
دسته بندی چهارم (External Partners Service Layer) به این منظور پیشنهاد شده است که شرکت کالایاب از بسیاری از خدمات دهندگان خارج از سازمان برای پیشبرد اهداف سازمانی خود استفاده خواهد کرد. به عنوان مثال، هنگامی که درخواست مشتری برای استعلام قیمت در مورد نوع خاصی شکلات به شرکت می رسد، شرکت باید از تامین کنندگان شکلات استعلام قیمت کرده و پایین ترین قیمت را به مشتری پیشنهاد دهد (برای اطلاعات بیشتر در مورد شرکت تخیلی کالایاب به اینجا مراجعه کنید).
به این منظور، شرکت کالایاب برای اتصال به Web Service های تامین کنندگان، سرویسی خاص طراحی و اجرا خواهد کرد که وظیفه آن صدا زدن (Service Call-out) سرویس های خارجی است. هرچند می توان این سرویس را در دسته بندی Task Services قرار داد، تیم تصمیم گیرنده برای شفافیت بیشتر و جداسازی بهتر لایه ها از نظر کاربرد، تصمیم بر ایجاد لایه چهارم External Partners Service Layer گرفت.
جدول زیر نمونه ای از دسته بندی ها و سرویس های موجود در هر دسته بندی را در شرکت کالایاب نمایش می دهد:
Service Layer |
Service Name |
Service Description |
Task Service Layer |
ManageOrder |
This service handles orders from the point it is made by customer, up to the point the order is fulfilled. |
GenerateFiscalReport |
Responsible to generate financial reports | |
... |
... | |
Entity Service Layer |
Supplier |
External Supplier |
Employee |
Company’s internal employee | |
Product |
A particular product (e.g. X Chocolate, Y Flower, etc.) | |
Order |
An order made by a customer | |
Customer |
A customer making an order | |
... |
... | |
Utility Service Layer |
Exception Handling |
Service handling exceptions |
Logging |
Service responsible for logging different activities | |
Notification |
Responsible for notifying users (e.g. when an order cannot be fulfilled successfully, a notification email is sent to sales team to manually handle the situation | |
... |
... | |
External Partners Service Layer |
GetQuote |
Send quote request to external suppliers and get the result |
SendShipmentRequest |
Send shipment request to successful supplier to send the product to the customer | |
... |
... |
<بخش قبل بخش بعد>