Separando sua aplicação do Banco de Dados com instâncias cloud

Instância cloud

Imagem ilustrativa: Separando o banco de dados e aplicação em instâncias cloud  – Freepik

Há algum tempo atrás nós trouxemos para você uma forma avançada de se separar responsabilidades do sistema através do Cluster de banco de dados. Em resumo, esta arquitetura separava seu projeto em instâncias cloud. A ideia é criar um grupo de banco de dados com responsabilidades semelhantes (leitura e escrita) ou não (Só leitura, só escrita) e através de um load balancer podemos balancear a carga de processos em cada servidor.

Hoje explicarei de uma forma mais prática, uma arquitetura que pode encaixar melhor em projetos médios. São comuns exemplos, os mais diversos blogs e lojas virtuais que, apesar de não serem uma americanas, um submarino ou um globo.com, começaram a enfrentar problemas pelo alto fluxo de consultas nos bancos de dados. Estes por sua vez estão trazendo demora ou instabilidade na aplicação web.

Quando fazer a separação em instâncias cloud

Reuni algumas perguntas que você deve se fazer antes de sair contratando ou separando novas instâncias cloud. Afinal, a ideia é otimizar seu sistema mas, não sair separando tudo por mero luxo certo.

  1. Sua aplicação está mais lenta que o normal?
  2. Ela está sofrendo com picos de instabilidade ou até mesmo saindo do ar em determinados momentos do dia?
  3. Durante estes picos e estas demoras, os processos envolvidos são relacionados a uma consulta no banco, ou em salvar algum dado neste?
  4. Ao executar o comando top em seu bash, as estatísticas de uso de recursos estão bem altas e o processo relacionado ao banco de dados está entre os maiores?

Você deve ter percebido que se seu projeto está nesta situação é melhor tomar uma atitude. Então tendo tudo analisado vamos a parte prática.

Mão na massa! Colocando meu Banco de dados em outra instância cloud

Para isto, utilizarei o painel do DialCloud+. Com ele você conseguirá configurar cada instância com os recursos necessários a cada projeto.

Para ilustração deixo este esquema de como funcionará este exemplo de arquitetura. Basicamente estamos deixando seu banco dados dedicado em uma instância com seus recursos próprios.

Banco de dados dedicado em uma instância cloud

Arquitetura com banco de dados dedicado

Com esta imagem em mente, podemos seguir ;).

Abaixo podemos ver que toda a aplicação se encontra em apenas uma instância. Nesta instância temos instalados o SO, o apache, o MySQL, PHP e entre diversas outras aplicações. O caso é que, como citado acima, eu identifiquei que meu banco de dados começou a consumir grande parte da minha memória e acaba por utilizar minhas 4 vCPUs disponíveis o que deixa todo o meu sistema em cheque.

 

instâncias cloud

Tela de instâncias do DialCloud +

É claro que neste exemplo terei de optar por aumentar um pouco meus recursos. Mas, simplesmente aumentá-los não seria suficiente já que isto não evita que meu banco de dados, em um momento de desespero, acabe por utilizar 6vCPUs. Por isto, a ideia aqui é pegar este banco de dados e migrar ele para outro servidor.

Para que seu sistema não fique fora durante todo o tempo da migração e para minimizar todo e qualquer impacto, vamos pegar os novos recursos e montar uma instância de banco de dados mínima. Esta estrutura servirá de base para configurarmos o que virá a ser nosso servidor final.

Nova instância

Tela de nova instância do DialCloud +

Como pode ver montei uma pequena instância com os recursos mínimos para que eu pudesse configurar meu novo servidor de banco de dados.

Migrando meu banco de dados

E ai vem a grande dica! Como agora tenho um servidor que será responsável apenas por receber e responder consultas de banco, posso simplesmente ignorar a instalação de vários módulos e aplicações de servidor que acabam por consumir um pouco do meu processamento e instalar apenas por exemplo o MySQL. Menos recurso para aplicações, mais recurso para o banco.
Ao terminar a instalação da nova instância eu preciso exportar o banco que está em produção e então importar no servidor novo. Apesar de rápido, este é o momento que exige maior atenção, pois terei que colocar meu serviço em manutenção momentânea para que não perca nenhum dado no meio do processo. Afinal enquanto faço isto, meus usuários estariam utilizando meu app.

