top of page
Foto do escritorLuispe Toloy

IDP - Por que, quando e como

Para começar, gostaria de falar sobre a sigla IDP .


Alguns anos atrás, quando comecei a trabalhar em tempo integral na “área de infraestrutura”, falávamos sobre a Internal Developer Platform e isso se refere à infraestrutura e ao conjunto de ferramentas que automatizam e facilitam o desenvolvimento, a implantação e a operação dos serviços e recursos subjacentes, tem foco na automação e integração de todas as camadas que uma equipe de desenvolvimento de produtos precisa, inclui componentes de CI/CD, IaC, orquestração de contêineres, observabilidade, etc.


Ao longo dos anos, começamos a falar sobre o Portal Interno do Desenvolvedor , que é uma evolução da Plataforma Interna do Desenvolvedor.


De acordo com a Gartner, “Até 2026, 80% das grandes organizações de engenharia de software estabelecerão equipes de engenharia de plataforma como provedores internos de serviços, componentes e ferramentas reutilizáveis para entrega de aplicativos. A engenharia de plataforma resolverá, em última análise, o problema central da cooperação entre desenvolvedores e operadores de software.”


Com o Portal Interno do Desenvolvedor, começamos a ter uma abordagem de produto no que diz respeito à plataforma, ela pode ou não incluir uma IU e facilita tarefas de autoatendimento com fluxos de operação projetados como um produto e com base nas necessidades internas de desenvolvimento e segurança que a empresa exige.


Para não aborrecer você, gostaria que você se lembrasse dos seguintes conceitos:

  • Self-service

  • Padronização

  • Segurança

  • Reduzir a carga cognitiva

  • Plataforma como produto


Porque um PDI

Feita uma breve introdução, vamos falar sobre o porquê.


Akua é, como é de conhecimento público, “A plataforma de processamento de adquirência para todos os trilhos de pagamento na América Latina” e desenvolver serviços neste contexto requer cuidados especiais em segurança sem perder velocidade no desenvolvimento e implantação e ter autonomia para a operação/gestão dos serviços e recursos associados.


Com esse contexto, formamos o time de Plataforma na Akua para desenvolver o IDP, com um desafio agressivo, mas motivador, pela frente, desenvolver o IDP do minuto zero para que a equipe de desenvolvimento do produto possa implantar e gerenciar os microsserviços e os recursos associados, tudo isso sem perder de vista os conceitos que mencionei anteriormente, Autoatendimento, Padronização, Segurança, Redução de carga cognitiva, Plataforma como produto .


Foi um capricho? Não, conheço Juanjo (CTO da Akua) há muito tempo e sabemos por experiência compartilhada que ter um IDP em uma empresa que precisa ser compatível com PCI DSS, seguindo os mais altos níveis de segurança com alta disponibilidade e escalabilidade é um benefício muito, muito valioso.


Na Akua, poderíamos ter criado tudo manualmente, sem perseguir padrões, mas é uma solução temporária. Vamos considerar que, por algum motivo, a indústria criou o conceito de IaC, não apenas por capricho, mas sim uma necessidade que surgiu quase naturalmente devido às implicações e desafios no gerenciamento da infraestrutura.


Quando um PDI

Eu esperava algo, mas fizemos isso do minuto zero e foi desafiador, muito desafiador pensar sobre isso:

  • Quais ferramentas de IaC vamos usar?

  • O que vamos usar para CI/CD?

  • Como evitamos que nosso IDP se torne um monstro e o mantemos simples e fácil de gerenciar e dimensionar?

  • Onde os serviços da Akua serão executados?

  • Quão seguros estamos por padrão?


E uma pergunta pode ficar no ar: por que desde tão cedo?


O Akua precisa ter uma velocidade de desenvolvimento padronizada e segura e mantê-la ao longo do tempo, e isso é muito difícil de conseguir sem um IDP ou não é possível. Você poderia “sair rápido” sem ter um IDP, mas eu lhe asseguro que mais cedo ou mais tarde tudo se torna um caos, para o produto e para o gerenciamento e manutenção da infraestrutura e software.

Como

Vamos abordar o último ponto, o como.


Não há receitas, desculpe, mas se você veio procurando uma, este post não é para você 😂

O que vou lhe contar é o que nosso IDP oferece atualmente.


Mas antes de falar sobre o que ele oferece, vou contar o que usamos para oferecer o que oferecemos:

  • Como ferramenta de IaC usamos Pulumi com Typescript.

  • Para CI/CD, usamos o Gitlab com executores privados para interagir com nosso provedor de nuvem.

  • Falando em provedor de nuvem, usamos AWS (Amazon Web Services)

  • Para configuração do aplicativo, usamos o Helm e desenvolvemos um gráfico que todos os microsserviços usam.

  • Onde nossos aplicativos são executados? no kubernetes

  • Para Observabilidade usamos NewRelic



Ok Luispi, e daí?


