VMS vs Containers quais diferenças e usos?

vms vs container

Ilustração: vms vs container – Designed by Freepik

O Cloud computing trouxe consigo novas possibilidades de arquiteturas de TI como a instauração de instâncias cloud específicas para cada tipo de serviço. Como a arquitetura em cluster de banco de dados que traz instâncias configuradas para trabalhar com melhor desempenho para banco de dados ou aplicação. Neste ambiente cada VPS tem suas bibliotecas, SO, componentes específicos.

Com a evolução destas novas arquiteturas surgiu também um problema na criação e manutenção das VPS. Já que para a migração ou expansão do produto era necessário remontar cada configuração e refazer cada instalação. Mas como para cada problema, mais cedo ou mais tarde, surge uma nova ideia, surgiram os conceitos de virtualização de máquina (VM) e criação de containers.

Cada um com suas especificidades mas, ambos buscando uma solução em comum, facilitar a portabilidade e manutenção da infraestrutura da sua aplicação final. Mas, vamos as especificidades de cada um para termos, ao fim, um norte de qual adotar para o nosso projeto.

Virtual Machine

Brevemente falando a virtualização de máquina consiste em empacotar determinada aplicação em um modelo padrão com seu próprio ambiente operacional. Assim, agora independente da máquina que você for rodar esta aplicação suas configurações serão as mesmas desde o nível de SO até as bibliotecas e dependências necessárias.

Voltemos a arquitetura de cluster de banco de dados. Você possui uma estrutura dividida com Load Balance entre 10 VPs. Todas elas precisam ter o mesmo funcionamento e configuração. Agora imagine você ter que fazer isto uma a uma manualmente… Já deu pra sentir uma gota de suor escorrendo pelo rosto neh?! Com o uso da virtualização estas configurações seguirão automaticamente o modelo feito. Além disto você pode facilitar sua vida utilizando um gerenciador de máquinas virtuais como o Vagrant.

Containers

Os containers também fazem empacotamento, mas no caso ele não virtualizará o ambiente todo da máquina. Ele trabalhará em cima da aplicação e suas dependências criando uma virtualização apenas a nível do SO e não da máquina. Desta forma você terá o benefício de rodar ambientes isolados dentro de uma única VPs, por exemplo. Além disto você terá o benefício sobre o tamanho do sistema virtual, já que ele só integrará as configurações da sua aplicação e não da máquina inteira. Para este conceito sem dúvida hoje o maior exemplo seria o docker. Pelo seu caráter aberto, simples e colaborativo ele se tornou o sinônimo de container.

Virtualização ou containers

Se você ainda está com dúvidas do que utilizar, não se preocupe. Existem alguns pontos que podemos analisar antes desta decisão. É fato que ambos permitem uma melhor portabilidade, menor conflito de ambientes, aumento da segurança e manutenção mais fácil. Mas por trabalharem de forma diferente eles também permitem níveis diferentes para estes resultados.

A virtualização permite o isolamento total do ambiente da sua aplicação, já que ela virtualiza a máquina por completo. O container por ser uma virtualização que compartilha um mesmo kernel do sistema operacional traz um isolamento apenas parcial. O que isto quer dizer? Isolamento total igual a mais segurança.

A virtualização dá garantia de recursos para sua aplicação em nível de hardware, algo que não ocorre na conteinerização.

A Virtualização também permite o trabalho com sistemas operacionais diversos em um mesmo projeto. Já o container possui a dependência do Sistema operacional que ele está rodando.

Por outro lado os containers necessitam de menos recursos, muito menos recursos, já que eles não possuem todo o SO dentro deles. Este fator também implica na maior rapidez de reposta na inicialização de um container.

Hoje o artigo foi mais teórico, mas para o próximo artigo trarei informações sobre a configuração do docker em um cloud que tenho aqui na DialHost.

Felipe Moraes
Felipe Moraes

