Hace 9 años | Por brook a highscalability.com
Publicado hace 9 años por brook a highscalability.com

La red de páginas que forma StackExchange, que incluye StackOverflow, está en la posición 54 por tráfico en el mundo. Tienen 110 sites y crecen a un ritmo de 3 o 4 al mes. 4 millones de usuarios; 40 millones de respuestas y 560 millones de páginas servidas al mes. Todo esto con sólo 25 servidores y una plantilla poco numerosa.

Comentarios

D

#1 En el propio StackOverflow.

Catacroc

#2, #3 Eso era exactamente lo que me estaba temiendo....

ElPerroDeLosCinco

#2 ¿Y eso no es peligroso, no podría explotar internet?

Capitan_Centollo

#1 #2 Se consultan a sí mismos, es una función recursiva, supongo que de ahí el nombre stack overflow

D

#1 Se conectan a Matrix.

t

#1 Y los peluqueros, ¿dónde se cortan el pelo? Eso me he preguntado yo siempre. Porque tener que ir a la competencia debe dar como grimilla...

Mister_Lala

#10 Ni tú ni nadie. Atrás quedaron los días donde había que saberse de memoria la secuencia de instrucciones para hacer esto o aquello.

elzahr

#20 O de leer la documentación...
Me encanta stackoverflow, pero está a petar de preguntas que se resuelven leyendo el mini-HowTo del framework correspondiente. Yo lo uso, pero no programo mejor o más que sin él, sino que quizás gasto menos tiempo buscando la solución a un problema.

D

#23 Estoy de acuerdo contigo. StackOverflow no debería ser el primer lugar a mirar, sino una ayuda para cuando la documentación no ayuda y/o se tiene un problema que uno no es capaz de resolver por sí mismo. En cambio basta con pasear un poco por el lugar y ver la cantidad de preguntas que se hacen que son absolutamente triviales de responder (porque tienen respuestas bien documentadas) para constatar que una gran parte de gente que acude allí lo hace por pereza, para no tener que molestarse en buscar una solución; no porque no puedan resolver el problema o buscar la solución por sí mismos, sino directamente en busca de alguien que ya les dé el trabajo hecho. Esa dinámica crea programadores ineptos e incapaces, del mismo tipo que los "informáticos" que sólo se dedican a instalar o integrar cosas hechas por otros.

Si la gente descuida el "know how" personal en aras de la productividad y la rapidez, luego que no se quejen de que las empresas se apuntan a esa misma dinámica. En la mía se valora tanto o más lo primero que lo segundo.

D

#37 Esas preguntas "tontas" vienen muy bien para poder buscar en google y encontrar respuestas rápidas sin tener que aprender una tecnología que igual te toca de pasada, o para que la gente menos experimentada pueda ir integrándose.

D

#53 "respuestas rápidas sin tener que aprender una tecnología".

Precisamente. Lo que viene siendo un fanfarrias que se las da de saber algo pero sólo sabe copiar.

"para que la gente menos experimentada pueda ir integrándose".

E ignorando la documentación, por pura vagancia.

No estoy diciendo que no sea una solución. Estoy diciendo que si se usa por vagancia, para evitar buscar soluciones por uno mismo, entonces sólo sirve para crear gente inepta. Los gurús de una tecnología no lo son porque sean más listos, sino simplemente porque se lo curran.

D

#56 También sirve para que si empiezas a cacharrear con algo que ha caído en tus manos sólo por curiosear un poco no tengas que empollarte toda la documentación para saber por qué chorrada no compila o no imprime en pantalla o algo así: buscas y ya está contestado.

D

#57 La documentación no se empolla, se consulta. Igual que haces en StackOverflow, pero currándotelo tú en vez de pedirlo masticado para no tener que esforzarte.

(No es una alusión personal)

D