Outra dica é não fazer isto em um dia ou horário de pico de acesso, assim você terá mais tranquilidade para fazer o processo.

Agora eu preciso fazer minha aplicação comunicar com este novo banco de dados, mas não se preocupe. Com a criação da nova instância minha tela de network mostra uma nova rede interna que foi criada entre estas 2 instâncias cloud. Basta eu pegar o ip interno referente ao servidor de banco de dados e colocar no host das configurações de banco de dados da minha aplicação.

Tela de rede interna no DialCloud +

Tela de rede interna no DialCloud +

Para garantir mais proteção aos meus dados, vou configurar o acesso do ip externo apenas para a instância de aplicação. Faço isso configurando o Port forwarding e no caso do serviço do DialCloud+ libero o acesso externo no firewall (Esta é uma proteção a mais disponibilizada na DialHost gratuitamente) através do Outbound Firewall.

Tela de Port Forwarding no DialCloud +

Tela de Port Forwarding no DialCloud +

Realocando recursos

Tá mas, meu processo que exigia mais recursos tem bem menos recursos. Bem, como eu disse antes, esse era um servidor base para a migração. Agora é só ir nas configurações das instâncias e escalonar os recursos. Assim, você poderá destinar mais para seu banco de dados e menos para sua aplicação.

Concluindo

Esta arquitetura possui uma distribuição mais simples se comparada com a de cluster de dados. Por ser mais simples, ela pode ser mais comum para o dia a dia de diversos projetos. Ainda assim, ela é uma ótima opção pois propicia:

  • Menor custo com recursos de máquina.
  • Melhor distribuição das responsabilidades do servidor o que falicita seu escalonamento.
  • Maior segurança dos dados, já que seu banco de dados não terá acesso por outro lugar que não sua aplicação.
Tenha controle e flexibilidade nos seus recursos com DialCloud +. Servidores em cloud com load balancing, VPN e todo o controle de rede que você precisa. Saiba Mais.

 

DialHost
DialHost

Contamos com nosso DataCenter no Brasil de alta qualidade, estabilidade e confiança para hospedar seu site. Utilize poderosas ferramentas para otimizar o uso do seu serviço e seja sempre atendido de forma rápida e clara pelo nosso atendimento 24h.

É possível ter segurança em Servidores Cloud?

segurança em Cloud computing

Imagem ilustrativa sobre segurança em Cloud computing – fonte Freepik

Antes de dar minha opinião, explicarei algumas dicas para serem aplicadas em seu servidor cloud. Em seguida demonstrarei algumas funcionalidades utilizando a ferramenta da DialHost que auxilia na configuração de algumas regras que melhoram a segurança.

Primeiramente temos sempre que manter uma atenção especial na segurança de nossos servidores. Pois há uma evolução constante dos tipos de ataque e defesa.
As tecnologias evoluíram. E com elas, os hackers que cada vez mais ágeis e habilidosos, encontram brechas para burlar sistemas de gerenciamento e informações sigilosas de empresas e instituições.

Mas para que você tenha mais garantias contra estes tipos de ataques seguem algumas dicas para ajudar na proteção do seu servidor

Mantenha atualizado os pacotes e kernel do servidor

Ao deixar seu kernel desatualizado você perde todas as atualizações de segurança, melhorias de estabilidade, atualizações de drivers e funcões que foram desenvolvidas nas novas versões.

Instale um detector de brute force

O ataque brute force é uma técnica hacker que costuma utilizar um dicionário de usuários e senhas para realizar o acesso a algum sistema. Através destas combinações ele tenta constantemente realizar acessos até que um destes dados sejam validados e finalmente o sistema seja aberto.

O detector de brute force, por outro lado fica analisando tentativas sucessivas de acessos vindas de um mesmo IP. Através desta repetição ele bloqueia o acesso do IP malicioso e assim, mata o processo iniciado pelo robô hacker. Um exemplo de sistema detector de brute force é o Fail2Ban.

Desabilite o acesso Root via SSH

Sabemos que o acesso root permite mais facilidades para o usuário avançado, mas como já dizia o tio Ben “Grandes poderes trazem grandes responsabilidades”. Por isso, desabilite este usuário via SSH e crie usuários apenas com as permissões necessárias para o seu projeto e manutenção do mesmo.

root

Crie chaves para o acesso via SSH

