Pipeline de processamento de fluxo com Azure Stream AnalyticsStream processing pipeline with Azure Stream Analytics

Essa arquitetura de referência mostra um pipeline de processamento de fluxo de ponta a ponta.This reference architecture shows an end-to-end stream processing pipeline. O pipeline ingere dados de duas fontes, correlaciona os registros em dois fluxos e calcula uma média móvel em uma janela de tempo.The pipeline ingests data from two sources, correlates records in the two streams, and calculates a rolling average across a time window. Os resultados são armazenados para análise posterior.The results are stored for further analysis.

Logotipo do GitHub uma implementação de referência para essa arquitetura está disponível no GitHub.GitHub logo A reference implementation for this architecture is available on GitHub.

Arquitetura de referência para a criação de um pipeline de processamento de fluxo com o Azure Stream Analytics

Cenário: uma empresa de táxi coleta dados sobre cada viagem.Scenario: A taxi company collects data about each taxi trip. Para esse cenário, assumimos que há dois dispositivos separados enviando dados.For this scenario, we assume there are two separate devices sending data. O táxi tem um medidor que envia informações sobre cada corrida — duração, distância e locais de embarque e desembarque de passageiros.The taxi has a meter that sends information about each ride — the duration, distance, and pickup and dropoff locations. Um dispositivo separado aceita pagamentos de clientes e envia dados sobre tarifas.A separate device accepts payments from customers and sends data about fares. A empresa de táxi deseja calcular a média de gorjeta por quilômetro dirigido em tempo real para identificar tendências.The taxi company wants to calculate the average tip per mile driven, in real time, in order to spot trends.

ArquiteturaArchitecture

A arquitetura consiste nos componentes a seguir.The architecture consists of the following components.

Fontes de dados.Data sources. Nessa arquitetura há duas fontes de dados que geram fluxos de dados em tempo real.In this architecture, there are two data sources that generate data streams in real time. O primeiro fluxo contém informações da corrida, e o segundo contém informações da tarifa.The first stream contains ride information, and the second contains fare information. A arquitetura de referência inclui um gerador de dados simulados que faz a leitura de um conjunto de arquivos estáticos e envia os dados para os Hubs de Eventos.The reference architecture includes a simulated data generator that reads from a set of static files and pushes the data to Event Hubs. Em um aplicativo real, as fontes de dados seriam dispositivos instalados nos táxis.In a real application, the data sources would be devices installed in the taxi cabs.

Hubs de eventos do Azure.Azure Event Hubs. Hubs de Eventos são um serviço de ingestão de eventos.Event Hubs is an event ingestion service. Essa arquitetura usa duas instâncias de hub de eventos, uma para cada fonte de dados.This architecture uses two event hub instances, one for each data source. Cada fonte de dados envia um fluxo de dados para o hub de eventos associado.Each data source sends a stream of data to the associated event hub.

Azure Stream Analytics.Azure Stream Analytics. Stream Analytics é um mecanismo de processamento de eventos.Stream Analytics is an event-processing engine. Um trabalho do Stream Analytics lê os fluxos de dados dos dois hubs de eventos e executa o processamento de fluxo.A Stream Analytics job reads the data streams from the two event hubs and performs stream processing.

Cosmos DB.Cosmos DB. A saída do trabalho do Stream Analytics é uma série de registros gravados como documentos JSON para um banco de dados de documento do Cosmos DB.The output from the Stream Analytics job is a series of records, which are written as JSON documents to a Cosmos DB document database.

Microsoft Power bi.Microsoft Power BI. O Power BI é um conjunto de ferramentas de análise de negócios para analisar dados a fim de obter informações comerciais.Power BI is a suite of business analytics tools to analyze data for business insights. Nessa arquitetura, ele carrega os dados do Cosmos DB.In this architecture, it loads the data from Cosmos DB. Isso permite que os usuários analisem o conjunto completo de dados históricos que foram coletados.This allows users to analyze the complete set of historical data that's been collected. Também é possível transmitir os resultados diretamente do Stream Analytics para o Power BI para obter uma exibição em tempo real dos dados.You could also stream the results directly from Stream Analytics to Power BI for a real-time view of the data. Para obter mais informações, confira Streaming em tempo real no Power BI.For more information, see Real-time streaming in Power BI.

