00:00:00
fala ar tudo 100% com você no conteúdo
00:00:03
de hoje nós vamos falar sobre diagramas
00:00:05
de sequência e você vai sair daqui
00:00:07
aprendendo os pró os contras Por que que
00:00:09
você precisa saber fazer um diagrama de
00:00:12
sequência hoje em dia mais do que isso
00:00:14
você vai aprender todos os conectores de
00:00:16
um diagrama de sequência vai aprender
00:00:18
também como fazer um diagrama de
00:00:20
sequência naqueles modelos um pouquinho
00:00:22
mais tradicionais que a gente aprende lá
00:00:23
na faculdade e o modelo mais voltado
00:00:26
pros projetos pras aplicações dos dias
00:00:29
de hoje hoje Bacana Então bora pro
00:00:42
conteúdo aqui caso você ainda não me
00:00:44
conheça muito prazer eu me chamo Carlos
00:00:45
pizani E este aqui é o seu canal de
00:00:48
arquitetura de ti e caso você ainda não
00:00:49
seja inscrito aqui no nosso canal fica o
00:00:52
convite de você se inscrever por aqui
00:00:54
porque eu lanço conteúdo como esses com
00:00:55
uma grande frequência e você não pode
00:00:57
ficar de fora bacana bem então vamos
00:01:00
começar a falar sobre diagramas de
00:01:02
sequência aqui um diagrama de sequência
00:01:04
ele pertence à notação
00:01:07
uml caso você não tenha visto o nosso
00:01:10
conteúdo sobre o ML ou não saiba o que é
00:01:12
o ML nós fizemos Ok um vídeo já desta
00:01:16
série sobre diagramas da uml explicando
00:01:18
um pouquinho mais sobre o que que é uma
00:01:20
anotação tá bom fica o convite de você
00:01:22
assistir depois desse conteúdo vou
00:01:24
deixar o link tanto na descrição como
00:01:26
aqui no no card deste vídeo tá bom para
00:01:29
você assistir posteriormente a este
00:01:31
vídeo e só para você ter clareza o ML é
00:01:34
a anotação mais conhecida que existe ela
00:01:37
é muito popular ela foi muito
00:01:38
disseminada nos últimos 30 anos ensinada
00:01:42
em todas as Universidades e é muito
00:01:44
comum no dia a dia a gente ver ali
00:01:46
diagramas da uml sendo utilizadas pra
00:01:49
explicação de negócio pra explicação de
00:01:52
como funciona uma aplicação e de cara é
00:01:55
por isso que é importante você conhecer
00:01:56
diagramas de sequência os diagramas de
00:01:59
sequência eles servem fundamentalmente
00:02:01
para E adivinha ilustrar
00:02:05
sequências e o que que eu estou querendo
00:02:07
dizer com
00:02:09
isso ele ajuda na modelagem dos sistemas
00:02:12
tá e identificando mostrando pro pro pro
00:02:16
desenvolvedor ou para quem quer que
00:02:18
venha fazer ali uma aplicação Qual que é
00:02:20
a ordem Qual que é a sequência a
00:02:22
passagem de bastão entre uma caixinha e
00:02:24
outra tudo bem então era muito comum a
00:02:27
gente representar um caso de uso né a
00:02:30
gente tinha o desenho de um diagrama de
00:02:31
caso de uso em cima do diagrama de caso
00:02:34
de uso era feito ali por exemplo a
00:02:36
sequência da passagem de bastão dentro
00:02:38
do sistema entre as camadas do sistema
00:02:41
até chegar por exemplo lá no banco de
00:02:44
dados Então se tinha ali a visão do
00:02:46
processamento todo acontecendo aonde que
00:02:49
ficava cada regra de negócio né Em que
00:02:50
parte e também se tinha ali uma visão
00:02:53
Clara dos componentes que eram
00:02:55
utilizados então se eu utilizava ali um
00:02:57
banco de dados se eu utilizava um uma
00:02:59
ferramenta por exemplo onde eu tinha ali
00:03:01
persistência de arquivos um F server um
00:03:04
FTP por exemplo né ou outro componente
00:03:07
desse tipo tá então era muito comum se
00:03:10
usar para isso e hoje em dia a gente tem
00:03:12
mais complexidade mais caixinhas O que
00:03:15
faz o diagrama de sequência em alto
00:03:17
nível né Um pouquinho mais alto nível
00:03:19
ser muito útil também e antes de irmos
00:03:22
lá pro meu iPad onde nós vamos ver um
00:03:24
diagrama de sequência entender todos os
00:03:26
conectores entender como funcionava
00:03:28
Antigamente os desenhos de diagrama de
00:03:30
sequência e como funcionam hoje em dia
00:03:33
vamos falar um pouquinho sobre os prós e
00:03:35
os contras de você entender conhecer e
00:03:37
trabalhar também com diagramas de
00:03:39
sequência o primeiro ponto pro é que nós
00:03:42
temos clareza de como vai funcionar a
00:03:45
sequência das coisas a visualização da
00:03:47
interação entre todos os componentes que
00:03:50
é o grande propósito do diagrama de
00:03:52
sequência então nós temos essa visão
00:03:54
muito clara o que facilita e facilita
00:03:56
muito depois no futuro em uma manutenção
00:03:58
ou até mesmo no momento da construção
00:04:00
para entender como vai funcionar a
00:04:02
interação entre os objetos a segunda
00:04:05
grande vantagem é que ele apoia e apoia
00:04:07
demais na especificação de um sistema na
00:04:11
modelagem de um sistema então quando o
00:04:13
nosso analista de de sistemas ou
00:04:16
analista ali de negócio representa o
00:04:19
negócio em um diagrama de sequência fica
00:04:22
muito mais claro para quem vai
00:04:23
implementar como funciona a regra de
00:04:25
negócio a sequência da regra de negócio
00:04:28
acontecendo nos mais diversos
00:04:30
componentes que nós temos dentro de um
00:04:32
sistema e o terceiro grande ponto
00:04:34
positivo é que um Diagrama como este
00:04:36
ajuda na colaboração e na comunicação
00:04:39
entre os integrantes de um time por
00:04:41
exemplo isso porque fica bem claro né
00:04:43
como a gente já falou toda a regra de
00:04:45
negócio a sequência em que o negócio
00:04:47
acontece e em uma visão gráfica tudo
00:04:49
fica mais fácil quando a gente desenha
00:04:51
né como já tem aquele velho editado né
00:04:54
não está claro desenha e um desenho fica
00:04:57
muito mais fácil e fica mais divertido o
00:04:58
trabalho em beleza porque você consegue
00:05:01
entender melhor fica mais suave ali a a
00:05:04
o entendimento do software a
00:05:06
documentação do software quando está
00:05:08
tudo só escrito texto texto texto muitas
00:05:11
vezes desencoraja as outras pessoas os
00:05:13
desenvolvedores os colaboradores a ler e
00:05:15
entender e um diagrama tudo fica mais
00:05:18
intuitivo né o diagrama ele Convida os
00:05:21
profissionais ali A interpretá-lo então
00:05:23
por isso é uma grande vantagem trabalhar
00:05:26
sempre com diagramas e o diagrama como
00:05:28
esse que é super conhecido mais ainda e
00:05:30
quais são os contrapontos de se
00:05:32
trabalhar com um Diagrama como esse o
00:05:33
primeiro deles é a complexidade Por que
00:05:36
que a complexidade pizani embora o
00:05:38
diagrama ele seja relativamente simples
00:05:40
à medida que eu tenha um caso de uso ali
00:05:42
complexo para ser representado vão
00:05:44
ficando muitos elementos e acaba ficando
00:05:46
até um pouquinho difícil de você ler se
00:05:49
você não tiver ali impresso o seu
00:05:51
diagrama em uma folha ali a zero por
00:05:54
exemplo Tá eu já vi diagramas de
00:05:56
sequência precisar ser impressos
00:05:58
literalmente em uma folha a zero bem
00:06:00
grande colocado ali numa parede para
00:06:02
ficar claro era no caso um motor de
00:06:05
regras e era muito complexo tinha muito
00:06:07
interações e aí foi necessário colocar
00:06:10
em um em um em uma folha né a zero
00:06:13
colado em uma parede Então esse acaba
00:06:15
sendo um grande problema desse tipo de
00:06:17
diagrama porque você precisa ter uma
00:06:20
visão do topo do diagrama para você
00:06:22
conseguir entender o que tá está
00:06:24
acontecendo lá embaixo muitas vezes lá
00:06:26
nas últimas linhas dele lá no finalzinho
00:06:28
dele tá bom ele é lido sempre da
00:06:30
esquerda paraa direita e de cima para
00:06:32
baixo então por isso eh e como ele tem
00:06:35
trabalha com timelines a gente já vai
00:06:37
ver isso também lá no meu iPad Acaba
00:06:39
ficando um Pouquinho complicado mesmo a
00:06:41
leitura Se você não conseguir dar um
00:06:43
zoom ali toda hora ficar dando Zoom né
00:06:45
para ver o começo e o final do diagrama
00:06:47
Beleza o segundo ponto negativo é a
00:06:49
manutenção um Diagrama como esse pode
00:06:51
ficar muito complexo para ser mantido
00:06:54
isso porque como nós falamos se ele
00:06:55
tiver muitos elementos ali tiver muitas
00:06:58
passagens de bastão então fica realmente
00:07:00
complicado depois no futuro à medida que
00:07:03
você evolui o seu sistema por exemplo
00:07:05
alterar o seu diagrama de sequência
00:07:07
alteração dele por si só já é um
00:07:09
pouquinho complicada tá bom porque
00:07:11
imagina que eu preciso colocar um passo
00:07:12
ali no Meio do meu diagrama de sequência
00:07:14
de um grande diagrama de sequência Poxa
00:07:16
ter que puxar tudo para baixo colocar
00:07:19
ali no meio fazer os links é complicado
00:07:22
fazer manutenção em um diagrama simples
00:07:25
não mas em um diagrama complexo grande é
00:07:27
complicado e o terceiro ponto cont desse
00:07:29
tipo de diagrama é que ele é muito bom
00:07:32
para detalhar ali uma uma iteração
00:07:34
específica a sequência de acontecimentos
00:07:37
específica pequenininha mas ele não é
00:07:39
bom para você detalhar uma visão de alto
00:07:41
nível por exemplo de como funciona uma
00:07:43
arquitetura como um todo ele não é ideal
00:07:46
para isso beleza legal então agora
00:07:47
chegou a hora de irmos lá pro meu
00:07:49
computador onde eu vou mostrar para você
00:07:50
os conectores e como funciona esse
00:07:52
diagrama Bacana Então bora lá legal
00:07:55
então agora aqui no meu iPad vamos falar
00:07:56
sobre os conectores e os elementos do
00:07:58
diagrama de sequência bacana bom o
00:08:02
diagrama de sequência ele é composto
00:08:04
fundamentalmente por timelines que são
00:08:07
esses risquinhos aqui que a gente tá
00:08:09
vendo tá bom e por elementos como esse
00:08:11
aqui na ponta do do da nossa timeline Tá
00:08:15
bom então a gente tem a timeline aqui e
00:08:17
nós temos aqui na ponta o grande
00:08:20
elemento que nós temos o o o ator o
00:08:23
objeto e por aí vai tá bom o primeiro
00:08:25
elemento é esse aqui que nós estamos
00:08:27
mostrando que é o o nosso user aqui
00:08:31
beleza o user aqui ele serve para
00:08:33
representar o nosso ator do caso de uso
00:08:37
beleza é alguém que vai fazer algum tipo
00:08:39
de interação com o nosso sistema esse é
00:08:41
o nosso eh usuário user aqui ou ator
00:08:45
Beleza então sempre que tivermos aqui o
00:08:47
papel a figura do usuário né ou do ator
00:08:49
lá do caso de uso é assim que a gente
00:08:51
representa aqui no diagrama de sequência
00:08:54
beleza Lembrando que sempre precisa ter
00:08:56
aqui e eh essa linha riscadinha que é a
00:08:59
timeline ela vai né até onde o usuário
00:09:02
tiver eh interações ali com o sistema
00:09:04
até onde tiver comandos desse usuário no
00:09:07
sistema daqui a pouquinho a gente fala
00:09:09
como funciona tá essa parte de comandos
00:09:11
do nosso usuário por hora é importante
00:09:13
entender que tem a timeline aqui né a a
00:09:16
linha da vida nossa aqui e a gente tem
00:09:18
os elementos na ponta o primeiro deles é
00:09:20
o nosso usuário na sequência nós temos
00:09:22
aqui a nossa boundary e o que que é a
00:09:25
boundary a boundary ela é um elemento
00:09:27
que serve para representar interfaces
00:09:30
por exemplo tudo bem interação direta
00:09:32
ali com o nosso usuário é para isso que
00:09:35
ela serve basicamente é um elemento que
00:09:37
representa telas ap apis a gente pode
00:09:40
representar hoje em dia tá E por aí vai
00:09:42
tudo que tiver eh interface com atores e
00:09:46
também pode ser ali com outros sistemas
00:09:48
beleza na sequência nós temos o o
00:09:52
control tá eh muito utilizado para
00:09:54
Controller esse carinha aqui ele serve
00:09:57
para representar a interação dentro de
00:09:59
um sistema o nosso Core tá a parte
00:10:03
interior ali De repente de um sistema
00:10:05
como o elemento anterior era interface
00:10:07
esse aqui que poderia ser a tela tá
00:10:09
literalmente esse aqui representa o
00:10:11
núcleo daquela aplicação o centro aonde
00:10:14
o vai ser processada a informação ali
00:10:17
dentro do nosso sistema dentro dele aqui
00:10:19
nós temos um exemplo de um elemento aqui
00:10:22
que representa literalmente o o tempo de
00:10:26
execução dentro do nosso da nossa time
00:10:29
Line tá e nós temos aqui também a self
00:10:32
Call essa self Call ela serve aqui para
00:10:35
representar o nosso uma mensagem que
00:10:38
acontece dentro dessa timeline uma
00:10:40
interação entre a a timeline Nossa aqui
00:10:43
né O que está acontecendo aqui nesse
00:10:45
espaço de de tempo eh com ele mesmo as
00:10:48
interações que estão acontecendo aqui
00:10:50
dentro então lógico isso aqui você vai
00:10:51
colocar em Alto Nível não é cada linha
00:10:53
de código que a gente representa mas a
00:10:55
gente consegue colocar o que é mais
00:10:57
importante ah faça uma validação eh de
00:10:59
senha validação do usuário eh validação
00:11:03
enfim de alguma regra de negócio que
00:11:04
seja muito relevante tá a gente
00:11:06
representa assim dentro da nossa própria
00:11:09
eh timeline tá com uma mensagem que é
00:11:12
apontando aqui dela para ela mesma né E
00:11:15
aí a gente tem esse segundo carinha aqui
00:11:18
que é literalmente né uma segunda
00:11:20
timeline Zinha ali um segundo obje tenho
00:11:23
de de de espaço de tempo né em cima do
00:11:26
outro aqui tá bom bem daí na sequência
00:11:30
nós temos aqui o elemento entity Para
00:11:33
que serve esse elemento entity aqui esse
00:11:36
elemento ele serve para representar o
00:11:38
que é persistido no banco de dados então
00:11:40
ele representa ali uma tabela uma
00:11:43
coleção tá um elemento de dados um
00:11:46
objeto de dados é isso que esse elemento
00:11:48
representa tá bom e por fim mas não
00:11:50
menos importante que é mais utilizado em
00:11:52
um diagrama de sequência nós temos aqui
00:11:54
e o nosso elemento Object para que que
00:11:58
serve esse carinha aí esse carinha que
00:11:59
ele serve para representar todo e
00:12:01
qualquer objeto que eu tenha dentro do
00:12:03
meu sistema é possível também
00:12:05
representar outras coisas que sejam por
00:12:07
exemplo eh elementos que eu tenha fora
00:12:10
do meu sistema diretamente como por
00:12:13
exemplo uma ferramenta de fila ou uma
00:12:15
outra ferramenta um outro componente
00:12:17
arquitetural né que compõe ali o nosso
00:12:20
desenho e que faça parte dessa sequência
00:12:22
de de ações que acontec ali para
00:12:25
resolver um negócio por exemplo tá bom
00:12:27
Um caso de uso beleza bem então passamos
00:12:29
aqui pelos nossos elementos Vamos falar
00:12:31
agora sobre os conectores ar que os
00:12:33
conectores eles vão servir para fazer a
00:12:35
interação entre os elementos entre as
00:12:38
timelines que a gente mostrou tá E
00:12:40
também deixar claro como essa
00:12:42
comunicação vai acontecer tá bom se ela
00:12:44
vai ser síncrona síncrona C retorno
00:12:47
beleza é para isso que os conectores
00:12:49
basicamente servem nesse tipo de
00:12:51
diagrama bem o nosso primeiro conector
00:12:53
aqui é a mensagem tá e a mensagem ela
00:12:58
serve literalmente para dizer que
00:13:00
aconteceu a comunicação entre um
00:13:03
elemento e outra de forma síncrona
00:13:05
beleza esse elemento com esse risquinho
00:13:08
contínuo que está aqui ele indica isso
00:13:11
tá é esse risquinho com essa setinha
00:13:14
aqui inteira tá 100% preenchida indica
00:13:18
isso indica que a gente fez a passagem
00:13:20
de bastão de um lado pro outro entre um
00:13:22
elemento e outro isso pode acontecer na
00:13:24
direção contrária da direita paraa
00:13:26
esquerda pode tá bom eu posso estar
00:13:29
tendo a mensagem disparada da esquerda
00:13:31
pra direita ou da direita pra esquerda
00:13:33
sem problema nenhum é ida ou volta né de
00:13:36
requisição Se isso for verdade ok isso
00:13:39
que é importante que eu tenha a
00:13:41
requisição efetivamente acontecendo o
00:13:43
que não é muito típico né normalmente eu
00:13:46
tenho o elemento da esquerda fazendo a
00:13:49
requisição pro elemento da direita e
00:13:50
assim por diante Esse é o é o o fluxo
00:13:53
natural Mas pode acontecer o que pudesse
00:13:56
talvez até mesmo representar um problema
00:13:58
de depend circular essa ida e volta tá
00:14:01
bom de um elemento chamando diretamente
00:14:04
o outro normalmente é com outro conector
00:14:06
que a gente coloca ali essa volta essa
00:14:09
resposta da mensagem bem mas como eu
00:14:11
disse é amplamente possível que tenhamos
00:14:14
esse tipo de de conector ele funcionando
00:14:18
dessa maneira bom vamos pro segundo
00:14:20
conector agora nós temos aqui o o nosso
00:14:24
conector de mensagem assíncrona tá que é
00:14:27
este aqui no caso Ele é igualzinho o
00:14:31
nosso elemento anterior só que o que
00:14:33
muda Aqui nós temos aqui uma pontinha ó
00:14:36
que é aberta ela não é preenchida tá nós
00:14:39
temos a pontinha aberta do nosso do
00:14:41
nosso conector isso indica que é uma
00:14:45
conexão é uma mensagem assíncrona Ou
00:14:48
seja que eu não vou ficar esperando ter
00:14:50
a resposta Então nesse caso a nossa eh
00:14:53
nosso obje temho ali de time né de
00:14:56
Lifetime ele ele é reduzido tá eu eu
00:14:59
demonstro que o tempo meu foi só na
00:15:01
requisição e eu não tenho que ficar
00:15:03
esperando ali vir a resposta então eu
00:15:05
diminuo esse tempo de de espera tá bom o
00:15:09
tempo de espera nosso ele morre
00:15:11
praticamente na requisição Ok então é
00:15:14
para isso que serve esse elemento para
00:15:16
indicar uma requisição assíncrona chamei
00:15:19
e deixo para lá né Daqui a pouco eu vou
00:15:22
lá e vejo se eu tenho uma resposta né ou
00:15:25
então espero essa resposta acontecer de
00:15:27
alguma maneira talvez eh através de
00:15:29
alguma coisa no banco de dados é algo
00:15:31
que eu não preciso ficar esperando eu
00:15:33
fiz a requisição e solto a resposta
00:15:36
depois se deu certo ou não não é algo
00:15:38
que eu vou me preocupar agora beleza bem
00:15:41
e aí por fim nós temos aqui o nosso
00:15:44
objeto o nosso conector de retorno o
00:15:48
nosso objeto de retorno aqui né o nosso
00:15:49
conector de retorno ele serve
00:15:52
literalmente para responder uma
00:15:54
requisição tá e funciona para síncrono
00:15:57
ou assíncrono a resposta assíncrona
00:15:59
também ah estaria Ok faltou falar tá que
00:16:03
muitas vezes no caso da mensagem
00:16:05
assíncrona aqui faltou explicar isso
00:16:08
aqui nós temos essa setinha pela metade
00:16:11
é comum ver isso também tá a setinha só
00:16:13
com a parte de cima sem a parte de baixo
00:16:15
então só com a parte de cima ou seja
00:16:18
assim né Deixa eu colocar aqui uma
00:16:20
representação de como ela ficaria mais
00:16:21
ou menos assim tá bom a a setinha dessa
00:16:24
forma aqui também representa eh um
00:16:27
conector assíncrono faltou V falar isso
00:16:29
aí
00:16:30
eh e aí no caso do retorno como nós
00:16:33
estamos falando ele é traçadinho né E
00:16:37
tem aqui a nossa ponta aberta tá é dos
00:16:40
dois lados é em cima e embaixo né se
00:16:41
colocar só em cima eh vai ter ali a
00:16:44
conotação de que é assíncrono e fica
00:16:46
incorreto no caso de eh mensagem de
00:16:48
resposta tá porque a mensagem de
00:16:50
resposta ela é síncrona e acabou não tem
00:16:52
como ela ser diferente tá bom então
00:16:55
esses são os conectores que nós temos
00:16:58
bem simples e agora chegou a hora de
00:17:01
falarmos de vermos né E esse Diagrama
00:17:05
como que ele funciona ele em Ação Bora
00:17:07
lá bacana Aqui nós temos então um
00:17:09
diagrama que representa um fluxo de
00:17:11
login beleza é um fluxo bem simples mas
00:17:15
vai ficar claro como funciona o nosso
00:17:17
diagrama de sequência então Observe que
00:17:20
antes de mais nada nós temos aqui o
00:17:22
nosso usuário esse aqui é o nosso ator
00:17:24
tá é a pessoa que vai fazer uso do nosso
00:17:27
sistema e como nós falamos nós temos
00:17:30
aqui por baixo né uma timeline tá bom
00:17:33
que é essa linha
00:17:34
pontilhados elemento aqui que indica o
00:17:37
tempo de espera do nosso da nossa
00:17:40
requisição da mensagem e da sequência
00:17:43
toda que acontece a partir dela limpando
00:17:45
essa nossa baguncinha aqui vamos lá
00:17:47
vamos falar então do que que acontece
00:17:50
entre o nosso usuário e as partes do
00:17:53
nosso sistema primeiramente nós temos
00:17:55
depois do nosso usuário aqui a interface
00:17:57
de login e Aqui nós temos o que acontece
00:18:01
entre a nossa interface de login e aí
00:18:03
nós temos aqui uma comunicação né uma
00:18:05
mensagem que acontece entre o nosso
00:18:08
usuário e a nossa interface de login e o
00:18:10
que que eu tenho aqui dentro Eu estou
00:18:12
falando né tenho uma mensagem que
00:18:14
ilustra aqui que o nosso usuário está
00:18:17
informando o username Né o login dele e
00:18:20
a senha tá usuário e a senha dele beleza
00:18:25
bom daí entra a nossa interface aqui de
00:18:29
de login e a parte central o Core do
00:18:32
nosso sistema o backend do nosso sistema
00:18:34
que é o nosso controlador aqui eu tenho
00:18:37
uma validação de credenciais tá então
00:18:39
acontece aqui a validação da senha eu
00:18:42
peço pro meu backend validar usuário e
00:18:45
ass as credenciais de acesso daí o que
00:18:47
que acontece na sequência nós temos aqui
00:18:49
o o processo de validação de verificação
00:18:54
lá no nosso banco de dados tá E para eu
00:18:56
representar isso eu uso esse el aqui a
00:18:59
entidade login né então eu tenho o meu
00:19:02
controlador indo lá no meu na minha
00:19:04
entidade login fazer essa validação E
00:19:06
isso acontece a partir desse processo
00:19:09
aqui onde nós temos basicamente a a
00:19:13
requisição de ida né então tenho a
00:19:16
mensagem fazendo ali a consulta das
00:19:19
credenciais e a nossa resposta aqui o
00:19:21
nosso retorno Observe que aqui nós temos
00:19:23
o elemento de retorno né que é
00:19:25
traçadinho e Aqui nós temos o elemento a
00:19:27
mensagem de ida que é a linha contínua
00:19:30
com a nossa setinha totalmente aqui
00:19:32
preenchida Tá bom então tem a mensagem
00:19:35
de ida e o retorno E aí uma outra coisa
00:19:38
que é importante salientar aqui que nós
00:19:39
temos aqui esse espaço de tempo esse
00:19:42
intervalo de tempo bem menor do que os
00:19:44
outros pode ver aqui né Ele é bem menor
00:19:46
do que os outros porque literalmente o
00:19:48
nosso tempo aqui do nosso banco de dados
00:19:50
tá é o tempo que ele tem aqui de de ir
00:19:53
ir no banco fazer ali o get das
00:19:56
informações para fazer a comparação
00:19:58
desses dados tá então aqui a mensagem é
00:20:01
consulta credenciais eu vou lá no banco
00:20:04
e consulto busco usuário e senha
00:20:07
passando né as credenciais que eu recebi
00:20:09
do meu usuário ou seja Talvez o meu
00:20:12
e-mail ali né ou o meu username e a
00:20:14
senha efetivamente para que que eu vou
00:20:16
fazer isso para depois validar se a
00:20:18
senha está correta ou incorreta tá bom
00:20:21
muitas vezes eu nem passo a senha eu vou
00:20:23
passar ali somente o meu usuário né a
00:20:25
senha talvez ela esteja encriptada e e
00:20:28
eu não vou usar ela como parâmetro aqui
00:20:31
de busca nem é uma boa prática na
00:20:33
verdade é que alguns sistemas no passado
00:20:35
não utilizavam criptografia das
00:20:37
informações de senha por exemplo era
00:20:39
comum você salvar a senha totalmente
00:20:41
descriptografado ali é quem tinha acesso
00:20:43
ao banco tinha acesso também a a a senha
00:20:46
de todo mundo mas isso no passado bem
00:20:48
longe tá tem muito tempo que a gente já
00:20:50
tem boas práticas de de criptografia bom
00:20:53
eh falando então do que acontece na
00:20:56
sequência do nosso retorno aqui após a
00:20:59
gente retornar do nosso da nossa
00:21:01
sequência tá voltou aqui do nosso
00:21:03
retorno eu tenho aqui a validação das
00:21:06
credenciais tá E essa validação ela
00:21:08
acontece aqui ó nesse pequeno espaço
00:21:10
aqui de tempo tá bom é esse pequeno
00:21:13
espaço aqui que ilustra esse retorno
00:21:17
essa essa validação do que retornou da
00:21:20
nossa entidade de dados E observa que
00:21:22
nós temos eh aqui por exemplo a soma do
00:21:26
tamanho da requisição anterior que veio
00:21:28
lá de trás tá com esse tempo aqui ó a
00:21:31
gente tem ele aqui né E aí nós temos
00:21:35
mais esse tempo aqui dessa validação e
00:21:37
por fim nós temos o tempo de retorno
00:21:39
então essa timeline aqui do controlador
00:21:42
ela acaba sendo bem grande bem maior do
00:21:45
que essa aqui da nossa entidade de login
00:21:48
tá E lembra que eu falei do problema de
00:21:51
de um diagrama desse aqui precisar você
00:21:54
subir né para ver a parte de cima ficar
00:21:56
rolando né se esse aqui fosse um dia uma
00:21:58
complexo tivesse muitos elementos e eu
00:22:00
estivesse lá embaixo aqui né e falasse
00:22:02
assim poxa eu quero saber que elemento é
00:22:04
esse aqui dessa timeline aqui eu não sei
00:22:06
eu preciso vir aqui para cima para ver
00:22:08
vou ter que rolar né E se tivesse num
00:22:11
diagrama na parede até que não fica tão
00:22:13
difícil mas se as caixinhas forem muito
00:22:15
pequenininhas precisa de uma lupa ali
00:22:18
correr até o topo né para ver ali quem
00:22:20
Qual é o elemento tá e a lupa É
00:22:23
brincadeira mas fica realmente difícil
00:22:25
vai ficando mais complexo a o
00:22:27
entendimento e a manutenção deixa eu
00:22:29
limpar essa minha bagunça aqui e vamos
00:22:31
lá vamos dar continuidade à explicação E
00:22:33
aí Aqui nós temos o nosso retorno Não é
00:22:36
esse retorno ele volta aqui pra nossa
00:22:38
interface de login beleza que é essa
00:22:41
timeline aqui e daqui a gente tem mais
00:22:43
um retorno que veio aqui pro nosso
00:22:46
usuário perceba que novamente né como a
00:22:49
gente estava falando nós temos aqui um o
00:22:52
maior tempo de todos do nosso usuário tá
00:22:55
a timeline do nosso usuário Olha o
00:22:57
tamanho dela aqui
00:22:59
em comparação com essa aqui né que é a
00:23:01
Menorzinha é a conexão lá com o nosso
00:23:03
banco de dados tá então vou tendo essa
00:23:05
timeline Ela Vai somando né aqui eu
00:23:08
tenho a somatória de todas as
00:23:09
requisições que aconteceram aqui de
00:23:11
todas né Aí eu tenho mais o tempo de
00:23:13
resposta mais a validação mais essa
00:23:16
resposta mais essa fica todo esse
00:23:18
carinho aqui ele fica grande né então
00:23:20
ilustra todo o meu tempo de ida e volto
00:23:22
é o tempo computacional não
00:23:24
necessariamente o tempo isso aqui não
00:23:26
representa segundos né mas enta o tempo
00:23:29
computacional então tem toda a latência
00:23:31
aqui dá para ter uma visão de que é onde
00:23:34
eu tenho maior espera se vai ser grande
00:23:36
ou pequena né pro nosso usuário talvez
00:23:38
sejam milésimos de segundo isso aqui mas
00:23:41
computacionalmente falando é onde eu
00:23:43
tenho mais esforço Bacana Então deu pra
00:23:45
gente ver aqui um diagrama de sequência
00:23:49
né com todo o processo aqui falando de
00:23:52
todas as camadas a gente falou aqui do
00:23:54
nosso usuário falamos da nossa interface
00:23:56
de login do nosso cont trolador do
00:23:58
backend né que é o front aqui é o back e
00:24:00
a nossa camada de dados Era bem comum
00:24:03
representar sistemas assim antigamente e
00:24:05
até mesmo na época que se adotou a
00:24:08
arquitetura mvc né que não era só para
00:24:10
frontend antigamente o mvc era completo
00:24:12
néha viu sendo a camada de frontend
00:24:15
Windows forms por exemplo né um o forms
00:24:18
o formulário Ali era a nossa View né a
00:24:21
Controller era a parte de backend de
00:24:24
dentro de um sistema que era ali
00:24:26
basicamente eh client server né e a
00:24:28
gente tinha a camada de dados que também
00:24:30
ficava dentro dela e fazer comunicação
00:24:33
diretamente ali com o banco de dados bem
00:24:35
e como é que fica uma visão como essa
00:24:37
nos dias atuais eu falo para você que
00:24:40
hoje no em um mundo onde nós temos
00:24:42
microsserviços e uma visão mais
00:24:44
assíncrona o que que acaba acontecendo
00:24:46
nós temos aqui o nosso usuário aí ao
00:24:49
invés de utilizar aqu aqueles elementos
00:24:52
né de de boundary de Controller e etc
00:24:56
aqui eu estou um pouquinho mais alto
00:24:57
nível representando por exemplo o meu
00:25:00
App Mobile né que eu tenho aqui o Arc
00:25:02
app aí eu tenho aqui um BFF de login e
00:25:06
aí aqui eu tenho um idp tenho um koke
00:25:08
por exemplo tá que é o nosso identity
00:25:10
provider que vai fazer a autenticação
00:25:12
então não tenho mais aqui o meu banco de
00:25:15
dados a interação com o meu banco de
00:25:16
dados fazendo a consulta ali para fazer
00:25:18
a validação de usuário e senha isso
00:25:20
acontece pelo meu kloke tá bom vamos lá
00:25:22
vamos detalhar aqui como que acontece e
00:25:25
esse fluxo antes de mais nada perceba
00:25:27
que aqui nós temos temos uma timeline
00:25:29
menor Por que que essa timeline é menor
00:25:31
porque essa requisição aqui ela é
00:25:34
assíncrona percebe que ela é aberta aqui
00:25:36
na ponta ó essa pontinha aqui ela é
00:25:38
aberta tá então ela é assíncrona daí na
00:25:42
sequência nós temos aqui uma outra
00:25:44
requisição que é também assíncrona
00:25:46
percebe aqui né que é é essa setinha
00:25:50
também é aberta né que é a validação de
00:25:53
credenciais aí na sequência nós temos
00:25:56
aqui a através do nosso BFF ele faz a
00:25:59
consulta de credenciais E aí aqui ó é
00:26:02
síncrono beleza não é síncrona a setinha
00:26:05
tá completa aqui eh e depois disso eu
00:26:08
espero a resposta Ó veio a resposta do
00:26:10
nosso kloke a a resposta como sempre é
00:26:14
uma linhazinha traçada né e a pontinha
00:26:16
dela aqui aberta como a gente falou
00:26:19
então aqui eu tenho a soma né do da
00:26:21
timeline deixa eu mudar a cor desse
00:26:22
carinha para ficar um pouquinho mais
00:26:24
fácil de ficar ficar mais visível aqui a
00:26:27
nossa timeline né a timeline ficou maior
00:26:30
né E aí aqui eu tenho uma segunda parte
00:26:32
do nosso timeline que é aqui a validação
00:26:35
das da credencial né das credenciais
00:26:37
aqui do usuário e senha tá eh essa
00:26:40
validação na verdade ela poderia
00:26:42
acontecer aqui no no nosso k clo tá o
00:26:44
ideal seria ela acontecer aqui tá e não
00:26:48
aqui nesse desenho nessa ilustração e
00:26:50
Embora esteja tudo bem Tá talvez eu
00:26:52
tenha aqui ah algum tipo de dispositivo
00:26:55
para fazer essa validação o ideal é que
00:26:57
acontecesse aqui no do que clo e ele
00:26:59
fosse maior tá bom daí nós temos aqui o
00:27:01
nosso retorno né que é a devolutiva aqui
00:27:04
pro meu usuário percebe que aqui de novo
00:27:08
né eu tenho
00:27:09
eh essa resposta aqui acontecendo em em
00:27:12
um espaço de tempo pequenininho que é só
00:27:14
o tempo de resposta mesmo a volta aqui
00:27:16
pro nosso usuário e tudo aconteceu de
00:27:18
uma maneira assíncrona então não fiquei
00:27:21
segurando o meu usuário solto o meu
00:27:22
usuário para fazer outras coisas é
00:27:25
lógico que no login eu vou precisar
00:27:27
esperar para poder entrar no sistema mas
00:27:29
uma outra coisa é muito comum que esse
00:27:32
tipo de processo né processamento
00:27:34
assíncrono eh faça sentido tá paraas
00:27:37
aplicações atuais paraas aplicações
00:27:39
modernas onde a gente tem bffs apis
00:27:43
microsserviços tudo acontecendo de forma
00:27:45
assíncrona então ar Deu para perceber
00:27:47
que um Diagrama como esse pode ser
00:27:49
aplicado nos dias atuais também para uma
00:27:52
aplicação que seja microcomponente zada
00:27:55
né orientada a microsserviços com bffs
00:27:57
Apis virtualiza micro databases é
00:28:00
possível representar em um diagrama de
00:28:02
sequência e você ar conhecia esse
00:28:04
diagrama já tinha utilizado conta aqui
00:28:07
nos comentários porque eu quero saber e
00:28:09
ar você que é top PR caramba se você
00:28:11
gostou desse conteúdo não esquece de
00:28:13
deixar um like pra gente porque isso
00:28:15
ajuda o nosso conteúdo a chegar para
00:28:16
mais pessoas e assim como você quer se
00:28:19
tornar um profissional diferenciado no
00:28:21
mercado um ar Expert Bacana Então eu vou
00:28:24
ficando por aqui ar um super abraço e
00:28:26
até a próxima m