Bom pessoal, no vídeo anterior a gente falou sobre API Design, mas agora eu quero pensar e fazer junto com você o System Design. A gente criou esses caras aqui, todos em conjunto, com a operação principal e ficou claro, mas agora eu quero fazer contigo tá essa parte do sistema design utilizando um cloud provider tá e o porquê que eu tô dizendo isso a gente vai fazer isso a baseado na aws caso nós fôssemos implementar isso utilizando a solução serverless, a solução serverless da Microsoft. Não a Microsoft, não. Da AWS, tá? Então, o que eu vou fazer aqui? Eu vou colocar aqui embaixo, tá? Vou chamar de System Design e vou colocar assim, serverless. Legal? E agora a coisa é diferente, porque agora eu não estou mais com aquela visualização apenas de operação. Eu estou agora com a visualização de como isso vai se comportar dentro de uma infraestrutura. Entende? E nesse caso, a infraestrutura que a gente vai utilizar vai ser totalmente serverless. Então vamos pensar isso aqui em conjunto, galera. Novamente, eu tenho os meus usuários. Esses meus usuários vão utilizar o sistema aqui para a gente. Legal? E para ele acessar o sistema, fazer a chamada aqui para a gente, ou ele vai fazer uma ordem ou ele vai pegar os dados para ler um ticket. Legal? Então, o que nós vamos fazer aqui? Para que ele consiga bater nesse tipo de solução, ele precisa de um portão de entrada. Correto? E esse portão de entrada aqui para a gente vai ser uma API Gateway. Legal? Ou seja, ele vai bater na nossa API Gateway aqui. Deixa eu colocar aqui, API Gateway. Legal? Ou seja, ele vai bater na nossa API Gateway aqui. Deixa eu colocar aqui, ó. API Gateway. Ele vai bater aqui nessa nossa API Gateway. E quando ele bater na nossa API Gateway, ele vai... entrar aqui na operação do nosso sistema. Legal? É assim que vai acontecer. E no caso da AWS, a gente tem a AWS API Gateway. O que vai acontecer agora? Se ele está querendo comprar alguma coisa, o que eu vou fazer? Eu vou pegar um serviço aqui, e eu vou chamar o nome desse meu serviço de PlaceOrder, que vai ser uma função, uma Lambda Function. Essa minha Lambda Function, o que ela vai fazer? Ela está ligada diretamente a um banco de dados, que vai ser as minhas ordens de serviço. As minhas ordens de serviço as minhas ordens aqui pra mim legal ficar aqui eu vou diminuir até para não ficar tudo muito grande gente Ela é a, hein? Aqui, as minhas orders. E aqui eu tenho o meu place order também, que eu vou diminuir para as coisas não ficarem muito grandes aqui para a gente. Tá? Place order aqui para a gente. E esse cara aqui, né? Então, a gente tem essa relação do PlaceOrder chamando esse nosso banco de dados. Legal? Show de bola! Então quando alguém faz alguma compra ele bate e cai nessa nossa função. E quando essa função bate aqui nessa função, o que vai acontecer no final do dia? Essa função, ela vai ter que seguir um processo. Qual que vai ser um dos processos que ele vai ter que seguir um dos processos aqui vai ser o seguinte ele vai ter que pegar o ticket aí de colocar get ticket aí de o que esse cara faz no final das contas? Sem o ticket ID, eu não consigo trabalhar. Mas, ao mesmo tempo, aqui também, o que que eu preciso fazer? Eu preciso pegar o quê? Fazer o pagamento, né? Então, eu vou colocar aqui, ó, make payment. Então, eu tenho essa outra função pra fazer o pagamento, e ela bate aqui pra mim também. Legal? E todas as vezes que eu quiser enviar o e-mail quando eu precisar, o que eu vou fazer? Eu vou ter o meu e-mail topic aqui. Legal? e-mail, topic aqui, legal? Ou uma fila de e-mail, pode ser e-mail queue, ou e-mail topic, que o que vai acontecer? O Place Order vai mandar o dado para cá, legal? E eu vou ter uma outra função aqui para mim, que é uma função de send e-mail. Olha só que maneiro, galera. Totalmente serverless essa parada aqui. E agora, esse cara manda essa informação para uma função ou algum outro sistema desse tipo. Esse cara aqui, do getId, ele é um que velho store aqui né legal? e o que vai acontecer? o id ticket pega os dados nesse key value store aqui pra gente legal? mas pra esse cara funcionar dessa forma, o que que a gente precisa ainda? a gente precisa gerar os ids desse ticket, então o que eu posso fazer? eu posso ter uma função aqui que vai ser generate ticket id colocar aqui pra dentro e essa função o que ela faz simplesmente? ela fica gerando esses tickets de tempos em tempos jogando nessa nossa aqui, Value Store legal? mas como isso vai funcionar como uma espécie de um macron que de tempo em tempo ele acessa verifica se ele tem que gerar mais ou menos porque os tickets, as paradas vão estar pré geradas eu vou falar que esse cara aqui ele é acionado por um relógio tá isso aqui era pra ser um relógio tá galera colocar dessa forma aqui legal então é uma função que tem uma espécie de crom. Toda hora que ele gera um ticket novo, o que a gente vai precisar no final das contas é um bucket que, como resultado, ele vai gerar um QR Code aqui para a gente, nesse formato aqui. Legal? Então eu vou colocar aqui um QR Code Bucket que a gente vai precisar. que a gente vai precisar então toda vez que ele gerar os tickets ele joga o qr code gerado num bucket aqui no caso aqui da s3 na quem está trabalhando com a ws ele está lá e até difícil em show de bola e o nosso e mail ele está relacionado com uma base relacional batendo aqui pra gente né Aqui de e-mails. Aqui para a gente. E é isso, galera. Olha só que interessante. Com isso aqui, deu para a gente ter uma ideia de como a gente poderia fazer. Os nossos orders não ficou legal, né? Bom, deu para a gente ter uma ideia de como que a gente faria para ter uma solução dessa, serverless, tá? Simplesmente uma função chamado a outra, trabalhando como se fossem micro serviços. Mas no final das contas, são Lambda Functions que vão sendo geradas aqui para a gente. Legal? Então, é uma solução que, de uma forma geral, é fácil de entender. Você bate o olho, vê como é que as coisas funcionam aqui. Legal? Outra coisa importante é que eu não tenho apenas essa função. Eu posso ter outra função aqui embaixo, que é a nossa get ticket, né? Que vai mostrar o ticket quando o ticket for chamado. Então, eu posso chegar aqui e esse cara chama esse Get Ticket e está tudo ok. Esse Get Ticket, inclusive, vai chamar as opções e vai ler os dados aqui desse bucket aqui para a gente, inclusive. Eu não quero fazer uma chamada direta, mas eu poderia sim colocar alguma coisa desse tipo. Quando eu chamo esse ticket, as coisas funcionam dessa forma aqui. Então, o get ticket pode sim ter acesso aos tickets que foram gerados, ou no final do dia, o ticket id então a gente consegue ir trabalhando com esse tipo de solução bacana pessoal tá aqui uma ideia pelo menos um esboço que quem olha consegue entender de como as coisas funcionam no place order pega o ticket id faço o pagamento mando um e, quando eu pego o ticket ID, eu consigo acessar as coisas pelo ticket ID, ou seja, esse cara do ticket ID, provavelmente ele vai ter, ele pode acessar, por exemplo, ou um banco de dados de order, ou ele pode ter o seu próprio banco de dados, nesse caso, que ele vai sendo preenchido de acordo com as ordens que vão sendo geradas. Isso pode também acontecer. Ou seja, eu faço um sincronismo nesse banco de dados conforme as ordens vão sendo geradas. Então, isso também dá para a gente fazer. De qualquer forma, galera, espero que você tenha entendido pelo menos a idéia geral de como que os componentes eles se relacionam né e perceba a gente chegou nessa modelagem aqui partindo do princípio que nós iríamos utilizar esse modelo aqui que iria nos ajudar. Legal? Então, espero galera que vocês tenham curtido essa parte aqui. Agora, no próximo vídeo, a gente vai falar um pouco sobre métricas e monitoramento. Vamos nessa então.