Baixe o app para aproveitar ainda mais
Prévia do material em texto
Aplicações modernas Como reinventar a entrega de valor da sua empresa As aplicações modernas estão mudando a forma como sua empresa agrega valor para os clientes A transformação digital afetou drasticamente a maneira como as empresas entregam valor e o ritmo com que fazem mudanças em seus produtos e serviços. Toda empresa está se tornando uma empresa de tecnologia. As organizações estão cada vez mais criando produtos que são tecnológicos por si mesmos ou são fortemente influenciados pela tecnologia. Para competir nesse novo mundo, as empresas devem criar produtos digitais melhores e isso a um ritmo cada vez mais rápido. Muitas empresas estão inovando mais rapidamente ao mudar a maneira como projetam, criam e gerenciam aplicações por meio do que podemos chamar de aplicações modernas. As aplicações modernas aumentam a agilidade de suas equipes, bem como a confiabilidade, a segurança e a escalabilidade das aplicações. As aplicações modernas são criadas com mais rapidez do que nunca. Elas podem escalar rapidamente até milhões de usuários, oferecer disponibilidade global, gerenciar petabytes (e até exabytes) de dados e responder em milissegundos. INTRODUÇÃO 2 “A invenção requer duas coisas: a capacidade de fazer muitos experimentos e não ter que conviver com o dano colateral dos experimentos que falharam.” Andy Jassy, CEO, Amazon Web Services 50% da tecnologia de comunicação da informação será alocada diretamente à transformação digital até 2023, segundo as previsões 67% dos executivos acreditam que devem acompanhar o ritmo para permanecerem competitivos 90% das novas aplicações serão nativas da nuvem até 2025, segundo as previsões Para criar aplicações modernas, você também precisa reconsiderar os padrões de arquitetura, os modelos operacionais e o processo de entrega de software da aplicação. Embora essas mudanças possam ser drásticas para a organização, o processo não precisa ser agressivo. Muitas organizações dão um salto inspirado para criar aplicações modernas na nuvem, mas várias outras adotam uma abordagem gradual, lidando com uma aplicação por vez. Observamos características comuns de aplicações modernas em nossa experiência criando aplicações para a Amazon.com e atendendo a milhões de clientes da AWS. As aplicações com essas características permitiram que nossos clientes aumentassem a agilidade e criassem aplicações melhores para apoiar o sucesso da empresa. Embora você possa modernizar aplicações partindo de qualquer ponto, o resultado é o mesmo: aplicações mais seguras, confiáveis, escaláveis e rapidamente disponíveis para clientes e parceiros. Este guia aborda os seguintes tópicos: • Inovadores digitais • Características das aplicações modernas 1 Cultura de propriedade 2 Padrões de arquitetura: microsserviços 3 Computação em aplicações modernas: contêineres e AWS Lambda 4 Gerenciamento de dados: propósito específico e desacoplamento 5 Agilidade na atuação dos desenvolvedores: abstração, automação e padronização 6 Modelo operacional: arquitetura sem servidor o tanto quanto possível 7 Gerenciamento e governança: como usar proteções programáticas • Comece a criar aplicações modernas hoje mesmo INTRODUÇÃO 3 INOVADORES DIGITAIS 1 https://www.forrester.com/report/Digital+Rewrites+The+Rules+Of+Business/-/E-RES137090 4 OUVIR ITERAR EXPERIMENTAR CICLO DA INOVAÇÃO Inovação requer ouvir os clientes Em um relatório recente de Vision Report, Digital Rewrites the Rules of Business, a Forrester Research definiu a mentalidade centrada no cliente de um inovador digital. A principal missão desses inovadores modernos é: “Aproveitar os ativos e os ecossistemas digitais para melhorar continuamente os resultados do cliente e, ao mesmo tempo, melhorar a excelência operacional […] aplicando o pensamento digital às experiências, operações, ecossistemas e inovações do cliente.” 1 Focar no cliente significa tomar decisões de negócios trabalhando no sentido contrário, partindo do ponto de vista do cliente. Significa aprimorar constantemente os produtos e os serviços para oferecer melhor os resultados que encantam os clientes. Por fim, significa ouvir o que o cliente realmente valoriza para que você possa continuar inventando e iterando em benefício dele. Isso se chama o “ciclo da inovação”. A ideia básica é que o motivador de qualquer inovação surge com a demanda do cliente e melhora com os comentários do cliente. Isso se repete de modo constante (e lucrativo) até que a demanda mude e todo o ciclo recomece. Quanto mais rapidamente as equipes puderem girar o próprio ciclo da inovação, mais forte será seu diferencial no mercado e mais você se destacará da concorrência. APLICAÇÕES MODERNAS NA PRÁTICA O desenvolvimento de aplicações modernas é uma abordagem eficiente para projetar, criar e gerenciar software na nuvem. Essa abordagem comprovada aumenta a agilidade das equipes de desenvolvimento, a confiabilidade e a segurança das aplicações, permitindo a criação e o lançamento de produtos melhores em menos tempo. Com base em nossa experiência em ajudar organizações de todos os tipos a criar aplicações, identificamos as características comuns das aplicações modernas às quais os inovadores digitais recorrem para obter sucesso. 5 Características das aplicações modernas 1 Cultura de propriedade 2 Padrões de arquitetura: microsserviços 3 Computação em aplicações modernas: contêineres e AWS Lambda 4 Gerenciamento de dados: propósito específico e desacoplamento 5 Agilidade na atuação dos desenvolvedores: abstração, automação e padronização 6 Modelo operacional: arquitetura sem servidor o tanto quanto possível 7 Gerenciamento e governança: como usar proteções programáticas UMA CULTURA DE PROPRIEDADE Como criar uma cultura de propriedade A inovação vem, em última análise, das pessoas. Portanto, o desenvolvimento de aplicações modernas tem como ponto de partida a capacitação das pessoas para que gerem melhores resultados para os clientes. Usamos o conceito de “produtos, não projetos” para descrever como isso afeta a estrutura da equipe. Dito de modo simples, a ideia é que as equipes que criam os produtos são responsáveis por operá-los e mantê-los. Esse conceito torna as equipes de produto responsáveis pelo desenvolvimento de todo o produto e não apenas de uma parte dele. Após mais de uma década criando e executando a aplicação Web altamente escalável do site Amazon.com, aprendemos em primeira mão a importância de dar autonomia às nossas equipes. Quando atribuímos à equipe a responsabilidade por todo o ciclo de vida da aplicação, incluindo as tarefas de receber comentários dos clientes, planejar o roteiro, desenvolver e operar a aplicação, ela se apropriou do produto e sentiu- se capacitada a desenvolver e entregar novos resultados aos clientes. A autonomia gera motivação, abre as portas para a criatividade e desenvolve uma cultura que permite assumir riscos em um ambiente de confiança. Embora adotar uma cultura de propriedade não seja algo inerentemente técnico, continua sendo um dos aspectos mais desafiadores do desenvolvimento de aplicações modernas. Capacitar as equipes para que se apropriem do produto envolve mudar a mentalidade da organização, a estrutura das equipes e o trabalho pelo qual elas são responsáveis. 6 Como desenvolver uma cultura de inovação 1 Comece com os clientes: toda inovação deve começar com uma necessidade do cliente e, por fim, encantar os clientes. Tenha como prioridade implacável concentrar-se na demanda dos clientes. 2 Contrate criadores e deixe-os criar: remova qualquer obstáculo que retarde o processo de criação e lançamento de produtos e recursos para os clientes. Quanto mais rápido você iterar, mais rápido o ciclo do flywheel vai girar. 3 Apoie criadores com um conjunto de princípios:não fale da boca para fora, mas respire e viva a inovação em todas as áreas da empresa, da liderança às vendas e ao suporte. MICROSSERVIÇOS Padrões de arquitetura: microsserviços Embora uma aplicação monolítica possa ser facilmente gerenciada hoje em dia, o crescimento costuma trazer desafios, inclusive a forma como se compartilha a responsabilidade pela aplicação entre as equipes. Você pode criar uma forte cultura de propriedade, mas ainda enfrentar dificuldades para aumentar a escala se a arquitetura da aplicação incluir dependências rígidas que impeçam as equipes de assumir a responsabilidade pelo produto final. É por isso que recomendamos criar arquiteturas de microsserviços para aplicações que crescem e mudam rapidamente. Os microsserviços são a expressão arquitetônica de uma cultura de propriedade: eles dividem e organizam as aplicações em componentes que uma única equipe pode deter e executar de modo independente. No caso de um monólito, há muitos desenvolvedores enviando alterações por um pipeline de liberação compartilhado, o que causa problemas em muitos pontos do ciclo de vida. Durante o desenvolvimento, os engenheiros precisam coordenar antecipadamente as mudanças para garantir que não causem problemas no código de outra pessoa. Para atualizar uma biblioteca compartilhada e aproveitar um novo recurso, é preciso convencer todas as outras pessoas a fazer a atualização ao mesmo tempo. Uma tarefa difícil! Se você quiser aplicar rapidamente uma correção importante de um recurso, precisará combiná-la com as alterações em andamento. Após o desenvolvimento, também se enfrenta uma sobrecarga ao processar as alterações pelo pipeline de entrega. Mesmo quando a alteração se resume a uma única linha em um pequeno trecho de código, os engenheiros precisam coordenar antecipadamente as alterações, combinar o código dessas alterações, resolver conflitos nas versões, recompilar toda a aplicação, executar todos os pacotes de teste e reimplantar mais uma vez. 7 8 MICROSSERVIÇOS Em uma arquitetura de microsserviços, a aplicação é formada por componentes independentes que executam cada processo da aplicação como um serviço. Os serviços são criados para as funcionalidades empresariais e cada qual desempenha uma só função. Uma vez que opera de modo independente e é gerenciado por uma única equipe de desenvolvimento, cada serviço pode ser atualizado, implantado e dimensionado para atender à demanda por funções específicas de uma aplicação. Por exemplo, um carrinho de compras online pode ser usado por muitos outros usuários durante uma venda. Os microsserviços enviam e recebem dados entre si por meio de interfaces bem definidas, usando APIs, eventos ou fluxos simples. Nossos clientes dependem cada vez mais de arquiteturas orientadas por eventos (arquiteturas em que as ações são ativadas como resposta a mudanças nos dados) para melhorar a escalabilidade e a resiliência das aplicações ao mesmo tempo que os custos são reduzidos. FAZER TUDO OU FAZER UMA COISA SÓ: DOIS TIPOS DE APLICAÇÕES 8 Aplicação única Necessidade de implantar toda a aplicação Um banco de dados Organizadas em torno de camadas de tecnologia Estado definido em cada instância do tempo de execução Uma pilha de tecnologia para toda a aplicação Serviços com função mínima Implantados separadamente com interação conjunta Cada um tem o próprio datastore Organizados em torno das funcionalidades de negócios Estado externalizado Escolha de tecnologia para cada microsserviço Aplicações monolíticas fazem tudo Microsserviços fazem uma coisa A Centrica, uma empresa britânica multinacional de energia e serviços, queria reduzir os custos e aumentar a agilidade alterando a definição da arquitetura das aplicações. A empresa optou por refatorizar adotando uma arquitetura de microsserviços e uma estratégia sem servidor para alcançar esses objetivos. Para alterar a organização, a Centrica reuniu equipes representativas para criar um grupo de trabalho de modelo sem servidor, que iniciou a construção de um piloto. Depois dessa iniciativa bem-sucedida, outras equipes da organização também adotaram essa abordagem e o modelo sem servidor tornou-se comum em toda a organização. 9 RETRATO DO CLIENTE Com a arquitetura sem servidor, a empresa consegue detectar e responder a problemas de clientes em tempo real, algo que antes era impossível. Assista ao vídeo > GERENCIAMENTO DE DADOS Gerenciamento de dados: propósito específico e desacoplamento A mudança para arquiteturas de microsserviços tem um grande impacto na forma como as organizações armazenam e gerenciam dados. Se cada microsserviço interagir com um banco de dados monolítico, o banco de dados continuará sendo um ponto único de falha. É por isso que as aplicações modernas são criadas com datastores desacoplados, cada um deles fazendo parte de um único microsserviço. Isso pode parecer uma diferença radical em relação à arquitetura de aplicações tradicional. No entanto, quando reconhecemos que, à medida que cresce, uma aplicação monolítica impõe desafios de escalabilidade e tolerância a falhas, vemos que precisamos aplicar esses mesmos princípios a um banco de dados. Os bancos de dados evoluíram consideravelmente ao longo da última década. Aplicações tradicionais como ERP, CRM e comércio eletrônico usavam predominantemente bancos de dados relacionais porque a principal necessidade dessas aplicações era registrar transações e armazenar dados estruturados com volume de gigabytes e, ocasionalmente, terabytes. No entanto, as abordagens da criação de aplicações e os requisitos das próprias aplicações mudaram. As aplicações precisam trabalhar com terabytes e petabytes de dados, comportar milhões de clientes distribuídos globalmente e processar milhões de solicitações por segundo com latência muito baixa. Para absorver esses volumes, cada vez mais os desenvolvedores criam aplicações usando arquiteturas de microsserviços e escolhendo bancos de dados relacionais e não relacionais de propósito específico para atender a necessidades específicas das aplicações, como armazenar pares de chave- valor e documentos. 10 Lançada em 1996 no Japão, a Pokémon se tornou uma das mais populares marcas de entretenimento em todo o mundo. Após o lançamento do Pokémon GO em 2016, o número de usuários que tinham acesso ao sistema cresceu para mais de 300 milhões em dois anos. A empresa decidiu migrar para o Amazon Aurora, uma solução de dados totalmente gerenciada, para liberar tempo e recursos e dedicá-los a iniciativas estratégicas. Como resultado da migração para o Aurora, a The Pokémon Company obteve uma redução de custos mensal da ordem de dezenas de milhares. Além disso, a empresa aumentou consideravelmente a confiabilidade. Após experimentar 168 horas de indisponibilidade ou degradação de performance nos seis meses anteriores à migração, a solução não teve nenhum desses problemas depois da migração. Leia a história completa > “Com o Amazon Aurora, passamos de 300 para 30 nós e deixamos de pagar licenças de banco de dados. Nosso custo do banco de dados foi reduzido em dezenas de milhares de dólares a cada mês.” 11 RETRATO DO CLIENTE Jeff Webb, gerente de desenvolvimento, The Pokémon Company International. Utilização de contêineres e do AWS Lambda A migração de monólito para microsserviços afeta a forma como o código é empacotado e executado e altera a computação em aplicações modernas. As instâncias não são mais a única opção. Agora, as aplicações modernas usam contêineres ou o AWS Lambda, um serviço de computação sem servidor que é orientado por eventos. Grande parte dessa mudança surgiu da vontade dos desenvolvedores de gerenciar dependências dentro de cada serviço por meio de um pipeline. Por sua vez, isso resultou em novas maneiras de empacotar aplicações. A escolha entre instâncias, contêineres e o Lambda se resume ao equilíbrio entre flexibilidadee simplicidade que é adequado à empresa, o que definimos como integração uniforme com outros serviços e recursos. A priorização da simplicidade compromete a flexibilidade. Um dos problemas mais comuns que continuamos tentando resolver é como priorizar a simplicidade sem renunciar a toda a flexibilidade. Cada vez mais, notamos que clientes escolhem os contêineres e o Lambda para a computação. Os contêineres se tornaram o modo mais popular de empacotar código, o que faz deles uma ótima maneira de modernizar aplicações herdadas. Os contêineres oferecem excelente portabilidade e flexibilidade das configurações de aplicações. Além de permitir que você aproveite toda a agilidade oferecida pela nuvem, o Lambda é extremamente simples: o único código que você precisa escrever é a lógica de negócios. COMPUTAÇÃO EM APLICAÇÕES MODERNAS 12 RETRATO DO CLIENTE 13 A AbiBird é uma divisão subsidiária integral da ATF Services, um grupo australiano de empresas com 60 filiais na Austrália e Nova Zelândia e 350 funcionários e contratados. A empresa oferece um serviço de sensores infravermelhos residenciais que ajudam a monitorar as atividades de residentes idosos por meio de um aplicativo para smartphones. A AbiBird usava o Microsoft Azure quando percebeu que 62 tíquetes de suporte técnico haviam sido criados no provedor de nuvem para manter o serviço em execução. A empresa precisava de mais estabilidade e escalabilidade. A AbiBird optou por migrar para a AWS e agora usa uma combinação de serviços de computação para atender às suas necessidades. Ela utiliza o AWS Lambda no back-end pela facilidade de uso, escalabilidade e natureza gerenciada do serviço. A empresa também usa serviços de contêiner da AWS, hospedando uma API pública no Amazon ECS e utilizando o AWS Fargate para executar contêineres sem se preocupar com a administração da sua própria frota de máquinas virtuais. “Acreditamos que a nossa tecnologia, executada na AWS, permitirá que um número crescente de idosos viva de forma independente em suas casas, o local onde são mais felizes.” Robin Mysell, CEO, ATF Services e AbiBird Desde o lançamento desse sistema na AWS em 2019, a AbiBird não precisou abrir nenhum tíquete de suporte, o que permite a execução eficiente com o mínimo de sobrecarga de suporte. Leia a história completa > Integração contínua (CI): uma prática de desenvolvimento de software em que os desenvolvedores combinam regularmente alterações de código em um repositório central para permitir a execução de compilações e testes automáticos. Na maioria das vezes, a integração contínua é uma referência à etapa de compilação ou integração do processo de lançamento de software e abrange um componente de automação (por exemplo, um serviço de integração contínua ou compilação) e um componente cultural (por exemplo, aprender a integrar com frequência). Entrega contínua (CD): uma prática de desenvolvimento de software em que as alterações de código são preparadas automaticamente para o lançamento em produção. A entrega contínua expande a integração contínua implantando todas as alterações de código em um ambiente de teste e/ou de produção após a etapa de compilação. Saiba como a Amazon automatiza implantações seguras sem intervenção manual > Mais detalhes: Agilidade na atuação dos desenvolvedores: abstração, automação e padronização As arquiteturas de microsserviços tornam as equipes ágeis e aumentam sua velocidade de atuação. Isso significa que sua empresa cria mais recursos que precisa lançar, gastando o mesmo tempo. Isso é ótimo! No entanto, sua empresa não disponibilizará os recursos aos clientes em menos tempo se o processo de criação e lançamento não acompanhar o ritmo da equipe. Os pipelines tradicionais de processos de desenvolvimento e lançamento são retardados por processos manuais e código personalizado. Em última análise, o código personalizado é uma desvantagem, pois introduz a possibilidade de erros e manutenção no longo prazo. As etapas manuais (de alterações de código e solicitações de compilação até testes e implantação) são o principal fator que reduz a velocidade do lançamento. A solução envolve abstração, automação e padronização. Para acelerar o processo de desenvolvimento, abstraia a maior quantidade de código possível (particularmente as linhas de código que não compõem a lógica de negócios, que é necessária para desenvolver e entregar aplicações prontas para produção). Uma forma de fazer isso é usar estruturas de trabalho e ferramentas que reduzem a complexidade do provisionamento e da configuração de recursos. Isso aumenta a velocidade de atuação dos desenvolvedores, além de aplicar as melhores práticas de segurança, privacidade, confiabilidade, performance e capacidade de observação e expansão durante todo o processo de desenvolvimento. Com as estruturas de trabalho de desenvolvimento, você pode confiar que a arquitetura comportará o crescimento da empresa no longo prazo. AGILIDADE NA ATUAÇÃO DOS DESENVOLVEDORES 1414 Ao definir seu processo de entrega de software usando modelos de melhores práticas, você pode fornecer um padrão para modelar e provisionar todos os recursos de infraestrutura em um ambiente de nuvem. Esses modelos de “infraestrutura como código” ajudam as equipes a começar com o pé direito, pois o modelo provisiona toda a pilha de tecnologia para uma aplicação por meio de código, em vez de usar um processo manual. Com a automação, você pode criar um movimento repetível que acelera o ciclo de vida de entrega de software. A automação do pipeline de lançamento usando integração e entrega contínuas (CI/CD) ajuda as equipes a lançar código de alta qualidade em menos tempo e com mais frequência. As equipes que usam CI/ CD enviam mais código em menos tempo e aceleram a resposta a problemas. Na verdade, de acordo com o relatório Puppet state of DevOps, as equipes que empregam essas práticas têm uma taxa de falhas cinco vezes menor, uma velocidade da confirmação à implantação 440 vezes mais rápida e uma taxa de implantação 46 vezes mais frequente.2 E, o que é mais importante, as equipes que praticam CI/CD dedicam 44% mais tempo à criação de novos recursos e código, em vez de gerenciar processos e ferramentas. Os pipelines de CI/CD tornaram-se o novo processo de produção para criar aplicações modernas. Na Amazon, começamos a usar CI/CD para aumentar a velocidade de lançamento, e os resultados foram notáveis: alcançamos milhões de implantações em um ano e crescimento mais rápido a cada ano. Para ajudar as empresas a se beneficiarem de nossa experiência, criamos um pacote de ferramentas de desenvolvedor com base naquelas que usamos internamente para que nossos clientes possam entregar código em menos tempo. AGILIDADE NA ATUAÇÃO DOS DESENVOLVEDORES 15 2 https://puppet.com/resources/report/2017-state-devops-report/ Com a AWS, a lululemon athletica pode ativar ambientes de desenvolvimento em minutos em vez de dias, automatizá-los e habilitar a integração e a implantação contínuas. A empresa canadense vende vestuário inspirado pela ioga e outras roupas em mais de 350 locais em todo o mundo. A lululemon executa na Nuvem AWS os ambientes de teste e desenvolvimento, além de um aplicativo móvel a ser lançado em breve. A lululemon reduziu o tempo de criação de novas contas de produção de dois dias para alguns minutos usando os modelos do AWS CloudFormation e o AWS CodePipeline. Com essa maior agilidade, as equipes de desenvolvimento da lululemon agora podem experimentar e chegar às melhores soluções em vez de se limitar aos recursos disponíveis no momento . Leia a história completa > RETRATO DO CLIENTE A HyperTrack é uma plataforma de nuvem via autoatendimento para rastreamento de localizações ao vivo por meio de aplicativos. Lançada no final de 2015, a HyperTrack precisava criar uma plataforma que pudesse escalar automaticamente de acordo com o crescimento esperado e, ao mesmotempo, acelerar a criação de recursos pelos desenvolvedores. Para obter uma estrutura de trabalho de desenvolvimento para dispositivos móveis e uma arquitetura sem servidor, a HyperTrack optou pelo AWS Amplify, que permite aumentar e reduzir automaticamente a escala, sem a intervenção da área de engenharia. Como resultado, a empresa reduziu em 30% os custos em relação à arquitetura usada antes da migração para o modelo sem servidor. Uma boa parte da economia resulta de os recursos operacionais não precisarem mais se dedicar ao gerenciamento de servidores. A HyperTrack economiza semanalmente 40 horas de trabalho no gerenciamento de milhões de eventos.ill Leia a história completa > 16 “Qualquer pipeline de integração e implantação contínuas deve ser automatizado, fácil de gerenciar e detectável. É exatamente isso que recebemos da AWS. Obtemos um nível de simplicidade e transparência que simplesmente não poderíamos ter em nosso ambiente on-premises anterior.” Sam Keen, diretor de arquitetura de produtos, lululemon Um modelo operacional sem servidor é ideal para empresas de alto crescimento que querem acelerar a inovação. A arquitetura sem servidor permite que as equipes avancem ainda mais rapidamente e mantenham um foco preciso nas atividades que diferenciam a empresa, para que esta possa acelerar o flywheel da inovação. Como definimos o modelo sem servidor na AWS? Para nós, falar sobre modelos sem servidor é referir-se à remoção do trabalho genérico repetitivo de operações de servidor. Essa é uma distinção importante, pois permite que você se concentre na criação da aplicação e não no gerenciamento e na escalabilidade da infraestrutura que apoiam a aplicação. Os quatro princípios de um modelo operacional sem servidor são estes: 1. Sem gerenciamento de servidores: não há necessidade de provisionamento e manutenção de nenhum servidor. Não é preciso instalar, manter ou administrar nenhum software ou tempo de execução. 2. Escalabilidade flexível: a aplicação pode ser escalada automaticamente ou por meio do ajuste de sua capacidade com a alternância das unidades de consumo (por exemplo, taxa de transferência, memória) em vez de unidades de servidores individuais. 3. Pague pelo valor: em vez de pagar por unidades de servidor, pague pelo que tem valor para você, como taxa de transferência consistente ou duração da execução. 4. Alta disponibilidade automatizada: o modelo sem servidor incorpora disponibilidade e tolerância a falhas. Você não precisa definir uma arquitetura para esses recursos, pois ela é fornecida por padrão pelos serviços que executam a aplicação. Modelo operacional: arquitetura sem servidor o tanto quanto possível Com a evolução dos processos de entrega de software e dos padrões de arquitetura, é provável que você queira adotar um modelo operacional que permita transferir todas as atividades que não integrem uma competência essencial da empresa. Para ganhar a agilidade que permite inovar com rapidez, recomendamos criar uma arquitetura de microsserviços, bem como operar e implantar software usando automação para atividades como monitoramento, provisionamento, gerenciamento de custos, implantação, segurança e governança de aplicações. A escolha de uma estratégia de priorização de modelos em servidor (optar por tecnologias sem servidor sempre que possível) permite maximizar os benefícios operacionais da AWS. Um modelo operacional sem servidor permite que você crie e execute aplicações e serviços sem provisionar e gerenciar servidores. Isso elimina o gerenciamento de servidores, oferece escalabilidade flexível, permite pagar apenas pelo valor e automatiza a alta disponibilidade. Esse modelo permite que você crie e gerencie os aspectos de uma aplicação que agregam valor para o cliente, sem precisar se preocupar com os detalhes subjacentes. O uso dos componentes básicos do modelo sem servidor para recursos de computação, dados e integração permitirá que você se beneficie ao máximo da agilidade oferecida pela nuvem para criar aplicações totalmente novas ou migrar aplicações herdadas. MODELO OPERACIONAL SEM SERVIDOR 17 A iRobot usa tecnologia para ajudar o cliente a transferir muitas tarefas que as pessoas não querem fazer, como cuidar do gramado e do piso. A empresa aplica o mesmo conceito às próprias práticas de desenvolvimento, transferindo o gerenciamento operacional para a AWS a fim de permitir que os desenvolvedores se mantenham o foco na criação de tecnologia para a empresa. Em 2015, a iRobot lançou o primeiro Roomba conectado e percebeu que não conseguiria escalar para atender às demandas dos clientes. Com a adoção de uma arquitetura sem servidor na AWS, a iRobot agora oferece aspiradores de pó e esfregões robóticos e conectados à Internet em escala global. Os picos de demanda, como o aumento 18 RETRATO DO CLIENTE de 20 vezes no tráfego durante o Natal, deixaram de ser um problema. A infraestrutura escala automaticamente para atender às necessidades. Assista ao vídeo > GERENCIAMENTO E GOVERNANÇA O gerenciamento seguro, lícito e protegido da organização é a prioridade de praticamente todas as empresas. No entanto, uma governança sólida costuma criar pontos de verificação que retardam a inovação. De um ponto de vista filosófico, as organizações têm duas opções em relação às operações. Elas podem agir com lentidão e segurança ou podem não impor limites e agir rapidamente, introduzindo riscos sérios para as aplicações e a empresa, em contrapartida. O ideal seria ter o melhor dos dois extremos. É por isso que as empresas, cada vez mais, adotam o conceito de proteções. As proteções permitem que as equipes operem com rapidez, sem expor a empresa a riscos. As proteções são mecanismos, como processos ou práticas, que reduzem a ocorrência e o impacto de comportamentos indesejados das aplicações. Normalmente expressas como código, as proteções são estabelecidas e padronizadas por uma equipe central, e são entregues e atualizadas para as equipes de criadores por meios automatizados e programáticos. É nesse ponto que são essenciais os operadores, ou as pessoas designadas para estabelecer, gerenciar e manter as diversas partes flexíveis das arquiteturas distribuídas. Normalmente percebemos os operadores trabalhando em algumas áreas diferentes. No mundo das aplicações modernas, os operadores definem as proteções para o monitoramento, provisionamento, implantação, gerenciamento de custos, segurança e governança de aplicações. Além de estabelecer limites, regras e melhores práticas para cada uma dessas áreas, os operadores também criam soluções automatizadas, bem como empacotam e implantam essas proteções em toda a organização. Gerenciamento e governança: como usar proteções programáticas 19 Monitoramento • Utilização de CPU • Taxa de transferência do banco de dados • Processos de negócios Provisionamento • Permissões de acesso • Disponibilidade de recursos • Configuração Gerenciamento de custos • Custos de recursos • Utilização de recursos • Taxa anualizada de despesas Segurança e conformidade • Utilização de CPU • Taxa de transferência do banco de dados • Processos de negócios 19 Implantação • Janela de tempo • Conjuntos de ferramentas disponíveis • Tamanho ou período dos lançamentos de teste Liberdade total Proteções Controle central Rapidez de desenvolvimento, mas riscos jurídicos e de confiabilidade da aplicação Caos Rapidez e baixo risco para a empresa Todos têm a ganhar Baixo risco, mas muita lentidão para lançar Dependências e atrasos Filosofias de governança Usos comuns das proteções O DevOps é a combinação de filosofias culturais, práticas e ferramentas que aumentam a capacidade de uma organização entregar aplicações e serviços rapidamente, otimizando e aperfeiçoando produtos em um ritmo mais veloz em comparação com as organizações que usam processos tradicionais de desenvolvimento de software e gerenciamento de infraestrutura.DevSecOps é a filosofia de integrar práticas de segurança ao processo de DevOps. O DevSecOps envolve criar uma cultura de “segurança como código” valendo-se de colaboração contínua e flexível entre engenheiros de lançamento e equipes de segurança. Mais detalhes: O conceito de proteções também é essencial para a segurança das aplicações. Não chega a surpreender que o relatório 2017 State of DevOps da Puppet declare que as proteções (ou a integração profunda da segurança no ciclo de vida de entrega de software) tornam as equipes duas vezes mais confiantes em sua conduta de segurança. O relatório também sugere que, das empresas com o mais alto nível de integração de segurança, a proporção das que conseguem implantar em produção sob demanda (61%) é muito mais alta que a das empresas em outros níveis de integração. 20 GERENCIAMENTO E GOVERNANÇA Sediada em São Francisco, a Coinbase é uma empresa que oferece uma plataforma e carteira de moedas digitais. Para proteger os clientes contra ataques, os engenheiros da Coinbase devem ser capazes de implantar atualizações e novos recursos em todos os sistemas da empresa com rapidez e confiabilidade. Algumas implantações de software demoram 20 horas ou mais. A adoção de uma arquitetura sem servidor baseada no AWS Lambda e no Step Functions permite que a empresa aumente a taxa de implantações de missão crítica bem-sucedidas de 90% para 97%. A nova abordagem reduz substancialmente a complexidade da arquitetura da Coinbase. Por sua vez, a menor complexidade aumenta o campo de visão da equipe para monitorar e resolver problemas, reduzindo o número de tíquetes de problemas referentes a falhas de implantação. Além disso, o processo de auditoria é simplificado com a disponibilidade de uma única trilha de auditoria para todas as implantações. Leia a história completa > RETRATO DO CLIENTE 21 “Com mecanismos de implantação baseados no AWS Step Functions e no AWS Lambda, nossos engenheiros podem implantar código em produção com segurança. O resultado é que podemos lançar novos recursos com mais frequência, acelerar a resposta a ameaças de segurança e alcançar mais facilmente nossos SLAs. Tudo isso contribui para uma experiência do cliente ainda mais aprimorada e segura.” Graham Jenson, engenheiro de infraestrutura sênior, Coinbase Qualquer ponto de partida. Qualquer aplicação. Qualquer inovação. A AWS é como o desenvolvimento de aplicações modernas acontece. RESUMO DE FECHAMENTO Crie aplicações modernas hoje mesmo As aplicações modernas criam diferenciais competitivos ao gerar condições para a inovação rápida. A alteração de padrão de arquitetura, modelo operacional e processo de entrega de software permite que você desloque recursos das operações padrão para atividades de diferenciação. Você pode experimentar mais e acelerar a transformação de ideias em lançamentos. Você também pode promover um ambiente em que os criadores passem mais tempo criando. As aplicações modernas são usadas por organizações como a Amazon para inovar com velocidade e agilidade. As aplicações modernas na AWS podem colaborar em muitos aspectos: Reduzir o tempo de introdução no mercado Aumentar a inovação Aprimorar a confiabilidade Reduzir os custos 22 © 2020, Amazon Web Services, Inc. ou suas afiliadas. Todos os direitos reservados. 22 Milhões de clientes no mundo inteiro confiam na AWS, incluindo as startups que crescem mais rápido, as maiores empresas e os principais órgãos governamentais, para desenvolver a infraestrutura, aumentar a agilidade e reduzir os custos. A AWS oferece um amplo portfólio de serviços para apoiar sua empresa no desenvolvimento de aplicações modernas. Desenvolvimento de aplicações modernas na AWS Serviços da AWS para o desenvolvimento de aplicações modernas RESUMO DE FECHAMENTO FERRAMENTAS DE DESENVOLVEDOR INTEGRAÇÃO COMPUTAÇÃO DATASTORES Computação orientada por eventos sem servidor AWS Lambda Saiba mais sobre como implantar as melhores práticas de desenvolvimento de aplicações modernas g 23 Armazenamento de objetos Amazon S3 API GraphQL AWS AppSync Desenvolvimento para dispositivos móveis/front-end AWS Amplify Filas de mensagens Amazon SQS Gerenciamento de código-fonte AWS CodeCommit Repositório de artefatos AWS CodeArtifact Notificações pub/sub e por push Amazon SNS Automação de pipelines AWS CodePipeline Orquestração de contêineres de Kubernetes Amazon EKS Orquestração de contêineres Amazon ECS Fluxos de trabalho visuais AWS Step Functions Infraestrutura como código: TypeScript, Java, Python, C# AWS Cloud Dev. Kit (CDK) API REST Amazon API Gateway Banco de dados de documentos Amazon DocumentDB Automação de criação e testes AWS CodeBuild Malha de serviços AWS App Mesh Banco de dados em memória Amazon ElastiCache Implantação AWS CodeDeploy Streaming de dados Amazon Kinesis Infraestrutura como código: YAML/JSON AWS CloudFormation Barramento de eventos Amazon EventBridge Banco de dados de chave-valor Amazon DynamoDB Sistema de arquivos Amazon EFS Banco de dados relacional Amazon Aurora Contêineres sem servidor AWS Fargate
Compartilhar