Alura > Cursos de DevOps > Cursos de OCI > Conteúdos de OCI > Primeiras aulas do curso Oracle Cloud Infrastructure: banco de dados e infraestrutura como código

Oracle Cloud Infrastructure: banco de dados e infraestrutura como código

Banco de dados na OCI - Apresentação

Dando as boas-vindas e recapitulando a aula anterior

Olá! Gostaríamos de dar as boas-vindas à segunda parte do curso de Oracle Cloud Infrastructure. Nesta etapa, abordaremos bases de dados e infraestrutura como código. Meu nome é Essias, e vamos começar apresentando nossa aula e curso durante este vídeo. Também faremos uma breve recapitulação do que aprendemos na aula anterior. É de suma importância que todos tenham completado a primeira parte do curso para que possamos desenvolver juntos toda a implementação que será realizada aqui.

Recapitulando o que aprendemos: no curso anterior, criamos uma VCN, ou seja, uma Virtual Cloud Network (Rede de Nuvem Virtual), dentro do ambiente de rede da Oracle Cloud Infrastructure, na seção de rede da console. Trata-se basicamente de uma rede configurada virtualmente por meio de software, sem equipamentos físicos.

Criando instâncias e balanceador de cargas

Além disso, criamos duas instâncias de máquinas virtuais através do menu Compute. É importante lembrar que essas máquinas não foram apenas criadas, mas também montamos o ambiente para executar nossa aplicação do portal cloud, que é a aplicação que estamos implementando durante este curso.

Por último, criamos um load balancer (balanceador de cargas) para equilibrar o tráfego em nosso site. Imagine que nosso site está em alta, com muitas pessoas acessando o portal cloud. Precisamos balancear os usuários que entram para não sobrecarregar as máquinas de nossa infraestrutura.

Explorando bases de dados e configuração da aplicação

Agora, neste curso, veremos os próximos passos: definiremos uma base de dados, revisaremos as bases de dados existentes na Oracle Cloud Infrastructure e escolheremos uma para nossa aplicação. Também configuraremos a aplicação e a API do portal cloud. Isso é muito interessante, pois a automação não só traz comodidade, mas também eficiência, além de reduzir erros humanos.

Na próxima etapa, completaremos a parte de instalação da nossa arquitetura do portal cloud e colocaremos uma API em funcionamento. Isso permitirá que façamos atualizações sem a necessidade de acessar os ambientes da aplicação ou o servidor para editar arquivos. Será uma experiência muito interessante.

Implementando armazenamento e infraestrutura como código

No passo 3, definiremos a parte de armazenamento de arquivos e também criaremos nossa infraestrutura como código. Para quem ainda não está familiarizado, essa é uma abordagem inovadora dentro da infraestrutura atual, especialmente no Macloud. Trata-se de construir nossa infraestrutura de maneira declarativa, utilizando um arquivo ou script. Nesse script, indicamos como desejamos que nossa infraestrutura seja, e o sistema executa esse script, transformando ou construindo nossa infraestrutura de forma rápida.

Automatizando e utilizando o Resource Manager

No passo 5, abordaremos a automatização e a reprodutibilidade da IAC, ou seja, da infraestrutura como código. Além disso, aprenderemos a trabalhar com o Resource Manager, que é o administrador de recursos dentro do Developer Services, o serviço de desenvolvedores da console da OCI. Para finalizar, utilizaremos scripts de Terraform na OCI. Isso será muito útil para criar nossa infraestrutura, e aprenderemos tecnologias que estão em uso atualmente, facilitando bastante nossa vida como pessoas desenvolvedoras, DevOps ou arquitetas de cloud.

Encorajando a experimentação e participação na comunidade

Gostaria de compartilhar uma frase e, antes disso, dar um conselho. Sei que vamos aprender muitas coisas novas, especialmente para quem está começando agora, mas gostaria que fôssemos além. Tentemos, façamos nossos próprios laboratórios, experimentemos outras coisas e não nos limitemos apenas ao que estamos aprendendo aqui. A frase de Albert Hubbard que gosto muito diz: "Uma máquina pode fazer o trabalho de cinquenta pessoas comuns; nenhuma máquina pode fazer o trabalho de uma pessoa extraordinária." Portanto, sejamos extraordinários e busquemos sempre aprender mais.

