Hace 14 años | Por Exeo a sigt.net
Publicado hace 14 años por Exeo a sigt.net

"Recientemente Facebook nos facilito algo de información acerca de su parque de servidores. Usan unos 30.000 servidores y, sin sorpresa alguna, muchos de ellos están usando código PHP para generar páginas llenas de información social para sus usuarios. Ya que sólo dicen que una mayoría está ejecutando PHP, asumamos que son 25.000 de los 30.000 que usan."

Comentarios

zerial

#2 s/phython/python/

D

#5 Se me colo una h de mas.

t

De acuerdo 100% con #5, la de recursos que ahorraríamos usando ed o sus sucesores...

D

#5 te voto positifo por usar sed.

D

Y lo que se gastaria en programarlo ahora en C++?
Como dice #2 si se programa en ensamblador se ahorrarian todavia muchos mas servidores pero... la fecha de entrega para cuando? para el 2200?

D

#9 Para programar cualquier cosa en ensamblador es necesario conocer los detalles del procesador, no solo para hacer código optimizado.
Como dices, hoy en día es estúpido programar en ensamblador salvo en lugares muy concretos y como dicen en los comentarios facebook seguramente use modulos de php escritos en C++ que se encarguen de las tareas más pesadas y donde se vaya a notar el rendimiento.
Lo que no entiendo es por qué dices que C es un "ensamblador portable". El lenguaje C es tan "ensamblador portable" como lo es PHP o cualquier otro lenguaje, al fin y al cabo todo termina convertido en codigo ensamblador. (porque supongo que no te referías a que puedes meter código ensamblador dentro de un programa en C)

D

#12 C es ensamblador portable porque te permite trabajar directamente con la memoria entre otras muchas cosas que no puedes hacer en otro lenguaje. * ((char *)0x0b8000)[0] = 'X'. No creo que encuentres otro lenguaje con una traducción de sus statements tan directa al ensamblador.

Palabras clave como 'register' o 'volatile' creo que lo hacercan al hardware más que ningún otro lenguaje.

C++ es un buen lenguaje para dispararse en el pie con mucho estilo.

ArdiIIa

#31 Lamento discrepar.
La denominación de esamblador portable, me suena un poco rara.
C es una lenguaje compilado y por tanto una vez traducido y una vez "compilado" (valga la redundancia) y linkado es cuando código ha sido traducido al lenguaje de la máquina.
Realmente no podría asegurar si la calidad del ejecutable es cuestión del código o cuestión del compilador/linkador.

En cuando a lo que se puede hacer en C y no se puede hacer con otros lenguajes, te quedarías sorprendido.

Precisamente, hace muchísimos años, ya se podía en Basic introducir directamente en memoria ram o vram datos con los comandos Poke y Vpoke. Y por abundar mas en el asunto, otro grandioso lenguaje que es Delphi (Object Pascal), que permite introducir líneas de código ASM con una simple directiva, con todo lo que ello representa....

q

#2 Go está pensado para programación de sistemas. Ellos mismos lo ponen bien grande :
"Go : a systems programming language".

Y si lees un poco la historia del proyecto verás que la necesidad que intenta cubrir es la complejidad que supone la programación de sistemas en general y la multiprogramación en particular.

rojo_separatista

Pues yo creo que no es tanta tontería como puede parecer en un principio, y habría que mirarlo desde una óptica ecológica, si bien es cierto que el tiempo de desarrollo será mayor y se necesitarán más programadores, a la larga reducir significativamente el número de servidores representaría un gran ahorro de energía.

Por eso son interesantes aquellas alternativas que combinan la productividad de PHP, .Net o Java, con la eficiencia de C. Como apunta #2.

Y ahora... me voy a acabar la jodida práctica de compiladores...

Ciri4n

