Categoria: Serverless

API Management APIs Cloud DevOps Serverless

Porque sua empresa deveria utilizar API Management

Organizações no mundo inteiro compreendem, cada vez mais, o potencial das APIs, mas ainda poucos compreendem a real necessidade do correto gerenciamento de APIs. Para atingir este objetivo é necessário o uso de soluções conhecidas como API Management. Atualmente, tais soluções são oferecidas por diversos players de tecnologia, e sua grande maioria é oferecida como serviço através da nuvem.O gerenciamento de APIs se tornou uma necessidade por diversos motivos, e o objetivo deste artigo é te ajudar a compreender melhor este conceito e sua importância na atual economia digital.Antes de falar sobre o Gerenciamento de APIs, é importante entender para que serve uma API.O que são APIs?APIs expõem dados para uso por aplicativos e os desenvolvedores que as criam. Eles tornam os ativos da empresa acessíveis por aplicativos e se tornaram a ferramenta pela qual as empresas adicionaram uma camada digital às suas interações com clientes, funcionários e parceiros. Basicamente, uma API especifica como os componentes de software devem interagir e se comunicar, de uma maneira mais “segura” e flexível.As organizações estão implementando estratégias para gerenciar suas APIs, para que possam responder a mudanças rápidas nas demandas dos clientes. Na maioria dos casos, essas organizações adotam uma arquitetura de microsserviços para atender às demandas, acelerando o desenvolvimento de software. APIs baseadas em HTTP tornaram-se o método preferido para interação síncrona entre arquiteturas de microsserviços. Essas APIs são a cola que conecta todos os microsserviços. O gerenciamento dessas APIs permite que uma organização garanta que as APIs sejam usadas em conformidade com as políticas corporativas e permita a governança por níveis adequados de segurança, pois alguns serviços podem exigir políticas de segurança diferentes das de outros.É neste momento que entra o API Management.Por que usar um API Management?O API Management é responsável pelos processos de distribuição, controle e análise das APIs que conectam aplicativos e dados da empresa e de outras plataformas. O objetivo do API Management é permitir que as organizações que criam APIs ou usam APIs de terceiros monitorem a atividade e garantam que as necessidades dos desenvolvedores e aplicativos que usam a API sejam atendidas.Além disso, o API Management tem, como um dos principais objetivos, centralizar o controle das suas APIs – incluindo análises, controle de acesso, monetização e fluxos de trabalho do desenvolvedor. Uma solução de gerenciamento de API, como o Azure API Management, por exemplo, fornece confiabilidade, flexibilidade, qualidade e velocidade para expor e consumir APIs.Para atingir esses objetivos e garantir que as APIs públicas e internas sejam consumíveis e seguras, uma solução de gerenciamento de API deve fornecer, no mínimo, controle de acesso, limites de taxa e políticas de uso. A maioria das soluções de API Management também inclui os seguintes recursos:Um portal para desenvolvedores: Utilizar um portal de desenvolvedor é uma prática comum, e recomendada, para gerenciamento de APIs. Os portais de desenvolvedor geralmente fornecem a documentação das APIs, juntamente com os processos de integração do desenvolvedor, como inscrição e administração da conta;Um API gateway: O API gateway é o ponto de entrada único para todos os clientes. O gateway também determina como os clientes interagem com as APIs por meio do uso de políticas – incluindo os níveis de segurança desejado;Gerenciamento de ciclo de vida da API: As APIs devem ser gerenciáveis desde o design, até a implementação, e, eventualmente, até o fim da sua utilização;Analytics: É importante saber o que está acontecendo com suas APIs – qual consumidor ou aplicativo está chamando qual API e com que frequência. Também é essencial saber quantas APIs falharam e por quê;Suporte para monetização de APIs: Para empresas que tem como objetivo a monetização de APIs, o API Management talvez seja essencial para um controle mais eficaz. É possível monetizar o acesso aos microsserviços por trás das APIs por meio de contratos de uso. O gerenciamento de API permite definir contratos de uso com base em métricas, como o número de chamadas de API, por exemplo. Os consumidores podem ser segmentados e diferenciados por níveis de acesso, e a qualidade do serviço pode ser oferecida a diferentes segmentos.API e SegurançaA segurança é fundamental para as empresas quando elas expõem seus sistemas back-end por meio de APIs. A primeira razão pela qual qualquer empresa consideraria o gerenciamento de API é proteger suas APIs. Não se trata apenas de autenticar e autorizar o acesso à API, mas também de políticas para bloquear ataques, garantir que dados confidenciais não sejam acidentalmente ou intencionalmente vazados e revogar uma API comprometida que foi concedida a um usuário.O gerenciamento da API também deve fornecer logs e trilhas de auditoria para oferecer suporte à análise offline e à solução de problemas em tempo real.Outro recurso importante são as cotas de API e a interrupção de pico, para que o tráfego nos sistemas back-end seja adequadamente controlado e gerenciado. Por exemplo, os hacks públicos que ocorreram contra a API do aplicativo Snapchat são um exemplo do que pode dar errado se sua API não estiver protegida. Por exemplo, o uso da limitação de taxa teria frustrado pelo menos um dos hacks que atingiram o Snapchat entre os anos de 2013 e 2014. Hoje em dia o Snapchat e a grande maioria das grandes empresas que tem algum tipo de exposição de APIs, com certeza, utilizam soluções robustas de API Management, mas é importante pensar em tais níveis de controle desde o começo do desenvolvimento de suas aplicações.Desenvolvimento com API ManagementA experiência do desenvolvedor é essencial para a adoção e o sucesso de suas APIs. As APIs da sua empresa são inúteis se ninguém as usar. Para permitir a rápida adoção de suas APIs, o API Management pode prover um portal para colocar todas as APIs em um único local, facilitando a descoberta e o teste dessas APIs. Os melhores portais fornecem uma experiência completa de autoatendimento, onde os desenvolvedores podem selecionar as APIs e os níveis de serviço necessários, obter acesso seguro, monitorar seu uso da API e até monetizar e participar do compartilhamento de receita com o provedor da API (no caso de APIs de terceiro). Outra característica muito importante do portal é um mecanismo de feedback, como blogs de suporte ao cliente, fóruns e conteúdo da comunidade. Como vimos, o API Management proporciona uma experiência superior para a exposição de APIs e o efetivo consumo das mesmas.Segurança, portais de desenvolvedores, análises e monetização são apenas alguns dos principais motivos pelos quais você precisa de uma ferramenta robusta de gerenciamento de API. Para aplicar conceitos de desenvolvimento desacoplado e realmente obter as vantagens do desenvolvimento de aplicações Cloud Native, um API Management é essencial.Tá afim de conhecer melhor o funcionamento do API Management? Entre em contato com a Kumulus. Somos especialistas em Application Modernization e podemos ajudar sua organização a aplicar novos conceitos de desenvolvimento e tirar benefícios tangíveis levando suas aplicações para a nuvem da forma correta.

