Select your cookie preferences

We use essential cookies and similar tools that are necessary to provide our site and services. We use performance cookies to collect anonymous statistics, so we can understand how customers use our site and make improvements. Essential cookies cannot be deactivated, but you can choose “Customize” or “Decline” to decline performance cookies.

If you agree, AWS and approved third parties will also use cookies to provide useful site features, remember your preferences, and display relevant content, including relevant advertising. To accept or decline all non-essential cookies, choose “Accept” or “Decline.” To make more detailed choices, choose “Customize.”

Pular para o conteúdo principalAWS Startups

Série Evolutionary architectures, parte 3

Como estava esse conteúdo?

“Para a lua 🚀”

“Evolutionary Architectures” é uma série do blog em quatro partes que mostra como os projetos e as decisões das soluções evoluem à medida que as empresas passam pelos diferentes estágios do ciclo de vida das startups. Nessa série, seguimos a apropriadamente denominada “Example Startup”, cuja ideia é criar uma aplicação para o “mercado de ações fantasia”, semelhante às ligas de esportes fantasia. Eles preveem realizar quatro “torneios” durante um ano.

O segundo blog descreveu como a startup começou a desenvolver suas soluções técnicas enquanto os fundadores se preparavam para a arrecadação de fundos. Na parte 3, veremos como a Example Startup progride ainda mais no amadurecimento de sua tecnologia e no bom posicionamento de sua escala.

Dimensionamento eficiente por meio da transição para uma arquitetura de microsserviços

A equipe de negociação de ações de fantasia está crescendo e novos componentes e soluções estão sendo construídos. À medida que o portfólio técnico se expande, certas rachaduras começam a aparecer e exigiram a atenção da equipe.

“Os velhos hábitos são difíceis de morrer”, e a equipe começa a ver como isso pode causar problemas para o crescimento de sua startup: os prazos agressivos e o entusiasmo de fazer mais com menos estão levando ao aumento do déficit técnico. Um aspecto desse déficit técnico é a proliferação gradual de monólitos, em oposição à arquitetura de microsserviços que a equipe havia escolhido inicialmente. As preocupações com o monólito, como escalabilidade e gargalos de performance, começam a aparecer durante os testes e a introdução de novos recursos. Felizmente, a equipe reconhece rapidamente os desafios que essa abordagem monolítica representa para a escalabilidade ideal das workloads. Ela decide dar um passo atrás e reavaliar suas práticas de desenvolvimento. Um dos desenvolvedores lembra que o arquiteto de soluções (SA) da AWS previu alguns desses problemas em uma conversa anterior. A equipe da Example Startup agenda uma ligação com a AWS para obter ajuda.

A decomposição de monólitos e a transição para um paradigma baseado em microsserviços é um tópico amplo, então a AWS SA recomenda um Dia de Imersão na Modernização de Aplicações para a equipe da Example Startup. O dia de imersão usa um workshop relacionado como pano de fundo, com foco em workloads relevantes para startups. O evento conta com a participação de quase todos os desenvolvedores da empresa e acaba sendo um divisor de águas. Ao longo de um único dia, a equipe pode aprender a definir, projetar e implementar microsserviços adequadamente. Ela também aprende a traçar um caminho de migração gradual de uma aplicação monolítica para um conjunto de microsserviços sem precisar refazer tudo de uma vez. A equipe fica feliz em detectar seus erros logo no início e aprender algumas das práticas recomendadas que a ajudará a seguir em frente. O arquiteto de soluções também compartilha um whitepaper da AWS focado em estratégias de modernização que podem preencher qualquer lacuna de conhecimento na equipe da Example Startup.

A experiência com a modernização de aplicações agrega tanto valor à Example Startup que a equipe decide aplicar a mesma abordagem de aproveitar as práticas recomendadas existentes para diferentes áreas funcionais no futuro. Os engenheiros e o gerente de produto agendam uma ligação para compartilhar seu roteiro para o restante do ano com a AWS, em um esforço para evitar trabalhos duplicados. A Example Startup já assinou um acordo de confidencialidade mútua (MNDA) com a AWS e houve um fluxo livre e produtivo de ideias de ambos os lados durante essa conversa, além de uma ótima notícia: acontece que um recurso que a Example Startup estava pensando em criar sozinha já está no roteiro da AWS para o próximo trimestre, e isso libera uma parte do tempo de engenharia para a equipe.

O próximo tópico da lista de áreas a serem aprimoradas da Example Startup está relacionado à infraestrutura como código (IaC), integração e entrega contínuas (CI/CD) e testes automatizados. Dois funcionários recém-contratados de operações de desenvolvedores (DevOps) não estão satisfeitos com muitos dos mecanismos operacionais atuais da startup, especialmente coisas como criar e testar ambientes, bem como gerenciar artefatos de código. Uma equipe em crescimento na Example Startup significa que mais pessoas têm acesso a esses processos confidenciais, introduzindo riscos desnecessários. Os dois novos membros da equipe já têm alguma experiência com o Terraform como abordagem à IaC. Eles estão felizes em saber que a AWS é bem recebida pelo Terraform e em descobrir outras ferramentas, como o AWS CloudFormation e o AWS CDK, caso seja necessária uma alternativa. No entanto, eles ainda precisam de ajuda com a configuração de CI/CD. Até agora, suas tentativas carecem de coesão e é difícil fazer com que sua ferramenta de construção funcione bem a de implantação. Além disso, eles ainda estão procurando uma abordagem adequada para gerenciar imagens de contêiner. A equipe da AWS recomenda avaliar o AWS CodePipeline porque ele atende às necessidades de integrar perfeitamente uma ferramenta de criação e de implantação e também inclui testes automatizados, todos combinados com suporte para vários ambientes. O uso do CodePipeline permite a integração com soluções que não foram necessariamente criadas de forma nativa na AWS, bem como suporte robusto para outras ferramentas, como AWS CodeBuild, AWS CodeDeploy e ferramentas de terceiros. A implementação do CodePipeline permite que a Example Startup risque outro grande item de sua lista.

Com a equipe no caminho certo para uma implementação adequada de microsserviços, eles se sentem capacitados para trabalhar em alguns dos outros desafios complexos que permanecem pendentes. Por um lado, a presença de vários serviços operando de forma independente naturalmente levanta a questão da comunicação entre esses serviços. Há uma grande dúvida sobre se cada chamada entre serviços deve ser síncrona ou assíncrona na comunicação, além de como a equipe pode começar a adotar padrões de práticas recomendadas, como mensagens de publicação/assinatura (PubSub). A equipe entende amplamente que a adoção de uma arquitetura orientada por eventos seria benéfica, especialmente com a eliminação dos monólitos, mas está um pouco sobrecarregada com a infinita variedade de serviços da AWS relacionados a essa arquitetura, incluindo, entre outros, Amazon EventBridge, Amazon Simple Queue Service (Amazon SQS), Amazon Simple Notification Service (Amazon SNS) e Amazon Managed Streaming for Apache Kafka (Amazon MSK). Desta vez, a equipe é capaz de encontrar alguns recursos como um ótimo ponto de partida, como alguns workshops e blogs muito úteis sobre o assunto. O paradigma “orientado por eventos” está lentamente se tornando outra ferramenta na caixa de ferramentas da equipe.

Desenvolvendo uma estratégia de segurança mais forte

A segurança continua sendo a prioridade de nossa startup e ferramentas como o AWS Startup Security Baseline (AWS SSB) os ajudam a começar. Infelizmente, você nunca pode ter muita segurança. A implementação inicial do AWS WAF foi um bom começo, mas a equipe precisa começar a pensar de forma mais proativa sobre prevenção, detecção e remediação. Eles começam a se aprimorar nos diversos serviços da AWS focados em segurança que podem ajudá-los a implementar uma estratégia de segurança sólida.

A equipe em crescimento e o envolvimento dos parceiros fazem do controle de acesso, as permissões e a governança outros tópicos que exigem um foco cada vez maior. A equipe está tentando implementar as práticas recomendadas, como o princípio do privilégio mínimo ao aplicar permissões. No mínimo, ela quer transferir as workloads de produção para suas próprias contas separadas. À medida que a equipe adota essas práticas recomendadas, ela vê o aumento da complexidade operacional devido às camadas adicionais de gerenciamento e permissões com as quais precisa lidar agora. Torna-se rapidamente óbvio que ela precisa de uma abordagem mecanizada para a estrutura da conta. Alguém menciona o AWS Organizations, o que parece ser um passo na direção certa, então ela entra em contato com seu SA confiável da AWS para um bate-papo. O SA compartilha alguns conselhos relevantes, como considerar o AWS Control Tower como uma abordagem mais fácil para gerenciar várias contas e o AWS Organizations. Como essa é a primeira de muitas etapas para alcançar uma estratégia robusta de várias contas, o SA da AWS também compartilhou com a equipe a orientação prescritiva “Fazer a transição para várias contas da AWS”. Este guia inclui as práticas recomendadas sobre migração de contas, gerenciamento de usuários, rede, segurança e arquitetura ao migrar para uma configuração de várias contas.

Otimização de workloads para performance

A equipe está abordando algumas peças fundamentais para que a startup esteja bem posicionada para crescer no ritmo certo. Alguns itens principais são riscados da lista e outros têm planos de ação em vigor. Os desenvolvedores estão fazendo o máximo que podem para otimizar suas workloads em termos de performance, mas identificaram algumas oportunidades de melhorias adicionais que vão além do código, como armazenamento em cache de borda com o Amazon CloudFront, armazenamento em cache em nível de aplicação com o Amazon ElastiCache e armazenamento em cache de banco de dados. A equipe está cada vez mais confiante nos serviços gerenciados pela AWS para oferecer a funcionalidade de que precisam e, ao mesmo tempo, manter a complexidade operacional associada no mínimo. Outro serviço gerenciado que alguns desenvolvedores descobrem e acham surpreendentemente fácil de usar é o AWS Batch. A abordagem inicial de processamento de feeds com o AWS Lambda está começando a atingir seus limites devido ao aumento exponencial no volume de dados que precisam ser processados. Após algumas experiências, os desenvolvedores conseguem traçar um caminho para usar o AWS Batch que permite continuar crescendo com relativamente pouco aumento na carga operacional e ainda manter os custos baixos.

Provar a proposta de valor de sua startup

Todo esse bom trabalho na Example Startup não passa despercebido. Construir de forma ágil e sustentável, sem depender de soluções alternativas de curto prazo, mostra que a empresa está pensando no longo prazo, demonstra maturidade e tem a capacidade de entregar. Essas características, juntamente com uma solução inovadora e uma boa adequação ao mercado de produtos, estão no centro da proposta de valor da empresa. Os fundadores transmitem com sucesso o valor de sua empresa a duas empresas de capital de risco diferentes e fecham sua primeira rodada de financiamento da Série A. A Example Startup está a caminho da lua.

Confira o primeiro blog e o segundo blog da série Evolutionary Architectures.

Aayzed Tanweer

Aayzed Tanweer

Aayzed é Arquiteta de Soluções na AWS, trabalha com clientes de startups na área de FinTech, com foco especial em serviços de análise. Sendo originalmente de Toronto, ele se mudou recentemente para a cidade de Nova York, onde gosta de explorar lugares para comer em toda a cidade e seus muitos cantos e recantos peculiares.

Justin Plock

Justin Plock

Justin é Principal Arquiteto de Soluções na AWS, com foco em startups de fintech. Ele se reúne regularmente com fundadores de fintech para ajudar a garantir que seus negócios estejam seguros e em conformidade com as regulamentações do setor. Antes da AWS, ele foi Diretor de Capacitação em Nuvem de uma seguradora da Fortune 200 e Diretor de Engenharia em uma empresa de segurança cibernética. Ele é apaixonado por ajudar startups a se desenvolverem com segurança e eficiência na AWS. Ele mora em Connecticut com a esposa e duas filhas.

Zoran Nakev

Zoran Nakev

Zoran é Arquiteto de Soluções Sênior na AWS, trabalhando principalmente com startups da FinTech e ajudando-as a criar soluções na plataforma da AWS. Ele usa sua experiência e paixão pela tecnologia para ajudar as startups a atingir seus objetivos. Ele mora em Nova Jersey com sua família e gosta de passar seu tempo livre assistindo filmes, ouvindo música e fazendo longas caminhadas com o cachorro da família.

Como estava esse conteúdo?