No puedo elegir entre PHP / Codeigniter, Ruby / Rails y Python / Django para el desarrollo de un portal de trabajo en línea con mucho tráfico, ¿alguien puede sugerirme qué tecnología usar?

CodeIgniter está increíblemente desactualizado en estos días después de languidecer con una compañía que no permitiría cambios de API o cualquier otra cosa que no sean cambios de BC durante varios años. Esa misma compañía esencialmente lo ha abandonado y está buscando otra compañía para adoptarlo.

Por lo tanto, CodeIgniter probablemente no sea su elección, pero hay muchas otras opciones para PHP que tienen paridad de características con Rails o Django.

Una comparación más justa sería PHP / Laravel, Ruby / Rails y Python / Django, en cuyo punto la respuesta es: no importa .

Ninguno de estos hace una diferencia real, y “tráfico pesado” es un término vago.

Si REALMENTE es un tráfico pesado, probablemente debería considerar algo como Jekyll para ayudarlo a obtener la mayor cantidad de contenido estático que pueda, o construirlo todo en C ++ o Scala, o usar lo que quiera y empujar Varnish allí, o combinarlos. Escalar es una conversación tan masiva que simplemente arrojar “tráfico pesado” al final no significa nada.

Te sugiero que uses el idioma con el que te sientas más cómodo, para que puedas hacer el trabajo.

Las diferencias en el estilo de código entre PHP y Python vs.Ruby son enormes. Si tiene que elegir uno de los tres, primero decida qué estilo de código desea escribir mejor. No hay una respuesta correcta a esto; Prefiero el primero porque aprendí en C y Java, por lo que los lenguajes después de ese estilo son más familiares e intuitivos para mí, pero Ruby es supuestamente una maravillosa experiencia de codificación también (me da un dolor de cabeza personalmente, pero eso no es un golpe contra el lenguaje , es solo que la forma en que pienso sobre el código no encaja bien con él). Esto va a importar a su productividad mucho más que su elección de marco una vez que elija un idioma.

Cuando se trata de rendimiento y escalabilidad en una aplicación web dinámica, en realidad no le irá especialmente bien con ninguno de estos. Si gran parte de su contenido se puede almacenar en caché, y usted se ingenia para aprovecharlo, es posible que pueda exprimir una gran cantidad de rendimiento de PHP o Python que se ejecuta bajo nginx (en lugar de apache). La regla general con escalabilidad y Rails es: lo escribe en Rails para ponerlo en marcha, ejecutarlo y ganar dinero lo antes posible para que pueda permitirse lanzar hardware y desarrolladores de código nativo a problemas de rendimiento.

Si va a tener un gran comportamiento dinámico en ambos lados y, por lo tanto, genera un número proporcionalmente alto de solicitudes no almacenables en caché por usuario, su escalabilidad irá al baño con cualquiera de estos marcos. Eso no quiere decir que sea un problema insuperable, pero si te haces grande rápidamente (un problema que a todos nos gustaría tener), vas a gastar mucho dinero ya sea optimizando rutinas costosas o en hardware y las dificultades de administración del sistema asociado a ello.

Si realmente desea una escalabilidad desde cero, considere NodeJS, Python / Twisted o un sistema equivalente sin bloqueo / basado en eventos en Ruby (NeverBlock, Typhoeus aparece en los resultados de búsqueda, pero no hago Ruby lo suficiente como para recomendar nada) , combinado con un esquema de base de datos que aprovecha la indexación eficiente (hadoop) y es relativamente fácil de ejecutar en paralelo. Sin embargo, va a sacrificar cierta facilidad de desarrollo para obtener esto, y puede encontrar que tiene más sentido financiero simplemente sacar su aplicación y usarla. Depende de si estás haciendo lo de los zapatos o lo de VC.

—-

En resumen, la respuesta convencional es no preocuparse por el rendimiento y elegir el idioma que le gusta escribir. Hay muy poco que decir sobre el marco A versus el marco B más allá del cual proporciona las características e interfaces específicas que prefiere, aunque Rails y NodeJS tienen ecosistemas superiores para compartir código en comparación con PHP o Python. La escalabilidad es un problema que todos quieren tener, y uno se resuelve mejor cuando se sabe que lo tiene: a menos que esté comenzando con una gran cantidad de fondos y tiempo para hacerlo “bien” la primera vez.