LER MAIS ARTIGOS

Acompanhe a Kumulus nas redes sociais:

Facebook

Instagram

Youtube

Envelope

Cloud Education Serverless

Parte 3/3 – Learn: Desvendando o poderoso Kubernetes – Casos de Uso Reais

Desvendando o Kubernetes – Casos de Uso ReaisNos artigos anteriores, da nossa série sobre Kubernetes, você aprendeu o que é Kubernetes, como ele funciona, e aprendeu também quais são os principais componentes do Kubernetes.Neste terceiro artigo e último da nossa série sobre Kubernetes, você vai conhecer casos de uso reais usando Kubernetes. Como empresas como Spotify, China Unicom, NAV e APPdirect adoratam Kubernetes como orquestrador de containers, reduzindo custos de TI e otimizando tempo em processos complexos.Caso de uso: SpotifyO serviço de streaming mais popular do mundo está migrando toda a sua orquestração de containers para o Kubernetes (k8s)Criada em 2008, o Spotify, é a plataforma de streaming mais popular do mundo, que, nos últimos 10 anos, cresceu mais de 200 milhões de usuários ativos mensais em todo o mundo.O DESAFIO:“Nosso objetivo é capacitar criadores de conteúdo e possibilitar uma real experiência imersiva auditiva nos consumidores que temos hoje – e esperamos também, que isto aconteça com os consumidores que teremos no futuro”, diz Jai Chakrabarti, Diretor de Engenharia, Infraestrutura e Operações da Spotify.Você pode ler também:Learn: Desvendando o poderoso Kubernetes – nodes, containers e clustersLearn: Desvendando o poderoso Kubernetes – Por dentro dos seus componentesAo iniciar a adoção dos microsserviços e Docker, o Spotify tinha microsserviços em contêineres dentro de todas as suas VMs, usando um sistema de orquestração de containers caseiro, chamado Helios.A SOLUÇÃO:“Nós vimos uma incrível comunidade crescendo a cerca do Kubernetes e queríamos muito fazer parte dela”, diz Chakrabarti.”Kubernetes é mais rico em recursos do que o Helios e mais, “Queríamos nos beneficiar da velocidade adicional e do custo reduzido, além de nos alinharmos com o restante do setor nas melhores práticas e ferramentas”. Ao mesmo tempo, o time queria contribuir com a sua experiência e influência no crescimento da comunidade Kubernetes. “A migração, que pode acontecer em paralelo com o Helios rodando, acontece sem problemas já que o “Kubernetes se encaixa muito bem como um complemento e agora como um substituto do Helios”, diz Chakrabarti.OS RESULTADOS:O time de cloud passou a maior parte do tempo de 2018 abordando os principais problemas tecnológicos, necessários para uma migração que, segundo Chakrabarti, começou tarde naquele ano, mas que está sendo o foco principal agora em 2019.“Uma pequena porcentagem da nossa frota foi migrada para o Kubernetes, e algumas das coisas que estamos ouvindo dos nossos times, são que eles estão tendo menos necessidade de se focar no provisionamento de capacidade manual, e mais tempo focando na entrega de recursos para o Spotify”, diz Chakrabarti.”O maior serviço atualmente em execução no Kubernetes recebe cerca de 10 milhões de solicitações por segundo como um serviço agregado e beneficia muito no autoescalonamento” diz o Engenheiro de Confiabilidade do Site, James Wen.Ele acrescenta, “Antes, os times tinham que esperar uma hora para criar um novo serviço e obter um host operacional para executá-lo na produção, mas com o Kubernetes, eles podem fazer isso em minutos”. Além do mais, com os recursos de empacotamento de lixo e multilocação do Kubernetes, a utilização da CPU melhorou em média de duas até três vezes.” Caso de uso: China UnicomEntenda como a China Unicom implementou containers, usando o Kubernetes para aumentar a eficiência e diminuir custos de TIAgora vamos mostrar o caso de uso da China Unicom, uma das principais operadoras de telecomunicação da China, com cerca de 300 milhões de usuários ativos.O DESAFIO: A China Unicom executa vários data centers, com milhares de servidores em cada um usando os contêineres de Docker, VMWare e infraestrutura do OpenStack, desde 2016.“Infelizmente, a taxa de utilização de recursos foi relativamente baixa e não tínhamos uma plataforma cloud para acomodar nossos milhões de aplicativos”. diz Chengyu Zhang, líder da Plataforma de Tecnologia R&DAtualmente a China Unicom está focando no desenvolvimento interno, usando tecnologias open-source. O time técnico do China Unicom Lab de Zhang começou a procurar opções de orquestração de containers open-source, para a sua infraestrutura de cloud.A SOLUÇÃO:Por causa do rápido crescimento da comunidade open-source, o Kubernetes foi uma escolha natural para o time de cloud da China Unicom. Seu serviço de cloud que agora roda em  Kubernetes, hospeda 50 microsserviços e todos os novos desenvolvimentos que têm sido feitos desde então.“O Kubernetes tem melhorado nossa experiência usando a infraestrutura cloud” diz Zhang. “Não há nenhuma tecnologia alternativa que possa replicar isso”. A China Unicom também usa Istio para a estrutura de microsserviços, Envoy, CoreDNS e Fluentd.OS RESULTADOS:Na China Unicom, implantar Kubernetes melhorou a eficiência operacional e de desenvolvimento. A utilização de recursos aumentou em 20-50%, reduzindo os custos de infraestrutura de TI e o tempo de implantação passou de algumas horas para 5-10 minutos.“Isso é principalmente por causa do self-healing e a escalabilidade, assim podemos aumentar nossa eficiência em operações e manutenção”. “Por exemplo, atualmente temos cinco pessoas mantendo nossos múltiplos sistemas. Nós nunca poderíamos imaginar que alcançaríamos essa escalabilidade em tão pouco tempo”.diz Zhang.Caso de Uso: NAVComo a NAV, uma startup de pontuação de crédito para pequenas empresas, reduziu os custos de infraestrutura em 50% após adotar o Kubernetes.Fundada em 2012, a americana Nav fornece aos proprietários de pequenas empresas, acesso às suas pontuações de crédito empresarial de todas as três principais agências de crédito comercial-Equifax, Experian e Dun & Bradstreet- e financiam opções que melhor atendam as suas necessidades.O DESAFIO: “Com cinco anos de vida, a startup cresceu rápido, nosso ambiente de cloud estava ficando grande e nosso uso desses ambientes estava extremamente devagar, tipo 1%”, diz o Diretor de Engenharia Travis Jeppson. “Queríamos que nosso uso de ambiente em cloud fosse mais integrado com o que realmente precisávamos, então começamos a observar a conteinerização e orquestração para nos ajudar a sermos capazes de executar trabalhos, que eram distintos uns dos outros, mas poderiam compartilhar um pool de recursos similares.”A SOLUÇÃO:Depois de aumentar o número de soluções de orquestração, o time da Nav decidiu adotar o Kubernetes, rodando na AWS. “A força da comunidade em torno do Kubernetes foi um forte motivo, bem como sua origem no Google. E mais, as outras soluções tendiam a ser bastante pesadas, muito complexas, muito grandes, e muito difíceis de gerenciar apenas fora do BAT”, diz Jeppson. “Kubernetes nos proporcionou um jeito simples de aderir a uma solução de orquestração, que se encaixa nas nossas necessidades no momento, com a possibilidade de escalar, permitindo que pudéssemos crescer com ele, com a capacidade de incorporar mais recursos e funcionalidades no futuro”.OS RESULTADOS:A equipe de quatro pessoas colocou o Kubernetes para rodar em rápidos seis meses, e toda a migração dos 25 microsserviços da Nav foi completada em outros seis. Os resultados foram impressionantes: a utilização de recursos, teve o impactante aumento de 1% para 40%, e o lançamento de um novo serviço que, antes levava duas semanas, agora leva menos de impressionantes 10 minutos, as implantações aumentaram em cinco vezes e a empresa está economizando 50% nos custos com infraestrutura. Caso de Uso: APPDIRECTComo a APPDIRECT, uma plataforma de comércio de ponta a ponta para produtos e serviços baseados em cloud, apoiou o aumento em 10x de sua equipe de engenharia com o KubernetesA AppDirect fornece uma plataforma de comércio de ponta a ponta para produtos e serviços baseados em cloud. Quando o Diretor de Desenvolvimento de Software, Pierre-Alexandre Lacerte começou a trabalhar lá em 2014, “A companhia tinha uma aplicação monolítica implantada em uma infraestrutura tomcat, e todo o processo de liberação foi mais complicado do que deveria”, diz Pierre. O DESAFIO:”Tínhamos muitos processos manuais, com um engenheiro construindo um recurso, depois outro time pegando as mudanças. Então você tinha bottlenecks no pipeline para enviar um recurso para a produção”.  Ao mesmo tempo, o time de engenharia estava crescendo, e a empresa percebeu que precisava de uma infraestrutura mais robusta, para suportar esse crescimento e aumentar a velocidade das entregas.A SOLUÇÃO: “Minha ideia foi:  vamos criar um ambiente onde os times consigam implantar seus serviços mais rápido, e eles dirão, “Ok, eu não quero construir mais no monolítico. Eu quero construir um serviço”, diz Lacerte. Eles consideraram e projetaram várias tecnologias diferentes antes de decidirem adotar o Kubernetes no início de 2016. O time de Lacerte também integrou o monitoramento do Prometheus à plataforma; rastreamento seria o próximo passo. Hoje, o AppDirect tem mais de 50 microsserviços em produção e 15 clusters do Kubernetes implantados me um dos maiores provedores de cloud do mundo.OS RESULTADOS:”A plataforma do Kubernetes ajudou o time de engenheiros a crescer em 10 vezes nos últimos anos. Aliado ao fato que eles continuam adicionando novas características”, Lacerte diz,“Eu acho que a nossa velocidade teria diminuído muito se não tivéssemos essa infraestrutura”.Mudar para o Kubernetes e serviços significa que as implantações se tornaram mais rápidas devido à menor dependência de scripts de shell frágeis e customizados com comandos SCP. O tempo para implantar uma nova versão diminuiu de 4 horas para alguns minutos. Além disso, investimos muito esforço para transformar as coisas em autoatendimento para os desenvolvedores.“Colocar um novo serviço não requer ingressos ou reuniões do Jira com três times diferentes”, diz Lacerte.Hoje, a empresa tem 1.600 implantações por semana, comparado as 1-30 antes. A empresa também conseguiu economizar movendo seu marketplace e monólitos de faturamento para o Kubernetes a partir de hosts EC2 legados, bem como aproveitando o escalonamento automático, pois o tráfego é maior durante o horário comercial.

