• Home

    Escolha seu Plano

    Carreiras Alura

    Evolua com profundidade técnica, direção clara e aplicação prática.

    Jornadas guiadas do básico ao avançado com checkpoints práticos, desenhadas para quem busca profundidade e protagonismo técnico.

    Iniciante

    Comece do zero com uma trilha clara e progressiva.

    Fundamentos práticos para dar os primeiros passos com segurança e construir uma base sólida.

    Intermediário

    Continue sua evolução com cursos que conectam fundamentos, ferramentas e prática profissional. Ganhe autonomia, e avance para projetos mais completos.

    Avançado

    Aprofunde temas técnicos e estratégicos para enfrentar desafios mais complexos. Explore boas práticas, arquitetura, performance com visão profissional.

    Cursos

    Ver mais cursos de Back-end
    • Pensamento computacional: fundamentos da computação e lógica de programação
    • Lógica de programação: mergulhe em programação com JavaScript
    • DDD: fundamentos do design orientado a domínio
    • ASP.NET: autenticação e autorização em APIs e aplicações web
    • Microsserviços: migração de monólitos e modularização

    Cursos

    Ver mais cursos de Dados
    • Python para Dados: primeiros passos
    • Excel: domine o editor de planilhas
    • Engenharia de Dados: Orquestração de Pipelines com Apache Airflow
    • Power BI Desktop: construindo meu primeiro dashboard
    • Governança e Arquitetura de Dados

    Cursos

    Ver mais cursos de Inteligência Artificial
    • IA: Explorando o Potencial da Inteligência Artificial Generativa
    • Engenharia de Prompt: Criando Prompts Eficazes para IA Generativa
    • Claude para Análise de Dados: prompts, integrações e automações
    • Agno: criando agentes e sistemas multiagente
    • Engenharia de software na era da IA: segurança de aplicações com agentes, MCPs e código gerado por IA

    Cursos

    Ver mais cursos de Front-end
    • HTML e CSS: ambiente, estrutura e estilo
    • React: realizando testes avançados com Jest e Testing Library
    • React: integrando TypeScript em projetos
    • JavaScript: aprendendo a programar
    • React: aplicando arquiteturas de Micro frontends

    Cursos

    Ver mais cursos de DevOps
    • Sistema Operacional Linux: fundamentos e administração prática
    • Containers e Docker: empacotamento, isolamento e gestão
    • Redes: dos conceitos iniciais à criação de uma intranet
    • Linux: gerenciando diretórios, arquivos, permissões e processos
    • Cibersegurança: Fundamentos e práticas integradas

    Cursos

    Ver mais cursos de UX & Design
    • UX Research: mapeando a experiência da pessoa usuária
    • UX/UI Design: Entregando produtos digitais com IA
    • UI Design: Prototipação e animações interativas
    • Figma: Conhecendo o programa
    • Product Design: métricas e ciclo de vida do produto

    Cursos

    Ver mais cursos de Inovação e Gestão
    • Canva: Criação de landing pages e e-mail marketing
    • Agilidade: como ela pode ajudar a criar um time de alta performance
    • Google Analytics 4: Extrair insights e configurar eventos
    • Management 3.0: gerencie o ambiente, não as pessoas
    • Automação de processos com n8n: Inteligência de dados para Marketing

    Cursos

    Ver mais cursos de Mobile
    • React Native: Estilização e Layouts com Flexbox e StyleSheet
    • Flutter: Graphql e suporte offline
    • Android com Gemini: Trabalhando com textos e imagens na IA
    • Dart: trabalhando com orientação a objetos
    • React Native: Dominando Listas com FlatList e ScrollView

    Carreiras

    Ver mais carreiras
    • Especialista em IA
    • Engenharia de IA
    • Ai native software engineering
    • Arquitetura de Soluções com IA
    • AI Product Design
    • Engenharia de Machine Learning
    • Desenvolvimento Front-End React
    • Engenharia de Dados
    • Cloud Security
    • Social Media Marketing
    • Engenharia de Agentes de IA

    Cursos

    • Engenharia de Prompt: Prompts Eficazes para IA Generativa
    • Claude Code: Criando sua Primeira Aplicação
    • Python: Crie sua Primeira Aplicação
    • Git e GitHub: Compartilhando e Colaborando
    • N8N: Fluxos de Trabalho Avançados

    Cursos

    • Copilot Studio: Solução Multiagentes
    • Padrões de API HTTP e Modelagem de APIs
    • Python para Análise de Dados com SQL
    • Docker: Criando e Gerenciando Containers
    • Design com IA: Otimizando o Processo Criativo

    Cursos

    • Model Context Protocol (MCP)
    • Spec-Driven Development: Dev Assistido por Agentes
    • Arquitetura de Sistemas Distribuídos com Java
    • Governança de Modelos e Reprodutibilidade
    • Pentest: Vulnerabilidades em Aplicações Web

    Escolha seu Plano

    Skills & Go

    O Skills & Go é para Tech Leads, Product Managers, estrategistas e early adopters que transformam ideias em soluções de alto impacto. Em cursos ao vivo e 100% online, você domina a nova era da IA em tempo real.

    Aulas ao vivo

    Saiba mais
    • Agentic Engineering: orquestre múltiplos agentes com confiabilidade
    • Building AI Products: transforme ideias em produtos reais com IA
    • AI Data Strategy: transforme dados em decisões estratégicas com IA

    Escolha seu Plano

    Eventos Alura

    Nossos eventos são pensados para quem quer estar à frente das mudanças em tecnologia, IA e inovação. Em experiências presenciais, você acompanha tendências e se conecta com especialistas que estão moldando o futuro.

    Próximos eventos

    • IA Conference
    • Alura Signals
  • Talent Lab
  • IA

    Escolha seu Plano

    Conteúdos gratuitos

    Explore conteúdos gratuitos para aprender tecnologia no seu ritmo. Encontre artigos com conteúdos técnicos para aprender na prática, notícias para acompanhar as principais tendências do mercado e o Alura Labs, com análises e reflexões de especialistas sobre tecnologia, IA e carreira.

    Conteúdos gratuitos

    • Artigos
    • Notícias
    • Alura Labs
  • Para Empresas
