A importância de uma boa documentação de Design System
Agosto 11, 2025

A importância de uma boa documentação de Design System

Um design system bem construído pode acelerar produtos. Mas é a documentação que faz ele funcionar de verdade. O que é um design system Um design system não é apenas uma biblioteca de componentes, mas sim um conjunto de componentes reutilizáveis, diretrizes e boas práticas que orientam a criação de interfaces digitais de forma consistente e escalável. Ele combina design, código, padrões de interação, escrita e princípios de marca em um repositório vivo e colaborativo, geralmente mantido por times de design, desenvolvimento e produto. A documentação deve explicar o "porquê", o "quando" e o "como" de cada elemento. Sem ela, o design system vira apenas uma biblioteca técnica, difícil de adotar, manter e escalar. O papel da documentação A documentação é a fundação que sustenta o design system como uma ferramenta estratégica. Ela conecta elementos visuais e funcionais ao seu contexto de uso real, evitando dúvidas, decisões isoladas e retrabalho entre as áreas. Mais do que um manual técnico, a documentação atua como uma fonte única de verdade (single source of truth) para todos os times envolvidos na construção de um produto digital. Designers, desenvolvedores e PMs encontram ali um ponto de referência confiável sobre padrões de interface, diretrizes de uso, regras de comportamento e justificativas por trás das decisões de design. Com isso, a comunicação entre áreas se torna mais clara, o onboarding de novos profissionais fica mais rápido, esforços duplicados são evitados e o alinhamento com a identidade da marca e os objetivos do produto é mantido com muito mais consistência. A documentação permite que decisões sejam tomadas com mais segurança, pois todos trabalham com base nas mesmas informações, sem achismos, ruídos ou interpretações divergentes. Em resumo, ela garante que o design system seja compreendido, aplicado e evoluído da forma correta, tornando-se uma base sólida para colaboração e escala. Benefícios para todos Não estamos falando apenas de boas práticas teóricas. Os resultados são concretos e comprovados por algumas das empresas mais inovadoras e influentes do mercado. Organizações como IBM, Shopify, Atlassian e Adobe, grandes referências globais, há tempos entenderam que a documentação de um design system não é um detalhe, mas sim um dos pilares para garantir eficiência, qualidade e escala no desenvolvimento de produtos digitais. Essas empresas, reconhecidas mundialmente por sua excelência em design e tecnologia, obtiveram ganhos mensuráveis ao estruturar bem a documentação dos seus sistemas. Entre os benefícios estão a aceleração no tempo de entrega, a redução de bugs e a eliminação de esforço duplicado. Um experimento conduzido pela Figma comparou dois times de design de produto: um utilizando a documentação de um design system e outro sem esse suporte. O resultado foi expressivo. A equipe com documentação conseguiu atingir seus objetivos 34% mais rápido. A principal razão foi a agilidade obtida ao evitar tarefas repetitivas, como recriar componentes do zero, procurar elementos em arquivos antigos ou tomar decisões recorrentes sobre espaçamentos, tamanhos e estilos tipográficos. Os participantes também relataram um aumento significativo na confiança ao longo do processo, destacando que a reutilização de componentes bem documentados contribui diretamente para a consistência com o produto final. Esses benefícios se estendem para outras áreas da empresa. Desenvolvedores ganham eficiência ao reutilizar elementos confiáveis, o que reduz retrabalho e falhas. Equipes de produto aproveitam esse ganho de produtividade para acelerar as entregas e diminuir o time-to-market. Para os usuários, tudo isso se traduz em uma experiência mais consistente, estável e confiável, com entregas frequentes de valor. Como referências, gostaria de mencionar dois exemplos de documentação que considero excelentes. O primeiro é o Padrão Digital do Governo, o design system do governo federal. Seu propósito é fascinante: oferecer a milhões de brasileiros uma experiência padronizada em todos os produtos e serviços digitais do governo — esteja o cidadão declarando o imposto de renda, consultando o FGTS ou acessando o título de eleitor. Segundo a própria documentação, o objetivo é claro: "oferecer uma experiência única ao cidadão que se relaciona com o governo para acessar produtos e serviços." Em poucos anos, já é possível perceber avanços significativos na experiência digital, como o login unificado gov.br, que pode ser utilizado inclusive em serviços estaduais e municipais. Outro bom exemplo é o design system da Conta Azul, que se destaca por ir além do convencional. Sua documentação inclui, além de componentes e padrões visuais, conteúdos aprofundados como guias de onboarding, redação e pesquisa, oferecendo uma base completa para todas as áreas envolvidas na construção do produto. Para quem busca mais referências nacionais, recomendo visitar o site designsystemsbrasileiros.com, uma curadoria colaborativa com diversos exemplos de design systems utilizados por empresas e instituições brasileiras. A plataforma reúne iniciativas públicas e privadas, oferecendo uma visão ampla sobre como diferentes organizações têm estruturado e documentado seus sistemas para promover consistência, escala e eficiência no desenvolvimento de produtos digitais. Conclusão Um design system bem documentado não é apenas uma ferramenta de design. Ele se torna um ativo estratégico da empresa. Ele conecta pessoas, define padrões, acelera entregas, aumenta a autonomia do time e reduz custos com retrabalho. Para desenvolvedores, a documentação facilita a implementação, reduz dúvidas e acelera o uso de componentes reutilizáveis, promovendo código mais limpo e consistente. Para os times de produto, ela aumenta a previsibilidade dos projetos, melhora a colaboração com design e engenharia e ajuda a reduzir o time-to-market. Já para os usuários, tudo isso se traduz em uma experiência mais estável, intuitiva e coerente em cada ponto de contato com o produto.

