Cada projeto tem suas peculiaridades. Alguns precisam apenas de um banco de dados para rodar e outros precisam de uma série de serviços adicionais como redis ou sphinx. Instalar todos esses serviços diretamente no sistema operacional é uma opção, mas com o tempo a erosão atua e por muitas vezes os serviços ou o próprio sistema começam a apresentar problemas.
Um exemplo bem simples de erosão ocorreu comigo há alguns dias. Fazia muito tempo que não rodava um projeto que usasse o mongodb como banco de dados.
Quando precisei, percebi que o serviço não estava no ar. Avaliando os logs do sistema descobri que a cada 10 segundos o sistema tentava subir o serviço, mas por algum motivo ele dava um segmentation fault. O motivo do problema pode ter sido algumas das dezenas de atualizações feitas no sistema operacional e que podem ter atualizado uma biblioteca qualquer para uma versão incompatível com a versão do mongodb que estava instalada.
Esse problema poderia estar acontecendo há meses, sem que eu percebesse. Não só influenciando no serviço específico, mas também degradando o sistema operacional como um todo.
Algumas pessoas utilizam o Vagrant como ambiente completo de desenvolvimento. Eu estou feliz com o ambiente que tenho no Mac OSX, me dou bem com o brew e não tenho interesse em desenvolver dentro de uma máquina Linux. Nem mesmo por questões de compatibilidade. Nos dias de hoje são mínimas as diferenças e os problemas que podem ocorrer por desenvolver num ambiente e rodar em outro.
Minha proposta é utilizar o Vagrant como fornecedor de serviços para o ambiente de desenvolvimento. Através da funcionalidade forward_port do Vagrant é possível rodar um serviço dentro da VM e mapeá-lo para uma porta da máquina host. Isso é perfeito.
Baseado nessa proposta eu criei uma box para o Vagrant que roda Ubuntu Precise 64 com postgresql 9.1 e mapeia a porta 5432 (usada normalmente pelo postgresql) do host para dentro da VM. Isso tem o mesmo efeito de ter o postgresql rodando nativamente e fica transparente para qualquer projeto.
Para mais informações veja: https://github.com/mergulhao/vagrant-precise64-postgresql
Por enquanto foi só isso que eu precisei, mas a ideia é criar um box desse para cada tipo de projeto que precise de serviços específicos.
Até o próximo!
Comentários
Included file post/disqus_thread.html not found in _includes directory