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