Ao fazer um acesso via SSH utilizando chaves de acesso, você garante que seu acesso terá um conjunto longo e complexo de caracteres. Por outro lado o acesso através apenas de senha tendem a ser previsíveis ou fáceis para ataques do tipo brute force.

Mude a porta de acesso do SSH

A alteração da porta de acesso do ssh é importante para retardar a atuação de portscaner que buscam primeiramente as portas default dos serviços como “22,23,53,80,443,21”. Alterando sua porta de acesso estes scaners vão cair em uma porta fechada.

Para realizar esta alteração recomendo que utilize o port forwarding assim seu acesso interno se mantém na porta original, mas seu acesso público pode ser redirecionado para outra porta como 7021, por exemplo.

Busque informações de segurança para os serviços ativados

É normal que serviços famosos possuam em seus próprios cores soluções de segurança ou mesmo pacotes que auxiliam na segurança. Serviços como Apache, Nginx entre outros vão te disponibilizar constantemente novas opções de segurança. Mas, é importante que quem esteja gerenciando suas instâncias fique sempre informado sobre novas soluções. Assim, você pode ficar mais tranquilo contra ataques hackers.

Instale um Firewall

Na DialHost, por exemplo, ao contratar um plano DialCloud+, é disponibilizada uma ferramenta para configuração do Firewall. Assim, você pode garantir mais segurança nas suas instâncias uma forma simples.

Outra análise que vale informar é que as instâncias estão protegidas em um rede totalmente privada. Outros clientes não tem nenhuma comunicação com suas instâncias criadas.

Veja como é simples a criação das regras

Tela do sistema DialCloud - Adicionando regra de segurança do Firewall

Tela do sistema DialCloud – Adicionando regra de Firewall

No campo IP, será exibido o seu IP Público para os acessos.
CDIR: Você informar um range ou único IP permitido para acessar a porta.
Start Port: O inicio de uma série de portas ou a definição de uma única porta
End Port: A última porta a ser liberada ou a mesma informada para o início.
Protocolo: Define qual tipo de protocolo como TCP, UDP ou ICMP.

Após adicionar as regras desejadas, o resultado ficará como abaixo.
Simples de ser visualizado, configurado e reconfigurado.

Tela do sistema DialCloud - inbound Firewall

Tela do sistema DialCloud – inbound Firewall

Concluindo

Sobre a pergunta proposta no inicio, na minha opinião não podemos afirmar que estamos 100% protegidos contra os invasores. Este é um trabalho onde temos que estar atentos e atualizados às práticas mais atuais para nos proteger.

Os invasores sempre vão preferir servidores desatualizados e que possuam mais brechas para a invasão. Dificultar as invasões com o Firewall e outras ferramentas de proteção é uma atividade contínua dos administradores dos servidores.

Referências

http://www.makeuseof.com/tag/5-reasons-update-kernel-linux/
http://www.liquidweb.com/kb/what-is-brute-force-detection-bfd/
https://www.vivaolinux.com.br/dica/Alterando-a-porta-do-servico-SSH

Tenha controle e flexibilidade nos seus recursos com DialCloud +. Servidores em cloud com load balancing, VPN e todo o controle de rede que você precisa. Saiba Mais.

 

Márcio Rubens
Márcio Rubens

Sou Analista de TI na DialHost, pós-graduado em Gestão de Segurança da Informação pela PUC-MG e graduado em Gestão da Tecnologia da Informação pela UNI-BH.

Ambiente de testes e desenvolvimento na nuvem

Ambiente de testes e desenvolvimento

Ilustração – Ambiente de testes e desenvolvimento

Toda equipe de desenvolvimento precisa da segurança de um ambiente de desenvolvimento para programar novas aplicações ou atualizações nos serviços. Mesmo quem tem pouca experiência em programação já deve saber da instabilidade que uma aplicação passa durante seu período de desenvolvimento. E ainda que tudo já esteja correto, ao ver dos desenvolvedores, um ambiente de testes  deve simular o produto que irá para produção.

Ambiente de desenvolvimento

O momento de desenvolvimento de um projeto é aquele período liberado para erros. E acredite, por melhor que seja o desenvolvedor envolvido no projeto uma coisa é certa, erros ocorrerão enquanto ele está programando uma classe ou integrando alguma api e etc.

