我们已经开发了一些lambda函数并将其部署在AWS上运行良好, 无论如何,客户现在正在计划AZURE。
将来他们甚至可能会切换回AWS或任何其他供应商。
我们有一个单独的Maven项目,用于处理AWS相关内容。 因此,我们的业务逻辑和类保持不变。
我所做的是创建一个maven项目,并将各个lambda函数作为依赖项添加到该项目中。 然后创建一个工厂类,该类将基于AZURE或AWS属性(使用class.forName和Reflection)获得隐含的。 这样,我可以通过删除maven依赖项并添加AZURE依赖项来切换到Azure。
根据图片,我的计划是通过切换通用utils中存在的cloudFactory中的云来创建新的AzureUtils和AzureWrapper项目并直接使用Azure Cloud,甚至希望它能够工作(未经测试),AWS仍会这样工作。
现在的问题是客户不希望将所有东西都装在1个罐子中,即在一个罐子中对所有lambda都不要。他想要进行切换的地方。
现在哪种设计模式会有用,那将是什么方法。
当前我的Lambda函数如下所示
public class Hello implements RequestHandler<S3Event, Context > {
public String handleRequest(S3Event s3event, Context context) {
.................
call to business processor as in diag
}
}
azure函数看起来有点像带有注释的简单类
public class Function {
@FunctionName("hello")
public HttpResponseMessage run(
@HttpTrigger(name = "req", methods = { HttpMethod.GET, HttpMethod.POST }, authLevel = AuthorizationLevel.ANONYMOUS) HttpRequestMessage<Optional<String>> request,
final ExecutionContext context) {
context.getLogger().info("Java HTTP trigger processed a request.");
// Parse query parameter
String query = request.getQueryParameters().get("name");
String name = request.getBody().orElse(query);
if (name != null) {
call to business processor as in diagram
}
}
}
毕竟,我只有两个问题
我想首先知道图中的设计是否正确。
而我的客户正在要求一种神奇的包装,它应该能够处理两种类型的云实现。这有可能吗?
如果可能的话,会指引我正确的方向
非常感谢您的帮助。
答案 0 :(得分:0)