quinta-feira, 29 de setembro de 2022

Cloud Engineering & Architecture - Install Docker-compose & Kong for API Management (Instalando o Docker-compose e o Kong para gerenciamento de APIs)

====================
EN
====================
Hello all...
 
Yesterday for my MBA API Management class, I have needed use the Docker and Kong for a Hands-On.

If you don't know, the Kong is a API Gateway and it's one of many Open Source tools for API management.

We have had a Hands-On using Konga that it's an administration UI fot Kong API Gateway. On Konga, we have defined the API source, routes and everything that we needed for call 3 simples APIs.

For this, I have configured an EC2 Instance running Red Hat 8 on AWS Free Tier.

The step-by-step to Docker-compose and Kong installation are bellow, if it helps.

But remember:
1) This worked for me, but might not work for you.
2) This installation is just for academic learn. The real world can be a little bit different.

===================
PTB
===================
Fala pessoal, beleza?

Ontem para uma das aulas de Grenciamento de APIs do MBA, precisei subir o Docker e o Kong para um dos Hands-on.

Para quem não conhece, o Kong é um Gateway API e é uma das várias ferramentas para gerenciamento de APIs open source disponíveis no mercado.

Fizemos o Hands-on através do Konga que é uma UI para administrar o Kong API Gateway. Lá definimos o source, rotas e tudo mais que precisamos para chamar 3 simples APIs.

Para isso, subi uma EC2 instance no Free Tier da AWS rodando Red Hat 8.                

Os passos para instalação do Docker-compose e do Kong estão abaixo, caso ajude alguém.

Lembrando sempre que:
1) O que funcionou para mim pode não funcionar para você.
2) Essa instalação é para fins acadêmicos somente.

====================================
-- Docker-compose Install
====================================
[ec2-user@ip-xxx-xx-xx-xxx ~]$ sudo yum update

[ec2-user@ip-xxx-xx-xx-xxx ~]$ sudo dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo

[ec2-user@ip-xxx-xx-xx-xxx ~]$ sudo dnf repolist -v

[ec2-user@ip-xxx-xx-xx-xxx ~]$ sudo dnf install --nobest docker-ce --allowerasing

[ec2-user@ip-xxx-xx-xx-xxx ~]$ sudo dnf install https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm

[ec2-user@ip-xxx-xx-xx-xxx ~]$ sudo dnf install docker-ce

[ec2-user@ip-xxx-xx-xx-xxx ~]$ sudo systemctl enable --now docker

[ec2-user@ip-xxx-xx-xx-xxx ~]$ systemctl is-active docker

[ec2-user@ip-xxx-xx-xx-xxx ~]$ curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o docker-compose

[ec2-user@ip-xxx-xx-xx-xxx ~]$ sudo mv docker-compose /usr/local/bin && sudo chmod +x /usr/local/bin/docker-compose

[ec2-user@ip-xxx-xx-xx-xxx ~]$ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

[ec2-user@ip-xxx-xx-xx-xxx ~]$ docker-compose -v
docker-compose version 1.23.2, build 1110ad01

Even with everything apparently OK, when I called the APIs, it gave me the error bellow:

[ec2-user@ip-xxx-xx-xx-xxx ~] docker-compose -f docker-compose-deps.yml up -d
ERROR: Couldn't connect to Docker daemon at http+docker://localunixsocket - is it running?

If it's at a non-standard location, specify the URL with the DOCKER_HOST environment variable.

I corrected by following the procedure below:

[ec2-user@ip-xxx-xx-xx-xxx apigateway-kong]$ sudo docker version
Client: Docker Engine - Community
Version:           20.10.18
API version:       1.41
Go version:        go1.18.6
Git commit:        b40c2f6
Built:             Thu Sep  8 23:11:56 2022
OS/Arch:           linux/amd64
Context:           default
Experimental:      true

Server: Docker Engine - Community
Engine:
  Version:          20.10.18
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.18.6
  Git commit:       e42327a
  Built:            Thu Sep  8 23:10:04 2022
  OS/Arch:          linux/amd64
  Experimental:     false
containerd:
  Version:          1.6.8
  GitCommit:        9cd3357b7fd7218e4aec3eae239db1f68a5a6ec6
runc:
  Version:          1.1.4
  GitCommit:        v1.1.4-0-g5fd4c4d
docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

[ec2-user@ip-xxx-xx-xx-xxx apigateway-kong]$ docker-compose --version
docker-compose version 1.23.2, build 1110ad01

