Рубрики
Без рубрики

Проектирование платформы управления рекламой без серверов для компании искусственного интеллекта

Проектирование платформы управления рекламой без серверов для компании искусственного интеллекта В последнее время я нахожусь … Tagged с помощью AWS, Server, Python.

В последнее время я работаю с стартапом на ранней стадии, который специализируется на агрегировании и анализе данных рекламы, чтобы помочь компаниям оптимизировать свои бюджеты посредством целевого понимания. Будучи стартовым членом команды разработчиков, я взял на себя ответственность за разработку без серверной архитектуры в AWS. Попробовав несколько вещей тут и там, мы пришли, чтобы использовать эти удивительные инструменты в AWS для продукта:

  1. API Gateway

  2. Функции Lambda

  3. Dynamodb

  4. S3

Я кратко объясню каждый из них и постараюсь показать полную картину того, как эти компоненты взаимодействуют друг с другом.

Поскольку это будет SaaS, мы собираемся разоблачить конечные точки API нашим клиентам, где они могут подключить свои аккаунты рекламы и позволить нам собирать свои данные. Мы, в свою очередь, дадим информацию из данных и поможем им лучше использовать свой бюджет посредством целевого размещения рекламы.

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

  1. Потоковая передача Нам нужна возможность потоковой передачи данных со счетов AD (например. Google, Facebook, YouTube, et. al.) Вплоть до ведра S3, чтобы эти данные могли быть использованы для анализа на более поздней стадии. Очевидным выбором был кинезис, поскольку он имеет встроенные параметры конфигурации для источника и раковин. Но мы выбрали более легкий и более настраиваемый инструмент в DynamoDB, который имеет свои собственные потоковые триггеры с использованием Lambda. Кроме того, анализ затрат помог нам отдать предпочтение DynamoDB.

  2. Планирование Помимо потоковой передачи, нам также нужна возможность запланировать поток. Для этого есть много отличных вариантов, в том числе такие, как Airflow, Celery, et. Ал. Однако мы выбрали события CloudWatch (я думаю, что теперь они называют это Eventbridge), вызывающие функцию лямбды, это называется конечной точкой API. Это будет означать, что мы могли бы создать пользовательские графики из API.

import json
import boto3

cloudwatch_events = boto3.client('events')
lambda_client = boto3.client('lambda')


def schedule_event(schedule_object):
    # Create a scheduled rule
    lambda_name = 'markaiter-api-to-dyn'
    rule_response = cloudwatch_events.put_rule(Name='DATA_EXTRACTION_EVENT',  
                                               RoleArn='',  
                                               ScheduleExpression='custom_schedule_expression',  
                                               State='ENABLED')  
    rule_name = "DATA_EXTRACTION_EVENT"  

    # Add permission to lambda
    lambda_client.add_permission(FunctionName='api-to-dynamodb',  
                                    StatementId="{0}-Event".format(rule_name),  
                                    Action='lambda:InvokeFunction',  
                                    Principal='events.amazonaws.com',  
                                    SourceArn=rule_response['RuleArn'])  

    # Add a lambda function target
    # Put target for rule
    schedule_response = cloudwatch_events.put_targets(Rule=rule_name,  
                                                    Targets=[  
                                                        {  
                                                            'Arn': f'function_arn',  
                                                            'Id': 'EventsTargetID',  
                                                            'Input': json.dumps(schedule_object)  
                                                        }])  
    return schedule_response  

Код в значительной степени сам по себе. Что мы делаем, так это передавать график_объекта через API. Это запускает событие CloudWatch, которое, в свою очередь, запускает функцию Lambda в соответствии с принятым графиком. Функция Lambda выполняет предполагаемую задачу для сбора данных и отправки их в DynamoDB.

DynamoDB настроен таким образом, чтобы любые входящие данные запустили другую функцию Lambda, которая отправила бы ее на S3. S3, здесь, наша последняя раковина. Теперь мы можем использовать для запроса данных от S3 и применять необходимые модели машинного обучения для получения информации для клиентов.

Это то, что мы уже сделали в некоторой степени. Мы по -прежнему сталкиваемся с проблемой доступа к API API Google и Facebook, подавая заявку на доступ около месяца. Если у вас есть какие -либо советы, касающиеся API, пожалуйста, дайте мне знать. Кроме того, если вы думаете, что в этом подходе есть какие -то красные флаги или если бы вы хотели бы предложить, я был бы рад их включить.

П.с. Если вам понравился этот пост, пожалуйста, посетите Мой сайт 😊

Оригинал: “https://dev.to/dipespandey08/designing-a-serverless-ads-management-platform-for-an-ai-company-2d72”