Falei anteriormente sobre carga cognitiva e o desejo de manter nosso PDI simples e sustentável ao longo do tempo.

Bem, para atingir esse objetivo, desenvolvemos uma biblioteca interna (como mencionei com Pulumi e Typescript) que contém a lógica de negócios e segurança para a criação, remoção e modificação de recursos da plataforma.


Para evitar que nossa equipe de desenvolvimento de produto tenha que aprender uma ferramenta de IaC, e para garantir que a equipe da Plataforma tenha liberdade para mudar de rumo se necessário, o gerenciamento é feito a partir do Port (https://www.getport.io/), onde cada equipe responsável pela aplicação pode criar, atualizar e excluir recursos com um formulário simples. Você não acredita em mim? Aqui está um gif.

Quando o aplicativo é sincronizado, internamente executamos um executor Gitlab privado na AWS e, contando com nossa ferramenta IaC (Pulumi), validamos o status do que queremos implantar com o que existe na nuvem.


Abaixo desse “fluxo simples” há muitas horas de design e desenvolvimento que tivemos e continuamos a ter com a equipe da Plataforma. No momento em que escrevo este post, do nosso IDP você pode gerenciar:

  • Como mencionei, microsserviços no Kubernetes incluem: implantação, conta de serviço, serviço, entrada, conjunto com estado, tarefa cron, HPA, cache leve (?)

  • SQS

  • Redes sociais

  • S3

  • DynamoDB

  • RDS Aurora

  • Função IAM, Grupo de Segurança, Segredo e ECR para o aplicativo/microsserviço

  • Múltiplos ambientes

  • Locatário único e multilocatário


Todos esses recursos levando em consideração otimização de custos e segurança.


Antes de continuar, quero falar sobre como os dois últimos itens da lista funcionam: Múltiplos ambientes, Locatário único e multilocatário .


Múltiplos ambientes

Quando falamos de múltiplos ambientes, queremos dizer que um aplicativo pode ser executado em diferentes ambientes ao longo de seu ciclo de vida até chegar à produção.


A abordagem e solução que fornecemos do nosso IDP no Akua é abstrair a criação de recursos ambiente por ambiente. Fomos para um conceito mais abstrato onde criamos ou modelamos os recursos que o serviço precisará para resolver um problema de negócio e então podemos selecionar em qual ambiente queremos sincronizar os recursos previamente definidos, podendo escolher entre um ambiente de teste e um de produção.

Aqui está um pequeno gif:


Inquilinos únicos e múltiplos

Nossa plataforma e nosso portal são projetados e desenvolvidos para oferecer suporte a locatários únicos/múltiplos, e não apenas no nível do software do produto, mas também em todo o conjunto tecnológico que nossa plataforma possui, e com isso quero dizer:

  • Cargas de trabalho do aplicativo

  • Recursos do nosso provedor de nuvem

  • Observabilidade (rastreamento, logs, métricas)

  • etc


E essa funcionalidade foi desenvolvida respeitando um dos mantras que devem ser perseguidos ao criar um IDP : Reduzir carga cognitiva , por quê? Nossa equipe de tecnologia de produtos pode configurar se o aplicativo será executado em 1..n tenants e, ao implantar, pode selecionar ambiente e tenant, o resto é cuidado por nosso IDP para entender como, quando e onde configurar todos os recursos subjacentes 😎.


Conclusões

Ao longo da publicação tentamos abordar de forma mais ou menos abstrata tudo o que envolve um PDI, desde o que significam as siglas até como uma equipe de Plataforma e um PDI podem impactar o negócio da sua empresa, no nosso caso a Akua 🫶🏼.


Algumas coisas que eu gostaria de resumir sobre o que um PDI pode lhe oferecer são:

 

💸 Redução de custos: Ao otimizar a infraestrutura e automatizar processos, as organizações podem obter economias significativas em custos operacionais e de manutenção.


⚙️ Maior agilidade e rapidez na entrega: A implementação de uma plataforma robusta e flexível permite um tempo de lançamento mais rápido para novos aplicativos e funcionalidades, proporcionando uma vantagem competitiva em um mercado em constante evolução.


📈 Escalabilidade e disponibilidade aprimoradas: a arquitetura baseada em microsserviços e a orquestração de contêineres permitem o dimensionamento eficiente dos recursos da plataforma, garantindo alta disponibilidade e desempenho.


🛡 Maior segurança e conformidade: aplicar práticas de segurança e usar ferramentas avançadas ajuda a proteger dados confidenciais e a cumprir os padrões de segurança e privacidade.

 

As decisões são unilaterais? Claro que não, para construir um IDP se as necessidades dos “clientes” não forem ouvidas, tudo pode ser uma batalha árdua.


Ainda há um longo caminho a percorrer, mas estamos muito orgulhosos do que construímos, estamos construindo e construiremos no IDP.


Até a próxima 👋🏼

0 visualização0 comentário

Comentários


bottom of page