Бессерверные вычисления: Diego Elastic Runtime от Cloud Foundry
Я пытаюсь понять архитектуру без сервера, которая говорит о двух разных вещах:
Вы, как разработчик приложения, думаете только о своей функции, а не об обязанностях сервера. Ну, сервер все еще должен быть где-то. Под серверами я понимаю, что это означает и то, и другое:
- на стороне инфраструктуры Физический сервер / ВМ / контейнер
- а также на стороне программного обеспечения: скажем, Tomcat
Теперь я работал над Cloud Foundry и изучал ER, то есть Diego Architecture of Cloud Foundry, а также пакет buildpack и открытое средство Service Broker API Cloud Foundry. По сути, Cloud Foundry также уже работает над "похожей" моделью, в которой разработчик приложения фокусируется на своем коде, а модель развертывания с помощью buildpack готовит дроплет с необходимой средой выполнения Java и средой Tomcat, а затем использует ее для создания контейнера для сада. который обслуживает запросы пользователей. Таким образом, разработчик не должен беспокоиться о том, откуда поступит сервер Tomcat или виртуальная машина / контейнер. Итак, разве мы не выполняем этот мандат в Cloud Foundry?
Ваш код появляется на время выполнения, а затем умирает. Я согласен, что это отличается от приложений / микросервисов, которые мы пишем в Cloud Foundry, в том, что они представляют собой долго выполняющиеся серверные процессы. Теперь, если бы я должен был разработать веб-приложение / микросервис Java с 3 конечными точками REST (myapp / resource1, myapp / resource2, myapp / resource3), возможно, на веб-сервере Tomcat, мне нужно:
- физическая машина или виртуальная машина или контейнер,
- среда выполнения Java
- контейнер Tomcat, чтобы иметь возможность запустить мой файл войны.
Исходя из того, что предлагает Serverless, я предполагаю, что должен сосредоточиться только на очень конкретной функции, скажем, обработке запроса к myapp / resource1. Теперь по такому сценарию:
- Как должен выглядеть мой соответствующий класс Java?
- Где я могу получить доступ к объектам J2EE, таким как объекты HttpServletRequest или HttpServletResponse, и другим объектам, предоставляемым http или сервлетом, JAX-RS или Spring MVC, которые создаются средой выполнения Tomcat?
- Мой класс Java выполняется в контейнере, который создается на время выполнения, а затем уничтожается после выполнения? Если да, кто управляет созданием / уничтожением такого контейнера?
- Tomcat даже потребуется? Существует ли совершенно другой общий способ обработки запросов к этим трем конечным точкам REST? Это как серверы httpd, использующие скрипты Python/ CGI для обработки запросов HTTP?