LER MAIS ARTIGOS

Acompanhe a Kumulus nas redes sociais:

Facebook

Instagram

Youtube

Envelope

Cloud Serverless

Construindo Pipelines Serverless com eventos do Amazon CloudWatch

Eventos e Serverless andam juntos como carne e churrasco. A mentalidade Serverless (sem servidor) diz para se concentrar no código e na configuração que fornecem valor comercial.

Acontece que na maior parte do tempo, isso significa trabalhar com eventos: dados estruturados correspondentes às coisas que acontecem no mundo exterior. Em vez de manter tarefas demoradas do servidor que consomem recursos durante a pesquisa, é possível criar aplicativos Serverless que funcionam em resposta a “disparadores de eventos”.

Temos muitas opções ao trabalhar com eventos na AWS: Amazon Kinesis Data Streams, Amazon Simple Notification Service (SNS), Amazon Simple Queue Service (SQS) e muito mais, dependendo dos requisitos. Ultimamente vem sendo utilizado um serviço com mais frequência que tem a palavra “evento” o: Eventos do Amazon CloudWatch.
CloudWatch Events: O segredo mais bem guardado no processamento de eventos Serverless
Conhecemos o CloudWatch como o serviço que coleta os logs do Lambda e que permite executar funções em um cronograma. Mas o CloudWatch Events também permite publicar os próprios eventos personalizados usando o API do CloudWatch. Ele tem garantias semelhantes de preço e entrega para o SNS e oferece suporte a vários serviços da AWS..

