Мы разработали некоторые лямбда-функции и развернули на AWS, которые работают нормально. Во всяком случае, клиент теперь планирует AZURE.
В будущем они могут даже вернуться к AWS или любому другому поставщику.
У нас есть отдельный проект maven для связанных с AWS вещей.Следовательно, наша бизнес-логика и классы остаются неизменными.
Я создал проект maven и добавил в него отдельные лямбда-функции в качестве зависимостей.Затем создается фабричный класс, который будет получать impl на основе свойства AZURE или AWS (с использованием class.forName и отражения).Итак, я могу переключиться на Azure, просто удалив maven-зависимость и добавив AZURE-зависимость.
Согласно рисунку, я планировал создать новые AzureUtils и AzureWrapper.спроектируйте и напрямую используйте Azure Cloud, переключив облако в cloudFactory, который присутствует в утилитах Generic и который, возможно, даже будет работать (не проверено). AWS работает так или иначе.
Теперь проблема в том, что клиент не хочет, чтобы все было упаковано в 1 банку, то есть нет нет всем лямбдам в одной банке.Ему нужен какой-то слой, где должно происходить переключение.
Теперь, какой шаблон дизайна будет полезен, какой будет подход.
В настоящее время моя лямбда-функция выглядит следующим образом:
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
}
}
}
После всего этого у меня есть только 2 вопроса
Сначала я хотел бы узнать, правильный ли дизайн на диаграммечто нужно сделать.
И то, что мой клиент просит обернуть что-то волшебное, что должно обрабатывать оба типа облачных реализаций.это вообще возможно?
если возможно, направляй меня в правильном направлении
Любая помощь очень ценится.