Qué es un servidor #
Un servidor es uno o varios ordenadores con programas instalados que se pueden ejecutar desde otro punto por otro ordenador, teléfono móvil, etc. Por ejemplo, una página web es una especie de programa informático que está instalado en un ordenador (que hace de servidor), ordenador al que se tiene acceso desde internet por el usuario que entra en la web, el cliente (cliente del servicio que da el servidor). Esto sería un servidor remoto, como veremos. Sin embargo, un servidor puede ser cualquier otro dispositivo que da un servicio si se lo demanda un cliente.
El protocolo de intercambio datos MQTT, muy utilizado en IoT, necesita un servidor MQTT que almacene y redistribuya los mensajes entre los distintos dispositivos conectados a él. Estos dispositivos, envíen o reciban datos del servidor, son todos clientes. Este sistema se utiliza también en muchos otros protocolos, como Modbus. Históricamente se denominaba al cliente como Maestro (Master), y al servidor como Esclavo (Slave), si bien esta nomenclatura se tiende a evitar por motivos evidentes.
Dependiendo de la ubicación desde la que puedes tener acceso al servidor, hay dos tipos principales: Servidores locales y remotos.
Servidor local #
Hay muchos tipos de servidores en función del trabajo que realizan. En definitiva es un software instalado en un ordenador. Si solo tenemos acceso local, es decir, en el radio de cobertura del rúter, lo denominamos como servidor local. Es muy importante no confundir red Wifi con Internet. La red Wifi es un medio por el que transferir datos, que pueden proceder de internet, o no.
Para trabajar con el protocolo MQTT, muy utilizado en IoT, un servidor gratuito y de código abierto, es Mosquitto. Es bastante ligero por lo que se puede instalar en un mini ordenador (SBC), como una Raspberry pi, para ahorrar en recursos, tanto económicos como de espacio y energía.
Servidor remoto #
Un servidor remoto es aquel que tiene acceso a internet, y por tanto se puede acceder a él desde cualquier parte.
Si se desea crear con un servidor local, un servidor remoto, hay que hacer que ese ordenador que ejecuta el programa que hace de servidor, sea accesible desde internet. Este proceso no es tan sencillo, ya que puede peligrar la seguridad de la instalación en la que se encuentra el servidor. Una opción muy habitual es la de contratar un servidor remoto a una empresa. Sin embargo, las condiciones de transferencia de datos irán marcadas por el precio del servicio contratado.
Existen plataformas con servidores MQTT online, en remoto, que permiten trabajar con estos servicios sin instalar tu propio servidor. En algunos casos tienen versiones gratuitas en las que limitan el número de datos intercambiados por minuto, o el tamaño, etc.
Por ejemplo, io.adafruit.com permite trabajar con MQTT y en su versión gratuita da la posibilidad de intercambiar un máximo de un dato cada dos segundos. Otra cuestión positiva es que la plataforma está preparada para dar el servicio de HMI. Es decir, de forma sencilla puedes crear paneles de visualización, botoneras, etc. Además, almacena los datos recibidos durante 30 días.
Comparativa entre ambos #
Características de un servidor local
- No hay límite de intercambio de datos por tamaño o frecuencia
- Los datos están en tu posesión, no se ceden a servicios externos
- Mayor flexibilidad si se dispone de conocimientos
- No se puede acceder desde el exterior de la red local, o hay que invertir en recursos y seguridad, poniendo en riesgo los puntos anteriores.
Características de un servidor remoto
- Se puede acceder desde cualquier punto de forma sencilla, ya que se paga por la infraestructura
- Hay límite de intercambio de datos por tamaño o frecuencia o aumento significativo de costes.
- Los datos no están físicamente en tu posesión, se almacenan a servicios externos