Ver planos
Links principais
  • Planos e Promoções
  • Links complementares do menu mobile
  • Talent lab
  • Inteligência Artificial
  • Pós Graduações
  • Para Empresas
  • Sobre a Alura
  • Grupo Alun
  • Entrar
    • Home
    • Carreiras
    • Skills & Go
    • Talent Lab
    • Inteligência Artificial
    • Pós Graduações
    • Artigos
    • Sobre a Alura
    • Grupo Alun
    LoginContato
    • LinkedIn
    • Instagram
    • YouTube

    Institucional

    • Sobre nós
    • Trabalhe Conosco
    • Para Empresas
    • Para Escolas
    • Política de Privacidade
    • Compromisso de Integridade
    • Termos de Uso
    • Canal de Ética
    • Código de Ética
    • Fale Conosco
    • Documentos Institucionais
    • Status
    Institucional
    • Sobre nós
    • Trabalhe Conosco
    • Para Empresas
    • Para Escolas
    • Política de Privacidade
    • Compromisso de Integridade
    • Termos de Uso
    • Canal de Ética
    • Código de Ética
    • Fale Conosco
    • Documentos Institucionais
    • Status

    A Alura

    • Como Funciona
    • Inteligência Artificial
    • Plataforma
    • Depoimentos
    • Instrutores(as)
    • Dev em <T>
    • Luri, a Inteligência Artificial da Alura
    • IA Conference
    • Cursos Imersivos
    • Perguntas Frequentes
    A Alura
    • Como Funciona
    • Inteligência Artificial
    • Plataforma
    • Depoimentos
    • Instrutores(as)
    • Dev em <T>
    • Luri, a Inteligência Artificial da Alura
    • IA Conference
    • Cursos Imersivos
    • Perguntas Frequentes

    Conteúdos

    • Alura Cases
    • Imersões
    • Artigos
    • Podcasts
    • Artigos de educação corporativa
    Conteúdos
    • Alura Cases
    • Imersões
    • Artigos
    • Podcasts
    • Artigos de educação corporativa
    Uma Empresa do GrupoLogo Grupo Alun

    Outras empresas do Grupo Alun

    • FIAP
    • STARTSE
    • PM3
    • LUMINA

    Ao submeter seu e-mail, você concorda com a política de privacidade da Alura.

    Redes Sociais & Apps

    instagram
    youtube
    tiktok
    x
    appStore
    googlePlay
    Uma Empresa do GrupoLogo Grupo Alun

    Outras empresas do Grupo Alun

    • FIAP
    • STARTSE
    • PM3
    • LUMINA

    Ao submeter seu e-mail, você concorda com a política de privacidade da Alura.

    Redes Sociais & Apps

    instagram
    youtube
    tiktok
    x
    appStore
    googlePlay
    Alura

    O que você quer aprender?

    FiltrosFiltrar por:

    Tipos de conteúdo
    Categorias
    • Back-end

      O que é Back-End e Front-End

      Neste vídeo, mergulharemos nas duas facetas essenciais da construção de websites e aplicativos: o front-end e o back-end. Enquanto o front-end lida com tudo o que você vê e interage - como design, animações e interface do usuário - o back-end é o motor oculto por trás dessas funcionalidades, garantindo que tudo funcione corretamente. Junte-se a nós nesta jornada visual para entender melhor as engrenagens que movem o mundo digital ao nosso redor. Ideal para iniciantes e para aqueles que buscam esclarecer os conceitos básicos da programação web! ## Qual a principal diferença entre front-end e back-end? **Guilherme**: Meu nome é **Guilherme Lima**, sou instrutor e desenvolvedor de software na Alura. E tenho comigo o Vinny Neves. **Vinicios**: Sou **Vinnny Neves**, o dev careca e barbudo mais querido da Alura. Trabalho com front-end há bastante tempo, mas já passei pelo back-end também. Portanto, nós podemos ter uma conversa interessante sobre isso. **Guilherme**: Muito bom ter você conosco. Mas, qual a principal diferença entre front-end e back-end? ### O que o front-end faz? **Vinicios**: A principal diferença é que **o front-end está mais próximo da pessoa usuária**. Imagine que quem trabalha com front-end está desenvolvendo essa camada, essa interface. Por exemplo, temos uma aplicação que precisa agendar consultas. Vamos apresentar para as pessoas usuárias essas marcações, dialogar visualmente com elas, abrir uma agenda, mostrar quais são os dias disponíveis para marcar uma consulta. Portanto, o front-end está mais próximo da pessoa usuária que interage com a aplicação. Também está mais perto do navegador e de tudo o mais. Quem trabalha com front-end atualmente, vai trabalhar com posicionamento de elementos, decidir onde ficará o campo de texto para a pessoa digitar, se vamos usar um calendário ou apresentar uma lista de opções. > O front-end está muito relacionado com essa parte de interação com a pessoa usuária. **Guilherme**: Podemos pensar que o front-end é responsável pelo desenvolvimento e criação de telas? Como telas dinâmicas e designs atraentes? **Vinicios**: Exatamente isso. Embora não seja uma regra universal, é muito comum que existem outras pessoas profissionais que montam e desenham a tela como deveria ser idealmente. Alguma pessoa especializada nessa **experiência do usuário** desenha a tela e entrega para nós do front-end. Dado este desenho, vamos transformar aquela imagem em uma aplicação que o navegador consiga entender. **Guilherme**: Então, não necessariamente quem trabalha com front-end precisa ser um especialista em desenhos, cores, fontes, tipografia? **Vinicios**: Exatamente. No cenário ideal, existem profissionais que estudam esses conceitos, como a paleta de cores, cores mais fortes ou mais fracas, qual é o melhor lugar para posicionar um botão, um campo de texto. Depois desse trabalho realizado, aí chega para o front-end. Portanto, nós não temos esse trabalho "criativo". Vamos pegar uma tela e desenvolver seu código. Ou seja, é como se pegássemos uma foto e a transformássemos em uma aplicação onde a pessoa usuária pode interagir e realizar a operação que precisa. **Guilherme**: Agora, faz mais de sentido o que é o front-end. Vamos conversar e entender melhor sobre a carreira de **back-end**. ### O que o back-end faz? **Guilherme**: A pessoa que desenvolve back-end não está necessariamente ligada a desenvolver telas. Não é seu principal desafio. Mas, então o que ela faz? **Vinicios**: Falamos que o front-end está mais próximo da pessoa usuária. Já **o back-end está mais perto das informações da aplicação**. Quais são as regras de negócio, as validações? Vamos voltar no exemplo da marcação de consulta. Aquele médico com o qual estamos marcando a consulta, está disponível ou está de férias? Quais horários podemos agendar uma consulta? Por exemplo, nós temos a tela e permitimos que a pessoa usuária agende uma consulta para domingo de madrugada. No entanto, não há nenhum médico disponível para uma consulta domingo de madrugada. Logo, o back-end irá indicar que não é possível realizar a ação pretendida. Assim, definimos **validações**. Mas, se a pessoa usuária quiser agendar uma consulta para segunda-feira às 9 horas da manhã e essa for uma opção viável, podemos fazer o agendamento. O back-end receberá os dados enviados e os armazenará em algum lugar para consulta futura, validação ou até mesmo alterações. Imagina que o médico não possa atender na data agendada, será necessário remarcar a consulta. > Desta forma, todas essas regras de validação - o que pode e o que não pode - estão mais perto do back-end. Ele também se encontra mais próximo dos dados e de onde esses dados serão armazenados. **Guilherme**: O back-end também se encarrega de definir como os dados serão expostos para a equipe de front-end. Afinal, quando estamos atuando no mercado de trabalho, provavelmente estaremos colaborando com outras pessoas, times e equipes. Portanto, quando o front-end necessitar de certas informações, o desafio do back-end será dispor dessas informações e conectar com o banco de dados, conversando e criando soluções para que o projeto seja entregue de maneira satisfatória. **Vinicios**: Exatamente, o front-end irá requisitar: "nós precisamos de um back-end que permita a marcação de consulta e que permita a verificação dessas consultas posteriormente". Definir como isso será feito é tarefa do back-end, que determina qual linguagem usar e onde armazenar os dados. Dessa forma, o back-end funciona de forma independente. Enquanto o front-end indica quais e quando esses dados serão necessários, o back-end deve definir, de acordo com as regras de negócio, o formato dos dados para marcar uma consulta, por exemplo. **Guilherme**: Um ponto importante sobre ferramentas e tecnologias: > Existem diversas linguagens que podem ser usadas para criar aplicações back-end, como Java, Python ou o próprio Javascript, que pode ser usado tanto no *front* quanto no *back*. > > Contudo, no front-end existe uma "trindade mágica" que geralmente é recomendada: HTML, CSS e Javascript. **Vinicios**: De forma resumida, o HTML é o dado que será exibido, já pronto e processado. O **HTML cuidará da estrutura dos dados**, definindo se será uma lista, um campo de texto ou uma caixa que aparece para a pessoa usuária interagir. Já o **CSS tratará dos estilos**, como tamanho de fonte, cor da fonte, posicionamento das informações na tela, quebra de linha, layout para celular, tablet ou *desktop* (computador). Por fim, o Javascript faz com que o HTML e o CSS sejam dinâmicos. Ao interagir com a aplicação, podemos fazer com que um campo mude de cor, que apareça algum alerta, mensagem de erro com fundo vermelho ou mensagem de sucesso com fundo verde, por exemplo. Essa é a tríade essencial para qualquer caminho que se tome dentro do front-end. **Guilherme**: No back-end, é importante lembrar que existem diversas linguagens, como Python, Javascript, Java, C#, Go, entre outras. A maioria dessas linguagens possui primeiros passos. Na Alura, temos formações específicas relacionadas a JavaScript tanto no back-end quanto no front-end. Se você preferir direcionar seus estudos desde o começo para front-end, temos cursos relacionados também com HTML e CSS. Fica aí a dica! Discutimos um pouco sobre as diferenças entre o desenvolvimento front-end e back-end. Agora, cabe a você decidir sobre a sua carreira! Você pode optar por seguir um lado mais próximo da pessoa usuária, design de interfaces ou validações e regras de negócio. Eu gosto bastante de bancos de dados, SQL e de linguagem. Logo, estou mais próximo do back-end enquanto o Vinny se encontra mais próximo do front-end. **Vinicios**: E pode ficar tranquilo(a), pois essa não é uma decisão definitiva. É comum às vezes transitarmos entre essas duas áreas. Portanto, você pode contar conosco da Alura para trilhar o seu caminho.

    Ainda não estuda com a gente?

    Invista na transformação da sua carreira!

    Comece agora
  • DevOps

    Terraform no Google Cloud

    Neste Alura+ vamos aprender como podemos criar uma máquina virtual no Google Cloud Platform usando o Terraform e ver as diferenças entre o Google Cloud Platform e a AWS. * [Site do Terraform]( * [Download do Terraform]( * [Console do Google Cloud]( * [Documentação do Google Cloud no Terraform]( # Transcrição Na formação de Infraestrutura como Código, utilizamos sempre a AWS como provedora. Mas como fazemos para usar o Terraform com outros provedores, como o Google Cloud, por exemplo? Para tirar essa dúvida, vamos subir uma máquina no Google Cloud e verificar o quanto esse processo difere de uma máquina na AWS. Vamos lá? De início, vamos entrar no site do Terraform e clicar em "Tutoriais", no painel superior, para carregar os tutoriais iniciais e podermos mexer com cada plataforma. No caso, sempre usamos AWS; desta vez, acessaremos os **tutoriais do Google Cloud**. Nessa nova página, veremos todos os tutoriais disponíveis, como "O que é Infraestrutura como Código com o Terraform?" e "Instalando Terrafom". Caso você ainda não conheça o conceito de infraestrutura como código ou ainda não tenha o Terraform instalado, recomendamos dar uma olhada nesses dois primeiros tutoriais e fazer a nossa formação de Infraestrutura com Código também. Nesse vídeo, vamos direto para o tutorial "*Build Infrastructure*" (em português, "**Montando a Infraestrutura**") para começarmos a construir nossa infraestrutura com o Google Cloud. Primeiramente, há uma breve explicação sobre o que é o Google Cloud e temos um aviso inicial de que usaremos o nível gratuito (*free tier*) do Google Cloud Platform (GCP) para o provisionamento dos componentes desse tutorial. Caso comecemos a provisionar outros recursos, podemos mudar para a versão paga. No nosso caso, a máquina virtual que pretendemos provisionar faz parte do *free tier*. A seguir, temos a seção de pré-requisitos. É preciso ter uma **conta no Google Cloud Platform**. Caso você ainda não tenha, é possível criá-la no site do GCP — é de graça. Para conhecer mais sobre os serviços inclusos no *free tier*, podemos acessar a página de informações do Programa Gratuito do Google Cloud. Outro pré-requisito é ter, **no mínimo, a versão 0.15.3 do Terraform** instalada no seu computador. Se você estiver com o Terraform atualizado, já tem uma versão compatível, provavelmente 1.0 ou posterior. Atendidos os pré-requisitos, vamos checar o que precisamos para realmente começar a criar, na seção "*Set up GCP*". O primeiro item é **criar um projeto no GCP**. Vamos clicar no link disponibilizado no tutorial, que nos direcionará ao console do GCP para criar um projeto. Daremos o nome "Alura" para nosso projeto. Logo abaixo do campo de nome, será gerado um ID. No meu caso, é "alura-348223". O seu será diferente, pois os identificadores são únicos, nunca se repetem. À direita desse ID, temos a opção de editá-lo, se for de nosso interesse. Eu vou manter "alura-348223". Não vamos modificar os campos "Billing account" nem "Location", relativos respectivamente à cobrança (caso sejam criados recursos fora do *free tier*) e à organização. Podemos clicar no botão "Create" e, após alguns segundos, veremos nosso projeto criado, com todas as partes prontas. Voltando ao tutorial do site do Terraform, o segundo item é **ligar o *compute engine* do nosso projeto**. Novamente, vamos clicar no link disponibilizado no tutorial, que nos direcionará para a tela do *Compute Engine API* no console do GCP. Outra forma de chegar nessa página é acessando o menu do GCP, no canto esquerdo superior, selecionando a opção "Compute Engine". Nessa tela, clicaremos no botão "Enable" para habilitar e conseguirmos criar elementos relacionados às máquinas virtuais. Esse processo pode demorar alguns minutos, dependerá da carga sobre o Google no momento. De volta ao tutorial, o terceiro item em "Set up GCP" é **criar uma chave de serviço para nossa conta**. Clicaremos no link disponibilizado no tutorial, que nos direcionará para a página *Service Accounts*, dentro da área "IAM & Admin" do console do GCP. Outra maneira de chegar a esta tela é pelo menu do GCP, acessando "IAM & Admin > Service Accounts". Em seguida, vamos selecionar o projeto "Alura". Nessa nova página, constataremos que já temos uma conta de serviços. Para manter a organização e não nos confundirmos com as chaves e credenciais (partes de segurança muito importantes), vamos **criar outra conta de serviços**. No painel superior da tela, pressionaremos "Create Service Account". O campo relativo ao nome é opcional. Já o ID é obrigatório, como indicado pela presença do asterisco. Nosso ID será "terraform". Logo abaixo desse campo, será automaticamente criado um e-mail para essa conta de serviços. No momento, não precisamos nos preocupar com ele. A seguir, clicaremos no botão "Create and Continue". Agora, precisamos **selecionar um cargo (*role*)**. No tutorial do Terraform, no item 4 referente à criação da chave de serviço, é especificado que nesse campo devemos escolher "Project > Editor" e clicar em "Continue". Dessa forma, essa conta terá permissão para editar qualquer parte do projeto. Pressionaremos o botão "Done" para concluir a criação da conta do Terraform. Na sequência, vamos **criar uma chave para essa conta**. Seguindo o tutorial, vamos selecionar a conta de serviços e acessar a aba "Keys" (chaves) no painel superior. Em seguida, clicando em "Add Key", vamos escolher a opção "Create new key", definir o "Key Type" como JSON e clicar em "Create". O *download* da chave será feito automaticamente em nosso computador e veremos uma mensagem contendo o nome dela. Voltando ao tutorial, antes da seção "Write configuration", temos outro aviso (*warning*). Ele nos informa que ***esse arquivo da chave dá acesso total ao nosso projeto no Google Cloud Platform, então é importante o tratarmos como qualquer outra credencial secreta***, como a senha que usamos para entrar no console do GCP. Ou seja, não é uma boa prática salvar essa chave de acesso em um repositório, por exemplo, pois qualquer pessoa terá acesso ao projeto, se essa chave "vazar". Porém, caso isso aconteça, podemos acessar o menu "IAM & Admin > Service Accounts", entrar na nossa conta e apagar a chave. Depois, criamos outra. Temos a opção de criar várias chaves, só é importante mantermos o controle e a organização delas. Podemos, então, **começar a escrever as configurações do nosso projeto**. Em nosso computador, vamos criar uma pasta chamada "GCP" (abreviação de Google Cloud Platform) e abri-la no Visual Studio Code. Dentro dela, criaremos um arquivo chamado main.tf — um arquivo Terraform. Tudo que formos escrever ficará dentro dele. No tutorial, o início da seção "Write Configuration" explica como criar essa pasta e o arquivo main.tf por comandos no terminal. No caso, optamos pela criação manual. Em seguida, temos um bloco de código de exemplo: terraform { required_providers { google = { source = "hashicorp/google" version = "3.5.0" } } } provider "google" { credentials = file(".json") project = "" region = "us-central1" zone = "us-central1-c" } resource "google_compute_network" "vpc_network" { name = "terraform-network" } Vamos analisar esse trecho, composto por três blocos. De início, temos um bloco terraform referente às configurações que usaremos no projeto do Terraform. Da linha 2 a 6, constam dados do provedor: trata-se do provedor do Google, já com informações da fonte (source) e da versão (version). Da linha 10 a 16, temos o segundo bloco, com configurações desse provedor. A linha 11 contém as credenciais que serão carregadas de um arquivo .json. Na linha 13, precisamos informar o ID do projeto. Nas linhas seguintes, teremos dados relativos à região e à zona — assim como a AWS, o Google trabalha com regiões. Nesse exemplo, temos region = "us-central1" e zone = "us-central1-c", ou seja, estaremos usando o provedor do Google na região central dos Estados Unidos, na zona de disponibilidade C. Das linhas 18 a 20, temos o último bloco, com a opção de criação de um recurso, uma VPC. No momento, não queremos uma VPC, apenas uma máquina virtual. Mais adiante, consultaremos a documentação com esse objetivo. Portanto, vamos copiar apenas os dois primeiros blocos (da linha 1 até a 16) e colá-lo no arquivo main.tf. Feito isso, ainda precisamos configurar dois itens nesse arquivo: **indicar a chave de acesso na linha 11 e definir o ID do projeto na linha 13**. Vamos incluir a chave de acesso no projeto, movendo o arquivo .json para a pasta GCP. Em seguida, daremos uma olhada na estrutura e no conteúdo dessa chave. Primeiramente, ela contém um tipo, que é uma conta de serviço. Depois, temos o ID do projeto e o ID de uma chave privada. Em seguida, consta a chave privada em si, que é bastante longa. Vemos, então, o e-mail do cliente (no caso, da conta de serviço), o ID desse cliente e um link de autorização seguido de um link do *token* para poder acessar as informações. Por fim, há dois certificados, um do provedor e outro do cliente. Voltando ao arquivo main.tf, é necessário alterar a origem das credenciais, na linha 11. Como o nome do arquivo .json é muito extenso, no painel à esquerda vamos clicar com o botão direito do *mouse* sobre ele e renoméa-lo para chave.json. Desse modo, podemos modificar a linha 11 para credentials = file("chave.json"), indicando que as credenciais vêm desse arquivo. Quanto ao ID do projeto (na linha 13), podemos obter essa informação no console do Google Cloud Platform ou no arquivo chave.json, em project_id. No meu caso, a linha 13 ficará project = "alura-348223", lembrando que cada usuário terá um ID diferente. Assim, temos nosso Google Cloud configurado para uso. O próximo passo será **criar a máquina virtual**. No navegador, vamos voltar à página inicial do site do Terraform. Desta vez, no painel superior, acessaremos "Registry" — o registro Terraform. Descendo um pouco a página, temos as opções de *providers*. Vamos clicar em Google Cloud Platform. A princípio, veremos o *overview* do que é o Google Cloud. No topo da página, à direita, acessaremos a **documentação**. Na lateral esquerda, há uma lista extensa de recursos à nossa disposição. Anteriormente no Google Cloud, acionamos o *Compute Engine API*, portanto vamos expandir o tópico "*Compute Engine*" dessa lista. Dentro dele, temos uma série de recursos — estamos buscando por máquinas virtuais, que geralmente têm o nome VM (*virtual machine*) ou *Instance* (instância). No caso, encontraremos o subtópico "google_compute_instance". Clicando em "**google_compute_instance**", descobriremos que se trata de um recurso que gerencia uma instância de uma máquina virtual utilizando o Google Cloud Engine (GCE). Para mais informações, podemos acessar a documentação oficial da API. Aparentemente, este recurso faz exatamente o que precisamos. Mais abaixo nessa página, temos um exemplo de uso. Vamos deixar de lado as primeiras cinco linhas referentes à *service account* e copiar o resto. Colaremos esse trecho ao final do nosso arquivo main.tf: # código anterior omitido resource "google_compute_instance" "default" { name = "test" machine_type = "e2-medium" zone = "us-central1-a" tags = ["foo", "bar"] boot_disk { initialize_params { image = "debian-cloud/debian-9" } } // Local SSD disk scratch_disk { interface = "SCSI" } network_interface { network = "default" access_config { // Ephemeral public IP } } metadata = { foo = "bar" } metadata_startup_script = "echo hi > /test.txt" service_account { # Google recommends custom service accounts that have cloud-platform scope and permissions granted via IAM Roles. email = google_service_account.default.email scopes = ["cloud-platform"] } } Em seguida, vamos remover as partes que não são necessárias para nós. Na linha 18, temos o recurso "google_compute_instance". Vamos substituir o nome lógico "default" por "PrimeiraVM". Na linha seguinte, podemos alterar o nome que aparecerá no console do Google: em vez de "test", usaremos "PrimeiraVM" também. Em machine_type (tipo de máquina), precisamos tomar um pouco de cuidado. A máquina atual, "e2-medium", não é suportada pelo *free tier*! Então, vamos mudar para "e2-micro", que se enquadra no nível gratuito. Quanto à zona, vamos usar a mesma que especificamos anteriormente: "us-central1-c": # código anterior omitido resource "google_compute_instance" "PrimeiraVM" { name = "PrimeiraVM" machine_type = "e2-micro" zone = "us-central1-c" # código posterior omitido As tags não são necessárias, podemos removê-las (linha 23). Por outro lado, precisaremos do disco de *boot* (boot_disk), porque é o disco principal do nosso sistema. Na linha 24, temos os parâmetros iniciais: segundo o exemplo, usaremos uma imagem do Debian, na versão 9. Vamos manter desta forma. Em seguida, é oferecido um SSD local: o scratch_disk, um disco para escrever e ler itens temporários. Não precisamos disso e ele não é suportado no *free tier*, então vamos removê-lo (linhas 29 a 32). Agora, na linha 29, temos a interface de rede, necessária para a comunicação. Vamos manter network = "default" e não modificaremos o access_config, para que ele gere um IP público para nossa máquina. Os metadados (linhas 36 a 38) são desnecessários, vamos removê-los. Em seguida, temos o metadata_startup_script. Se quisermos rodar algum comando no momento de criação da nossa máquina, podemos utilizar essa *tag*. Vamos mantê-la e mudar seu valor para "echo oi > /teste.txt". Dessa forma, será escrito "oi" no arquivo teste.txt, no *root*. Por fim, a partir da linha 38, temos um *service account*. Como já configuramos anteriormente o *provider*, essa parte também não é necessária, vamos apagar da linha 38 até a 42. Então, **a segunda parte do arquivo ficará assim**: # código anterior omitido resource "google_compute_instance" "PrimeiraVM" { name = "PrimeiraVM" machine_type = "e2-micro" zone = "us-central1-c" boot_disk { initialize_params { image = "debian-cloud/debian-9" } } network_interface { network = "default" access_config { // Ephemeral public IP } } metadata_startup_script = "echo oi > /teste.txt" } Pressionando "Ctrl + S", salvaremos o arquivo. Já podemos **executar essas configurações para verificar se funcionam**. Na barra superior do VS Code, vamos em "Terminal > Novo Terminal". No terminal, vamos checar se estamos na pasta GCP. Uma vez dentro da pasta, executaremos o comando ls para verificar se os arquivos estão conforme o esperado: temos chave.json e main.tf. Tudo em ordem, vamos rodar um clear para limpar o terminal. Então, vamos **executar o comando terraform init** para iniciar todas as configurações do Terrafom, fazer o *download* da infraestrutura do provedor e deixar tudo pronto para a execução. Terminado esse processo, vamos **rodar o terraform apply**. Assim, a ideia é pegar o nosso plano e criar uma *compute instance* chamada PrimeiraVM. No console, podemos verificar todas as configurações dessa instância e, ao final, temos o plano total "Plan: 1 to add, 0 to change, 0 to destroy" (1 para criar, 0 para mudar e 0 para destruir). Para confirmar, digitaremos "yes". Durante essa operação, teremos um erro alegando que o nome "PrimeiraVM" é inválido, pois não podemos usar letras maiúsculas, apenas caracteres no padrão [a-z0-9]. Logo, na linha 19 do arquivo main.tf, vamos alterar para name = "primeiravm" e salvar. Em seguida, executaremos o terraform apply novamente, digitaremos "yes" para confirmar e esperaremos enquanto esse processo é executado. No meu caso, a operação foi rápida, apenas 11 segundos. Mas esse tempo pode variar de acordo com a conexão da internet ou da carga sobre os servidores do Google e assim por diante. Para verificar se a máquina foi devidamente criada, vamos voltar ao console do Google Cloud Platform, no navegador. No menu, vamos em "Compute Engine". Nesta página, há uma tabela com as instâncias de máquina virtual e veremos a "primeiravm". O IP dela está na coluna "External IP". Para acessá-la via SSH, selecionaremos o *checkbox* à esquerda e clicaremos no botão "SSH". Dessa forma, a chave SSH será colocada dentro da nossa máquina virtual, pois não fizemos isso antes. Essa é uma das vantagem do Google sobre a AWS: não precisamos colocar as chaves logo que criamos a máquina, ele faz esse procedimento para nós depois. Após alguns segundos, estaremos na nossa máquina. Vamos executar o comando ls / para ver os arquivos que temos dentro da máquina virtual. Um deles é o teste.txt, vamos abri-lo com cat /teste.text. Veremos o texto "oi" que configuramos anteriormente, ou seja, a instância foi criada e o arquivo .txt foi inserido no *root* da máquina virtual. Pronto, criamos a configuramos uma máquina virtual com o Google Cloud! **E se não quisermos mais essa infraestrutura?** Podemos encerrá-la por meio do comando terraform destroy, que vai **destruir a infraestrutura**. Assim, o plano não terá nada para criar ou modificar e um recurso para destruir. Vamos digitar "yes" para confirmar a ação e a máquina será apagada. No meu caso, esse processo demorou 37 segundos, mas esse tempo pode variar. Dessa forma, a infraestrutura foi destruída. O projeto não foi apagado, apenas removemos a infraestrutura, que podia gerar custos. Agora que vimos tudo isso, vamos elencar as **diferenças entre a máquina virtual que criamos no Google Cloud e uma máquina virtual que geralmente criamos na AWS**. Primeiro, no arquivo main.tf, no bloco terrafom que vai da linha 1 a 8, temos que trocar o nome do provedor, bem como o source. Além disso, o método de utilizar credenciais e fazer *login* no Google e na AWS são diferentes. Na AWS, fazemos o *login* pela linha de comando com aws configure. No Google, usamos credenciais via arquivo. O recurso criado também muda de nome entre esses dois provedores. **Na AWS, temos o EC2 Instance e, no Google, o Google Compute Instance**. São nomes e recursos diferentes e também têm configurações distintas. Por exemplo, na AWS especificamos zonas por VPC, não por máquinas. Ambos, porém, precisam de um nome e de um tipo de maáquina (machine_type). Quanto ao boot_disk, no Google definimos pela imagem. No caso, escolhemos o Debian, versão 9. Na AWS, usamos as AMIs, que são parecidas, porém têm nome diferente. Precisamos saber a AMI correta para cada região. Em questão de rede, na AWS não precisamos configurar uma interface de rede. Ele já vem com uma interface e um IP público por padrão. No Google Cloud, temos que especificar esses elementos. Ademais, temos o metadata_startup_script que determina o que será feito inicialmente, em que inserimos o código entre aspas. Na AWS, esse processo é mais complicado, temos que colocar o end_of_file ou end_of_tape, algo nesse sentido para identificar onde começa e onde termina. De forma geral, **esses provedores são bem próximos em termos de criação**. O Google também fornece uma VPC padrão, que é um jeito que de acessarmos essas máquinas. Por fim, vamos revisar tudo que fizemos nesse vídeo. Criamos um projeto e uma chave de acesso para acessá-lo. Depois, configuramos uma máquina virtual do tipo e2-micro (suportada no *free tier*) e especificamos a zona onde ela ficaria — no *datacenter* central dos Estados Unidos, na zona de disponibilidade C. Determinamos o sistema utilizado na máquina, uma interface de rede e um *script* para rodar na criação da instância. Espero que você tenham gostado. Até o próximo Alura+!

  • Back-end

    Empresas que aprendem

    Você sabe qual o papel do aprendizado dentro de uma organização? **O aprendizado organizacional promove tanto a adaptação às mudanças quanto o crescimento da empresa**. Mas você tem ideia de como isso pode ser feito? Neste Alura+, Priscila Stuani fala sobre qual é o papel da organização no processo de aprendizado dos seus profissionais. As organizações possuem responsabilidades no processo de aprendizado de seus colaboradores e colaboradoras. Uma das formas de atuar nesse sentido é fomentar algumas competências, como o pensamento sistêmico, o domínio pessoal, trabalhar modelos mentais, construir uma visão compartilhada, aprendizagem em equipe, e reconhecer os padrões de interação que dificultam este aprendizado, além de estimular as tecnologias componentes. **Algumas estratégias que podem ser tomadas são: ouvir novas propostas, permitir o crescimento profissional das pessoas e incentivar interações!** Está afim de ser uma empresa que aprende? Confira as sugestões abaixo: **Cursos**: - [Aprender a Aprender: Técnicas para seu autodesenvolvimento]( Para conhecer os estilos de aprendizagem, criar rotinas produtivas e usar ferramentas para uma aprendizagem de alta performance. - [Desenvolvimento de Carreira: A demanda do mercado]( Para conhecer as principais estratégias para direcionar sua carreira. - [Alavancas de gestão do conhecimento: Aprendizagem e produtividade]( Para conhecer as cinco disciplinas propostas por Peter Senge para estruturar o processo de aprendizagem e produtividade contínua organizacional. **Podcast**: - [Cultura de Aprendizado]( **Artigo**: - [O dia a dia do profissional que aprende]( Vem **Inovar** com a gente! _____ # Transcrição Olá, eu sou **Priscila Stuani**, instrutora da Alura, e hoje vamos falar sobre as empresas que aprendem. Vamos entender qual é o papel da organização no processo de aprendizagem dos seus profissionais. Para exemplificar essa questão, vamos apresentar a **Bytebank**. Imaginemos que ela é composta por várias equipes multidisciplinares, com diversas áreas dentro da organização. Neste caso, destacaremos a área de **tecnologia da informação**. Existem várias pessoas dentro da equipe com diferentes perfis profissionais, desde aquelas em seu primeiro emprego até outras que já estão no mercado há algum tempo. O que essas pessoas têm em comum? Se a sua resposta for **desenvolver novos conhecimentos na área de programação**, faz todo sentido. Afinal, precisamos contar com alguns apoios dentro da organização. Na Bytebank, por exemplo, existe a Maria, responsável pela área de treinamento e desenvolvimento. Em outras organizações, pode ser um líder ou uma líder que exerce esse papel de acompanhar as demandas que as equipes precisam suprir em relação aos treinamentos. Maria recebe muitas demandas durante o dia, pois são várias áreas, e dentro da área de tecnologia da informação, há várias equipes que precisam desse apoio. Isso começou a gerar uma certa sensação de: > "Como acompanhar todos esses avanços para apoiar o constante processo de aprendizado das equipes?" Nesse caso, trabalharemos com a perspectiva de que existem vários profissionais que investem esforço individual e até financeiro em suas carreiras, fazendo especializações, o que é fantástico e faz todo sentido, pois acreditamos que o aprendizado é o melhor investimento que podemos fazer. Mas, e as empresas? As empresas também têm responsabilidade nesse processo. Mas como podem apoiar esses profissionais? Uma dica interessante é fomentar algumas **tecnologias componentes**, ou seja, gerar inovação para as organizações que aprendem. Profissionais que têm respostas rápidas, conseguem resolver problemas complexos em um curto período de tempo e são mais assertivos nas iniciativas acabam impactando positivamente a inovação da empresa. Para entender como tudo isso pode funcionar, é importante falar das tecnologias componentes. Quando bem integradas, elas fomentam o aprendizado nas organizações. A ideia é não focar apenas em separar um dia para deslocar a equipe para fazer um curso, que sabemos ser importante e muitas vezes ajuda a resolver situações pontuais. Quando falamos de empresas que aprendem, é importante colocar isso no DNA da organização, para que o processo flua de forma mais orgânica, e que as trocas e a forma como as pessoas interagem para resolver questões pendentes possam fluir de maneira mais tranquila e orgânica. Vamos falar de algumas competências que a organização precisa ter. ## Pensamento sistêmico A primeira delas é o pensamento sistêmico, cuja raiz está na ideia de que cada parte do sistema influencia o todo. Quando temos um problema em nosso coração, não é somente ele que fica doente; podemos comprometer outros órgãos. Quando falamos de "sistêmico", é quando algo é constituído por um conjunto de partes que se influenciam mutuamente. Na organização, quando temos um pensamento sistêmico bem alinhado, as equipes passam a trabalhar de forma mais produtiva e efetiva. A criatividade e a resolução de problemas complexos podem surgir de maneira mais natural. Fomentamos a troca de ideias e experiências, contribuindo para o processo de aprendizado contínuo das pessoas. ## Domínio pessoal Outra competência a compartilhar é o domínio pessoal. A expressão "domínio pessoal" pode sugerir controle sobre pessoas e coisas, além de um certo nível de proficiência na questão em que estamos atuando. No contexto das empresas que aprendem, pessoas com alto nível de domínio pessoal têm conquistas como concretizar resultados importantes e comprometer-se com seu aprendizado. Existe uma automotivação, uma energia que nos move para atingir o objetivo esperado. Gosto muito da frase de Peter Senge que diz o seguinte: > "**Domínio pessoal** é a disciplina de continuamente esclarecer e aprofundar na sua **visão pessoal**, de concentrar nossas energias no que realmente é importante, de desenvolver paciência e de ver a realidade objetivamente." > > **Peter Senge** Quantas vezes nos deparamos com situações que fogem do nosso controle e focamos apenas no problema, em vez de buscar soluções? Muitas vezes, buscamos culpados em vez de criar meios para resolver a situação e, em outros momentos, antever falhas para evitar perda de tempo, investimento e emoções. Domínio pessoal é uma característica fundamental que precisamos desenvolver. Na Bytebank, nem sempre foi assim. Quando não temos domínio pessoal, geramos poucos estímulos para o aprendizado das pessoas e desperdiçamos recursos. O que podemos fazer para evitar esse contexto? Podemos levantar o que tem sido feito para garantir que as pessoas na organização desenvolvam e apliquem esse domínio pessoal. Como fazemos isso? **Conversando**. Isso deve fazer parte da cultura organizacional, com um trabalho de comunicação onde as pessoas se conscientizem da importância do domínio pessoal, seus ganhos e como desenvolver essa competência. Além disso, precisamos trabalhar a questão dos modelos mentais. ## Modelos mentais Se pautamos nossas ações apenas em pressupostos arraigados, fazemos generalizações e criamos imagens que influenciam nossa forma de ver e agir, muitas vezes sem consciência, agimos no piloto automático. Este vídeo é um convite para revermos nossos modelos mentais e como reagimos diante de problemas. Quando somos contrariados, como reagimos? Talvez isso esteja ligado a esses pressupostos. É importante entender que isso faz parte do processo que passamos durante a vida, construindo essas referências. No trabalho em equipe e desenvolvimento pessoal, precisamos dar um passo atrás e ver quais são essas influências e o impacto negativo que podem ter em nossa forma de trabalhar e ser como um todo. > "O trabalho com modelos mentais começa por virar o espelho para dentro; **aprender a desenvolver nossas imagens internas do mundo** e levá-las à superfície sobre uma rigorosa análise." > > **Peter Senge** Uma das frases de Peter Senge que mais me impacta é justamente essa. É um processo contínuo, precisamos olhar para dentro para ver como estamos expondo tudo isso. Isso inclui promover conversas ricas em aprendizagem, indagações e argumentações. A ideia da Bytebank é fazer com que seus profissionais extrapolem a visão do óbvio. Sei que o óbvio é relativo, mas quando começamos a propor ideias e fazer coisas de modo diferente para verificar quais os resultados, promovemos a inovação. Falo de inovação não no sentido de tornar a empresa a grande startup do mundo, mas de ações do dia a dia que trazem impacto, ajudam a ganhar produtividade, efetividade, assertividade e um diferencial competitivo mais claro. São ações que podem parecer muito simples, mas são efetivas. ## Construção de uma visão compartilhada A construção de uma visão compartilhada precisa fazer parte do DNA da Bytebank. Vamos além da missão da empresa, internalizando missão, visão e valores para criar identificação e pertencimento ao ambiente. Quando falamos de visão compartilhada, como as pessoas estão vendo tudo isso? Trata-se de uma visão genuína sobre a empresa, essencialmente verdadeira, para evitar a impressão de que a missão no quadro da parede não corresponde à prática. O mercado está seletivo, e os profissionais também. As pessoas dão tudo de si e aprendem não só por obrigação, mas porque querem, vendo os efeitos no dia a dia e como o trabalho pode ser mais leve, sem desespero diante de problemas. A colaboração e a visão compartilhada são fundamentais nesse processo. Quando falamos de aprendizado, não há espaço para visões pessoais. Não é sobre fazer um curso porque o chefe mandou, mas sim sobre agir em função de uma visão compartilhada. Mais uma frase de Peter Senge: > "A prática da visão compartilhada envolve habilidades de descobrir 'imagens do futuro' compartilhadas que estimulem o compromisso genuíno e o envolvimento, em lugar de mera aceitação." > > **Peter Senge** As pessoas estão mais seletivas, buscando algo que faça sentido para elas. Estamos evoluindo para um patamar onde não fazemos algo apenas porque foi mandado, mas porque vemos sentido e importância, empenhando-nos para realizar a tarefa. Ao dominar essa disciplina, a liderança aprende como é contraproducente tentar ditar uma visão, por melhores que sejam suas intenções. A ideia não é julgar valores, mas reconhecer que a pessoa em liderança pode ter arraigado muitas coisas que desviam da cultura que promove o aprendizado na organização. É importante que a liderança esteja em constante auto-observação, observando também a equipe, estabelecendo relações saudáveis pautadas na confiança, para que o aprendizado surja de maneira mais tranquila, suave e real. ## Aprendizagem em equipe A aprendizagem em equipe também faz parte desse contexto. Quando compartilhamos experiências, aumentamos as chances de construir novos repertórios baseados nessas experiências, atingindo objetivos e sendo mais efetivos nas ações. Sentimos a sensação de triunfo ao resolver problemas, seja individualmente ou em equipe. Como estimular a disciplina da aprendizagem em equipes? Sabemos que enfrentamos vários desafios no dia a dia, mas basicamente é conversando, ou seja, a capacidade dos membros de deixarem de lado ideias pré-concebidas e participarem de um verdadeiro pensar em conjunto. Trazemos a conversa para um nível de racionalidade, concentrando atenções em resolver problemas ou pensar em meios de evitá-los futuramente. Reconhecer padrões de interação que dificultam a aprendizagem da equipe também precisa estar no radar, seja para quem exerce liderança ou atua em desenvolvimento e treinamento. Quando percebemos que algo está emperrado, já passamos todas as referências, trocamos ideias e as coisas não avançam, talvez seja um mecanismo de defesa, uma resistência ao novo. Sabemos que isso é um processo natural. Quando alguém diz "sempre foi assim", precisamos ter cuidado e carinho ao tratar questões sensíveis, desbravando pensamentos e modelos mentais arraigados, mas através de comunicação acolhedora, apresentando vantagens e ganhos, trazendo a pessoa para perto de nós. Além disso, promovemos a busca por ideias ou identificamos problemas e, de forma conjunta, conseguimos promover soluções efetivas. Vejamos a seguinte frase: > "Para concretizar seu potencial, o pensamento sistêmico também precisa das disciplinas de construção de uma visão compartilhada, modelos mentais, aprendizagem em equipe e domínio pessoal." > > **Peter Senge** O que a Bytebank ganha com tudo isso? Ao construir uma visão compartilhada, estimulamos o compromisso a longo prazo, fazendo com que as pessoas vejam o sentido do trabalho delas. Os modelos mentais contribuem para revelar limitações em nossas formas atuais de ver o mundo. A ideia não é dizer que alguém está errado, mas trazer a pessoa para perto, apresentando benefícios, ganhos e vantagens, para que ela perceba além da visão que tem, que pode ser limitada, e comece a perceber o sentido do trabalho que estamos fazendo. Pode ser um processo lento, pois trata-se de crenças pessoais, mas o trabalho precisa ser constante, pois os ganhos podem ser surpreendentes. Quando falamos de domínio pessoal, ele é responsável pela motivação pessoal de aprender continuamente como nossas ações afetam o mundo. Chamamos a responsabilidade para nós, sem terceirizar a responsabilidade dos nossos problemas. Isso pode ameaçar a visão sistêmica, tão importante na cultura de uma empresa. ## Aprendizado organizacional Quando falamos de aprendizado organizacional, lembramos que ele promove o crescimento da organização como um todo, contribui para a adaptação do negócio às mudanças, e os líderes têm papel fundamental na criação de condições que promovam esse aprendizado. Precisa ser algo sistêmico, de dentro para fora, para que as pessoas vejam que faz sentido e que todos estão envolvidos. Como podemos fazer isso? * Ouça novas propostas * Permita a apresentação de novas ideias, tenha disposição para compartilhar e acolher experiências; * Promova rodas de conversa * Concretização. Tudo que fica no campo das ideias não é efetivo, então talvez precisemos fazer adaptações, consultar outras áreas e responsáveis para implementar, mas esse é o processo, a dinâmica do jogo. **Permita o crescimento profissional das pessoas**, estimule e facilite a aquisição de competências, ofereça autonomia para que se desenvolvam. Proporcione um ambiente para treinar competências. **Incentive interações**, pois a lenda de que profissionais focados em suas tarefas são mais produtivos pode não ser verdade. A interação entre a equipe é importante para que o conhecimento seja transmitido corretamente. Pense em plataformas para troca de ideias entre as pessoas. **Aceite que o fracasso faz parte do crescimento**. Atenção a esse ponto, pois falamos de recursos financeiros, tempo e profissionais envolvidos. Trabalhamos na intenção de acertar, mas sabemos que nem tudo sairá perfeito. Aceitar que isso faz parte do processo de aprendizagem é fundamental. Algumas iniciativas podem não funcionar, trazendo consequências como demissão ou desconto no salário, mas isso não é rotina em empresas preocupadas em fomentar o aprendizado. Reconhecer quando as coisas não vão bem evita desperdícios de recursos. Precisamos ter domínio pessoal e entender que as coisas não saíram como esperado, e isso é natural. Na próxima vez, o que podemos fazer para evitar isso? Lembre-se, domínio pessoal é a chave. A aprendizagem organizacional permite que as pessoas participem mais ativamente. Esse é o ambiente que criaremos para que os profissionais façam parte do dia a dia da organização e promovam essas iniciativas!

  • Dados

    Executando SQL no VSCode

    Você já passou pela situação em que estava desenvolvendo um projeto utilizando a ferramenta *Visual Studio Code*, mas na hora de executar suas consultas no SQL, teve que migrar para outra ferramenta e interrompeu todo o seu raciocínio? Hoje, queremos resolver esse problema com você. Para isso, vamos conseguir executar SQL diretamente no *Visual Studio Code*. Este conteúdo é apresentado por Igor do Nascimento Alves, instrutor na Escola de Dados. > **Audiodescrição**: Igor é uma pessoa branca, de cabelos curtos e pretos, que veste uma camiseta cinza, com desenhos de peças de xadrez. Ele está num quarto e tem atrás de si parte de uma cama, um teclado musical e um armário com objetos diversos sobre ele. O cenário está iluminado com luzes nas cores azul e verde. Hoje, queremos explorar a questão de executar o SQL diretamente no *VS Code*. Para isso, vamos explorar dois plugins, o *SQL Tools* e o *SQLite*, vamos explorar suas características, vantagens e desvantagens. Para você se comunicar com o banco de dados, precisa de uma ferramenta, podemos utilizar o *SQLite Online*, a ferramenta chamada *DBeaver * ou as próprias *workbenches* dos SGBDs. Mas você já passou pela situação em que estava trabalhando em um projeto multidisciplinar? No nosso projeto, estamos executando consultas SQL na ferramenta *SQLite Online*, mas também estamos fazendo modificações no banco de dados utilizando o código Python. Então, no código Python, estamos me conectando ao banco de dados e fazendo modificações nesse banco de dados. Toda vez que fazemos uma modificação, precisamos pegar esse arquivo .db, carregá-lo no *SQLite Online* e executar novamente minhas consultas. Todo esse processo interrompe o fluxo de trabalho. Você já passou por uma situação parecida com essa? ## Trabalhando com plugins no Visual Studio Code Para resolver esse problema, uma das possibilidades é trabalharmos com os plugins do *Visual Studio Code*. Vamos fazer isso? No *Visual Studio Code*, no canto superior esquerdo, temos um ícone de vários quadrados, são três quadrados juntos e um separado. Esse ícone se chama “Extensões”, ou plugins. Ao clicar nessa opção, surgirá uma barra de pesquisa onde pode procurar por esses plugins. Vou digitar “SQL”, pois estamos interessados em plugins dessa natureza. O primeiro plugin que aparece é o *SQL Server*, e ele foi feito pela própria Microsoft. O que isso quer dizer? Significa que a ferramenta *Visual Studio Code* pode aceitar tanto plugins feitos pela Microsoft quanto os feitos pela comunidade. No nosso caso, vamos explorar os plugins feitos pela comunidade, porque queremos trabalhar com um SGBD específico, que é o *SQLite*. Então vamos continuar percorrendo essa lista de opções até encontrar o “*SQLTools*”. Destacamos essa ferramenta porque o *SQLTools* é muito poderoso, você consegue trabalhar com diversos SGBDs nele. Após selecioná-lo, você pode analisar que ele trabalha com *MySQL*, *PostgreSQL* e *Microsoft SQL Server* e muitos outros. Então, ele é bem poderoso nesse quesito. Porém, quando fizemos os testes de instalação, descobrimos que essa instalação é muito complicada. Por quê? Você vai precisar instalar um segundo plugin relacionado ao banco de dados que vai utilizar, e também um drive que será responsável por fazer essa comunicação entre o *Visual Studio Code* e o banco de dados. Então, ele é um pouco mais trabalhoso para instalar. Já que vamos trabalhar com SGBD *SQLite*, preferimos explorar um pouco mais. Então, vou clicar em “Extensões” novamente, rolando um pouco mais na lista, vamos encontrar um plugin que se chama *SQLite*. Esse plugin tem o nome do SGBD *SQLite*, porque ele só trabalha com esse banco de dados. Então é uma limitação. Se você for trabalhar com outro banco de dados, faz mais sentido você utilizar o *SQLTools*. Como o nosso caso é o *SQLite*, podemos explorar esse plugin. Este plugin é bastante básico e simples de instalar. Ele executa consultas SQL e também consegue exportar essas consultas nos formatos JSON ou CSV. É muito simples de utilizar. Vamos utilizá-lo. Ao clicar no plugin do SQLite, teremos a opção de instalar. Clicamos no botão “Instalar” e agora podemos voltar para o nosso projeto. Vamos clicar no Explorador do VS Code. Dentro da pasta “SQL”, já tenho um script chamado “explorando_dados.sql”. Nesse script, temos as consultas. São as mesmas consultas que tínhamos no SQLite Online, apenas copiamos para cá. E como executamos elas? Podemos clicar no “Explorador”, selecionar a consulta, pressionar o botão direito e escolher a opção “*Run Select Query*” (Executar Consulta Selecionada). Ele abrirá uma janela de pergunta, querendo saber qual é o banco de dados que usaremos, pois em nenhum momento especificamos qual banco de dados ele deve procurar esses dados. Podemos clicar na opção do banco de dados que temos disponível, que é o banco de dados de vendas, e ele executará a consulta. sql SELECT strftime('%m', data_venda) AS mes, COUNT(*) AS quantidade_vendas FROM vendas WHERE strftime('%Y', data_venda) = '2023' GROUP BY mes; No canto direito, ele abriu uma nova janela com o resultado da nossa consulta, que é uma tabela com duas colunas: coluna mês e coluna quantidade de vendas. É o mesmo resultado que tínhamos no SQLite Online. | mes | quantidade_vendas | |---|---| | 01 | 1598 | | 02 | 824 | | 03 | 863 | | 04 | 773 | | 05 | 1245 | | 06 | 751 | | 07 | 807 | | 08 | 740 | | 09 | 788 | Conseguimos, de fato, executar código SQL no VS Code. Com essa ferramenta do SQLite, foi muito simples executar essas consultas. ## Como exportar consultas No resultado da nossa consulta, no canto superior, temos o ícone de um arquivo com uma seta. Podemos clicar nessa opção e uma nova janela se abrirá, perguntando onde queremos salvar esse resultado e em que formato. Podemos dar um nome para esse resultado, então vamos chama-lo de “mes_vendas.csv” e clicar em “Salvar”. Como já temos esse arquivo, ele perguntará se queremos substituir, vamos confirmar que “Sim”. Podemos fechar a aba da consulta e a aba do CSV. Agora, vamosmostrar a vantagem de exportar esse arquivo. Clicando no “Explorador”, neste projeto estamos trabalhando com o Jupyter Notebook. Vamos clicar no arquivo “notebooks > explorando_dados.ipynb”, esse é o arquivo Jupyter Notebook chamado Explorando Dados. Esse arquivo lê o CSV. Vamos clicar em “Executar Tudo” e ele trouxe aquele mesmo resultado, que é o retorno da consulta, para o nosso Jupyter Notebook. Se você estiver atuando em um projeto onde também é uma pessoa cientista de dados e quer criar visualizações com o resultado da sua consulta ou criar modelos de *machine learning* (aprendizado de máquina), isso ficou muito prático. Você executa as consultas SQL e traz o resultado para o seu Jupyter Notebook. Essa é a **vantagem de trabalhar no VSCode**, essa habilidade de um projeto multidisciplinar. Existem outras vantagens de termos migrado nossas consultas para o VSCode? Sim, o VSCode conta com diversos plugins, não apenas um plugin voltado para SQL. Ele oferece diversos plugins para facilitar o seu trabalho. ## Utilizando o Copilot Outro plugin que vamos explorar com você hoje se chama Copilot. Quero passar algumas informações desse plugin antes de utilizá-lo. A primeira informação que queremos trazer é que é um **plugin pago**. Esse serviço é pago e, quando este vídeo foi gravado, o Copilot custava 10 dólares por mês para uma conta individual. Para utilizar sem ter que pagar esse valor existem algumas alternativas, como por exemplo o *free trial* (período de avaliação gratuito). Durante esse período de avaliação, que dura **30 dias**, você pode utilizar o serviço de maneira gratuita. No entanto, para fazer isso, será necessário selecionar uma forma de pagamento, que pode ser mensal ou anual, e fornecer os dados do seu cartão de crédito. Isso pode ser arriscado, pois **após os 30 dias, a cobrança acontece automaticamente**. > É muito importante que você cancele o serviço antes do término do período de avaliação se não quiser pagar por ele. De acordo com a descrição no GitHub, é possível cancelar o serviço assim que a avaliação começar. Ou seja, se você testou e viu que está tudo funcionando, não precisa esperar os 30 dias para cancelar. O acesso ao GitHub Copilot continuará disponível até o final do período de avaliação, mesmo após o cancelamento. Existem outras maneiras mais recomendadas de utilizar o Copilot: se você se encaixa no perfil de ser uma pessoa estudante, professora de universidade, ou mantenedora de projetos de software livre. Se você se encaixa em algum desses perfis, o GitHub Copilot é gratuito. Basta apenas enviar um comprovante para o GitHub e eles fornecerão o acesso de maneira gratuita. A última possibilidade que sugerimos para utilizar o Copilot é verificar se a sua empresa tem acesso ao plano Enterprise. Eles têm um plano para empresas, o **Copilot Enterprise**, então pode ser que você consiga solicitar esse acesso na sua empresa. Agora que deixamos claro como funciona essa ferramenta paga, vamos para o VS Code e ver como ela funciona. Então, já temos o Copilot configurado na máquina e preparei um script para explorarmos, o “explorandocopilot.sql”. Ele está em branco e, agora, para utilizarmos o Copilot, você pode começar digitando um comentário. Nesse comentário, você vai dizer o que deseja escrever de código. Então, um comentário no SQL começa com --, e aqui vamos dizer para ele que queremos saber quais os nomes das tabelas que existem no meu banco de dados. Estamos conhecendo esse banco de dados ainda e queremos entendê-lo melhor. Então, vou digitar: "-- Quais os nomes das tabelas no meu banco sqlite", vou apertar o “Enter” e o Copilot já vai fazer uma sugestão. SELECT name FROM sqlite_master WHERE type= ‘stable’; Ele disse que isso vai retornar o resultado que precisamos. Então, vamos apertar a tecla “Tab”, que aí ele vai transformar esse código de fato aqui no meu arquivo. Podemos selecionar, apertar o botão direito e rodar essa consulta. Como mudamos de arquivo de consulta, ele vai perguntar novamente que banco de dados queremos explorar. Vamos selecionar o banco de vendas novamente e ele retornou essa informação. São os nomes das tabelas que existem no banco de dados: vendas, produtos, clientes, categorias, fornecedores, marcas e itens_venda. Podemos até confirmar isso lá no *SQLite Online*. No *SQLite Online*, no canto esquerdo, temos o nome das tabelas e, dentro do nome das tabelas, temos o nome das colunas também e os tipos que elas aceitam. Aqui vale destacar uma informação importante: uma ferramenta como o *SQLite Online* ou as *Workbends* dos SGBDs serão muito mais completas. Elas têm muitos mais recursos e esse é um exemplo deles. Só de carregar o banco de dados, já temos acesso ao nome das tabelas, o nome das colunas, tudo isso vem de fácil acesso. Já no nosso plugin, no VSCode, tive que rodar uma consulta para acessar essa informação. > Uma ferramenta voltada só para SQL vai ter muitos mais recursos do que esse plugin pode oferecer. Esse é um ponto de atenção. Vamos continuar explorando o Copilot. Já conseguimos descobrir o nome das tabelas. Agora, quero saber um pouco mais sobre uma tabela específica. Só de apertar “Enter” aqui, ele já fez uma sugestão. Ele colocou como comentário: -- Quais as colunas da tabela ‘users’. Nós nem temos essa tabela. Ele está analisando mais o banco de dados do que o nosso contexto. Isso é uma característica dele. > Quanto mais informação você for colocando nesse script, mais ele vai entender o projeto que você vai trabalhar e melhores serão suas sugestões. Então, vamos seguir parcialmente essa sugestão. Vamos digitar: "quais as colunas da tabela", só que agora eu quero uma tabela não do banco de dados, queremos uma do nosso contexto, como por exemplo, produtos. Então, vou apertar “Enter” e, novamente, ele fez uma sugestão. Aqui, ele está utilizando um comando chamado PRAGMA. Não queremos utilizá-lo, queremos um SELECT. Então, quando ele não estiver indo para o caminho que você precisa, você pode começar a digitar um código e ele vai se adaptando ao que você está digitando. Então, escrevemos SELECT, que é o comando que queremos utilizar, e ele já colocou: SELECT * FROM pragma_table_info(‘produtos’);. Vamos apertar o “Tab” para ele preencher o código, selecionar esse código, clicar nele com o botão direito do mouse e escolher a opção “Run select query”, e ele retornou um resultado. Aqui, temos o nome das colunas e diversas informações, incluindo o tipo que essa coluna aceita. | cid | name | type | notnull | dflt_value | |---|---|---|---|---| | 0 | id_produto | INTEGER | 0 | NULL | | 1 | nome_produto | TEXT | 0 | NULL | | 2 | preco | REAL | 0 | NULL | | 3 | categoria_id | INTEGER | 0 | NULL | | 4 | marca_id | TEXT | 0 | NULL | | 5 | fornecedor_id | INTEGER | 0 | NULL | | 6 | data_estoque | DATE | 0 | NULL | | 7 | status | TEXT | 0 | NULL | Essa é a mesma informação que tínhamos lá no *SQLite Online* e conseguimos ela através de uma consulta. Então, já temos acesso às mesmas informações, só que com um pouco mais de trabalho. Vamos testar uma última consulta. Só que agora, em vez de digitar um comentário, vamos escrever diretamente o que queremos: SELECT * FROM produtos. Queremos selecionar os dados da tabela produtos, mas não todos: apenas cinco. No entanto, não lembramos exatamente qual é o nome do comando que limita os resultados. Quando você estiver nessa situação, pode digitar parcialmente o que lembra sobre esse código, e o Copilot vai te ajudar. Então, vamos começar a digitar li, e aqui ele já faz uma sugestão para você. Ele sugeriu que talvez você queira digitar limit. Vamos apertar o “Tab”, ele sugere aqui um limite de 10, que está ótimo, vamos utilizá-lo. sql SELECT * FROM produtos limit 10; Vamos selecionar o código e executá-lo. Então, selecione o trecho de código e clique com o botão direito do mouse sobre ele. Em seguida, selecione “Run select query”. Ele retornou um resultado para nós aqui, todos os produtos na minha base de dados, os 10 primeiros resultados. | id_produto | nome_produto | preco | categoria | |---|---|---|---| | 1 | Bola de Futebol | 24.48 | 4 | | 2 | Chocolate | 1351.17 | 4 | | 3 | Celular | 1351.88 | 4 | | 4 | Chocolate | 662.65 | 5 | | 5 | Celular | 1705.5 | 1 | | 6 | Bola de Futebol | 1941.02 | 3 | | 7 | Celular | 1347.34 | 5 | | 8 | Livro de Ficção | 1993.08 | 2 | | 9 | Livro de Ficção | 324.83 | 5 | | 10 | Celular | 1631.67 | 1 | Então, com um código que do qual nos lembrávamos parcialmente, ele nos ajudou a complementá-lo. Esse é o poder do Copilot, ele vai facilitar a escrita de código. Esse recurso é muito útil e você consegue utilizá-lo aqui no *VSCode*. Hoje, nós analisamos diversas coisas, como, por exemplo, os *plugins* que trazem a possibilidade de trabalhar no VSCode com o SQL. Exploramos o *SQLTools*, uma ferramenta interessante, pois ela acessa diversos bancos de dados. No entanto, ela tem algumas desvantagens, como a **dificuldade para realizar sua instalação**. Já o outro *plugin*, o *SQLite*, é muito simples de utilizar. Essa é uma vantagem, mas uma desvantagem seria que ele **possui poucos recursos**, ou seja, não tem muitas opções para você trabalhar. ## Vantagens e Desvantagens de migrar o projeto para o VSCode Agora, falando das vantagens e desvantagens de migrar o seu projeto para o *VSCode*, conseguimos trabalhar em um projeto multidisciplinar quando passamos nossas consultas SQL para o *VSCode*. Porém, temos a desvantagem de ter menos recursos do que uma ferramenta como o *DBeaver*, o *SQLite Online*, as *Workbends* dos SGBDs têm. Eles possuem muito mais recursos. Portanto, para decidir qual é o melhor para você, vai depender do projeto em que você está trabalhando, do contexto e do seu papel nesse projeto. Se você for, por exemplo, uma pessoa DBA trabalhando nesse projeto exclusivamente com o SQL, faz muito mais sentido você optar por uma ferramenta especializada em SQL. Lá, você terá muitos mais recursos. Porém, caso você seja, por exemplo, uma pessoa da área de negócios ou uma pessoa cientista de dados e estiver trabalhando com o *Python*, com o *Jupyter Notebook*, e tiver esse projeto multidisciplinar, faz mais sentido você optar por uma ferramenta que aceite esses diversos recursos. Então, você precisa avaliar cada um dos seus contextos. Ficamos muito felizes de ter resolvido esse problema junto com você, descoberto essa possibilidade de trabalhar com o SQL no VSCode, e esperamos que você continue se aprofundando no SQL na nossa formação. Para que você possa se aprofundar ainda mais neste tema, segue a sugestão de alguns conteúdos complementares: - [Formação Conhecendo SQL]( - [Curso GitHub Copilot e ChatGPT: impulsionando seu desenvolvimento com IA]( - [Sobre a cobrança para o GitHub Copilot]( - [Extensão SQLite]( - [Extensão SQLTools]( Até a próxima!

  • ArtigosInteligência Artificial

    Artigo Builder: o que é e como se tornar um na era da IA

    Entenda o conceito de builder, de onde ele vem, o que muda na prática para quem cria software com IA e como desenvolver esse perfil.

  • ArtigosInteligência Artificial

    Artigo Estratégia de dados com IA: o que é e como aplicar

    Entenda o que é estratégia de dados com IA: componentes, arquitetura, ferramentas, boas práticas de governança, roadmap e carreira.

  • ArtigosUX & Design

    Artigo ⁠Product Design: tendências e oportunidades para 2026

    Entenda como a IA está transformando o design e quais habilidades serão essenciais para os designers em 2026 e os próximos anos.

  • ArtigosBack-end

    Artigo Ambientes de Código: conheça as vantagens e desvantagens

    Você possui dúvidas sobre onde começar a programar? Leia esse artigo e descubra qual ambiente de código é o mais adequado para você.

  • ArtigosBack-end

    Artigo O que são regras de negócio?

    Entenda o que são regras de negócio e qual a sua importância no desenvolvimento de produtos de software.

  • ArtigosBack-end

    Artigo Compilando e executando programas em C/C++ no Windows

    Aprenda a compilar e executar programas em C e C++ no Windows, configurar variáveis de ambiente e ganhar produtividade com editores.

  • 1Página 1…69Página 69…175Página 175
    1Página 1…67Página 6768Página 6869Página 6970Página 70
    71
    Página 71
    …
    175Página 175