| Bellacosa Mainframe e a introdução a YAML |
☕🚀 PADAWAN, YAML NÃO É LINGUAGEM DE PROGRAMAÇÃO. É A FICHA DE CADASTRO DO UNIVERSO DEVOPS!
Se você veio do mundo COBOL, JCL, PROC, PARMLIB, SYSIN, cartões perfurados, datasets sequenciais e arquivos de configuração gigantescos, provavelmente já esbarrou em um arquivo chamado:
application.yaml
docker-compose.yaml
kubernetes.yaml
pipeline.yaml
E talvez tenha pensado:
"Mas afinal... que diabos é YAML?"
Sente-se, pegue seu café e venha comigo.
Porque entender YAML hoje é quase tão importante para um desenvolvedor moderno quanto entender JCL era para um programador mainframe nos anos 80.
A HISTÓRIA DO YAML
YAML significa:
YAML Ain't Markup Language
Ou seja:
"YAML não é uma linguagem de marcação."
O nome é um trocadilho.
No início ele significava:
Yet Another Markup Language
(Mais uma linguagem de marcação)
Mas depois os criadores perceberam que YAML não era exatamente uma linguagem de marcação como XML.
Então mudaram para:
YAML Ain't Markup Language
QUANDO O YAML NASCEU?
O projeto surgiu em:
2001
Criado por:
Clark Evans
Ingy döt Net
Oren Ben-Kiki
O objetivo era simples:
Criar algo mais legível que XML.
Na época o XML dominava tudo.
Exemplo XML:
<cliente>
<nome>João</nome>
<idade>25</idade>
</cliente>
Os criadores pensaram:
"Por que tanta tag abrindo e fechando?"
Então nasceu YAML.
VERSÕES IMPORTANTES
YAML 1.0
2004
Primeira versão oficial.
YAML 1.1
2005
Mais recursos.
Maior adoção.
YAML 1.2
2009
Versão mais usada atualmente.
Compatibilidade melhor com JSON.
POR QUE O YAML FICOU TÃO POPULAR?
Porque ele resolveu um problema enorme:
Configurações.
Todo sistema precisa delas.
Antes tínhamos:
INI
XML
Properties
Arquivos texto
Mas YAML ficou muito mais fácil de ler.
PARA QUE SERVE O YAML?
Basicamente:
Armazenar configuração
Exemplo:
servidor:
porta: 8080
banco:
host: localhost
ONDE O YAML É UTILIZADO?
Hoje praticamente em todo lugar.
Kubernetes
Talvez o maior usuário de YAML do planeta.
apiVersion: v1
kind: Pod
metadata:
name: meu-pod
Docker Compose
version: "3"
services:
banco:
image: mysql
Spring Boot
server:
port: 8080
GitHub Actions
name: Build
on: push
GitLab CI
stages:
- build
- deploy
Ansible
- hosts: servidores
O YAML PARA UM COBOLISTA
Imagine um membro PARMLIB.
Por exemplo:
PORTA=8080
HOST=localhost
YAML faz algo semelhante.
Só que organizado hierarquicamente.
servidor:
host: localhost
porta: 8080
É como um PARMLIB muito mais moderno.
A REGRA MAIS IMPORTANTE DO YAML
Padawan...
A regra mais importante é:
ESPAÇOS
Não TAB.
Não misture.
Não invente.
Somente espaços.
EXEMPLO VÁLIDO
cliente:
nome: João
idade: 25
EXEMPLO INVÁLIDO
cliente:
<TAB>nome: João
Muitos erros acontecem por causa disso.
ESTRUTURA BÁSICA
Tudo gira em torno de:
chave : valor
nome: João
idade: 25
ativo: true
TIPOS DE DADOS
Texto
nome: Bellacosa
Número
idade: 50
Decimal
salario: 3500.99
Booleano
ativo: true
Nulo
valor: null
AGRUPAMENTOS
Podemos criar grupos.
cliente:
nome: João
idade: 25
Representa:
{
"cliente":{
"nome":"João",
"idade":25
}
}
LISTAS
Parecido com OCCURS.
linguagens:
- COBOL
- Java
- Python
Equivale a:
[
"COBOL",
"Java",
"Python"
]
LISTA DE OBJETOS
Muito usada.
funcionarios:
- nome: João
cargo: Programador
- nome: Maria
cargo: Analista
COMENTÁRIOS
Como no JCL usamos:
//*
No YAML usamos:
# comentário
Exemplo:
# porta da aplicação
porta: 8080
STRINGS
Pode ser:
nome: Bellacosa
Ou:
nome: "Bellacosa"
Ou:
nome: 'Bellacosa'
MULTILINHAS
Muito útil.
descricao: |
Linha 1
Linha 2
Linha 3
Resultado:
Linha 1
Linha 2
Linha 3
EXEMPLO PRÁTICO SPRING BOOT
Imagine uma API Java.
Arquivo:
server:
port: 8080
spring:
datasource:
url: jdbc:mysql://localhost/teste
username: root
password: 123
Quando a aplicação sobe:
Porta 8080
Banco MySQL
Usuário root
Tudo configurado via YAML.
EXEMPLO PRÁTICO DOCKER COMPOSE
version: '3'
services:
mysql:
image: mysql:8
app:
image: minha-api
Traduzindo:
"Suba dois containers"
MySQL
Aplicação
EXEMPLO PRÁTICO KUBERNETES
Aqui mora o YAML.
Praticamente tudo no Kubernetes é YAML.
apiVersion: v1
kind: Pod
metadata:
name: bellacosa
spec:
containers:
- name: app
image: nginx
Executa:
kubectl apply -f pod.yaml
E o cluster cria o pod.
COMANDOS IMPORTANTES
YAML em si não possui comandos.
Isso é importante.
Muitos iniciantes confundem.
YAML é apenas:
Estrutura de dados.
Os comandos pertencem à ferramenta.
Exemplo:
Docker:
docker compose up
Kubernetes:
kubectl apply -f arquivo.yaml
Ansible:
ansible-playbook playbook.yaml
GitHub:
Automaticamente lê:
.github/workflows/build.yaml
YAML E JSON
Você sabia?
Todo JSON válido pode ser convertido para YAML.
JSON:
{
"nome":"João"
}
YAML:
nome: João
Muito mais limpo.
VANTAGENS
Legibilidade
A maior vantagem.
Fácil de aprender
Poucas regras.
Menos verboso
Muito menor que XML.
Hierarquia natural
A indentação mostra tudo.
Amplamente suportado
Praticamente todas as linguagens.
Excelente para DevOps
Docker
Kubernetes
GitHub
Ansible
Terraform
Tudo conversa com YAML.
DESVANTAGENS
Nem tudo são flores.
Sensível a espaços
Um espaço errado:
Tudo quebra.
Difícil para estruturas gigantes
Arquivos enormes viram labirintos.
Erros nem sempre claros
Às vezes o parser reclama na linha 200.
Mas o erro está na linha 30.
Não é ideal para dados complexos
JSON pode ser mais seguro.
ERROS CLÁSSICOS DE INICIANTES
Misturar TAB e espaço
Erro número 1.
Indentação incorreta
Errado:
cliente:
nome: João
Correto:
cliente:
nome: João
Esquecer hífen em listas
Errado:
linguagens:
COBOL
JAVA
Correto:
linguagens:
- COBOL
- JAVA
LABORATÓRIO 1
Criar arquivo:
empresa:
nome: Bellacosa Mainframe
fundacao: 2024
Salvar:
empresa.yaml
LABORATÓRIO 2
Adicionar funcionários.
empresa:
nome: Bellacosa Mainframe
funcionarios:
- nome: João
cargo: Programador
- nome: Maria
cargo: Analista
LABORATÓRIO 3
Converter para JSON
Resultado:
{
"empresa":{
"nome":"Bellacosa Mainframe",
"funcionarios":[
{
"nome":"João",
"cargo":"Programador"
},
{
"nome":"Maria",
"cargo":"Analista"
}
]
}
}
YAML E COBOL
Imagine uma configuração externa.
Antes:
01 PARAMETROS.
05 PORTA PIC 9(4).
05 HOST PIC X(50).
Lendo de arquivo texto.
Hoje poderíamos ter:
aplicacao:
host: localhost
porta: 8080
Uma API Java poderia ler isso.
Uma aplicação Node.js também.
Um container Docker também.
Todos compartilhando o mesmo arquivo.
YAML NO MUNDO MAINFRAME
Muita gente acredita que YAML não tem relação com Mainframe.
Erro enorme.
Hoje encontramos YAML em:
OpenShift on Z
Kubernetes on IBM Z
z/OS Connect
IBM Cloud
Ansible Automation Platform
DevOps Enterprise
Imagine um pipeline CI/CD para COBOL:
stages:
- build
- test
- deploy
Esse YAML pode controlar:
Compilação COBOL
Link Edit
Testes
Deploy
Tudo automaticamente.
ANALOGIA BELLACOSA MAINFRAME
Se eu tivesse que explicar YAML para um operador de mainframe dos anos 80, eu diria:
JCL diz O QUE EXECUTAR.
COBOL diz COMO PROCESSAR.
YAML diz COMO CONFIGURAR.
Ele é o formulário de configuração do ecossistema moderno.
Não executa lógica.
Não faz cálculo.
Não substitui COBOL.
Não substitui Java.
Não substitui Python.
Mas conecta todos eles.
CONCLUSÃO
Padawan...
Se nos anos 70 o profissional de tecnologia precisava entender:
JCL
PROCs
PARMLIB
SYSIN
Hoje o profissional moderno precisa entender:
YAML
Docker
Kubernetes
GitHub Actions
CI/CD
YAML tornou-se a linguagem universal da configuração.
Sua sintaxe minimalista, sua legibilidade e sua adoção massiva fizeram dele um dos formatos mais importantes da computação moderna.
E existe uma grande chance de que o próximo arquivo que você abrir em um projeto de nuvem, DevOps, containers, APIs ou automação tenha exatamente esta extensão:
.yaml
ou
.yml
Quando isso acontecer, não tenha medo.
Lembre-se desta regra:
☕
"YAML é para o DevOps o que o PARMLIB foi para o Mainframe: um lugar onde a configuração mora para que o programa possa trabalhar."
E quando você dominar YAML, Kubernetes, Docker e automação, perceberá algo curioso:
O mercado mudou, as ferramentas mudaram, os nomes mudaram...
Mas a ideia continua a mesma desde os tempos do COBOL:
separar a configuração da lógica do programa.
Essa é uma das filosofias mais antigas, elegantes e duradouras da computação. 🚀☕💙