Переключение между AWS, Azure.Дизайн шаблона - PullRequest
0 голосов
/ 06 июня 2019

Мы разработали некоторые лямбда-функции и развернули на AWS, которые работают нормально. Во всяком случае, клиент теперь планирует AZURE.

В будущем они могут даже вернуться к AWS или любому другому поставщику.

У нас есть отдельный проект maven для связанных с AWS вещей.Следовательно, наша бизнес-логика и классы остаются неизменными.

Я создал проект maven и добавил в него отдельные лямбда-функции в качестве зависимостей.Затем создается фабричный класс, который будет получать impl на основе свойства AZURE или AWS (с использованием class.forName и отражения).Итак, я могу переключиться на Azure, просто удалив maven-зависимость и добавив AZURE-зависимость.

Design is somewhat like this

Согласно рисунку, я планировал создать новые 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 вопроса

Сначала я хотел бы узнать, правильный ли дизайн на диаграммечто нужно сделать.

И то, что мой клиент просит обернуть что-то волшебное, что должно обрабатывать оба типа облачных реализаций.это вообще возможно?

если возможно, направляй меня в правильном направлении

Любая помощь очень ценится.

1 Ответ

0 голосов
/ 06 июня 2019

о вашем втором вопросе о том, как работать с обоими типами облаков, пожалуйста, проверьте это решение по третьей части serverless.com . Это компания, которая создает собственную бессерверную оболочку, так что вы можете быть свободны от блокировки поставщика

...