Desde pequeno eu adorei tecnologia e este sentimento me fez estudar e trabalhar com desenvolvimento, design de interfaces e interação. Esta vontade de melhorar e aprender com a tecnologia me fez estar aqui na DialHost desde 2012.

Cacheando informações do WordPress com Redis

redis

redis

Finalizei o meu post anterior com a promessa de trazer um post sobre o uso do Redis para fazer o cacheamento de informações do WordPress. É preciso deixar bem claro que estes procedimentos podem ser úteis para diversas configurações do Redis como cacheamento, irei apenas utilizar de exemplo o WordPress. Utilizo o WordPress como exemplo apenas por ser um CMS bem popular e acredito que tem muita gente que vai gostar de ter estas dicas para configurar seu WordPress e deixar ele voando!

Para os que ainda estão um pouco perdidos com relação ao que é o Redis, volto a explicar. O Redis é um servidor de estruturas de dados que pode ser usado como um servidor de banco de dados ou utilizado em paralelo com o MySQL para aumentar o seu desempenho.

Nele podemos gravar informações em Strings, Integers, Lists, Sets, Ordered Sets e Hash Tables.

No exemplo que iremos montar abaixo ele irá funcionar como um cache persistente. Quando uma uma página for carregada pela primeira vez a query do banco será executada no servidor. Neste momento o Redis irá cachear a query. Após isto qualquer usuário que acessar esta mesma página terá o resultado vindo do Redis, sem a necessidade de consultar o banco novamente.

Mas chega de lenga lenga e vamos ao que realmente interessa. Configurar esta belezinha. Para isto vou utilizar um instância Cloud com Ubuntu 14.04 que tenho aqui na DialHost

Instalando o Redis

Para a instalação dele com o WordPress vamos precisar de dois packages em seu servidor: o redis-server e o php-redis ( Neste caso irei utilizar a branch php7 para conseguir configurar com o PHP 7). Para isto já estarei logado como root.

1. Instalando o Redis server

 

2. Instalando o php-redis

 

3. Movendo ele para o /etc/

 

4. Instalando e configurando o módulo

 

5. Habilitando a extensão no php.ini e dando o restart no apache

6. Agora é só testar a versão do seu módulo.

Configurando o Redis como Cache

Como nosso objetivo para este projeto é cachear as requisições do WordPress vamos configurá-lo como cache. Para isto temos que seguir os passos a seguir.

1. Vamos adicionar as linhas abaixo no arquivo /etc/redis/redis.conf

Linhas para adicionar:

 

Comando para adicionar:

 

Após fazer a inserção das linhas salve e feche o arquivo.

Configurando o seu WordPress

Agora que o Redis já está rodando, é hora de configurar ele para trabalhar junto com o WordPress.

1. Para isto Vamos precisar de baixar o script object-cache.php para a pasta wp-content.

 

2. Agora precisamos ir no wp-config.php e configurá-lo com a chave de cache que terá o nome do seu site além de habilitar o cache persistent com o Redis. Para isto adicione as duas regras abaixo, ao final da seção “* Authentication Unique Keys and Salts”

 

3. Por fim, salve o arquivo e reinicie os serviços do Redis, o Apache e o PHP7-fpm.

Conclusões

Após configurar a integração do Redis, podemos reparar um ganho no uso de recursos e na velocidade de carregamento da página. Como dito no começo deste artigo isto é porque não teremos que consultar o nosso banco de dados toda hora mais. O Cache vai agilizar, retornando todas as informações que ele cacheou em sua memória. Caso você queira monitorar o funcionamento do seu Redis basta usar o comando redis-cli

 

 

Felipe Moraes
Felipe Moraes

Desde pequeno eu adorei tecnologia e este sentimento me fez estudar e trabalhar com desenvolvimento, design de interfaces e interação. Esta vontade de melhorar e aprender com a tecnologia me fez estar aqui na DialHost desde 2012.

Cloud computing para grandes sites em WordPress

Cloud para grandes sites em WordPress

Cloud para grandes sites em WordPress