Se houver alguma dúvida, vamos deixar as incertezas e dificuldades para trás e conversar. Convido todos a entrar na comunidade do Discord e deixar suas dúvidas lá. Há professores e outras pessoas capacitadas para responder. Nos vemos na próxima aula. Até mais!

Banco de dados na OCI - Bancos de Dados OCI

Discutindo as bases de dados na Oracle Cloud Infrastructure

Agora vamos discutir sobre as bases de dados dentro da Oracle Cloud Infrastructure (OCI) e compreender a infraestrutura utilizada, para que possamos saber tudo o que podemos usar dentro da OCI e que faça sentido para nossa infraestrutura.

Primeiramente, precisamos entender os diferentes engines (mecanismos) de base de dados disponíveis no mercado atualmente. Por exemplo, temos o MySQL, que é uma base de dados open source (código aberto), criada em 1995, conhecida por ser rápida e popular. O MySQL, ou MySQL como costumamos dizer no Brasil, pertence à Oracle. Após a Oracle adquirir a Sun, fabricante do MySQL, passou a deter também os direitos e oferece alguns produtos empresariais do MySQL.

Explorando os mecanismos de banco de dados

O PostgreSQL também é uma base open source, avançada, robusta e altamente extensível. Utilizamos bastante em nossos projetos na empresa. Já o Oracle NoSQL Database é focado em escala e baixa latência, funcionando de forma semelhante ao MongoDB, trabalhando com chave e valor.

Precisamos entender outra parte da OCI, que é o Oracle AI Database. Este é um mundo à parte, por isso destacamos essa questão. Existem dois menus básicos dentro do console da OCI: o primeiro é o Oracle AI Database, que inclui o Autonomous Database, o Exadata e o Base Database. São tecnologias próprias da Oracle oferecidas como produtos. Explicaremos mais adiante a geração de valor que a Oracle tem com esse menu e esses produtos.

Navegando pelo console da OCI

O segundo menu é o Databases, que inclui MySQL, PostgreSQL e Oracle NoSQL, os engines mencionados anteriormente. Temos uma imagem que ilustra o menu Databases com esses engines e o Autonomous, Exadata, Base Database, integrações e gestão dentro do menu Oracle AI Database.

Dentro do Oracle AI Database, temos basicamente três categorias de produtos. Primeiramente, aqueles totalmente geridos pela Oracle, onde não administramos nada além dos dados. A infraestrutura em si não é tocada. No Command Database, administramos parte da infraestrutura, como a quantidade de hardware desejada para a base de dados. A terceira parte envolve integração, operação e gestão.

Visualizando o console e criando o Autonomous AI Database

Vamos explorar a tela da OCI para entender melhor, visualizando o console. No console, ao clicar no Navigation Menu, veremos o ícone mencionado, com os itens Oracle AI Database e Databases. Ao clicar em Databases, veremos MySQL, HeatWave, Postgre, MySQL HeatWave on AWS e Oracle NoSQL Database. No Oracle AI Database, encontramos o Autonomous AI Database.

Os produtos mencionados são geridos pela Oracle, que faz o gerenciamento completo. No Exadata, temos infraestrutura dedicada, infraestrutura com scale e a possibilidade de integrar parte da infraestrutura on-premise para comunicação com a Oracle.

Criando o Autonomous AI Database

Vamos criar o Autonomous AI Database para demonstrar como é a criação dessa base de dados. Não será a base de dados que utilizaremos em nossa aplicação, pois não é compatível. Precisaríamos fazer adaptações que não seriam profissionais, então usamos o produto correto para a ferramenta adequada.