#63 Claro, y te encuentras una cosa que quieres probar, en un lenguaje que no dominas, y ya sabes justo en qué parte de la documentación está el fallo. Por ejemplo: va un programador de Java a compilar algo en C, y falla porque ha definido una función del tipo float función() pero no la ha declarado, coloca una llamada ANTES de la definición, compila, y ¡Coño! ¡¿Qué demonios pasa aquí?! ¡¿Por qué salta todo por los aires?! Y ya me dirás cómo soluciona el problema leyendo la documentación. Cualquiera que sepa C sabe que tiene que declarar la función o sino el compilador asumirá que devuelve int, pero si nuestro amigo no sabe C ala, a leerse un manual de C completo e ir haciendo todos los ejercicos básicos a ver si se le ocurre qué pasa.

Evidentemente si el objetivo es aprender C debería ir pasito a pasito, pero si está tocando C por casualidad y no va a volver a usarlo no va a ponerse a aprenderlo desde 0.

#64 Google no destaca por hacer las cosas precísamente en ensamblador Que sí, que es un gasto energético y todo lo que quieras, pero en el mundo comprar un servidor más gordo te puede salir más barato que contratar desarrolladores extras, por eso no se usa C/C++ para las aplicaciones web aunque rindan mucho más que Java, Python, etc. ¿Cuánto les costaría cambiar por completo de tecnología? ¿Lo sabes?

D

#65
¿Quién ha hablado de que Google use ensamblador? Google utiliza Python y C++ en sitios como Gmail y YouTube. Y me parece que pretenden sustituir C++ o Python por Go, uno de los dos. Facebook utiliza PHP y C++. Tuenti también usaba PHP y C++.

Y ya si quieres puedes usar C++ en lugar de Python o PHP o Java. Por otra parte no digas C/C++ porque C++ es muchísimo más potente que C. Programar en C++ como si fuera C con clases es uno de los peores errores que puedes hacer con C++ y por desgracia uno de los más frecuentes.

Cambiar por completo de tecnología a la larga les saldrá más barato y además no violarán los derechos de los usuarios.

D

#67 "si ya por simple intuición no entiende que un compilador necesita declaraciones"

Java no necesita declaraciones. Puedes definir una función en la línea 150 y usarla en la 20. Y te he hablado de un programador Java que toca algo en C sin saber mucho C, quizás para probar un ejemplo de un libro de Algoritmia o vete a saber. Además, C tampoco necesita declaraciones, no me lo explico pero no las necesita, es un hecho. Se traga las funciones sin declarar asumiendo que devuelven un entero y a correr. Y hay de ti como no devolviesen un entero.

"¿en qué lenguaje piensas tú que hay que leerse un manual entero para declarar una misera función, tío?"

El tema no es saber cómo declararla, el tema en este caso es saber que el problema está en que no la has declarado cuando el compilador compila sin quejarse. Para resolver eso o sabes C o no sabes.

#66 "Por otra parte no digas C/C++"

Digo C/C++ porque son compatibles y porque C++ se considera un "incremento de C", de ahí su nombre. No estoy diciendo ni cómo se debe programar en uno ni cómo en otro. Pero son lenguajes muy unidos en algunos puntos. En cuanto a que sea un error usar C++ como "C con clases", dependerá de qué es lo que quieras hacer. Pero para mi gusto uno de los puntos fuertes de C++ es que puedes implementar una librería en C con funciones, en lugar de tener que hacer una clase estática como pasa en Java. Y ya lo dijo Jonh Carmack: (traducido a bola que no lo recuerdo literalmente) "A veces lo más elegante es una función, no una clase ni un método".

"Cambiar por completo de tecnología a la larga les saldrá más barato y además no violarán los derechos de los usuarios." Puede, no lo voy a negar. Pero no lo sé así que tampoco lo voy a afirmar. Sólo digo que sus razones (acertadas o no) tendrán.

D

#69
Si quieres usar falacias de autoridad, yo puedo poner lo que dice el creador del lenguaje C++ y que continúa en activo, participando en el comité de revisión de los estándares C++.

D

#69 "te he hablado de un programador Java que toca algo en C sin saber mucho C".

No, me has hablado de un programador Java que toca algo en C sin saber lo básico DE PROGRAMACIÓN.

Porque es de cateto total no intuir (o directamente saber) que para distinguir funciones (o más en general analizar "tokens") un programita necesita una lista que las identifique. Y eso no tiene nada que ver con el lenguaje que emplees ni habitual ni ocasionalmente, sino con el mero conocimiento de lo que es compilar código, por más que estés acostumbrado a un compilador que hace dos pasadas en vez de una.

