20 anos de Delphi e TMS em um ERP: uma entrevista

Publicado originalmente em: 20 anos de Delphi e TMS em um ERP: uma entrevista | landgraf.dev

Publicamos recentemente no nosso canal do Youtube (inscreva-se lá!) uma entrevista com Alexandre Henzen, Diretor Técnico da Viasoft Korp. A entrevista está disponível através deste link, e logo adiante neste artigo também.

Nessa entrevista, Alexandre fala sobre Viasoft Korpa trajetória da Viasoft Korp, como a empresa começou com apenas uma pessoa e um sistema desktop em C++Builder 6 para se tornar uma fornecedora de sistemas ERP para grandes indústrias brasileiras, fazendo parte de um conglomerado de empresas com mais de 500 funcionários.

Fizeram parte dessa caminhada, de alguma forma, este que vos escreve, Wagner Landgraf, a TMS Software, e a Embarcadero, através do Delphi, ferramenta usada pela empresa há quase 20 anos – dentre outros. Essa entrevista também fala dessa caminhada.

Para aqueles que não apreciam ou não podem assistir vídeos, selecionamos aqui alguns momentos interessantes da entrevista, para que você também possa apreciá-la.

1:46 – Sobre a Viasoft Korp

Wagner Landgraf: O que é a Viasoft Korp?

Alexandre Henzen: A Viasoft Korp é uma unidade de negócios do grupo Viasoft. A Viasoft é uma empresa que fornece sistemas ERP para vários segmentos: agronegócios, supermercados, materiais de construção, entre outros. E a Viasoft Korp desenvolve ERP focado em indústria, além de estarmos atuando também no mercado de distribuição. A Korp começou oficialmente no ano 2000. Nascemos dentro de um grupo industrial chamado Kabel, onde o sistema foi desenvolvido para atender as necessidades internas (da Kabel). No período que a Korp ficou lá dentro a Kabel chegou a ter 1200 funcionários, mais de 400 usuários simultâneos no sistema, então já tivemos que atender uma demanda grande desde o início. (…) Na época o software era em C++ Builder.

A Viasoft Korp desenvolve ERP focado em indústria.

Alexandre Henzen

3:00 – Migrando de C++ Builder para Delphi

WL: Acho que foi um dos poucos ERP que vi na minha vida feito em C++.

AZ: Pois é. Até que chegou uma época que o software demorava quase 6 horas para compilar. Isso em 2004, 2005. E a empresa foi crescendo, incorporando novos colaboradores, o software foi crescendo. Em determinado momento, desenvolvemos um transpiler de C++ para Pascal – com a sua ajuda inclusive, não sei se você se lembra disso – para podermos migrar todo o sistema para Delphi. Com isso ganhamos alguns benefícios que o Delphi nos trazia, como reduzir o tempo de compilação, por exemplo. 

Desenvolvemos um transpiler de C+ para Pascal para podermos migrar para Delphi

Alexandre Henzen

6:47 – Momentos-chave de mudanças na empresa

WL: O que ajudou a Korp a crescer? Quais foram os momentos-chave?

AZ: O TMS Scripter (componente da TMS Software para edição e execução de scripts) foi um grande diferencial para nós. (…) É uma característica de sistemas ERP serem customizáveis, então essa flexibilidade que o TMS Scripter deu pra gente customizar o sistema, (é algo que) em 2001, 2002, não se via muito isso. (…) Os próprios clientes podiam criar telas, até módulos dentro do sistema, (…) e a velocidade (de execução), é praticamente a mesma coisa do código compilado – para o usuário, imperceptível. (…) Isso ajudou a gente a crescer, porque por mais que você queria fazer só software padronizado, sempre vai ter um detalhe ou outro que precisa ser customizado.

A flexibilidade que TMS Scripter deu para customizar o sistema foi um grande diferencial para nós

Alexandre Henzen

9:17 – Uso de ferramenta de workflow

AZ: (Outra decisão importante): Numa época que não se falava em BPM, telas de aprovação de pedido eletrônicos, (usar o TMS Workflow em 2007) também foi um grande diferencial. Você poder desenhar um fluxograma e dizer: “Fulano aprova pedido, se o pedido for maior que X reais para para Ciclano, etc”. (…) Isso faz com que o sistema se torne cada vez mais flexível.

11:08 – A importância de ter qualidade e ser especialista

WL: Você acha que o ERP da Korp cresceu e conquistou mercado principalmente por qualidade técnica?

AZ: Sim, e outra coisa é que somos especialistas. Nós não somos a empresa genérica que atende desde uma farmácia até uma indústria. Então a gente chega na indústria e fala a língua do industrial. (…) Nós atendemos todo o back office que o mercado atende. Contabilidade, fiscal, financeiro, compras, tudo que há nos ERPs de hoje. Só que na parte industrial é que temos os diferenciais e por isso temos conquistado empresas no Brasil inteiro. Desde nossos vendedores até nossos consultores de implantação e equipe técnica, todos vivem e respiram indústria. Que é uma característica da Viasoft, trabalhar com produtos especialistas e não produtos genéricos.