Azure Monitor.Azure Monitor. O Azure Monitor coleta métricas de desempenho sobre os serviços do Azure implantados na solução.Azure Monitor collects performance metrics about the Azure services deployed in the solution. Ao visualizá-los em um painel, é possível obter informações sobre a integridade da solução.By visualizing these in a dashboard, you can get insights into the health of the solution.

Ingestão de dadosData ingestion

Para simular uma fonte de dados, essa arquitetura de referência usa o conjunto de dados dos Dados de táxi de Nova York[1].To simulate a data source, this reference architecture uses the New York City Taxi Data dataset[1]. Esse DataSet contém dados sobre viagens de táxi em Nova York em um período de quatro anos (2010 – 2013).This dataset contains data about taxi trips in New York City over a four-year period (2010–2013). Ele contém dois tipos de registro: Ride dados e dados de Tarifa.It contains two types of record: ride data and fare data. Os dados de corrida incluem a duração da viagem, a distância da viagem e os locais de embarque e desembarque de passageiros.Ride data includes trip duration, trip distance, and pickup and dropoff location. Os dados de tarifa incluem a tarifa, impostos e quantias das gorjetas.Fare data includes fare, tax, and tip amounts. Campos comuns em ambos os tipos de registro incluem o número da licença, carteira de habilitação e ID do fornecedor.Common fields in both record types include medallion number, hack license, and vendor ID. Juntos, esses três campos fazem a identificação exclusiva de um táxi e um motorista.Together these three fields uniquely identify a taxi plus a driver. Os dados são armazenados no formato CSV.The data is stored in CSV format.

[1] Donovan, Brian; Trabalho, Dan (2016): dados de viagem de táxi de Nova York (2010-2013).[1] Donovan, Brian; Work, Dan (2016): New York City Taxi Trip Data (2010-2013). Universidade de Illinois em Urbana-Champaign.University of Illinois at Urbana-Champaign. https://doi.org/10.13012/J8PN93H8

O gerador de dados é um aplicativo .NET Core que lê os registros e os envia para os Hubs de Eventos do Azure.The data generator is a .NET Core application that reads the records and sends them to Azure Event Hubs. O gerador envia os dados de corrida em formato JSON e os dados de tarifa em formato CSV.The generator sends ride data in JSON format and fare data in CSV format.

Os Hubs de Eventos usam partições para segmentar os dados.Event Hubs uses partitions to segment the data. As partições permitem que um consumidor leia cada partição em paralelo.Partitions allow a consumer to read each partition in parallel. Ao enviar dados para os Hubs de Eventos, é possível especificar a chave de partição explicitamente.When you send data to Event Hubs, you can specify the partition key explicitly. Caso contrário, os registros são atribuídos a partições no estilo round robin.Otherwise, records are assigned to partitions in round-robin fashion.

Nesse cenário específico, os dados de corrida e de tarifa devem ter a mesma ID de partição para um determinado táxi.In this particular scenario, ride data and fare data should end up with the same partition ID for a given taxi cab. Isso permite que o Stream Analytics aplique um grau de paralelismo ao correlacionar os dois fluxos.This enables Stream Analytics to apply a degree of parallelism when it correlates the two streams. Um registro na partição n dos dados de corrida corresponderá a um registro na partição n dos dados de tarifa.A record in partition n of the ride data will match a record in partition n of the fare data.

Diagrama de processamento de fluxo com o Azure Stream Analytics e os Hubs de Eventos

No gerador de dados, o modelo de dados comum para ambos os tipos de registro têm uma propriedade PartitionKey que é a concatenação de Medallion, HackLicense e VendorId.In the data generator, the common data model for both record types has a PartitionKey property which is the concatenation of Medallion, HackLicense, and VendorId.

public abstract class TaxiData
{
    public TaxiData()
    {
    }

    [JsonProperty]
    public long Medallion { get; set; }

    [JsonProperty]
    public long HackLicense { get; set; }

    [JsonProperty]
    public string VendorId { get; set; }

    [JsonProperty]
    public DateTimeOffset PickupTime { get; set; }