E são diversos os erros: erros lógicos, de sintaxe, exceptions, sem contar em dados que podem ser apagados por uma simples linha de comando mal executada. Agora imagina se todos esses problemas ocorressem em pleno ambiente de produção, com os clientes acessando a todo tempo, enquanto você está descabelando para resolver o problema em uma maratona sem fim.

Via Giphy - Erros em ambiente de testes

Então, caso você ainda não tenha percebido esta necessidade, peço que pare a leitura aqui e vá configurar um ambiente de desenvolvimento para você, hehe. Afinal, esta prevenção pode evitar que você faça algo desastroso no final.

É muito comum desenvolvedores autônomos e individuais trabalharem em ambientes locais de desenvolvimento. Esta é uma opção barata e já garante grande autonomia para que você possa errar até acertar em cheio. Mas, em uma equipe grande e/ou que trabalhe remoto, como garantir as configurações ideais para que cada desenvolvedor consiga trabalhar e compartilhar seus códigos com toda equipe?

Ambiente de desenvolvimento em nuvem

Respondendo ao parágrafo anterior, um ambiente de desenvolvimento em nuvem é uma opção que foi adotada por diversas equipes. Pelo seu caráter instável, o ambiente de desenvolvimento exige das equipes necessidades muito variáveis de recursos, dependendo do ciclo de desenvolvimento das mesmas. Assim, uma solução em cloud computing se adapta bem fornecendo recursos sob medida para a necessidade atual. E quando esta necessidade acabar é possível reajustar cada recurso de volta para a nova necessidade.

Além disto, com a infraestrutura em nuvem é bem mais fácil de padronizar as configurações do ambiente.  E com um ambiente padrão seus desenvolvedores não terão surpresas de incompatibilidades durante esta etapa. Imagine manter padronizada as configurações de desenvolvimento de cada servidor local em uma equipe de 50 colaboradores que trabalham remoto.

Aqui na DialHost, por exemplo, temos um ambiente de desenvolvimento enxuto para que a equipe inicie qualquer projeto ou feature. E sempre que necessário reescalamos os recursos para um novo projeto. Além disto, ao vermos a necessidade, podemos reduzir nossos recursos caso eles estejam ociosos. Isto tudo é possível graças a estrutura que montamos para o DialCloud +

Ambiente de testes em nuvem

Durante todo o processo de desenvolvimento os testes são parte integrante. Cada item, cada funcionalidade deve ser testada em diversos aspectos. Claro que de acordo com a complexidade alcançada em cada empresa, este processo pode ser mais dividido ou ser um simples teste de usabilidade com o usuário final.

O fato aqui é que o ambiente de testes proporciona que seus testes mantenham a segurança dos dados que já estão em produção. Assim tudo que foi desenvolvido pode ser colocado a prova.

Neste ponto a escalabilidade da estrutura em cloud computing se torna ainda mais eficiente. Afinal, testes são frequentes mas, sempre possuem um ponto final para que sejam coletados os resultados e assim passemos para a correção dos problemas encontrados.

Com a escalabilidade podemos subir uma nova instância apenas as configurações necessárias. Ao final  da análise dos testes é possível finalizar a instância reduzindo assim seu custo operacional novamente.

Por fim, ao utilizar esta estrutura para testes, podemos simular funcionalidades avançadas, ainda na fase de testes. Exemplo disso seria a necessidade de balancear cargas após identificar algum gargalo durante um teste de carga.

Vantagens

  • Melhor custo e flexibilidade de recursos para o desenvolvimento do projeto
  • Melhor controle nas configurações padrões de cada ambiente para cada desenvolvedor
  • Facilidade na padronização das configurações de desenvolvimento, teste  e produção
  • Possibilidade de testar diferentes configurações, recursos e cargas
  • Possibilidade de utilizar serviços avançados que requerem tecnologias ou competências que não estão disponíveis em sua estrutura interna
  • No caso de uma equipe grande é possível reduzir bem o custo com infraestruturas nestes ambientes.

Desvantagens

  • Você dependerá sempre de uma conexão com a internet
  • Apesar de pequena a chance (Considerando bons data centers), é preciso pensar em uma solução para caso a nuvem falhe.
  • Ainda é necessário se preocupar com estratégias de backup e recuperação e possíveis perdas de dados durante testes.

Algumas Referências

Tenha controle e flexibilidade nos seus recursos com DialCloud +. Servidores em cloud com load balancing, VPN e todo o controle de rede que você precisa. Saiba Mais.

 