O melhor de tudo, não é preciso provisionar o barramento de eventos – está lá no console do CloudWatch. É possível publicar um evento agora, usando o boto3 AWS SDK for Python:
import boto3
cw = boto3.client(‘cloudwatch’)
cw.put_events(
    Entries=[
        {
            ‘Source’: ‘my.app.event’,
            ‘DetailType’: ‘MY_EVENT_TYPE’,
            ‘Detail’: ‘{“my_data”:”As a JSON string”}’
        }
    ]
)

Em suma, o CloudWatch Events oferece um canal de eventos totalmente gerenciado que suporta um número arbitrário de consumidores, onde é possível descartar qualquer tipo de string JSON que você queira. E isso é muito útil para criar aplicativos Serverless.
Arquiteturas orientadas a eventos em ação:
Construímos soluções nativas da nuvem para clientes diariamente. Frequentemente, usamos arquiteturas orientadas a eventos como uma maneira poderosa de migrar sistemas legados para Serverless, habilitar integrações mais simples e mais. A seguir vamos mostrar alguns padrões:
·   Projetando aplicativos de origem de eventos
·   “Strangling” ou estrangulando (traduzindo para o português) banco de dados legados
·   Projetando aplicativos de origem de eventos

“Estrangulando” bancos de dados legados
O “padrão strangler” oculta um sistema legado por trás de uma API de wrapper, enquanto gradualmente migra os usuários para a nova interface. A transmissão de alterações para a nuvem, como eventos, é uma ótima maneira de abrir casos de uso de relatórios e análises e, ao mesmo tempo, remover a carga de um banco de dados legado. O diagrama a seguir mostra a gravação de um banco de dados herdado em eventos.