De nossos vendedores a consultores, todos vivem e respiram indústria.

Alexandre Henzen

12:13 – A fusão com a Viasoft

WZ: Como aconteceu a fusão com a Viasoft?

AZ: (A fusão da Viasoft) aconteceu através de um amigo em comum, meu e do Viola (Itamir Viola, CEO da Viasoft), que comentava que nós dois tínhamos uma visão muito parecida de negócios e nos aproximou. Marcamos reuniões, deu uma sinergia, fizemos uma fusão entre as empresas e começamos a alavancar a parte de vendas. Então a Korp, que era só eu (em 2001), hoje tem mais de 70 funcionários só nessa unidade

13:30 – Sobre a Viasoft

WZ: A Viasoft, pelo que entendi tem vários sistemas, cada um para cada segmento e inclusive com nomes diferentes.

AZ: Exatamente, (além da Viasoft Korp, para indústria), tem o Agrotitan que é para o agronégocio, a Forlog que é para logística, tem a Vision que é a parte de computação visual, Construshow para materiais de construção, Viasuper para supermercados, e outros negócios também. Mas sempre nessa ideia de ser especialista em cada segmento.

17:20 – A origem do TMS Aurelius

WL: Bom, fomos amigos e parceiros técnicos nesses anos todos, (nós da TMS) ajudamos muito vocês, vocês ajudaram muito a gente. Ajudamos vocês como você falou: a Korp tinha necessidades técnicas e desenvolvemos e melhoramos soluções pra dar flexibilidade ao ERP, acredito que vocês reduziram bastante o suporte. Mas uma coisa que eu nunca disse em público, vou falar pela primeira vez: se você (que está nos assistindo) usa, gosta do TMS Aurelius (o framework ORM da TMS pra Delphi), agradeça a essa pessoa com quem estou falando: ele não foi somente o primeiro cliente do TMS Aurelius, ele foi a força-motriz que levou o TMS Aurelius a ser desenvolvido. Estamos em 2021 e tem muita gente ainda que não sabe o porquê ou como usar um ORM em seus sistemas. O Alexandre em 2010, já tinha essa visão, de que um ORM iria ajudá-lo. Ele entrou em contato conosco e fizemos uma parceria para desenvolver o TMS Aurelius, pois as bibliotecas ORM existentes para Delphi não o atendiam completamente.

O Alexandre foi a força-motriz que levou o TMS Aurelius a ser desenvolvido.

Wagner Landgraf

20:43 – Escalabilidade e tecnologias

AZ: Todas essas evoluções que buscamos, sempre foi pensando em escalabilidade. Sempre querendo expandir, melhorar código, o ERP sempre crescendo muito, muito complexo. Então todas essas tecnologias vieram para deixar o sistema flexível e escalável. O sistema é enorme. Hoje não usamos só Delphi.

WL: Sim, vamos falar das outras tecnologias usadas pela Viasoft Korp. O sistema começou como uma aplicação desktop cliente/servidor para Windows. Hoje é claro, você tem inúmeros serviços, sistemas web, mobile, integrações, microsserviços. Quais outras tecnologias também estão ajudando a Korp hoje?

AZ: A parte do ERP que é web, por exemplo, optamos por utilizar C# no backend e Angular no frontend. E também utilizamos Golang em alguns microsserviços. Cada linguagem tem seu papel e sua função.

WL: E você também ter que se guiar pelas necessidades da empresa. Alguém pode perguntar, por exemplo: “por que não usou TMS Web Core (o produto da TMS para criar aplicações web com Delphi)?”. Simplesmente porque não existia o TMS Web Core. Quando ele surgiu, a Korp já estava com a parte Web do seu ERP a todo vapor em Angular.

AZ: Exatamente. E também queríamos rodar em Linux, Docker, então foi uma série de fatores para tomarmos nossas decisões.

WL: Tem todas essas ferramentas também. Eu aprendo muito com a Korp quando vou lá. Não só programação, mas toda essa parte de devops. Estão sempre lidando com Kubernetes, Docker, Consul, Traefik…

AZ: A própria parte de testes, foi um framework interno que desenvolvemos, chamado Flow, acho que isso foi uma grande revolução pra nós. Nele escrevemos os códigos de teste, os BDDs e ele sai rodando tudo. Hoje são cerca de doze máquinas virtuais em três servidores que rodam testes 24 horas por dia.

Utilizamos também C#, Angular, Golang. Cada linguagem tem seu papel e sua função.

Alexandre Henzen

23:44 – Testes e qualidade do sistema