Grupo Softplan apresenta Starian, marca focada no setor privado
Junho 27, 2025

Grupo Softplan apresenta Starian, marca focada no setor privado

Com a divisão das operações, Softplan atende apenas o setor público e Starian chega ao mercado com a proposta de construir ecossistemas especialistas Florianópolis, junho de 2025 – O Grupo Softplan, uma das maiores empresas de tecnologia SaaS e transformação digital do Brasil, anuncia a Starian. A nova marca autônoma, que já nasce com aproximadamente 54% do share da receita líquida do grupo, reúne, sob seu guarda-chuva, todas as soluções dedicadas à Indústria da Construção, com o Ecossistema Sienge, além da Inteligência Legal, liderada pelo Projuris, e soluções de produtividade e eficiência, como o Checklist Fácil e o Runrun.it. A Softplan fica dedicada ao setor público com soluções líderes em três segmentos estratégicos: Justiça, Processos Digitais e Administrativos, e Infraestrutura e Obras. A estratégia de divisão das operações foi anunciada em dezembro de 2024 e agora, com o lançamento da Starian, o movimento se consolida. Marcio Santana, que assume como CEO da Softplan, destaca que a atuação é guiada pela entrega de tecnologia alinhada à realidade de cada cliente, com foco em impacto de longo prazo. “Estamos consolidando a estrutura por segmentos e evoluindo o portfólio, com inteligência artificial e dados no centro. Além disso, o foco está em aumento de ganho de performance e crescimento de receita, especialmente nos municípios, com uma plataforma integrada de soluções, e uma estratégia de internacionalização.” A nova operação da Softplan almeja ultrapassar 800 instituições públicas atendidas ainda em 2025. A separação das operações visa impulsionar ambos os negócios. Ionan Fernandes, CEO da Starian, explica que a marca já nasce com uma operação de grande porte e enorme potencial de crescimento. “Com a experiência e credibilidade acumuladas em mais de 34 anos e uma tese de negócios orientada à especialização, nosso foco é construir ecossistemas especialistas em cada uma das verticais em que atuamos, acelerados pela inteligência artificial para que continuemos fazendo o que sempre foi nossa maior diretriz: colocar o cliente no centro”, afirma Ionan. Até o final de 2025 a Starian prevê chegar a 20 mil clientes. Separação das operações A criação da nova operação já vinha sendo discutida dentro do Grupo Softplan, diante da necessidade de separar as duas áreas — Setor Público e Privado — devido às naturezas e demandas distintas de cada mercado. As operações para o setor privado são oferecidas como SaaS (Software as a Service), que exigem processos de venda ágeis, atendimento a milhares de clientes pela equipe de suporte, bases de clientes pulverizadas e um modelo de negócio escalável, com faturamento recorrente. No setor público, o destaque é a robustez e a previsibilidade, com níveis de serviço fortemente atrelados ao software. São contratos de longo prazo, que exigem alto grau de personalização, ciclos de venda extensos e grande preocupação com compliance e atendimento a legislações específicas. Operação com foco no setor privado A Starian já inicia as suas operações atuando com soluções líderes em três setores. O primeiro será dedicado à Indústria da Construção, tendo o Ecossistema Sienge como a base. Com soluções robustas, que integram a cadeia de ponta a ponta, traz mais de 34 anos de mercado como experiência. Cristiano Gregorius assume como Diretor Executivo da Starian Indústria da Construção e lidera a operação que já atende mais de 9 mil clientes. Já na vertical de Inteligência Legal, oProjuris é a plataforma que conecta as demais soluções, oferecendo tecnologia, automação e dados para a gestão jurídica. A operação será conduzida sob liderança do Sidney Falcão, que atua como Diretor Executivo da Starian Inteligência Legal. As soluções de Eficiência Operacional, que contempla os produtos Checklist Fácil e Runrun.it, têm como foco impulsionar a produtividade, a padronização e a gestão inteligente de processos em qualquer tipo de empresa. Marcelo Ferreira é o Diretor Executivo da Starian Eficiência Operacional.   A tese de negócios da Starian é baseada no modelo construído na antiga Unidade da Indústria da Construção da Softplan, que tem o Sienge no centro, e cria ecossistemas completos, com complementariedade de produtos e gestão integrada. A estratégia é replicar o modelo e consolidar os ecossistemas que estão sendo desenvolvidos nas demais verticais. Além disso, o crescimento inorgânico segue sendo parte fundamental da expansão da operação. Para liderar essa frente, com foco em M&A, a Starian conta com Alex Anton como Chief Strategy Officer. “As verticais ampliam nosso potencial de mercado no futuro, inclusive com possibilidade de passar a atuar em novas frentes de negócio”, destaca o CEO da Starian, Ionan Fernandes. Sobre a Starian A Starian é um grupo que reúne soluções SaaS (Software as a Service) especialistas nas áreas da Indústria da Construção, Inteligência Legal e Produtividade e Eficiência. Usando um software ponto de controle como habilitador e motor de crescimento de novas linhas de negócio, é focada em criar ecossistemas completos para os segmentos em que atua. Com uma trajetória de mais de 34 anos no mercado privado, conta com mais de 1,5 mil colaboradores e pretende atender 20 mil clientes em 2025.  Sobre a Softplan Somos focados em transformação digital, com um claro objetivo: desenvolver softwares encontrando soluções inteligentes para os segmentos de Infraestrutura e Obras, Processos Digitais e Justiça, levando tecnologia e integração a todos as esferas do Setor Público. Somos trusted advisor em tecnologia para o setor, com uma trajetória sólida em confiabilidade, compliance e reputação. Para mais informações: starian@vcrp.com.br softplan@vcrp.com.br 

