Olá. Faz tempo. É a forma plana do incorporador.
Todos os engenheiros que visitaram este blog. E não engenheiros.
Muito obrigado. Primeiramente, não há código ou linha de comando neste artigo.
Introdução
O conteúdo que estou enviando desta vez pode ajudar você a construir e operar um ambiente verdadeiramente escalável. Vou apresentá-lo várias vezes em uma série de artigos, mas se você leu esta série e a colocou em prática, já estará trabalhando em um ambiente escalável.
Nesta série de artigos, enviaremos a você a instalação e o uso das ferramentas necessárias em formato prático. Acho muito significativo para você realmente mover as mãos e sentir isso. Neste episódio, não haverá código ou linha de comando alguma. Vai sair cada vez mais na próxima vez. Antes disso, deixe-me gritar "Tenho algo para te contar, porque gosto de você" de Kazumasa Oda.
Este artigo não é adequado para:
- Vou morar sozinho pelo resto da vida! Uma pessoa que é entusiasmada para ir ao banheiro uma vez por dia.
- Não quero pensar no futuro. Estou vivendo no presente! Uma pessoa que diz três vezes por semana.
Aqueles que se enquadram nesses casos. Obrigado pelo seu trabalho árduo. A saída está aqui.
Gostaria que você lesse este artigo caso se enquadre nas seguintes categorias.
- Desenvolvedores e pessoal de infraestrutura.
- Se você está começando um novo projeto, mas está preocupado com como estrutura-lo.
- O que faço se o número de servidores aumentar? Quem está preocupado.
- O que devo fazer se o número de funcionários de desenvolvimento aumentar de repente? Quem está preocupado.
- Aqueles que têm interesse em DevOps ou ambientes escaláveis, mas não conseguem dar o primeiro passo.
- Aqueles que tentaram praticar o acima, mas ficaram frustrados.
- Por algum motivo, o código rodando no ambiente de desenvolvimento não funciona no ambiente público e não pode ser usado para o home.
- Não quero ir à empresa porque tenho medo do reflexo real.
- Aqueles que não conseguem dormir à noite porque estão preocupados com o servidor travar.
- Quando penso no futuro, fico ansioso e ansioso, e não consigo deixar de dizer: "Enfim, não quero mais voltar pra casa nem pra casa nem pra casa." de Yutaka Ozaki e cantarolando.
Então, vamos abrir a porta para seus sonhos.
Desenvolvimento e Operações Legados
- A construção do ambiente de desenvolvimento e do ambiente público é instalada manualmente com base no procedimento de construção.
- A expansão do servidor no ambiente público é configurada manualmente uma a uma.
- Atualização de aplicação e atualização de versão são realizadas manualmente uma a uma, com base no procedimento.
- Não há controle de versão, e cada pessoa faz upload do arquivo de correção via FTP.
O Superman é quem pode operar isso sem erro humano e sem estresse. E todos os membros do desenvolvimento e operação devem ser o Superman como eu. Eu não posso fazer isso por uma pessoa comum.
Desenvolvimento e Operações Modernas
Para suportar as demandas de serviço em rápida mudança atual, várias coisas precisam ser simplificadas.
Libere rapidamente, veja a reação dos usuários, mude as especificações, reflita-as imediatamente e libere-as novamente. Também é necessário fazer essas coisas.
Recentemente, a automação do desenvolvimento e da operação tem sido destaque em vários artigos da mídia e se tornou um tema quente. Mas até onde a automação realmente pode chegar?
- Controle de versão
- Construção Ambiental
- Patches de segurança
- Atualização de versão
- Autoescala
- Testes automatizados
- Implantação automatizada
- Distribuição dos ambientes de desenvolvimento
É difícil fazer tudo, né? Mas se você fizer**, com certeza vai ficar mais feliz. **
O que é DevOps?
O que é DevOps?
DevOps (DevOps [1]) é um dos métodos de desenvolvimento de software. É uma palavra de saco que combina desenvolvimento e operações, referindo-se a um método de desenvolvimento no qual desenvolvedores e pessoal de operações trabalham juntos e cooperam. Fonte da citação: wiki
Também se diz que isso também é dito.
A preocupação do DevOps é criar um ambiente onde tanto o desenvolvimento quanto as operações, que frequentemente entram em conflito devido a diferenças em seus papéis, trabalhem juntos e visem o mesmo objetivo, e acredito que ferramentas e cultura são importantes para criar esse ambiente. Fonte da citação: @IT
Nas minhas próprias palavras, vamos conseguir fazer tanto desenvolvimento quanto operação até certo ponto! Essa é a história.