Para criar, clique em Create Autonomous AI Database. Podemos nomear a base de dados, por exemplo, como "PRUEBA", e o display name também como "PRUEBA". Como convenção, geralmente os nomes de bases de dados estão em maiúsculas, então seguimos essa prática. Escolhemos o compartimento onde a base de dados será criada. No nosso caso, usamos o portal CloudDev.

Configuração de banco de dados Oracle

Existem tipos de carga de trabalho: Lake House, que seria o antigo warehouse para tratamento de dados; Transaction Processing, para transações de escrita e leitura de dados; JSON, para armazenar dados em formato JSON (chave-valor); e APEX, para trabalhar com low-code, onde não trabalhamos diretamente com código, mas com algo que gera o código por trás.

Na Database Configuration, temos duas opções: Always Free e Developer. Always Free é sempre gratuito, mas ao desmarcar essa opção ou escolher outra, podemos entrar em uma infraestrutura paga. Ao selecionar Developer, algumas configurações são carregadas como padrão, mas podemos modificá-las, como a quantidade de CPU e armazenamento desejados. Vamos deixar Always Free para continuar.

Podemos escolher a versão da base de dados, sendo a versão 19c a estável atualmente. Esta base de dados autônoma da Oracle não requer DBAs para configurações ou ajustes, pois o próprio sistema realiza essas tarefas.

Explorando opções avançadas e segurança

Existe a versão 26AI, que traz inteligência artificial incorporada, capacidade de machine learning (aprendizado de máquina) e outras funcionalidades para trabalhar e configurar dados de forma mais eficiente do que a versão 19c. No entanto, por ser uma ferramenta mais nova, a Oracle ainda está testando-a, por isso a versão 19c é mantida como padrão ao criar bases de dados. Podemos optar pela 26AI para experimentar e avaliar o valor que ela pode agregar à nossa infraestrutura.

Nas Advanced Options (Opções Avançadas), algumas configurações não podem ser alteradas. Quando o Always Free (Sempre Gratuito) está ativado, algumas opções ficam indisponíveis para modificação. Em Administration Credentials Creation (Criação de Credenciais de Administração), criaremos nossa senha de administrador. O nome de usuário padrão é "admin", e precisamos apenas criar uma senha. Vamos definir uma senha fácil de lembrar, que inclua caracteres especiais, letras maiúsculas e minúsculas, números e mais de 12 caracteres.

Configurando acesso à rede e finalizando a criação

Em Network Access (Acesso à Rede), configuramos o tipo de acesso à internet. Temos três opções: Private (Privado), Private Endpoint Access Only (Acesso Somente ao Endpoint Privado), onde podemos criar acesso direto ao endpoint, mas não é configurável para nós, pois algumas opções estão restritas a quem paga pelo serviço. Como estamos usando o Always Free, não temos essa opção, mas podemos configurar um acesso seguro apenas para IPs ou VCNs permitidas em Security Access from Allowed IPs and VCN Only. Podemos escolher entre IP Address (Endereço IP), onde inserimos o bloco 0.0 ou 10.0.0, dependendo da rede que queremos liberar, ou uma Virtual Cloud Network usando seu OCI ID. Por simplicidade, deixaremos Security Access from Everywhere (Acesso Seguro de Qualquer Lugar).

Nas configurações adicionais, podemos inserir um e-mail de contato, como cias.souza@alura.com.br. Cada vez que criarmos uma base de dados e inserirmos um e-mail, o OCI enviará informações sobre essa base, além de notícias operacionais e anúncios.

Explorando ferramentas e finalizando a base de dados

Nas Advanced Options, há opções como criptografia, que é obrigatória na Oracle, garantindo segurança máxima. A parte de Maintenance (Manutenção) refere-se ao nível de atualização regular. Migration (Migração) é uma ferramenta para migrar dados de uma base para outra usando o Transportable Table Space da Oracle. Neste caso, não migraremos nada, então deixaremos desmarcado.

Em Tools (Ferramentas), existem opções como a MongoDB API, Oracle Apex, Data Transforms e a Oracle Machine Learning User Interface (Interface de Usuário de Aprendizado de Máquina da Oracle). Todas essas opções estão indisponíveis para edição, pois o Always Free está ativado. Se desmarcarmos o Always Free, elas se tornam editáveis, mas lembremos que haverá cobrança por qualquer serviço habilitado.

