Hoy os voy a hablar sobre una plataforma de servidores Cloud VPS llamada clouding.io. Además de describir el servicio, sus posibilidades y experiencia de uso, voy a realizar un par de tests y a mostraros los resultados obtenidos.
Disponen de servidores en España, configurables según tus necesidades.Sí, también puedes aumentar o disminuir las características de los mismos en el momento en que lo necesites. Pagas por horas, por lo tanto, cuando no necesites tus servidores los borras, y listo.
Menú
Una vez creada la cuenta, al acceder a la plataforma nos encontramos un menú con tres opciones, que son:
- Servidores
- DNS
- Cuenta
Desde el menú CUENTA podemos ver nuestros datos relativos al saldo, facturas, pedidos, métodos de pago, notificaciones y opciones de autorecarga. También hay un apartado desde el que generar los informes que necesitemos.
Si es nuestro deseo, desde el menú DNS podemos gestionar los dominios que queremos agregar en los servidores de clouding.io, el servicio de Hosting es gratuito. En este caso debemos utilizar los siguientes servidores DNS:
- ns1.clouding.io (93.189.92.200)
- ns2.clouding.io (93.189.93.200)
Opciones
En el menú SERVIDORES tenemos un botón que nos permite crear nuestros servidores. Las opciones que tenemos son:
- Docker (Ubuntu 14.04 64Bit)
- Magento 2.0 (Ubuntu 16.04 64Bit)
- Prestashop 1.6.x (Ubuntu 16.04 64Bit)
Podemos configurar, según nuestras necesidades, las siguientes características de nuestro servidor (incluido ssh y firewall):
- Número de cores: entre 1 y 16
- Memoria: entre 1GB y 32GB
- Disco SSD: desde 25GB a 1900GB
Desde la propia plataforma de clouding.io podemos reiniciar el servidor, apagarlo, redimensionarlo, renombrarlo, borrarlo y, por supuesto, consultar su estado, la ip pública, la ip privada, el nombre del host y descargar la llave ssh. Además, desde aquí mismo, tenemos acceso a una consola VNC y también podemos consultar el log del servidor.
Diseño
Todo el diseño de la plataforma es muy claro y sencillo de utilizar, algo que se agradece mucho, sobre todo por aquellas personas que no tienen grandes conocimientos de servidores, dominios, dns, etc.
Precios
Es el momento de hablar de los precios. En esta tabla vamos a ver fácilmente unos ejemplos de configuración (precios sin el 21% IVA):
Cores | Memoria (GB) | Disco SSD (GB) | Precio/hora (€) | Precio/mes (€) | Amazon EC2 M4 ($/hora) Irlanda |
1 | 1 | 25 | 0.0135 | 9.86 | |
4 | 8 | 500 | 0.1624 | 118.55 | |
4 | 16 | 400 | 0.1596 | 116.51 | 0.238 |
8 | 16 | 1100 | 0.3492 | 254.92 | |
8 | 32 | 400 | 0.2216 | 161.77 | 0.475 |
12 | 24 | 1500 | 0.4872 | 355.66 | |
16 | 32 | 1900 | 0.6252 | 456.40 |
Podemos ver que son precios muy competitivos.
Mi configuración
La configuración que voy a escoger para realizar mis pruebas es esta:
- Imagen: Docker (Ubuntu 14.04 64Bit)
- Cores: 8
- Memoria: 16GB
- Disco SSD: 100GB
- Coste: 0.1052€/hora (76.80€/mes) + IVA
Te llegará un correo electrónico con los datos de acceso a tu servidor sólo unos segundos después de terminar de configurarlo. El tiempo necesario para comenzar a utilizar los servicios de clouding.io es mínimo.
Una vez conectado mediante ssh, y reiniciada la máquina, la versión del SO exacta es: Ubuntu 14.04.5 LTS (GNU/Linux 3.14.43-1 x86_64), con 128MB de SWAP y ext4 como filesystem.
Pruebas
Disk I/O
La primera prueba que voy a realizar consiste en probar el rendimiento I/O de los discos. Para ello, voy a utilizar una herramienta de mongodb llamada mongoperf. Me voy a servir del siguiente fichero de configuración para su ejecución:
1 2 3 4 5 6 7 8 9 10 11 |
root@test:~# more perfconfig { nThreads:16, fileSizeMB:1000, sleepMicros:0, mmf:false, r:true, w:true, syncDelay:0 } root@test:~# |
En el defino que voy a utilizar 16 hilos, un fichero de test de 1GB, sin tiempo de parada entre operaciones y lanzaremos tanto lecturas como escrituras.
Lo ejecuto mediante este comando:
1 |
#mongoperf < perfconfig |
Y así capturo la salida:
1 |
#iostat -xtm 1 > perfconfig.out |
Comprobamos que conseguimos una tasa de transferencia de unos 17MB/sec y unas 3.400 ops/sec.
Inserts masivos con MongoDB
En este test voy a insertar 1 millón de documentos con este pequeño script para ver el tiempo que tarda:
1 2 3 4 5 6 7 |
new Date(); for (var i=0; i<1000; i++) { for (var j=0; j<1000; j++) { db.test.insert({ 'i' : i, 'j' : j }); } } new Date(); |
Esta es la salida:
1 2 3 4 5 6 7 8 9 |
root@test:~/testfiles# mongo < insfile.sh MongoDB shell version v3.4.3 connecting to: mongodb://127.0.0.1:27017 MongoDB server version: 3.4.3 ISODate("2017-04-08T15:05:11Z") WriteResult({ "nInserted" : 1 }) ISODate("2017-04-08T15:12:11.619Z") bye root@test:~/testfiles# |
Han sido 420 segundos y hemos conseguido una tasa de escritura de 2.381 docs/sec.
Si en lugar de insertar los documentos de uno en uno utilizamos bulk:
1 2 3 4 5 6 7 8 9 |
new Date(); var bulk = db.testbulk.initializeUnorderedBulkOp(); for (var i=0; i<1000; i++) { for (var j=0; j<1000; j++) { bulk.insert({ 'i' : i, 'j' : j }); } } bulk.execute(); new Date(); |
obtenemos este resultado:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
root@test:~/testfiles# mongo < bulkfile.sh MongoDB shell version v3.4.3 connecting to: mongodb://127.0.0.1:27017 MongoDB server version: 3.4.3 ISODate("2017-04-08T15:16:19.695Z") BulkWriteResult({ "writeErrors" : [ ], "writeConcernErrors" : [ ], "nInserted" : 1000000, "nUpserted" : 0, "nMatched" : 0, "nModified" : 0, "nRemoved" : 0, "upserted" : [ ] }) ISODate("2017-04-08T15:16:35.676Z") bye root@test:~/testfiles# |
En este caso han sido 16 segundos y una tasa de escritura de 62.500 docs./sec.
MongoDB Replica Set
Para la última prueba he instalado un segundo servidor de iguales características que el primero. El ping entre ellos responde a 0.500ms.
He montado una replica set de dos nodos, de tal forma que he forzado un initial sync con el nodo anterior.
La replicación de los dos millones de documentos ha tardado 20 segundos.
1 |
2017-04-09T00:27:02.156+0200 I REPL [replication-1] initial sync done; took 20s. |
En concreto la copia de ambas colecciones ha tardado:
1 2 3 |
test: { collections: 2, clonedCollections: 2, start: new Date(1491690402222), end: new Date(1491690422150), elapsedMillis: 19928, test.testbulk: { documentsToCopy: 1000000, documentsCopied: 1000000, indexes: 1, fetchedBatches: 4, start: new Date(1491690402223), end: new Date(1491690410391), elapsedMillis: 8168 }, test.test: { documentsToCopy: 1000000, documentsCopied: 1000000, indexes: 2, fetchedBatches: 4, start: new Date(1491690410391), end: new Date(1491690422150), elapsedMillis: 11759 } } } } |
La replicación ha conseguido una tasa de 100.000 docs./sec.
Conclusión
Sólo me resta decir que me he sentido muy cómodo utilizando el servicio de clouding.io y que lo tendré en cuenta para futuros desarrollos.
Espero que este post y las pequeñas pruebas que he realizado os sirvan para comprender el funcionamiento de la plataforma, sus características y para comparar su rendimiento y coste con el de vuestros servidores actuales.