Skip to content

Este repositório serve como um ponto de partida para o inicio de minha jornada no mundo do DevOps.

Notifications You must be signed in to change notification settings

denisfreitas999/Starting-DevOps

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Projeto: Começando em DevOps - Alura Courses Overview

Course 01 - Explorando Conceitos, Comandos e Scripts no Linux CLI (01 - 05)

Course 02 - Trabalhando com Tráfego Seguro em Comunicações Web (06 - 10)

Course 03 - Trabalhando com repositórios no GitHub (11 - 15)

Course 04 - Construindo e Gerindo Containers com o Docker (16 - 20)

Índice

  1. Fundamentos do Sistema Operacional
  2. Navegação e Gerenciamento de Arquivos
  3. Automatização com Scripts e Comandos
  4. Automação Avançada e Servidores Web
  5. Monitoramento e Execução Automática
  6. Configuração Inicial e Fundamentos da Comunicação Web
  7. URLs, Domínios e DNS
  8. Mensagens HTTP e Autenticação
  9. Segurança e Criptografia em Redes
  10. Protocolo HTTP e Evolução
  11. Criação e Conexão de Repositórios
  12. Trabalho com Branches e Merge
  13. Resolução de Conflitos e Pull Requests
  14. Integração Contínua com GitHub Actions
  15. Automatização com Dependabot
  16. Containers vs. Máquinas Virtuais e Instalação do Docker
  17. Gerenciamento de Containers com Docker CLI
  18. Estrutura de Imagens e Criação de Containers
  19. Persistência de Dados em Containers
  20. Integração com Serviços em Nuvem e Docker Compose

01. Fundamentos do Sistema Operacional

Nesta etapa abordei os conceitos fundamentais do sistema operacional:

  • Entendendo que um sistema operacional exerce o papel de gerenciar a utilização dos recursos de um hardware: Compreensão do papel e importância do sistema operacional.
  • Conhecendo as diferentes distribuições do Linux para selecionar a opção mais adequada em um determinado caso de uso: Análise e escolha das distribuições Linux.
  • Instalando um sistema operacional em uma máquina virtual para realização de testes e estudos: Configuração de máquinas virtuais para testes.
  • Utilizando o protocolo SSH para acessar servidores remotamente: Acesso remoto seguro via SSH.

02. Navegação e Gerenciamento de Arquivos

Nesta etapa foquei na navegação e gerenciamento de arquivos:

  • Navegando entre diretórios e arquivos no Shell CLI do Linux para encontrar e acessar informações armazenadas no sistema de arquivos: Comandos básicos de navegação no Shell.
  • Movendo, copiando e removendo arquivos para organizar os diretórios do sistema: Gerenciamento de arquivos e diretórios.
  • Listando e criando arquivos no Shell CLI para facilitar a manutenção de dispositivos como servidores: Listagem e criação de arquivos.

03. Automatização com Scripts e Comandos

Aqui, explorei a criação e execução de scripts:

  • Construindo e executando scripts no Shell CLI para realizar múltiplas tarefas de modo automatizado: Criação de scripts para automação de tarefas.
  • Utilizando o comando tar para compactar e descompactar arquivos: Uso do comando tar para manipulação de arquivos.
  • Implementando a passagem de parâmetros para dar opção de entrada ao usuário: Adição de parâmetros aos scripts.
  • Utilizando a sintaxe condicional no Bash para direcionar a execução de blocos de instruções no programa: Uso de condicionais no Bash.

04. Automação Avançada e Servidores Web

Nesta etapa abordei a automação avançada e servidores web:

  • Implementando múltiplas ações em um único script para facilitar o processo de automação: Criação de scripts complexos para múltiplas tarefas.
  • Construindo códigos que permitam ao usuário selecionar as tarefas que serão executadas pelo script: Interatividade em scripts.
  • Selecionando e instalando um servidor web para hospedagem de sites e aplicativos: Instalação e configuração de servidores web.

05. Monitoramento e Execução Automática

Finalizei com monitoramento e execução automática de scripts:

  • Verificando o status dos processos em execução no servidor para monitorar o seu desempenho: Monitoramento de processos no servidor.
  • Utilizando operadores e comandos para filtrar e coletar dados a partir de textos: Filtragem e coleta de dados.
  • Construindo scripts para monitorar o estado operacional de sistemas como servidores web: Criação de scripts de monitoramento.
  • Executando scripts usando o crontab para implementar um cronograma de execução automática no sistema: Automação de tarefas com crontab.

