bom pessoal agora que está muito claro aqui pra gente né o que é um layer agora eu garanto que todo mundo está falando a mesma língua a gente começa a falando da arquitetura a mais básica né que normalmente todo desenvolvedor acaba conhecendo agora uma coisa que é bem interessante né é que você vai perceber que na maioria das vezes você aprendeu isso naturalmente porque a maioria das pessoas trabalham dessa forma e daí eles falam pra você de arquitetura em três camadas e daí você fala ok eu estou trabalhando com três camadas e assim que acontece com a maioria das pessoas o grande ponto é da onde que normalmente vem esses tipos de coisa? Patterns of Enterprise Application Architecture. Legal? Então, agora aqui vamos falar da nossa arquitetura básica de três camadas. Vale a pena a gente revisar isso porque a gente vai avançando, tá? Então, vamos lá. Arquitetura em três camadas, tá? Normalmente, quando a gente está falando na arquitetura em três camadas, a gente está falando de uma camada que é focada em presentation, ou seja, na parte de exibir informações. Então quando a gente está falando em presentation, a gente está falando qualquer coisa que exiba os dados num determinado formato. E é aí que acontece a grande confusão. Quando a gente fala em arquitetura em três camadas, tem gente que já pensa diretamente em MVC, Model View Controller, onde a view é o que mostra a informação. Porém, o que acontece? Muita gente começa também a pensar, principalmente quando trabalhava com MVC lá no passado, normalmente o back-end tinha a responsabilidade também de cuspir o código front-end ou quando você trabalhava sei lá com delphi por exemplo você ia perceber que a exibição dos dados ali na tela também no final das contas era separado na parte de a apresentação porém quando a gente começa a falar em api parece que a gente não tem né a quando a gente começa a falar em api parece que a gente não tem né a quando a gente trabalha com rest a gente não tem apresentação em só está retornando o json e aí que está o puro engano porque porque o json ele no final do dia ele é só mais uma forma de apresentação tá eu poderia estar retornando meu dado utilizando xml ou vamos imaginar que eu estou trabalhando com cá fica e na hora de eu produzir as informações que estão pedindo eu tenho que entregar essas informações de fora diferente de forma diferente então quando estou falando disso eu estou falando de camadas de apresentação a apresentação entenda que ele é o retorno da informação em formatos diferentes. Isso que é importante você falar, você pensar. Então, quando você está retornando a sua querida API REST ali, você está na camada de apresentação, queira você ou não. Beleza? Um ponto importante aqui, como eu disse para vocês. Vamos imaginar que você está utilizando um command line interface, por exemplo, da AWS, da Azure, da Google você coloca a AWS e chama ali para mostrar as regiões o que está acontecendo? Essas regiões são retornadas para você, mas num formato de CLI, por quê? Porque a forma de apresentação é diferente, mesma coisa quando você trabalha com REST, toda HTTP request você vai retornar num formato. Agora, um ponto importante aqui é a apresentação não necessariamente, não necessariamente não, não possui lógica. A apresentação retorna dado. Ela é uma camada, entre aspas, burra. Ela entrega a informação da forma como ela é. Agora, a gente vai para um outro pedaço, para uma outra camada aqui, que é a camada de domínio. E quando a gente fala em camada de domínio aqui, eu não quero que necessariamente você pense em domain driven design ou alguma coisa desse tipo. Eu quero que você entenda que o domínio é o coração da aplicação é onde a mágica acontece tá muita gente dependendo da situação acaba chamando essa camada de application tá mas na realidade não necessariamente é uma camada de aplicação é a camada onde nós trazemos a resolução do problema que a gente vai fazer. Então, se em algum momento você entender application ali, ou domínio, às vezes a gente acaba falando de formas iguais, coisas diferentes. Porém, quando a gente está muitas vezes num contexto de domain-driven design, a gente está falando duas coisas que podem parecer iguais serem diferentes. Porque quando a gente olha dessa forma, uma camada de domínio é diferente de uma camada de aplicação. Mas, normalmente, quando a gente está falando de uma arquitetura em três camadas, a gente pode falar, sim, que nós temos uma camada de domínio ou uma camada de aplicação. Então, essa camada corresponde camada de aplicação então essa camada ela corresponde a o coração da aplicação nela a gente vai ver as regras de negócio ali pra gente tá então ela resolve o problema que veio para resolver mas normalmente para resolver esse problema a gente tem uma camada que a gente chama de data source ou a camada de fonte de dados é a camada onde vai ter acesso aos dados onde a gente consegue pegar dados recuperar dados ou persistir dados aí pra gente trabalhar legal então normalmente quando a gente fala desse tipo de camada a gente está falando de banco de dados mas não somente de banco de dados olha só que interessante a gente pode estar falando aqui de mensageria está escrito errado depois do eu corrijo o slide aqui para você, mas a gente está falando também de uma camada de mensageria. É muito louco porque nós, normalmente, estamos acostumados, dependendo da situação, a trabalhar apenas com banco de dados. Mas, no final das contas, mensageria também traz informações para a gente ou a gente manda informação para ela também. Então, ela também faz parte dessa camada aí de Data Source. Beleza? Então toda vez que a gente falar em arquitetura de três camadas é Presentation, Domain e Data Source. Maravilha? Então vamos seguindo aí.