Leonardo Ferreti
Tech Lead · Software Architect

Modernizo sistemas críticos sem os parar.

Mais de 15 anos em plataformas de energia, banca, setor público, telecomunicações e mobilidade. .NET, modernização de legado, cloud e sistemas distribuídos.

A parte difícil raramente é escrever código novo — é mudar o que já lá está sem partir nada às três da manhã.

Leonardo Ferreti

quando posso ajudar

Se está a lidar com um destes problemas, é provável que eu possa ajudar.

  • Tem uma aplicação .NET antiga que precisa de continuar a funcionar?
  • Precisa de migrar .NET Framework para .NET 8 sem fazer um big bang?
  • Herdou um sistema legado que ninguém quer tocar?
  • Tem problemas difíceis que só acontecem em produção?
  • Precisa de integrar sistemas antigos com APIs e serviços modernos?
  • Precisa de um Tech Lead que assuma as decisões de arquitetura?
  • Precisa de modernizar uma plataforma crítica sem interromper a operação?
  • Quer introduzir cloud ou IA num sistema existente sem reescrever tudo?

experiência

15+ anos
Engenharia de software, a maior parte em sistemas que já estavam em produção.
.NET
Modernização de .NET Framework, WebForms, DNN e monólitos para .NET 8.
Azure + AWS
Cloud, containers e sistemas distribuídos em ambientes regulados.
Produção
Sistemas críticos, alta responsabilidade, mudanças sem janela de paragem.

Setores: energia · banca · setor público · telecomunicações · mobilidade

casos

Três problemas reais, resolvidos em produção.

energia · pagamentos · aws

Cartões que desapareciam depois de o cliente criar o mandato MB WAY

Problema
A app confirmava o mandato criado com sucesso e, logo a seguir, não mostrava nenhum cartão. Intermitente, e só em produção.
Diagnóstico
Cruzar logs de OpenSearch com os documentos de token em MongoDB mostrou que a causa não estava no nosso código. O pedido de consulta seguia cerca de 750 ms depois da criação e apanhava o prestador de pagamentos ainda a sincronizar, que devolvia 404. Uma race condition entre dois sistemas, invisível em testes.
Solução
Pré-check na inserção do token e um índice composto que eliminou os duplicados que já lá estavam. Sobre Lambdas .NET 8, ECS e DocumentDB, sem alterar o fluxo que o cliente vê.
Resultado
Os cartões deixaram de desaparecer e os duplicados ficaram impedidos na origem, sem reescrever a integração nem parar o serviço.

setor público · gestão documental · dnn

Duas décadas de arquivo movidas de cloud para on-prem sem partir um único link

Problema
Uma biblioteca documental publicada desde 2004 num portal DNN, com URLs públicos assentes em filetickets gerados a partir do FileId. Era preciso tirar os ficheiros do blob storage e pô-los no fileserver interno.
Diagnóstico
Qualquer FileId diferente gerava um ticket diferente, ou seja, um link indexado há anos deixava de funcionar. E o storage de origem era partilhado com produção, onde nada podia ser apagado. Mover era arriscado; copiar preservando a identidade, não.
Solução
Cópia mantendo o FileId em vez de mover, e validação ticket a ticket em desenvolvimento antes de tocar em produção.
Resultado
Vinte anos de documentos migrados sem um único link partido e sem indisponibilidade do portal.

energia · workflows · k2

Autorizações de trabalho presas a meio do processo

Problema
Instâncias de workflow K2 bloqueadas a meio, numa plataforma que a operação usa todos os dias e que já ninguém quer tocar.
Diagnóstico
Bloqueios na inicialização de variáveis e mappings a ler o campo da tabela errada. Trabalho pouco vistoso, que exigia perceber a plataforma antes de lhe tocar.
Solução
Correção dos mappings e migrações SQL idempotentes, com rollback, para arrumar as tarefas já criadas.
Resultado
Processos desbloqueados sem substituir a plataforma nem interromper quem depende dela.

Os clientes estão sob NDA, por isso descrevo o setor e a escala e não o nome. Numa chamada consigo ser mais específico.

princípios

Nem tudo precisa de ser reescrito.

  • Nem todo o legado precisa de ser substituído.
  • Nem tudo precisa de virar microserviços.
  • Nem todo o sistema precisa de Kubernetes.
  • Nem toda a aplicação precisa de IA.
  • Primeiro identifico o risco; depois decidimos o que vale a pena mudar.
  • Modernização incremental é quase sempre mais segura do que um big bang.

serviços

Como posso ajudar.

Architecture review

Revisão da arquitetura atual, identificação de riscos e um plano de evolução realista.

Modernização de legado

.NET Framework, WebForms, DNN e monólitos a passar para .NET 8, containers e pipelines — a funcionar durante a migração, não depois dela.

Liderança técnica

Tech Lead para projetos que precisam de alguém que assuma as decisões de arquitetura e as defenda perante a equipa e o negócio.

Investigação em produção

Problemas difíceis de reproduzir ou de perceber, que só aparecem com dados e carga reais.

Migração para cloud

Migração progressiva para Azure ou AWS, por partes, com a operação a correr.

Integração de IA

IA em sistemas existentes, com atenção à segurança, aos dados e ao contexto da empresa.

ia

IA aplicada a sistemas existentes.

Uso IA quando resolve um problema real, não porque está na moda. Modelos locais ou na cloud, consoante o que os dados podem sair de casa. Integração com os sistemas que já existem, automação, e agentes ou workflows quando fazem sentido.

É uma extensão do trabalho em sistemas, não uma mudança de carreira.

sobre

A maior parte do software crítico do mundo é legado.

ERPs, portais do Estado, core bancário, plataformas de telecom. Quase nada disto vai ser reescrito de raiz — vai ser mantido, remendado e evoluído por alguém. É esse o trabalho que faço.

Já o fiz em energia, setor público, banca, telecomunicações e mobilidade: workflows, integrações com SAP e CMS antigos que passaram a ser observáveis e sustentáveis, e mais recentemente a ligá-los a modelos de linguagem.

Base — Alcanena, Santarém · Portugal
Stack — C# · .NET 8 · ASP.NET · SQL Server
Cloud — Azure · AWS · Container Apps · Lambda
Dados — RabbitMQ · MongoDB · ElasticSearch · OpenSearch
Também — DNN · K2 · n8n · Ollama

contactos

Tem um sistema crítico que precisa de mudar sem parar?

Posso ajudar a diagnosticar o problema, definir a arquitetura e executar a mudança. Respondo em português ou inglês, normalmente no próprio dia.