Publicado por Alberto Medina, mediador de desenvolvedores em tecnologia AMP e WordPress, Google
Para fazer com que usuários iniciantes tenham prática com sites e conteúdo na Web, o projeto AMP permite uma experiência com páginas móveis aceleradas de qualidade excepcional no WordPress. Ao longo do último ano, tivemos muito trabalho para melhorar a qualidade do plug-in AMP oficial e hoje estamos lançando a versão 1.0-stable do plug-in AMP oficial para WordPress.
A versão 1.0 do plug-in integra perfeitamente o fluxo de trabalho de criação de conteúdo AMP com a criação de conteúdo padrão do WordPress, tanto no modelo de edição clássico quanto no editor Gutenberg. Mais especificamente, uma experiência AMP nativa é compatível com esse lançamento. Isso permite que sites WordPress sejam construídos inteiramente com AMP, sem uma versão AMP duplicada de uma página em “modo pareado”.
Veja alguns recursos e funcionalidades da versão 1.0:
Convidamos você a experimentar a nova versão:
O plug-in AMP oficial para WordPress fornece ferramentas e funcionalidades essenciais para a criação de conteúdo AMP. É importante lembrar que o plug-in não é uma solução completa para “AMPlificar seu site”, mas tem funções que servem para permitir um ecossistema AMP compatível com o WordPress.
O que vem a seguir é uma jornada para que esse ecossistema seja adotado. Conforme seguimos por essa estrada, mais plug-ins e temas serão disponibilizados de forma criativa e com total compatibilidade AMP. Assim, os proprietários de sites encontrarão facilmente componentes que são compatíveis com AMP e poderão criar sites completos ao selecionar plug-ins da página de plug-ins/temas do WordPress.org.
No futuro, esperamos ter soluções completas que possam ser usadas pelos proprietários de sites para fornecer experiências AMP incríveis de maneira fácil, independentemente do nível de experiência que tiverem. Nosso objetivo final é a alta qualidade de conteúdo AMP em todos os sites do WordPress.
Junte-se a nós nessa jornada e compartilhe seu feedback sobre a versão mais recente. Estamos animados com o potencial que o plug-in tem de melhorar a experiência do usuário na Web e ansiosos pelo que está por vir.
Publicado por Ashish Shah, gerente de produtos, RA e RV do Google
A magia da realidade aumentada está na forma em que ela mescla o mundo digital e o físico. Para que as experiências em RA sejam realmente imersivas, os objetos digitais precisam parecer realistas, como se estivessem mesmo ali com você. Esse é um ponto que continuamos a priorizar enquanto trabalhamos na atualização do ARCore e do Sceneform, nossa biblioteca de renderização 3D para desenvolvedores Java.
Hoje, com o lançamento do ARCore 1.6, trazemos outras melhorias que ajudarão você a criar experiências mais realistas e atraentes, inclusive melhor controle de planos e diversas melhorias de iluminação no Sceneform.
Com 250 milhões de dispositivos compatíveis com o ARCore, os desenvolvedores podem trazer essas experiências para uma base de usuários ainda maior e em expansão.
As versões anteriores do Sceneform tinham a cor amarela como padrão para a otimização da luz ambiente. A versão 1.6 tem como padrão o neutro e o branco. Isso está mais de acordo com a forma que a luz aparece no mundo real, fazendo com que os objetos digitais pareçam mais naturais. Veja as diferenças abaixo.
Essa mudança também fará com que os objetos renderizados com o Sceneform pareçam afetados mais naturalmente pela cor e pela luz ao seu redor. Caso você esteja visualizando um objeto em RA durante o pôr do sol, por exemplo, ele aparecerá iluminado por tons de vermelho e laranja, assim como os objetos reais na paisagem.
Além disso, atualizamos a imagem do ambiente interno do Sceneform para fornecer uma cena mais neutra para seu app. Isso será mais perceptível ao visualizar reflexos em superfícies metálicas lisas.
Para ajudar você a melhorar ainda mais a qualidade e a interação nos seus apps de RA, adicionamos captura de tela e gravação ao Sceneform. Esse é um fator que diversos desenvolvedores solicitaram para ajudar com gravações de demonstração e prototipagem. Também pode ser usado como um recurso de face externa, permitindo que seus usuários compartilhem capturas de tela e vídeos nas mídias sociais com maior facilidade, o que pode ajudar a divulgar seu app.
Você pode acessar essa funcionalidade por meio da API de espelhamento de superfície para a classe do SceneView. A API permite que você mostre a visualização Sceneform na tela de um dispositivo ao mesmo tempo em que a renderização é feita em outra superfície (como a superfície de entrada do Android MediaRecorder).
As novas atualizações do Sceneform e do ARCore já estão disponíveis. Também incluída nessas novas versões está a compatibilidade com novos dispositivos, como o Samsung Galaxy A3 e o Huawei P20 Lite, que estarão na lista de dispositivos compatíveis com o ARCore. Confira maiores informações no site do desenvolvedor ARCore..
“Bem-vindo ao GDG São Francisco. Posso falar sobre...”
“Benvenuto a GDG San Francisco. Posso darti informazioni…”
“Bienvenidos a GDG San Francisco. Puedo contarte sobre…”
“Willkommen bei der GDG San Francisco. Ich kann dir mehr über unsere…”
Existem dispositivos Android de todos os tamanhos, formas e densidades de tela. É por isso que sou um grande fã da usar recursos vetorizados que não dependem de resolução. Mas o que exatamente eles são? Quais são os benefícios? Quais são os custos? Quando devem ser usados? Como devem ser criados e usados? Nesta série de postagens, gostaria de explorar esses questionamentos e explicar por que eu acho que a grande maioria dos recursos dos aplicativos deve ser composta por vetores e como aproveitá-los ao máximo.
A maioria dos formatos de imagem (png, jpeg, bmp, gif, webp, etc.) são rasterizados. Isso significa que eles descrevem a imagem como uma grade fixa de pixels. Sendo assim, são definidos em uma resolução específica e não conseguem entender informações sobre seu conteúdo, apenas a cor de cada pixel. Gráficos vetoriais, no entanto, descrevem a imagem como uma série de formas definidas em um tamanho de tela abstrato.
Os recursos vetorizados têm três benefícios principais. Eles são:
As imagens vetoriais podem ser redimensionadas com facilidade porque a descrição é feita em uma tela de tamanho abstrato. Assim, você pode aumentar ou diminuir a tela e redesenhar a imagem no tamanho desejado. Os recursos rasterizados, porém, podem se deteriorar ao serem redimensionados. A diminuição do tamanho dos recursos rasterizados costuma funcionar (já que você está descartando informações), mas aumentar o tamanho deles pode criar artefatos como distorções ou faixas porque os pixels que estiverem faltando precisarão ser interpolados.
É por isso que no Android precisamos oferecer diversas versões de cada recurso rasterizado para telas de diferentes densidades:
O Android seleciona a maior densidade aproximada e diminui o tamanho (se necessário). Devido à tendência de dispositivos com densidade de tela cada vez mais alta, os criadores de aplicativos precisam continuar gerando, incluindo e lançando versões cada vez maiores dos mesmos recursos. É importante lembrar que os dispositivos modernos não usam intervalos de densidade exatos. O Pixel 3 XL, por exemplo, é em 552 dpi, algo entre xxh dpi e xxxh dpi. Dessa forma, os recursos serão redimensionados com frequência.
Graças à excelente capacidade de redimensionamento dos recursos vetorizados, você pode adicionar um único recurso com a segurança de que ele funcionará em todas as densidades de tela.
Os recursos vetorizados são geralmente* mais compactos do que os rasterizados, pelo fato de você só precisar incluir uma única versão e pela compressão eficiente.
Por exemplo, aqui temos uma alteração feita no aplicativo Google I/O em que trocamos uma série de ícones PNG rasterizados por vetores, economizando 482 KB. Embora possa não parecer muito, esse resultado foi apenas com relação a pequenos ícones. Quando se trata de imagens maiores, como ilustrações, a economia é ainda mais relevante.
Esta ilustração, por exemplo, do fluxo de integração de um aplicativo I/O do ano passado:
Na época, não conseguimos substituir essa imagem por um VectorDrawable porque os gradientes ainda não eram amplamente compatíveis (spoiler: agora são!), então tivemos que lançar uma versão rasterizada. Usando um vetor, teríamos uma redução de 30% no tamanho e um resultado melhor :
Enquanto as divisões da configuração de densidade do Android App Bundle trazem benefícios semelhantes ao fornecer somente os recursos de densidade necessários ao dispositivo, um VectorDrawable geralmente será menor e além eliminará a necessidade de continuar criando recursos rasterizados cada vez maiores.
Por descrever seu conteúdo, ao invés de “achatar” as informações em pixels, as imagens vetoriais trazem novas e interessantes possibilidades como animação, interatividade ou temas dinâmicos. Falaremos mais sobre isso nas próximas postagens.
Os vetores têm algumas desvantagens que precisam ser consideradas:
Como mencionado anteriormente, os recursos vetorizados descrevem o conteúdo e, portanto, precisam ser inflados e desenhados antes do uso.
Há duas etapas para isso:
Essas duas etapas são proporcionais à complexidade do vetor e ao tipo de operação realizada. Se você usar formas muito intricadas, a análise para transformá-las em um caminho será mais demorada. De forma semelhante, mais operações de desenho levarão mais tempo para serem realizadas (e algumas são mais caras, como as operações de recorte). Abordaremos novamente esse assunto em uma postagem futura sobre a determinação dos custos.
Para vetores estáticos, o desenho precisa ser realizado somente uma vez e pode então ser armazenado em cache em um Bitmap. Os vetores animados não podem fazer essa otimização porque as propriedades são necessariamente alteradas, exigindo redesenho.
Compare isso com recursos rasterizados como o PNG, que só precisa decodificar o conteúdo do arquivo, algo que foi amplamente otimizado com o passar do tempo.
Esse é o principal ponto a ser considerado ao comparar os prós e os contras da rasterização e da vetorização. Os vetores proporcionam os benefícios mencionados acima, mas ao custo de uma renderização mais cara. No início do Android, os dispositivos eram menos poderosos e as densidades de tela variavam pouco. Atualmente, os dispositivos Android são mais poderosos e têm uma enorme variedade de densidades de tela. É por isso que eu acredito ser a hora de todos os aplicativos mudarem para recursos vetorizados.
Devido à natureza do formato, os vetores são ótimos para descrever alguns recursos, como ícones simples. Eles são péssimos para codificar imagens fotográficas, em que é mais difícil descrever o conteúdo com uma série de formas. Nesse caso, seria muito mais eficiente usar um formato rasterizado (como o webp). É claro que há muitas variações, então tudo depende da complexidade do recurso.
Nenhuma ferramenta de design (que eu conheça) pode criar VectorDrawables diretamente. Isso significa que há uma etapa de conversão a partir de outros formatos. Isso pode complicar o fluxo de trabalho entre designers e desenvolvedores. Trataremos desse tópico em detalhes em uma postagem futura.
Se você já trabalhou com formatos de imagem vetorial, já deve ter visto o formato SVG (gráficos vetoriais escalonáveis, na sigla em inglês), o padrão do setor na Web. Esse formato é eficiente, estabelecido e tem ferramentas consagradas, mas é também um padrão amplo . Ele inclui muitos recursos complexos como a execução de javascript arbitrário, efeitos de desfoque e filtro ou a incorporação de outras imagens, até mesmo gifs animados. O Android é executado em dispositivos móveis restritos, portanto, oferecer suporte a toda a especificação do SVG não era uma meta realista.
No entanto, o SVG inclui uma especificação de caminho que define como descrever e desenhar formas. Com essa API, você pode expressar a maioria das formas vetoriais. De modo geral, o Android é compatível com a especificação de caminho do SVG (e alguns adicionais).
Além disso, ao definir seu próprio formato, o VectorDrawable pode ser integrado a recursos da plataforma Android. Ele trabalha, por exemplo, com os recursos de sistema do Android para referenciar @colors, @dimens ou @strings, funcionando com atributos de tema ou AnimatedVectorDrawable usando animadores padrão.
Como mencionado, o VectorDrawable é compatível com a especificação de caminho do SVG, o que permite especificar uma ou várias formas a serem desenhadas. Ele é escrito como um documento XML semelhante a este:
Observe que você precisa especificar o tamanho intrínseco do recurso, que seria o tamanho que ele teria ao ser definido em um ImageView wrap_content. Os tamanhos da segunda janela de visualização definem a tela virtual ou coordenam o espaço no qual todos os comandos de desenho subsequentes são definidos. As dimensões intrínsecas e da janela de visualização podem variar (mas devem estar na mesma proporção): é possível definir os vetores em uma tela 1x1 se você desejar.
O elemento <vector> contém um ou muitos elementos <path>. Eles podem ser nomeados para referência posterior (como no caso de animações), mas é essencial que especifiquem um elemento pathData que descreva a forma. Essa string de aparência complexa pode ser compreendida como uma série de comandos controlando uma caneta em uma tela virtual:
Os comandos acima movem a caneta virtual, desenham uma linha até outro ponto, elevam e movem a caneta, para então desenhar uma nova linha. Com apenas os quatro comandos mais comuns, podemos descrever praticamente qualquer forma (há outros comandos, veja a especificação):
(Comandos em letra maiúscula usam coordenadas absolutas e aqueles em letra minúscula usam coordenadas relativas)
Você pode se perguntar se esse nível de detalhes é necessário. Não é possível conseguir isso com arquivos SVG? Embora você não precise ler um caminho e entender o que ele desenhará, ter um entendimento básico do que um VectorDrawable está fazendo é extremamente útil e necessário para compreender alguns dos recursos avançados que abordaremos depois.
Os caminhos por si só não desenham nada. Eles precisam ser traçados e/ou preenchidos.
A segunda parte desta série entrará em mais detalhes sobre as diferentes maneiras de preencher/traçar caminhos.
Você também pode definir grupos de caminhos. Isso permite que você defina transformações que serão aplicadas a todos os caminhos dentro do grupo.
Observe que você não pode girar, dimensionar ou traduzir caminhos individuais. Se desejar fazer isso, será necessário colocá-los em um grupo. Essas transformações fazem pouco sentido para imagens estáticas que poderiam “incorporá-las” em seus caminhos diretamente, mas são extremamente úteis no caso de animações.
Você também pode definir clip-paths, ou seja, mascarar a área na qual outros caminhos do mesmo grupo podem desenhar. Eles são definidos da mesma maneira que os caminhos.
Uma limitação importante é que os clip-paths não podem ser suavizados.
Esse exemplo (que eu tive que aumentar muito de tamanho para poder mostrar o efeito) demonstra duas abordagens de desenho do ícone de um obturador de câmera. A primeira desenha os caminhos, enquanto a segunda desenha um quadrado sólido, mascarado com a forma do obturador. O ato de mascarar pode criar efeitos interessantes (especialmente no caso de animações), mas é relativamente caro. Assim, procure evitá-lo, desenhando a forma de um modo diferente.
Os caminhos podem ser ajustados: é só desenhar um subconjunto do caminho inteiro. É possível ajustar caminhos preenchidos, mas os resultados podem ser surpreendentes! É mais comum ajustar caminhos traçados.
Você pode ajustar do início ou do fim de um caminho. Também é possível aplicar um deslocamento a qualquer ajuste. Eles são definidos como uma fração do caminho [0,1]. Veja como a definição de diferentes valores de ajuste altera a parte da linha que é desenhada. Perceba também que os deslocamentos podem fazer com que os valores de ajuste “se agrupem”. Mais uma vez, essa propriedade não faz muito sentido para imagens estáticas, mas é útil para animações.
O elemento vetor raiz é compatível com uma propriedade alfa [0, 1]. Os grupos não têm propriedade alfa, mas caminhos individuais são compatíveis com fillAlpha/strokeAlpha.
Espero que esta postagem ajude a compreender o que são os recursos vetorizados e os prós e contras deles. O formato vetorial do Android é eficiente e tem amplo suporte. Levando em consideração a variedade de dispositivos no mercado, o uso de recursos vetorizados deveria ser a escolha padrão, deixando a rasterização apenas para casos especiais. Junte-se a nós nas próximas postagens para saber mais:
Em breve: Desenho de um caminhoEm breve: Criação de recursos vetorizados para AndroidEm breve: Uso de recursos vetorizados em aplicativos AndroidEm breve: Criação de perfil do Android VectorDrawables
[Nota do editor: esta postagem foi publicada originalmente no blog da Velostrata. Desde então, a Velostrata entrou para o grupo do Google Cloud, e temos o prazer de mostrar a você o ponto de vista experiente deles sobre a decisão de migrar para a nuvem. Veja mais informações sobre como a tecnologia de migração acelerada da Velostrata funciona aqui.]
Na Velostrata, passamos muito tempo debatendo como otimizar o processo de migração para nuvem. Mas uma das perguntas que recebemos com frequência é: em primeiro lugar, o que leva uma empresa a migrar para a nuvem? Nesta postagem, conversamos com alguns clientes e analisamos nossos próprios dados, junto com dados do mercado de organizações como a RightScale, para descobrir os motivos mais comuns que levam empresas a migrar para a nuvem. Se achar que provavelmente migrará para a nuvem no futuro, este artigo pode ajudar você a determinar os tipos de eventos que podem resultar no início do plano de migração.
1. Renovações do contrato do data center
Muitas empresas possuem contratos com data centers privados que precisam ser periodicamente renovados. No momento da renegociação desses contratos, frequentemente surgem considerações como ajustes dos custos ou outros fatores limitadores. Como consequência, é durante esses períodos de renovação de contrato que muitas empresas começam a considerar a migração para a nuvem.
2. Aquisições
Quando há a fusão de empresas, muitas vezes é difícil combinar os ambientes de aplicativos e dados, e pode ser ainda mais desafiador se eles estiverem em vários data centers no local. Muitas empresas em processo de fusão descobrem que mover os principais aplicativos e dados para a nuvem torna o processo mais fácil. Usar a nuvem também facilita acomodar novas regiões e funcionários, o que garante uma transição mais tranquila no fim das contas.
3. Aumento dos requisitos de capacidade
Seja para a progressão natural de uma empresa em expansão ou para suprir a necessidade de acomodar picos de alta capacidade durante mudanças sazonais, seus negócios podem se beneficiar com o aumento ou a diminuição rápida da computação. Em vez de precisar arcar com o custo da capacidade máxima no local, é possível alternar sua capacidade sob demanda com a nuvem e pagar conforme o uso.
4. Ciclos de atualização de software e hardware
Ao gerenciar um data center no local, é sua responsabilidade manter tudo atualizado. Isso pode incluir licenças caras de software no local e upgrades de hardware para atender aos requisitos do novo software atualizado. Ao avaliar um ciclo de atualização próximo, muitas empresas descobrem que é significativamente mais econômico desativar o software e o hardware no local e escolher entre uma assinatura SaaS ou uma migração lift-and-shift desse aplicativo para a nuvem pública. O caminho escolhido dependerá principalmente do app (e das opções de SaaS disponíveis), mas de qualquer forma será o início de um projeto de migração para a nuvem.
5. Ameaças de segurança
Como as ameaças de segurança estão aumentando em número e gravidade, muitas empresas optam pela migração para a nuvem como forma de reduzir os riscos. Os provedores de nuvem pública oferecem recursos abrangentes de proteção contra ameaças, mais do que qualquer empresa consegue investir por conta própria.
6. Requisitos de conformidade
Se você for do setor de serviços financeiros ou da área da saúde, garantir a conformidade dos dados é fundamental para operações comerciais. Migrar para a nuvem significa que as empresas usam ferramentas e serviços com base na nuvem que já atendem aos requisitos de conformidade, o que ajuda a aliviar um pouco a pressão de atender aos requisitos de conformidade para equipes de TI corporativa.
7. Benefícios para o desenvolvimento de produtos
Ao aproveitar os benefícios do modelo de pagamento conforme o uso e do provisionamento dinâmico para desenvolvimento e teste de produtos, muitas empresas descobrem que a nuvem ajuda a comercializar mais rapidamente os produtos. Já vimos empresas migrarem para a nuvem como forma de economizar tempo e dinheiro, mas também para gerar receita mais rapidamente.
8. Eventos de fim da vida útil
Tudo que é bom um dia tem um fim, inclusive software. Notamos cada vez mais que quando o software de data center crítico anuncia um evento de fim de vida útil, as equipes de TI corporativa naturalmente buscam maneiras de replicar esses serviços na nuvem em vez de tentar estender o ciclo de vida útil no local. Isso significa que as empresas podem desativar licenças e hardware antigos e aproveitar os outros benefícios da nuvem.
Como vimos, há muitos motivos que levam as empresas a optar pela migração para a nuvem. Em alguns casos, eles já estão no processo de migração quando encontram outras maneiras de aproveitar ainda mais os serviços da nuvem. Entender os tipos de eventos que frequentemente resultam em uma migração para a nuvem pode ajudar você a determinar a arquitetura de nuvem e a estratégia de migração adequadas às suas cargas de trabalho.
Saiba mais sobre a migração para a nuvem da Velostrata aqui.
Para desenvolvedores, os contêineres podem parecer um truque de mágica: eles são portáteis, eficientes e facilitam a criação de novos aplicativos. Embora os contêineres sejam ótimos para aplicativos simples, é necessário ter suporte adicional para desenvolvê-los em aplicativos e serviços maiores. Quando os contêineres começaram a ser usados há alguns anos, as organizações de TI tiveram muita dificuldade para gerenciá-los. Implantar contêineres na infraestrutura alocada era uma tarefa relativamente manual, com pouco suporte para o escalonamento automático dessa infraestrutura de modo rápido e eficiente.
Em 2014, completamos 10 anos executando o Borg, o gerenciador de contêineres interno, e achamos que disponibilizar uma versão dele para a comunidade de código-aberto poderia ser muito útil. Quatro anos depois, o Kubernetes se tornou a plataforma dominante de orquestração de contêineres. De acordo com o IDC1, 43% das empresas já usam os serviços de contêineres públicos. Prova disso é o nosso próprio produto, o Google Kubernetes Engine (GKE). Mais de 80% dos nossos maiores clientes já usam o GKE para executar cargas de trabalho em produção, e mais de 40% dos clusters do GKE são executados em cargas de trabalho com estado.
Adotar o Kubernetes oferece alguns benefícios: os recursos são usados de modo mais eficiente e a disponibilidade aumenta. Os desenvolvedores podem implantar novos aplicativos com mais frequência e aumentar a velocidade da criação de novos softwares. O Kubernetes também introduziu uma biblioteca de config declarativa extensível que oferece um modelo de operação consistente para todos os serviços, inclusive de terceiros. De modo mais imediato, a combinação do Kubernetes com contêineres permitiu que desenvolvedores adotassem uma arquitetura de microsserviços, que são unidades discretas de software dentro de serviços de uso único que podem ser incorporadas a aplicativos grandes e distribuídos que são executados em ambientes de nuvem híbrida e no local.
A camada de gerenciamento que faltava
Por experiência própria na execução de uma infraestrutura global, sabemos que embora a orquestração de contêineres seja uma função de TI essencial, ela não é o suficiente. Principalmente se você estiver executando um aplicativo distribuído de qualquer tamanho, que talvez decomponha um único aplicativo monolítico em centenas ou até mesmo milhares de componentes individuais. Você eventualmente precisará gerenciar a coleção de microsserviços e garantir políticas consistentes em todos eles. Mais importante ainda, essas políticas precisam ser dissociadas dos serviços individuais para que possam ser mais uniformes e atualizadas independentemente dos serviços.
Anos atrás, percebemos que para executar os serviços do Google com confiança, precisávamos de um sistema comum de monitoramento, geração de registros, autorização e cobrança. Dessa forma, as equipes individuais não precisariam resolver esses problemas por conta própria e com métodos diferentes a cada vez. Nossa solução foi usar o Stubby, um mecanismo de chamada de procedimento remoto, junto com uma funcionalidade de plano/controle por meio de um proxy secundário. Com essa combinação, temos os benefícios de uma rede de serviços: telemetria automatizada, autenticação e criptografia de serviço mútuo, balanceamento de carga do cliente, rede avançada e integração independente de linguagem dos sistemas de back-end. O plano de sidecar + plano/controle foi projetado especificamente para permitir o atendimento às necessidades de serviços internos e externos, bem como APIs públicas (que previamente precisavam de mecanismos diferentes) com uma única plataforma.
Nossa plataforma de serviços internos oferece uniformidade em todos os serviços. Já nossos engenheiros de segurança de sites (SREs) possuem painéis padrão de cada serviço sem precisar integrar manualmente as ferramentas de monitoramento. De modo semelhante, os serviços são automaticamente integrados aos nossos mecanismos de autenticação e política (por exemplo, para limitação de taxa e cota). Agora, os desenvolvedores não precisam começar do zero a cada novo serviço criado, e os SREs possuem um método padrão para operá-los.
Atender à chamada com o Istio
À medida que as equipes do Kubernetes implantarem mais microsserviços, acreditamos que elas precisarão de recursos similares. Para atender a essa necessidade, ano passado criamos uma parceria com a Lyft e a IBM no Istio, uma rede de serviços de código-aberto para aplicativos distribuídos híbridos e modernos. O Istio oferece visibilidade na forma de telemetria para monitorar e registrar serviços, além de segurança, ao atribuir uma identidade forte para cada serviço com base no papel e permitir a criptografia por padrão. Com essa funcionalidade essencial, o Istio também pode ser a base para serviços de nível mais alto. Por exemplo, ele pode ajudar a aplicar políticas de segurança de rede ou controlar lançamentos de software por meio de implantações canário.
O Istio também garante a dissociação adequada entre desenvolvimento e operações, permitindo que equipes de operações mudem o comportamento do sistema sem alterar de fato o código-fonte. Um exemplo é a política de nova tentativa. Imagine um sistema em que um microsserviço-chave começa a exibir uma latência estranhamente alta. Se os serviços dependentes desse microsserviço tiverem uma política de nova tentativa agressiva, eles podem sobrelotar o sistema de demora e, assim, piorar o problema. O Istio permite que a equipe de operações mude essa política de nova tentativa, recuando os sistemas dependentes, sem alterar o código-fonte e sem implantá-lo outra vez. Nossas equipes também podem mudar as políticas de “circuit-breaking”, redirecionamento de tráfego, execução de implantações canário e mais.
Essa dissociação da lógica de desenvolvimento e operações do Istio oferece duas coisas: ela permite que desenvolvedores foquem a escrita da lógica comercial, e não da infraestrutura (tornando-os mais produtivos) e que equipes de operações tenham as ferramentas necessárias para executar aplicativos e serviços de modo mais confiável.
A promessa do Istio já está repercutindo com os usuários do Kubernetes, incluindo Descartes Labs, eBay e AutoTrader RU. O Descartes Labs, por exemplo, usa o aprendizado de máquina no serviço de inteligência preditiva com APIs em execução nos clusters do GKE. O Kubernetes ofereceu a eles a possibilidade de escalonamento sob demanda, mas como seu aplicativo tem muitos microsserviços e dependências, a detecção de problemas de desempenho foi difícil. Quando um serviço ficava sobrecarregado, a verificação de registros para encontrar o problema poderia levar horas de trabalho. Implantar o Istio ofereceu clareza. Com o Istio há mais de um ano, eles podem ver a origem do tráfego de qualquer serviço e, assim, podem resolver problemas de modo muito mais rápido.
“O Istio era a peça que faltava no ecossistema do Kubernetes. O Kubernetes nos permitiu distribuir um aplicativo, mas o Istio nos permitiu entendê-lo”, diz Tim Kelton, cofundador do Descartes Labs. Agora que conseguem observar melhor o app, eles também começaram a adotar alguns dos recursos avançados de rede do Istio.
O futuro é agora
Usar o Istio ficará ainda mais fácil para usuários do Google Cloud com o Istio no GKE. Disponibilizado em Beta no próximo mês e com dezenas de clientes com acesso antecipado já o executando na produção, o Istio no GKE oferece uma camada de rede de serviço nos clusters existentes do GKE e reúne telemetria sobre os contêineres executados neles. Essa telemetria é enviada para o Stackdriver ou Prometheus para que seja monitorada a integridade dos serviços executados nos contêineres do mesmo modo que os SREs do Google fazem, ou seja, pelo monitoramento dos chamados Sinais de ouro (tráfego, taxas de erro e latências). Além disso, é possível auditar as dependências entre serviços ou analisar o desempenho com o rastreamento. Talvez o melhor de tudo seja poder também aumentar a segurança pela ativação do mTLS, que criptografa todos os dados em trânsito entre os serviços. É possível configurar tudo isso em movimento, basta selecionar a caixa “Ativar Istio” no console de gerenciamento do GKE.
Em geral, o Istio no GKE é só uma das formas que integramos o Istio ao portfólio de computação. Nos próximos meses, fique de olho para ver como integraremos o Istio a uma variedade de produtos, como parte do Cloud Services Platform. Por exemplo, neste verão, anunciaremos nossos planos para o GKE On-Prem, uma versão compatível com binário do GKE que pode ser executada no seu data center privado. Para ter visibilidade dos seus aplicativos sem servidor, use o Istio para isso também. Assim como o Kubernetes, queremos que você consiga executar o Istio do jeito que quiser, seja por conta própria ou como um serviço gerenciado autônomo.
Foi exatamente por essas razões que o Keybank, uma grande instituição financeira dos EUA, escolheu colaborar conosco. “O Google criou o Kubernetes e o Istio, então não havia dúvida que eles eram nossa escolha em nuvem para levar os aplicativos em contêineres para nossos data centers. Em poucas palavras, o Cloud Services Platform nos ofereceu a segurança, a portabilidade e a produtividade que nossos desenvolvedores queriam”, diz Keith Silvestri, diretor de tecnologia da Keybank.
Não somos os únicos a acreditar no Istio. Alguns dos grandes nomes da indústria estão contribuindo com o Istio. Empresas como IBM, Red Hat e VMware estão trazendo seu conhecimento e sua experiência. Como o Istio é um programa de código aberto, você tem a liberdade de adicionar a funcionalidade que quiser e integrá-la ao seu ambiente de modo muito mais rápido.
Aqui no Google, os SREs falam muito sobre evitar os “desastres do sucesso”, ou seja, um serviço que supera suas expectativas e, assim, sua capacidade de usá-lo. Independentemente de você usar nuvem nativa ou querer modernizar seu ambiente de TI, desenvolver seus aplicativos no Kubernetes e em contêineres o levará longe. No entanto, também é preciso refletir sobre como você gerenciará um ambiente que extrapola suas expectativas. O Istio pode guiá-lo pelo resto do caminho. Assim, você pode planejar o bom e velho “sucesso”.
1. PaaSView para desenvolvedores: A experiência de desenvolvimento moderna (IDC nº US44223218, agosto de 2018)
Postado por Hoi Lam, porta-voz e chefe de desenvolvimento
Estamos lançando hoje a imagem do emulador da versão final da API 28 para desenvolvedores. Essa imagem também terá a reformulação da IU que anunciamos em agosto. Verifique se a notificação do seu aplicativo funciona com o novo stream de notificações e se os seus aplicativos têm o comportamento esperado em relação às mudanças anunciadas anteriormente para a API 28.
Estes são os destaques do emulador da API 28:
Atenção: as mudanças relacionadas ao novo stream de notificação estão sendo lançadas para dispositivos compatíveis com a API 25 e versões posteriores. Você pode testar o comportamento da sua notificação agora, antes mesmo do lançamento ser concluído, basta usar a imagem do emulador da API 28.
Estamos na versão de lançamento, mas isso não significa que nosso trabalho termina aqui. Continue informando nossa equipe sobre erros e solicitando melhorias por meio do rastreador de falhas do Wear OS by Google.
Por fim, agradecemos seu feedback valioso durante a visualização para desenvolvedores. Eles tiveram um papel importante no nosso processo de tomada de decisão, especialmente em relação aos intervalos de App em espera. Obrigado!
Postado por Tim Sneath, gerente de produto do grupo no Flutter
Hoje na Flutter Live, anunciaremos o Flutter 1.0, a primeira versão estável do kit de ferramentas de IU do Google para criar lindas experiências nativas para iOS e Android a partir de uma única base de código.
Atualmente, o desenvolvimento para várias plataformas de dispositivos móveis está repleto de concessões. Os desenvolvedores são forçados a escolher entre desenvolver o mesmo app diversas vezes para vários sistemas operacionais ou aceitar a solução do menor denominador comum que troca a velocidade e a precisão nativas pela portabilidade. Com o Flutter, temos a solução que une o útil ao agradável: IU e gráficos acelerados pelo hardware, alimentados pelo código ARM nativo e segmentados para os dois sistemas operacionais de dispositivos móveis mais usados.
O Flutter não substitui os modelos de app tradicionais da Apple e do Android para o desenvolvimento de apps. Em vez disso, ele é um mecanismo de app que pode ser incorporado a um app existente ou usado em um totalmente novo.
Pensamos as características do Flutter em quatro dimensões:
Junte tudo isso e combine às melhores ferramentas da classe, como Visual Studio Code, Android Studio, IntelliJ ou o editor de programação de sua escolha e você terá o Flutter: um ambiente de desenvolvimento para a criação de lindas experiências nativas para iOS e Android a partir de uma única base de código.
Anunciamos a primeira versão Beta do Flutter no Mobile World Congress há 10 meses e estamos felizes em ver a rapidez com que a grande comunidade o adotou. Prova disso são os milhares de apps do Flutter que já foram publicados nas lojas da Apple e do Google Play antes mesmo do lançamento da versão 1.0. Isso mostra que os desenvolvedores estão prontos para uma nova abordagem ao desenvolvimento de IU.
Já internamente, o Flutter está sendo usado no Google para uma variedade de produtos, como o Google Ads, que já foi transferido para uso com os apps para iOS e Android. Antes mesmo da versão 1.0, vários clientes internacionais, incluindo Abbey Road Studios, Alibaba, Capital One, Groupon, Hamilton, JD.com, Philips Hue, Reflectly e Tencent já estavam desenvolvendo ou enviando apps com o Flutter.
Michael Jones, diretor sênior de engenharia da equipe da Capital One, fala sobre a experiência da empresa com o Flutter:
“Estamos animados com a abordagem única do Flutter ao desenvolvimento de alto desempenho para várias plataformas. Nossos engenheiros gostaram da promessa de rápido desenvolvimento e dos recursos do Hot Reload. No último ano, vimos um progresso enorme na biblioteca, especialmente em relação à integração nativa. “O Flutter permite que a Capital One pense em recursos diretamente para a experiência móvel, em vez de se concentrar no iOS ou no Android. Estamos ansiosos para conferir o Flutter 1.0 e nos impressionar com o ritmo dos avanços e das novidades na comunidade de engenharia.”
“Estamos animados com a abordagem única do Flutter ao desenvolvimento de alto desempenho para várias plataformas. Nossos engenheiros gostaram da promessa de rápido desenvolvimento e dos recursos do Hot Reload. No último ano, vimos um progresso enorme na biblioteca, especialmente em relação à integração nativa.
“O Flutter permite que a Capital One pense em recursos diretamente para a experiência móvel, em vez de se concentrar no iOS ou no Android. Estamos ansiosos para conferir o Flutter 1.0 e nos impressionar com o ritmo dos avanços e das novidades na comunidade de engenharia.”
No evento Flutter Live de hoje, o serviço popular de pagamento Square, anunciou dois novos SDKs do Flutter que facilitam aceitar pagamentos de produtos e serviços com o Flutter, seja pessoalmente usando um leitor de pagamento do Square ou pelo app para dispositivos móveis. O Square apresentou um exemplo de como usar seu SDK de pagamentos com um app da Collins Family Orchards, um grupo de agricultura familiar que cultiva e vende frutas em mercados de agricultores no Noroeste Pacífico.
O desenvolvedor do app da Collins Family Orchards, Dean Papastrat, compartilhou sua experiência:
“Fiquei impressionado com a velocidade de todas as animações e transições nas versões de produção. Como desenvolvedor da Web, foi muito fácil fazer a transição para o Flutter. É incrível como consegui criar um app completamente funcional que aceita pagamentos em apenas uma semana.”
Na Flutter Live, a 2Dimensions anunciou a disponibilidade imediata do Flare, uma nova ferramenta incrível para designers que querem criar animações vetoriais que possam ser incorporadas diretamente ao app do Flutter e manipuladas com código. O Flare elimina a necessidade de desenvolver em um app, anima em outro e converter todo o trabalho para ativos e códigos específicos do dispositivo.
As animações criadas com o Flare podem ser incorporadas a um app existente do Flutter como um widget, permitindo que elas participem de todo o compositor e sejam sobrepostas com outras camadas de texto e gráficos ou até mesmo widgets de IU. Esse tipo de integração liberta as animações das limitações da “caixa preta” de outras arquiteturas e permite a colaboração contínua entre designers e desenvolvedores até a conclusão do app. Essa integração consistente entre o Flutter e o Flare oferece uma oferta exclusiva e irresistível para designers e animadores digitais que queiram criar experiências móveis altamente sofisticadas.
Outro parceiro que apostou no Flutter foi o Nevercode, um provedor em rápida expansão de ferramentas de integração e entrega contínua (CI/CD) relacionadas a apps para dispositivos móveis. Na Flutter Live, eles anunciaram o Codemagic, uma nova ferramenta projetada especialmente para o Flutter a fim de facilitar a automação de processos de desenvolvimento e criação de pacotes de apps do Flutter para Android e iOS a partir de uma única automação. Atualmente disponível na versão Beta, o Codemagic permite selecionar um repositório do GitHub com um projeto do Flutter e, com apenas alguns cliques, criar fluxos de versão contínuos que executam testes e geram pacotes de aplicativos binários que podem ser enviados para as lojas da Apple e do Google Play.
Criamos um pequeno vídeo para destacar o alcance e a variedade dos desenvolvedores de apps que usam o Flutter desde a versão Beta:
Desde a primeira versão Beta, trabalhamos para adicionar recursos e aperfeiçoar o Flutter. Em especial, concluímos nosso suporte a Apps para iOS com pixel perfeito com novos widgets, suporte para quase 20 serviços diferentes do Firebase. Além disso, trabalhamos para aprimorar o desempenho e reduzir o tamanho dos apps do Flutter. Também solucionamos milhares de problemas relatados pela comunidade.
O Flutter também inclui a versão mais recente da plataforma Dart, a 2.1, uma atualização ao Dart 2 que oferece tamanhos menores de código, verificações de tipo mais rápidas e melhor usabilidade para erros de tipo. Além disso, o Dart 2.1 oferece novos recursos de linguagem para melhorar a produtividade ao desenvolver experiências do usuário. Os desenvolvedores que já adotaram o Dart 2.1 relataram melhorias significativas na velocidade apenas ao trocar para o mecanismo mais recente:
Embora o foco principal da versão 1.0 seja a correção de bugs e a estabilização, também incluímos visualizações de dois grandes novos recursos para os desenvolvedores experimentarem no modo visualização. Esperamos lançar esses recursos na próxima versão trimestral em fevereiro de 2019: Adicionar ao app e visualizações da plataforma.
Ao desenvolver o Flutter, nós nos concentramos na produtividade para desenvolvedores que precisavam criar novos aplicativos do zero. Mas é claro, nem todos têm o luxo de começar com uma tábua rasa. Ao conversar com alguns dos nossos principais clientes, ficou claro que eles queriam usar o Flutter para novas jornadas do usuário ou recursos dentro de um aplicativo existente ou converter gradativamente esse aplicativo para o Flutter.
A arquitetura do Flutter oferece um bom suporte para esse modelo. Afinal de contas, cada app do Flutter inclui um contêiner do host do Android e do iOS. No entanto, estamos trabalhando para facilitar ainda mais a adoção gradual do Flutter, atualizando modelos, ferramentas e orientações de apps existentes. Já facilitamos o compartilhamento de recursos entre o Flutter e o código host. Também reformulamos as ferramentas para facilitar a inclusão em um processo existente do Flutter sem lançar o depurador com o aplicativo.
Continuaremos a trabalhar para tornar essa experiência ainda melhor. Embora vários clientes já saibam usar nossas orientações no Adicionar ao app, continuamos a adicionar amostras e ampliar o suporte para cenários complexos. Enquanto isso, nossas instruções para adicionar o Flutter a apps existentes estão na nossa Wiki, e você pode conferir o restante do trabalho no painel do projeto no GitHub.
Embora o Adicionar ao app seja útil para introduzir gradualmente o Flutter a um aplicativo existente, às vezes é vantajoso pegar o caminho contrário e incorporar um controle de plataforma para Android ou iPhone a um app do Flutter.
Assim, introduzimos os widgets de visualização da plataforma (AndroidView e UiKitView) que permitem incorporar esse tipo de conteúdo a cada plataforma. Visualizamos o suporte para Android por alguns meses, mas agora expandiremos o suporte para iOS e começaremos a adicionar plug-ins como o Google Maps e o WebView que aproveitam isso.
AndroidView
UiKitView
Assim como outros componentes, nossos widgets de visualização da plataforma participam do modelo de composição, o que significa que é possível integrá-lo a outros conteúdos do Flutter. Por exemplo, na captura de tela acima, o botão de ação flutuante no canto inferior direito é um widget do Flutter que tem uma cor de fundo com 50% Alfa. Isso demonstra bem as vantagens arquitetônicas exclusivas do Flutter.
Embora esse trabalho esteja pronto para ser testado por desenvolvedores, continuamos a trabalhar na melhoria do desempenho e da compatibilidade do dispositivo. Assim, recomendamos ter cuidado ao implantar apps que dependem de Visualizações da plataforma. Continuamos a otimizar ativamente as visualizações da plataforma e esperamos que elas fiquem prontas para produção na próxima atualização trimestral.
O Flutter tem sido direcionado principalmente a iOS e Android até agora. Mas nossa ambição é ultrapassar a barreira dos dispositivos móveis e levar o Flutter para um conjunto mais abrangente de plataformas. Na verdade, desde o início o Flutter foi projetado como um kit de ferramentas de IU portátil que fosse flexível o suficiente para ir onde os pixels estivessem.
Parte desse trabalho já está em andamento. O Flutter Desktop Embedding é um projeto ainda na fase inicial que leva o Flutter para os sistemas operacionais para computador, incluindo Windows, MacOS e Linux. Além disso, recentemente publicamos detalhes informais sobre como usar o Flutter no Raspberry Pi, como uma maneira de demonstrar o suporte à incorporação do Flutter em dispositivos de menor escala que talvez não incluam um ambiente completo para computador.
Nesta semana no Flutter Live, demos uma prévia de um projeto experimental que está sendo desenvolvido nos laboratórios e que aumenta significativamente o alcance do Flutter.
Hummingbird é uma implementação baseada na Web do tempo de execução do Flutter que aproveita o recurso da plataforma Dart para compilar não só para o código ARM nativo, mas também para JavaScript. Isso permite que o código do Flutter seja executado dentro dos padrões da Web sem alterações.
Temos um artigo separado no Medium que descreve os detalhes técnicos da implementação do Hummingbird. Teremos muito mais para compartilhar sobre o Hummingbird no Google I/O em 2019. Esperamos ver você lá!
É claro que os dispositivos móveis continuam sendo nossa prioridade. Nos próximos meses, você verá o grande investimento que fizemos nesses principais cenários de dispositivos móveis.
Com o lançamento do Flutter 1.0, estabelecemos um novo canal “estável”, além da versão Beta e em desenvolvimento existentes, bem como dos canais mestre. O canal estável atualiza com menos frequência do que outros canais, mas confiamos mais na sua qualidade por que as versões já foram aprovadas por outros canais. Esperamos atualizar nosso canal estável a cada trimestre com nossas versões mais preparadas.
Faça o download do Flutter 1.0 no nosso site em https://flutter.io, onde também há a documentação para desenvolvedores em transição de outras bibliotecas, laboratórios de códigos e um manual das amostras comuns, além de vídeos técnicos.
Agradecemos especialmente aos usuários iniciais que se juntaram a nós nessa jornada enviando feedback, identificando problemas, criando conteúdo e ajudando a moldar o produto. A comunidade do Flutter é um dos nossos grandes feitos em termos de projeto: um grupo acolhedor, diverso e prestativo de pessoas que se voluntariaram e investiram seu tempo porque esse projeto de código aberto também era importante para elas. Obrigado!
O Flutter está aguardando você. O que você vai criar?
Na nossa postagem anterior sobre “Assumir o controle dos seus dados”, falamos sobre como ganhar visibilidade dos seus dados usando a Cloud Data Loss Prevention (DLP) API. Mas a descoberta de dados confidenciais é apenas o começo. Nesta postagem, abordaremos como proteger esses dados incorporando automaticamente técnicas de ofuscação e minimização de dados aos seus fluxos de trabalho. Dessa forma, a possibilidade de erro humano é reduzida.
Imagine que você tem um banco de dados dos registros de conversa das interações dos seus clientes ou de anotações médicas não estruturadas. Ambos contêm insights valiosos, mas também alguns dados confidenciais como números de telefone, endereços de e-mail e outros tipos de informações de identificação pessoal (PII, na sigla em inglês). Você tem algumas opções para proteger esses dados confidenciais. Uma delas é a aplicação de técnicas de segurança tradicionais como controle de acesso e criptografia. Essas são ótimas opções para proteger dados, mas são incertas quanto ao conteúdo real. Em outras palavras, qualquer usuário a quem você conceder acesso poderá ver todas as informações em um conjunto de dados. Isso pode levar à exposição de mais dados do que o necessário, mesmo para usos comerciais aprovados como no caso de análise.
O que você realmente quer é conceder aos usuários acesso a todos os dados com a exceção de informações confidenciais. Uma opção é remover as informações confidenciais do restante dos dados com um formulário de transformações para preservação de identidade chamado desidentificação. ONIST define a desidentificação como o processo de “remoção de informações identificáveis de um conjunto de dados individuais para que eles não possam ser vinculados a indivíduos específicos”.
Dessa forma, com a desidentificação, caso um cliente informe seu número de telefone em uma mensagem por bate-papo, por exemplo:
My phone number is 8582394000 if you need to reach me
Você poderia compartilhar o texto, exceto o número de telefone. Algo assim:
My phone number is [PHONE_NUMBER] if you need to reach me
Dessa maneira, a desidentificação pode ajudar a diminuir os riscos inerentes aos dados para que quando alguém recebe acesso a eles, a chance de exposição a informações de identificação pessoal confidenciais seja reduzida.
Existem várias técnicas de desidentificação que podem ajudar a ocultar dados confidenciais e preservar a utilidade das informações. Veja abaixo algumas técnicas disponíveis no Cloud DLP.
Substituição: substitui cada valor de entrada por um valor determinado.
Edição: edita um valor ao removê-lo.
Máscara: mascara uma string total ou parcialmente ao substituir um número de caracteres por um caractere fixo especificado. Essa técnica pode, por exemplo, mascarar todas as informações, exceto os 4 últimos dígitos de um número de conta ou de um CPF ou CNPJ.
Pseudonimização com hash seguro: substitui valores de entrada com um hash seguro unidirecional gerado com dados de chave de criptografia.
Pseudonimização com token de preservação do formato: substitui um valor de entrada com um “token” (ou um valor alternativo) do mesmo conjunto de caracteres e de mesmo tamanho usando criptografia de preservação do formato (FPE, na sigla em inglês). A preservação do formato pode ajudar a assegurar a compatibilidade com sistemas legados que tenham requisitos de esquema ou formato restritos.
Movimentação de data: troca datas em um número aleatório de dias por usuário ou por entidade. Isso ajudar a ofuscar os dados verdadeiros preservando a sequência e a duração de uma série de eventos ou transações.
Extração de data: extrai ou preserva uma porção dos valores de Data, Timestamp e TimeOfDay.
Generalização: Bucketing: mascara valores de entrada substituindo-os por “buckets” ou intervalos dentro do valor de entrada. Por exemplo, você pode atribuir idades específicas a faixas etárias ou valores distintos em intervalos como "baixo", "médio" ou "alto".
Você pode aplicar essas técnicas de desidentificação tanto em dados estruturados quanto em dados não estruturados. Ou seja, você pode aplicá-las a uma coluna inteira (como uma ID do usuário) ou em descobertas dentro de um bloco de texto.
Trabalhando um pouco mais com o exemplo do número de telefone acima, vamos supor que você quisesse substituir o número de telefone usando a pseudonimização com um token de preservação de formato. Seria algo semelhante a:
My phone number is 6070548884 if you need to reach me
Ou, esta seria a saída pseudonimizada com um prefixo opcional, que indica que ela pode ser revertida:
My phone number is PHONE(10):6070548884 if you need to reach me
Todas as opções de desidentificação do Cloud DLP estão disponíveis por meio de uma simples REST API, assim como várias bibliotecas de cliente em linguagens comuns de script e programação. Pra começar, confira a documentação do Cloud DLP.
O Cloud DLP oferece uma variedade de ferramentas flexíveis e escalonáveis para ajudar você a desidentificar dados confidenciais e reduzir o risco da sua carga de trabalho de produção. Veja estes exemplos de como os clientes usam o Cloud DLP.
Ofuscação automática de dados em grande escala
Sua empresa precisa compartilhar dados com terceiros para executar uma análise, mas você não quer compartilhar as informações de identificação pessoal desnecessárias para o parceiro. O Cloud DLP ajuda você a mascarar, pseudonimizar ou generalizar automaticamente os dados com os quais você trabalha. Você pode configurá-lo para operar de acordo com sua carga de trabalho removendo dados e/ou configurações de maneira enfática para preservar a integridade referencial das junções e das análises agregadas.
Para começar, veja este canal de referência que usa o Cloud DLP e o Dataflow para ofuscar automaticamente os dados e ingerir as informações no Cloud Storage ou no BigQuery.
Minimização de dados em tempo real
Para reduzir os riscos à privacidade, você precisa gerenciar os dados coletados dos clientes. Se você recolher dados diretamente dos seus clientes ou por meio de parceiros usando vários serviços e APIs, o Cloud DLP pode ajudar desde o início para reduzir a coleta de informações de identificação pessoal desnecessárias. Como uma API, você pode usar os métodos de streaming “inspeção” e “desidentificação” para classificar e ofuscar dados em tempo real.
Ainda melhor, você pode chamar a API do Cloud DLP diretamente para integrá-la a praticamente qualquer aplicativo, incluindo o Google Apigee, nossa plataforma de gerenciamento de API, para ajudar a proteger todos os seus pontos de extremidade de API, de entrada e de saída.
O uso de notificações é uma das maneiras mais eficientes de trazer usuários não ativos de volta ao seu aplicativo. Notificações bem direcionadas e oportunas podem ser cruciais para aumentar o engajamento. Por isso, reformulamos o painel de notificações do Firebase para dar suporte a campanhas muito mais sofisticadas e eficientes.
O antigo painel permitia que você configurasse campanhas de notificação como alertas únicos que podiam ser acionados imediatamente ou agendados para uma data posterior. Por exemplo, com poucos cliques, você poderia configurar uma campanha de notificação que servisse de lembrete para novos usuários que ainda não concluíram a integração a fazer isso na segunda-feira. No entanto, não era possível automatizar esse lembrete para que ele fosse acionado todas as segundas-feiras, ao menos que você fizesse isso manualmente.
No novo painel de notificações do Firebase, adicionamos a função de criar campanhas recorrentes. As campanhas recorrentes são campanhas de notificação que são acionadas automaticamente sempre que um usuário atende às condições estabelecidas. Agora é fácil configurar um lembrete semanal que incentive novos usuários a concluir a integração, por exemplo. Ou talvez você queira oferecer descontos para compras no aplicativo a cada duas semanas de modo a estimular os usuários a comprar. Também é possível fazer isso!
O novo painel de notificações permite que você defina limites de frequência para as mensagens enviadas ao usuário. Ao fazer isso, você pode controlar o número de vezes que o usuário recebe mensagens e, assim, evitar o envio de spam. É possível definir que as mensagens sejam enviadas apenas uma vez para cada usuário ou permitir uma mensagem em um número específico de dias.
Talvez você queira enviar uma mensagem de boas-vindas para cada novo usuário. Use uma única mensagem direcionada a cada um deles apenas uma vez. Incentive os usuários a conferir o tutorial sobre como usar o aplicativo. Você pode enviar uma notificação a cada período determinado de dias para guiá-los até que o tutorial seja concluído. Como os segmentos direcionados são dinâmicos, os usuários que atenderem às condições definidas começarão a receber notificações automaticamente. Da mesma forma, aqueles que não atenderem mais a essas condições deixarão de recebê-las. Isso significa que sua notificação só será entregue a usuários para os quais a mensagem seja relevante.
Os usuários podem receber uma notificação apenas uma vez
Os usuários podem receber notificações em um intervalo personalizado
As mensagens não direcionadas e uma enxurrada de notificações são inconvenientes e podem fazer com que os usuários abandonem o aplicativo. É de extrema importância segmentar sua notificação aos usuários corretos para que ela seja bem recebida e relevante à interação recente do usuário com seu aplicativo, e não inapropriada e aleatória. O novo painel de notificações inclui um criador de segmentos mais sofisticado que possibilita direcionar as mensagens de acordo com características predominantes do usuário, como a última interação e o número de dias desde a primeira vez que ele abriu o aplicativo. Essa segmentação é construída dentro do painel para que você não precise adicionar código para ter esses novos parâmetros.
Por fim, também melhoramos a seção de resultados do painel de notificações para que você possa monitorar melhor o desempenho das suas campanhas e fazer ajustes conforme necessário. No novo painel de notificações, agora é possível acompanhar a eficiência das campanhas recorrentes dia a dia. Aqui você pode ver dados diários relacionados a conversões, bem como a notificações enviadas e abertas. Você também verá que os gráficos foram atualizados. Os gráficos de barra foram alterados para gráficos de série temporal, que são mais intuitivos e fáceis de interpretar.
O painel de notificações reformulado do Firebase agora oferece opções de campanha eficientes, direcionamento sofisticado e análise detalhada para acompanhar suas campanhas de notificação. Se você ainda não estiver familiarizado com as notificações do Firebase, comece com os guias do Firebase Cloud Messaging.
Confira o Console do Firebase e comece suas campanhas de notificação hoje mesmo!