[ec2-user@ip-xxx-xx-xx-xxx apigateway-kong]$ ps aux | grep docker
root       60800  0.6  7.6 1283712 63108 ?       Ssl  02:10   0:00 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ec2-user   60923  0.0  0.1 221936  1116 pts/0    R+   02:10   0:00 grep --color=auto docker

[ec2-user@ip-xxx-xx-xx-xxx apigateway-kong]$ sudo chown $USER /var/run/docker.sock

[ec2-user@ip-xxx-xx-xx-xxx apigateway-kong]$ sudo service docker stop
Redirecting to /bin/systemctl stop docker.service
Warning: Stopping docker.service, but it can still be activated by:
  docker.socket

[ec2-user@ip-xxx-xx-xx-xxx apigateway-kong]$ sudo mv /var/lib/docker /var/lib/docker.bak

[ec2-user@ip-xxx-xx-xx-xxx apigateway-kong]$ sudo service docker start
Redirecting to /bin/systemctl start docker.service

[ec2-user@ip-xxx-xx-xx-xxx apigateway-kong]$ ps aux | grep docker
root       60800  0.6  7.6 1283712 63108 ?       Ssl  02:10   0:00 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ec2-user   60923  0.0  0.1 221936  1116 pts/0    R+   02:10   0:00 grep --color=auto docker

====================================
-- Up Kong images
====================================
[ec2-user@ip-xxx-xx-xx-xxx apigateway-kong]$ docker-compose up -d
Creating network "kong-net" with driver "bridge"
Pulling servicea (wesleywillians/kong-service:latest)...
latest: Pulling from wesleywillians/kong-service
6c83e83883df: Pull complete
fe092a9d933b: Pull complete
Pulling serviceb (wesleywillians/kong-service:latest)...
latest: Pulling from wesleywillians/kong-service
Creating apigateway-kong_servicec_1 ... done
Creating apigateway-kong_servicea_1 ... done
Creating apigateway-kong_serviceb_1 ... done

[ec2-user@ip-xxx-xx-xx-xxx apigateway-kong]$ cd docker-kong  

[ec2-user@ip-xxx-xx-xx-xxx docker-kong]$ docker-compose up -d
Creating volume "docker-kong_kong_data" with default driver
Pulling db (postgres:9.5)...
9.5: Pulling from library/postgres
fa1690ae9228: Pull complete
a73f6e07b158: Pull complete
973a0c44ddba: Pull complete
07e5342b01d4: Pull complete
578aad0862c9: Pull complete
a0b157088f7a: Pull complete
6c9046f06fc5: Pull complete
ae19407bdc48: Pull complete
e53b7c20aa96: Pull complete
a135edcc0831: Pull complete
fed07b1b1b94: Pull complete
18d9026fcfbd: Pull complete
4d2d5fae97d9: Pull complete
d419466e642d: Pull complete
Pulling kong (kong:2.3.2-alpine)...
2.3.2-alpine: Pulling from library/kong
e95f33c60a64: Pull complete
dab3768d001d: Pull complete
e24fc8c85ed2: Pull complete
96136c04ffee: Pull complete
Pulling kong-migrations-up (kong:2.3.2-alpine)...
2.3.2-alpine: Pulling from library/kong
Pulling konga-prepare (pantsel/konga:latest)...
latest: Pulling from pantsel/konga
cbdbe7a5bc2a: Pull complete
8f3938f7d3bd: Pull complete
6e3c12f5dc10: Pull complete
ce0cb7a9eeee: Pull complete
a87657869d4f: Pull complete
891b0102e38b: Pull complete
Creating docker-kong_db_1 ... done
Creating konga-prepare                    ... done
Creating docker-kong_kong-migrations_1    ... done
Creating konga                            ... done
Creating docker-kong_kong-migrations-up_1 ... done
Creating docker-kong_kong_1               ... done

====================================
-- List Docker services
====================================
[ec2-user@ip-xxx-xx-xx-xxx docker-kong]$ docker ps

The last steps were to configure the inbound ports on AWS Security panel. 



These links can be help you.
I hope it helps you.

Regards
Mario

terça-feira, 27 de setembro de 2022

Cloud Engineering & Architecture - Tipos de Cloud e ferramentas de orquestração para Hybrid-Cloud

Fala pessoal, 

Como sabem estou fazendo um MBA de Cloud Engineering & Architecture e para estudar estou montando uns mapas mentais.

Nunca achei que isso fosse necessário, alias achava mapas mentais uma grande besteira para ser honesto, mas começando a usar percebi que o recurso me ajuda muito a organizar e fixar as ideias.

Então decidi compartilhar aqui, vai que ajuda mais alguém nos estudos.

Lembrando algumas coisas importantes:

1) O modelo serve para mim, não quer dizer que vai servir para você.