"el problema está en que no la has declarado cuando el compilador compila sin quejarse. Para resolver eso o sabes C o no sabes".

O tienes un compilador adecuado, o configuras adecuadamente el que tienes. Y para eso no hace falta preguntar tampoco.

Aún si me dijeras que tiene que hacer algo esotérico en C... aunque entonces se te va al traste tu tesis del programador ocasional. Pero hijo, me estás hablando de declarar una mísera función.

D

#84 Aprende a leer.

D

#85 Claramente eres tú quien lo necesita. Te acabo de explicar que tu ejemplo describe a un inepto, independientemente del lenguaje que tenga que utilizar. Así de simple.

D

#66 La cita correcta: "Sometimes, the elegant implementation is just a function. Not a method. Not a class. Not a framework. Just a function."

http://www.defprogramming.com/quotes-by/john-carmack/

D

#65 En primer lugar, imaginando que el tipo haya nacido ayer o que sea tonto y no lo sepa, si ya por simple intuición no entiende que un compilador necesita declaraciones... ese tío no es programador, sólo es un inútil que únicamente sabe jugar en su reducida parcela de conocimiento.

Y en segundo lugar, me estás argumentando con un ejemplo que presupone que no existe en Internet documentación de consulta rápida sobre C.

Pero es que aunque no se tratara de C, ¿en qué lenguaje piensas tú que hay que leerse un manual entero para declarar una misera función, tío? Ante un lenguaje nuevo, lo primero que va a buscar cualquiera que no sea burro son ejemplos de sintaxis precisamente.

Lo que estás describiendo no es un problema técnico, sino un problema de inteligencia y de vagancia. Justamente eso es lo que fomenta el acostumbrarse a preguntarlo todo para que otros te hagan el trabajo, en vez de buscar las respuestas uno mismo.

Sólo en caso de que uno mismo NO PUEDA encontrar la solución debe recurrirse a preguntar por ahí. Lo demás es pura vagancia y crea programadores ineptos que no saben buscarse las castañas ni hacer las cosas por sí mismos, lo pintes como lo pintes.

D

#65 Perdona, pero son ellos los que en su página web presumen de que optimizar el código hasta la exageración reduce drásticamente los costes porque tienes que tener menos hardware y como consecuencia consumes mucho menos. Y para una empresa como la suya, el consumo energético (incluyendo el acondicionador de aire de la sala donde tienen los 25 servidores) no debe ser proporcionalmente despreciable. Y son ellos los que presumen de usar la mejor tecnología para cada necesidad.

Yo no sé si .Net es la mejor tecnología para lo que quieren hacer. Provengo de mainfraims y luego Unix y luego Linux, así que estoy cláramente sesgado en mi selección.

Pero no pueden argumentar al mismo tiempo que elijen la mejor tecnología y que incluso sustituyen el bytecode de .Net por no ser lo bastante rápido, y al mismo tiempo que ponen más hardware del que necesitan porque es más barato.

A parte de que, para semejante carga de llamada al mes, no se me hacen muchos 25 servidores en total, aunque sean en Windows.

yemeth

Y encima generando calidad, que podría haber sido el Yahoo Respuestas de la programación. "[+55] La mejor forma de arreglar tu problema es hacer todas las clases estáticas"

arivero

#9 lo han evitado gracias a los comentarios, pero las zonas de comentarios si que son de ese estilo, o la variante "haz esta otra cosa que no tienes ni idea"

T

Yo escuché como se creaba. Sus creadores hicieron un podcast semanal mientras lo diseñaban y programaban. Sus principales artifices son