RFC 9745 e seu impacto na governança de APIs
Junho 10, 2025

RFC 9745 e seu impacto na governança de APIs

A Internet Engineering Task Force (IETF) - organização internacional aberta que desenvolve e promove padrões técnicos para a internet, como os protocolos TCP/IP, HTTP e DNS - acaba de lançar a RFC 9745, que define uma forma padronizada de se informar a depreciação de recursos no contexto do HTTP, o que é especialmente relevante para APIs baseadas neste protocolo. Em resumo, a partir de agora, servidores podem informar seus clientes sobre o status de depreciação de determinados recursos utilizando o cabeçalho de resposta Deprecation, cujo valor é uma data, no passado ou futuro, indicando que o recurso já foi ou ainda será depreciado. Adicionalmente, é possível utilizar o cabeçalho link para apontar uma documentação e, também, o Sunset, trazendo a data na qual o recurso se tornará indisponível. Neste artigo iremos avaliar a viabilidade de se aplicar este padrão no mundo real. Utilizando as melhores práticas no desenvolvimento de APIs, partiremos de arquivos de definição que seguem a OpenAPI Specification e terminaremos no API gateway KrakenD. Impactos Como dito, este novo padrão é especialmente importante para as web APIs, ou seja, para as APIs que aderem ao protocolo HTTP, como as famosas REST. Neste contexto, a RFC oferece meios de se levar as políticas de depreciação — outrora restritas à documentação ou ao design time — ao tempo de execução. Portanto, a novidade tem o potencial de seriamente mitigar as quebras de integração, possibilitando aos desenvolvedores realizarem as adaptações necessárias com uma antecedência confortável. Aliás, vale lembrar que estamos entrando na era da A.I. (com seus agentes, servidores MCP e etc.), o que só faz aumentar o impacto deste novo padrão, já que eles podem aprender e se adaptar sozinhos diante da sinalização de depreciação. No contexto de governança, a RFC também torna possível aos fornecedores de gateways de API (como Kong, Tyk, KrakenD, Traefik, APISix e etc.) considerarem o novo padrão durante os processos automatizados de deploy de APIs, sobretudo quando pensamos em APIOps baseado em OpenAPI specification. Vejamos. A especificação OpenAPI prevê a indicação de depreciação de operações através do campo deprecated. Com esta nova RFC, é simplesmente natural pensarmos em linkar as coisas, ou seja, fazer com que a indicação de depreciação presente nos arquivos de definição encontre correspondência na configuração dos gateways, que, uma vez em execução, passem a injetar o novo cabeçalho de resposta nas operações apropriadas. Esta melhoria levaria a governança ao próximo nível de qualidade! Provando o conceito Utilizaremos o arquivo de definição aderentes à OpenAPI Specification (OAS) para descrever nossa API, construiremos um parser em Go utilizando a libopenapi, contaremos com o KrakenD como API gateway e um HttpBin como backend. Todos os detalhes do projeto podem ser encontrados neste repositório. Então, vou destacar apenas os pontos principais: O arquivo de definição (openapi.yaml) paths: (...) /users/{userId}: (...) delete: (...) deprecated: true Observe que a operação de deleção de usuário conta com o campo padrão da OAS deprecated com o valor true. Bem, é fácil perceber que estamos diante de uma incompatibilidade de impedância quando tentamos fazer esse booleano interagir com os novos cabeçalhos previstos na RFC 9745, já que estes são muito mais ricos em informação do que aquele. Por razões como esta, a OAS possui extensões, que, no nosso caso, serão utilizadas para descrever as propriedades esperadas pela RFC da seguinte forma: paths: (...) /users/{userId}: (...) delete: (...) deprecated: true x-deprecated-at: "2025-06-30T23:59:59Z" x-deprecated-sunset: "2026-01-01T00:00:00Z" x-deprecated-link: https://api.example.com/deprecation-policy O Parser A função do parser é ler e interpretar o arquivo de definição openapi.yaml, extrair as informações relevantes para o gateway, e criar o arquivo operations.json, que será embarcado na imagem do KrakenD e consumido durante a sua inicialização, numa abordagem denominada configuração flexível. Este é o resultado do operations.json: { "list": [ { "path": "/users", "method": "get", "backend": { "path": "/users", "host": "http://backend:8888" } }, { "path": "/users", "method": "post", "backend": { "path": "/users", "host": "http://backend:8888" } }, { "path": "/users/{userId}", "method": "get", "backend": { "path": "/users/{userId}", "host": "http://backend:8888" } }, { "path": "/users/{userId}", "method": "delete", "deprecated": { "at": "@1751327999", "link": "https://api.example.com/deprecation-policy", "sunset": "Thu, 01 Jan 2026 00:00:00 UTC" }, "backend": { "path": "/users/{userId}", "host": "http://backend:8888" } } ] } Observe que o parser projetou os elementos estendidos da OAS no arquivo de configuração do KrakenD, inclusive fazendo as devidas conversões de valores, da seguinte forma: OAS KrakenD x-deprecated-at: deprecated.at: x-deprecated-link: deprecated.link: x-deprecated-sunset: deprecated.sunset: O plugin Agora que a configuração do gateway foi devidamente gerada a partir do arquivo de definição, nosso plugin personalizado entra em cena. A sua função é identificar as operações de API depreciadas e inserir os cabeçalhos da RFC 9745 com os valores adequados. Mais detalhes podem ser encontrados no repositório do artigo. Mas, uma vez que o plugin foi embarcado no KrakenD, temos os seguintes resultados: GET /users/1 DELETE /users/1 Observe que apenas a segunda operação estava depreciada (vide operations.json) e o gateway adicionou corretamente os cabeçalhos na resposta. Conclusões O experimento mostrou a viabilidade do conceito, ou seja, que é possível levar as políticas de depreciação para além da definição e documentação, sendo facilmente comunicadas em tempo de execução. Desta forma, os sistemas podem adotar ações automatizadas para comunicar a obsolescência aos interessados e reduzir significativamente as chances de falhas nas integrações. Embora as extensões da OpenAPI Specification tenham tornado isso possível diante da insuficiência do booleano deprecated, imagino que a OpenAPI Initiative deve incluir uma melhoria nas próximas versões. Sobretudo quando penso que Eric Wilde, co-autor desta RFC, é bem atuante no mundo das APIs. Aos leitores que chegaram até aqui, meu muito obrigado. Espero que estas poucas palavras lhes tenham acrescentado algo e feito o seu tempo valer a pena. Referências RFC 9745: https://www.rfc-editor.org/rfc/rfc9745 OpenAPI Specification: https://spec.openapis.org/oas/latest.html Incompatibilidade de Impedância: https://devblogs.microsoft.com/oldnewthing/20180123-00/?p=97865 Repositório: https://github.com/MichelFortes/articles-RFC9745 HttpBin: https://hub.docker.com/r/michelfortes/httpbin KrakenD – flexible configuration: https://www.krakend.io/docs/configuration/flexible-config PB33F - libopenapi: https://pb33f.io/libopenapi/