Trabalhando com segurança e finalizando a base de dados

Em Security Attributes (Atributos de Segurança), trabalharemos com pacotes de roteamento de Zero Trust da Oracle. Em Tags, podemos configurar etiquetas para organizar nossa infraestrutura. À medida que ela cresce, as Tags facilitam a localização e organização interna.

Ao clicar em Create (Criar), a base de dados começará a ser criada. Caso ocorra um erro, como a necessidade de inserir um IP, basta corrigir e clicar novamente em Create. Após a criação, podemos acessar a ferramenta SQL dentro da Oracle para uso. Embora não utilizemos essa base de dados para prática, ela serve para aprendizado. Usaremos outra base de dados e formas de conexão mais interessantes.

Utilizando a ferramenta SQL e encerrando a base de dados

A ferramenta SQL oferece um tutorial explicativo. Podemos realizar operações como Select, criar tabelas e outras ações usando a ferramenta SQL. Após a apresentação, precisamos eliminar essa base de dados. Para isso, clicamos em More Actions (Mais Ações) e depois em Terminate (Encerrar), digitando o nome da base e confirmando a ação.

No próximo vídeo, mostraremos como criar a base de dados que utilizaremos neste curso para montar nossa infraestrutura. Até o próximo vídeo!

Banco de dados na OCI - Criando um banco de dados MySQL

Escolhendo a base de dados para a aplicação

Agora que já conhecemos as bases de dados da OCI, precisamos escolher uma base de dados para trabalhar em nossa aplicação. Escolhemos o WordPress como nossa aplicação, então a base de dados que selecionarmos deve ser compatível com ele. Neste caso, optamos pelo MySQL, que está disponível para nós dentro da OCI. Vamos trabalhar com ele.

Na tela da OCI, no console, vamos ver como criar essa base de dados. Primeiro, clicamos no Menu de navegação, depois em Base de dados e em DB Systems. Em DB Systems, podemos ver que já temos algumas bases de dados, uma ativa e outra excluída. Vamos mostrar como excluir uma base de dados. Esta já é uma base de dados MySQL, pronta para uso, mas vamos excluí-la para demonstrar. Sempre que precisarmos excluir uma base, podemos fazê-lo para ajustar ou testar nossas configurações. Podemos vir aqui e excluir a base de dados quantas vezes forem necessárias.

Desativando a proteção de exclusão

Ao selecionar a base de dados e procurar em Actions, a opção Delete estará desativada. Isso ocorre porque a base de dados tem uma proteção ativada. Vamos mostrar como desativar essa proteção. Após criar a base de dados, podemos deixá-la desativada. Essa proteção é uma camada extra de segurança para evitar exclusões acidentais, o que é comum. Estamos em um ambiente de aprendizado, então não precisamos de tanta segurança. Em um ambiente produtivo, no entanto, a segurança é essencial.

Para desativar a proteção, clicamos nos três pontos, selecionamos "ver detalhes" e acessamos a base de dados. Ao descer um pouco, encontramos a opção Deletion Plan e o botão Edit. Clicamos em Edit, desmarcamos Delete Protect e clicamos em Update. Agora, podemos selecionar a base de dados e escolher Stop, Restart ou Delete. Vamos clicar em Delete para excluir a base de dados. Há uma opção "Delete DB Systems Permanently", que selecionamos antes de confirmar a exclusão.

Gerenciando backups e criando nova base de dados

Podemos acompanhar o progresso da exclusão em Work Requests, onde vemos o percentual de conclusão da operação. A exclusão pode ser lenta. Também podemos gerenciar backups. Se houver algum backup, podemos selecioná-lo e excluí-lo para limpar nossas configurações na OCI.

