Я разрабатываю шлюз, который будет расположен между мобильными веб-приложениями и веб-сервисами в бэкэнд-системах.Цель этого шлюза состоит в том, чтобы защитить веб-приложения от изменений API-интерфейсов веб-служб, ввести параллелизм, преобразовать сообщения, буферизовать и т. Д.
Моя предлагаемая архитектура выглядит следующим образом:
- Независимые от платформы мобильные веб-приложения с использованием PhoneGap (готово)
- Шлюз - это веб-сервис, использующий Scala для бизнес-логики и ZeroMQ для передачи сообщений (новый)
- Бэкэнды - это существующие веб-сервисы (существующие)
Шлюз является чисто ответственным за передачу, трансляцию, агрегацию и т. Д. Сообщений и не нуждается в сохранении состояния или аутентификации пользователя на этом этапе - он просто отвечает за единый интерфейс, который знает, какпоговорите с мобильными приложениями с одной стороны и с одной или несколькими службами с другой.
Я настоятельно рекомендую использовать Scala в качестве языка разработки, потому что он, кажется, хорошо подходит для приложений такого типа, но что будетправильная архитектура для такого сервиса Scala?Я посмотрел на фреймворки, такие как Lift and Play, а также подумал о создании простого веб-сервиса на основе java и просто использовал Scala для реализации своей бизнес-логики.Я твердо верю, чтобы все было как можно проще.Я опасаюсь сложных настроек и тысяч строк мертвого кода в фреймворках, которые никогда не могут быть использованы.С другой стороны, ограничивать себя решением «Роль себе» и создавать много работы и поддерживать код, который мог быть частью существующих решений, также не идеально.
Некоторые вещи, которые следует учитывать:Я архитектор и разработчик, но мои знания о Scala ограничены первой половиной «Программирование в Scala, второе издание».Кроме того, мое время очень ограничено.Тем не менее, я хочу сделать это правильно с первого раза.
Я надеюсь, что какой-нибудь умный джентльмен или дам даст мне понимание этого типа решения и, возможно, одну или две ссылки, чтобы быстро начать работу.Мне действительно нужно идти БЫСТРО, но надеюсь, что опыт или идеи другого профессионала могут помочь мне избежать ошибок на этом пути.Любое понимание сред и инструментов разработки также будет полезно.Я должен разрабатывать на Mac (правила компании), но буду развертывать на сервере Ubuntu.В настоящее время я работаю между установками Eclipse или Idea в качестве IDE и компилятором scala или sbt для сборки.
UPDATE
Спасибо за все возможные ответы ниже.Я посмотрел на каждое предложение, и у каждого из них есть свои достоинства.Теперь проблема в том, чтобы сделать ставку на правильную лошадь.Спрей, возможно, самое простое решение проблемы, но я также нашел Finagle .Это похоже на потрясающее решение моей проблемы.Я немного обеспокоен тем, что он построен поверх Netty вместо Akka.Кто-нибудь видит какие-либо проблемы с этим.Я надеялся сохранить свое решение как можно более чисто Scala, но Finagle, похоже, самый зрелый из всех.Есть идеи?