Embeddings: o que são e suas aplicações
Maio 27, 2025

Embeddings: o que são e suas aplicações

Sabemos que com o surgimento de diversas tecnologias, há um grande aumento do número de termos que ouvimos falar, embeddings é um deles, mas o que são?Embeddings, que em inglês significa "incorporar", é um termo utilizado em IA e Processamento de Linguagem Natural (PLN). Refere-se ao processo de "incorporar" ou "embutir" informações complexas (como palavras, frases ou documentos) em um espaço vetorial. Isso significa que dados que seriam difíceis de processar diretamente são transformados em uma forma numérica (vetores), que os modelos de Machine Learning podem entender e usar para tarefas como classificação e análise semântica. Quando combinados com bancos de dados vetoriais, possibilitam que sistemas analisem grandes volumes de dados não estruturados. Isso permite a extração de informações relevantes e consultas complexas de forma rápida e eficaz. Essa técnica de transformação de dados é essencial na construção de soluções escaláveis, pois a representação vetorial facilita a busca e recuperação de informações além de comprimir suas informações e ainda assim manter a relação com o seu conteúdo original. Como funciona Sabemos que Embeddings são vetores para entendimento de máquina baseados em textos, fases, documentos. Mas como transformamos essas informações em vetores?Os vetores são formados a partir da utilização de modelos de IA treinados para identificar contextos, classificando-os com base na aproximação do contexto em números, que normalmente variam de -1 a 1. O valor 1 indica a maior proximidade, com milhares de parâmetros de comparação. Esses modelos são geralmente treinados com grandes volumes de texto, identificando padrões de concorrência entre palavras que aparecem frequentemente em contextos semelhantes, como "gato" e "animal". Durante o treinamento, o modelo aprende a mapear essas palavras para vetores numéricos em um espaço multidimensional, de forma que palavras com significados relacionados ou contextos similares fiquem posicionadas mais próximas entre si nesse espaço vetorial. O objetivo é fazer com que palavras ou frases com significados semelhantes fiquem mais próximas no "espaço" dos vetores. Por exemplo, "gato" e "cachorro" devem ser representados por vetores próximos, enquanto "gato" e "carro" estarão mais distantes. Exemplo de embedding | Imagem: https://arize.com/blog-course/embeddings-meaning-examples-and-how-to-compute/ De que forma é calculada a semelhança entre dois vetores, comparando, por exemplo, um texto com diversos vetores do modelo treinado?Matematicamente se utiliza normalmente a técnica de similaridade por cosseno para realizar a comparação entre dois vetores A similaridade do cosseno fornece um valor no intervalo [-1,1], tendo 1 como o valor de contexto mais próximo e -1 o mais distante [1] Equação de similaridade por cosseno | Imagem: Wikipedia Dois vetores com 98% de similaridade com base no cosseno do ângulo entre os vetores | Imagem: Richmond Alake Embeddings, na prática Análise de PDF com QA (Question Answering): Embeddings são usados em sistemas de análise de documentos, como PDFs, para realizar tarefas de Pergunta e Resposta (QA). Empresas que lidam com grandes volumes de documentos, como contratos ou relatórios, podem utilizar embeddings para localizar automaticamente trechos relevantes em um texto. Por exemplo, ao analisar um contrato em PDF, os embeddings permitem mapear semanticamente o conteúdo e identificar passagens relacionadas a perguntas como "Qual é o prazo de validade deste contrato?" ou "Quais são as obrigações de pagamento do cliente?". Em seguida, um modelo de IA generativa pode utilizar esses trechos para interpretar o contexto e gerar respostas em linguagem natural com maior precisão. Recomendação de Produtos (E-commerce): Plataformas como Amazon e Netflix utilizam embeddings para recomendar produtos ou filmes baseados nas preferências e comportamentos passados dos usuários. Por exemplo, ao recomendar filmes, embeddings são usados para capturar o estilo, gênero e características dos filmes que o usuário assistiu, sugerindo novos conteúdos com base na similaridade vetorial. Análise de Sentimentos (Atendimento ao Cliente): Empresas utilizam embeddings para analisar sentimentos em feedbacks ou mensagens de clientes. Por exemplo, ao analisar um conjunto de comentários em redes sociais ou e-mails de clientes, embeddings ajudam a identificar automaticamente se o sentimento é positivo, negativo ou neutro, permitindo uma resposta rápida e apropriada. Conclusão Embeddings têm se mostrado uma ferramenta poderosa e crescente em diversas indústrias, transformando a forma como interagimos com dados não estruturados. Sua capacidade de representar informações complexas de maneira numérica tem levado a melhorias em sistemas de análise de documentos, recomendações e até no atendimento ao cliente. Sendo uma tecnologia em constante evolução, é esperado que, com o tempo, ela seja cada vez mais integrada em soluções inteligentes e escaláveis. Além disso, com a tendência de redução dos custos computacionais e o avanço das infraestruturas de processamento e armazenamento, torna-se cada vez mais viável escalar essas soluções com eficiência e baixo custo. Referências https://builtin.com/machine-learning/cosine-similarity#:~:text=Cosine%20similarity%20is%20a%20measurement,within%20an%20inner%20product%20space https://arize.com/blog-course/embeddings-meaning-examples-and-how-to-compute

