sexta-feira, 2 de janeiro de 2015

Tudo (ou quase tudo) que você queria saber sobre licenciamento Oracle e não tinha para quem perguntar

A escolha da melhor tecnologia para atender as suas necessidades em meio a um mercado tão veloz e competitivo é um grande desafio. Se tratando de software então, não basta escolher o melhor produto, mas também escolher a melhor forma de comprá-lo a fim de maximizar o investimento.
No meu dia-a-dia eu vejo muita dificuldade de gestores de TI em entender os conceitos de licenciamento dos mais diversos fornecedores. Como não existe um padrão de mercado é importante estar atento aos nuances de cada fornecedor para não cair em irregularidades.
A fim de facilitar a vida de clientes e parceiros, vou consolidar neste artigo algumas informações bem relevantes na hora de tomar a decisão para o melhor investimento.

O guia prático de licenciamento da Oracle

Sabendo que os clientes têm dificuldades em entender as regras de licenciamento, a Oracle elaborou um manual de licenciamento, chamado Software Investment Guide (SIG), que contém as explanações básicas sobre as métricas de licenciamento para os diferentes tipos de produtos e cenários. Regras bastante polêmicas de licenciamento como failover, stand by, backup, quantidade de usuários e etc. estão explicadas de forma detalhada e com vários exemplos de aplicações destas regras em cenários semelhantes ao mundo real.
No link abaixo, além do SIG você também vai encontrar uma planilha de controle de inventário de licenças que já vem preparada com as métricas e produtos da Oracle. Seu uso não é obrigatório, mas ajuda bastante quando não há nenhum outro tipo de controle.

Principais pontos sobre licenciamento Oracle

A Oracle hoje possui uma gama muito vasta de produtos e serviços, que vai muito além da visão tradicional de que a Oracle é uma empresa de banco de dados. Hoje a Oracle possui em seu portfólio produtos que vão desde a camada de aplicação, passando por middleware, banco de dados, virtualização, sistema operacional, servidores e até storage.
Por isso, quando vamos checar a forma de licenciar um produto, precisamos estar atentos que cada linha de produto possui uma forma específica de licenciamento. Como os pontos mais polêmicos são com relação ao licenciamento de banco de dados, é neste tópico que eu vou focar, mas o SIG está aí para falar também sobre os demais produtos.
O primeiro ponto na escolha do software de banco de dados a ser licenciado é a escolha da funcionalidade desejada. Dependendo das necessidades da empresa em termos de negócio uma ou outra tecnologia pode ser mais adequada. O banco de dados Oracle é comercializado de acordo com a disponibilidade destes recursos para atender necessidades especifícias.
A versão mais básica do banco de dados Oracle é a versão Express (também conhecida como XE). O Oracle XE é gratuíto, porém é o que possui menos recursos e têm maiores limitações em termos de hardware. Independente da máquina onde estiver rodando, ele fica limitado a utilizar apenas um núcleo (core) de processador e 1 GB de memória RAM.
Oracle Standard Edition One (SE1) é a versão comercial entry-level do banco de dados, ele é limitado a rodar num hardware com no máximo 2 (dois) processadores físicos (sockets) e não tem opção de fazer cluster (funcionalidade onde duas ou mais máquinas trabalham em paralelo sobre o mesmo banco de dados).
Oracle Standard Edition (SE), por sua vez, possui o limite de hardware de até 4 processadores físicos (sockets) e tem a possibilidade de fazer cluster através do Oracle RAC (Real Application Clusters). Note que ao optar por utilizar o RAC, continua valendo o limite de 4 processadores para o cluster inteiro (exemplo: duas máquinas com dois processadores).
Finalmente, o banco Oracle Enterprise Edition (EE) é o produto top de linha desta categoria, contendo inúmeras características que o torna ideal para negócios extremamente críticos e dinâmicos. Somente com o Oracle Enterprise Edition você pode garantir alta disponibilidade e continuidade de negócios com zero perda de dados e downtime zero ou próximo de zero. Logo, ele é adequado para empresas que não podem parar (operam 24x7) e também não podem correr risco de perder os seus dados. Isto é, claro, entre outras características como melhor performance, segurança e escalabilidade.
Em termos de licenciamento, o Oracle Enterprise Edition possui uma métrica diferenciada. O processador do EE é calculado de acordo com o número de núcleos (cores) que a máquina possui, aplicado um fator de conversão que é tabelado. Fica mais fácil de entender na prática:
Vamos pegar como exemplo um servidor padrão de mercado hoje, com dois processadores x86 octa-core (8 cores cada, 16 cores no total). O fator de conversão para x86 é 0,5. Logo, o número de processadores a serem licenciados de banco EE é 16 (total de cores) x 0,5 (fator x86) = 8 processadores. (Note que a mesma máquina em SE1 ou SE necessitaria de 2 (duas) licenças de processador)
Para conhecer todos os fatores de conversão, basta consultar a tabela Oracle Processor Core Factor Table. Hoje, os mais relevantes são: 0,5 para x86 e SPARC e 1,0 para processadores RISC não-Oracle.