    [JsonIgnore]
    public string PartitionKey
    {
        get => $"{Medallion}_{HackLicense}_{VendorId}";
    }

Essa propriedade é usada para fornecer uma chave de partição explícita ao enviar para Hubs de Eventos:This property is used to provide an explicit partition key when sending to Event Hubs:

using (var client = pool.GetObject())
{
    return client.Value.SendAsync(new EventData(Encoding.UTF8.GetBytes(
        t.GetData(dataFormat))), t.PartitionKey);
}

Processamento de fluxoStream processing

O trabalho de processamento de fluxo é definido usando uma consulta SQL com várias etapas distintas.The stream processing job is defined using a SQL query with several distinct steps. As duas primeiras etapas simplesmente selecionam registros dos dois fluxos de entrada.The first two steps simply select records from the two input streams.

WITH
Step1 AS (
    SELECT PartitionId,
           TRY_CAST(Medallion AS nvarchar(max)) AS Medallion,
           TRY_CAST(HackLicense AS nvarchar(max)) AS HackLicense,
           VendorId,
           TRY_CAST(PickupTime AS datetime) AS PickupTime,
           TripDistanceInMiles
    FROM [TaxiRide] PARTITION BY PartitionId
),
Step2 AS (
    SELECT PartitionId,
           medallion AS Medallion,
           hack_license AS HackLicense,
           vendor_id AS VendorId,
           TRY_CAST(pickup_datetime AS datetime) AS PickupTime,
           tip_amount AS TipAmount
    FROM [TaxiFare] PARTITION BY PartitionId
),

A próxima etapa une os dois fluxos de entrada para selecionar registros correspondentes de cada fluxo.The next step joins the two input streams to select matching records from each stream.

Step3 AS (
  SELECT
         tr.Medallion,
         tr.HackLicense,
         tr.VendorId,
         tr.PickupTime,
         tr.TripDistanceInMiles,
         tf.TipAmount
    FROM [Step1] tr
    PARTITION BY PartitionId
    JOIN [Step2] tf PARTITION BY PartitionId
      ON tr.Medallion = tf.Medallion
     AND tr.HackLicense = tf.HackLicense
     AND tr.VendorId = tf.VendorId
     AND tr.PickupTime = tf.PickupTime
     AND tr.PartitionId = tf.PartitionId
     AND DATEDIFF(minute, tr, tf) BETWEEN 0 AND 15
)

Essa consulta une registros em um conjunto de campos que identificam exclusivamente os registros correspondentes (Medallion, HackLicense, VendorId e PickupTime).This query joins records on a set of fields that uniquely identify matching records (Medallion, HackLicense, VendorId, and PickupTime). A instrução JOIN também inclui a ID da partição.The JOIN statement also includes the partition ID. Conforme mencionado, ela tira vantagem do fato de que registros de correspondência sempre têm a mesma ID de partição nesse cenário.As mentioned, this takes advantage of the fact that matching records always have the same partition ID in this scenario.

No Stream Analytics, as junções são temporais, o que significa que os registros são unidos em uma janela específica de tempo.In Stream Analytics, joins are temporal, meaning records are joined within a particular window of time. Caso contrário, o trabalho pode precisar aguardar indefinidamente por uma correspondência.Otherwise, the job might need to wait indefinitely for a match. A função DATEDIFF especifica o quanto dois registros correspondentes podem estar separados no tempo para haver uma correspondência.The DATEDIFF function specifies how far two matching records can be separated in time for a match.

A última etapa no trabalho calcula a média de gorjeta por quilômetro, agrupada por uma janela de salto de 5 minutos.The last step in the job computes the average tip per mile, grouped by a hopping window of 5 minutes.

SELECT System.Timestamp AS WindowTime,
       SUM(tr.TipAmount) / SUM(tr.TripDistanceInMiles) AS AverageTipPerMile
  INTO [TaxiDrain]
  FROM [Step3] tr
  GROUP BY HoppingWindow(Duration(minute, 5), Hop(minute, 1))

O Stream Analytics fornece várias funções de janelas.Stream Analytics provides several windowing functions. Uma janela de salto se move para a frente no tempo conforme um período fixo, nesse caso, 1 minuto por salto.A hopping window moves forward in time by a fixed period, in this case 1 minute per hop. O resultado é o cálculo de uma média móvel nos últimos 5 minutos.The result is to calculate a moving average over the past 5 minutes.

Na arquitetura mostrada aqui, apenas os resultados do trabalho do Stream Analytics são salvos no Cosmos DB.In the architecture shown here, only the results of the Stream Analytics job are saved to Cosmos DB. Para um cenário de Big Data, considere usar também uma Captura de Hubs de Eventos para salvar os dados brutos de evento no armazenamento de Blobs do Azure.For a big data scenario, consider also using Event Hubs Capture to save the raw event data into Azure Blob storage. Ao manter os dados brutos, é possível executar consultas em lote de seus dados históricos em um momento posterior para derivar novos insights de dados.Keeping the raw data will allow you to run batch queries over your historical data at later time, in order to derive new insights from the data.

Considerações sobre escalabilidadeScalability considerations

Hubs de EventosEvent Hubs

A capacidade da taxa de transferência dos Hubs de Eventos é medida em unidades de produtividade.The throughput capacity of Event Hubs is measured in throughput units. É possível fazer o dimensionamento automático de um hub de eventos ao permitir a inflação automática, o que dimensiona automaticamente as unidades de produtividade com base no tráfego até um número máximo configurado.You can autoscale an event hub by enabling auto-inflate, which automatically scales the throughput units based on traffic, up to a configured maximum.

Stream AnalyticsStream Analytics

Para o Stream Analytics, os recursos de computação alocados em um trabalho são medidos em unidades de streaming.For Stream Analytics, the computing resources allocated to a job are measured in Streaming Units. Os trabalhos do Stream Analytics executam um dimensionamento melhor caso o trabalho possa ser paralelizado.Stream Analytics jobs scale best if the job can be parallelized. Dessa forma, o Stream Analytics pode distribuir o trabalho entre vários nós de computação.That way, Stream Analytics can distribute the job across multiple compute nodes.

Para a entrada de Hubs de Eventos, use a palavra-chave PARTITION BY para particionar o trabalho do Stream Analytics.For Event Hubs input, use the PARTITION BY keyword to partition the Stream Analytics job. Os dados serão divididos em subconjuntos com base nas partições dos Hubs de Eventos.The data will be divided into subsets based on the Event Hubs partitions.

Funções de janelas e uniões temporais exigem UAs adicionais.Windowing functions and temporal joins require additional SU. Quando possível, use PARTITION BY para que cada partição seja processada separadamente.When possible, use PARTITION BY so that each partition is processed separately. Para saber mais, confira Compreender e ajustar unidades de streaming.For more information, see Understand and adjust Streaming Units.

Se não for possível paralelizar todo o trabalho do Stream Analytics, tente dividir o trabalho em várias etapas, começando com uma ou mais etapas paralelas.If it's not possible to parallelize the entire Stream Analytics job, try to break the job into multiple steps, starting with one or more parallel steps. Dessa forma, as primeiras etapas conseguem ser executadas em paralelo.That way, the first steps can run in parallel. Por exemplo, nesta arquitetura de referência:For example, in this reference architecture:

  • As etapas 1 e 2 são instruções SELECT simples que selecionam registros dentro de uma única partição.Steps 1 and 2 are simple SELECT statements that select records within a single partition.
  • A etapa 3 realiza uma junção particionada em dois fluxos de entrada.Step 3 performs a partitioned join across two input streams. Essa etapa tira proveito do fato de que os registros correspondentes compartilham a mesma chave de partição e, assim, é garantido que terão a mesma ID de partição em cada fluxo de entrada.This step takes advantage of the fact that matching records share the same partition key, and so are guaranteed to have the same partition ID in each input stream.
  • A etapa 4 agrega em todas as partições.Step 4 aggregates across all of the partitions. Essa etapa não pode ser paralelizada.This step cannot be parallelized.

Use o diagrama de trabalho do Stream Analytics para ver quantas partições são atribuídas a cada etapa no trabalho.Use the Stream Analytics job diagram to see how many partitions are assigned to each step in the job. O diagrama a seguir mostra o diagrama de trabalho dessa arquitetura de referência:The following diagram shows the job diagram for this reference architecture:

Diagrama do trabalho

Cosmos DBCosmos DB

A capacidade da taxa de transferência para o Cosmos DB é medida em Unidades de Solicitação (RU).Throughput capacity for Cosmos DB is measured in Request Units (RU). Para dimensionar um contêiner do Cosmos DB após 10.000 RU, é preciso especificar uma chave de partição ao criar o contêiner, além de incluir a chave de partição em todos os documentos.In order to scale a Cosmos DB container past 10,000 RU, you must specify a partition key when you create the container, and include the partition key in every document.

Nessa arquitetura de referência, os novos documentos são criados apenas uma vez por minuto (o intervalo da janela de salto), portanto, os requisitos de taxa de transferência são um valor muito baixo.In this reference architecture, new documents are created only once per minute (the hopping window interval), so the throughput requirements are quite low. Por esse motivo, não é preciso atribuir uma chave de partição nesse cenário.For that reason, there's no need to assign a partition key in this scenario.

Considerações de monitoramentoMonitoring considerations

Com qualquer solução de processamento de fluxo, é importante monitorar o desempenho e a integridade do sistema.With any stream processing solution, it's important to monitor the performance and health of the system. O Azure Monitor coleta métricas e logs de diagnóstico dos serviços do Azure usados na arquitetura.Azure Monitor collects metrics and diagnostics logs for the Azure services used in the architecture. O Azure Monitor é criado na plataforma do Azure e não exige nenhum código adicional em seu aplicativo.Azure Monitor is built into the Azure platform and does not require any additional code in your application.

Qualquer um dos sinais de aviso a seguir indica que você deve escalar horizontalmente o recurso relevante do Azure:Any of the following warning signals indicate that you should scale out the relevant Azure resource:

  • Os Hubs de Eventos limitam as solicitações ou a cota diária de mensagens está próxima.Event Hubs throttles requests or is close to the daily message quota.
  • O trabalho do Stream Analytics usa, consistentemente, mais de 80% das unidades de streaming alocadas (SU).The Stream Analytics job consistently uses more than 80% of allocated Streaming Units (SU).
  • O Cosmos DB começa a limitar solicitações.Cosmos DB begins to throttle requests.

A arquitetura de referência inclui um painel personalizado, que é implantado no portal do Azure.The reference architecture includes a custom dashboard, which is deployed to the Azure portal. Depois de implantar a arquitetura, você pode exibir o painel abrindo o portal do Azure e selecionando TaxiRidesDashboard na lista de painéis.After you deploy the architecture, you can view the dashboard by opening the Azure portal and selecting TaxiRidesDashboard from list of dashboards. Para saber mais sobre a criação e implantação de painéis personalizados no portal do Azure, confira Criar painéis do Azure programaticamente.For more information about creating and deploying custom dashboards in the Azure portal, see Programmatically create Azure Dashboards.

A imagem a seguir mostra o painel depois que o trabalho do Stream Analytics foi executado por aproximadamente uma hora.The following image shows the dashboard after the Stream Analytics job ran for about an hour.

Captura de tela do dashboard Corridas de táxi

O painel na parte inferior esquerda mostra que o consumo de SU do trabalho do Stream Analytics aumenta durante os primeiros 15 minutos e diminui em seguida.The panel on the lower left shows that the SU consumption for the Stream Analytics job climbs during the first 15 minutes and then levels off. Isso é um padrão típico conforme o trabalho atinge um estado estável.This is a typical pattern as the job reaches a steady state.

Observe que os Hubs de Eventos está limitando as solicitações, o que é mostrado no painel superior à direita.Notice that Event Hubs is throttling requests, shown in the upper right panel. Uma solicitação ser limitada ocasionalmente não é um problema, porque o SDK do cliente dos Hubs de Eventos faz novas tentativas automaticamente ao receber um erro de limitação.An occasional throttled request is not a problem, because the Event Hubs client SDK automatically retries when it receives a throttling error. No entanto, se houver erros de limitação consistentes, isso significa que o hub de eventos precisa de mais unidades de produtividade.However, if you see consistent throttling errors, it means the event hub needs more throughput units. O gráfico a seguir mostra uma execução de teste usando o recurso de inflação automática dos Hubs de Eventos, o que dimensiona automaticamente as unidades de produtividade conforme o necessário.The following graph shows a test run using the Event Hubs auto-inflate feature, which automatically scales out the throughput units as needed.

Captura de tela de dimensionamento automático de Hubs de Eventos

A inflação automática foi habilitada por volta da marca de 06:35.Auto-inflate was enabled at about the 06:35 mark. É possível ver a queda de p em solicitações limitadas, uma vez que os Hubs de Eventos dimensionam automaticamente até 3 unidades de produtividade.You can see the p drop in throttled requests, as Event Hubs automatically scaled up to 3 throughput units.

Curiosamente, isso criava o efeito colateral de aumento da utilização de SU no trabalho do Stream Analytics.Interestingly, this had the side effect of increasing the SU utilization in the Stream Analytics job. Ao fazer a limitação, os Hubs de Eventos foram reduzindo artificialmente a taxa de ingestão para o trabalho do Stream Analytics.By throttling, Event Hubs was artificially reducing the ingestion rate for the Stream Analytics job. É muito comum que a resolução de um gargalo no desempenho revele outra.It's actually common that resolving one performance bottleneck reveals another. Nesse caso, a alocação de SU adicional ao trabalho do Stream Analytics resolveu o problema.In this case, allocating additional SU for the Stream Analytics job resolved the issue.

Considerações de custoCost considerations

Use a Calculadora de Preços do Azure para estimar os custos.Use the Azure pricing calculator to estimate costs. Aqui estão algumas considerações sobre os serviços usados nesta arquitetura de referência.Here are some considerations for services used in this reference architecture.

Stream Analytics do AzureAzure Stream Analytics

O Azure Stream Analytics é cobrado pelo número de unidades de streaming ($ 0.11/hora) necessárias para processar os dados no serviço.Azure Stream Analytics is priced by the number of streaming units ($0.11/hour) required to process the data into the service.

Stream Analytics pode ser caro se você não estiver processando os dados em tempo real ou em pequenas quantidades de dados.Stream Analytics can be expensive if you are not processing the data in real-time or small amounts of data. Para esses casos de uso, considere o uso de Azure Functions ou de aplicativos lógicos para mover dados de hubs de eventos do Azure para um armazenamento de dados.For those use cases, consider using Azure Functions or Logic Apps to move data from Azure Event Hubs to a data store.

Hubs de eventos e Azure Cosmos DB do AzureAzure Event Hubs and Azure Cosmos DB

Para obter considerações sobre custos sobre os hubs de eventos e Cosmos DB do Azure, consulte Considerações de custo consulte o processamento de fluxo com a arquitetura de referência Azure Databricks.For cost considerations about Azure Event Hubs and Cosmos DB, see Cost considerations see the Stream processing with Azure Databricks reference architecture.

Implantar a soluçãoDeploy the solution

Para a implantação e execução da implementação de referência, siga as etapas em Leia-me do GitHub.To the deploy and run the reference implementation, follow the steps in the GitHub readme.

Considerações de DevOpsDevOps considerations

