[Música] [Música] h [Música] t [Música] [Música] h [Música] k [Música] [Aplausos] C [Música] h [Música] Fala galera boa noite tudo bem com vocês já tem um uma galera aqui no chat já Tava acompanhando aqui o pessoal que tomou um susto quando começou a música aqui de introdução da Live então sejam bem-vindos já dei Já acordei todos vocês aí com a com a nossa música inicial da Live espero que vocês estejam bem que vocês estejam tendo um ótimo domingo deixa eu trocar aqui PR só minha câmera porque eu tô mostrando já a tela já dei um
spoiler né vou voltar aqui só pra minha câ pra minha câmera que eu tô dando spoiler da Live então sejam bem-vindos e bora começar sem Muita enrolação bora começar então o eu vi que tem vários membros do canal por aqui então o Cláudio tá por aqui o guilerme O João O Talison Emerson Ricardo Luiz Felipe o Lucas o Jonathan O Andrei pô muitos membros do canal que massa o Anderson tá por aqui também o Hugo o Mateus bem-vindo sejam bem-vindos e bora começar eu fico muito feliz quando tem um monte um monte membros aqui do
canal nas lives porque vocês apoiam demais aqui o canal são o Com certeza algo indispensável aqui pro Canal vocês dão muito suporte de verdade então fico muito feliz quando os membros estão participando aqui também e trocando uma ideia e participando aqui do nosso Live coding pra gente aprender junto construir alguma aplicação junto enfim trocar essa ideia aqui no final do domingo né domingo da noite então bora lá ã o que que a gente vai fazer na Live hoje tá a gente já fez várias lives aqui no canal falando de Java principalmente Java Spring e a
Live de hoje a gente vai falar de Java Spring mas a gente vai fazer uma misturinha também então vamos criar um projeto Java não vamos criar nada muito complicado Então vamos rever alguns conceitos ali eu quero até que vocês façam perguntas para mim de coisas tipo do dia a dia tá então vamos aproveitar a Live de hoje também para quem tiver dúvida tipo assim Fê tu usa isso no trabalho como é que isso funciona no trabalho as empresas pedem isso pedem aquilo aproveitem para tirar dúvidas de Java na Live de hoje também porque a gente
vai criar um projeto mais simples Então não vamos precisar de muita concentração no código né que tem outras lives aqui que a gente toca fund no código Tem que focar para conseguir terminar até o final da Live e a gente com né constrói projetos do zero hoje vamos construir um projetinho do zero também mas vamos fazer ali ali algo mais básico para dar uma revisada nos conceitos de spring para quem já já conhece Java e para quem tá vendo pela primeira vez ter o seu primeiro contato ali com o Framework ter o seu primeiro contato
com a linguagem Java Também quem sabe então vamos fazer um projeto mais simples e aí a parte mais legal da Live de hoje vai ser o Deploy numa VPS Então a gente vai usar um serviço de VPS que para quem não sabe o que é VPS né VPS é o acrônimo para virtual Private server que seria servidor privado virtual a gente vai usar um servidor de VPS para fazer o Deploy da nossa aplicação aí eu vou explicar para vocês como é que serve um VPS quais serviços vocês podem usar como é que a gente ã
interage com o sistema VPS enfim vamos dar uma uma falada sobre ISO também acho que vai ser bem legal então bora começar eh Vou só tomar uma aguinha que já me deu sve falei dois minutos já fiquei com se e que hoje tá muito calor o o Mateus perguntou o seguinte ó ele ele não perguntou ele fez uma sugestão né uma live sobre Spring Security já tem vídeo sobre Spring Security aqui no canal tá Então é só entrar aqui nos vídeos do canal tu vai encontrar já tem vídeo de spring Security fiz ano passado com
a última versão do Spring Security podemos fazer uma Live Sim mas se tu tiver precisando do conteúdo já tem aqui no canal a gente pode pensar em fazer uma live sobre isso também ã a Live vai ficar salva tá a Live de hoje vai ficar aberta pra comunidade Então a gente tem quatro lives na semana quatro lives no mês né uma por semana mês passado eu já deixei uma live aberta agora no mês de fevereiro essa Live Vai ficar aberta as próximas lives do canal vão ficar salvas somente PR os membros aqui do canal então
todas as lives que a gente tem nos domingos ficam salvas aqui pros membros do canal tem muitas lives lá pro pessoal aqui que é membro consumir rever de novo construir os projetos lá do zero durante as lives tem várias lives salvas e tem vídeos exclusivos PR os membros do canal também então inclusive semana passada saiu um vídeo aqui no canal exclusivo somente PR os membros do canal falando sobre arquitetura de micro frontends e backend for front end Então esse é um dos benefícios aí de ser um membro aqui do canal a Live de hoje vai
ficar aberta mas as demais do mês de fevereiro salvas somente pros membros do canal ã tá então bora começar Vou compartilhar aqui a tela já tô dando um spoiler aqui do que que a gente vai fazer com VPS mas antes da gente partir aqui paraa VPS vamos primeiro construir a nossa aplicação Zinha Spring né Vamos fazer aqui a nossa aplicação Zinha rever alguns conceitos eu vou respondendo algumas perguntas de vocês também o Paulo mandou o seguinte ó Fê tá quase me convencendo em ser membro Espero que eu consiga te convencer porque isso ajuda bastante aqui
o canal e tem vários benefícios também dependendo da do membro né Eh tem alguns benefícios por exemplo assistir os vídeos antes então os vídeos saem antes pros membros do canal tem vídeos exclusivos fica Salv as lives tem o mezin mensal dos membros que é pros membros seniors que eu vou marcar Inclusive essa semana o nosso mezin onde a gente entra no me troca uma ideia eu conheço mais vocês enfim tá vamos abrir aqui o Spring initializer para iniciar Nossa aplicação Spring à Não eu não vou usar o vs code Tá eu vou usar o intellij
Então tá Spring initializer o que que nós vamos fazer Aqui vamos trocar para maven que vai ser o Como é que é o nome disso o gerenciador é gerenciador de pacotes que a gente vai usar a gente pode usar tanto o gradle quanto o maven eu gosto de usar o maven Na verdade eu nunca trabalhei com gradle só com maven tá então é o único que eu tenho experiência e que Eu manjo mesmo o gradle já vi algumas coisas mas nunca cheguei a criar um projeto com ele então por isso que nós vamos de maven
a versão do Java vou deixar a 17 que é aão versão que já vem selecionada aqui e vamos trocar o nome só do nosso artifact aqui que eu vou dar um nome de api ã exemplo API de exemplo né só pra gente ter aqui e a O que que a gente vai adicionar de dependência a gente vai adicionar o Spring boot Dev Tools o LB eu vi que alguém perguntou aí no chat se as empresas usam LB usam sim tá eu uso lombok inclusive no meu trabalho uso lombok no meu dia a dia ã Spring
web deixa eu ver se a gente não tá esquecendo mais nada dar um aqui Spring não vou adicionar muita coisa tá porque a gente vai fazer algo bem como eu falei para vocês algo bem simples aqui só para rever alguns conceitos mesmo então não vamos mexer com banco de dados nem nada assim só vamos criar uma API para sei lá vamos inventar alguma coisa E aí eu vou tirar as dúvidas de vocês aqui de de Java para quem tiver tirar as dúvidas de spring e tal e aí vamos mexer lá na VPS depois que eu
acho que é a parte mais legal né Deve ser a parte que vocês estão mais interessados eu diria pra Live de hoje que é a parte mais diferente ã é isso não tô esquecendo de nada não JP eu não vou adicionar porque a gente não vai mexer com banco então não não tem porquê mas caso a gente fosse mexer com o banco de dados adicionaria essa dependência aqui Spring deira JPA no caso banco de dados sequel né banco de dados SQL é isto é isto eu acho ã o Spring web Eu já adicionei né Tô
só dando um review aqui que às vezes eu esqueço E aí depois teria que Open f não vamos usar é É isso mesmo hum É isso mesmo galera então Spring boot Dev Tools para adicionar aqui com Live para adicionar aqui as coisas de Live reloading fazer o aut build da aplicação eal a gente CONSEG configurar int código boilerplate Spring web PR gente criar uma aplicação web né então é isso generate geramos aqui o zip né do nosso projeto eu vou abrir aqui o meus downloads vou mostrar aqui para vocês agora ã vou descompactar a pasta
que ele ela vem compactada e a gente já pode abrir isso aqui no intelij então eu vou abrir aqui direto o intelij e vou puxar essa pasta aqui então vou ver colocar meu LG aqui bonitinho New Project né abrir um projeto projeto tá aqui em downloads api exemplo trust Project vou abrir nessa janela mesmo beleza agora vamos ver vamos instalar as dependências Life cycle Vamos dar um rel Opa cliquei no se quer tem que clicar nesse botãozinho aqui a gente a gente tá dentro do intelij então aqui no intelij quando ele identificar com um projeto
que utiliza maven vai aparecer aqui na direita esse M aqui o iconeinstagram quinta série né quando eu entro no pum e vejo que não tem nada vermelho quer dizer que tá tudo certo tipo o intelij Tem essa inteligência né de mostrar as dependências que já estão instaladas se alguma dependência não tiver instalada ela mostra ela como vermelho aqui então Eu sempre gosto de entrar aqui para ver se tá tudo certinho como não tem nada vermelho tá tudo certo né tá tudo instalado aqui então Vamos iniciar o projeto só para ver se ele budou se ele
tá buildando com com sucesso para ver se a gente não esqueceu de nada então vamos vir aqui e vamos iniciar o nosso projeto Run application vamos clicar aqui no botão de Run ele vai iniciar aqui ã o lombok quando a gente usa o lombok na nossa aplicação ele requer que a gente utilize um plugin para que ele faça a geração em a geração automática dos códigos né quando a gente usar as anotações do LB então eu cliquei ali para para fazer o enable desse plugin porque porque senão não vai funcionar onde a gente usar lbx
vai dar erro se a gente não tiver com esse plugin ativado aqui no intelij aplicação iniciou tá tá rodando na porta 8080 Então tá tudo certo tá buildando com sucesso bora começar Vou olhar aqui no chat que eu vi que tem várias perguntas e já vou respondendo algumas perguntas aqui tá pra gente não pra gente não eu não perder as perguntas de vocês o o chapo mandou assim ó o maven é aquele amigo que dá uma dor de cabeça mas é o nosso amigo exatamente volta e meia eu tô tô sofrendo com maven mas no
final de tudo eu gosto M gosto de usar ele ã o Icaro perguntou o seguinte P Você conhece algum curso para aprofundar em Spring ou alguém do chat Icaro eu vou te recomendar o curso da Rocket tá Rocket City é parceira aqui do canal mas eu vou recomendar eles porque eu fui aluna deles ã eu fui aluna de react na época quando eu ainda trabalhava com react e eu gosto muito muito da didática deles gosto muito da plataforma gosto muito de todos os professores aqui da da Rocket e eles têm uma trilha de Formação Java
onde você vai aprender Spring e várias outras coisas tá aprende desde o básico do Java aqui os primeiros conceitos da linguagem até coisas mais avançadas então fundamentos do Spring boot fazer o Deploy da tua aplicação também testes do do código JAVA implantação e monitoramento para fazer a observabilidade da nossa aplicação várias coisinhas aqui tem na trilha de de Java bem completa e tá lançando novos módulos também e a gente tem desconto na Rocket City Então a gente tem 10% off usando cupom que perd vou até mandar aqui o link para ti Caso tu esteja interessado
Deixa eu tirar Deixa eu só cortar aqui o link porque tá muito grande então a Rocket super parceira aqui do canal sou ex aluna deles e sempre recomendo porque eu gosto bastante de verdade e a gente tem lá né então quem não gosta de um descontinho é muito bom 10% de desconto usando cupom que perd E além disso aproveitando já a Rocket vai fazer um evento agora o a next level Week eu já Participei de várias next level weeks tá é uma semana de conteúdo gratuito que a Rocket City faz no começo era só de
node e react e HTML CSS e agora nessa next level Week tá Depois de várias vers né Depois de várias edições que já tiveram da next level Week nessa next level Week Vai ter sete trilhas tá então vai ter a trilha básica de html CSS JS vai ter a de react J que eu fiz muitas vezes essa daqui eu eu fazia a de html CSS JS no começo e depois é de react só que em 2020 tá eu fazia as trilhas de Next level Week da Rocket eu participava dos eventos gratuitos antes de de ser
aluna deles então vale super a pena mas vai ter de react react Native Java tá então para tu que tá interessado Vai ter trilha de Java Vai ter trilha de Python então inédito na Rocket eles estão lançando ã o novo curso de Python deles então vai ter trilha de Python também no evento gratuito csharp e nodejs então o evento funciona assim são aulas durante a semana e nas aulas tu vai ver vários conceitos técnicos e construir um projeto mão na massa Então as aulas vão ser todas ali abando abordando conceitos técnicos enquanto tu tá construindo
um projeto E aí tu já sai do evento com um projeto a mais no teu portfólio então lá no meu gith Hub tem vários projetos lá no começo do meu github que foram da next level Week tá foi muito legal para encher assim o portfólio de coisas de projetos novos e aprende para caramba tá aprende para caramba ali construindo projetos na prática e é gratuito não tem porque não participar então para quem tá querendo aprender qualquer uma dessas tecnologias Vale super a pena vou deixar aqui no chat o link para quem quiser se inscrever tá
e vou fixar aqui no chat também que é um evento gratuito eu participei de muitas next level x acho que eu fiz quatro ou cinco quando eu tava começando né Ia participando toda vez que acontecia e eu acho que vale super a pena participar desses eventos gratuitos até para se conectar com outra comunidade vai ter lá o discord da Rocket também tem sempre uma galera trocando uma ideia enfim é super legal tá continuando Então já tirei um tempinho aqui pras dúvidas Vamos criar o nosso primeiro componente aqui Vamos criar o nosso primeiro componente na nossa
aplicação Java que vai ser o nosso Controller Então a gente vai criar um Controller aqui dentro da raiz do nosso projeto Então se vocês verem aqui no projeto Java para quem não tá acostumado quando a gente entra em source a gente tem a pastinha Main e a pastinha teste a pastinha teste é onde fica os arquivos de teste e a pastinha M onde vai ficar de fato o os arquivos da nossa aplicação tá E aí a gente entra em Java dentro da pasta Java e depois dentro da pasta do domínio aqui da nossa aplicação que
seria o artif lá que a gente criou no Springer e aqui eu vou criar uma nova pasta um novo package né que eu vou chamar de controllers e eu vou criar um Controller aqui vai ser o Controller Def aqui da nossa aplicação então do que que pode ser a nossa aplicação Deixa eu pensar apliação pode retornar Deixa eu pensar aqui uma lista de de coquil uma lista não sei me D algum exemplo aí do que que pode ser a nossa aplicação tipo eu vou fazer um vai ter no máximo um get um post Aqui tá
o que que poderia ser aqui só pra gente pensar veículos uma lista de produtos Pokémons a temperatura e a umidade meu Deus é muitos exemplos não sei o que que pode ser uma lista de times de futebol séries livros lista de Selos lista de países livros ah livros é uma boa vamos fazer livros tipo atividades físicas em um clube de esporte ah lista de livros tá tipo assim alguns livros de programador sei lá tipo é o objetivo não é a gente sair com uma aplicação que faça sentido assim pro mercado mas assim só pra gente
rever conceitos mesmo do Framework no caso eu vou fazer tipo fazer tipo livros tá vai retornar livros Então vai ser book Controller para que uma classe Java tá seja considerada um Controller na visão do Spring então quando a gente inicia aqui a nossa aplicação Spring o Spring faz uma varredura em todas as classes do nosso projeto e vai encontrando ali o que que cada classe faz E aí como é que ele sabe o que que aquela classe representa o que que aquela classe faz ele sabe através das anotações que a gente coloca nessa classe Então
para que essa classe para que o Spring enxergue essa classe como um Controller e use ela para fazer a o redirecionamento das requisições para ver como ele deve tratar cada uma das requisições a gente tem que colocar o @restcontroller aqui em cima tá essa anotação rest Controller E aí aqui a gente tem que colocar também anotação request mapping para indicar qu end Point tá da nossa aplicação esse Controller escuta Qual é tipo qual end Point que vai receber requisições que é para ser tratado por esse Controller então aqui por exemplo a nossa vai ser em
barapi barra books barpi bar books toda vez que tiver uma requisição para barpi Barra books aqui pra nossa aplicação ele vai buscar o tratamento dessa requisição aqui dentro dessa classe desse Controller aqui e aí como é que eu crio um um tratamento né eu vou ter que criar um novo método aqui dentro dessa classe Então vou criar um método público que por enquanto vai retornar void que eu vou chamar de get books get books E aí aqui eu vou colocar uma anotação em cima dele de get mapping então eu tô dizendo aqui ó que esse
método né ele escuta requisições get tá requisições get para qual end Point F pro end Point barpi bar books mas F Se eu quisesse que ele escutasse pra barpi bar books barid né o ID do livro Como eu faria a gente coloca aqui também então a gente vem aqui no get mapping em vez de deixar vazio a gente passaria barra e aí o ID aqui a variável ID E aí receberia esse ID aqui através de de de parâmetros desse método então é através de pef eu não me lembro se é pef variable ou pef parem
eu acho que é pef parem PF parem ou pef variable bom mas enfim tem uma anotação aqui que a gente coloca E aí esse método vai receber um parâmetro que vai ser o ID que é uma string por exemplo tá E aí o Spring o Spring faz tudo isso para nós tá o Spring vai injetar o valor que veio aqui na requisição ali no no pef vai injetar aqui como parâmetro tá para quando esse método for executar para que eu consiga usar esse valor é PF verb mesmo tá PF verb Achei que eu tinha me
enganado Então pessoal confirmou aqui para mim que é pef variable mesmo Então tá mas por enquanto a gente não vai receber parâmetro nenhum tá vamos só ouvir aqui no get mapping vamos fazer o get mapping aqui para barpi bar books ouvindo ali só no Barra books mesmo sem receber nada tá E aí vamos fazer aquele retornar uma string só para mostrar para vocês como funciona então return Oi só isso eu vou dar um Reload na nossa aplicação Então vou parar ela parar vou executar de novo enquanto vai executando de novo eu vou ver aqui a
dúvida da Camila a dúvida perguntou ó sobre o caminho do request mapping é é comum alongar o caminho ao invés de deixar apenas books Como assim alongar o caminho ah alongar acho que tu quis dizer tipo colocando mais coisas aqui né tá é comum sim é bem comum sabe por quê Porque aqui a gente tá criando uma API só tem um Controller por Mas pode ser que essa nossa pii se for um monolito por exemplo que ele tenha vários controllers e escute em vários end points E à medida que a gente tem vários end points
a gente começa a querer particionar eles através do do do pef aqui então a gente bota em barpi bar v1 bar books barpi bar bar v1 bar usuário barpi bar V2 bar usuário a gente começa a usar o pf ali para dividir né para organizar todos aqueles end points que a gente tem ali dentro da nossa aplicação isso falando de monolitos tá então o monolito que vai conter todos os controllers mas às vezes quando a gente tá falando de microsserviços tá a nossa última Live à Não a nossa última Live não foi sobre microserviços tô
rateando mas o último vídeo que eu postei aqui no canal sobre os membros eu falei um pouquinho sobre microsserviço a gente já teve eh vídeos aqui no canal falando sobre microsserviços também mas assim quando a gente tá falando de microsserviços que seria pegar o o nosso backend quebrar em serviços pequenos cada um responsável por uma coisa Cada um com as suas responsabilidades que seriam projetos diferentes também ã a gente pode querer que todos esses microsserviços no final das contas fiquem no mesmo domínio tá então fiquem no mesmo na mesma URL mesmo que sejam microsserviços diferentes
projetos diferentes com deploys diferentes a gente quer servir eles na mesma URL então serviço eles no Fernand kiper.com.br por exemplo E aí como eu vou servir eles todos na mesma URL eu posso querer usar isso para distinguir cada um dos microsserviços também então eu posso ter ali Fernand kiper.com.br barpi bar Barra ã book barra Gets sei lá inventei aqui uma coisa agora e aí eu já sei que esse é o microsserviço de books aí eu vou ter o barpi bar user bar list All users sei lá e aí eu já vou saber que esse é
o microsserviço de users por causa daquele prefixo user ali antes ou ou prefixo book E aí por que o prefixo api f porque eu posso usar o mesmo domínio para servir tanto frontend quanto backend então por exemplo eu posso ter aqui no meu site ó eu tô servindo o Fernand ker.com aqui no Fernand ker.com eu tô servindo o meu site tá tá vendo aqui o frontend mas eu poderia usar o Fernand ker.com barapi bar links para para fazer uma uma requisição pra minha api pro meu backend e listar todos os links e ter eles todos
no mesmo domínio entendeu Daí eu começo a usar o o pef aqui para organizar as coisas e distinguir quando a gente tá falando uma aplicação muito grande que às vezes usa o mesmo domínio ou monolito que tem vários end points é comum alongar como o termo que tu usou alongar ali o request mapping porque a gente acaba querendo precisando ter essa distinção tá então fizemos aqui o nosso Controller Zinho básico que tá retornando um oi então vamos testar ele aqui eu vou abrir um insom vou só testar pra gente ver se tá funcionando mas a
gente vai fazer mais coisa aqui tá sabe sabe o que que a gente vai fazer Tive uma ideia agora acho que ficaria Legal vamos criar um Jason um arquivo Jason ou um objeto Java sei lá um arquivo Jon onde vai ter todos esses nossos books E aí o nosso Controller retorna tudo que tem dentro desse Jason e ele pode pegar o Jason lá da do do aws S3 sei lá a gente inventa alguma coisa aqui para deixar mais mais legal né e meu insomni aqui não abriu ver por que que ele não abriu Agora abriu
Demorou mas abriu o o b Campeira perguntou assim ó se uma aplicação precisa de uma nova versão para uma API tipo books né cria-se um Controller novo com request mapping V2 ou o Spring tem uma solução para versionamento de api eu não sei exatamente se o Spring tem uma solução para versionamento de api Eu nunca fui a fundo nisso mas vou te dizer o que eu uso no meu trabalho a gente usa V2 tá então a gente vai lá cria um novo end Point e que vai respondendo V2 a gente faz dessa forma tá então
e eu já vi várias pessoas fazerem dessa forma também outras empresas enfim é bem comum a gente ir lá e criar um novo Controller que vai ficar ouvindo a V2 por exemplo ou no mesmo Controller eu fazer o versionamento aqui por dentro sabe então eu tenho aqui o v1 E aí depois o V2 sei lá entendeu fazer aqui por dentro mesmo no mesmo Controller mas o ideal seria criar um Controller novo mesmo para distinguir o que é da v1 e o que é da V2 eu vou criar aqui então um novo documento para nós uma
nova Collection api Test e aqui eu vou criar uma nova requisição um novo htp request que vai ser um get que vai ser para http 2 p bar bar local host porta 8080 que é onde tá rodando a nossa aplicação Spring barra pii bar books só fazer um get retornou 200 Ok Oi então tá tudo certo aqui com a nossa pi então o que que nós vamos fazer eu vou pedir pro meu amigo chat PT gerar aquele Jason para nós pra gente usar esse Jason como como se fosse um banco de dados sabe então a
invés da gente consultar os livros de um banco de dados aqui para facilitar vamos consultar de um arquivo Jason Então vou pedir aqui pro chat ept de eu só abrir ele aqui deixa eu ver se tá logado por isso que eu puxei pra outra tela tá já tá logado deixa eu criar um novo aqui beleza vamos pedir pro chat PT criar para nós um arquivo Jason e eu mando o arquivo aqui para vocês depois crie um arquivo Jason contendo vários livros para programadores as informações cada livro deve ter as seguintes informações título autor área e
título autor área e o que mais [Música] hum título autor Ária e uma imagem essa imagem do Google Editora data de lançamento é data de lançamento ou ano de publicação ano de publicação ano de publicação ah e o sbn boa que é o identificador dos livros isbn acho que isso vamos ver el fazer aqui para nós ai eu odeio quando ele faz isso eu não sei por que que ele tá falando em inglês Manda ele parar de falar retorne esses livros em um formato gon contendo as informações que pedir tá a imagem ele não pegou
mas tudo bem tá tá bom tá legal aqui tá legal o o arquivo que ele gerou aí vamos fazer o seguinte vamos criar esse arquivo Jason e vamos colocar ele no S3 da WS ou vocês preferem que eu coloque esse Jason aqui dentro da nossa aplicação mesmo e aqui books por exemplo books P Jason colocar eles aqui tá no S3 Então vamos logar aqui na WS deixa eu abrir aqui eu vou puxar para outra aba tá só para eu logar Deixa eu fazer meu login aqui vocês querem a WS né vocês querem aws tô vendo
deixa eu pera aí eu tenho Authenticator tô tendo que entrar no meu celular para colocar o código pegar aqui pronto loguei puxar para cá para nós vamos vir aqui no Amazon S3 o perguntou o seguinte ó ã poderia explicar como funciona o S3 o S3 é o seguinte o S3 é um serviço de Storage da WS então basicamente ele permite que a gente armazene objetos tá eles chamam de objetos aqui dentro ã o que que seriam objetos cara são arquivos de qualquer tipo tá então a gente pode armazenar arquivos do do qualquer tipo que tu
imaginar aqui dentro do S3 como funciona a gente cria um Bucket o Bucket é como se fosse uma pastinha que a gente cria aqui na nossa conta da WS então a gente cria uma pasta e aí a gente salva todos esses nossos arquivos nessa pasta e esses arquivos podem servir para diversos propósitos então eu posso salvar tanto arquivo que eu tô salvando só para armazenar para talvez no Futura eu vá precisar eu posso salvar imagens aqui no S3 e aí em vez da minha aplicação fazer o Storage das imagens por exemplo em vez del eu
salvar as imagens no formato binary num banco de dados eu salvo as imagens aqui no S3 e salvo no meu banco de dados só URL delas aqui no S3 porque eu consigo acessar elas através de URL Eu posso também usar o S3 para servir um site estático então como eu posso servir qualquer tipo de arquivo eu posso colocar arquivos HTML aqui dentro então criar um um site estático com HTML e aí como cada arquivo aqui vai ter a sua URL a gente pode configurar isso eu consigo criar um site estático usando só o S3 colocando
os arquivos aqui do site estático no S3 e para vários outros tipos como por exemplo armazenar arquivos com informação arquivos Jason que é o que a gente tá fazendo agora e no no vídeo aqui do canal onde a gente resolveu o desafio de desenvolvedor pleno ã do do anota I que é uma empresa do iFood a gente teve que usar o Amazon S3 para armazenar o catálogo tá então eles deram ali uma arquitetura que a gente tinha que fazer pra nossa aplicação ter ali um um serviço de de notificação quando um novo pedido quando um
novo produto fosse criado ou um novo uma nova categoria fosse criado pra gente atualizar o catálogo que estava salvo aqui no S3 da WS porque fica mais fácil também pro front chin de acessar informações que estejam aqui salvas em Jason fica mais rápido porque ele só precisa fazer o fet de um arquivo Jason né então ele não precisa fazer o o fet por exemplo pro nosso backend backend fala com o banco de dados então retorna pro frontend então às vezes é mais vantajoso salvar as informações aqui no S3 inform formato Jon caso não sejam informações
que sejam atualizadas frequentemente por exemplo Então é isso basicamente Então vou salvar aqui eu vou criar um novo Bucket eu vou dar o nome de books api então books é books api e tá aí a gente vai tirar esse aqui bloquear todo acesso público a gente não quer isso a gente quer permitir acesso público tá ao nosso arquivo versionamento do Bucket desativado Por que por a gente quer permitir acesso público porque o nosso backend vai fazer uma requisição aqui para essa URL do do Bucket para pegar o arquivo Jon e depois retornar tá então basicamente
é por isso que eu tô permitindo o acesso público para que a gente não precise fazer autenticação aqui com a WS a gente só permite qu qualquer um acesse para que o nosso backend consiga pegar aqui os dados de boa mas a gente pode configurar né deixar isso mais seguro e configurar através de autenticação E aí só o meu backend vai poder fazer a chamada aqui e pegar o arquivo Jason por exemplo tá bloqueio de objeto desativado Vamos criar o Bucket criar o Bucket o Marcos perguntou se eu uso a conta Rot na WS eu
uso a conta root porque só eu mexo aqui basicamente é minha WS para para projetos books api já existe então book example api reconheço tá como sou só eu que o utilizo eu utilizo pros vídeos aqui do canal paraos meus projetos pessoais e tal eu uso a conta root mas no trabalho a gente não usa a conta root tá cada um tem o seu usuário ali com as suas permissões e tal o S3 ele é pago ã Mas ele tem um free Trial bem grande tá então o S3 aws vou mostrar aqui para vocês ele
tem um um teste grátis por dizer free Trial seria nível gratuito perfeito eles TM um nível gratuito bem grande Tá então a gente consegue aqui ó tá até dizendo a gente consegue armazenar 5 GB aqui no S3 por 12 meses de forma gratuita tá então por exemplo eu uso o S3 em vários vídeos aqui no canal já usei várias vezes e nunca tive que pagar um centavo pro S3 todas as vezes que eu usei Ficou ali no nível gratuito então para projetos pessoais para quem quiser procurando tiver procurando alguma opção gratuita é bem legal Claro
caso a gente estiver usando na nossa empresa enfim para pro nosso trabalho provavelmente vai ter que pagar né tem que pagar esse serviço serviço de Storage mas aqui para para projetos tem um free Trial aí bem legal gratuito então eu vou adicionar aqui um novo arquivo que arquivo vai ser esse vai ser aquele arquivo Jason que eu acabei de criar aqui na nossa aplicação então ele tá dentro de resources static books Jon então vou abrir e vou carregar esse arquivo aqui tá Subimos o nosso arquivo agora vamos tentar ó ele já criou aqui uma URL
desse objeto então uma url pra gente acessar esse arquivo Vamos tentar acessá-lo eu acho que não vai dar a gente ainda tem que fazer mais uma configuração é access denied Mas beleza eu já previa isso daqui a gente tem que fazer mais uma configuração aqui no nosso Bucket para permitir o acesso através de requisição http por todo mundo né requisição pública Então vou vir aqui em permissões desse outro Bucket meu vou copiar essas permissões eu já explico para vocês o que que é isso então vou vir aqui no meu meu Bucket aqui em permissões a
gente vai adicionar uma nova política nesse Bucket Então vou editar eu vou colar essa política aqui e aqui a gente tem que substituir pelo nome do Bucket é book example api Substituir eu tô adicionando a permissão de get para todo mundo ó faz fazendo um efeito de al então permissão para quem Para todo mundo asterisco para Qual ação get Object então para pegar objetos aqui nesse Bucket então tô adicionando essa permissão para que todos os objetos sejam acessíveis ali através das suas URL Então adicionei a permissão no meu Bucket vou colar a permissão aqui para
quem quiser também não consigo colar aqui então vou colocar no notion vamos botar aqui configurações S3 Vou colocar aqui no notion vou mandar o link do notion para vocês vou publicar aqui e vou pegar o link e mandar para vocês tá vamos salvar as alterações ah coloca o Jason também boa deixa eu colocar o Jason aqui para vocês aqui colocar Jason pegar aqui do chat PT o Jason que a gente gerou e vou colocar aqui beleza permissão adicionada Vamos dar um Reload aqui e vamos pegar o nosso arquivo de novo e ver se a gente
consegue acessar ele deixa eu dar um Reload pronto conseguimos Acessar agora via URL e agora a gente vai fazer lá na nossa api a gente vai fazer uma requisição para essa URL uma requisição de get pegar todos os livros e aí retornar tá a gente só vai estar pegando e retornando mas só para mostrar para vocês como funciona Digamos que a gente estaria fazendo uma lógica ali no meio né se o nosso backin tivesse fazendo alguma lógica ali como se a gente tivesse consumindo uma outra api aqui como se a gente tivesse consumindo outra api
então o que que a gente vai fazer eu vou fazer o seguinte vamos vamos ir adicionando mais coisinhas diferentes aqui eu vou criar um novo service Então vou criar uma nova um novo Packet que vai ser de Services aqui dentro eu vou colocar o meu book service com anotação de @ @service e esse meu book service vai ter um método que retorna books não que retorna uma lista de books lista de books e o nome desse método vai ser get books from Library sei lá Digamos que aquilo lá seja URL da biblioteca né aí a
gente vai criar aqui uma nova pasta New package eu vou chamar de domain aqui dentro eu vou criar o meu book uma nova classe esse meu book vai ter as propriedades que a gente colocou lá então título autor vamos tudo colocar aqui Public string title Public string alor Public string area puts meu Deus string area Public string publisher Public Ai meu Deus não aguento mais Public string ear of publish e Public string isbn e aqui a gente vai colocar um All ARS constructor para esse cara e um no ARS constructor caso a gente precise que
são anotações do LB aqui para ele gerar os construtores automaticamente para nós aí aqui esse aqui vai ser um Jason property ear of publish por que que eu fiz isso aqui vocês estão vendo que eu que eu transformei ó aqui se a gente olhar o nosso arquivo Jason ele retorna O year of publication como Snake Case né tá usando aqui o Como é que é o nome disso aqui mesmo é é o wiffen para baixo como é que é o nome é Uh esqueci o nome desse desse caracter aqui mas enfim T usando o wien
para baixo para underline isso aí tá usando o underline para separar as palavras então isso aqui a gente chama de Snake Case tá Snake Case mas aqui no meu no meu projeto Java convenção no Java a gente usar cel Case né cel Case é isso aqui ó cel Case dividir com letras maiúsculas e não com underline então para eu conseguir fazer o mapeamento desse desse valor aqui que vai vir como Snake case e com o nome ear of publication para esse valor aqui ear of publish para eu conseguir fazer esse mapeamento aqui pro Spring que
esse aqui representa essa propriedade eu adiciono essa anotação aqui Jason property nessa propriedade aí o Spring já vai conseguir identificar para mim tá então criamos aqui o nosso book aqui no nosso service vamos importar o nosso book vamos retornar numa lista de book lista também temos que importar e aí agora a gente vai criar um fan client a gente vai criar um cliente Fan para consumir esse essa URL aqui essa URL Onde tá o nosso Jason para isso a gente vai precisar adicionar uma dependência no nosso projeto que é a dependência do fan client Então
vou entr entrar aqui no spring initializer maven vou procurar aqui o Fame client Open Fame esse aqui vamos usar o open Fan eu vou botar aqui o explore vou abrir o o pum e eu preciso adicionar essa dependência aqui agora para nós Cadê ela boot Starter test Cadê o open Fame meu Deus ah tá aqui meu Deus tá na minha cara vamos copiar dependência do Open Fame Vou colocar aqui para vocês no ã notion também então aqui config projeto Vamos colocar a dependência do Open Fan por que que eu vou usar openfin porque o openfin
é uma forma declarativa da gente fazer requisições http Vocês já vão entender de fazer requisições né Vocês já vão entender porque declarativa porque eu não vou escrever código de fato eu não vou escrever ali a requisição e tudo ali como eu faria com rest template por exemplo eu vou só declarar E aí o f vai fazer essa construção para mim por baixo dos panos entendeu uma forma declarativa a gente chama aqui é um XML e eu gosto de usar o open Fan uso no meu trabalho também e acho que fica super simples o o código
fica bem organizado gosto de usar essa essa biblioteca Então vamos abrir aqui o nosso pum vou parar a nossa aplicação vou adicionar o open Fame como dependência colocar aqui vamos dar um Reload do maven para ele está lá o open Fame deu erro por pum não que que deu erro eu botei no lugar errado botar não botei no lugar certo que tá dando erro não tá encontrando o open eu copiei errado deixa eu ver não Teoricamente Tá certo vou botar aqui como primeiro fazer um restart aqui da ide estranho eu abrir aqui um negócio normalmente
Eu Só adiciono ele normalmente ele já tá instalado no projeto né mas quando eu vou criar o projeto zero Eu Só adiciono ele deixa eu ver aqui o p de outro projeto que eu fiz com Open Spring Cloud Starter Open F Ah eu tenho que adicionar o Starter web já tem né já adicionei deixa ver fechar deixa eu dar um um Stall de novo maven menos o Ah tá tá faltando uma dependência o Spring Cloud verdade me esquecido boa galera Tem que adicionar essa dependência aqui também o dependence M esse cara aqui se não der
eu não vou usar também não vou ficar perdendo tempo deixa eu ver eu copiei certinho agora eu acho dependence Man depois de dependen certo certo tá certo Eu Sempre sofro com maven como eu falei para vocês Ah tem que colocar o João O João falou assim ó faz na mão com rest template mesmo assim já relembro algumas coisas é o legal é passar problema mesmo ess é graça o legal do Live coding é passar problema o Spring Cláudio version Mas onde é que eu coloco o Spring Cloud version Teoricamente ele já vem não vem tem
que declarar ah nas [Música] propriedades nas properties aqui só vem a versão do Java meu Deus e aqui ele tá tá vou explicar para vocês a minha bananice tá o pessoal do chat que que salvou aqui primeiro tem que adicionar o dependence Management mas aqui no dependence Management eu tava usando a version E aí eu tava me referenciando a uma variável como se fosse só que eu não em nenhum momento eu tava declarando a versão do Spring Cloud tem que declarar aqui nas properties quando a gente instala direto pelo Spring initializer ele já faz isso
ele coloca aqui a versão né e coloca aqui o depend Management eu fui colocar na mão me esqueci de colocar ele tava declarando aqui só a minha versão do Java mas não tava colocando né a versão do Spring Cloud então agora deve dar deve dar bom agora Teoricamente não deu bom tá faltando mais alguma coisa será Estranho acho que não acho que não deu bom não acho que não né tenho certeza que não deu bom eu não entendi por quê Reload do maven já dei não entendi porque que ele tá dando erro agora o massa
da Live ia ter erro ao vivo eu gosto disso porque a gente aprende também porque eu confesso para vocês tá vou confessar agora quando eu vou criar uma nova aplicação Spring cara Eu sempre venho aqui no spring initializer e pego as dependências aqui e ele já faz tudo para mim então tipo algumas coisas ã algumas coisas tipo a gente nem se liga que precisa sabe não sei vocês mas eu só vou fazend no automático ele já monta para mim então algumas coisas eu nem me ligo que preciso de adicionar é dá para fazer isso dá
para vir aqui no spring Copiar todas as dependências mas vamos ver aqui se a galera Tem mais alguma sugestão do que que possa ser Ah o problema é o comando que eu tô passando eu acho tá foi deu certo instalou as dependências vamos continuar era aquilo mesmo o problema era o menusu que eu tava passando que eu não tava passando o resto das Flex o bigorna quem nunca chorou no banho para esse tipo de problema já chorei confesso tá vamos lá já instalamos o fan Vamos criar o nosso Fan client Então vou criar um novo
pacote eu vou chamar de Fan e aqui eu vou colocar o meu book client como é que funciona o fan ele tem um jeitinho um umas anotações ali que a gente precisa colocar eu sempre pego eu vou pegar aqui um projeto de exemplo só pra gente seguir como exemplo mas basicamente a gente tem que colocar essa anotação Fan client na nossa classe e não é uma classe é uma interface por quê Porque é declarativo né A gente só vai declarar a gente não vai implementar de fato lembra que eu falei aquela vez lá quando a
gente estava falando do quando a gente estava falando né do que que era o fan o f é uma forma declarativa da gente fazer as requisições Então vou só declarar mas eu não vou implementar tô só declarando uma interface eu não vou implementar ela que vai implementar vai ser ali o próprio Fan né No momento de execução vai criar as coisas ali para mim vou dar um nome vou chamar de book api e aqui eu vou colocar URL a URL da onde eu vou querer consumir que é essa URL aqui URL da a WS https
2 p bar bar book example S3 não sei que que é onde tá o nosso Bucket do S3 e aí eu vou criar um método aqui no nosso client que vai fazer requisição lá pro nosso pro pro nosso arquivo de Jason então aqui vai mandar para Barra books.on Jason fazer uma requisição de post então um post um get na real não é um post virar esse post aqui vou fazer um get para essa URL E aí aqui o nome vai ser get books não vai ter request b então não vou mandar nada na requisição se
eu fosse mandar eu tinha que declarar tudo aqui no método mas eu não vou mandar nada tá vou só fazer um get normal e isso aqui vai me retornar uma lista então uma lista de books de book né vai me retornar uma lista de book e aqui no meu book service eu vou precisar dessa dependência que é o meu book client que eu vou chamar de book client vou criar o Construtor da minha classe então Public book service eu vou receber o meu book Cent eu vou fazer bent recebe client para que o Spring faça
a injeção de dependência para mim e eu vou fazer um return this. book client.get books Por enquanto não estamos fazendo nada demais né estamos só pegando os livros lá do do Jason mesmo e é isso aqui ele tá dizendo que pode ser final então T um final porque eu não tô alterando depois depois de iniciar no Construtor e tá deu certo eu acho né Teoricamente aí agora lá nosso Controller a gente vai usar esse service então aqui no nosso Controller a gente vai fazer a mesma coisa de dependências aqui do da classe né mas não
vai ser o book Cent vai ser o book service B service vou chamar de service service service service recebe service e aqui aass book contrer aqui eu vou fazer return this psice pget books from Library e aqui em vez de retornar mais por enquanto eu vou retornar Oi ainda return oi oi mas aqui eu vou fazer list de book que são meus books que vai ser isso aqui P service.get books from Library beleza [Música] ã o Michel perguntou por que usar um Construtor e não usar o required args constructor eh não sei costume costume eu
uso o Construtor uso bastante no meu trabalho e tenho costume de usar às vezes algumas coisas é só por costume mesmo vocês me perguntam tipo ah por que que tu faz ã isso né Por que que tu faz dessa forma e não de outra às vezes é costume mesmo tipo assim não é que seja a melhor prática mas é o costume que a gente vai pegando no dia a dia e acaba fazendo o Edmilson lembrou aqui ó a gente tem que colocar o enable Fame clients na classe principal senão ele não vai injetar o Bin
Bem lembrado a gente tem que vir aqui nessa na classe principal do nosso projeto né na classe de entrada e colocar a anotação enable Fan clients para que ele faça a injeção correta dos clientes F aqui para nós senão ele não vai encontrar esse Fan e não vai fazer injeção correta dele aqui no nosso book service Então a gente tem que colocar essa anotação Bem lembrado O Edmilson lembrou ã aqui eu já tinha esquecido a gente ia enfrentar o erro eu ia lembrar mas eu já tinha esquecido foi obrigado Edmilson O Edmilson falou o seguinte
ó também construtor é boa prática se usar o autoart fica preso ao Framework Pois é eu uso o Construtor por costume e também também porque a gente lá no trabalho gosta de usar para fazer com que a nossa classe fique independente ã das injeções do Spring eh para que nos testes a gente consiga injetar por nós mesmos sabe então a gente consiga fazer esse controle nos testes unitários facilita demais os testes quando a gente ã recebe o as dependências pelo Construtor eu uso para isso tá mas mais por costume também por já tá acostumada a
fazer assim aí já fica mais fácil para eu escrever os testes unitários etc aí o Adriano completou você pede o controle da injeção exato a gente pede o controle da injeção de dependência porque se eu coloco aqui só autard e não Ten o Construtor num teste fica mais difícil de simular isso aqui sabe eu sempre uso o exemplo dos Testes porque eu escrevo bastante teste lá no trabalho e às vezes fica bem complicado quando a classe tá muito acoplada ao Framework ou muito acoplada as outras classes fica bem bem difícil de testar ela então é
legal fazer essas ess essas partições tentar deixar a classe mais independente ã tá iniciamos a nossa aplicação que eu me lembro não falta nada Vamos enviar aqui uma requisição Zinha Oi eu esqueci de logar o resultado né System audio. println books parar vou executar de novo enquanto isso eu vou já fazer o enable aqui do Live Reload para nós build build Project rebild apply Ok parei a execução da aplicação vou iniciar de novo tá iniciamos vamos mandar uma requisição pronto deu 200 e ele logou aqui para nós o os books Teoricamente tem um resultado Então
vamos vamos retornar isso agora pro nosso pro nosso cliente né então vamos fazer aqui a gente vai retornar uma response enche contendo um book uma lista de books então vou fazer aqui um return response enche pon ok Ponto Body passando books ponto só isso pronto é isto E aí vamos partir pra VPS né que a gente já eu falei que ia ser uma aplicação simples que a gente ia só brincar e ainda não fomos para VPS Então vamos partir daí para VPS a Live vai ficar gravada galera vai ficar gravada depois tá vou mandar a
requisição e aqui ele tá nos retornando todos os nossos livros então beleza Tá funcionando a nossa aplicação simples só para Rever aqui alguns conceitos de Java a galera discutiu bastante aqui no chat também boas práticas eu tive erro ali com a instalação do F então foi legal pra gente D uma revisada aqui em alguns conceitos ver como faz algumas coisas ã E aí bora fazer o Deploy dessa nossa aplicação na VPS Então a primeira coisa que eu quero perguntar aqui para vocês é se vocês sabem o que é uma VPS Quem é que sabe eu
vou mandar um uma enquete aqui no chat Então você sabe o que são VPS sim Fê não fe mandei enquete o link do notion vou mandar aqui também pegar aqui para vocês tá pelo que eu tô vendo a maioria do da galera que tá aqui na live não sabe o que é uma VPS Então bora partir pra explicação do que seriam ppss E aí eu vou contar com a galera que tá no chat que já já sabe o que que é também ã para me me complementar na na explicação tá então quem já sabe o
que que é complementa na explicação quem não sabe vamos entender agora então vamos lá ã o que é uma VPS VPS é o acrônimo para servidor privado virtual que seria ã ã virtual Private server server tá E é um tipo de de hospedagem pra gente hospedar nossas aplicações eu coloquei um testinho aqui para ficar mais formal pra gente tá que oferece aos usuários um ambiente de servidor dedicado virtual o que que isso quer dizer então vamos lá é o seguinte ó a gente vai ter um um servidor físico que vai ser o por exemplo do
do hostinger tá hostinger que é o o serviço que a gente vai usar hoje então o hostinger que é um provém serviços de VPS eles têm lá o servidor físico deles e o que que acontece esse servidor físico é separado em servidores virtuais Independentes tá então no mesmo servidor físico numa mesma máquina no mesmo hardware rodam por exemplo três servidores diferentes como se fossem máquinas diferentes tá então para isso para que isso aconteça a gente usa uma técnica de virtualização que a gente chama onde a gente virtualiza o hardware em máquinas virtuais como se f
é que não é bem vms Tá eu já vou explicar para vocês que tem uma pequena diferença entre vms também que seriam máquinas virtuais mas basicamente a gente virtualiza o hardware o servidor físico em servidores virtuais que são servidores que foram criados virtualmente Tá mas eles no fundo são o mesmo hardware e aí a gente faz com que vários servidores Independentes com sistemas operacionais Independentes a sua parte ali os seus recursos dedicados para eles rodem ali no mesmo servidor físico usando hã a técnica de virtualização e essa técnica de virtualização a gente normalmente usa ã
sistemas que se chamam hypervisors hypervisor é o nome do do carinha que faz essa virtualização lá na máquina física tá então por exemplo vmware é um sistema conhecido de de virtualização é um hypervisor que a gente chama que é ele que vai ser responsável por os os orquestrar os recursos da máquina física pras máquinas virtuais pros servidores virtuais aqui nesse caso tá então o hypervisor é responsável por orquestrar osá tô com a palavra errada na cabeça os meu Deus os os Ai meu Deus osar os eu tava falando certo Agora eu não consigo mais falar
certo orquestrar orquestrar obrigada ele é responsável por orquestrar os recursos da máquina física para pros servidores virtuais ele é responsável por orquestrar tudo fazer com que eles rodem de maneira independente ali tá é o hypervisor que faz isso é esse sisteminha então aqui né embora fisicamente os recursos estejam num servidor compartilhado no mesmo servidor físico a tecnologia de virtualização permite que cada VPS que é cada servidor privado virtual ou virtual Private server opere de forma independente dentro dessa mesma máquina ali dentro desse mesmo hardware físico como se fosse um servidor físico separado então eles não
sabem da existência dos outros é como se eu tivesse ali o meu servidorzinho físico para mim mesma né e eu não sei da existência ali dos outros naquela máquina também rodando então isso significa que cada VPS tem o seu próprio sistema operacional então aqui numa mesma máquina física eu posso ter três servers virtuais rodando em sistemas operacionais diferentes esse aqui rodando Windows esse aqui rodando o bunto esse aqui rodando head Hat por exemplo cada um rodando um sistema de operacional diferente porque é como se fossem máquinas diferentes tá ã eles vão ter também recursos dedicados
para cada um deles então normalmente aqui o hypervisor faz a divisão dos recursos da máquina física igualmente aqui para para cada uma dos dos Servidores virtuais Então esse aqui por exemplo vai ter 2 GB de Ram esse aqui 2 GB 2 GB de Ram e esse aqui 2 GB de Ram e a máquina no total tem seis por exemplo então ele faz essa separação aqui para eles também aí para quem já conhece né vms máquinas virtuais pode estar achando que é a mesma coisa Ah VPS e VM é a mesma coisa então não é a
mesma coisa tá Eles Têm umas singelas diferenças as vms e o VPS eles partem do mesmo princípio eles usam a técnica de virtualização para criar coisas virtuais em cima de um servidor físico tá eles partem desse mesmo princípio Mas eles têm singelas diferenças eu anotei aqui algumas diferenças para vocês né eu procurei ali NS Procurei no Google e tal li certinho para colocar as diferenças corretas corretamente aqui para vocês mas eles possuem algumas diferenças Tá mas são bem parecidos se tu entende o conceito de vms tu entende o conceito de vpss também tá aí eu
coloquei até aqui um comparando com o E2 porque quando a gente pensa em vms né logo a gente já pensa em ec2 o serviço da WS né o ec2 elastic compute cloud é o serviço da WS pra gente criar as nossas máquinas virtuais lá e colocar nossas coisas para rodar o ec2 ele é um VPS ele pode ser considerado um VPS só que ele oferece muito mais do que uma VPS comum tá o PPS comum ele não vai te oferecer oferecer aut scaling por exemplo né auto escalabilidade então escalar de forma automática como o Amazon
E2 oferece ele não oferece algumas coisas para otimizar o desempenho para fazer o monitoramento da máquina virtual que o ec2 oferece o sistema o VPS costuma ser uma solução mais básica assim para pra gente utilizar para para hospedar o nosso servidor tá então o VPS costuma ser uma solução mais básica uma solução mais de entrada e uma solução mais barata também então se a gente quer criar uma aplicação que não precisa ser tão segura que não vai usar tantos recursos de máquina Então não vai precisar de tanta Ram não vai precisar de tanta CPU ela
não vai precisar de tantos recursos é uma API mais simples de rodar uma VPS é uma boa solução no começo tá inclusive pras nas nossas empresas pra gente utilizar VPS é uma uma boa boa solução E aí a VPS que a gente vai usar hoje é a VPS da da hostinger tá a hostinger é a nova parceira aqui do canal ã eles oferecem vários serviços tanto de hospedagem de site para comprar domínio para ter a nossa VPS então eles têm vários serviços mesmo e hoje a gente vai usar o serviço de VPS deles que é
muito bom e eu tô vou fazer a migração do meu site para que PR para hostinger também então tô pensando em fazer uma live o meu site tá lá em outro serviço né hospedado o Fernand kiper.com.br né e eu queria fazer a migração dele aqui para hostinger até para mostrar para vocês como é que funcionam esses serviços então a hostinger oferece como eu falei para vocês vários serviços pra gente fazer hospedagem tanto do nosso site quanto do dos nossos servidores usando servidores VPS e a gente tem desconto aqui na hostinger também então então para quem
quiser para quem tiver precisando comprar seu domínio para quem tiver precisando hospedar o seu site de uma forma mais barata né comparado como por exemplo aws porque qu é só quer hospedar seu portfólio quer hospedar Landing page de Algum freelancer que você fez alguma coisa a hostinger é uma ótima opção já comprei vários domínios aqui pela hostinger também quero trazer meu site aqui para ficar hospedado na hostinger e a gente tem desconto com o cupom Que perd Vocês conseguem desconto aqui nos serviços da hostinger Então vou mandar até o link aqui para vocês para quem
quiser dar uma olhada depois para quem tiver procurando né para comprar o seu domínio para fazer seu portfólio para fazer seu site pessoal ou para quem tá fazendo algum freelance vai precisar comprar o domínio ali para pro cliente que tu tá fazendo freelance não sabe aonde hospedar a Holger pode ser uma boa solução e uma solução bem em conta aí tá comparado com outros serviços de nuen então por exemplo aws aure gcp são muito bons oferecem ótimos serviços mas pra gente quando a gente tá falando de aplicações assim de larga escala coisas maiores tá como
por exemplo lá no meu trabalho no Itaú né a gente precisa de um serviço mais robusto aí a gente usa WS mas tem outros momentos que o que faz mais sentido mesmo é usar por exemplo um sistema aqui de VPS que é o que a gente vai usar da hostinger tá até às vezes para um MVP é mais rápido usar uma VPS para testar para colocar para fazer uma poc né usar um sistema de VPS até por ser mais barato também aqui você vocês estão vendo os valores Tá eu já tô logada aqui na minha
no meu painelzinho da hostinger Então vou trazer aqui para vocês e eu já tenho aqui minha VPS ó tenho aqui minha VPS ela é uma VPS que tá rodando um ubun então o sistema operacional que tá rodando nela aqui é um ubun e ela já tá de pé tá ela já tá rodando aqui já tá Running e cara para colocar ela rodando aqui na na hostinger foi muito rápido eu cliquei em duas coisas e a VPS já tava de pé sabe muito rápido mesmo muito fácil de configurar E aí como é que a gente vai
fazer como é que a gente vai fazer aqui ã o o pessoal perguntou como é que eu sei os limites do dos recursos ó aqui a gente consegue ver um overview de quanto a nosso a nossa VPS tá consumindo dos nossos recursos e quando a gente assina um plano lá de VPS também a gente escolhe né quantos recursos a gente quer dar a gente quer ter nessa nossa VPS nesse nosso servidor virtual no meu caso aqui ó eu tô usando só 1% da memória no meu disco eu tô usando só 15 GB de 400 GB
que eu tenho tá então aqui CPU usage tá em 0% porque não tem nada rodando lá na minha VPS então aqui a gente consegue ter uma certa um certo monitoramento dos usos aqui do nosso dos recursos da nossa VPS Então tá rodando aqui um Ubunto 22.04 E aí que que a gente vai fazer a gente vai se conectar com esse nosso ã com essa nossa VPS como é que a gente vai fazer isso Fê a gente vai se conectar através de ss Quando vocês forem configurar o servidor VPS de vocês ou até lá na Amazon
no ec2 a gente pode configurar o acesso via SSH Então a gente vai ter a chave sshh aqui na nossa máquina a mesma chave sshh que a gente usa para ser autenticar no github por exemplo e a gente vai usar essa chave SSH a gente vai configurar ela aqui no nosso na nossa VPS para usar ela para logar na nossa VPS e acessar ela via terminal fe eu não tenho chave csh na minha máquina nunca configurei Eu tenho um post lá no no Dev Tool onde eu explico o passo a passo de como configurar uma
chave ssg na tua máquina tem aqui o passo a passo bem completo nesse post aqui do devit e tem um vídeo aqui mas aí é só pros membros do canal mas a gente tem um vídeo aqui no canal que que para quem é membro e ainda não assistiu eu explico o que que é um o que que é a SSH o que que são as chaves SSH Como configurar também ó então é o vídeo entendendo SSH do zero tá exclusivo aqui pros membros do canal ã tá bem legal esse vídeo explicando aqui o que que
é esse sh tudo que vocês precisam saber sobre ess sh para conseguir fazer ali um uso básico né dessa ferramenta então tendo a chave sshh configurada na nossa máquina eh Deixa eu só tomar uma aguinha end a chave ssg configurada na nossa máquina a gente vai vir aqui por exemplo na hostinger Quando a gente tiver configurando o nosso nosso servidor VPS eu juro para vocês é dois cliques tá a gente vai escolher o sistema operacional que eu escolhi o bunto e a gente vai clicar ali configurar chave SSH E aí o que que a gente
vai ter que fazer a gente vai ter que colar a chave pública a nossa chave pública feia como é que eu pego a minha chave pública muito fácil vou mostrar para vocês aqui vou abrir o post para vocês ó vocês vão usar o o o próprio ã comando para gerar o par de Chaves ele vai gerar um par de Chaves público e privado o privado fica sempre na tua máquina o público é o que tu compartilha com serviços para conseguir te autenticar tu vai gerar o parte Chaves e normalmente tu usa uma senha para salvar
essa tua chave ali na tua máquina com senha eu uso a minha senha por exemplo ali para minha chave SSH depois de gerado a minha chave meu parte de Chaves Eu só copio essa parte de Chaves e colo lá no sistema que eu quero usar para me autenticar por exemplo no Mac a gente usa o comando PB copy e aí pega aqui da da pasta pssh barid RCA Pub que é onde fica normalmente salvo as chaves públicas aqui ã na nossa máquina né aí eu colo Esse comando aqui no terminal e já já tá copiado
aqui na minha área de trabalho a minha minha chave pública já tá aqui na minha área de trabalho só rodando Esse comando no terminal E aí eu fiz a configuração aqui no painel da hostinger que é super simples como eu falei para vocês tá aí f como é que eu vou me comunitar com essa máquina tá tu criou a chave C entendi tem a chave pública privada privada fica na minha máquina pública eu compartilho para dizer para conseguir fazer essa autenticação mas como é que eu vou me conectar nesse servidor cara é muito fácil a
gente vai copiar ó ele até diz aqui para nós ó a gente tá aqui no nosso p da VPS entro em SSH access né acesso via sshg e ele vai ter aqui ó terminal que que é esse terminal F é literalmente o que tu precisa copiar e colar no teu terminal então venho aqui em terminal abro o meu terminal e colo isso quando eu colei ele vai pedir a minha senha que senha é essa F é a senha da minha chave privada que está salva na minha máquina vou colocar minha senha e tô conectada no
servidor ó tá vendo aqui ó tô conectada em root @s 46 que é o meu servidor aqui tô conectada nele já Como assim tu tá conectada F tô aqui tô dentro dele ó tô dentro da do Servidor ó consigo ver as pastas ó vou dar um CD aqui um LS consigo ver todas as pastas que tem aqui dentro do meu servidor consigo executar coisas aqui instalar coisas nessa máquina e é exatamente o que a gente vai fazer agora a gente vai instalar o Java aqui nessa máquina e fazer o a nossa aplicação rodar aqui dentro
do nosso VPS é isso que a gente vai fazer Então galera eu vi que o pessoal tava pedindo aí no chat o pessoal que os membros aqui do canal e eu vi agora e acabei de me lembrar quem tá assistindo a Live deixa o like se inscreve aqui no canal isso ajuda demais o canal ã alcançar novos públicos alcançar novas pessoas e fazer com que esse conteúdo chegue a outras pessoas que estão aprendendo sobre Java sobre VPS sobre Deploy de aplicação também então se possível deixem um like se inscreva aí no canal que isso ajuda
demais a gente tem 370 pessoas assistindo e 535 likes Então quem ainda não deixou o like se puder deixar o like vai ajudar demais o Edmilson perguntou se eu trabalho no Itaú sim trabalho no Itaú pelo jeito o Edmilson trabalha também então somos colegas YouTubers o Gabriel perguntou a f Vale a pena comprar o MacBook Air M1 de 8 GB e 256 de enamento ou é pouco essa config eu já tenho um tempo que trabalho com programação eu queria ver como é um Mac então Gabi eu tinha um M1 também um Air mas de 16
GB de Ram e 256 e 512 de SSD cara rodava tudo muito bem assim tipo super liso eu só troquei mesmo por causa das lives e dos vídeos porque Live e vídeo exige demais de process de processamento de vídeo pro PC né né E aí o o air já não tava mais aguentando Ele começava a dar umas travadinhas e tal aí eu tive eu troquei pro pro com com a GPU lá da da Apple Para justamente para usar aqui pras lives e pros vídeos que já tava precisando mas quando eu tava fazendo meus projetos projetos
pessoais às vezes já cheguei a trabalhar no Meu MacBook Air quando eu trabalhava na outra empresa ele rodava super de boas super de boas ele Claro tinha mais rã ali e tal mas rodava bem lisinho Então acho que dependendo do que tu fizer qual tipo de de aplicação tu trabalha como por exemplo trabalha com node JavaScript acho que vai tancar fácil tá 8 g de Ram vai vai ir de boa agora se trabalha com algo um pouco mais pesado tem que ter ali alguma alguma SDK alguma coisa para rodar algum emulador daí precisaria um pouco
mais de config tá conectei aqui com a minha máquina que que a gente vai fazer aqui nessa máquina vamos instalar o Java como é que como que a gente vai instalar o Java F cara a gente vai usar os comandos aqui do sudo sudo APT get vamos instalar o Java como é que eu vou fazer primeiro a gente vai fazer um update no nosso aptg Então vou vir aqui no terminal porque às vezes tá desatualizado tá então às vezes eles iniciam aqui as vpss com uma versão meio desatualizada legal a gente fazer essa atualização Então
vou só copiar esse comando aqui e vou colar no nosso terminal su ptg update ele vai fazer aqui o update fez o update Beleza deixa eu até fazer um LS RM desafio remover esse arquivo beleza aí eu vou entrar agora não vamos instalar o Java P eu instalo a jdk aqui não eu não vou instalar jdk nessa nossa máquina tá nesse nosso VPS eu vou instalar só o jre por que o jre que é o Java runtime environment por qu f porque a gente já vai levar o arquivo o build dado a gente já vai
levar o build da nossa aplicação lá para dentro da VPS a gente não vai buildar a nossa aplicação lá na VPS então a gente não precisa do jdk se a gente instalasse a jdk completa o Java development kit né a gente instalaria o kit de desenvolvimento que vem todas as questões de debug de compilação de uma aplicação Java etc a gente não vai fazer nada disso na nossa VPS a gente só vai executar uma aplicação Java só Executar a aplicação já vai vir buildada aqui para nós que é a gente vai copiar o arquivo de
build aqui pra nossa pra nossa VPS então eu vou instalar O jre que é mais leve tá e serve só para fazer execução de projeto Java execução de programas Java por isso que é Java runtime environment eu vou instalar aqui na versão 17 então openjdk 17 jre é o que a gente vai instalar aqui na nossa VPS Por que o 17 porque é a versão ali do Java que a gente tá usando ali na nossa aplicação que a gente criou né então vamos instalar aqui na nossa máquina instalado no meu caso já tava instalado e
a gente vai rodar aqui um Java menos menos version só para ver se tá tudo certo com Java ó Java na versão 17 beleza tá tudo certo agora o que que a gente vai fazer a gente vai voltar aqui pro nosso intelij vou parar a aplicação da nossa vou parar a execução na nossa aplicação e vou fazer o build dessa nossa aplicação ã Spring aqui vamos buildar ela então a gente vai vir aqui em life cycle e vamos clicar aqui nesse botãozinho Packet a gente vai usar o maven para fazer o build da nossa aplicação
o maven antes de de fazer o build ele Executa os testes unitários Então os testes unitários da sua aplicação tem que tá passando para que ele faça o build com sucesso se Claro se tu não escreveu nenhum teste unitário ele vai passar com sucesso né mas caso tu esteja escrevendo os testes ainda e ainda não terminou tem algum teste falhando ele não vai fazer o build aqui por completo Quando tu clicar nesse package ele vai falhar porque vai ter alguma falha no teus testes unitários no meu caso não tem nenhum teste então ele conseguiu buildar
aqui com sucesso porque não ter nenhum teste também passa com sucesso e onde é que ele salvou esse arquivo de de build né onde é que ficou esse resultado aqui do build da nossa aplicação tô aqui nessa pasta target ó Então se vocês ver verem aqui a gente tem a pasta source onde tá os arquivos da nossa aplicação e do lado dessa pasta source tem a pasta target aqui dentro vocês estão vendo que tem ó api exemplo 0.01 snapshot.jar esse esse arquivo pon jar é a nossa aplicação Java buildada tá então é isso aqui que
a gente é o executável Java da nossa aplicação a gente vai usar o comando Java para executar esse jar e ele executa a nossa aplicação vamos testar primeiro se esse build Tá certo né então como é que a gente vai fazer a gente vai vir aqui no nosso terminal vamos fazer Java menos jar para dizer que a gente tá executando um arquivo jar com Java onde tá esse arquivo tá em ponto barra target barra api exemplo snapshot.jar vamos executar esse arquivo ó se vocês verem ele iniciou a aplicação Spring aqui fez os logs beleza e
aí vamos lançar uma requisição aqui vir insônia para ver se tá tudo certo lançamos a requisição deu do 200 Então beleza o build da nossa aplicação Tá bonitinho agora o que que a gente vai fazer a gente vai pegar esse build aqui esse nosso ponto jar e jogar para dentro da nossa VPS aqui pra nossa virtual Private pro nosso virtual Private server a gente vai jogar aqui para dentro como é que a gente vai fazer isso a gente vai usar o comando scp esse comandinho aqui ó scp aí a gente vai pegar o pef do
nosso arquivo jar onde ele tiver guardado e jogar para dentro do nosso Rot lá na nossa VPS E aí colocar aqui no onde a gente quer salvar então vou até copiar aqui o comando Vou digitar aqui para nós scp pon barra target bar api exempl snapshot.jar onde eu vou colar isso V vou mandar aqui pro meu root @ 217 o que que esse root aqui isso aqui esse 1.16.62 p51 é o endereço IP aqui de acesso pro meu pro meu VPS tá o endereço ip da minha VPS endereço IP aqui da minha máquina tá é
como se fosse a minha máquina aqui o meu Mac tem o endereço IP né na na internet essa VPS aqui também tem Então esse é o endereço IP dela e a gente usa esse endereço IP para acessar ela via SSH usando aqui o root @ Então a gente vai copiar isso vamos colocar a aqui então a gente vai copiar esse arquivo aqui esse jar para dentro de Rot 217 n mas a gente precisa colocar o pef onde a gente vai salvar isso então eu vou salvar em do P bar home Vou salvar na home dessa
máquina na pasta home lá que ela tem F Da onde tu tirou essa pasta home ó se eu der um LS aqui eu vejo que ela tem uma pasta home Então vou entrar aqui em home por enquanto tem uma coisa aqui em home eu vou deletar que era um outro teste que eu tava fazendo antes deletei já não tem mais nada aqui dentro dando um LS não tem mais nenhum arquivo aqui dentro então a gente vai copiar esse nosso arquivo aqui do API exemplo lá para dentro com comando scp vamos rodar ele vai pedir a
senha do meu SSH né da minha chave SSH que a gente precisa colocar porque senão tem que ver se eu posso fazer esse acesso e ele vai fazer a cópia lá para dentro ó 100% beleza copiou vamos vir aqui e vamos dar um LS ó O arquivo já tá aqui dentro vamos executar esse arquivo então Java menos jar api exemplo n executar ó aplicação rodando e ouvindo na porta 8080 estamos com a nossa aplicação rodando na nossa VPS E agora o que que a gente vai fazer eu vou pegar o endereço IP aqui da nossa
máquina vou jogar aqui na no Browser vou botar dois pontos porta 8080 barra api bar books e Teoricamente era para funcionar continue e ó lá nosso servidor rodando nosso servidorzinho Java rodando na nossa VPS e retornando com sucesso se fechar o terminal ele para de rodar o programa à Não depende da forma como tu fechar mas não tá ele continua rodando se eu der um se eu der um control c aqui e parar a execução ele deu algum erro aqui no no request ó algum Exception na nossa aplicação mas aqui ele retornou com sucesso Se
eu der um control c aqui e e parar a execução da api ele vai parar mas não se eu só por fechar o terminal ele não vai parar a execução aqui da da minha aplicação Java tá vai continuar rodando ali dentro é e Existem algumas ferramentas para rodar em segundo plano mas tipo assim é que aqui eu conectei via terminal Mas o que eu tô querendo te dizer que tipo assim a gente tem como deixar rodando lá dentro sem precisar estar sempre com terminal aberto é isso que eu quero te dizer tá entendeu Tipo tem
como fazer isso e Inclusive a gente faz a gente usa isso para o VPS esse serviço a gente usa realmente tá para servir aplicações é uma ótima opção aí para quem tá buscando um plano mais acessível para quem tá talvez na primeira versão do seu projeto algum freelance alguma primeira versão de de de projeto dentro da empresa primeira versão do produto é bem interessante às vezes para aplicações que já são mais maduras mas que não consomem tanto não precisam de tanta escalabilidade a VPS é uma ótima opção também por exemplo para mim pro meu site
pessoal pras coisas que eu faço ali do que perd também que eu tenho ali uma um backend Zinho meu que retorna algumas coisas faz alguns fets para mim super uma VPS casaria também inclusive vou Mig coisas aqui PR hgar então a VPS é muito boa em vários cenários aí para quem tá criando seus projetos é o o Jonas mandou assim ó no caso dela aí para porque o processo é iniciado no m local pois é bom Galera Era isso da Live de hoje era isso conseguimos fazer a nossa aplicação Zinha colocamos ela para rodar aqui
na VPS Espero que quem não conhecia VPS não sabia o que era saia da Live de hoje entendendo um pouco mais né O que que são VPS e entendendo como usar esses serviços e vendo como é simples também então tipo assim aqui na VPS eu instalei o Java mas Vocês poderiam instalar o node aqui poderia instalar o node aí fazer o instalação do react rodar uma aplicação react vocês mano é uma máquina aqui é um servidor uma máquina vocês podem instalar o que quiserem né colocarem para rodar o que quiserem aqui dentro É bem interessante
Então super Recomendo vocês explorarem um pouco mais disso também isso ajuda auda a entender vários conceitos também de de infra no geral entender um pouquinho mais como funcionam essas coisas é bem legal pretendo trazer mais conteúdos desse aqui pro Canal E aí galera uma coisa legal tipo assim ó a gente fez o acesso aqui via o endereço IP né Mas a gente pode configurar uma um domínio para essa nossa VPS para que isso aqui Fique escutando num domínio e não num nsp para que eu consigo acessar aqui via por exemplo minha AP minha api.com.br né
a gente consegue configurar um domínio aqui para essa nossa VPS então tem várias coisas aqui que a gente pode fazer a gente pode inclusive comprar o domínio aqui pela hinger então venho aqui procuro minha api p vou procurar ó o domínio comom ó ou sei lá api da api da F compra aqui o domínio ó o domino.com tá 19 e99 no primeiro ano tá com super desconto ó 73% de desconto então venho aqui compro o meu domínio vou lá na minha VPS venho aqui na minha VPS faça a configuração de um domínio para ela então
tudo aqui a gente consegue configurar ó eu consigo por exemplo resetar as configurações do meu SSH se eu perder acesso Aquela minha chave SSH eu consigo vir aqui e fazer a a resolução D NS pro meu domínio né ó aqui eu consigo ter acesso aos os ip addresses da minha chave é bem legal ó Tipo eu consigo configurar mais de uma chave SSH para acessar essa aplicação então se eu e um outro colega meu que estamos trabalhando precisamos acessar acessar a VPS via SSH venho aqui e configuro a minha a minha chave e a chave
dele cada um acessa na sua máquina com essa chave enfim é super tem várias possibilidades aqui do que que a gente pode fazer com uma VPS tá um serviço bem legal de brincar bem parecido com a ws2 também então para quem depois no futuro quiser mexer com E2 é bem legal tem vídeo aqui no canal também falando sobre a ws2 fazendo Deploy de uma aplicação Java no E2 da WS tem vídeo aqui no canal Depois eu deixo aqui na descrição da Live Mas já tem vídeo quem quiser lá procurar tem vídeo aqui enfim quis D
um viw aqui para vocês o o sistema operacional vocês podem escolher tá se vocês não quiserem fazer aqui por exemplo não quero fazer o as coisas do zero aqui na minha VPS eu já quero que já venha rodando uma aplicação WordPress por exemplo já quero que essa aplicação Rode uma aplicação WordPress ou Rode uma aplicação node ele já tem aqui ó a opção da gente escolher o que que a gente já quer que venha rodando tá a gente já pode aqui na hostinger por exemplo então a gente já pode escolher eu já quero que venha
com uma aplicação Wordpress T dando nessa VPS ou não eu quero ter o controle do zero quero fazer toda a configuração só vem o sistema operacional que foi o meu caso aqui também podemos ter fazer essa escolha é bem legal tá é bem legal e é super útil em vários cenários tá a solução de VPS é é é uma solução mais acessível e muito utilizada tá muito utilizada no mercado é isso galera cansei de falar espero que vocês tenham entendido um pouco mais sobre Java na Live de hoje tem entendido um pouco mais sobre VPS
Ou pelo menos tenho dado risada enquanto eu não conseguia falar a palavra orquestrar foi uma coisa que eu aprendi na Live de hoje a falar a palavra orquestrar que eu tava com sérias dificuldades e enfim piadas a parte espero que vocês tenham gostado e vejo vocês no próximo vídeo vejo vocês na próxima Live Amanhã vai ter vídeo novo aqui no canal então para quem quiser maratonar aí o canal Amanhã tem vídeo novo e se semana que vem tem vídeo de novo também então tem vídeo toda semana aqui no canal Live todo domingo e é isso
galera boa noite Vamos ficando por aqui e até a próxima não se esqueçam de deixar o like se inscrever aqui no canal Falou boa noite