Felipe Moraes
Felipe Moraes

Gerente de desenvolvimento na DialHost, Designer Gráfico formado pela Universidade FUMEC, Minas Gerais e Pós graduando em Branding pelo Centro Universitário UNA, possuo interesse em design de interação e interfaces. Trabalha com programação e criação para web, desde 2006. Apreciador de Bacon, Pudim e music Tag.

Load Balance para meu site

Imagem ilustrativa Load Balance

Imagem ilustrativa Load Balance

No último post da nossa série sobre cloud computing falamos sobre clusters de banco de dados e a utilização de uma camada de load balancing para controlar o fluxo das requisições. Hoje iremos aprofundar mais nesta camada apresentando um pouco sobre a configuração da mesma.

Vamos iniciar esta abordagem com aquele grande momento tão esperado. Seu site sendo visualizado por milhares de pessoas.  Neste mesmo momento vivemos um momento de grande felicidade, acompanhada aquela dor de cabeça. Isto porque, você nota que a estrutura atual do servidor não está suportando a demanda.

Não se preocupe! O Load Balance pode solucionar isto.

Muitos sites possuem milhares de requisições simultâneas e para ajudar nesta atividade o conceito de Load Balance ( balanceamento de carga ) nos ajudará a suportar a demanda das requisições.

O conceito de Load Balance é uma técnica para distribuir a carga de trabalho uniformemente entre duas ou mais instâncias, a fim de otimizar a utilização de recursos, maximizar o desempenho, minimizar o tempo de resposta e evitar sobrecarga.

Uma observação para este projeto é da necessidade da unificação dos arquivos em um única instância e utilizar o NFS ou outra forma, para compartilhar os arquivos com as demais instâncias.

Exemplo de uma estrutura utilizando o NFS

Exemplo de uma estrutura utilizando o NFS

Há diversos softwares que realizam está atividade de Load Balance como por exemplo Nginx, Haproxy, Balance e outros….

Vou ilustrar aqui uma configuração realizada no Haproxy de uma forma bem simples, mas utilizando a ferramenta disponibilizada gratuitamente para todos os clientes DialCloud+ da DialHost

load balancing

Configurando load balancing com DialCloud +

Ao clicar sobre a aba Load Balancing, será visualizada a tela acima:

IP Público: IP no qual sua instância está utilizando para receber as conexões externas.
Nome: Nome para a configuração.
Porta Pública: Porta na qual os clientes estarão utilizando para conectar a sua aplicação para visualizar o seu site. Exemplo: porta 80 HTTP
Porta Privada: Porta do serviço configurado na instância para receber as requisições.

Algorítimos

Round-robin – A cada requisição será redirecionada para uma instância.
Least connections – A instância que possuir um menor numero de conexões estará recebendo a próxima requisição.
Source – O primeiro acesso do IP do Source é enviado a uma instância. Após definido, suas requisições futuras irão para a mesma instância

Simples! Após as informações solicitadas as requisições já estarão sendo direcionadas para as instâncias configuradas.

Espero que tenha ajudado a todos nesta dica de aprimoramento da estrutura para seu site.

Tenha controle e flexibilidade nos seus recursos com DialCloud +. Servidores em cloud com load balancing, VPN e todo o controle de rede que você precisa. Saiba Mais.

 

Márcio Rubens
Márcio Rubens

Sou Analista de TI na DialHost, pós-graduado em Gestão de Segurança da Informação pela PUC-MG e graduado em Gestão da Tecnologia da Informação pela UNI-BH.

Cluster de banco de dados – Eficiência em projetos de grande tráfego

Cluster de banco de dados

imagem ilustrativa

No mês de fevereiro abordamos sobre a mudança de uma hospedagem compartilhada para uma hospedagem cloud e quais fatores devem ser levados em conta para esta decisão. Agora vamos para um assunto mais avançado e focado no desempenho de consultas e escritas em banco de dados. A criação de cluster de banco de dados.

A arquitetura de cluster de banco de dados é formada pela redundância do seu banco de dados em 2 instâncias ou mais instâncias. Estas instâncias, então, são balanceadas de forma a dividir com eficiência a quantidade de requisições ao banco. Mas, vamos por partes. Neste artigo pretendemos mostrar como funciona esta arquitetura.

