Bom pessoal, eu falei, falei, falei, por onde começar, por onde não começar, e agora a gente vai falar por onde começar, beleza? E a resposta para isso, pelo menos na minha opinião, e na opinião de muitos profissionais, de grandes empresas inclusive, a resposta está no Middle Out. O que é Middle Out, Wesley? Para que essa essa parada funciona vamos dar uma olhada no slide aqui a seguir tá olha só que interessante o middle out significa que você tem a sua aplicação né e você vai perceber que a sua aplicação normalmente ela tem alguns pedaços assim que são bem claros eu acredito que você olhando aqui, eu acho que vai fazer um pouco de sentido para você. Normalmente você tem na sua aplicação, toda aplicação tem aquele monte de crude sem vergonha que é fácil para caramba de fazer. Aí, normalmente na sua aplicação, ela tem aquela parte que importa, a parte complexa, a regra de negócio, que você vê que a aplicação só existe por conta dessa parte. E você também na sua aplicação, ela tem partes que são detalhes, né? Ah, como que eu configuro, como que eu vou organizar muito bem o meu processo de build, ah, se eu vou usar uma variável de ambiente, ah, como que eu vou guardar alguns detalhezinhos, etc, etc. Normalmente, toda aplicação tem coisas desse tipo então quando a gente pensa em começar ea gente fala em middle altos a gente está pensando em aonde eu vou elaborar mais a minha aplicação por onde ela tem que expandir e por onde ela vai começar a gerar mais valor tá muitas aplicações por incrível que pareça por mais que elas têm muitas regras de negócio extremamente complexas algumas aplicações de cara começam a gerar valor para o cliente pelos cruzes por incrível que pareça você fala meu amigo você tem 10 cadastros aqui diferentes tá começa a cadastrar entrar com seus dados mexer no dia a dia né a cadastro de cliente você busca você olha isso aquilo e tá tudo bem você vai entregar um monte de cruz de logo nas primeiras sprint está gerando valor porque é rápido entregar isso legal por outro lado o que acontece quando você olha dessa forma e você começa a entregar rapidamente pelos cruzes você fala poxa vida o meu cliente ele está cheio de crude e eu vou fazer uma arquitetura decente. Entendeu? E daí quando você vê, novamente, você virou arquiteto de crude. Então, o que você tem que pensar quando você está falando na sua aplicação é o seguinte. Toda vez que você for fazer qualquer tarefa semelhante a CRUD, tarefas extremamente simples na sua aplicação, que não são o core da sua aplicação, você vai fazer uma estrutura simples de arquitetura. Óbvio, você não vai fazer de qualquer jeito, mas você não vai gastar tanta energia em criar um padrão arquitetural ali legal agora conforme você vai ter que entregar tá a coisas que realmente importam que é o detalhe que o coração do negócio no dia zero você já vai começar de forma elaborada galera só de eu falar isso para você, eu não tenho dúvidas que muitas pessoas já vão dar um insight gigante. Caraca, quantas vezes eu não comecei gastando tempo com o CRUDE? Caraca, quantas vezes eu não dei o mesmo peso que eu dou dando para o CRUDE para o coração da minha aplicação? Então, as minhas recomendações aqui para você são o o seguinte o que é o middle out no final das contas middle out no final do dia ele é o foco no desenvolvimento dos componentes core e mais críticos do sistema esse foco ele é importante você não tem que estar preocupado de aí será que eu tô criando uma arquitetura muito rebuscada para isso não tem que estar preocupado você ai será que eu tô criando uma arquitetura muito rebuscada para isso eu não tenho que estar preocupado você tem que criar uma arquitetura bem rebuscado é o coração do sistema entendeu e você tem que ter flexibilidade né se você começar pelo meio do sistema tá ele vai permitir você fazer mudanças e eventualmente substituir ou incorporar novas tecnologias sem precisar mudar o core do sistema. O que acontece? Normalmente, quando a gente está desenvolvendo um software, o maior problema quando você começa a criar o core da aplicação é que você tem tanto acoplamento com vários pedaços do software que fica difícil você trocar os pedaços dele. com vários pedaços do software, que fica difícil você trocar os pedaços dele. Quando você cria uma arquitetura mais elaborada no core, mais fácil é para você quebrar o acoplamento, trocar as peças e incrementar mais a sua aplicação. Entende? Então, na minha opinião, você não tem que ter medo de criar uma arquitetura rebuscada desde que essa arquitetura rebuscada seja no meio da aplicação. Legal? Então, isso vai possibilitar que você trabalhe de forma incremental. E esse trabalho incremental vai ser sustentável. Por quê? Porque as partes simples da sua aplicação você entrega rápido, já gera valor para o cara. Você não gasta muito tempo com elas e manda ver. A parte que importa que é o que vai fazer a diferença no coração da aplicação que é o meio você começa rebuscando pelo meio e aí você consegue crescer de forma sustentável diminuir o número de bugs porque porque o que importa está muito protegido eu não estou dizendo que o seu crude não tem que ter teste. Eu não estou dizendo que o seu crude com aquelas partes simples tem que ser mal feitas. Não! Mas você não vai gastar o mesmo esforço que você vai ter para criar o meio da aplicação. Legal? Uma coisa que você vai perceber também é que uma vez que você começa pelo meio, pela barriga da aplicação, vamos dizer assim, você vai perceber que como você tem essa parte muito bem feita, as partes que começam a plugar na sua aplicação são mais simples. E uma vez que elas são mais simples, você consegue trocá-las facilmente e isso permite com que você escale a sua aplicação. Olha só que interessante. Às vezes você cai numa situação que você não consegue medir, o cliente não consegue medir o quanto ele vai precisar escalar. É um produto que ele não tem dados o suficiente para trás para saber o quanto ele vai precisar escalar. Como que você vai criar uma aplicação sem saber se ela vai ter que aguentar mil ou um milhão de usuários? Porque tem uma grande mudança aí. Mas normalmente essa mudança vem em diversos periféricos, em diversos pedaços que você vai acoplando na sua aplicação. Porque o meio dela é a parte mais estável. E o meio estando mais estável, você não tem medo de mexer o resto. Porque o resto, o que está na borda da sua aplicação, é o que é mais instável. E essa parte mais instável é aquela parte que você troca mais rapidamente e você ajusta, você troca. Agora eu quero Kafka, agora eu quero RabbitMQ, agora eu quero GRPC, agora eu quero HTTP. Não tem problema, isso você troca. Entendeu? Agora o meio da aplicação é o momento onde você consegue estabilizar o sistema. Se você consegue estabilizar o sistema ali Se você consegue estabilizar o sistema ali, para fazer essa aplicação escalar, é mais fácil. Entendeu? Porque se toda vez que você precisar um pouco mais de escala, você tiver que começar a mexer muito e mudar a arquitetura interna ali, você vai ter um grande problema. Legal? E eu acabei meio que falando isso indiretamente. Menor complexidade na integração com outros sistemas, tá? Você precisa integrar com outros sistemas, o core da sua aplicação não vai estar acoplado, então você vai integrar pelas bordas da sua aplicação, entende? Tudo muda quando você começa a crescer pelo meio. Então pense em nível de elaboração de arquitetura. Seja rápido nas pontas, seja rebuscado no meio. Não tenha medo, pelo menos na minha opinião, de começar no dia zero com uma puta, de começar no dia zero com uma puta, desculpe a palavra, desculpe o meu português, mas com uma boa arquitetura no meio da sua aplicação. Não tenha medo. Agora, nessas outras partes, vai na fé. Legal? Então, não existe arquitetura prematura no middle out. O coração do software, regras de negócio, sempre terão que possuir a melhor arquitetura possível. As partes periféricas de suporte da aplicação não necessariamente vão ter que ter o mesmo peso. Legal? Galera, eu espero que essa parte de middle out consiga te ajudar e gerar valor para hoje no sistema que você está trabalhando olhe para os sistemas que você está trabalhando veja se você está dando o mesmo peso para a barriga da sua aplicação que é ou pelas extremidades que você está trabalhando você vai se surpreender com o que você já fez até hoje beleza então é isso aí meu povo