WL: Pois é, você comentou das contribuições da TMS Software, como ORM (TMS Aurelius), multicamadas com REST (TMS XData), etc. Mas falando de testes, eu lembro como, muitos anos atrás, vocês (e todo mundo que eu conhecia na época), sofriam com testes e para manter a qualidade do sistema. Vocês tinham pessoas só pra fazer testes manuais, testes de interface, etc. Acredito que essas mudanças (técnicas) ajudaram muito nisso.

AZ: Sim, ERP é um sistema muito complexo. Sem esses novos paradigmas de desenvolvimento isso não seria possível. Hoje temos servidores rodando testes 24 horas por dia, com integração contínua. Usamos o Jenkins, ele vai até o Bitbucket (repositório Git para controle de versão de código), pega as alterações de código, já roda todos os cenários de teste, tudo 100% automatizado.

WL: Então acredito que a TMS te ajudou um pouquinho né?

AZ: Com certeza, toda a estrutura tecnológica que funciona em Delphi hoje é baseada no TMS Business.

Toda a estrutura tecnológica que funciona em Delphi hoje na Korp é baseada no TMS Business

Alexandre Henzen

27:40 – Perfil e tamanho dos clientes

WL: Você comentou que os serviços XData estão processando um grande número de requisições, fale um pouco mais do tamanho dos seus clientes.

AZ: Há os tamanhos mais variados. As empresas variam de 20 a até 500 pessoas usando o sistema simultaneamente. E são empresas com alto volume de movimentação de logística e emissão de notas, são sistemas complexos e pesados. A quantidade de informação que trafega no sistema é gigantesca

28:50 – Sobre as versões recentes do Delphi

WL: E falando do Delphi. Vocês estavam no Berlin (10.4.1), como foi essa evolução?

AZ: Estávamos no Delphi Berlin (10.4.1) e tentamos fazer a migração para novas versões. (O problema é que) a nossa aplicação funciona assim: ela não é um executável somente. Há o executável principal e cada módulo do sistema é um runtime package, uma BPL, (são módulos) que vão carregando dinamicamente conforme o usuário vai usando o sistema. Então é uma estrutura de packages gigantesca, e sempre sofremos um pouco com isso (runtime packages) em vários pontos: detectar memory leaks é mais complicado, recompilar pacotes por causa de dependências é complexo, etc. 

WL: Teve até um problema de atualização do Windows, não relacionado ao Delphi, que atrapalhou bastante vocês, não?

AZ: Sim, teve uma atualização do Windows que simplesmente estragou tudo (Alexandre refere-se a este problema relatado no blog do Marco Cantu). Chegava a demorar mais de cinco minutos só pra inicializar a aplicação. Chegamos ao ponto de voltar a versão do Windows e bloquear as atualizações dos Windows em todas as máquinas da empresa. (…) Depois, nós migramos para o Delphi 10.4 Sydney, a primeira versão (10.4.0). No início ainda tivemos dificuldades com a ferramenta, o próprio LSP (Language Server Protocol, o novo sistema do Delphi para code completion) tinha alguns problemas. E agora com (a atualização para) a 10.4.2, para a qual atualizamos recentemente, teve o grande diferencial – está mais estável, a IDE está compilando mais rapidamente e o feedback que estou recebendo dos programadores é bem positivo.

Desde o XE2, a versão mais estável que eu vi, de todos os tempos, foi essa, Sydney 10.4.2.

Alexandre Henzen

31:39 – A atualização para o Delphi 10.4.2 Sydney

WL: Esse update do 10.4.2 em relação ao 10.4, então, está bem melhor?

AZ: Sim, bem mais estável, nem se compara. Das versões pelas quais nós passamos ao longo desses anos, desde o XE2, a versão mais estável que eu vi, de todos os tempos, foi essa, 10.4.2

WL: Eu lembro que um problema grande que vocês tinham era o tempo de compilação. A compilação para rodar os testes, por exemplo, quanto tempo levava?

AZ: Levava 58 minutos, quase uma hora. Caiu para cerca de 28 minutos somente com a atualização do Delphi. Depois fizemos mais umas mudanças nas configurações dos packages, e caiu para 12 a 14 minutos, dependendo da máquina. Essa parte de runtime packages ficou bem mais estável, foi uma diferença grande. 

A compilação levava 58 minutos, caiu para 12 minutos.

Alexandre Henzen

38:10 – Encerramento e contatos

WL: Alexandre, muito obrigado pela sua disponibilidade em nos dar essa entrevista.

AZ: Obrigado, fico à disposição pra quem quiser fazer contato comigo, tem o meu (perfil no) LinkedIn, só procurar por Alexandre Henzen (acesse aqui) e vamos trocar ideias, sempre gosto de discutir tecnologias e novidades. 

Comente!

Gostou dessa entrevista? Quer compartilhar sua experiência também, com o Delphi, com a TMS Software, as dificuldades da sua empresa? Deixe seu comentário!

(*) Photo by krakenimages on Unsplash