(img: blog aws amazon)

Esse padrão também pode funcionar de outra maneira: é possível gravar novos dados no CloudWatch Events, consumí-los em uma fonte de dados moderna e criar um seguindo consumidor que sincronize os dados com o seu sistema legado.
Projetando aplicativos originados por eventos:
A terceirização de eventos significa simplesmente tratar as mudanças no estado do sistema como eventos, publicando-os em um “ledge” ou em um barramento onde eles podem ser consumidos por diferentes aplicativos de recebimento de dados.

Usando os eventos do CloudWatch como um barramento centralizado, é possível disponibilizar um registro limpo de eventos, conforme mostrado no diagrama de fluxo de validação de eventos a seguir:

(img: blog aws amazon)

A função de validação garante que apenas os eventos que correspondam aos padrões do meu aplicativo sejam marcados como “válidos” e disponibilizados para os consumidores downstream. O barramento padrão lida com muitos eventos. Por isso é importante configurar regras que correspondem apenas aos eventos que me interessam.

O CloudWatch Events simplifica esses padrões fornecendo um único barramento, no qual é possível aplicar filtros e inscrever clientes, sem ter que provisionar ou manter qualquer infraestrutura. E isso é apenas o começo. 🙂
Caso de uso: processamento de eventos com várias contas com eventos CloudWatch
O CloudWatch Events fica mais interessante quando começamos a conectar várias contas, usando regras de filtragem para escolher quais eventos serão encaminhados.