Es casi imposible responder esta pregunta con la información proporcionada. El “tráfico pesado” es demasiado vago. Uno podría considerar 10,000 visitas al día como “tráfico pesado”. En ese caso, todos estos lenguajes / marcos serían suficientes. Si por “tráfico pesado” te refieres a MILLONES de visitas al día … (poco probable para un portal de trabajo), realmente necesitas pensar en el desarrollo desde un enfoque completamente diferente.

Pero, hipotéticamente hablando, si sus únicas opciones fueran PHP, Ruby o Python, con esos marcos especificados, realmente se reduce a qué tipo de experiencia de programación tiene. Si tienes más experiencia en Ruby, ve con Rails. Si tienes más experiencia con Python do Django. PHP, luego CI (o Lavarel, etc.). Todos son marcos geniales y seguramente cumplirán con los requisitos de su proyecto. Sé que probablemente no ayuda mucho.

Si estuviera en su situación, elegiría PHP / Codeigniter. Soy fluido en ambos y es una configuración muy ligera / rápida. Es rápido para ponerse en marcha, ambos tienen una excelente documentación y tienen comunidades muy grandes y útiles detrás de ellos. Probablemente lo ejecutaría en Nginx (no en Apache) para mayor velocidad. Y, para algunos aspectos, podría elegir usar Node.JS + Mongo / Redis.

¿Por qué quedan Java / Spring MVC y C # / MS.NET?

Bueno, su pregunta finalmente se reduce a “Inorder para construir un buen trabajo, ¿qué herramientas debo usar?” La respuesta es inesperada (generalmente para usted). Cualquiera que sea la herramienta que use, puede producir un gran trabajo. La planificación, los pensamientos, las ideas y la materia material. Las herramientas pueden darte ventaja solo si sabes cómo usarlas bien.

Al final del día, cualquier herramienta es tan buena como el usuario. Entonces … Cualquiera de las opciones a continuación sería tan buena como la conoce. Mi pregunta para usted es qué sabe mejor:

  1. PHP / CI
  2. Rubí / Carriles
  3. Python / Django
  4. Java / Spring MVC
  5. C # / MS .NET
  6. PHP / WordPress
  7. PHP / Joomla

Todos necesitarían una buena arquitectura y personalización para mejorar la velocidad. Entonces, ¿qué configuración de servidor vas a utilizar? ¿Qué tipo de entorno es adecuado para el uso en producción? ¿Qué tipo de base de datos estás usando? ¿El rendimiento de la aplicación es óptimo en todos los niveles de N-Tier?

PHP existió por mucho tiempo antes de que apareciera Facebook. Sin embargo, nadie había podido construir una plataforma tan amplia y capaz de manejar tanto tráfico. Nadie había pensado en construirlo. Desde el primer día, fueron para servir fotos. Los guiones calientes o no existieron ayer, existen hoy. ¿Por qué no son tan populares como Facebook? Es una historia diferente que es negocios, características y seguidores.

Respuesta corta; usa lo que más te gusta y concéntrate en otras capas de la pila.

En mis años escalando sitios web, nunca he visto que el lenguaje del lado del servidor sea el cuello de botella. Sin embargo, aquí hay una breve lista de otras cosas de las que realmente tendrá que preocuparse.

  • Rendimiento de la base de datos. La gran mayoría del tiempo invertido durante una solicitud web se dedicará realmente a obtener los datos de su almacén de datos. Debe elegir uno que sea rápido y diseñar un esquema adecuado para él.
  • Caché del lado del servidor. Memoria> Disco. Si no está utilizando memcached, entonces cualquier trabajo que haya realizado para hacer que su capa de base de datos sea eficiente no tendrá valor. Rails, Django y CodeIgniter tienen bibliotecas de almacenamiento en caché que puede usar.
  • Almacenamiento. Una vez que su sitio reciba mucho tráfico, es probable que tenga muchos más usuarios que quieran publicar y cargar cosas. Necesitarás un lugar para almacenar todo esto. La migración de los almacenes de datos es uno de los problemas más complicados que he encontrado, por lo que querrá asegurarse de obtener este desde el principio. S3 es una buena opción.
  • Rendimiento de front-end. Esto puede resumirse simplemente como; usa un CDN.

Base su decisión en:

1) A quién conoces (suponiendo que no seas técnico). Si el mejor ingeniero técnico que puede convencer para trabajar con usted es un desarrollador de Python, entonces hágalo en Python.

2) Si eres técnico, con qué estás más familiarizado.

