Є багато факторів, які входять у рішення про створення рівня обслуговування. У минулому я створював службові шари з наступних причин.
- Код, який потребує повторного використання декількома клієнтами.
- Бібліотеки сторонніх організацій, для яких у нас ліцензії обмежені.
- Сторонні сторони, які потребують точки інтеграції до нашої системи.
- Централізація дублюваної логіки бізнесу.
Випадок 1: Ви створюєте базову функціональність, яку потрібно використовувати безлічі різних клієнтів. Службовий рівень вбудовує функціональні можливості для різних клієнтів, щоб скористатися наданою функціональністю прямо з коробки.
Випадок 2: Ви, як правило, кодуєте хост у просторі додатків, але використовуєте сторонні бібліотеки, на які у вас обмежені ліцензії. У цьому випадку у вас є ресурс, який ви хотіли б використовувати скрізь, але лише обмежена їх кількість. Якщо ви розміщуєте його за сервісом, то вся ваша організація може використовувати його зі своїх додатків без необхідності купувати ліцензію на кожен окремий хостинг.
Випадок 3: Ви будуєте функціонал для того, щоб треті сторони спілкувалися з вами. У своєму прикладі ви можете встановити кінцеву точку інвентаризації, щоб дозволити постачальникам передавати вам повідомлення про вхідні поставки товару.
Випадок 4: Ви широко проаналізували ваше кодове підприємство і виявили, що окремі команди створили одне і те ж (просто реалізовано трохи по-іншому). За допомогою сервісного шару ви можете вибрати найкращий підхід, і тепер ви можете реалізувати процес однаковий у всіх командах, запросивши їх в службу. Ще одна користь для централізації логіки - це коли виявляються помилки. Тепер ви можете розгорнути виправлення один раз, і всі клієнти отримують переваги одночасно.
Все, що говориться, є потенційні негативи для рівня обслуговування.
- Додає складність системи. Якщо раніше у вас була лише одна програма для налагодження, тепер у вас є дві. Проблеми з виробництвом вимагають перевірити налаштування клієнтських програм, налаштування додатків служб або проблеми зв'язку між коректно налаштованими клієнтськими програмами та серверними програмами. Це може бути складним, якщо ви ніколи цього не робили.
- Один момент відмови. Якщо у вас відмова від обслуговування, це впливає на всіх клієнтів. Якщо код не розгортається таким чином, ризик може бути меншим (хоча є способи його зменшити).
- Версію можна зробити важче. Якщо у вас є одне додаток, що використовує сервіс, що розгортає інтерфейс, зміни можуть бути здійснені одночасно між ними. Коли у вас є кілька клієнтів, ви повинні керувати тим, хто перебуває на V1, хто на V2, і координувати видалення V1 (коли ви знаєте, що всі оновились до V2).
Головний момент - це не завжди сунучка, щоб зробити систему орієнтованою на вашу систему. На мій досвід, зазвичай це гарна ідея (я прагну структурувати додатки таким чином), але це не автоматичне рішення. Наприкінці дня вам потрібно зважити плюси і мінуси і прийняти рішення, яке підходить для вашої ситуації.