He enfrentado el problema con DB (específicamente con MongoDB).
Al principio, pensé en implementarlo en MongoDB Atlas Cloud
, pero los clústeres de producción ( M30
y superiores) son bastante caros para un pequeño proyecto como el mío.
Ahora estoy pensando en implementar el conjunto de réplicas de MongoDB
en algún lugar de Heroku Dyno o tal vez en la instancia de AWS.
¿No podría sugerir alguna forma/solución lista para la producción que no costaría mucho?
Como puedo ver, AWS ofrece algunos niveles GRATUITOS para bases de datos ( Amazon RDS
, Amazon DynamoDB
y otros), pero ¿es realmente gratis o es una trampa? Porque escuché que la política de precios de AWS
no es tan dulce como se ve en la página de precios (en realidad)
Cualquier consejo o ayuda es bienvenida!
Su forma menos costosa de experimentar con MongoDB que aún ofrece un camino para escalar a algo mucho más grande es obtener una instancia EC2 de nivel gratuito como t2.micro
e instalar MongoDB Community en ella usted mismo. La distribución de Linux de 64 bits está disponible aquí: https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-amazon-5.0.5.tgz . Simplemente ejecute tar xf
en ese archivo tar y se extraerán los mongod
server y mongo
CLI. No se requiere ninguna otra configuración y prácticamente lo iniciaría así:
$ mkdir -p /path/to/dbfiles $ mongod --dbpath /path/to/dbfiles --logpath /path/to/dbfiles/mongo.log --replSet "rs0" --fork
No necesita un conjunto de réplicas para usar agregación, transacciones, etc.
Esta solución también lo expondrá a muchas cosas importantes como la seguridad de la red, la seguridad de la base de datos, la administración de registros, la compatibilidad del controlador, los almacenes de claves y el uso de la Consola de AWS y quizás la CLI de AWS para manipular el entorno. Puede pasar a una máquina más grande y crear y agregar miembros a un conjunto de réplicas más tarde, o puede dar el paso e ir con MongoDB Atlas. Pero en ese momento te sentirás cómodo con las funciones esp. la tubería de agregación, el modelo de documento, los controladores, etc., todo aprendido en una plataforma esencialmente de costo cero.
El rendimiento no es realmente un problema aquí, pero se usa el práctico generador de carga POCDriver ( https://github.com/johnlpage/POCDriver ) en una instancia t2.micro
sin configuración especial y un tamaño de documento de 0.28Kb, con lectura 90/10 /insert mix en un valor predeterminado de 4 subprocesos y la actualización por lotes eliminada (-b 1), obtenemos alrededor de 450 inserciones/seg y 4200 lecturas/seg en la clave principal _id
.
java -jar POCDriver.jar --host "mongodb://localhost:27017" -k 90 -i 10 -b 1
Por supuesto, el generador de carga compite con el propio motor de base de datos por los recursos, pero como primer paso, es bueno conocer el rendimiento independientemente de las consideraciones de la red. Desde el lanzamiento de la instancia EC2 hasta la ejecución de la prueba, incluida la instalación de java sudo yum -y install java-1.8.0-openjdk-devel.x86_64
tomó alrededor de 5 minutos.