Entendendo Weblogic de vez
Hoje em dia a maioria das corporações sofre com a proliferação de ambientes, que ocorre por questões de insegurança (ao colocarmos novas aplicações em ambientes já existentes e funcionais) ou por diferença de criticidade. O grande problema dessa proliferação de ambientes é que ela custa caro em termos de mais infraestrutura e pessoal e também aumenta o risco, pois cresce a dificuldade de manter todos esses ambientes atualizados.
A solução para esse cenário é a consolidação das aplicações em um número menor de ambientes, reduzindo a complexidade, demanda sobre o time de operações, riscos, etc. No entanto, tal consolidação nos expõe aos problemas que levam à proliferação, como, por exemplo, a possibilidade de uma aplicação impactar sobre outra. A consolidação com controle sobre o comportamento de cada aplicação e também com isolamento entre elas é o cenário ideal para colocar mais aplicações em um mesmo ambiente e ainda garantir que uma não cause impacto na outra. Isso só pode ser obtido através de uma abordagem Multitenant. Mas, o que é mesmo Multitenant?
Para que seja possível entender o que é uma abordagem Multitenant, por que ela permite a consolidação com controle e, depois, assimilar como isso se aplica ao mundo Java EE, é preciso dar um passo atrás e compreender o significado desse termo. Multitenancy significa “múltiplos inquilinos” e, quando falamos sobre o assunto, estamos tratando de consolidação e compartilhamento de recursos com o objetivo de colocar mais ativos no mesmo ambiente e nos beneficiar dos recursos comuns disponíveis.
No mundo do software, podemos dizer que um software ou plataforma é Multitenant quando uma instância serve a múltiplos consumidores, também conhecidos como tenants. Essa abordagem permite compartilhar o ambiente e tirar proveito de uma série de fatores devido a esse compartilhamento, como veremos ao longo do artigo.
Java EE e o compartilhamento de recursos
Neste momento você pode estar pensando nos projetos Java EE que possui, onde provavelmente já compartilha recursos através da instalação de múltiplas aplicações no mesmo ambiente, não é mesmo? Então, o que de tão interessante tem esse tal de Multitenant que você já não esteja fazendo, visto que na maioria dos servidores de aplicação é possível instalar diversas aplicações na mesma instância e compartilhar os recursos e serviços providos pela plataforma Java EE?
Isso tudo é verdade, mas até certo ponto. O Java EE realmente é uma plataforma que permite o compartilhamento de recursos. Você pode instalar múltiplas aplicações na mesma JVM, fazendo com que todas elas compartilhem memória, poder de processamento, conexões com a base de dados, adaptadores JCA, recursos JMS (filas, tópicos, connection factories), entre outros.
Porém, nem tudo é perfeito nesse cenário. O problema começa quando você precisa compartilhar o ambiente e a infraestrutura, mas ao mesmo tempo necessita de um isolamento forte entre os ‘tenants’. Os tenants podem ser aplicações Java EE, ou conjuntos delas, que demandam isolamento umas das outras. A motivação desse isolamento pode ser, por exemplo, a criticidade ou o fato de ser uma aplicação nova, não madura e que não se tem confiança sobre o impacto que pode causar no ambiente.
Isolamento é importante quando o assunto é compartilhamento
Já que multitenancy significa multi-inquilinato, podemos fazer uma analogia com o mundo real para exemplificar a importância do isolamento em cenários de compartilhamento de recursos. Por exemplo, ao pensar em um edifício de apartamentos, fica mais clara a demanda por compartilhamento com controle. Nesse cenário, podemos assumir que os usuários irão compartilhar algumas das facilidades do edifício, como elevadores, áreas comuns, piscinas, garagens, entre outros. No entanto, vão demandar também políticas de isolamento. Os apartamentos deverão ser isolados fisicamente uns dos outros por questões de segurança e privacidade. Será necessário também um controle de acesso que garanta que usuários de um apartamento não possam acessar outro apartamento sem autorização, entre outros exemplos.
Agora, imagine que para conseguir um isolamento físico mais forte ou um controle de acesso diferente por tenant, tenhamos que replicar os elevadores, a piscina, a garagem ou até mesmo o edifício para cada condômino. Imaginou? Pois é, muitas vezes é isso que acontece com as aplicações que precisam ser isoladas umas das outras, como veremos mais a frente.
A mesma demanda por um balanceamento entre o compartilhamento de recursos, o isolamento e o controle que temos em um condomínio se aplica a qualquer plataforma que se disponha a prover serviços compartilhados. É isso que o WebLogic Server Multitenant agrega ao que já existe na plataforma Java EE e o que veremos neste artigo.
A necessidade por isolamento e compartilhamento de recursos em Java EE
A necessidade do isolamento entre aplicações Java EE não é algo novo. Essa demanda ganha cada vez mais atenção à medida que as corporações tendem a consolidar mais aplicações no mesmo ambiente para reduzir a complexidade, consumo de recursos e simplificar a gestão e as operações.
Algumas abordagens para compartilhamento de recursos com isolamento já existem há bastante tempo. Essas soluções têm seu valor, e algumas podem ser utilizadas para complementar as funcionalidades providas pelo WebLogic Multitenant. Vamos analisar algumas delas para compreender quais problemas são possíveis de serem solucionados com o WebLogic Multitenant e que não eram antes.
Isolamento através da virtualização: múltiplas máquinas virtuais
A virtualização pode ser uma maneira de isolar aplicações e, ainda, tirar proveito do compartilhamento de recursos. Isso é possível uma vez que as VMs compartilham o mesmo hardware físico, mas há o isolamento entre as máquinas virtuais em termos de consumo de recursos, como CPU, memória, disco, etc.
Máquinas virtuais são uma boa opção para a consolidação e divisão de servidores grandes em máquinas virtuais menores e mais especializadas. Você provavelmente fará a instalação das instâncias do WebLogic Multitenant em máquinas virtuais. O problema é que configurar uma máquina virtual somente para isolar uma única aplicação das demais pode ser um exagero.
As máquinas virtuais levam consigo todo o footprint de uma nova instância do sistema operacional e, por isso, pode ser um exagero utilizá-las como uma forma de isolamento de aplicações. Tecnologias de containers, como o Docker (veja o BOX 1), são uma alternativa para esse cenário. Para adicionar mais overhead à nossa equação, em cada máquina virtual você terá uma máquina virtual Java (JVM) e outra instância do servidor de aplicação. Caso você precise instalar e isolar uma nova aplicação, o mesmo overhead será replicado: máquina virtual, sistema operacional, JVM e servidor de aplicação. Além disso, esse cenário agrega muita complexidade para a gestão dos ambientes, uma vez que, quanto mais aplicações demandam isolamento, maior é a demanda por mais máquinas virtuais, JVMs e instâncias de servidor de aplicação, o que leva a mais ambientes, mais recursos, mais tempo para aplicação de atualizações, etc.
É um projeto open-source que permite criar containers com tudo que sua aplicação precisa para executar. Através do uso de containers podemos ter um isolamento similar a uma máquina virtual, porém sem o overhead de executar um sistema operacional sobre outro. Isso ocorre porque o container não exige uma nova instância do sistema operacional, como no caso das máquinas virtuais, mas sim compartilha o kernel do sistema operacional onde está executando.
Isolamento com múltiplas JVMs
Outra forma bastante comum de isolar aplicações Java EE é executá-las em instâncias dedicadas do servidor de aplicação e JVM, mas na mesma infraestrutura base, que pode ser virtual ou física, ou seja, executando vários “nós” do servidor de aplicação na mesma máquina.
Dessa forma, as aplicações são completamente isoladas umas das outras sob o ponto de vista da JVM e servidor de aplicação, mas compartilham o mesmo sistema operacional. É mais uma abordagem para isolamento, mas que também vem com um preço a ser pago. Nesse caso, o overhead está relacionado à complexidade. Esse preço é um pouco menor do que o do cenário anterior, mas ainda é grande, pois temos a replicação da JVM e da instância de servidor de aplicação para cada aplicação que demande isolamento. Assim, à medida que ...
Confira outros conteúdos:
Introdução ao JDBC
Novidades do Java
Teste unitário com JUnit
Black November
Desconto exclusivo para as primeiras 200 matrículas!
Pagamento anual
12x no cartão
De: R$ 69,00
Por: R$ 54,90
Total: R$ 658,80
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- 12 meses de acesso
Pagamento recorrente
Cobrado mensalmente no cartão
De: R$ 79,00
Por: R$ 54,90 /mês
Total: R$ 658,80
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- Fidelidade de 12 meses
- Não compromete o limite do seu cartão
<Perguntas frequentes>
Nossos casos de sucesso
Eu sabia pouquíssimas coisas de programação antes de começar a estudar com vocês, fui me especializando em várias áreas e ferramentas que tinham na plataforma, e com essa bagagem consegui um estágio logo no início do meu primeiro período na faculdade.
Estudo aqui na Dev desde o meio do ano passado!
Nesse período a Dev me ajudou a crescer muito aqui no trampo.
Fui o primeiro desenvolvedor contratado pela minha
empresa. Hoje eu lidero um time de desenvolvimento!
Minha meta é continuar estudando e praticando para ser um
Full-Stack Dev!
Economizei 3 meses para assinar a plataforma e sendo sincero valeu muito a pena, pois a plataforma é bem intuitiva e muuuuito didática a metodologia de ensino. Sinto que estou EVOLUINDO a cada dia. Muito obrigado!
Nossa! Plataforma maravilhosa. To amando o curso de desenvolvimento front-end, tinha coisas que eu ainda não tinha visto. A didática é do jeito que qualquer pessoa consegue aprender. Sério, to apaixonado, adorando demais.
Adquiri o curso de vocês e logo percebi que são os melhores do Brasil. É um passo a passo incrível. Só não aprende quem não quer. Foi o melhor investimento da minha vida!
Foi um dos melhores investimentos que já fiz na vida e tenho aprendido bastante com a plataforma. Vocês estão fazendo parte da minha jornada nesse mundo da programação, irei assinar meu contrato como programador graças a plataforma.
Wanderson Oliveira
Comprei a assinatura tem uma semana, aprendi mais do que 4 meses estudando outros cursos. Exercícios práticos que não tem como não aprender, estão de parabéns!
Obrigado DevMedia, nunca presenciei uma plataforma de ensino tão presente na vida acadêmica de seus alunos, parabéns!
Eduardo Dorneles
Aprendi React na plataforma da DevMedia há cerca de 1 ano e meio... Hoje estou há 1 ano empregado trabalhando 100% com React!
Adauto Junior
Já fiz alguns cursos na área e nenhum é tão bom quanto o de vocês. Estou aprendendo muito, muito obrigado por existirem. Estão de parabéns... Espero um dia conseguir um emprego na área.
Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.