#35 Madre mía!! Y cuando haya que realizar una modificación el programador que haga jornadas de 20 horas... Que tonterias decís, totalment de acuerdo con #34. Lo que consume tiempo de ejecución són los accesos a BDs y a disco, y no por el lenguaje.
Las metodologías sirven para algo, a todos estos que defendeis tanto el C o ensamblador os pondremos un teclado con dos teclas, 0 y 1, así que todos a programas instrucciones en código máquina...

D

totalmente de acuerdo con #34.

Si se hubiera usado C++ el proyecto tendría tanto que hacerse que nunca abría despegado, por consiguiente solo usarían un servidor .... hummm... oooh wait!!!!

D

#48: No se si sería posible ir reemplazando partes del código PHP por partes en C++ poco a poco.

D

#34: Y no sólo eso. Si haces las cosas medianamente bien, tu programa C++ no imprimirá por la salida el HTML a pelo, sino que procesará unas plantillas. Esas plantillas como mínimo deberán soportar meter impresión de variables, condicionales, bucles...
Total, que al final acabarás con un nuevo y flamante lenguaje interpretado, que gasta más de "si lo hicieras sólo en C++" lol

D

#19 lol

ElPerroDeLosCinco

#24 Yo como mucho acaricio la chepa al comercial, para que deje de aletear y provocar ondas de viento que destrozan la planificación de mis proyectos. De escribir en el disco ya me encargo yo.

D

#24
M-x butterfly

D

#24 Yo soy más de ajustar las constantes fundamentales del universo para que la salida sea la apropiada sin tener que grabar nada en el disco ni pasar por la CPU.

D

PHP -> 3 caracteres
C++ -> 3 caracteres

¿Donde está el ahorro?

D

La mayoría de los comentarios en /. ridiculizan el estudio

el_Diablo_Cojuelo

#3 Todavía recuerdo con cierto cariño mis primeros cgi escritos con C, menudo "peazo" de agujeros que tenia, eso sin contar la nefasta gestión de recursos, por eso C y C++ no lo veo muy factible para estos quehaceres.

a

#49 Recuerde: Una mujer da a luz en 9 meses pero 9 mujeres no dan a luz en 1 mes

De media si

luzem

#51 Nombre del proyecto: Niño
tiempo de ejecución: 1 mes
Recursos: 9 mujeres fértiles
multa por mes de retraso XXXXXXXXXXXXXXXXXXXX mil

fíate tu de las medias

mujer 1 - 9 meses
mujer 2 - 9 meses
mujer 3 - 8 meses
mujer N - 9 meses

media = 9 meses

D

Me parece una noticia bastante interesante. Puede parecer tontería, pero yo creo que es más ecológico gastar el dinero en trabajo de programadores que en pagar energía.

Y lo más importante: no es solo Facebook, sino prácticamente todas las webs. Quizás se haya abusado mucho de PHP y otros lenguajes similares, y a lo mejor C++ podría haber sido una decisión mejor. No hay que olvidar que un 75% de ahorro es MUCHO.

Ferran

#16 Quizás el ahorro en caso de Facebook sea lo suficientemente significativo como para usar otro lenguaje, pero para la mayoría PHP cumple sobradamente los requerimientos (no todos vamos a necesitar 30.000 servidores).

E

#16 Me parece una noticia bastante interesante. Puede parecer tontería, pero yo creo que es más ecológico gastar el dinero en trabajo de programadores que en pagar energía.

Y una mierda, ¿tú sabes la cantidad de gases media que emite cada uno de esos programadores? lol

ArdiIIa

C++ resulta ser un lenguaje de propósito general, PHP, aunque interpretado, no sale del ámbito de la web, por lo que su principal cometido es ese, y que por cierto, lo hace a las mil maravillas y se complementa perfectamente con Apache, (cito este por ser el genuino)
Creo que la sola proposición de hacer trabajar servidores (web) bajo C++ no tiene fundamento alguno.

ForatNegre

En resumen: La culpa del cambio climático es de Facebook.

D

