Загалом, RPC пропонує набагато більше мовної інтеграції, ніж REST. Як ви вже згадували, це виникає з низкою проблем з точки зору масштабу, керування помилками, безпеки типу тощо, особливо коли в одній розподіленій системі задіяно кілька хостів, що працюють з кодом, написаним на декількох мовах. Однак після написання бізнес-систем, які використовують RPC, REST і навіть обидва одночасно, я виявив, що є певні вагомі причини вибрати RPC над REST у певних випадках.
Ось випадки, коли я визнав RPC найкращим чином:
- Щільна муфта. (Розподілені) компоненти системи розроблені для спільної роботи, а зміна одного, ймовірно, вплине на всіх інших. Навряд чи компоненти в майбутньому доведеться адаптувати для спілкування з іншими системами.
- Надійне спілкування. Компоненти будуть спілкуватися один з одним або повністю на одному хості або в мережі, що навряд чи матиме проблеми із затримкою, втратою пакетів тощо. (Це все ж означає, що вам потрібно створити вашу систему для обробки цих випадків.)
- Єдина мова. Всі (або в основному всі) компоненти будуть написані однією мовою. Навряд чи в майбутньому будуть додані додаткові компоненти, написані іншою мовою.
Щодо точки зору IDL, в системі REST вам також потрібно написати код, який перетворює дані в REST-запити та відповіді у будь-яке внутрішнє представлення даних, яке ви використовуєте. Джерела IDL (з хорошими коментарями) також можуть слугувати документацією інтерфейсу, який повинен бути записаний і підтримуватися окремо для REST API.
Вищевказані три елементи часто трапляються, коли ви хочете створити один компонент більшої системи. На мій досвід, ці компоненти часто є тими, де їх підсистеми повинні бути здатні самостійно виходити з ладу і не викликати повного виходу з ладу інших підсистем або всього компонента. Для досягнення цих цілей написано багато систем на Ерланг, і в деяких випадках Ерланг може бути кращим вибором, ніж написання системи на іншій мові та використання RPC просто для отримання цих переваг.
Як і більшість інженерних проблем, немає єдиного рішення проблеми міжпроцесорної комунікації. Вам потрібно переглянути систему, яку ви проектуєте, і зробити найкращий вибір для вашої справи використання.