Qual o segredo do sucesso da empresa?
Essa é uma das perguntas que mais ouço. É claro, não há uma resposta curta. A fórmula para “como fazer o máximo possível e acertar tudo” não é simples. Bem, exceto provavelmente para ganhar na loteria ou repentinamente herdar um milhão. Mas não foi assim que aconteceu comigo. Nosso sucesso pode ser atribuído a diversas causas, principalmente tecnológicas. Hoje, vou falar sobre uma das principais: uma tecnologia fundamental que, por muitos anos, tem nos ajudado a desenvolver produtos revolucionários em todos os tipos de categorias ao mesmo tempo em que garantimos proteção máxima contra todas as possíveis ciberameaças de malwares.
Essa tecnologia se chama “Praga”.
Por quê? Muito simples: foi inventada em Praga.
Na primavera de 1998, reunimos um pequeno grupo para beber cerveja e comer guloseimas tchecas desenvolver a arquitetura de nossos futuros produtos. O encontro de Praga foi extremamente bem-sucedido: produzimos uma nova tecnologia – a Unified Component Architecture (em português, Arquitetura de Componentes Unificados) –, que conecta uma ampla variedade de produtos em todas as plataformas possíveis (sistemas operacionais). A UCA continua em evolução e é o esqueleto de praticamente todas as nossas soluções.
Além disso, a UCA está na mira de outras organizações que encaram o desafio de projetos e desenvolvimentos “multilíngues”, o que é bem comum, especialmente em empreitadas complexas que envolvem várias equipes ou fusão de empresas.
Este ano, nosso “encontro de Praga” completa 20 anos. Percebi isso quando mexi em alguns arquivos e tropecei na “Documentação da Tecnologia Praga”), de 22 de junho de 1998. Naquela época, estávamos preocupados em combater alguns vírus “inovadores” e resolver alguns problemas puramente técnicos com o mecanismo antivírus. A solução que encontramos era muito mais ampla, poderosa e útil. Assim, de muitas formas, a Praga determinou a essência tecnológica dos nossos produtos por uma boa década a seguir.
Como tudo começou?
Lá atrás, quando a empresa estava em algum lugar entre a fase de garagem – no nosso caso, o segundo andar de um jardim de infância em Strogino, distrito de Moscou – e hoje, no escritório envidraçado. Licenciamos nosso mecanismo para alguns parceiros estrangeiros. Já tínhamos uma versão extremamente bem-sucedida chamada Antiviral Toolkit Pro 3.0 no mercado. No entanto, nem tudo eram flores no futuro tecnológico.
https://www.instagram.com/p/Bl_J_y7nJGW/?taken-by=kasperskybr
Pois grandes desafios estavam em nosso caminho: coisas que eram claramente necessárias e prometiam ser muito difíceis de implementar. A primeira era a habilidade de processar objetos suspeitos independentemente de como estavam armazenados (um exemplo típico é a matrioska (boneca russa) de objetos embutidos, ou seja, um malware executável dentro de um arquivo empacotado em outro arquivo). O segundo desafio era criar um mecanismo de antivírus que pudesse ser atualizado o mais rápido possível e exigisse alterações mínimas (idealmente nenhuma) para se deslocar entre plataformas.
Caso alguém tenha esquecido, os criadores de vírus eram muito criativos no final dos anos 90, e algumas das criações totalmente novas exigiam atualizações não apenas das bases de dados, mas também do mecanismo em si. Usuários não tinham conexão com a Internet ou eram extremamente lentas, de forma que entregar uma atualização de apenas alguns megabytes era um problema sério. Tendo em conta que o Windows 98 tinha apenas começado a se expandir e ainda não tinha substituído completamente o DOS, qualquer inovação em detecção precisava trabalhar instantaneamente em ambos os sistemas operacionais.
De maneira geral, havia muito o que pensar quando Alexey De-Monderik, Andrey Kryukov, Andrey Nikishin, Vadim Bogdanov, Larisa Gruzdeva e eu pousamos em Praga por uma semana para um brainstorm. Alugamos uma sala de conferências em um hotel e todos os dias, das 9h às 17h, desenhamos e discutimos – e então íamos para o restaurante e a sala de sinuca para degustar cerveja tcheca e deixar as ideias marinarem.
Trabalhamos produtivamente e voltamos para Moscou com um conceito. De-Monderik anotou nossas ideias, e esse foi o documento que inspirou esta publicação. Aqui está:
Kryukov e Nikishin continuaram à discussão sobre a Praga, mas a criação em si foi em 1999, quando Andrey Doukhvalov se uniu ao time. Sua experiência em desenvolvimento de sistemas ajudou a transformar o conceito da tecnologia em algo mais do que um sistema de plugins para o mecanismo de antivírus.
Na verdade, Praga acabou sendo um sistema modular e orientado para objetos, independentemente desenvolvido, no qual os objetos foram criados e geridos depois que o programa foi lançado, a hierarquia dos objetos observada, e o kernel habilitou funções como gerenciamento de memória e mensagens. Tudo isso se comunicava com o sistema operacional e a interface do usuário por meio de uma camada bastante fina, então era possível escrever quase todo o kernel do antivírus na forma de “plugins Praga”.
Doukhvalov desenvolveu a primeira versão pronta para usar no produto para o AVP 4.0. Ainda não era totalmente reescrita com a Praga, mas as forças da arquitetura já eram aparentes:
- Resolveu completamente o problema do processamento de objetos embutidos. O antivírus do mecanismo Praga foi o primeiro do mercado a recuperar facilmente arquivos comprometidos, por exemplo, ou detectar vírus no limite de volumes de um arquivo multivolumes. Não importava para os módulos de detecção e de tratamento onde o objeto infectado originalmente estava – em qual arquivo, em qual sistema de arquivos, e assim por diante.
- A lógica do mecanismo antivírus era facilmente atualizada com as bases de dados, e não era preciso reiniciar para aceitar a nova lógica.
- Os módulos eram pequenos e facilmente adaptáveis a várias plataformas. Como resultado, a versão 6 do KAV, por exemplo, era facilmente transportada para o Mac.
- Tudo funcionava muito rápido e precisava de uma quantidade mínima de memória; a Praga consumia muito menos recursos do que qualquer outro framework de objetos existente.
Graças ao uso da Praga, estávamos na vanguarda da indústria de TI – a abordagem modular para o desenvolvimento de programas não era tão avançada na época. Depois, até mesmo conseguimos quatro patentes nos EUA: 7386885, 7730535, 7418710, 8234656.
A Praga também era facilmente integrável a códigos escritos em diferentes princípios. Por isso foi inicialmente construída em versão 4.0, mas apenas para resolver uma pequena gama de problemas. Foi tão eficaz que quando outros desafios maiores apareceram durante o desenvolvimento da versão 5.0, Doukhvalov surgiu com a ideia de fazer uma nova solução completamente baseada na tecnologia – e isso levou ao revolucionário Kaspersky Anti-Virus versão 6, que já foi detalhadamente apresentado.
Para transformar um “plugin antivírus” em um framework para a criação de um produto inteiro, algumas abordagens precisaram ser generalizadas e repensadas. As principais forças propulsoras aqui eram Andrey Doukhvalov e Pavel Mezhuev — se não fosse por eles, a Praga não teria sido adequada a tarefas tão complexas.
Naturalmente, nada é perfeito no mundo do desenvolvimento, e havia duas grandes desvantagens.
Em primeiro lugar, resolver os bugs era difícil. Depois, era complicado para os desenvolvedores adotarem. Não importa o ponto-de-vista, era um sistema de objetos recém desenvolvido, que impunha exigências bastante restritas ao desenho do código. Além disso, os módulos inicialmente precisavam ser escritos em C puro. Não era fácil treinar pessoas rapidamente, e precisávamos de mais e mais desenvolvedores conforme a empresa crescia e os projetos se tornavam mais complexos.
Então, como em qualquer outra parte da indústria de TI, a velocidade de desenvolvimento se tornou uma prioridade, e gradativamente tivemos que mudar para frameworks de objetos mais reconhecidos e convencionais. Contudo, os fragmentos baseados na Praga ainda funcionam com sucesso em nossos produtos.
É claro, naquela época, esses obstáculos relacionavam-se puramente a recursos de processos. Podiam e deviam ser resolvidos, já que as vantagens de implementar a Praga superavam consideravelmente e justificavam completamente os recursos gastos. A tecnologia resolveu um dos mais difíceis (e mais caros) problemas que se tornou especialmente relevante nos últimos dez anos – a portabilidade da tecnologia (incluindo a binária) para várias plataformas.
Ao invés de criar um novo produto do zero para cada sistema operacional e processador, usamos um mecanismo para a correção de bugs já pronto. Esse investimento em P&D de longo prazo não penas se pagou completamente, como mantém nossa liderança tecnológica até hoje – a UCA, sucessora da Praga, está sendo usada ao máximo, e ainda não encontramos nenhum problema insolúvel. Essa é mais uma prova de que uma boa arquitetura pode resistir por décadas.
Como Alexey De-Monderik gosta de dizer, a Praga desempenhou um papel muito importante na nossa empresa, e não apenas no sentido tecnológico. Um grupo de pessoas comprometidas se formou naturalmente ao redor do projeto, e mais tarde viriam a ser a equipe dos famosos “Seis”. Então aplausos para o time!
E parabéns por esse inesperado pequeno aniversário da nossa tecnologia principal e extremamente revolucionária!