Antes de entrar en la noticia, ya sabía que comentarios iba a encontrar:

- Yo lo haría con ANSI C en una Debian bla bla bla...
- Es mejor con ensamblador porque más a bajo nivel es más de auténticos programadores bla bla bla...
- Pues yo le pondría un megacluster de Nintendo DS con un linux mínimo y tal...

Se ve que nadie tiene muy en cuenta 2 factores:
- La vida real
- El dinero

D

Bueno, lo cierto es que la mayor parte del trabajo de servir una página web no se hace con php. Tanto los servidores web (Apache, Lighttpd, IIS) como las bases de datos (MySQL, PostgreSQL, SQLServer), como los sistemas operativos (Linux, Windows, BSD) están escritos en C/C++.

alt

Parida del día.

Es más sencillo de mantener y el rendimiento es aceptable.

¿Más preguntas?

D

Y ¿cuantos agujeros de seguridad (buffer overflows y tal) tendrían si usaran C++?

dreierfahrer

TODO se deberia hacer en python....

Con python da gusto programar... supera eso C++!

PD: Rompo una lanza a favor de java: tan pesado no sera si funciona en casi todos los moviles... Pero claro, si cojemos como 'eemplos de codigo java' las MIERDAS que se hacen por aqui....

Si en las TIs españolas se programara en C las aplicaciones web serian mas lentas, sin ninguna duda.

i

#64 desde Java6 lo de que es lento es una leyenda urbana. Que es más lento que lenguajes compilados? Obvious things are obvious, pero esos tiempos donde Java era un lastre de rendimiento quedaron atrás. Está bastante más optimizado y cada día lo mejoran más. Los nuevos prototipos del recolector de basuras y la nueva arquitectura de la máquina virtual de Java7 "promete" una recolección casi en tiempo real.

Cuando llegue podremos opinar, pero hay que dejar de vivir de las leyendas urbanas.

D

#64 TODO se deberia hacer en python....

En fin... la falacia del martillo de oro http://es.wikipedia.org/wiki/Martillo_de_oro

dreierfahrer

#66 jajajajaja

te equivocas, yo no lo digo en ese sentido...

Solo lo digo pq me encanta programar python... Cuando lo coges recuerdas pq siempre te ha gustado eso de el codigo... encuentras de nuevo la BELLEZA...

A mi es que lo que se hace con python me parece arte -aunque si, he visto codigo de MIERDA tb en python-

No digo que valga para todo ni que se deba usar en todas las circusntancias... pero yo lo hago siempre que puedo... solo pq es una gozada... y eso no lo supera C++!!!

o

#69 Estoy contigo, el código Python es un arte, todo es un objeto, lo que permite una introspección brutal, tiene librerías muy pulidas, todo esta tan bien pensado que nunca deja de sorprenderte, sintaxis limpia con la que puedes mantener el código de hace tiempo o de otras personas sin volverte loco.

Podría seguir horas hablando de temas mas técnicos, pero diré simplemente yo no vuelo a poner un puto punto-y-coma en mi vida. Python esta a años luz de todo y quien no lo vea es que se ha apoltronado en viejas costumbres.

Siempre me acuerdo de XKCD cuando sale este tema: http://es.xkcd.com/xkcd-es/strips/python/

D

#64 y #71. ¡Un poquito de humildad! Se os olvida el "pequeño" detalle de que Python está básicamente escrito en lenguaje C (tan sólo hay que tomarse la molestia de bajarse el código fuente). Python es un lenguaje estupendo, elegante y ligero ... pero no sirve para todo. Por ejemplo no sirve para hacer un intérprete de Python

a

#72 Uno de los proyectos más interesantes de los últimos años en Python es precisamente eso que tu dices que no se puede http://codespeak.net/pypy/dist/pypy/doc/getting-started.html

Los resultados de rendimiento son más que esperanzadores.

D