DevOps também está relacionado ao processo ágil. No passado, houve muitos projetos de grande escala na forma de cachoeiras ao longo de um longo período, então era considerado bom distinguir claramente os papéis de cada pessoa responsável e construir um sistema de projetos eficiente.
Mas e hoje? Não existem projetos mais ágeis? Há muitos casos em que você precisa começar um projeto com um número pequeno de pessoas porque não dá para gastar tanto em custos de mão de obra, certo? Nesse caso, se isso se tornar um sucesso no futuro e o número de pessoal de desenvolvimento e operação aumentar ou o número de servidores aumentar, como você vai lidar com isso? Quando a configuração do servidor for alterada, será necessário aplicá-la a todos os ambientes em poucos passos. Caso contrário, alguém terá que ter dificuldades. Acredito que DevOps é essencial para que todos os envolvidos fiquem satisfeitos.
"Não estou falando só de coisas bonitas!" "Não é Superman poder desenvolver e operar?" Sim. Não acho que existam muitas pessoas assim. Desenvolvimento e operação chegam próximos. É isso que significa. Em vez de pedir para a equipe operacional construir novos servidores, aumentar servidores, monitorá-los, etc., você pode fazer isso sozinho quando o lado de desenvolvimento precisar. Hoje em dia, com a expansão da nuvem, você pode aumentar, diminuir e aumentar ou diminuir com um toque. Existem ferramentas que podem tornar a configuração dos servidores programável. Instalar middleware necessário, mudar configurações, atualizar o ambiente de desenvolvimento, unificar o ambiente público e o ambiente local, e distribuir o ambiente de desenvolvimento mais recente de uma vez.
Haa, haa, haa,
Qualquer um pode fazer tudo rápido! (Isso é no estilo de uma coletiva de imprensa feita por um membro do Conselho No○mura)
Desenvolvimento Ágil
Desenvolvimento ágil de software (Desenvolvimento de Software Ágil) é um termo geral para um grupo de métodos leves de desenvolvimento que realizam desenvolvimento rápido e adaptativo em engenharia de software. Fonte da citação: wiki
As características do desenvolvimento ágil são:
- Requisitos, projeto, desenvolvimento, testes e lançamento em um curto período de tempo, como uma volta, e repetir o ciclo
- Existem muitos grupos pequenos, e engenheiros back-end, front-end e servidores cobrem os domínios uns dos outros.
- Gerenciar tarefas em quadros Kanban, etc.
- Foco em mover código em vez de documentação.
etc. Por que passar por esse processo? A resposta é responder rapidamente às demandas que mudam rapidamente dos usuários. Quanto mais tempo levar para experimentá-la, mais tempo levará para melhorar depois. Devemos acompanhar a inovação tecnológica que está se aproximando em ritmo acelerado. A ideia de DevOps também está bastante relacionada ao ágil.
O ágil dá importância a testes e refatoração. Lançamento rápido e testes são essenciais para isso.
O que é Escalável?
O que é escalável?
Escalabilidade é uma das características desejáveis de um sistema, rede ou algoritmo em telecomunicações e engenharia de software, e é a capacidade e o grau de adaptação ao aumento de usuários e trabalho.[1] Fonte da citação: wiki
Escalabilidade às vezes depende dos recursos do sistema, e isso é claro. Agora, se você usar um servidor em nuvem, pode aumentar ou diminuir o quanto precisar quando precisar. Você também pode fazer isso automaticamente.
Acredito que a escalabilidade também é necessária para recursos humanos.
A estrutura do projeto também deve ser flexível conforme necessário. O que você precisa pensar naquele momento? Custo.
- O custo do compartilhamento de know-how devido à individualização
- Custo do tempo de construção do ambiente de desenvolvimento
- Custos de procedimentos de compartilhamento
- Custo do treinamento para iniciantes
Isso porque a rotatividade de pessoal está ficando mais intensa, certo?
- Garantir que qualquer pessoa envolvida no projeto possa iniciar o desenvolvimento rapidamente.
- Não deixe o projeto vacilar mesmo que você saia amanhã.
- Não fique nervoso mesmo que dezenas de pessoas de repente participem do desenvolvimento.
Você vai ter dificuldades aqui, né? Mas acho melhor ser assim, né?
Diversificação do Meio Ambiente
As necessidades dos usuários estão mudando cada vez mais do que no passado. Está relacionado aos benefícios do desenvolvimento tecnológico.
- Dispositivos: PCs, smartphones e wearables. Eles mudam muito o uso dos aplicativos.
- As Linhas de Infraestrutura se tornaram mais rápidas, e a quantidade de informações que pode ser tratada aumentou drasticamente. Além disso, o número de cenários de uso aumentou, e isso é necessário independentemente da localização. Como resultado, as necessidades do negócio estão mudando rapidamente.
Para resolver esses problemas, linguagens e ferramentas de desenvolvimento estão se tornando cada vez mais eficientes e mudando em um ritmo vertiginoso.
Aplicação à Mudança
O que você acha que é comum até agora?
É uma mudança. **É uma mudança drástica. **
Como filho de um templo, o que quero dizer aqui é que todas as ações são impermanentes.
Impermanência (sabbe-saMkhaaraa-aniccaa, सब्बे संखारा अफिच्चा) é um termo budista que significa que todos os seres reais neste mundo estão sempre em fluxo e mudança, tanto em essência quanto em essência, e que a existência não pode manter sua identidade nem por um momento.
Fonte da citação: wiki Acho que há várias coisas que ontem foram tomadas como certas e que hoje estão desatualizadas.
- Revolução na Tecnologia
- Mudanças vertiginosas nas solicitações de serviço
- Rotatividade de pessoal
Como você responde a essas mudanças drásticas?
Acho que duas coisas são necessárias para isso.
- Mentalidade de abraçar a mudança
- Como se adaptar à mudança
Vou escrever sobre essa mentalidade novamente quando tiver tempo. Desta vez, vou falar sobre o mecanismo de aplicá-la para mudar.
Automação
Não me interesso por automação. Tem alguém que pensa assim?
Mas como engenheiro, você já está fazendo automação.
"Hã?"
"O que você sabe sobre mim!"
Você pensou. Bem, não fique tão bravo, apenas escute calmamente enquanto come taiyaki.