Cluster de banco de dados

Exemplo 1 – Arquitetura simples de cluster com configuração Master-Master

Camada de Aplicação

A camada de aplicação é a parte que terá contato com o usuário e ela deverá ser inteligente para disparar requisições de escrita e leitura para as instâncias responsáveis por cada ação.

No diagrama exemplificado acima temos uma estrutura mais simples, onde todo o cluster faz leitura e escrita (configuração master-master). Neste caso apenas a camada de load balancing será o suficiente para balancear a carga.  Mas em um projeto de alto fluxo isto ainda pode gerar gargalos de requisição e assim é melhor dividir as responsabilidades ainda mais.

No exemplo abaixo podemos ver uma arquitetura que divide o banco de dados em 4 instâncias, sendo 2 responsáveis por leituras e 2 responsáveis por escrita.

Cluster de banco de dados

Exemplo 2 – Arquitetura dividida de cluster com Load Balancer para banco de leitura e escrita.

Camada Load Balancer

A camada Load Balancer será responsável por receber a requisição da aplicação e balancear a carga de forma efetiva para seus respectivos bancos de dados. No caso do exemplo 1, a aplicação vai simplesmente mandar a requisição e o load balancer vai dividir cada requisição para cada instância de banco de dados sem nenhuma interferência da aplicação.

No exemplo 2, a camada de aplicação irá trabalhar em conjunto com 2 load balancer. Sendo, um dividindo as cargas com os bancos de leitura e o outro com os bancos de escrita.

Assim, a camada Load Balancer será responsável por nunca deixar uma instância de banco de dados sobrecarregada enquanto a outra estiver ociosa. Com isto, seus serviço mantém maior disponibilidade para um momento de alto fluxo de processos.

Aqui na Dialhost, por exemplo, você consegue fazer esta configuração do Load Balancer através do painel de controle do DialCloud +

Camada do cluster de banco de dados

Esta é a camada principal da arquitetura e se não for bem planejada tudo pode ir por água abaixo. A primeira coisa a se pensar é qual o nível de gargalo seu sistema se encontra hoje. Caso seja um gargalo geral de requisições porque seu banco de dados encontra-se todo em apenas uma instância o primeiro exemplo pode ser o suficiente para você. Mesmo tendo uma divisão mais básica onde todas as instâncias leem e escrevem, o fato de ter uma nova instância para dividir a carga de processos já irá equilibrar o uso de recursos.

Vale aqui, analisar o nível de complexidade do sistema em questão. Para um portal com muito conteúdo, como por exemplo globo.com, esta arquitetura do exemplo 1 pode ser ineficiente, dada a quantidade de dados que lidos e inseridos a todo momento.

Após escolher entre o exemplo 1 ou o exemplo 2 é necessário configurar todas as instâncias para que elas mantenham sincronismo de dados. Qualquer falha de sincronismo aqui pode acabar com a estabilidade do seu sistema. Isto porque, um dado inserido no banco da instância X não conseguirá ser lido na instância Z ou Y. A falta de sincronismo na verdade, é um dos grandes contras desta arquitetura.

Finalizando

O cluster de dados se bem montado otimiza bastante as requisições ao seu banco de dados. Mas, como podemos ver ele possui prós e contras em sua utilização.

Prós

  • Melhora a performance de escrita no banco de dados, já que elas podem ser espalhadas em infinitos bancos de dados;
  • Permite que seu sistema escalone em seu cloud sem limitações;
  • Pode ser ainda mais otimizado, disponibilizando bancos somente para leitura e outros para escrita;

Contras

  • A aplicação deve ser inteligente para saber balancear a carga entre as instâncias;
  • Se a sincronização de dados for assíncrona, é possível que os dados estejam fora de sincronia por questões de segundos;
  • Se o banco de dados master (central) falhar, é preciso arrumar-lo para que o cluster volte a funcionar;
Tenha controle e flexibilidade nos seus recursos com DialCloud +. Servidores em cloud com load balancing, VPN e todo o controle de rede que você precisa. Saiba Mais.

 

DialHost
DialHost

Contamos com nosso DataCenter no Brasil de alta qualidade, estabilidade e confiança para hospedar seu site. Utilize poderosas ferramentas para otimizar o uso do seu serviço e seja sempre atendido de forma rápida e clara pelo nosso atendimento 24h.