#76 Touché. Así que Python se suma a la corta lista de lenguajes autoejecutados. Muy interesante.

CortoCircuito

¡Por fin alguien con mi misma opinión!

Que sea "más difícil" de programar es solo algo subjetivo. Llevo más de 10 años programando en C++, y cada vez estoy más convencido de que es el lenguaje de programación por excelencia, solo por detrás de C que se debería dejar para cosas de bajo nivel (i.e. el Kernel Linux). Con C++ se puede hacer lo que queráis, y sin sacrificar ser multi-plataforma: solo es cuestión de usar las librerías adecuadas y programar bien, sin hacer burradas.

Esto lo digo sobre todo por los supuestos "lenguajes de referencia" Java, .NET, etc... y aunque en menos parte, también por PHP, Python, Go y family.
¿Que el manejo de memoria dinámica es un coñazo en C++? -> Usad smart pointers, y será mil veces más eficiente que cualquier garbage collector.
¿Que C++ no viene de serie con soporte de base de datos, internet, etc...? -> Hay cientos de librerías gratuitas y open source para la plataforma que queráis.
¿Alguien sabe explotar realmente bien la STL y las templates? -> Poquisimos lenguajes tienen esas herramientas tan potentes.

Ale, ya he evangelizado por hoy!

El_Estudiante

#45 eso es mentira. El lenguaje de programación definitivo es el castellano lol

D

Yo pico C++ unas 6-7 horas al día (videojuegos, casi el único nicho donde C++ sigue medio vivo) y me parece una gilipollez impresionante picar una aplicación web. El tipo solo tiene en cuenta número de servidores, sin saber realmente cuanto está consumiendo de CPU cada uno. Pero claro, en la entrada del artícúlo original, pone que el tipo tiene un Web Toolkit hecho en C++ ... je.

ZeYt

Parece ser que por aquí hay gente que opina sin saber nada del mundo web lol

NapalMe

No hacer algo "bién", por ser mas "dificil", es muy triste.
Yo voto por ensamblador.

Nenillo

El cuello de botella en aplicaciones de este estilo, con millones de usuarios y páginas no está en el procesado PHP de la página, está en la base de datos. Este cuello de botella en el hardware suele ser el disco duro. Probablemente la mayoría de máquinas de facebook sean bases de datos, no máquinas ejecutando código PHP.

PHP en cuanto reciba los datos de la BD apenas tardará unos milisegundos en procesar toda la página. Es más preocupante la memoria que consume cada proceso o thread de Apache (o el servidor web que sea) y el uso del disco duro de la BD que no el proceso de la propia página, que muchas veces está cacheada o semicacheada además de tener el código precompilado en bytecode usando APC o similares.

La ganancia de rendimiento haciendo la aplicación en C++ sería mínima, los problemas de eficiencia en términos de recursos humanos serían mucho mayores.

D

La otra pregunta sería: cuánto dinero que se ahorrarían en servidores y cuánto deberían gastarse en personal extra?

MycroftHolmes

Ignorantes....
COBOL Rules!!!!!

D

¿Cuánto en general nos ahorraríamos si cerraran Facebook?

i

Vamos a ver, soy el único que no se ha planteado el uso de sistemas intermedios? Que el frontal puede que esté hecho en PHP, pero los sistemas escalados suelen usar servicos intermedios como colas de mensajes (Apache ActiveMQ por ejemplo) o servicios web que pueden estar implementados en lenguajes más potentes que PHP.

Por favor, es fácil opinar, pero para decir burradas como lo de implementar FB en C++ es mejor estar calladito.

A

Hay servidores web en C++: http://www.micronovae.com/CSP.html

michelinho80

que vayan ahorrando, que igual tienen que rascarse el bolsillo:

Facebook demandado por 10 grupos defensores de la privacidad

Hace 14 años | Por michelinho80 a idg.es

z

Solo una pregunta por Curiosidad, ¿Si facebook tiene 30.000 servidores cuantos usa Google?

MycroftHolmes

#44 Rondaban el medio millon hara como seis meses
Eso si, con una eficiencia energética del 99%

Por lo que leí usaban Pentiums II y basicamente, deshechos y cosas asi, y los tenian en containers de barcos con una ventilacion eficiente

Porque Pentiums II y III? porque no consumen un cagao (mi primer Pentium III no tenia ni ventilador) y si se estropean, pues mala suerte, pero la inversion ha sido pekeña

Recordemos que cuando Google empezó en Standford tenian que andar lloriqueando por ordenadores por los departamentos

o

Para mi solo hay una respuesta, Python, y si necesitas "ultra-performace" en algun cuello de botella creas un modulo en C, lo cargas en Python y sigues utilizando Python como siempre.

Para todo lo demás, programadores-del-pleistoceno®

b

#0 Se los podria haber ahorrado todos, todavia estarian programando.

calocen

Anda que no hay sitios web entre los más vistos basados en php. Con millones de usuarios únicos y que no usan miles de servidores.
(Por cierto, echan más CO2 los clientes de Facebook, que los servidores).

kesar

facebook está acabando con el planeta..

samsaga2

Menuda chorrada de artículo. Una web como facebook donde gasta más tiempo de cpu es en el acceso a la base de datos no al ejecutar la página web. Y una base de datos escrita en erlang (lenguaje interpretado) como couchdb o mongodb es mucho más rápida que una escrita en c como postgresql. Lo que cuenta es el algoritmo, el lenguaje es lo de menos.

D

¿pero que hace esto en portada??? si ya usan c++, pero no para todo obviamente ¿porqué tenemos que ser tan bipolares? ¿esta mal usar la mejor cosa en cada caso? esto no es ser como del real madrid o el barça...

Fantasma_Opera

¿Mandeee...? ¿lo cuálo? ¿chi lo cuá...?

Ciri4n

Pues no me imagino que podrían decir si estuviera escrito en Java con JSFs...

Gonzo345

Maldita sea PHP es una maldita locura joder, es como C lo cual no deja de ser un quebradero de cabeza al menos para mí

P

aquí el problema muchas veces no es de eficiencia. A veces para vender un proyecto o sacarlo adelante prima mas el menor tiempo en hacerlo que la eficiencia de este.

Cuando dispones de un tiempo limitado tiras de programas que te dan funciones mucho mas simplificadas, de forma que el coste de de hacer una modificación o el mantenimiento sea muy bajo, porque señores el tiempo es oro.

Porque se usan PHP, ASP.NET, etc? son lenguajes mucho mas cercanos al humano.

hangla

null pointer assignment

jsianes

30.000 servidores?!?!?! No quisiera ser el que organiza los cables..... OMG da vertigo solo pensarlo... que bestialidad.

D

No entiendo, no creo que se ahorren mucho, diría que nada, les saldría mas caro, rehacer todo, y aparte php solo genera unas simples hojas, los que realmente comen recursos son las consultas, el cached, el phyton que no desistalaron en algún servidor .

rafaLin

Y si en vez de C++ usas C (bien programado, que no es fácil), ahorras mucho más.

k

Pero vamos a ver... en esos 30.000 servidores ... ¡¡no hay código PHP!! hay imágenes, audios y vídeos... Y las imágenes, audios y vídeos ocuparían igual con C++, con Go o con Perl...

El código PHP se introduce dentro de ficheros de texto plano que apenas ocupan unos Kb... creo que este artículo es un poco exagerado.

K

#54 No se trata de lo que ocupan las aplicaciones, sino de la cantidad de requests que son capaces de tratar (sobre todo si estas son concurrentes).

Aunque estoy de acuerdo contigo en una cosa, es un artículo un poco [bastante] exagerado.

osiris

#54 los datos los guardarán en cabinas de discos. Los servidores serán sólo para proceso: web, bbdd, log....