Como por exemplo, imagine um sistema de processamento de widgets para uma grande empresa, a “Empresa Exemplo”. A “Empresa Exemplo” tem várias equipes de desenvolvimento diferentes, cada uma usando sua própria conta na AWS. Alguns serviços estão produzindo informações sobre widgets quando eles acessam os armazéns ou viajam pelo país. Outros precisam desses dados para gerar relatórios ou inovar novos produtos.

Suponha que o “Serviço A” produza informações sobre novos widgets, o “Serviço B” deseja visualizar agregados sobre widgets em tempo real e o “Serviço C” precisa de dados históricos sobre widgets para relatório. O fluxo de eventos completo se parecerá com o diagrama a seguir:

1.       O “Serviço A” publica o novo evento de widget no CloudWatch Events em sua conta da AWS com o seguinte evento:
{
            ‘Source’: ‘cwi.servicea’,
‘DetailType’: ‘NEW_WIDGET’,
‘Detail’: ‘{“widget_id”:”abc123″}’
}

2. Uma regra de filtragem encaminha eventos marcados com cwi.services a conta de processamento de evento central. Usando o CloudFormation, eles poderiam definir a regra da seguinte maneira:
CentralForwardingRule:
Type: AWS::Events::Rule
Properties:
Description: Rule for sending events to central account
EventPattern:
source:
– cwi.servicea
Targets:
– Arn: !Sub arn:aws:events:${CENTRAL_ACCOUNT_REGION}:${CENTRAL_ACCOUNT_ID}:event-bus/default
Id: CentralTarget
RoleArn:

3.     O evento é validado de acordo com seus padrões.
4. O evento válido é republicado no barramento central de eventos com uma nova fonte valid.cw.servicea. isso é importante porque, para evitar loops infinitos, um evento individual só pode ser encaminhado uma vez.
5.  Uma regra de filtragem encaminha o evento válido para a conta AWS do Serviço B, onde atualiza uma tabela do DynamoDB conectada a uma API do AWS AppSync.
6.   Uma segunda regra encaminha o mesmo evento para a conta do Service C, na qual ele passa pelo Kinesis Data Forehose para um bucket do Amazon S3 para analise usando o Amazon Athena.
O que o CloudWatch Events fornece aqui é um sistema desacoplado que usa principalmente serviços “plug-and-play” e ainda abre flexibilidade para inovações futuras.
Aproveitando ao máximo a nuvem
A maior razão pela qual o CloudWatch Events é amado? É um serviço fantasticamente nativo da nuvem. Há pouco código necessário e nenhuma responsabilidade operacional além de observar os limites de serviço da AWS. Não é preciso implantar nada para começar a usá-lo.

Isso é muito próximo do ideal platônico dos aplicativos Serverless.

Fonte: blog aws

Social media & sharing icons powered by UltimatelySocial