06. Configuração Inicial e Fundamentos da Comunicação Web

Nesta etapa, configurei o projeto e explorei os fundamentos da comunicação web:

  • Configurando o projeto de aplicação web All Books que será explorado ao longo do curso: Preparação e configuração inicial do projeto.
  • Identificando o modelo cliente-servidor adotado na construção de aplicações web: Compreensão do modelo cliente-servidor.
  • Entendendo que o protocolo HTTP atua na camada de aplicação para possibilitar a comunicação entre aplicações web: Estudo do papel do protocolo HTTP.
  • Compreendendo como as redes de computadores estão organizadas para garantir que diferentes dispositivos computacionais sejam capazes de enviar e receber dados: Estrutura das redes de computadores.
  • Analisando os componentes e características do protocolo HTTP que atua na camada de aplicação para transferência de dados na web: Análise do protocolo HTTP.

07. URLs, Domínios e DNS

Nesta etapa, foquei em URLs, domínios e o sistema DNS:

  • Analisando uma URL para identificar o protocolo, a localização e o tipo de recurso que estamos acessando na web: Desconstrução e análise de URLs.
  • Configurando URLs para utilizar protocolos, domínios, portas e caminhos específicos: Configuração de URLs personalizadas.
  • Usando nomes de domínios (em substituição aos endereços IP) para acessar diferentes recursos na Web: Uso de domínios para facilitar o acesso.
  • Entendendo que o sistema DNS está hierarquicamente estruturado com diferentes servidores para resolução global de nomes de domínio em endereços IP: Compreensão do sistema DNS.

08. Mensagens HTTP e Autenticação

Aqui, explorei mensagens HTTP e mecanismos de autenticação:

  • Interpretando a estrutura de mensagens HTTP e seus códigos de status para analisar o processo de comunicação entre cliente e servidor: Análise de mensagens HTTP.
  • Depurando os métodos HTTP usando o Postman para ler e criar recursos no backend de uma aplicação web como o projeto All Books: Uso do Postman para testes de API.
  • Usando mecanismos como cookies e sessões para relembrar constantemente aos servidores HTTP a identidade de um usuário: Implementação de cookies e sessões.
  • Configurando cabeçalhos (headers) em requisições para o backend de modo a permitir o acesso a conteúdos que exigem a autenticação do usuário: Configuração de cabeçalhos para autenticação.

09. Segurança e Criptografia em Redes

Nesta etapa, abordei segurança e criptografia:

  • Monitorando o tráfego em uma rede para análise de erros, protocolos e aspectos de segurança: Monitoramento de tráfego de rede.
  • Utilizando o OpenSSL na criação de chave e certificado digital para implementar criptografia no projeto All Books: Implementação de criptografia com OpenSSL.
  • Implementando o HTTPS para proteger as mensagens trocadas entre cliente e servidor no projeto All Books: Configuração de HTTPS.
  • Usando o Postman como ferramenta para testar o funcionamento de um servidor HTTP: Testes de servidor com Postman.
  • Compreendendo como a criptografia atua para assegurar a integridade dos dados encaminhados na web: Estudo do papel da criptografia na segurança dos dados.

10. Protocolo HTTP e Evolução

Finalizei com o estudo do protocolo HTTP e sua evolução:

  • As camadas de segurança SSL/TLS atuando para proteção de dados na comunicação em rede: Entendimento das camadas SSL/TLS.
  • Utilizando parâmetros nas requisições HTTP para obtenção e criação de dados em um servidor web: Uso de parâmetros em requisições HTTP.
  • Os protocolos UDP e TCP da camada de transporte atuando na transmissão de dados entre dispositivos em uma rede: Estudo dos protocolos de transporte UDP e TCP.
  • O protocolo QUIC sendo criado a partir do protocolo UDP para possibilitar a criação da versão 3 do protocolo HTTP, reconhecida pelo seu alto desempenho: Compreensão do protocolo QUIC.
  • O protocolo HTTP evoluindo para tornar a comunicação web mais eficiente, segura e ágil: Evolução do protocolo HTTP.