Ao acessar oraclecloud.com e clicar em Try OCI for Free, podemos escolher Oracle Database, Always Free, e ver os tipos de base de dados disponíveis. Podemos usar até duas bases de dados, como o Oracle Database HeatWave. Podemos criar uma base stand-alone com até 50 GB de armazenamento e backup, sem custos.

Configurando a nova base de dados

Voltando à base de dados, verificamos o tempo de conclusão da exclusão. Após excluir o backup, retornamos a DB Systems para criar uma nova base de dados. Clicamos em Create DB Systems para iniciar o processo. Escolhemos a template da base, que pode ser para produção, desenvolvimento e teste, ou Always Free, que usaremos.

No compartment, escolhemos onde criar a base de dados. O compartment é onde os recursos são alocados. Vamos deixá-lo em "portal CloudDev". Podemos nomear o sistema de base de dados, usando um padrão como "WordPress_portal_Cloud". Podemos adicionar uma descrição para detalhar a base de dados.

Configurando usuário e rede

Criamos um usuário, por exemplo, dm-portal-cloud, e definimos uma senha simples para estudo, mas recomendamos uma senha complexa para segurança. A senha será dm-essias-123, que copiamos e colamos no campo de confirmação.

Escolhemos entre standalone ou high availability. Apenas standalone está disponível, permitindo uma única instância. Em Configure network, escolhemos as configurações de rede, permanecendo no mesmo compartment. Selecionamos a VCN, como "portal-cloud-vcn1", criada no curso anterior. Escolhemos a subnet, podendo ser privada ou pública. Optamos por pública para acesso tanto pela rede privada quanto pública.

Opções avançadas

As opções avançadas possuem algumas configurações, como o plano de exclusão, que pode ser desabilitado ou habilitado para facilitar a exclusão e oferecer uma camada maior de segurança. Vamos deixar essa configuração como está. A retenção de backup automático também será mantida marcada para que os backups sejam feitos automaticamente. Na parte de backup final, é necessário um backup final ao eliminar sempre o sistema de banco de dados.

Existem mais configurações que podemos usar, como a configuração padrão para selecionar a forma, alterar a configuração, mas estamos sempre limitados. Caso já possua uma conta ou uma conta de teste por um mês com cerca de 300 dólares de crédito, ou se já fez o upgrade da sua conta, pode usar essas configurações.

Criação do banco de dados

Para criar nosso banco de dados, clicaremos em "Create", e ele será criado. Como mencionado no início, precisamos verificar em "Work Requests" para ver o percentual de criação, que está em 0% no momento. Está demorando um pouco para criar esses bancos de dados, então vamos aguardar a conclusão da criação para continuar a aula.

Acesso ao banco de dados

Lembrei de algo importante para mencionar enquanto a base está sendo criada: este banco de dados, ao contrário do que criamos antes, não pode ser acessado diretamente. É necessário um bastião, algo entre nós e o banco de dados. Neste caso, poderíamos usar o próprio WordPress para comunicação, ou phpMyAdmin, mas para simplificar e não precisar instalar muitas coisas nas máquinas, podemos usar o Cloud Shell em "Developer Tools". Já temos o Cloud Shell aberto.

Dentro do Cloud Shell, podemos usar o comando mysql --version para verificar se está instalado. Vemos que há uma versão instalada.

mysql --version

Se quisermos acessar de outra máquina, também é possível. Vou acessar minha máquina virtual, que está funcionando corretamente. Dentro dela, usarei mysql --version para verificar a versão, e vemos que o MySQL está instalado.

mysql --version

Conexão com o banco de dados

Enquanto isso, mostrarei como fazemos essa conexão. Escreveremos -p para que solicite a senha do usuário. Ao pressionar Enter, ele se conectará ao banco de dados e pedirá a senha do usuário adm-portal-cloud.

mysql -u adm-portal-cloud -p

Digitaremos a senha. Agora, precisamos escrever -h, que é o host da máquina à qual queremos nos conectar. Para saber o host, vamos em "Connections", onde aparecerá o IP da máquina. Como a base ainda não foi totalmente criada, está em 32% agora, ainda não temos esse IP.

