Skip to content

Commit

Permalink
Merge pull request #4 from SpawW/main
Browse files Browse the repository at this point in the history
Correções e melhorias no capítulo como_ler
  • Loading branch information
gomex committed Jul 20, 2020
2 parents 7b8e07d + afa4d0c commit f2daec1
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 42 deletions.
4 changes: 2 additions & 2 deletions manuscript/como_ler.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Como ler esse livro

Ele pode ser lido como a maioria dos livros, que é começando da primeira página até a última, mas você pode pular sem culpa alguns capítulos ou até mesmo ir diretamente no conteúdo que desejar.
Ele foi construído de uma forma que os conceitos são apresentados e desenvolvidos a medida que são necessários, isso quer dizer que se você pulou alguns capítulos e encontrou dificuldade para entender, talvez voltar atrás e ler os capítulos anteriores talvez ajuda no processo.
Ele foi construído de uma forma que os conceitos são apresentados e desenvolvidos a medida que são necessários, isso quer dizer que se você pulou alguns capítulos e encontrou alguma dificuldade para entender, talvez retornar um pouco e ler capítulos anteriores possa auxiliar no entendimento.

O aconselhável é que você leia o livro da forma convencional, pois terá a oportunidade de ver outro ponto de vista sobre os conceitos que você já conhece e assim reforçar esse conhecimento.

Expand Down Expand Up @@ -31,7 +31,7 @@ A ideia é que ele aborde as seguintes coisas:

## O que você precisa saber pra ler esse livro?