11. Criação e Conexão de Repositórios

Nesta etapa, configurei repositórios locais e remotos, além de entender as diferenças entre Git e GitHub:

  • Criando um repositório git local com os comandos git init e git branch -M main e o repositório remoto para poder compartilhar o seu código com outras pessoas: Inicialização e configuração de repositórios.
  • Conectando um repositório local com um remoto através do comando git remote add origin URL: Conexão entre repositórios locais e remotos.
  • Entendendo que o Git e o GitHub são diferentes. Enquanto o Git é a ferramenta responsável pelo controle do versionamento de códigos, o GitHub é a plataforma responsável pelos repositórios: Compreensão das funções de Git e GitHub.
  • Criando um commit para registrar as alterações realizadas no projeto com o comando git commit -m "Mensagem que descreve as mudanças": Registro de alterações com commits.
  • Enviando e trazendo alterações feitas para os repositórios local e remoto por meio dos comandos git push origin main e git pull origin main: Sincronização entre repositórios.
  • Cuidando do fluxo de trabalho em projetos colaborativos usando os comandos Git, como git status, git add, git commit, git push, e git pull: Gerenciamento de fluxo de trabalho colaborativo.

12. Trabalho com Branches e Merge

Nesta etapa, explorei o trabalho com branches e a integração de mudanças:

  • Criando uma nova branch para trabalhar com ramificações em repositórios Git, através do comando git checkout -b nova-branch: Criação de branches.
  • Entendendo como funcionam as branches e como elas ajudam a isolar mudanças para que o código principal não seja afetado: Isolamento de mudanças com branches.
  • Realizando um merge de uma branch em outra usando o comando git merge, para mesclar as alterações das duas branches: Integração de mudanças com merge.
  • Usando o Gitflow ou o Trunk Based para gerenciar as ramificações do seu projeto: Gerenciamento de ramificações com Gitflow ou Trunk Based.

13. Resolução de Conflitos e Pull Requests

Aqui, foquei em resolução de conflitos e revisão de código:

  • Resolvendo um conflito, quando um mesmo arquivo é editado por duas pessoas diferentes, através da análise do código, para decidir o que manter e o que descartar: Resolução de conflitos de código.
  • Criando uma issue para descrever e documentar as tarefas que devem ser feitas no ciclo de desenvolvimento de um software: Documentação de tarefas com issues.
  • Usando o recurso de Pull Requests para solicitar a revisão de um código antes de ele ser integrado a outra branch: Revisão de código com Pull Requests.

14. Integração Contínua com GitHub Actions

Nesta etapa, explorei a automação de integração contínua:

  • Definindo a Integração Contínua como a prática de automatizar as atualizações de código no repositório, para ocorrer integração no código-fonte e a execução frequente de testes com o objetivo de detectar e corrigir problemas de integração, o que é bastante importante no dia a dia de DevOps: Conceito de Integração Contínua.
  • Aplicando a Integração Contínua através da configuração de um workflow do GitHub Actions: Configuração de workflows de CI com GitHub Actions.
  • Testando e visualizando o funcionamento do workflow de Integração Contínua: Testes e monitoramento de workflows.
  • Aplicando proteção de branches para garantir que todos os códigos integrados à main passem antes pela revisão através de um PR e que o código seja testado pelo workflow de CI: Proteção de branches e revisão de código.

15. Automatização com Dependabot

Finalizei com a automação de segurança e atualizações usando Dependabot:

  • Ativando alertas de vulnerabilidade nas dependências do projeto através do Dependabot: Monitoramento de vulnerabilidades com Dependabot.
  • Automatizando a resolução das vulnerabilidades, configurando o Dependabot para tentar resolver e abrir Pull Requests com as resoluções: Automação de resolução de vulnerabilidades.
  • Configurando a atualização automática de versões com o Dependabot: Atualizações automáticas de dependências.

16. Containers vs. Máquinas Virtuais e Instalação do Docker