- Joel Splowsky (http://www.joelonsoftware.com/) del cual os recomiendo leer TODOS los articulo articulos de la página enlazada porque son oro puro. Hay muchos de ellos traducidos. Trabajó para Micrsoft, fue uno de los primeros creadores del Visual Basic for Applications, en concreto se pegó con el de Excel, y tiene su propia empresa de desarrollo: Frog Creek, centrada en productos para desarrolladores.

- Jef Artwood (http://blog.codinghorror.com/): se que es muy conocido, pero le he seguido mucho menos. Fue el principal programador de StackOverflow, aunque se que luego metieron mas gente porque no tenia tiempo

a

Imprescidible para todo programador.
Y me alegro del gran exito de StackExchange y que haya tirado por tierra a www.experts-exchange.com que deje de consultar cuando empezaron a pedir dinero para poder ver las respuestas ocultas de otros usuarios. Que les den.

b

#29 si pudiera te votaría más veces. Experts exchange se hundió cuando empezaron a ser de pago. Ahora directamente cuando me salen resultados en una búsqueda ni entro.

joseitor

Un articulo muy interesante para los que somos técnicos, me encanta leer sobre las infraestructuras de las webs de gran trafico, es una pasada

D

#25 " Y ni que hablar de lo que te puede costar un soporte corporativo de red hat o de aix!"

Si eres de Stack overflow, poner un CentOS como servidor es como montar un coche para un ingeniero industrial.

D

#40 ¿qué se puede quedar sin partes del cuerpo con la remachadora o sin hacer ni la primera soldadura bien?

D

#40 1- Los industriales no saben montar un coche. No necesariamente.

2- El soporte es mucho más que resolver dudas.

D

#25 SO usa HAProxy y Redis, y esos no van en Windows (en la noticia origial el autor dice *nix, y parece que porque le da cosa decir Linux).

Precisamente una de las cosas que dicen es que usan la solución que les parece mejor para sus necesidades, no todo X o todo Y.

D

#25 Pues el soporte corporativo para RH o para HP-UX te cuesta más o menos lo mismo que para MS. Te lo dice alquien que trabaja con los tres y ve las facturas mensuales.

Cidwel

Es que encima se lo curran demasiado porque tienen una filosofía donde tu duda no es tuya. La convierten en comunitaria y eso implica que si hay que corregir tu propia duda para que en el futuro ayude o sea más concreta, lo hacen, aunque te pueda sonar pedante, pero hacen que tu duda no solo ayude a tu ego. Ni tampoco te permiten dar las gracias a la hora de hacer una pregunta, porque se sobreeentiende que es un foro de ayuda.

Es una arquitectura de ayuda al programador sana y bestial que se va a convertir en el referente nº1 de la programación en el futuro.

Abeel

#17 "que se va a convertir en el referente nº1 de la programación en el futuro."

¿que no lo son ya?, dime un referente más grande.

Angelusiones

Para mi StackOverflow me parece un ejemplo de mente colmena muy buena. A mi me ha servido para aprender android y que me llamen del extranjero para darme ofertas.

Creo que es el escaparate perfecto de habilidades como programador (al menos para mi) y una forma de ayudar a los demás productiva.

a

StackOverflow es la leche, es ejemplo de como hacer bien muchas cosas, el sistema de puntos que tiene es un perfecto ejemplo de como un buen sistema de reputación (o gamificación es más cool para decir lo mismo) puede servir para que una pagina de este tipo funcione, el mayor problema de las paginas de preguntas/respuestas sobre programación siempre ha sido la desproporción enorme entre la gente que pregunta y la gente que responde y la calidad de la respuestas en según que sitios, en stackOverflow hay un autentico ejercito de gente respondiendo, y no sólo eso, de gente que ayuda editando y mejorando respuestas y preguntas (por ejemplo a mi me editan muchas respuestas porque mi inglés es un poco bananero :P, y hasta para eso me ha sido util). Es habitual que si pones una pregunta sobre la librería/framework X te responda el propio autor o gente muy cercana al proyecto, no son pocos los proyectos open-source que en realidad usan stackOverflow como issue manager.

Y la recompensa son unos puntitos, y un lugar donde queda registradas tus respuestas y validadas/puntuadas por la comunidad. Junto con tu cuenta de github y linkedin son el nuevo curriculum de cualquier desarrollador.

NapalMe

Yo aprendí de una cosa llamada libros y otra llamada profesores...
Eso si, no es imprescindible pero es superútil

a

StackOverflow donde nacen los genios

Gato-Pardo

StackOverflow es como los libros de maestro del capítulo 'Separate Vocations' de los Simpsons (http://en.wikipedia.org/wiki/Separate_Vocations). El día que desaparezca todo el mundo alzará los brazos entrando en pánico y empezará a gritar '¿¡y ahora qué!?'.

arn01d

#12 Depurar "TODO" el código fuente hasta encontrar el error y/o línea causante de la interrogante. ( Aplicable sólo a proyectos Open Source )

yonni

¿¡Estamos locos o qué?!

¡SO funciona sobre Windows, MS SQL! Esto es meneame, donde Pablo Iglesias, Linus Torvalds y el pinguino de Linux son dioses.

M

#27 Windows 2012, IIS, Ms SQL, .net... ¿pero no decían que esto no servía para nada?

#44 Si tienes razón, ¿qué sabrán ellos?

D

#47
Viniendo de gente que ha trabajado en Microsoft, ¿qué esperabas?
A mí me parece una brutalidad tener 25 servidores para 560 millones de visitas mensuales en un sitio como StackOverflow. Claro que tienen que trabajar con software de Microsoft como Microsoft SQL y .NET.

Windows no da el callo y sitios como la bolsa de Londres tuvieron que cambiarse a GNU Linux.

D

cc #c-52" class="content-link" style="color: rgb(227, 86, 20)" data-toggle="popover" data-popover-type="comment" data-popover-url="/tooltip/comment/2221938/order/52">#52
Go into the IL (assembly language of .Net). Some coding is in IL, not C#. Look at SQL query plans. Take memory dumps of the web servers to see what is actually going on. Discovered, for example, a split call generated 2GB of garbage.

WTF, tienen que modificar el bytecode de .NET.

We run things on the platform they run best on. Period. C# runs best on a windows machine, we use IIS. Redis runs best on a *nix machine we use *nix.
Usan Windows e IIS porque programan con .NET.

D

#54 Igual es por el "Hardware is Cheap, Programmers are Expensive" que citan. En el mundo web es muy cierto (no en el de las aplicaciones...).

D

#54
Si el hardware fuera tan barato no irían a optimizar el bytecode de .NET ni otras tantas cosas como lo están haciendo.

D

#58 ¿Optimizan TODO o sólo partes clave?

D

#60 Ellos insinuan que todo, aunque es evidente que empezarán por lo más crítico.

D

#58 Si tienen 25 servidores casi vacíos de carga, no tienen problema con el precio del hardware. Y con los niveles de carga que tienen, poco le puede exprimir ya a cada core.

Tocan el bytecode de .Net porque el bytecode de .Net no da para más. Simplemente.

No sé lo que yo haría si en lugar de coordinar unas 200 aplicaciones empresariales, me tuviese que dedicar a una sola (bueno, más o menos) con esos niveles de exigencia. Aunque os puedo asegurar que los rendimientos que exijo a los desarrolladores no son relajados, pero perdonadme que no entre en detalles.

D

#61
Los tienen casi vacíos de carga, pero el software les da unas latencias muy elevadas y es por eso que tienen que irse hasta el lenguaje intermedio de .NET, algo que es aberrante, con tal de seguir usando tecnologías Microsoft. Por otra parte el malgasto energético es bestial. Tienes un porrón de núcleos en idle. Eso a una empresa como Google le repatearía las pelotas.

Un intérprete de Python como PyPy les podría ir igual de bien y podrían pasarse a GNU Linux, obteniendo mejor rendimiento y mejor aprovechamiento de los servidores. O incluso usar Java, con un montón de memoria claro. Si además usan virtualización como KVM, el problema de escalabilidad que dicen solucionar teniendo varios servidores con poca carga, desaparece. Aprovecharían mucho más los recursos y gastarían menos energía.

M

#52 ¿qué espero de gente de Microsoft? más objetividad que tú como así demuestran usando no sólo windows, si te has leído el artículo.

Quizás tú por un momento no seas tan bueno como te crees, estés errado y ellos te superen un poco en este tema. Porque ya estás tardando en proponerles tus ideas.

Windows no da el callo... como lo demuestra Azure que es el segundo servicio en la nube por delante de Google y el que mejor rendimiento da por encima de Amazón.

D

#75
No, ¿en serio? lol lol lol

Porque usen GNU/Linux para un servicio minoritario no les da ningún tipo de objetividad. Prueba de ello es la propia Microsoft que para sus servidores usaban GNU/Linux mientras vertían multitud de FUD en contra el software libre, FUD como el tuyo por cierto.

M

#76 ¿para qué servidores dices que usaba Linux Microsoft? ¿qué FUD fue el que hice yo?

Por contra tú te llevas la palma de la "objetividad" diciendo que Linux es "El Sistema Operativo" que vale para todo, que no carece de nada y que Ubuntu, su máximo exponente, es la solución idónea para absolutamente todos los usuarios ¿no?

En serio yo ¿qué haces que no trabajas para Google por lo menos? porque la prepotencia que gastas te da para eso y más.

D

#77
Linux es un núcleo de sistema operativo , y sí, es El Núcleo de Sistema Operativo: está en routers, teléfonos, televisiones, ordenadores, tabletas, lavadoras, neveras, coches, aviones, trenes, etcétera.

Es un sistema basado en UNIX, compatible con POSIX. Sigue un diseño extremadamente probado y estable. Microsoft para su NT Kernel tuvo que rendirse a los pies de UNIX e imitar mucha de su funcionalidad, malamente claro.

M

#78 ¿el rollo que me sueltas viene porque yo dije Linux en vez de GNU/Linux y tratas de corregirme, o viene porque técnicamente, haciendo piruetas, Microsoft usa linux porque usa routers con núcleo linux, tal y cual?

En el primer caso, no jodas.
En el segundo, no jodas pero puestos a joder, tú dijiste GNU/Linux no "muchas funcionalidades imitadas de Unix"

D

#79
Tu comentario está genialmente fuera de tema.

M

#80 Pues volvamos al tema, ¿para qué servidores dices que usaba Linux GNU/Linux Microsoft? ¿qué FUD fue el que hice yo?

D

Con CppCMS o Wt podrían servir muchas más.

D

Los fanboy de linux donde andan?

D

#50 En Top500.org

D

73
No sé dónde ves lo rompedor. Usan algo que no les conviene, que les da problemas de rendimiento. Necesitan una alta cantidad de servidores que se reparten una cantidad de visitas más bien baja.

C

#74 Lo que yo no sé es dónde ves los problemas de rendimiento. Tienen 25 servidores, ¿te parecen muchos? Cuentan que no los tienen a pleno rendimiento y que algunas cosas están sobredimensionadas. A mí sinceramente no me parece tanto.
No obstante, lo de rompedor de mitos me refería a lo de no usar TDD, no todo va a ser una guerra entre Microsoft y Linux. Ellos lo tienen muy clarito, usan lo que más le conviene.

osiris

Curioso :
Heavy usage of static classes and methods, for simplicity and better performance.

D

Seguramente consiguen casi toda esa potencia con el cache de primer nivel.

Con esto: https://www.varnish-cache.org/releases

sauron34_1

El 95% de esos 560M me lo sirven a mí lol Que haríamos sin esa gran página, cuanto dinero le deben muchas empresas y cuantos marrones nos ha solucionado!

D

Juas!
Pues no me ha salvado el culo más una vez el StackOverflow, ...
lol lol lol

D

sino fuera por esa pagina estaria en la ignorancia mas profunda.

D

Es el taller "comunista" del siglo 21 lol

D

Por cierto, stop write classes, madafacas. Q aveces por no usar una simple funcion la peña se come un quijote todos los dias.

D

"With their SQL Servers loaded with 384 GB of RAM"

Quiero uno!

a

¿usa sqlserver?

galinderooo

Stackoverflow y Github es el CV del programador.

C

Un artículo muy interesante y en cierto modo a mí me ha resultado un poco "rompedor de mitos". Tienen relativamente pocos servidores, pocos desarrolladores, soportan una gran cantidad de tráfico... y las tecnologías que usan no siempre son las que están "más de moda" por decirlo de algún modo.

odolgose

Una de las cosas más útiles de Internet. Casi al nivel de la wikipedia.