Извините за очень сложный вопрос, но это то, что я изучал некоторое время, и это меня очень расстраивает. Я чувствую, что в сегодняшнюю эпоху у нас есть миллион и один способ реализации сервисов, которые являются кросс-платформенными (SOAP) и простыми в создании (благодаря .NET, java и другим платформам). Тем не менее, эти технологии существуют в сообществе уже 5-10 лет, но нас (по крайней мере, меня) постоянно мучают одни и те же проблемы:
- Идентификация (Отслеживание) - UDDI; например, мне пришлось 3 раза в этом месяце напоминать коллеге, где находится служба, несмотря на то, что есть вики, в которой обсуждается служба, и PDF-версия той же документации, которая находится в репозитории, где мы храним наши сервисные документы. .
- Масштабируемость — готовая кластеризация; Как организации, мы тратим много денег на то, чтобы платить нашим администраторам только за то, чтобы они наблюдали за использованием наших сервисов и принимали решения, например, нужно ли этому сервису больше оперативной памяти, больше процессора, больше интерфейсов? Как мне сбалансировать нагрузку?
- Мониторинг - протоколирование ошибок и т.д.; Я не могу сосчитать, сколько раз мне приходилось настраивать трассировку в службах, чтобы понять, почему возникает ошибка, которая, по-видимому, влияет только на одного клиента, или мне приходилось кодировать логику в службе для сериализации исключений, регистрации исключений в БД, изящно провалиться и т. д.
- Развертывание — простота развертывания; ни одна из этих библиотек DLL не развертывается на 5 серверах с балансировкой нагрузки
Каждая из этих проблем требует определенного типа индивидуального решения, реализованного организацией. Документация и UDDI для #1. Аппаратное/программное обеспечение для виртуализации и балансировки нагрузки для #2. Трассировка, запись исключений в базы данных/журналы и т.д. для #3. Специальное программное обеспечение для развертывания для # 4. Я работаю в организации среднего размера. Я даже не могу себе представить, как компания размером с Sun, Google или Microsoft справится с этими дилеммами.
Может быть, мое видение нереалистично, но я мечтаю о фреймворке как таковом, который живет поверх кластера серверов, управляющего всем вышеперечисленным. Я был в восторге, прочитав о Microsoft AppFabric, так как он действительно расширяет некоторые функциональные возможности BizTalk для разработчиков служб WCF: кэширование, хостинг, мониторинг и т. д. Однако из того, что я видел, я все еще не чувствую, что он работает. я мечтаю о комплексном решении, которое помогает разработчику и организации создавать сервисы, которые легко масштабируются между кластерами, легко развертываются в кластере и идентифицируемы, возможно, даже с поддержкой версий.
Итак, я не имею в виду, что этот пост будет о моей мечте. У меня действительно есть вопрос. Во-первых, моя мечта/желание совершенно нереалистичны? Кроме того, какие существуют решения, которые пытаются решить эти проблемы, не ограничивая нас новым и более проприетарным способом (BizTalk) разработки услуг? Наконец, что касается комплексного решения SOA/ESB, где мы видим наибольший потенциал на рынке прямо сейчас или в будущем?