DEV Community

Cover image for O que é um deploy?
Nicolas Evangelista
Nicolas Evangelista

Posted on

O que é um deploy?

O que é? De onde vieram? O que comem?

Esse texto foi escrito após um período de grande decepção, muitas incertezas sobre a carreira em tech, bem no vale da auto-estima entre a inteligência de Alan Turing e a certeza de nunca ser um bom desenvolvedor. Tudo isso por conta do tema de hoje: Deploy de aplicações.

Como disse Marx no prefácio de sua magnum opus, O Capital: "Todo o começo é difícil — isto vale em qualquer ciência."
Não foi diferente para mim, começando a me aventurar no mundo de DevOps após ter sido instigado por uma dúvida muito trivial: "Como meu código vai sair do local host e ir parar na internet?", foi assim que eu me dei mal. Ou quase.

Sumário

Tudo é físico

A maior dificuldade que tive para entender esse processo foi exatamente o marco zero da computação, o motivo pelo qual todos podemos ler textos online, ver conteúdos divertidos e ajudar outras pessoas ao redor do mundo: Tudo é físico!
Em algum lugar do mundo, o nosso código existe na forma de bits, eletricidade, incomodando um hardware etc., ele está lá dando uma baita canseira em algum servidor físico.

Mas isso não diz nada a respeito - até o presente momento - sobre o que é um deploy, então vamos por partes!

Por que meu código está preso ao localhost?

A associação ainda não tinha sido feita, esse conceito estava órfão em minha mente.
Pensei nisso por muito tempo, de verdade, passei noites em claro pensando em formas mirabolantes de resgatar meu querido código de dentro dessa prisão chamada "localhost", mas afinal o que é o localhost?

Espera um pouco... O localhost possui um nome muito sugestivo: É um host (server) local!
Poxa! Como eu nunca havia pensado nisso?!?

O localhost nada mais é do que hostname, equivalente ao DNS para a internet e os IPs públicos, onde seu computador irá fazer uma requisição para ele mesmo, o IP do localhost sempre será o IP de sua máquina, portanto podemos acessar nossa aplicação da seguinte maneira:

(Nosso localhost) -> 127.0.0.1 : (Porta local) -> 3000
Enter fullscreen mode Exit fullscreen mode

Isso significa que estamos acessando nosso IP, um host local, na porta de número 3000 onde estará rodando nossa aplicação, aqui deve-se atentar ao fato de que o IP será diferente e a porta também, deverá seguir seu próprio código para realizar este experimento.

Diagrama representando o localhost

O DNS, ou Domain Name Service, nos ajuda a nomear os IPs, tal qual nossos documentos que contam com um nome e um Registro Geral, o famoso RG. Ainda não somos máquinas, mas temos algumas semelhanças.

Se ligarmos o tico com o teco veremos que o passo inicial foi dado, nosso código está rodando em algum lugar.

Final boss: A internet.

Até aqui já sabemos que o nosso código não é uma alucinação coletiva, e nem está tão aprisionado assim, mas então como podemos jogá-lo para dentro desse oceano chamado internet?

A resposta é simples: Além de possuirmos um IP local, também possuímos um IP público, para que outros computadores possam nos enxergar na internet. Ok, estamos chegando à algum lugar.

A ideia é boa e está tudo uma maravilha mas aqui temos outro problema, um problema físico!

Físico?! Como assim!?!

Pois é, pequeno gafanhoto. Nesse cenário ideal nós já nos esquecemos do marco zero da computação, a eletricidade!
Aqui basta pensar no seguinte cenário: Colocamos nossa aplicação para rodar em nosso computador e conseguimos mergulhar nosso código nas águas do oceano da web, mas e se desligarmos nosso computador? Aí é que mora o perigo, porque nosso código será "desligado" também.

Ok, então qual a solução?

A solução é colocar nosso código em uma máquina que não desliga, literalmente.

Devemos enviar nosso código para um servidor e executá-lo dentro do mesmo servidor, que terá um IP privado, o tal do localhost, e um IP público que poderá ser acessado por outros computadores que estão conectados na internet.

Isso, por definição, seria um deploy feito da forma mais primitiva possível, mas pense positivo, esse conceito já não é mais um mistério.

Diagrama representando o acesso ao servidor

Na data presente, em Outubro de 2023, existem diversas formas de fazer esse bendito deploy, porém esses foram os conceitos fundamentais que me ajudaram a entender um pouco mais sobre esse processo que parecia tão impossível.

No próximo artigo irei abordar as diferentes formas de fazer um deploy e como isso foi realizado ao longo dos anos, então fiquem ligados para mais novidades não tão novas assim.

Agradecimentos

Graças à comunidade Heart Developers pude entrar em contato com outro profissional da área de DevOps que abriu meus caminhos sobre este tema, esse artigo é apenas uma forma de agradecimento pelo tempo cedido. Valeu, He4rt! Valeu, Felipe Schossler!

Bibliografia

https://kubernetes.io/docs/concepts/overview/#why-you-need-kubernetes-and-what-can-it-do

https://developer.mozilla.org/en-US/docs/Learn/Getting_started_with_the_web/Publishing_your_website

https://www.hostinger.com/tutorials/what-is-localhost

Top comments (9)

Collapse
 
yasmimdemelo profile image
Yasmim de Melo

Parabéns por transformar esse mundo com inúmeras sopas de letrinhas, em simples palavras com ótimas analogias.
Ameiiii💕!
Por mais que o grande @felipeschossler já tivesse me explicado, tu conseguiu colocar em palavras mais simples e fáceis de entender!
Ficarei ligada em seus conteúdo.
Sucesso 🚀

Collapse
 
felipeschossler profile image
Felipe Schossler

Baita artigo, você conseguiu falar sobre um assunto complexo para iniciantes de maneira simples, parabéns. Qualquer coisa sabe que é só chamar! 🚀

Collapse
 
samucadev profile image
SamucaDev

Muito bem construido!

Collapse
 
clintonrocha98 profile image
Clinton Rocha

Ótimo artigo 🤟🏽vou ficar na espera do próximo hehehe

Collapse
 
danielhe4rt profile image
Daniel Reis

O basicão pra introduzir uma galera no assunto e bem sucinto nas explicações.

Obrigado pela contribuição!

Collapse
 
marcelomagal profile image
oChefDev

Como a sua compreensão sobre o aspecto físico da computação influenciou a forma como você aborda o deploy de aplicações na web?

Collapse
 
guto profile image
guto

Parabéns pelo conteúdo! Simplesmente sensacional!

Collapse
 
matheusfilg profile image
Matheus Filgueiras

Artigo Insano de bom, simples, didático e objetivo, tinha que ser He4rt 💜

Collapse
 
gabrielalca profile image
Gabriel Alcântara

Ótimo artigo, bem claro e explicado.
Sucesso!!