Architecture Decision Record

Active theme: Light

← Exemplos de registros de decisão

Registro de decisão de arquitetura: linguagem de programação Rust

Número da decisão: AR-001

Título da decisão: adoção da linguagem de programação Rust

Data: 1º de dezembro de 2021

Estado: aceito

Declaração do problema

À medida que continuamos a desenvolver aplicações de software, observamos que está cada vez mais difícil mitigar possíveis vulnerabilidades de segurança e evitar erros em tempo de execução. Com as linguagens de programação existentes, como C e C++, continuamos a enfrentar problemas como estouros de buffer, vazamentos de memória e comportamento indefinido que levam a falhas nas aplicações. Precisamos de uma linguagem de programação que ofereça garantias de segurança de memória e seja eficiente o bastante para dar suporte a aplicações críticas em desempenho.

Considerações

Várias linguagens de programação são projetadas para tratar os problemas existentes. Entre elas, a linguagem de programação Rust ganhou atenção significativa da comunidade de desenvolvedores devido às suas características de design singulares. As considerações incluem;

  1. Segurança de memória e proteção

  2. Desempenho e eficiência

  3. Apoio da comunidade e adoção

  4. Curva de aprendizado

  5. Ferramentas e ecossistema

  6. Compatibilidade com sistemas de software existentes.

Restrições

Adotar uma nova linguagem de programação exige retreinar os desenvolvedores, o que leva tempo e recursos. Integrar a linguagem ao fluxo de trabalho de desenvolvimento existente pode ser um desafio. Devemos garantir compatibilidade com os sistemas existentes e evitar mudanças incompatíveis para manter a continuidade.

Implementação

  1. Nossa equipe de desenvolvimento passará por treinamento para aprender e se familiarizar com a linguagem de programação Rust.

  2. Criaremos um novo projeto em Rust, em caráter experimental, para avaliar sua compatibilidade e adequação aos nossos propósitos de desenvolvimento.

  3. Migraremos gradualmente os sistemas existentes escritos em C e C++ para Rust.

  4. Colaboraremos com a comunidade Rust para explorar as ferramentas e bibliotecas disponíveis que possam aprimorar o nosso fluxo de trabalho de desenvolvimento.

  5. Monitoraremos o desempenho do Rust e o compararemos regularmente com o desempenho das linguagens de programação existentes.

  6. Adotaremos uma abordagem de longo prazo que equilibre os custos de treinamento, integração e os benefícios potenciais do uso do Rust.

Justificativa

Adotamos o Rust devido às suas características singulares, projetadas para oferecer garantias de segurança de memória e proteção, mantendo desempenho e eficiência. O robusto sistema de tipos do Rust, o verificador de empréstimos (borrow checker) e os conceitos de segurança de memória o tornam muito adequado para desenvolver aplicações críticas em desempenho e em segurança. Além disso, o Rust tem uma comunidade significativa de desenvolvedores, o que nos permite acessar uma ampla gama de ferramentas, bibliotecas e ecossistema que apoiam o nosso fluxo de trabalho de desenvolvimento. Embora o Rust tenha uma curva de aprendizado, acreditamos que os benefícios de adotá-lo superam os custos e oferecem uma excelente oportunidade de crescimento e inovação contínuos.

Consequências

  1. A adoção do Rust exigirá um investimento significativo de tempo e recursos para treinar desenvolvedores e integrar a linguagem ao fluxo de trabalho de desenvolvimento existente.

  2. Adotar o Rust pode causar algum grau de problemas de compatibilidade com sistemas existentes, exigindo refatoração e modificações.

  3. A adoção do Rust pode aumentar o número de desenvolvedores que podem contribuir para o nosso projeto, ao atrair desenvolvedores Rust que queiram trabalhar em projetos empolgantes.

  4. A adoção pode levar a melhor desempenho, eficiência e segurança em comparação com as linguagens existentes.

  5. Por fim, adotar o Rust traz o benefício potencial de reduzir vulnerabilidades de segurança em nossas aplicações.

Crédito: esta página foi gerada pelo ChatGPT e depois editada quanto à clareza e ao formato.