2) O MBA está nivelando conhecimentos, então estamos começando do básico.

3) Os conceitos aqui são acadêmicos, portanto é claro que algumas coisas podem e provavelmente são diferentes na "vida real". Então lembre-se, isso é um material de estudo teórico.

Quem quiser ver o primeiro, falando sobre os tipos de Cloud (Public, Private, Hybrid & Community) é só clicar na imagem:


O material foi baseado na aula de Estratégia de Cloud Computing do Prof. Thiago Viola.

Espero que ajude. 

Abraço 

sexta-feira, 2 de setembro de 2022

 Fala pessoal, beleza?

Hoje o post é rápido. 

Escrevi esse post sobre Open Banking quando ainda estava trabalhando na minha antiga empresa,  acho que vale a leitura por se tratar de um assunto muito atual.

Para acessar, é só clicar na imagem.

Enjoy it!!

 

Espero que gostem, afinal é um assunto extremamente importante.

Abraço 

quinta-feira, 1 de setembro de 2022

Você sabe o que é o Block Change Tracking?

Fala pessoal, beleza?

Tenho falado com vários DBA's sobre backup's e políticas de melhores práticas e quase 100% deles tem comentado sobre a dificuldade em cumprir as janelas definidas já que temos bancos cada dia mais enormes.

E percebi que quase todos eles não usam uma opção muito legal que se chama Block Change Tracking (ou BCT) para os mais chegados, que poderia ajudar bastante nessa tarefa.

Basicamente e muito resumidamente falando, mesmo quando você faz um backup incremental, o Oracle precisa percorrer todos os blocos dos seus datafiles - sejam eles novos ou não, para saber o que foi alterado desde o último backup e inserir esses blocos em seus backup pieces.

É ai que mora a beleza do BCT. 

Se o BCT estiver ativo na sua produção ou em um StandBy físico, o Oracle vai registrar bitmaps que marcam as alterações nos datafiles entre os backups. Ele vai criar um índice (ou um arquivo de rastreamento como o próprio nome já diz) e vai registrar todos os blocos alterados ali. 

O RMAN então usará este rastreamento para identificar esses blocos alterados na execução dos backups incrementais, salvando muito tempo nessa operação e evitando a necessidade de leitura de todos os blocos dos datafiles.



O mais bacana é que o uso do BCT não altera os comandos usados ​​para realizar os backups incrementais. Além disso o BCT file não requer manutenção após a configuração inicial.

Outro ponto legal demais é que o DBA não precisa se preocupar com o gerenciamento desse arquivo. O Oracle gerencia automaticamente o espaço no BCT. 

Aqui temos um ponto de atenção quanto a retenção, como destacado no exemplo dado no manual:

É importante considerar o limite de oito bitmaps na sua estratégia de backup incremental. Por exemplo, se você fizer um backup nível 0 seguido por sete backups incrementais diferenciais, o BCT file chegará a 8 bitmaps. O próximo backup irá descartar o bitmap mais antigo

Então, se você fizer um backup incremental de nível 1 cumulativo na próxima operação, o RMAN não poderá otimizar o backup, porque o bitmap correspondente ao backup nível 0 será substituído. Então ess eé um ponto de atenção.


Para criar um BCT é mega fácil:

    SQL> ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE '+BCT/BCTrk.F'; 

Abaixo eu deixo 3 pontos ue devem ser considerados antes de adotar o que eu falei acima:

   1) Se você não passar onde o BCT deve ser criado, por default ele será inciado no DB_CREATE_FILE_DEST.

   2) Eu sempre crio um DG exclusivo para o BCT. Devido a ele ter uma gravação intensa, ele pode afetar a performance do banco de dados caso você o coloque juntamente com a área de FRA, por exemplo. Ou no seu DG de Redos.

   3) Infelizmente você só pode habilitar o BCT em um StandBy físico se você possuir a licença do Active Data Guard. 

Claro, antes de sair habilitando quaquer coisa em seu banco de dados, por favor, teste muito bem e veja se é adequado a seu ambiente. 

"Lembre-se que o que é bom para o meu ambiente pode não ser bom para o seu." - By Ricardo Portilho Proni

É ou não é show? Você acha que seu backup vai ser mais rápido com isso?

Mais informações aqui:

Backup and Recovery User's Guide

2 Day DBA

Grande abraço e espero que tenha ajudado.

Mario




Postagem em destaque

[ORACLE] Embedding ONNX model for Vector Search tests with Oracle Database 23ai

Hello, everyone. How's it going? Today, I'm going to show you how to load an ONNX model into the Oracle 23ai database for your vecto...