Estamos em uma era que não podemos negar o poder do WordPress em administrar sites. Muito além dos antigos blogs que víamos sempre por aí, grandes sites, portais e até mesmos lojas
virtuais já podem, e estão utilizando desta plataforma para se estabelecerem online. É o caso de sites como o do ministério da cultura, USP (Universidade de São Paulo) e o próprio iMasters.

Estes tipos de sites tem em comum alguns pontos que não permitem mais funcionar normalmente dentro de uma estrutura compartilhada. A utilização de plugins para controle
e segurança do WordPress e o nível de personalização do próprio WordPress para atender as demandas destes tipos de projetos podem ser um fator a se analisar. Mas sem dúvida o
fluxo de processos, acessos e atualizações de banco de dados que superam, e muito, qualquer estrutura fornecida por planos comuns de hospedagem são o maior fator a se considerar aqui.

Estrutura Dedicada do cloud

Ao contrário das hospedagens compartilhadas uma estrutura em cloud computing permite a disponibilização de recursos dedicados ao projeto. Isto quer dizer, mais segurança, estabilidade e desempenho para o projeto que não será influenciado por outros sites que estão no mesmo servidor.

Nesta estrutura é possível pensar de forma escalada os recursos que vão atender a esta alta demanda do projeto. Sejam recursos para o fluxo normal de utilização do site ou para um momento de pico o cloud computing permite aos administradores de desenvolvedores se precaverem contra ultrapassar o uso de recursos como, memória, espaço em disco e VCPUs conforme o crescimento do uso destes sites.

O patamar de informações que circulam neste tipo de projeto precisa estar muito bem alinhado com os recursos aplicados ao servidor que o sustenta. Um erro aqui pode ser o fim da estabilidade do site.

Separação de banco de dados

O WordPress, como um bom CMS, realiza o controle de informações dentro de banco de dados. Assim, pode não parecer tão claro mas, se preocupar com o acesso, estabilidade e cacheamento desta base de dados é o fator que deve estar no top 1 das preocupações do seu projeto.

A Notícia boa é que com uma estrutura em cloud é possível criar um cluster de banco de dados. Este cluster é responsável por separar em diferentes instâncias sua aplicação web (que vai possuir acesso dos seus usuário) e a escrita/leitura dos dados no banco de dados que serão feitas pela aplicação. Em um post feito no Blog da DialHost expliquei sobre o funcionamento do cluster de banco de dados e como esta arquitetura balanceia a quantidade de requisições ao banco.

Balanceando as cargas de acesso

Do lado da aplicação é possível balancear os processos. Com o balanço, sua rede direcionará os acessos ao WordPress para instâncias separadas de forma uniforme. Por fim você otimizará a utilização dos recursos e evitará sobrecargas que poderiam ocorrer em uma instância única.

Cacheamento dos dados em nível de servidor com Redis

O Redis é um servidor de estruturas de dados que pode ser usado como um servidor de banco de dados. Ele também pode ser utilizado em paralelo com o MySQL para aumentar o seu desempenho. Ele é recomendado para ser configurado como cache. Desta forma ele é capaz de aliviar o consumo que as queries de banco de dados usam para renderizar a página em WordPress.

Como resultado teremos um WordPress renderizado muito mais rápido, o consumo bem menor dos bancos de dados e cache persistente e ajustável.

Como podem ver, este artigo não foca mais naquelas simples soluções baseadas em otimizações feitas por plugins do WordPress que funcionam em diversos blogs menores. Aqui estamos falando  em soluções para
grandes sites que tem acessos e processos bem mais robustos. Nestes casos ter o controle total das requisições, rede, banco de dados são de fato os maiores responsáveis pela estabilidade do site.

Para o próximo artigo, vou escrever sobre a configuração do Redis para manter o cacheamento das informações do WordPress. Então até lá.

Felipe Moraes
Felipe Moraes

Desde pequeno eu adorei tecnologia e este sentimento me fez estudar e trabalhar com desenvolvimento, design de interfaces e interação. Esta vontade de melhorar e aprender com a tecnologia me fez estar aqui na DialHost desde 2012.

