IDP - Por que, quando e como?
.avif)
Para começar, gostaria de falar sobre a sigla IDP.
Há alguns anos, quando comecei a trabalhar em período integral na “área de infraestrutura”, conversávamos sobre EUInterno DDesenvolvedor PA plataforma, que se refere à infraestrutura e ao conjunto de ferramentas que automatizam e facilitam o desenvolvimento, a implantação e a operação de 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, incluindo componentes de CI/CD, IaC, orquestração de contêineres, observabilidade etc.
Com o passar dos anos, começamos a falar sobre EUInterno DDesenvolvedor PPortal, que é uma evolução de uma plataforma interna para desenvolvedores.
De acordo com o Gartner, “Até 2026, 80% das grandes organizações de engenharia de software estabelecerão equipes de engenharia de plataforma como fornecedoras internas de serviços, componentes e ferramentas reutilizáveis para entrega de aplicativos. A engenharia de plataforma acabará por resolver o problema central da cooperação entre desenvolvedores e operadores de software.”
Com EUInterno DDesenvolvedor POrtal, começamos a adotar uma abordagem de produto quando se trata da plataforma, ela pode ou não incluir uma interface de usuário e facilita as tarefas de autoatendimento com fluxos operacionais projetados como um produto e com base nas necessidades internas de desenvolvimento e segurança de que a empresa precisa.
Para não ficar entediante, gostaria que você seguisse os seguintes conceitos:
- Autoatendimento
- Padronização
- Segurança
- Reduzir a carga cognitiva
- Plataforma como produto
Por que um IDP?
Depois da breve introdução, vamos falar sobre o porquê.
Akua, como é do conhecimento público, é “A plataforma de processamento de aquisição para todos os trilhos de pagamento na América Latina” e o desenvolvimento de serviços nesse contexto requer cuidados especiais de segurança sem perder velocidade no desenvolvimento e implantação e ter autonomia para a operação/gerenciamento de serviços e recursos associados.
Com esse contexto, formamos a equipe de plataforma em Akua para desenvolver o IDP, com um desafio agressivo, mas motivador pela frente, de desenvolver o IDP do zero para que a equipe de desenvolvimento do produto possa implantar e gerenciar microsserviços e recursos associados, tudo sem perder de vista os conceitos que mencionei acima, Autoatendimento, padronização, segurança, redução da carga cognitiva, plataforma como produto.
Foi um capricho? Não, conheço Juanjo há muito tempo e sabemos por experiência própria que ter um IDP em uma empresa que precisa ser compatível com PCI, seguindo os mais altos níveis de segurança com alta disponibilidade e escalabilidade, é um benefício muito valioso.
Na Akua, poderíamos muito bem ter criado tudo à mão, sem seguir padrões, mas é pão para hoje e fome de amanhã. Vamos pensar que, por algum motivo, a indústria criou o conceito de IaC (Infraestrutura como Código) https://www.redhat.com/en/topics/automation/what-is-infrastructure-as-code-iac), não apenas por capricho, é uma necessidade que surgiu quase naturalmente devido às implicações e desafios no gerenciamento da infraestrutura.
Quando é um IDP?
Eu esperava algo, mas fizemos isso do zero e foi um desafio, muito difícil pensar nisso:
- Quais ferramentas IaC vamos usar?
- O que vamos usar para CI/CD?
- Como podemos garantir que nosso IDP não se transforme em um monstro e seja simples e simples de gerenciar e escalar?
- Onde os serviços da Akua serão executados?
- Como estamos seguros por padrão?
E uma pergunta pode aparecer no ar: por que desde tão cedo?
Akua precisa ter uma velocidade de desenvolvimento Padronizado e seguro e mantê-lo ao longo do tempo, e que sem um IDP é muito difícil de alcançar ou não pode ser alcançado, você poderia “sair rapidamente” sem ter um IDP, mas garanto que, mais cedo ou mais tarde, tudo se torna um caos, para o produto e para o gerenciamento e manutenção da infraestrutura e do software.
Como?
Vamos abordar o último ponto, o como.
Não há receitas, desculpe, mas se você veio procurando uma, esse post não é para você 😂
O que vou lhe dizer é o que nosso IDP oferece até o momento.
Peeeero, antes de falar sobre o que ele oferece, direi o que usamos para oferecer o que oferecemos:
- Como uma ferramenta 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 a AWS (Amazon Web Services)
- Para a configuração de aplicativos, 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í?
Anteriormente, falei sobre a carga cognitiva e o desejo de que nosso IDP permaneça 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 comercial e de segurança para o registro, remoção e modificação dos recursos da plataforma.
Para evitar que nossa equipe de desenvolvedores de produtos precise aprender uma ferramenta IaC, além do fato de que, com a equipe da Plataforma, queremos ter a liberdade de mudar de rumo, se necessário, o gerenciamento é feito a partir do Port (https://www.getport.io/), onde cada equipe responsável pelo aplicativo pode criar, atualizar e excluir recursos com um formulário simples, você não acredita em mim? Vou te deixar um gif

Quando o aplicativo é sincronizado, executamos um executor privado do Gitlab na AWS e, usando nossa ferramenta IaC (Pulumi), validamos o estado do que queremos implantar com o que existe na nuvem.
Por trás desse “fluxo simples”, há muitas horas de design e desenvolvimento que tivemos e temos com a equipe da Plataforma. Na data de redação desta publicação, nosso IDP pode gerenciar:
- Como mencionei, microsserviços no Kubernetes, isso inclui: implantação, conta de serviço, serviço, entrada, conjunto com estado, cron job, HPA, light cache (?)
- SQS
- PECADOS
- S3
- DynamoDB
- RDS Aurora
- Função do IAM, grupo de segurança, segredo e ECR para o aplicativo/microsserviço
- Vários ambientes
- Único e multilocatário
Todos esses recursos levando em consideração a otimização de custos e a segurança.
Antes de continuar, quero falar sobre como, dos dois últimos itens da lista, Vários ambientes, único e multilocatário.
Vários ambientes
Quando falamos sobre vários ambientes, queremos dizer que um aplicativo pode ser executado em ambientes diferentes no ciclo de vida até chegar à produção.
A abordagem e a solução que fornecemos do nosso IDP em Akua é abstrair a criação de recursos ambiente por ambiente. Adotamos um conceito mais abstrato em que você cria ou modela quais recursos o serviço precisará para resolver um problema de negócios e, em seguida, pode selecionar em qual ambiente deseja sincronizar os recursos definidos anteriormente, podendo escolher entre um ambiente de teste e um ambiente produtivo.
Aqui está um pequeno gif:

Locatários individuais e multilocatários
Nossa plataforma e nosso portal são projetados e desenvolvidos para oferecer suporte a locatários únicos/multilocatários, 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 de aplicativos
- Recursos do nosso provedor de nuvem
- Observabilidade (rastreamento, registros, métricas)
- etc
E essa funcionalidade foi desenvolvida respeitando alguns dos mantras que devem ser seguidos ao criar um IPD Reduzir a carga cognitiva, por quê?. Nossa equipe de tecnologia de produto pode configurar se o aplicativo será executado em 1... n inquilinos e, ao implantá-lo, pode selecionar o ambiente e o inquilino. O restante é responsável pelo 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 IDP, desde o significado das siglas até como uma equipe da Plataforma e um IDP podem impactar os negócios da sua empresa, no nosso caso em Akua 🏼.
Algumas coisas que eu gostaria de resumir o que um IDP pode oferecer a você são:
💸 Redução de custos: Ao otimizar a infraestrutura e automatizar os processos, as organizações podem obter economias significativas nos custos operacionais e de manutenção.
⚙️ Maior agilidade e velocidade de entrega: A implementação de uma plataforma robusta e flexível acelera o tempo de comercialização de novos aplicativos e funcionalidades, fornecendo 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 possibilitam a escalabilidade eficiente dos recursos da plataforma, garantindo alta disponibilidade e desempenho.
🛡 Melhor segurança e conformidade regulatória: A aplicação de práticas de segurança e o uso de ferramentas avançadas possibilitam a proteção de dados confidenciais e a conformidade com os padrões de segurança e privacidade.
As decisões são unilaterais? Claro que não, para construir um IDP, se você não ouvir as necessidades dos “clientes”, tudo pode ser feito de cima para baixo.
Ainda há um longo caminho a percorrer, mas estamos muito orgulhosos do que construímos, estamos construindo e vamos construir em nosso IDP.
Até a próxima vez 👋🏼