O objetivo desse livro é que ele seja para qualquer pessoa da área de TI, ou seja, para quem está recém entrando também. Alguns termos serão difíceis caso você não seja da área ou tiver pouca experiência, mas em casos como esse, por favor abra um ticket [aqui](https://github.com/gomex/deploy-em-producao/issues) com seu feedback, pois apenas assim será possível fazer um livro que sirva para todas as pessoas.
O objetivo desse livro é que ele seja para qualquer pessoa da área de TI, ou seja, para quem está começando também. Alguns termos poderão ser difíceis caso você não seja da área ou tiver pouca experiência, mas em casos como esse, por favor abra um ticket [aqui](https://github.com/gomex/deploy-em-producao/issues) com seu feedback, pois apenas assim será possível fazer um livro que sirva para todas as pessoas.

Será necessário muito feedback e colaboração de todas pessoas para entregar um contéudo que sirva tanto para quem começa, como para quem já está com mais experiência. Esse é o desafio.

Expand Down
24 changes: 12 additions & 12 deletions manuscript/o_que_e_deploy.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@

## Introdução

Muito se fala sobre deploy e a maioria das pessoas que já estão, há algum tempo, na área de Tecnologia da Informação (TI) , provavelmente já tenham algum entendimento sobre o que é isso, e, quem iniciou na área há pouco, possivelmente captou "alguma coisa" pelo contexto.
Há muito tempo o termo deploy é utilizado na área de Tecnologia da Informação (TI) e as pessoas que trabalham nesta área provavelmente já se deparou em algum momento com ele, mesmo que "nunca tenha feito um" provavelmente tem uma ideia do que ele é.

Essa é a oportunidade para se estabelecer aqui um entendimento sobre o que é deploy, como ele funciona e porque ele é tão importante para área de TI.
Vamos então, juntos, estabelecer uma definição do que é na prática o famoso deploy, como ele funciona, e porque é tão importante para área de TI.

Pra começar, deploy é um verbo do idioma inglês, cuja tradução mais próxima talvez seria posicionar.
Esta palavra tem origem na língua inglesa e sua tradução para o portugês seria provavelmente: posicionar.

Quando se fala em fazer deploy, imagine que isso significa uma forma de posicionar algo, ou seja, é basicamente pegar algo que está em uma posição/localização e colocar em outra.
Quando se fala em "fazer deploy", imagine que isso significa uma forma de posicionar algo, ou seja, é basicamente pegar algo que está em uma posição/localização e colocar em outra.

Isso quer dizer que quando alguém falar que vai "deployar" algo, é basicamente o jeitinho brasileiro de usar uma palavra em inglês e verbalizar ela em português, o que não é de todo ruim, uma vez que quem escuta entende perfeitamente, ou seja, a comunicação funciona e não há problema algum com isso. Chato mesmo é alguém que complica a comunicação para forçar palavras não usuais e assim tentar demonstrar uma certa superioridade linguística. Aconselha-se a leitura [desse livro](https://www.amazon.com.br/Preconceito-Lingu%C3%ADstico-Marcos-Bagno/dp/8579340985) sobre preconceito linguístico.
Isso quer dizer que quando alguém falar que vai "deployar" algo, é basicamente o jeitinho brasileiro de usar uma palavra em inglês e verbaliza-la em português, o que não é de todo ruim, uma vez que quem escuta entende perfeitamente, ou seja, a comunicação funciona e não há problema algum com isso. Chato mesmo é alguém que complica a comunicação para forçar palavras não usuais e assim tentar demonstrar uma certa superioridade linguística. Aconselha-se a leitura [desse livro](https://www.amazon.com.br/Preconceito-Lingu%C3%ADstico-Marcos-Bagno/dp/8579340985) sobre preconceito linguístico.

## Como funciona o deploy de um produto de software

Expand All @@ -22,7 +22,7 @@ O deploy é o ato de pegar esse conjunto de arquivos e levar até um determinado

Normalmente um software passa por alguns destinos antes de chegar no seu habitat final, que é o ambiente de produção. O que se chama de produção, dessa forma, é basicamente o lugar oficial de onde os usuários finais deste produto poderão acessá-lo.

As boas práticas apontam que antes de chegar no ambiente de produção esse software passe por outros ambientes, que normalmente são os seguintes, e, muitas vezes seguem também nessa ordem:
As boas práticas apontam que antes de chegar no ambiente de produção esse software passe por outros ambientes, que normalmente são os seguintes, e muitas vezes segue também nessa ordem:

- Desenvolvimento
- Teste/Staging
Expand All @@ -40,24 +40,24 @@ Em alguns casos, a infraestrutura necessária para simular o ambiente de produç

Não existe um nome para esse ambiente que possa ser considerado unânime, mas esse é o ambiente no qual se espera que o software esteja mais maduro, isso quer dizer que aqui o código já passou por alguma análise e está pronto para ser validado por outras pessoas.

O que aqui é chamado de **análise** será mais detalhado nos capítulos posteriores, mas, por hora, basta saber que esse é o processo usado para avaliar se há algum problema no código, normalmente de forma manual, e feito por uma outra pessoa, que analisa seu código a fim de encontrar possíveis erros.
O que aqui é chamado de **análise** será mais detalhado nos capítulos posteriores mas, por hora, basta saber que esse é o processo usado para avaliar se há algum problema no código, normalmente de forma manual, e feito por uma outra pessoa, que analisa seu código a fim de encontrar possíveis erros.

Esse é, via de regra, o último local que o código "visitará" antes de ser conduzido para o ambiente que será usado pelos usuários reais do serviço.Ou seja, é aqui o local no qual costumeiramente acontecem os testes mais "pesados".
Esse é, em via de regra, o último local que o código "visitará" antes de ser conduzido para o ambiente que será usado pelos usuários reais do serviço.Ou seja, é aqui o local no qual costumeiramente acontecem os testes mais "pesados".

Esses testes muitas vezes usam dados mais próximos do que os que seriam usados no ambiente real, de forma que validações bem mais elaboradas podem acontecer. Habitualmente, times de software simulam o uso do sistema, de forma automatizada ou não, a fim de encontrar possíveis erros. Esses tipos de testes serão tratados posteriormente. Por agora é suficiente saber que é nesse ambiente que isso habitualmente acontece.
Esses testes muitas vezes usam dados mais próximos do que os que seriam usados no ambiente real de forma que validações bem mais elaboradas podem acontecer. Habitualmente os times de software simulam o uso do sistema, de forma automatizada ou não, a fim de encontrar possíveis erros e esses tipos de testes serão assunto de outros capítulos. Por agora basta sabermos que é nesse ambiente que isso habitualmente acontece.

É importante salientar que se você copiar os dados de produção para ajudar na validação dos ambientes de "teste" e/ou desenvolvimento, deverá lembrar de apagar dados pessoais das pessoas que utilizam seu sistema. Imagine se fosse você a pessoa que utiliza um sistema, sabendo que seus dados pessoais estão acessíveis para qualquer membro da equipe de desenvolvimento?

### Produção

Aqui é oficial, todo produto agora pode ser utilizado pelos clientes. Em geral, esse ambiente demanda um cuidado maior, tanto de quem pode fazer o deploy, como na disposição da quantidade de recursos. Muitas vezes o ambiente de produção tem, ao menos, duas máquinas, que carregam o mesmo conteúdo. Isso permite criar uma situação chamada de alta-disponibilidade, que ocorre quando o serviço permite que uma máquina seja perdida por falhas não esperadas, sem que isso afete a sua disponibilidade.
Aqui é oficial, todo produto agora pode ser utilizado pelos clientes. É onde tudo ocorre "para valer" é normalmente maior (em quantidade de recursos) e mais restrito (no que tange a como quem pode fazer alterações como um deploy). É comum o ambiente de produção ser composto por, no mínimo, duas máquinas configuradas com o mesmo mesmo conteúdo. Isso ocorre para criar uma situação chamada de alta-disponibilidade. Neste cenário o serviço é mais resiliente e, caso uma das máquinas seja perdida por falhas inesperadas, o serviço continuará disponível.

Usando o exemplo anterior do site, basicamente, seria a hipótese de se ter duas máquinas hospedando os mesmos arquivos do site, e, caso aconteça uma falha elétrica, ou qualquer outro problema em uma das máquinas, a segunda pode assumir o serviço sozinha sem muitos prejuízos à disponibilidade do serviço ofertado, que, neste cenário, significa exibir o site para as pessoas que o acessam.
Usando o exemplo anterior do site, basicamente, seria a hipótese de se ter duas máquinas hospedando os mesmos arquivos do site e, caso aconteça uma falha elétrica, ou qualquer outro problema em uma das máquinas, a segunda pode assumir o serviço sozinha sem muitos prejuízos à disponibilidade do serviço ofertado, que, neste cenário, significa exibir o site para as pessoas que o acessam.

## Na prática, como funciona o deploy?

Frequentemente, o ato de fazer deploy se resume às ações de copiar os arquivos de um lugar - que pode ser o repositório de código ou de artefato - e depositar ele no ambiente de destino.

Seguindo o exemplo anterior do site, o ato de fazer o deploy corresponderia a copiar os arquivos html, css e javascript, que estão no repositório de código, e depositá-los no servidor que hospedará aquele ambiente.

Deploy para testes do site usado como exemplo acima? O ato de fazer deploy seria resumido a copiar os arquivos do repositório de código e depositá-los no servidor que foi designado para ser ambiente de teste.
Deploy para testes do site usado como exemplo acima? O ato de fazer deploy seria resumido a copiar os arquivos do repositório de código e depositá-los no servidor que foi designado para ser ambiente de testes.
Loading

0 comments on commit f2daec1

Please sign in to comment.