Es una aplicación en ejecución (software) capaz de atender las peticiones de un cliente y devolverle una respuesta en concordancia. Los servidores se pueden ejecutar en cualquier tipo de computadora, incluso en computadoras dedicadas a las cuales se les conoce individualmente como «el servidor». En la mayoría de los casos una misma computadora puede proveer múltiples servicios y tener varios servidores en funcionamiento. La ventaja de montar un servidor en computadoras dedicadas es la seguridad. Por esta razón la mayoría de los servidores son procesos diseñados de forma que puedan funcionar en computadoras de propósito específico.
Los servidores operan a través de una arquitectura cliente-servidor. Los servidores son programas de computadora en ejecución que atienden las peticiones de otros programas, los clientes. Por tanto, el servidor realiza otras tareas para beneficio de los clientes. Ofrece a los clientes la posibilidad de compartir datos, información y recursos de hardware y software. Los clientes usualmente se conectan al servidor a través de la red pero también pueden acceder a él a través de la computadora donde está funcionando. En el contexto de redes Internet Protocol (IP), un servidor es un programa que opera como oyente de un socket.
Comúnmente los servidores proveen servicios esenciales dentro de una red, ya sea para usuarios privados dentro de una organización o compañía, o para usuarios públicos a través de Internet. Los tipos de servidores más comunes son servidor de base de datos, servidor de archivos, servidor de correo, servidor de impresión, servidor web, servidor de juego, y servidor de aplicaciones.
Un gran número de sistemas usa el modelo de red cliente-servidor, entre ellos los sitios web y los servicios de correo. Un modelo alternativo, el modelo red peer-to-peer permite a todas las computadoras conectadas actuar como clientes o servidores acorde a las necesidades.
Uso
El término servidor es ampliamente utilizado en el campo de las tecnologías de la información. A pesar de la amplia disponibilidad de productos etiquetados como productos de servidores (tales como versiones de hardware, software y OS diseñadas para servidores), en teoría, cualquier proceso computacional que comparta un recurso con uno o más procesos clientes es un servidor. Tomemos como ejemplo la acción de compartir ficheros. Mientras la existencia de ficheros dentro de una computadora no la clasifica como un servidor, el mecanismo del sistema operativo que comparte estos ficheros a los clientes sí es un servidor.
De manera similar consideremos una aplicación web servidor (como por ejemplo el servidor multiplataforma "Apache"). Este servidor web puede ejecutarse en cualquier tipo de computadoraque cumpla con los requerimientos mínimos. Por ejemplo, mientras un ordenador portátil (laptop) o computadora personal usualmente no son consideradas como servidores, en ciertos casos (como el anterior) pueden cumplir el rol de uno y por lo tanto ser denominadas servidores. En este caso es el rol de la computadora el que la coloca en la categoría de servidor.
En el sentido del hardware, la palabra servidor normalmente etiqueta modelos de computadora diseñados para hospedar un conjunto de aplicaciones que tiene gran demanda dentro de una red. En esta configuración cliente-servidor, uno o más equipos, lo mismo una computadora que una aplicación informática, comparten información entre ellos de forma que uno actúa como host de los otros.
Casi todas las computadoras personales pueden actuar como un servidor, pero un servidor dedicado tendrá cualidades más adecuadas para un ambiente de producción. Entre estas cualidades se pueden mencionar CPU más rápidas, RAM mejoradas para alto desempeño, y mayores capacidades de almacenamiento en forma de múltiples discos duros. Los servidores también cuentan con otras cualidades como confiabilidad, disponibilidad y utilidad (RAS) y tolerancia a fallos, esta última en forma de redundancia en el número de fuentes, almacenamiento (RAID), y conexiones de red.
Los servidores se volvieron comunes a principios de 1990 en la medida en que los negocios comenzaron a utilizar computadoras personales para brindar servicios que anteriormente se alojaban en mainframes o en microcomputadoras. Los primeros servidores de archivos contaban con múltiples torres de CD, utilizados para alojar grandes aplicaciones de bases de datos.
Entre 1990 y el 2000 el aumento en el uso de hardware específico marcó el advenimiento aplicaciones de servidor autosuficientes. Uno de estas aplicaciones bien conocidas es el Google Search Appliance, que combina hardware y software en un paquete out-of-the-box packaging. Productos similares fueron el Cobalt Qube y el RaQ. Ejemplos más sencillos de dichos equipos incluyen switches, routers, gateways, y servidores de impresión, los cuales son fácilmente utilizables a través de una configuración plug-and-play.
Los sistemas operativos modernos como Microsoft Windows o las distribuciones de Linux parecen haber sido diseñados siguiendo una arquitectura cliente-servidor. Estos sistemas operativos se abstraen del hardware, permitiendo a una gran variedad de software trabajar con componentes de la computadora. De alguna forma, el sistema operativo puede ser visto como un servidorde hardware al software pues, excepto en los lenguajes de programación de bajo nivel, el software debe interactuar con el hardware a través de un API.
Estos sistemas operativos son capaces de ejecutar programas en un segundo plano los cuales son llamados servicios o daemons. Estos programas, entre los que se encuentra el Servidor HTTP Apache previamente mencionado, pueden permanecer en un estado dormido hasta que sea necesario su uso. Como cualquier software que brinde servicios puede ser llamado servidor, las computadoras personales modernas se pueden ver como bosques de aplicaciones clientes y servidores operando en paralelo.
El propio Internet es un bosque de servidores y clientes. Sólo con el hecho de solicitar una página web de un servidor a pocos kilómetros de distancia conlleva a satisfacer una pila de protocolos de red que incluyen varios ejemplos del uso de hardware y software para servidores. Los más sencillos de éstos son los routers, módems, servidores DNS, además de otros sin cuya interacción no podríamos acceder a la web.
La aparición de la computación en la nube permite servidores de almacenamiento, así como compartir recursos con un fondo común; igualmente permite a los servidores mantener un mayor grado de tolerancia a los fallos.
Requerimiento de hardware
Los requerimientos de hardware para los servidores varían en dependencia del tipo de aplicación del servidor. La velocidad de la CPU no es tan crítica para un servidor como lo sería para una máquina de escritorio. El deber de los servidores de proveer servicios dentro de una red a un gran número de usuarios impone diferentes requerimientos, tales como conexiones de alta velocidad y altas prestaciones para todos los dispositivos de I/O. Como generalmente se accede a los servidores a través de la red, estos pueden funcionar sin necesidad de un monitor u otros dispositivos de entrada. Aquellos procesos que no son necesarios para las funciones del servidor no se utilizan. Muchos servidores no cuentan con una interfaz gráfica de usuario (GUI) ya que esta funcionalidad consume recursos que pueden ser utilizados por otros procesos. Igualmente las interfaces de audio y USB también pueden ser omitidas.
Los servidores funcionan por largos períodos de tiempo sin interrupción y su disponibilidad debe ser alta la mayor parte del tiempo, haciendo que la confiabilidad y durabilidad del hardware sean extremadamente importantes. Aunque los servidores pueden ser ensamblados a partir de piezas para computadoras comunes, aquellos servidores que realizan tareas críticas dentro de la infraestructura de una empresa son idealmente muy tolerantes a fallas y utilizan hardware especializado con tasa de fallo para maximizar su tiempo de funcionamiento, pues una simple falla de poco tiempo de duración puede representar costos mayores a los de comprar las piezas e instalar todo el sistema. Por ejemplo, una falla de pocos minutos en una bolsa de acciones basta para justificar los gastos de sustitución de todo el sistema por otro más confiable. Los servidores pueden incluir discos de mayor capacidad y velocidad, sistemas de enfriamiento por agua, mayores disipadores para reducir el calor, abastecimientos de energía ininterrumpido que garantice el funcionamiento del servidor ante una falla del suministro eléctrico. Estos componentes ofrecen un mayor desempeño y confiabilidad en correspondencia a un mayor precio. La redundancia de hardware —instalar más de una instancia de un módulo como la fuente o el disco duro dispuestos de forma tal que si uno falla el otro se encuentre automáticamente disponible— es ampliamente utilizada. Se utilizan dispositivos de memoria ECC que detectan y corrigen errores; otros tipos de memoria que no son ECC pueden conllevar a una corrupción de los datos.
Para aumentar la confiabilidad la mayoría de los servidores utilizan memoria para detección y corrección de errores, discos redundantes, fuentes redundantes y más. Es común que estos componentes pueden ser sustituidos en caliente, permitiendo que los técnicos puedan cambiar piezas defectuosas en un servidor sin la necesidad de tener que apagarlo. Los servidores cuentan usualmente con mejores disipadores para prevenir un sobrecalentamiento. Como en la mayoría de los casos los servidores son administrados por administradores de sistema calificados, el sistema operativo con que cuentan está más enfocado en la estabilidad y el desempeño que en parecer acogedor y fácil de usar, siendo Linux el que mayor por ciento de uso toma.
Como la mayoría de los servidores son ruidosos y necesitan de estabilidad en el suministro eléctrico, buen acceso a Internet, y mayor seguridad, es común almacenarlos en centros de servidores. Como los servidores se agrupan siempre se busca reducir el consumo energético, pues la energía extra utilizada produce un aumento de la temperatura en la habitación lo que provocando que se excedan los límites de temperatura aceptables; por ello la mayoría de las habitaciones para servidores cuentan con equipos de aire acondicionado. La cubierta de la mayoría de los servidores tiende a ser plana y ancha (usualmente medida en "unidades rack"), adaptada para almacenar varios dispositivos juntos en un soporte para servidores. A diferencia de las computadoras ordinarias los servidores pueden ser configurados, encendidos, apagados o reiniciados remotamente usando administración remota, usualmente basada en IPMI.
Muchos servidores se demoran en arrancar el hardware e inicializar el sistema operativo. Es frecuente que los servidores realicen extensas pruebas de memoria antes de inicializar además la inicialización y verificación de servicios de administración remotos. Los controladores de discos duros inician los dispositivos secuencialmente, en vez de todos a la vez, para no sobrecargar la fuente de alimentación con la carga de arranque, y luego inician el chequeo del sistema RAID para probar que las operaciones redundantes funcionen de forma correcta. Es común que un servidor tome varios minutos para inicializarse pero puede que no sea necesario reiniciarlo en meses o años.