Este é o primeiro de três posts sobre como criar uma API utilizando o NodeJS e o Apache Cassandra.
Vejo uma grande parte dos textos falando sobre a dupla de NodeJS com o MongoDB. Mas o Cassandra pode ser uma alternativa para alguns tipos de aplicações que demandam outros níveis de acessos de escrita e leitura.
Instalando o ambiente
Primeiro, estou utilizando o OSX mas, provavelmente, você terá pouco trabalho para adaptar o que vamos ter aqui para outros sistemas.
Para abstrair um pouco vamos utilizar o Docker e deixar um pouco mais automático com o recurso “docker-compose”.
No OSX e no Windows, o pessoal do Docker adquiriu o Kitematic que após instalado vai lhe fornecer todos os requisitos necessários para criar nosso ambiente.
Preparando os arquivos
Vamos começar simplesmente criando uma arvore de diretórios que vai nos apoiar nesse projeto.
Crie a seguinte estrutura na sua maquina:
[cassandra_docker]
[cassandra]
[node]
[api]
Criando a maquina do Cassandra
Dentro da pasta do cassandra vamos criar o arquivo de nome Dockerfile que vai informar ao docker como criar a maquina.
# Partir do docker inicial do cassandra no DockerHub
FROM cassandra:latest
Bem simples!
Criando a maquina do NodeJS
Dentro da pasta node crie mais um arquivo com o node de Dockerfile para configurar o docker que vai rodar o node.
# Partir do docker inicial do node do DockerHub
FROM node:latest
# Criar a pasta onde a aplicação vai rodar
RUN mkdir /api
# Definir a pasta criada como a pasta de trabalho
WORKDIR /api
# Executar a instalação das dependecias
ENTRYPOINT ["/bin/bash", "start.sh"]
Os arquivos da aplicação serão criados durante o ultimo POST desta série. Mas vamos deixar algo preparado aqui.
Configurando a composição
Crie na pasta raiz (cassandra_docker) um arquivo com o nome “docker-compose.yml” que vai receber a configuração detalhada de como o dockers vão ser criados e como eles vão se conectar.
cassandra:
build: ./cassandra
expose:
- "27017"
ports:
- "7199:7199"
- "7000:7000"
- "7001:7001"
- "9160:9160"
- "9042:9042"
nodejs:
build: ./node
volumes:
- "./node/api:/api"
expose:
- "3000"
ports:
- "3000:3000"
links:
- "cassandra:cassandra"
Iniciando as maquinas
Execute o comando abaixo e aguarde a maquina do cassandra subir:
docker-compose up -d cassandra
É possível iniciar o Kitematic e ver as maquinas criadas. Apenas a maquina do cassandra estará rodando e estará acessível pelo endereço 192.168.99.100:27017 se quiser utilizar uma GUI para acessar o banco.
O IP 192.168.99.100 é atribuído para a maquina virtual (virtualbox) criada como docker-machine pelo Kitematic.