Vulnerabilidade na classe PHPMailer inferior a 5.2.18

Vulnerabilidade no PHPMailer

Imagem Ilustrativa

PHPMailer, uma das classes mais usadas para enviar e-mails a partir do PHP, tem uma vulnerabilidade séria em suas versões inferiores a 5.2.18. O pesquisador de segurança [Dawid Golunski] acaba de publicar, afirmando que o PHPMailer sofre de uma falha crítica que pode levar um invasor a conseguir a execução remota de código.

PHPMailer é usado por vários projetos open-source, entre eles são: WordPress, Drupal, 1CRM, SugarCRM, Yii e Joomla.

Uma correção já foi publicada pelo PHPMailer e todos os usuários devem atualizar suas programações.

Para desencadear esta vulnerabilidade (CVE-2016-10033), parece que o atacante só tem que fazer o aplicativo web enviar um e-mail usando a classe vulnerável PHPMailer. Dependendo do aplicativo em si, isso pode ser realizado de diferentes maneiras, como formulários de contato / feedback, formulários de registro, resets de e-mail de senha e assim por diante.

Após uma rápida análise diff, descobrimos que o código vulnerável parece estar nas seguintes linhas do class.phpmailer.php:

Versão 5.2.17

 

Version 5.2.18

 

A partir do código acima, podemos ter uma idéia de onde o bug vem. O pesquisador Dawid Golunski afirma ter desenvolvido uma exploração de Execução Remota de Código (RCE) e que a publicará numa data posterior, para dar aos usuários tempo para atualizar seus sistemas.

Então … programadores, o que você está esperando? Vá e atualize.

Publicado em: news, security hacks

Desvendando os certificados SSL grátis

desvendando ssl grátis

Certificados SSL grátis | Imagem Ilustrativa – Fonte Freepik

Podemos dizer que a popularização dos certificados SSL no tráfego de informações de qualquer site na internet é uma das notícias mais importantes que tivemos este ano. Não por menos, afinal ela veio em um momento onde recebemos notícias diárias sobre vazamentos de informações sigilosas, dados pessoais, grandes invasões. Resumindo, com nossas vidas cada dia mais passando por meios digitais a segurança de dados se tornou importante demais para ser utilizada por apenas poucos.

Mas porque tivemos este ano como um marco para esta popularização da segurança da internet? Simples. Graças ao lançamento oficial da autoridade Certificadora Let’s Encrypt™ feito neste ano, agora qualquer site, loja virtual, blog ou portal de informações pode desfrutar da segurança do cadeado verde que acompanha o campo de URL em nosso navegador, sem pagar nada por isto. A autoridade que é desenvolvida e mantida pela Linux Foundation fornece certificados SSL de forma gratuita e automatizada.

Além disto, sua api de integração fácil permitiu o desenvolvimento de interfaces para sua aplicação em empresas de hospedagem. Nossas as hospedagens compartilhadas e hospedagem cloud, por exemplo, já possuem esta integração e renovação completamente atualizadas utilizando a certificação Let’s Encrypt™.

Correndo atrás desta tendência, a autoridade certificadora Comodo, em conjunto com o CPanel, também começou a disponibilizar uma versão de seu SSL gratuitamente. Ela se dá pela ferramenta AutoSSL implementada pelo CPanel em sua distribuição 58.

O que está por traz de tanta segurança e de forma gratuita?

No caso da Let’s Encrypt™, as regras de segurança são desenvolvidas e mantidas pelo ISRG (Internet Security Research Group. Ou Grupo de pesquisa em segurança da internet, em português) na califórnia. O projeto faz parte do Linux foundation Collaborative Projects. Dado isto podemos confirmar um bom ar de confiança ao projeto.