mysql -u adm-portal-cloud -p -h 10.0.1.231

Configuração de segurança

Para se conectar ao banco de dados, além do endereço IP, também precisaremos da porta. A porta comum do MySQL é 3306. Sempre que trabalharmos com um banco assim, precisamos ir à lista de segurança e adicionar essa conexão, essa abertura de porta para a rede, nas regras de entrada (ingress rules).

Vamos ao menu de navegação, em "Networking", e em "Virtual Cloud Networks". Esperamos abrir e aparecerá nossa VCN. Entraremos na nossa VCN. Na parte superior, nas abas, vamos para a aba "Security". Não confunda "Security" com "Routing". "Routing" é o que manda a rota. "Security" é o que permitirá ou não o acesso.

Configuração do firewall

Dentro de "Security", temos dois itens: nossa rede privada e nossa rede pública padrão. Entraremos na rede pública porque a máquina conectada aqui, a VM2, portal cloud vNIC1, não tem acesso na porta 3306. Quando tentarmos acessar o banco de dados, não será permitido devido a esse bloqueio. Se tentarmos de outra máquina, essa outra máquina teria acesso, mas nossa base de dados está dentro dessa rede, então também não terá a abertura da porta.

É importante revisar o firewall e todas essas configurações dentro do servidor que estamos montando. Como estamos montando um servidor ao qual não temos acesso à máquina ou à configuração interna, configuraremos o firewall a nível de rede. Vamos para "Security Rules", onde lembraremos que criamos a porta 22 e a porta 80, e agora criaremos a porta 3306.

O CIDR que usaremos será 0.0.0.0/0, para aceitar todos os IPs de todos os lugares. Deixaremos marcado o protocolo, a porta de origem pode ser "all" ou não colocar nada, e assumirá "all", que seriam todas as portas pelas quais as conexões saem. Se colocarmos 3306 aqui e 3306 aqui, e o sistema sair por outra porta, não poderá acessar porque bloqueia a porta de origem. Por isso, deixamos todas as portas, e colocaremos 3306 aqui. Uma recomendação é colocar "mysql" na descrição para lembrar para que serve essa regra. Adicionamos as regras de entrada, e agora a máquina já tem acesso.

Verificação da criação do banco de dados

Vamos verificar se a base de dados terminou de ser criada. Em "Database", "DB Systems", veremos nossa base de dados, que ainda está em estado de criação. Devemos esperar que termine para poder acessar. Em "Work Requests", está em 65% de criação, e o cluster já está em 68%. Vamos aguardar um pouco.

Quando terminar, verificaremos se já tem IP. Já tem IP, ótimo. Colocamos o IP aqui e tentamos conectar à máquina. Solicita a senha, então digitamos admecias@123 e pressionamos Enter novamente. O acesso foi negado, pode ser que estava em maiúsculas. Vou tentar novamente, digitando admecias@123. Pronto, já estamos conectados ao banco.

Visualização das bases de dados

Para ver as bases de dados, dentro deste sistema de banco de dados, usaremos show databases;. Isso mostrará todas as bases de dados existentes.

show databases;

A base de dados que vamos criar será portal_cloud_wordpress. Vamos criar a base de dados com create database portal_cloud_wordpress;.

CREATE DATABASE portal_cloud_wordpress;

Agora, se executarmos show databases; novamente, veremos nossa base de dados portal_cloud_wordpress criada.

show databases;

O cluster ainda está sendo adicionado, mas já temos nossa base de dados criada e configurada, com o usuário pronto. Agora, só falta seguir para o próximo passo. Nos vemos no próximo vídeo.

Sobre o curso Oracle Cloud Infrastructure: banco de dados e infraestrutura como código

O curso Oracle Cloud Infrastructure: banco de dados e infraestrutura como código possui 264 minutos de vídeos, em um total de 42 atividades. Gostou? Conheça nossos outros cursos de OCI em DevOps, ou leia nossos artigos de DevOps.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda OCI acessando integralmente esse e outros cursos, comece hoje!

Conheça os Planos para Empresas