Sobes.tech
Junior

Que stands você atende no seu trabalho atual ou anterior?

sobes.tech IA

Resposta da IA

Eu atendo os seguintes tipos de stands:

  • Dev: Stand para desenvolvedores, não destinado a testes por utilizadores finais. Usado para verificar alterações de código e deploys em fases iniciais.
  • Test/QA: Stand para testadores, onde são realizados vários tipos de testes (funcionais, de integração, de carga). Contém versões mais estáveis das aplicações e é semelhante ao Prod em configuração e dados.
  • Stage/Pre-prod: Stand que imita ao máximo o ambiente de produção (Prod) em configuração, dados e infraestrutura. Usado para testes finais antes do lançamento em Prod.
  • Prod: Stand industrial, onde são colocadas aplicações acessíveis aos utilizadores finais. Requer máxima estabilidade, resistência a falhas e segurança.

Cada stand suporta o seu próprio conjunto de ambientes:

env:
  development:
    name: Dev
  testing:
    name: Test/QA
  staging:
    name: Stage/Pre-prod
  production:
    name: Prod

O processo de construção e deploy é automatizado usando pipelines CI/CD, que garantem o deploy dependendo do stand alvo. Por exemplo, um pipeline para construir um microserviço pode ser assim:

# Exemplo de pipeline CI/CD no GitLab
stages:
  - validate
  - build
  - test
  - deploy

build:
  stage: build
  script:
    - docker build -t my-app:$CI_COMMIT_SHORT_SHA .

deploy_to_dev:
  stage: deploy
  script:
    - kubectl apply -f kubernetes/dev.yaml
  only:
    - merge_requests

deploy_to_test:
  stage: deploy
  script:
    - kubectl apply -f kubernetes/test.yaml
  when: manual # Deploy manual após testes bem-sucedidos
  rules:
    - if: '$CI_COMMIT_BRANCH == "develop"'

deploy_to_stage:
  stage: deploy
  script:
    - kubectl apply -f kubernetes/stage.yaml
  when: manual
  rules:
    - if: '$CI_COMMIT_BRANCH == "main"'

deploy_to_prod:
  stage: deploy
  script:
    - kubectl apply -f kubernetes/prod.yaml
  when: manual
  rules:
    - if: '$CI_COMMIT_TAG =~ /^v\d+\.\d+\.\d+/' # Deploy em produção por tag de versão

A manutenção inclui monitoramento de desempenho, gestão de logs, configuração de sistemas de segurança, atualização regular de software e infraestrutura, bem como resolução de incidentes. As ferramentas e tecnologias usadas variam consoante o projeto, mas geralmente incluem:

Categoria Exemplos de ferramentas
Gestão de configuração Ansible, Terraform
CI/CD GitLab CI, Jenkins
Contenerização Docker, Kubernetes
Monitorização Prometheus, Grafana, ELK Stack
Registo de logs Elasticsearch, Logstash, Kibana
Armazenamento PostgreSQL, Redis, S3
Plataformas cloud AWS, GCP, Azure (dependendo do projeto)