A Let’s Encrypt™ foi responsável por implementar um novo protocolo chamado ACME. Este protocolo tem o intuito de tornar mais simples a obtenção e a configuração de certificados SSL. Apesar de sua implementação ser mais simples, isto não prejudica a segurança. Os certificados emitidos baseiam-se nas melhores práticas de segurança TLS. Além disto, eles possuem chaves de criptografia de até 4096bits.

O funcionamento por traz da validação de um domínio

O sistema Let’s Encrypt™ valida um domínio através de um processo de “challenges” (desafios) onde o servidor que controla determinado domínio precisa comprovar o controle do domínio que deseja ativar o certificado.

Funciona assim, o servidor proprietário do domínio perguntará ao Let’s Encrypt™ o que é preciso fazer para provar o controle de um determinado domínio. A entidade então irá retornar algumas opções de validação, como por exemplo, através de um registro de DNS ou através de uma URI.

Durante o processo a Let’s Encrypt™ CA irá disponibilizar um código único que deverá ser assinado, com o par de chaves privadas, pelo agente validador e assim, provar que ele controla as chaves privadas.

Assim que concluído este passo, deve ser criado um arquivo no caminho especificado no site em questão. O agente validador deve assinar o código com sua chave privada. Finalizadas estas questões o Let’s Encrypt™ poderá checar o arquivo que foi colocado no servidor web para ter a garantia da validade deste domínio. Se a validade é garantida seu certificado será ativado e poderá ser visto através do navegador.

Validando certificado

Processo de validação do certificado SSL Let’s Encrypt

Certificado SSL automatizado

A parte boa nisto tudo é que o sistema do Let’s Encrypt é totalmente automatizado e aberto. Assim, já é possível encontrar serviços que disponibilizam a instalação dos certificados sem que seja necessário realizar todo o processo de validação da forma mais dolorosa. É o caso, por exemplo, da nossa plataforma de gerenciamento de hospedagem. Através de uma interface simples é possível ativar e revogar certificados. E o processo de renovação é feito automaticamente após os 90 dias de validade do certificado.

Ativação de SSL Grátis pela DialHost

Ativação de SSL Grátis pela DialHost

A evolução do Mercado

O Let’s Encrypt trouxe uma perspectiva completamente nova para a segurança nas informações que circulam na internet. Agora não existe mais motivos para um site permanecer sem segurança SSL. Mesmo se seu site possuir apenas o bom e velho formulário de contatos e não tiver tanta informação sigilosa esta proteção extra deve ser levada em conta. Tanto deve, que ferramentas de busca , como o Google, já começam a utilizar o uso  do HTTPS como fator de ranqueamento em suas buscas.  Existe ainda uma proposta do navegador Chrome para começar a alertar sites que não utilizam certificados SSL, como sites não seguros.

“Atualmente, o Chrome indica conexões HTTP com um indicador neutro. Isso não reflete a verdadeira falta de segurança em conexões HTTP.” Diz Emily Schechter, membra da equipe de segurança do Chrome.

E como fica o mercado SSL atual?

É claro que este mercado terá forte mudança. Com a popularização dos certificados SSL grátis o que se espera é uma queda nas vendas dos certificados SSL mais simples. É claro que isto não implica na morte dos certificados SSL pagos. Afinal, eles proporcionam, além da segurança na informação, coberturas por seguros reais. E ainda existem categorias que validam a empresa como um todo e não somente o domínio. Este último, traz ainda mais credibilidade ao usuário. No caso de compras ou operações financeiras, o certificado garante a ele estar usando o site real da empresa desejada.

E vocês o que esperam sobre os próximos passos da segurança na internet? Será que teremos ainda mais sistemas colaborativos neste intuito? Será que o mercado proprietário conseguirá trazer soluções ainda mais robustas para garantir sua privacidade?

 

 

Felipe Moraes
Felipe Moraes

Desde pequeno eu adorei tecnologia e este sentimento me fez estudar e trabalhar com desenvolvimento, design de interfaces e interação. Esta vontade de melhorar e aprender com a tecnologia me fez estar aqui na DialHost desde 2012.