  • Crie grupos de recursos separados para ambientes de produção, desenvolvimento e teste.Create separate resource groups for production, development, and test environments. Ter grupos de recursos separados facilita o gerenciamento de implantações, a exclusão de implantações de teste a atribuição de direitos de acesso.Separate resource groups make it easier to manage deployments, delete test deployments, and assign access rights.

  • Use Azure Resource Manager modelo para implantar os recursos do Azure seguindo o processo de infraestrutura como código (IaC).Use Azure Resource Manager template to deploy the Azure resources following the infrastructure as Code (IaC) Process. Com modelos, é mais fácil automatizar implantações usando Azure DevOps Servicesou outras soluções de CI/CD.With templates, automating deployments using Azure DevOps Services, or other CI/CD solutions is easier.

  • Coloque cada carga de trabalho em um modelo de implantação separado e armazene os recursos em sistemas de controle do código-fonte.Put each workload in a separate deployment template and store the resources in source control systems. Você pode implantar os modelos juntos ou individualmente como parte de um processo de CI/CD, facilitando o processo de automação.You can deploy the templates together or individually as part of a CI/CD process, making the automation process easier.

    Nessa arquitetura, os hubs de eventos do Azure, Log Analytics e Cosmos DB são identificados como uma única carga de trabalho.In this architecture, Azure Event Hubs, Log Analytics, and Cosmos DB are identified as a single workload. Esses recursos estão incluídos em um único modelo ARM.These resources are included in a single ARM template.

  • Considere preparar suas cargas de trabalho.Consider staging your workloads. Implante em vários estágios e execute verificações de validação em cada estágio antes de passar para o próximo estágio.Deploy to various stages and run validation checks at each stage before moving to the next stage. Dessa forma, você pode enviar por push atualizações para seus ambientes de produção de uma maneira altamente controlada e minimizar problemas imprevistos de implantação.That way you can push updates to your production environments in a highly controlled way and minimize unanticipated deployment issues.

  • Considere o uso de Azure monitor para analisar o desempenho do pipeline de processamento de fluxo.Consider using Azure Monitor to analyze the performance of your stream processing pipeline. Para obter mais informações, consulte monitoring Azure Databricks.For more information, see Monitoring Azure Databricks.

Para obter mais informações, consulte a seção DevOps em Microsoft Azure estrutura bem arquitetada.For more information, see the DevOps section in Microsoft Azure Well-Architected Framework.

Talvez seja melhor examinar os seguintes cenários de exemplo do Azure, que demonstram soluções específicas usando algumas das mesmas tecnologias:You may wish to review the following Azure example scenarios that demonstrate specific solutions using some of the same technologies: