Escalando Aplicações SaaS usando Arquitetura com Zero Compartilhamento
O Desafio
A OpsFactor enfrentava diversos obstáculos relacionados à gestão de seu sistema oferecido como Software como Serviço (SaaS), o qual adota a característica de "shared nothing" (nenhum compartilhamento). Nesse modelo, cada cliente possui um ambiente separado para a segregação de redes e dados, permitindo a definição de ranges de IPs personalizados e possibilitando uma integração segura por meio de VPN site-to-site .
Na arquitetura anterior, o sistema utilizava uma estrutura com EC2 para hospedar a aplicação desenvolvida em Spring Boot e um RDS para abrigar o banco de dados SQL. Contudo, com o aumento da base de clientes, a gestão de múltiplos ambientes tornou-se desafiadora para a equipe de desenvolvimento e operações enxuta da OpsFactor.
A empresa também enfrentava dificuldades relacionadas aos clientes empresariais, que adotavam processos distintos de homologação para novas versões do sistema. Esses procedimentos demandavam a implementação individualizada das atualizações para cada cliente.
Diante desse cenário, a empresa estava em busca de uma solução que facilitasse a gestão do SaaS, mantendo a característica de nenhum compartilhamento, aprimorando a disponibilidade e fortalecendo o controle de governança. A necessidade de administrar e atualizar diversos ambientes individuais para cada cliente, assegurando segurança, escalabilidade e conformidade, representava um desafio significativo.
A Solução
A CloudDog implementou o AWS Control Tower para aprimorar a administração das contas de cada cliente. Além disso, aconselhou a externalização das variáveis de ambiente, possibilitando a containerização da aplicação por meio do Docker. Para melhorar a eficiência operacional, os processos transacionais e em lote foram segregados e integrados através de um sistema de mensageria SQS.
Adicionalmente, a equipe utilizou o CodePipeline e o CodeBuild para construir as imagens da aplicação, disponibilizando-as em um contêiner centralizado através do Elastic Container Registry.
A implementação do AWS Service Catalog foi adotada para organizar os templates de infraestrutura. Isso permitiu a personalização automatizada do tamanho da infraestrutura de acordo com as necessidades individuais de cada cliente, simplificando a gestão do SaaS. Ao mesmo tempo, essa abordagem possibilitou a segregação de custos, administração de acessos, reforço da segurança e garantia de conformidade.
Arquitetura
A arquitetura desenvolvida para atender às demandas da OpsFactor envolve múltiplas contas na AWS, cada uma desempenhando um papel específico. Segue uma descrição detalhada da arquitetura e suas respectivas contas:
- Conta de Gerenciamento: Responsável pelo gerenciamento e governança da infraestrutura da OpsFactor. Esta conta utiliza serviços como AWS Single Sign-On (SSO) para facilitar o acesso a recursos, Amazon Organizations para gerenciar a estrutura de contas e políticas, Amazon CloudTrail para registrar atividades e auditorias, AWS Config para avaliar e rastrear a conformidade das configurações, AWS Control Tower para padronizar e gerenciar as melhores práticas de segurança, e AWS Budgets para monitorar os gastos.
- Conta de Logs: Dedicada ao armazenamento e gerenciamento de logs gerados pelos serviços da arquitetura. Nessa conta, o Amazon S3 é utilizado para armazenar logs de forma segura e durável.
- Conta de Auditoria: Focada na segurança e auditoria dos ambientes da OpsFactor. Esta conta configura serviços como AWS Security Hub, Amazon Detective, Amazon GuardDuty, Amazon Inspector e Amazon Athena. O AWS Security Hub centraliza informações de segurança e oferece insights sobre possíveis riscos e violações. O Amazon Detective é utilizado para análise de anomalias e investigação de possíveis ameaças. O Amazon GuardDuty realiza detecção contínua de ameaças e atividades maliciosas. O Amazon Inspector identifica antecipadamente riscos de segurança e vulnerabilidades. O Amazon Athena é utilizado para consultar logs armazenados na conta de Logs, permitindo pesquisas e análises eficientes.
- Contas de Clientes: Dedicadas aos ambientes de cada cliente da OpsFactor. Nessas contas, toda a infraestrutura é criada e mantida, incluindo VPC, Banco de Dados RDS, Containers do ECS, Load Balancer, CloudWatch Dashboards e Alarmes. Os ambientes são configurados a partir de templates do Service Catalog, permitindo uma implantação padronizada e personalizada para cada cliente.
Essa arquitetura possibilita uma segregação eficaz de recursos e dados entre os clientes da OpsFactor, garantindo segurança, conformidade e escalabilidade necessárias. A utilização de contas separadas e serviços especializados permite que a empresa gerencie cada aspecto da infraestrutura de maneira eficiente, proporcionando um serviço de alta qualidade aos seus clientes.
Resultados
Os resultados provenientes da implementação da arquitetura proposta pela CloudDog para a OpsFactor englobam diversos avanços:
- Aprimoramento na Gestão do SaaS: A implementação do AWS Control Tower proporcionou um gerenciamento mais eficaz das contas de cada cliente, garantindo maior segurança e segregação de custos. Isso simplificou a administração de acessos, reforçou a segurança e promoveu a conformidade.
- Maior Disponibilidade: A adoção de containers com Docker e a segregação dos processos transacionais e em lote, integrados através do sistema de mensageria SQS, contribuíram para ampliar a disponibilidade do sistema. A arquitetura em contas separadas evita que problemas em um ambiente afetem os demais.
- Automação do Processo de CI/CD: A utilização do CodePipeline e do CodeBuild acelerou a construção das imagens da aplicação, simplificando o processo de implementação para os clientes. As imagens da aplicação são agora disponibilizadas e gerenciadas pelo AWS Service Catalog.
- Implantação de Novas Versões: Através do AWS Service Catalog, a OpsFactor passou a exercer um controle mais preciso sobre a implementação de atualizações de software para seus clientes. Agora, é possível agendar a aplicação de novas versões do sistema na data e hora combinada com cada cliente, evitando interrupções indesejadas nos processos.
Esses resultados conferiram à OpsFactor uma gestão mais eficiente do SaaS, maior disponibilidade do sistema, aprimoramento no controle de governança e um processo de implementação simplificado. Com uma equipe enxuta, a empresa pôde enfrentar os desafios de manutenção e evolução dos ambientes individuais de forma mais eficaz, atendendo às necessidades dos clientes e fomentando o crescimento do negócio.