Como o Karpenter otimizou a gestão da nossa infraestrutura EKS na AWS
Maio 13, 2025

Como o Karpenter otimizou a gestão da nossa infraestrutura EKS na AWS

Empresas enfrentam desafios diários na gestão de infraestrutura Kubernetes, especialmente para manter eficiência e reduzir custos. Aqui na Softplan, descobrimos uma solução que transforma a maneira de gerenciar nossos clusters EKS na AWS: o Karpenter. Desafios na gestão de instâncias Antes de falar de Karpenter é preciso dar alguns passos atrás e explicar um pouco do que se trata um auto escalonamento de nodes. Suponha que temos nosso cluster com algumas máquinas (instâncias) disponíveis executando nossos workloads. O que acontece se por acaso houver um pico de uso em nossas aplicações e seja necessário subir mais instâncias (réplicas) de nossos pods? Sem um autoscaling precisaríamos provisionar um node, orientá-lo a juntar-se ao nosso cluster para aí sim nossos pods estarem aptos a serem iniciados nessa nova instância. Lembrando que o provisionamento de uma instância não é instantâneo, há todo um bootstrapping da máquina, configurações de rede e muitas outras coisas antes dela ficar totalmente disponível. Certo, falamos sobre pico de usuários em nossas aplicações, mas e quando houver ociosidade? Queremos mesmo deixar esses nodes em pé com poder computacional subutilizado? Para resolver essa e outras questões, entra em cena o conceito de auto scalers. Auto Scalers As implementações de auto scalers são responsáveis basicamente pelo provisionamento e consolidação de nodes. Aqui estamos falando de escalonamento horizontal, ou seja, adicionando mais máquinas em nosso cluster. Há diversas implementações de node autoscaling, mas neste artigo o foco será na implementação da AWS e por que decidimos migrar para uma outra solução. Abaixo uma figura exemplificando o funcionamento do node autoscaling: Figura 01: autoscaling AWS - Auto Scaling Groups Ao definir um grupo de escalonamento na AWS precisamos definir diversas propriedades, como o número mínimo/máximo de instâncias de nodes permitidas para este grupo, recursos utilizados, tipo de disco, configurações de rede (subnets, etc) e muitos outros detalhes. Por exemplo, para um determinado tipo de aplicação que utilize mais CPU vamos configurar um grupo que contenha tipos de instância com mais CPU do que memória. No fim possivelmente teremos alguns grupos distintos para certos tipos de aplicações. Juntando as peças – Cluster Auto Scaler Para que meu cluster consiga “conversar” com meu cloud provider (neste exemplo AWS), precisamos de um componente chamado Cluster Auto Scaler, ou CAS.Este componente foi criado pela própria comunidade que mantém o Kubernetes, e está disponível aqui. Uma configuração padrão do CAS pode ser vista abaixo, utilizando o helm para instalação: nameOverride: cluster-autoscaler awsRegion: us-east-1 autoDiscovery: clusterName: meu-cluster image: repository: registry.k8s.io/autoscaling/cluster-autoscaler tag: v1.30.1 tolerations: - key: infra operator: Exists effect: NoSchedule nodeSelector: environment: "infra" rbac: create: true serviceAccount: name: cluster-autoscaler annotations: eks.amazonaws.com/role-arn: "role-aws" extraArgs: v: 1 stderrthreshold: info Com isso configurado e instalado e nossos autoscaling groups criados acabamos de habilitar o gerenciamento automático de nossos nodes! Por que decidimos migrar para o Karpenter Nosso caso de uso aqui na Projuris é o seguinte: temos um cluster de desenvolvimento e outro de produção. Depois da migração para o Gitlab SaaS tínhamos um desafio de como provisionar os runners para a execução de nossas pipelines. Ficou decidido que usaríamos o cluster de desenvolvimento para provisionamento desses runners. Na “primeira versão” optamos pelo cluster auto scaler por ser uma configuração mais simples e que já atendia nosso setup em produção. Mas aí começamos a enfrentar alguns problemas com esta escolha: Tempo de provisionamento: ao iniciar uma pipeline o tempo de provisionamento da máquina era um pouco lento. O grande ponto é que o cluster auto scaler paga um “pedágio” no cloud provider para provisionamento de um novo node. Dificuldade na configuração de grupos: como temos alguns “perfis” de pipeline essa gestão ficou um pouco complicada, porque para cada novo perfil um novo node group precisa ser criado. Custo: para mitigar o problema de lentidão no startup de um novo node tínhamos um perfil de máquina “online” que ficava o tempo todo de pé, mesmo sem executar nenhuma pipeline. O que é o Karpenter? É uma solução de cluster autoscaling criada pela AWS, que promete o provisionamento e consolidação de nodes sempre com o menor custo possível. Ele é inteligente o suficiente para saber que por exemplo, ao comprar uma máquina na AWS do tipo on-demand, dependendo da situação, é mais em conta do que se fosse uma máquina spot. E essa é apenas uma das características dessa ferramenta. O Karpenter também trabalha com a ideia de “grupos” de máquinas (que no mundo do Karpenter chamamos de NodePools), só que a diferença é que fazemos isso através de CRDs (custom resource definitions) do próprio Karpenter, ou seja, temos manifestos dentro de nosso cluster com todas essas configurações, eliminando a necessidade de qualquer node group criado na AWS. Exemplo de um NodePool no Karpenter: apiVersion: karpenter.sh/v1 kind: NodePool metadata: name: karpenter-gitlab-runner-small-online spec: template: metadata: labels: workload: gitlab-runners environment: karpenter-nodes-gitlab-runner-build-small-online spec: requirements: - key: "karpenter.sh/capacity-type" operator: In values: ["spot", “on-demand”] - key: "node.kubernetes.io/instance-type" operator: In values: ["m5d.large", "m5n.large", "m6id.large", "m6in.large"] nodeClassRef: group: karpenter.k8s.aws kind: EC2NodeClass name: my-node-class taints: - key: "gitlab-runner-karpenter" value: "true" effect: NoSchedule expireAfter: Never disruption: consolidationPolicy: WhenEmpty consolidateAfter: 5m budgets: - nodes: "20%" limits: cpu: "500" memory: 500Gi Além do NodePool precisamos criar um NodeClass para definir detalhes específicos de instâncias AWS: apiVersion: karpenter.k8s.aws/v1 kind: EC2NodeClass metadata: name: my-node-class spec: amiFamily: AL2 role: "aws-role" tags: Name: nodes-k8s-nodes-gitlab-runner-small-online subnetSelectorTerms: - tags: karpenter.sh/subnet: "my-subnet" securityGroupSelectorTerms: - id: "sg-123" - id: "sg-456" - id: "sg-789" amiSelectorTerms: - id: "imagem ami" kubelet: clusterDNS: ["111.222.333.44"] blockDeviceMappings: - deviceName: /dev/xvda ebs: volumeSize: 40Gi volumeType: gp3 encrypted: true OBS: perceba que o nome “my-node-class” precisa bater com o node class configurado no node pool. Como o Karpenter nos ajudou a superar os desafios apresentados? Tempo de provisionamento: como o Karpenter conversa diretamente com as APIs do cloud provider não é necessário pagar o pedágio do cluster auto scaler. Tínhamos muitos problemas de timeout no provisionamento de novos nodes, após a troca pelo Karpenter esse problema simplesmente desapareceu justamente porque o provisionamento é mais eficiente. Dificuldade na configuração de grupos: com a solução de NodePools e NodeClass do Karpenter essa configuração ficou trivial, e o mais importante, versionada em nosso controle de versões no Gitlab. Ou seja, precisa incluir um perfil de máquina novo no NodePool? Sem problemas, basta um commit e o Karpenter já irá considerar isso nos novos provisionamentos. Custo: Conseguimos utilizar a utilização de máquinas, pois agora runners com características semelhantes são alocados em nodes que suportem os requisitos de memória e CPU exigidos. Ou seja, estamos realmente usando todo o poder computacional que aquele node proporciona. Isso vale também para a consolidação de nodes. Com o cluster auto scaler haviam scripts complexos para fazer o drain dos nodes antes da consolidação. Com o Karpenter isso é configurado no NodePool de maneira muito simplificada. Um ótimo argumento para a gestão que justifique o investimento nesse tipo de mudança é custo. Abaixo temos um comparativo do custo utilizando o Cluster AutoScaler e o Karpenter em Janeiro/25, onde conseguimos uma economia de 16% no total: Figura 02: Período de 01/01 à 15/01 com ClusterAutoScaler Figura 03: Período de 16/01 à 31/01 com o Karpenter Considerações finais A migração para o Karpenter foi uma escolha acertada. Conseguimos simplificar a gestão de nossos nodes com diferentes perfis de forma bastante simplificada. Ainda há espaço para algumas melhorias, como por exemplo a utilização de um único NodePool para simplificar ainda mais, e deixar que os runners configurem labels específicas para o perfil de máquina que deve ser provisionado para o runner (mais em https://kubernetes.io/docs/reference/labels-annotations-taints/). Referências Karpenter (doc oficial): https://karpenter.sh/ Node Auto Scaling (doc oficial k8s): https://kubernetes.io/docs/concepts/cluster-administration/node-autoscaling/

Grupo Softplan conclui aquisição da govtech 1Doc e reforça estratégia de transformação digital das cidades brasileiras 
Abril 30, 2025

Grupo Softplan conclui aquisição da govtech 1Doc e reforça estratégia de transformação digital das cidades brasileiras 

A startup, que faz a gestão de processos digitais em prefeituras e já pertencia majoritariamente ao Grupo desde 2019, apresentou crescimento expressivo de 75% ao longo de seis anos  Florianópolis, abril de 2025 – O Grupo Softplan, uma das maiores empresas de SaaS e de transformação digital do Brasil, acaba de oficializar a aquisição da totalidade da 1Doc, especializada na digitalização de processos, comunicação institucional e atendimento ao cidadão em prefeituras e órgãos públicos. Em uma jornada que teve início em 2017 com um aporte estratégico e, posteriormente em 2019, com a compra majoritária da empresa, a companhia finaliza a compra do restante junto a Jéferson de Castilhos, um dos fundadores, e passa a deter 100% da startup. No ano passado, a participação de Jaison Niehues, outro sócio fundador, já havia sido adquirida.   Compondo a vertical de Setor Público do grupo desde 2019, a 1Doc apresentou uma Taxa de Crescimento Anual Composta (CAGR) de 75% entre 2019 e 2025. “A jornada com a 1Doc representa exatamente como acreditamos que a relação com o ecossistema de inovação e startups deva acontecer: com visão a longo prazo, colaboração e impacto real. A startup cresceu dentro do ecossistema Softplan, evoluiu com autonomia e agora se consolida como uma peça-chave da nossa estratégia para transformar o setor público”, afirma Eduardo Smith, CEO do Grupo Softplan.   Fundada em 2014, a 1Doc nasceu com o propósito de digitalizar processos e aproximar cidadãos e governos por meio de uma plataforma 100% em nuvem. Hoje, atende em média 1000 entidades em todo o país e conta com um time de 141 colaboradores, reforçando seu alcance e relevância no setor público, sendo responsável por impactar diretamente a vida de mais de 22 milhões de brasileiros.  "Temos grande apreço pela cultura da 1Doc e muito orgulho da trajetória de crescimento que construímos ao longo dos anos, sempre guiados por um propósito claro. Hoje, temos plena certeza do impacto positivo que nossos serviços geram, facilitando a rotina de nossos clientes — que reconhecem tanto o valor das nossas soluções quanto a relevância do trabalho que entregamos”, celebra Alice Luz, CEO da 1Doc.  A compra vai permitir ampliar a integração que já existe entre os produtos, possibilitando o desenvolvimento de funcionalidades em parceria entre Softplan Setor Público e 1Doc, trazendo expertises de funcionalidades com o uso de inteligência artificial e machine learning voltadas à automatização de processos, validação e classificação documental e atendimento digital em larga escala.  “A 1Doc trouxe para o nosso portfólio uma solução altamente escalável e de fácil implantação, capaz de atender desde pequenos municípios até grandes centros urbanos. Hoje, essa solução é parte central da nossa entrega para cidades e entidades mais eficientes, conectados e centrados no cidadão”, explica Márcio Santana, Diretor Executivo da Softplan Setor Público.  Estratégia de aquisições   Com a 1Doc totalmente integrada ao portfólio, a empresa ampliará sua capacidade de oferecer uma jornada digital completa — da tramitação documental ao atendimento ao cidadão — com soluções SaaS, em nuvem e de fácil escalabilidade.  “A trajetória com a 1Doc é um exemplo claro da nossa estratégia de aquisições: identificar empresas com alto potencial de crescimento e forte sinergia com nosso negócio. Desde o primeiro investimento, nosso objetivo foi impulsionar a solução, unindo capacidades e ampliando o valor entregue ao cliente final. A aquisição total consolida esse movimento e reforça nosso compromisso em construir jornadas mais eficientes e conectadas para os nossos clientes”, afirma Alex Anton, Diretor de M&A e Estratégia do Grupo Softplan.   A compra da startup fortalece também a atuação do grupo junto ao movimento de cidades inteligentes, promovendo inovação com foco em transparência, participação cidadã, redução de custos e maior eficiência da máquina pública.