Nesta etapa, aprofundei o entendimento sobre containers, sua função e instalação do Docker:

  • Entendendo a diferença entre containers e máquinas virtuais como soluções de virtualização para isolamento de ambientes: Comparação entre containers e máquinas virtuais.
  • Compreendendo que os containers compartilham o mesmo kernel do sistema operacional e isolam apenas processos do espaço do usuário: Funcionamento dos containers e isolamento de processos.
  • Explorando como os containers constituem uma solução eficiente para encapsulamento de aplicações e suas dependências, mantendo seu conteúdo isolado do sistema do host: Encapsulamento de aplicações com containers.
  • Instalando o Docker em um computador para utilizar a virtualização baseada em containers: Instalação do Docker.
  • Entendendo a função dos namespaces na garantia de isolamento total dos containers em relação ao seu host: Papel dos namespaces no isolamento de containers.
  • Utilizando os comandos do Docker para criação e verificação do status de containers: Operações básicas com containers usando Docker CLI.
  • Reconhecendo o papel do Docker Hub como registry no armazenamento, gerenciamento e distribuição de imagens para criação de containers: Utilização do Docker Hub como repositório de imagens.

17. Gerenciamento de Containers com Docker CLI

Nesta etapa, explorei o gerenciamento de containers com comandos do Docker:

  • Atuando com o Docker como uma container engine para criação e gerenciamento de containers: Uso do Docker como motor de containers.
  • Usando comandos da Docker CLI para iniciar, pausar, parar e retomar a execução de um container: Comandos para controle de execução de containers.
  • Utilizando diferentes opções com o comando docker run para definir configurações no momento da criação de um container: Configuração de containers com docker run.
  • Interagindo com containers em execução para utilizar a aplicação ou sistema operacional encapsulado: Interação com containers ativos.
  • Realizando o mapeamento de portas para possibilitar o acesso externo à aplicação em execução dentro de um container usando o Dockerfile: Configuração de acesso externo via mapeamento de portas.

18. Estrutura de Imagens e Criação de Containers

Nesta etapa, compreendi a estrutura de imagens e como criar e compartilhar containers:

  • Estruturando imagens e containers em camadas para proporcionar eficiência na utilização de recursos e distribuição de aplicações: Estruturação em camadas de imagens e containers.
  • Inspecionando a estrutura das imagens para analisar as principais características de suas camadas: Análise da estrutura de imagens Docker.
  • Criando uma imagem utilizando o Dockerfile para implementar aplicações utilizando containers: Criação de imagens personalizadas com Dockerfile.
  • Subindo uma imagem no Docker Hub para compartilhar com a comunidade ou para uso em outros ambientes: Compartilhamento de imagens no Docker Hub.

19. Persistência de Dados em Containers

Nesta etapa, explorei diferentes métodos de persistência de dados em containers Docker:

  • Explorando diferentes mecanismos de persistência de dados no Docker para garantir a continuidade e segurança das informações geradas por aplicações conteinerizadas: Mecanismos de persistência de dados em Docker.
  • Criando e utilizando bind mounts, vinculando pastas no sistema host aos diretórios dentro dos containers, para implementar um mecanismo de persistência de dados: Persistência de dados com bind mounts.
  • Gerenciando volumes no Docker para criar, utilizar e verificar a persistência de dados entre diferentes execuções de containers: Uso de volumes para persistência de dados.
  • Adotando a persistência temporária usando tmpfs ao executar containers, compreendendo seu caráter temporário e sua aplicação em ambientes específicos: Uso de tmpfs para persistência temporária.

20. Integração com Serviços em Nuvem e Docker Compose

Finalizei com a integração de containers com serviços em nuvem e coordenação com Docker Compose:

  • Realizando a integração de aplicações conteinerizadas com serviços em nuvem para efetiva implantação da aplicação em um ambiente de produção: Integração de containers com serviços em nuvem.
  • Criando uma conta de acesso para utilizar serviços em nuvem oferecidos pela Amazon: Configuração de conta AWS.
  • Configurando instâncias no Amazon Elastic Beanstalk para a implantação de aplicações: Implantação de aplicações no AWS Elastic Beanstalk.
  • Utilizando o Docker Compose com arquivos de configuração YAML para coordenar containers: Coordenação de containers com Docker Compose.
  • Entendendo que o Docker Compose atua na coordenação de containers, enquanto ferramentas como Kubernetes e Docker Swarm assumem funções de orquestração: Diferença entre Docker Compose e orquestradores como Kubernetes e Docker Swarm.

About

Este repositório serve como um ponto de partida para o inicio de minha jornada no mundo do DevOps.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published