Licenciamento por Usuários Nomeados (Named User Plus)

Além do licenciamento por processador, algumas linhas de produtos podem ser licenciadas por usuários nomeados, os chamados Named User Plus. Para a linha de produtos de banco de dados, isto também é possível, desde que se considere as seguintes regras:
  1. Usuários humanos e não-humanos precisam ser contáveis (ex.: 30 sensores + 400 operadores)
  2. Existem quantidades mínimas de usuários que precisam ser respeitadas, que variam por produto. Para os produtos banco de dados SE1 e SE, o mínimo de usuários nomeados é 5 por processador. Para o banco de dados EE, o mínimo é 25 usuários por processador.
  3. Para calcular os mínimos, primeiro calcula-se o número de licenças de processador necessárias para o hardware específico e depois aplicam-se os multiplicadores de cada produto.
  4. Se o número de usuários contados for maior que o mínimo, licencia-se por usuários contados. Se não, licencia-se pelo mínimo calculado.
Considerando a máquina de referência do exemplo acima, 2 processadores físicos com 8 cores cada um, os mínimos respectivos são:
SE e SE1: 2 processadores x 5 usuários = 10 usuários nomeados
EE: 2 processadores x 8 cores x 0,5 (fator x86) x 25 usuários = 200 usuários nomeados

Tópicos Especiais de Licenciamento

Os cenários de licenciamento descritos acima vão cobrir a maioria dos casos que encontramos no dia-a-dia. No entanto, a medida que precisamos fazer usos mais avançados do software a complexidade da solução aumenta e as regras precisam ser extendidas para contemplar esta nova complexidade. Dois tópicos muito quentes são o licenciamento de disaster recovery e o licenciamento de ambientes virtualizados.
Com relação ao disaster recovery (DR), entendemos por isso um ambiente onde exista o banco de dados Oracle instalado pronto para assumir a carga do ambiente de produção caso ocorra um evento que indisponibilize o mesmo. Ou seja, é um conjunto de hardware e software adicional que através de alguma forma de replicação mantém uma cópia do banco de dados para eventos de desastres ou outros tipos de paradas, sejam estas planejadas ou não planejadas. Todo servidor onde houver o software da Oracle instalado precisa ser licenciado logo, sim, é preciso licenciar o site DR.
Uma pergunta muito comum é: posso licenciar o site de produção por processador e o DR por usuário? A resposta é não. Independente do tipo de replicação utilizado, se a finalidade é DR, os servidores precisam obrigatoriamente seguir a mesma métrica. Agora se estivessemos falando de ambientes distintos, como por exemplo, produção e homologação ou QA, aí sim, neste caso pode ser licenciado produção por processador e homologação por usuários. Para esclarecer de uma vez por todas as regras de licenciamento de sites de disaster recovery, backup, etc, incluindo esta e outras regras, o documento oficial é o Licensing Data Recovery Environments.
Sobre o tema de virtualização, gostaria de destacar que é preciso tomar muito cuidado com este tópico, em especial para não ficar irregular. Todo processador que roda o código Oracle precisa ser licenciado. Isso fica bem fácil de entender vendo um servidor bare metal, onde todo o processamento fica disponível para o banco de dados e com isso toda a máquina precisa ser licenciada. Agora, em ambientes virtualizados, nem sempre temos o controle sobre quais processadores vão executar quais tarefas, podendo elas estar distribuidas em múltiplos servidores em momentos distintos - a exemplo da tecnologia de live migration. Nestes casos, farms de VMs, onde o banco pode estar executando hora em uma máquina, hora em outra, é necessário licenciar TODA a farm de VMs. Sim, toda. Mesmo que você esteja usando só 2 processadores de cada vez.
Existem exceções a esta regra? Sim. Quando a tecnologia de virtualização tem a capacidade de fazer o chamado hard partitioning ou "CPU pin", ou seja, fixar a execução da VM em um determinado core ou grupo de cores, como se efetivamente estivéssemos "fatiando" uma máquina. Note que não são todas as tecnologias de virtualização que suportam isso, e mesmo que as que suportam, precisam ser homologadas pela Oracle para que o licenciamento seja válido. Esta regra pode ser vista na íntegra no documento Partitioning (não confundir com a option de banco Partitioning, este partitioning se refere a divisão de uma máquina física em máquinas virtuais menores).
A documentação completa sobre os tópicos especiais (além dos dois previamente citados) pode ser encontrada no site da Oracle, na seção Specialty Topics.

Palavras Finais

Ok, talvez meu título tenha sido (um pouco) enganatório. Mas o objetivo era chamar a atenção para estes tópicos de licenciamento que são bastante polêmicos e muito comuns de encontrarmos no dia-a-dia. Vale lembrar também que regras de licenciamento são muito dinâmicas e podem variar ao longo dos anos, então por este motivo fiz questão de apontar sempre as referências oficiais, assim mesmo que este texto algum dia fique desatualizado, aí estão os links para a consulta do material direto na fonte.