Todo lo demás es igual (eres técnico y no conoces Ruby ni Python ni PHP), elige Rails. Los recursos y la actividad de desarrollo web en el ecosistema de Ruby simplemente eclipsan a los de los otros dos ecosistemas. Para ser honesto, las tres soluciones escalan igualmente mal, pero con el almacenamiento en caché / otras soluciones, debería ser capaz de manejar una gran cantidad de tráfico. Evita PHP.

La escalabilidad es un punto discutible porque CodeIgniter / otros frameworks PHP, Django y Rails comparten características de rendimiento igualmente malas. Django supera a Rails, que supera a CodeIgniter, pero las diferencias son leves.

Echa un vistazo a un primer micro-framework API como SLIM, me encanta codeigniter, pero tengo que estar de acuerdo con Phil, está anticuado y no ayuda al desarrollador a lograr mucho (aunque su registro activo es una novedad durante el primer año, admito que es un dolor para proyectos más grandes).

Estoy un poco preocupado por el cambio en las tecnologías mencionadas, por lo que todo lo que puedo decir es que si estás aprendiendo, aprendes de algo recientemente estable (PHP5.3-5.4) y mantienes un concepto que te resulta fácil de concebir. Me gustan los frameworks, hacen la vida más fácil, pero debes tener en cuenta que PHP probablemente no sea la tecnología más escalable. Puede encontrar muchos recursos sobre el uso de PHP con HIPHOP kaerast / slim.hdf (enrutamiento) de acuerdo con Wow HHVM es rápido … lástima que no ejecute mi código El 99% de las pruebas unitarias pasan usando HHVM para ejecutar el marco SLIM.

