Microsserviços são uma abordagem arquitetônica e organizacional do desenvolvimento de software na qual o software consiste em pequenos serviços independentes que se comunicam usando APIs bem definidas. Esses serviços pertencem a pequenas equipes autossuficientes.
As arquiteturas de microsserviços facilitam a escalabilidade e agilizam o desenvolvimento de aplicativos, habilitando a inovação e acelerando o tempo de introdução de novos recursos no mercado.
Com as arquiteturas monolíticas, todos os processos são altamente acoplados e executam como um único serviço. Isso significa que se um processo do aplicativo apresentar um pico de demanda, toda a arquitetura deverá ser escalada. A complexidade da adição ou do aprimoramento de recursos de aplicativos monolíticos aumenta com o crescimento da base de código. Essa complexidade limita a experimentação e dificulta a implementação de novas ideias. As arquiteturas monolíticas aumentam o risco de disponibilidade de aplicativos, pois muitos processos dependentes e altamente acoplados aumentam o impacto da falha de um único processo.
Com uma arquitetura de microsserviços, um aplicativo é criado como componentes independentes que executam cada processo do aplicativo como um serviço. Esses serviços se comunicam por meio de uma interface bem definida usando APIs leves. Os serviços são criados para recursos empresariais e cada serviço realiza uma única função. Como são executados de forma independente, cada serviço pode ser atualizado, implantado e escalado para atender a demanda de funções específicas de um aplicativo.
Divisão de um aplicativo monolítico em microsserviços
Cada serviço do componente de uma arquitetura de microsserviços pode ser desenvolvido, implantado, operado e escalado sem afetar o funcionamento de outros serviços. Os serviços não precisam compartilhar nenhum código ou implementação com os outros serviços. Todas as comunicações entre componentes individuais ocorrem por meio de APIs bem definidas.
Cada serviço é projetado para ter um conjunto de recursos e é dedicado à solução de um problema específico. Se os desenvolvedores acrescentarem mais código a um serviço ao longo do tempo, aumentando sua complexidade, ele poderá ser dividido em serviços menores.
Os microsserviços promovem uma organização de equipes pequenas e independentes que são proprietárias de seus serviços. As equipes atuam dentro de um contexto pequeno e claramente compreendido e têm autonomia para trabalhar de forma mais independente e rápida. O resultado é a aceleração dos ciclos de desenvolvimento. Você obtém benefícios significativos do throughput agregado da organização.
Os microsserviços permitem que cada serviço seja escalado de forma independente para atender à demanda do recurso de aplicativo oferecido por esse serviço. Isso permite que as equipes dimensionem corretamente as necessidades de infraestrutura, meçam com precisão o custo de um recurso e mantenham a disponibilidade quando um serviço experimenta um pico de demanda.
Os microsserviços permitem a integração e a entrega contínuas, o que facilita o teste de novas ideias e sua reversão caso algo não funcione corretamente. O baixo custo de falha permite a experimentação, facilita a atualização do código e acelera o tempo de introdução de novos recursos no mercado.
As arquiteturas de microsserviços não seguem uma abordagem generalista. As equipes são livres para escolher a melhor ferramenta para resolver problemas específicos. O resultado é que as equipes que criam microsserviços podem optar pela melhor ferramenta para cada tarefa.
A divisão do software em módulos pequenos e bem definidos permite que as equipes usem funções para várias finalidades. Um serviço criado para uma determinada função pode ser usado como componente básico para outro recurso. Isso permite que os aplicativos sejam reutilizados, pois os desenvolvedores podem criar recursos sem precisar escrever código.
A independência do serviço aumenta a resistência a falhas do aplicativo. Em uma arquitetura monolítica, a falha de um único componente poderá causar a falha de todo o aplicativo. Com os microsserviços, os aplicativos lidam com a falha total do serviço degradando a funcionalidade, sem interromper todo o aplicativo.
A AWS integrou componentes básicos que oferecem suporte a qualquer arquitetura de aplicativos, independentemente de escala, carga ou complexidade.
Capacidade de processamento para microsserviços.
Amazon Elastic Container Service
Um serviço de gerenciamento de contêineres com altos níveis de escalabilidade e performance que oferece suporte a contêineres do Docker, além de permitir que você execute facilmente aplicativos em um cluster gerenciado de instâncias do Amazon EC2.
Saiba mais »
Agora, usando o Amazon ECS, o Coursera pode implantar alterações de software em minutos, em vez de horas, em um ambiente isolado de recursos.
Saiba mais »
AWS Lambda
O AWS Lambda permite que você execute código sem provisionar ou gerenciar servidores. Basta fazer upload do código e o Lambda gerencia tudo o que é necessário para executar e alterar a escala do código com alta disponibilidade.
Saiba mais »
A Localytics usou o AWS Lambda para construir microsserviços que permitiram às equipes de desenvolvimento criar análises personalizadas sem o suporte central. Saiba mais »
Armazenamento físico de dados escalável, resiliente e seguro.
Amazon ElastiCache
O Amazon ElastiCache aprimora a performance de serviços, permitindo que você recupere informações de caches de memória rápidos e gerenciáveis, em vez de depender inteiramente de bancos de dados baseados em disco, que são mais lentos. Saiba mais »
Amazon S3
O Amazon S3 disponibiliza a desenvolvedores e equipes de TI um armazenamento de objetos altamente confiável, seguro e escalável para todos os dados, qualquer que seja o volume. Saiba mais »
Amazon DynamoDB
Um serviço de banco de dados NoSQL rápido e flexível para todos os aplicativos que precisam de latência consistente abaixo de 10 milissegundos, em qualquer escala. Saiba mais »
Amazon RDS
Configure, opere e escale facilmente um banco de dados relacional na nuvem. Escolha entre seis mecanismos populares de banco de dados, incluindo Oracle, Microsoft SQL Server, PostgreSQL, MySQL e MariaDB. Saiba mais »
Amazon Aurora
Um mecanismo de banco de dados relacional que combina a velocidade e a confiabilidade de bancos de dados comerciais avançados com a simplicidade e a economia de bancos de dados de código aberto. Entregue até cinco vezes o throughput do MySQL padrão executando no mesmo hardware. Saiba mais »
A Remind reduziu os tempos de resposta de aplicativos em 200% criando uma PaaS para microsserviços na Amazon ECS.
Saiba mais »
Serviços de redes com alto throughput e latência inferior a um milissegundo.
AWS Cloud Map
O AWS Cloud Map é uma descoberta de serviços para todos os recursos de nuvem. Com o Cloud Map, você pode definir nomes personalizados para os recursos do aplicativo, e ele manterá a localização atualizada desses recursos em constante mudança.
AWS App Mesh
O AWS App Mesh facilita o monitoramento e o controle de microsserviços executados na AWS. O App Mesh padroniza a forma de comunicação dos microsserviços, oferecendo visibilidade completa e ajudando a garantir alta disponibilidade para os aplicativos.
Application Load Balancer
O Application Load Balancer executa balanceamento de carga de tráfego HTTP e HTTPS na camada de aplicativos (camada 7) e oferece roteamento avançado de solicitações para a entrega de arquiteturas modernas de aplicativos, incluindo microsserviços e contêineres.
Network Load Balancer
O Network Load Balancer oferece balanceamento de carga de alta performance que opera na camada de conexão de rede (camada 4) e permite rotear conexões para microsserviços com base em dados do protocolo IP. O Network Load Balancer pode tratar milhões se solicitações por segundo mantendo latências ultrabaixas.
Amazon API Gateway
O Amazon API Gateway oferece uma plataforma abrangente para gerenciamento de APIs. O Amazon API Gateway permite processar centenas de milhares de chamadas de API simultâneas e se encarrega das atividades de gerenciamento de tráfego, autorização e controle de acesso, monitoramento e gerenciamento de versões de APIs.
Amazon Route 53
O Amazon Route 53 é um web service altamente disponível e escalável de Domain Name System (DNS) na nuvem que conecta eficazmente as solicitações à infraestrutura executada na AWS. O serviço pode ser usado para verificações de integridade de IP e descoberta de serviços para microsserviços.
Após reprojetar seu aplicativo como microsserviços executados na AWS, a Airtime disponibiliza sua experiência social para os clientes de modo mais rápido, confiável e sem atrasos. Saiba mais »
Publique e coordene comunicações entre processos.
Amazon Simple Notification Service (Amazon SNS)
O Amazon SNS é um serviço gerenciado de sistemas de mensagens do tipo publicação/assinatura (pub/sub) que facilita o desacoplamento e a escalabilidade de microsserviços, sistemas distribuídos e aplicativos sem servidor.
Saiba mais »
Amazon Simple Queue Service (Amazon SQS)
O Amazon SQS é um serviço gerenciado de enfileiramento de mensagens que facilita o desacoplamento e a escalabilidade de microsserviços, sistemas distribuídos e aplicativos sem servidor.
Saiba mais »
A Lyft usa a AWS para ter maior agilidade empresarial e gerenciar seu crescimento exponencial. Com os produtos da AWS, a empresa oferece suporte a mais de 100 microsserviços que aprimoram cada elemento da experiência dos clientes. Saiba mais »
Monitore a performance e a utilização de recursos dos serviços. Rastreie em arquiteturas complexas para resolução de problemas e otimização.
AWS CloudTrail
Com o CloudTrail, é possível registrar em log, monitorar continuamente e reter a atividade da conta relacionada às ações executadas na infraestrutura. O histórico de eventos do CloudTrail simplifica a análise de segurança, o rastreamento de alterações de recursos e a solução de problemas. Saiba mais »
Amazon CloudWatch
Você pode usar o Amazon CloudWatch para coletar e rastrear métricas, coletar e monitorar arquivos de log, definir alarmes e reagir automaticamente a alterações nos serviços e recursos da AWS executados.
Saiba mais »
AWS X-Ray
Obtenha uma visualização completa sobre as solicitações, conforme elas percorrem o aplicativo, além de um mapa dos componentes subjacentes do aplicativo. À medida que um conjunto de microsserviços trabalha para processar uma solicitação, o AWS X-Ray pode fornecer uma visualização centralizada dos logs, o que permite monitorar e resolver problemas de interações complexas. Saiba mais »
Usando microsserviços hospedados no Amazon ECS, a Shippable conseguiu se dedicar à entrega de recursos aos clientes e acelerou o a implantação desses recursos de uma vez por semana para vários por dia. Saiba mais »
Gerencie o ciclo de vida do código, da confirmação à execução.
Amazon Elastic Container Registry (Amazon ECR)
Um registro gerenciado de contêineres do Docker que facilita o armazenamento, o gerenciamento e a implantação de imagens de contêineres do Docker. O Amazon ECR é integrado ao Amazon Elastic Container Service (Amazon ECS), o que simplifica o fluxo de trabalho de contêineres, do desenvolvimento até a produção. Saiba mais »
Ferramentas do desenvolvedor da AWS
As ferramentas do desenvolvedor da AWS são um conjunto de serviços que permite que desenvolvedores e profissionais de operações de TI que trabalham com DevOps possam entregar software com rapidez e segurança. Juntos, esses serviços ajudam a armazenar e controlar com segurança versões de código-fonte de aplicativos, além de criar, testar e implantar automaticamente aplicativos no ambiente local ou na AWS. Saiba mais »
A Gilt mudou de um datacenter local para a AWS para aproveitar a velocidade e a eficiência de uma infraestrutura de microsserviços baseados na nuvem.
Saiba mais »
Comece a criar microsserviços ainda hoje com estes recursos.
Microservices without the Servers
Deploying Java Microservices on Amazon Elastic Container Service
Building Scalable Applications and Microservices
Run Containerized Microservices with Amazon ECS and ALB
Using Amazon API Gateway with microservices deployed on Amazon ECS
Service Discovery: An Amazon ECS Reference Architecture