Translate

Mostrar mensagens com a etiqueta infraestrutura como codigo. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta infraestrutura como codigo. Mostrar todas as mensagens

sábado, 6 de julho de 2024

☕🚀 PADAWAN, YAML NÃO É LINGUAGEM DE PROGRAMAÇÃO. É A FICHA DE CADASTRO DO UNIVERSO DEVOPS!

 

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. 🚀☕💙