También para la creación de prototipos, el emparejamiento con idiorm y paris (100% de compatibilidad con HHVM según Wow HHVM es rápido … lástima que no ejecute mi código. Entonces, si lo desea, puede lograr la mayor parte de la facilidad de CI mientras usa SLIM, incluyendo la funcionalidad del controlador REST’ful de Phil, y mi propio github tiene una clase de vista probada similar a las PHPBaseClasses de CI (que siempre he apreciado)

Las diferencias en el estilo de código entre PHP y Python vs.Ruby son enormes. Si tiene que elegir uno de los tres, primero decida qué estilo de código desea escribir mejor.

Esto es tan cierto que la gente pierde mucho tiempo hablando de comparaciones de marcos. Es Rails más rápido que Django, es Codeignter más escalable que ASP MVC. La cuestión es que si eres más fluido en Python que Ruby o prefieres la sintaxis de PHP sobre Python, entonces puedes compensar las deficiencias con tu conocimiento y velocidad de desarrollo en el lenguaje.

Por lo tanto, elija el idioma que prefiera, pruebe uno o dos marcos en ese idioma y elija el que más le convenga.

Ruby tiene una estructura de código clara que PhP y requiere menos código que PhP, mientras que PhP tarda menos tiempo en ejecutar el código en comparación con Ruby. Probar módulos es un poco más fácil en Ruby que en PhP. Ambos idiomas tienen un buen soporte de marco. Depende de usted, en qué idioma se siente cómodo. Sugeriría ir a Ruby on Rails … puede leer más aquí Ruby on Rails vs. Otros idiomas

Elija su marco no solo para sus aplicaciones, sino más importante aún para su equipo … tengo muy mala experiencia cuando decido usar CodeIgniter como nuestro marco, es como trabajar solo con php puro en lugar de un marco …

elija un marco que tenga reglas estrictas, como CakePHP, Symfony, Zend o Yii, no elija un marco debido al rendimiento de “Hello World”, elíjalo en función de su arquitectura, es más importante para el desarrollo

Como otros han sugerido, PHP / Codeigniter ya no se mantiene, por lo que no sirve de nada.

En cuanto a cuál elegir, hay dos grandes factores:

  • ¿Con qué idioma estás más familiarizado?
  • ¿Qué apoya tu anfitrión

Si estos dos no importan (no conoce ninguno, o está familiarizado con todos, y su host lo admite todo), sugeriría encarecidamente Django. Django es rápido, escala increíblemente bien con el tráfico, admite muchos DB diferentes, fácil de instalar, fácil y rápido de construir, las bibliotecas de Python son infinitas y Python se puede compilar en casi cualquier idioma (con diferentes compiladores).

Si realiza algunas búsquedas rápidas en línea, verá que hay ejemplos de sitios grandes que se ejecutan en cada una de esas plataformas. Más que la pila de tecnología en sí, siempre que exista una arquitectura sólida, cualquiera de esas plataformas funcionará. Diré que con una advertencia, posiblemente CI tendrá menos ejemplos que las otras dos plataformas.

Si no tiene experiencia con ninguno de ellos, tal vez comience con http://todomvc.com/ como una aplicación de ejemplo para construir

Sinceramente recomendaría usar PHP, y más específicamente Symfony2.

Es el marco más estable de todos en el mundo PHP.
Lo estamos utilizando desde que se lanzó en versión alfa (desde hace 2 años) y está bastante probado.
El tráfico de nuestro sitio web es enorme, y no hemos tenido problemas con la velocidad o la escala. El truco es sintonizarlo adecuadamente y diseñarlo para que pueda escalar sin dolor.

He experimentado problemas al escalar aplicaciones Ruby / Python de gran tamaño, por eso no recomendaría elegirlas para grandes sitios web públicos. Ruby es especialmente bueno para la creación rápida de prototipos, y ambos encajarían en cualquier sitio web de tamaño medio.

Como mencionas “tráfico pesado” en tu pregunta, mi elección basada en experiencias previas sin duda te referiría a una solución @ PHP / Symfony2.

Por mucho que disfruté usando CodeIgniter, recientemente me encontré con Yii para PHP, que es mucho más moderno y capaz de desarrollar aplicaciones rápidamente. También he escuchado cosas excelentes sobre Laravel, pero aún no lo he usado (es el siguiente en mi lista). Symfony está bien considerado para sistemas más grandes. Para un hilo de comparación entre CI e Yii, vea ¿Cuál es mejor: Codeigniter o Yii? ¿Por qué?

Codeigniter es de la vieja escuela, realmente no se ha movido con el tiempo.

Si te sientes cómodo con PHP, prueba el framework YII o Zend.

Para solucionar el problema del “tráfico pesado”, nginx o desaparecerá el caché hará el trabajo.

Estoy de acuerdo en que el marco o cualquiera de los idiomas sugeridos marcaría una gran diferencia en el manejo de la carga. También sugeriría investigar e invertir en tecnologías y mecanismos de almacenamiento en caché, como el caché de barniz ya mencionado, memcache, redis, etc. En muchas ocasiones, el verdadero cuello de botella es la base de datos y la forma en que su aplicación está optimizada para manejar el acceso / consultas db, no la aplicación en sí, así que tenga cuidado de cómo implementar su db i / o. Memcache (d) y redis pueden ayudarlo a minimizar el acceso a db, mientras que otras tecnologías como las bases de datos NoSQL (es decir, couchdb o mongodb) pueden brindarle un mejor rendimiento de velocidad que las bases de datos relacionales racionales como mysql, con el precio de una menor funcionalidad y la falta de muchas características que la base de datos relacional tiene para ofrecer.

Si decidió usar PHP, sugiero usar Laravel Framework en lugar de Codeigniter.

La razón es que Codeigniter está desactualizado y no es adecuado para grandes proyectos. Por otro lado, Laravel es un marco basado en Symfony, por lo que tiene muchas de sus características y estructura, pero con menos curva de aprendizaje.

También es escalable y está bien diseñado, por lo que puede usarse para organizar su código y mejorarlo rápidamente.

En conclusión, depende de sus necesidades y de cuán grande sea su proyecto, pero si me pregunta cuál es mejor, Codeigniter o Laravel, definitivamente iré con Laravel.

Los mejores deseos hombre.

Sí, puedo sugerirle que use Phalcon. Estaba planeando estudiar Laravel, pero descubrí Phalcon hace dos semanas y sé que quiero probarlo primero.

Phalcon es un microframework pero no es como cualquier otro framework como laravel, cakephp, codeignited, yii o zend. Fue construido como una extensión C para PHP.

Esa es la razón por la cual Phalcon es mega rápido.

Si decide utilizar PHP no utilizar codeigniter como marco, ha expuesto las razones anteriores. Sugiero KumbiaPHP Framework, rápido, flexible y robusto, hay un ejemplo:

http://empleate.com es una de las oportunidades laborales más importantes en la región latinoamericana. Realizaron un portal de renovación con KumbiaPHP como herramienta de desarrollo, obteniendo resultados importantes.

¡Saludos!

Iría con una pila `mean` en ese tipo de aplicación. NodeJS con un DB NoSQL
Si debe usar uno de los 3 que mencionó. CI es antiguo, Laravel es la nueva moda. Si puedes codificar en los 3 idiomas, elige el que conoces y te gusta más, todos son probados en batalla