ChatGPT e a evolução da arquitetura de software

Apr 29 2023
Outro dia, conversei com um amigo sobre as tendências atuais da arquitetura de software. Eu inesperadamente me vi dizendo a ela: “Quanto mais código você puder escrever com o ChatGPT, melhor será sua arquitetura.
Foto de Alex Knight no Unsplash

Outro dia, conversei com um amigo sobre as tendências atuais da arquitetura de software. Eu inesperadamente me peguei dizendo a ela: “Quanto mais código você puder escrever com o ChatGPT, melhor será sua arquitetura”. Pode parecer uma afirmação ousada, mas deixe-me explicar. Como um modelo de linguagem de IA desenvolvido pela OpenAI, o ChatGPT revolucionou a forma como escrevo código, com cerca de 30 a 40% do meu código agora gerado por ele. Mas como isso se relaciona com a arquitetura de software e por que isso importa? Vamos explorar a conexão perfeita entre esses dois.

Uma arquitetura de software de última geração deve permitir que o ChatGPT gere código com o mínimo de contexto. É aí que os microsserviços (micro-frontends) se destacam e deixam os aplicativos monolíticos para trás novamente. Ao dividir um sistema complexo em componentes menores e mais focados, os microsserviços tornam mais fácil para o ChatGPT gerar trechos de código relevantes.

Vamos considerar um exemplo. Ao fornecer uma solicitação ao ChatGPT, talvez seja necessário fornecer alguns trechos de código para ajudá-lo a entender o estilo ou as bibliotecas específicas (internas e externas) que você está usando. No entanto, se sua arquitetura já for modular e bem organizada, você precisará fornecer menos código para definir o contexto, tornando mais fácil para o ChatGPT gerar a saída desejada. Por exemplo, se você tiver um microsserviço que lida com a autenticação do usuário, talvez seja necessário fornecer apenas um pequeno exemplo de como sua biblioteca de autenticação está sendo usada. O ChatGPT pode entender rapidamente o contexto e gerar código perfeitamente, integrando-se à sua base de código existente.

Obviamente, o Copilot X, por exemplo, pode usar o contexto do código em seu IDE. Potencialmente, ele pode corrigir o problema com um contexto significativo, mas ainda assim, quanto menos contexto for necessário para resolver uma tarefa, melhores serão os resultados que você deve obter. No entanto, é essencial lembrar que não há garantia de corrigir o problema com código confuso. Portanto, como desenvolvedor, você ainda precisa validar os resultados, enfatizando a importância dos princípios do código limpo nesta era de desenvolvimento orientada por IA.

Contei a outro amigo que uma vez mencionou que não podia usar o ChatGPT porque seu código estava uma bagunça, dificultando o contexto adequado. Nesses casos, bons padrões de design antiquados, como os padrões Strategy, Command ou Chain of Responsibility, vêm em socorro. A aplicação desses padrões ajuda o ChatGPT a entender o contexto e gerar código organizado e modular.

Portanto, a organização adequada do código é crucial ao usar o ChatGPT.

Claro, apenas algumas coisas são tão otimistas. Uma plataforma que gerou alguma controvérsia é a Temporal. Por um lado, o Temporal ajuda você a escrever menos código e focar na lógica de negócios, o que significa menos contexto para o ChatGPT, pois você não precisa explicar quais bibliotecas e métodos internos usar ou escrever uma lógica específica para dar suporte à robustez e confiabilidade dos fluxos de trabalho . No entanto, por outro lado, o ChatGPT deve estar ciente dos princípios e APIs temporais, e isso pode ser problemático se o ChatGPT usar códigos ou dados desatualizados. O potencial para uma incompatibilidade na compreensão pode prejudicar o processo de desenvolvimento orientado por IA.

Por último, mas não menos importante, o surgimento das funções de nuvem, ou lambdas, foi uma combinação perfeita para o desenvolvimento orientado pelo ChatGPT. Essas pequenas unidades independentes de código podem ser facilmente geradas e gerenciadas pelo ChatGPT, simplificando o processo de desenvolvimento e melhorando a arquitetura geral. Na minha opinião, eles são os mais adequados.

Na minha experiência, os melhores resultados são arquivados quando você escreve um pouco de cola no campo de infraestrutura. Por exemplo, você pode facilmente escrever scripts bash que fazem uma equipe complexa (aposto que a maioria de nós tem problemas com a sintaxe do bash). Você pode criar um proxy inteligente para rotear e manipular solicitações de e para sistemas de terceiros que suportam apenas um ambiente de sandbox.

Em resumo, quanto mais código pudermos gerar facilmente com o ChatGPT, melhor será nossa arquitetura de software. Podemos fazer mais adotando microsserviços e funções de nuvem, focando na organização adequada do código e aproveitando ferramentas como ChatGPT e Github Copilot X. Em última análise, o surgimento de ferramentas de desenvolvimento orientadas por IA nos leva a arquiteturas mais modulares e limpas, permitindo-nos construir software melhor para um futuro melhor.