Todos os engenheiros (exceto algumas pessoas ruins) existem para tornar o mundo mais conveniente e rico. Acredito que o objetivo é oferecer a mais pessoas oportunidades e experiências para enriquecê-lo. Por exemplo, a seguinte eficiência.
- Processar processamentos complexos de grandes quantidades de dados em velocidade absurda e moldar os dados em uma forma fácil de ler.
- Usar o banco de dados para organizar dados de forma eficiente e buscar rapidamente.
- Substituir o processo digital por procedimentos mais rápidos e trabalhosos, que eram feitos anteriormente no analógico.
- Comunique suas intenções à outra pessoa, independentemente do local ou hora. Conecte-se.
- Tornar possível comprar online sem precisar ir a uma loja física.
etc. O que você acha? Você já não está fazendo automação que corresponde a isso regularmente? Ou está envolvido em alguma coisa? Isso mesmo. Oferecer valor aos usuários é resultado da automação. Engenharia de TI é para automação (eficiência). Então por que não automatizamos nosso trabalho?
Estamos no trabalho de fazer as pessoas felizes com automação. Então **vamos trabalhar mais felizes com automação nós mesmos! **
Aqui estão as ferramentas que você precisa para fazer isso.
Explique as ferramentas que possibilitam um ambiente ágil e escalável na era DevOps
Desculpe a demora! Agora, vamos finalmente falar sobre Vagrant, GitHub, Travis, Chef e OpsWorks, que estão no título. Vou explicar brevemente cada ferramenta. Vou explicar essas ferramentas em detalhes com código em cada episódio.

- Vagrant é uma ferramenta para construir máquinas virtuais. É útil ao construir localmente. Se você acha que o VirtualBox é bom, explicarei o que é útil em um artigo futuro. Você vai ficar viciado.
- Uma comunidade de engenheiros é formada no GitHub por meio dos repositórios GitHub Git. O GitHub consegue incutir uma boa cultura nas equipes de desenvolvimento graças a uma ótima invenção chamada Pull Request.
- Serviço de nuvem Travis CI. Ao integrar com o GitHub, ele executa testes toda vez que é enviado e notifica o GitHub sobre os resultados.
- Chef é uma ferramenta de gerenciamento de configuração. Você pode gerenciar a configuração do servidor com código. Você sempre pode garantir que ele esteja no mesmo estado, não importa quantas vezes você execute. Se você ainda estiver usando ssh, instalando e configurando, use o Chef.
- OpsWorks é uma das ferramentas de implantação da AWS. É uma ferramenta poderosa que ajuda você a construir um ambiente escalável e automatizar implantações. Explicaremos isso em detalhes em um artigo futuro.
Por que você faz uma coisa tão problemática?
Você achou que sim. Só há uma resposta. **Tudo é para você e as pessoas ao seu redor serem felizes. **
Hoje em dia, linguagens de desenvolvimento, frameworks e engenharia de servidores estão se tornando cada vez mais diversos. E isso vai acelerar. Mas não tenha medo.
Se você se interessa por como essas ferramentas são usadas e como pensa, elas vão se espalhar e levar ao futuro. Vai **iluminar o futuro da engenharia de TI! **
Muito obrigado por ler até o fim (meio chorando)
Na próxima vez
Vamos falar sobre construir um ambiente de desenvolvimento com a Vagrant. Boa sorte a todos. Tchau.