Orientación sobre como hacer una aplicación web

Spacelord

Buenas, me han propuesto un proyecto y quisiera algo de orientación al respecto.

La cosa va de conectividad con BBDD a través de formularios de una página web. Es mucho más complejo que todo eso, claro, es sólo un resumen. La funcionalidad básica sería esa, pero interesan aspectos como el rendimiento, la escalabilidad, la seguridad, etc. El proyecto básico es sencillo, pero es fundamental que se pueda escalar a un volumen de transacciones importante y a un número elevado de usuarios activos (que no concurrentes). Vamos, que si fuera para quince usuarios ni lo preguntaría, pero estamos hablando de acceso a tablas con quince o veinte mil registros como mínimo y de cuatrocientos o quinientos usuarios con acceso a la BBDD. También me interesan cosas como poder exportar datos en PDF y pijadas de usabilidad de ese estilo, pero es lo de menos.

Ya sabeis: creación de formularios (y elementos dentro de éstos: botones, checkboxes, textfields, etc), menús, cuadros de diálogo, etc.

No sé si debería usar PHP, Python, Jacascript, etc. Soy un n00b total en este tipo de desarrollos. Si fuera sobre escritorio no tendría problema, lo hago en Java y fuera, pero al tener que hacerlo para que funcione en cualquier navegador, simplemente con acceder a una url, pues ya se sale de mi campo de conocimientos.

Gracias.

P.D.: imagino que con una BBDD SQL no tendré problemas de rendimiento hasta alcanzar un volumen de tabas y de usuarios importante, ¿verdad? ¿Qué limitaciones de capacidad y rendimiento tiene ese sistema?

zoeshadow

Creo que con esos números no vas a tener que preocuparte por temas de rendimiento.

Sobre que usar, si no tienes mucha experiencia te recomiendo PHP ( LAMP ) ya que te vas a quitar muchos problemas a la hora de desplegar y tienes mucha info en internet.

Con Java tambien puedes hacer cosas para la web ( de hecho se suele usar mas para eso ) y si tienes que poner tu el servidor no te debe de costar mucho montar un Tomcat y usar Spring para hacer tu aplicación web, aun asi lo veo mas complicado que PHP.

A nivel de seguridad, lo mejor que puedes hacer es usar un framework que te quite la mayor parte de las tareas de seguridad y leer por internet los conceptos básicos de seguridad web ( inyección de SQL, cookie spoofing, https )

13500

PHP + MySQL

Crea un MVC separando los archivos .php en 3 capas (Vista -> Controladores -> Modelo ó Persistencia)
y resuelto.

Para tema de seguridad de passwords -> http://webcheatsheet.com/php/md5_encrypt_passwords.php
Para exportar datos en PDF, librerias PHP -> http://www.fpdf.org/

Y luego Javascript/Jquery para pijadas en la web, como animaciones, menús dinámicos, que se refresque parte de la web sin recargarla entera, etc...

1 respuesta
Nucklear

#3 Como puntualización decir que cifrar en md5 a dia de hoy es una medida de seguridad muy baja y es facilmente crackeable ya sea mediante diccionarios o fuerza bruta.

Lo ideal es utilizar hmac en combinación con un salt aleatorio que se almacene en la DB junto con el password generando el hash de la siguiente manera:

hash_hmac ( sha1 , $mi_password_seguro+$salt , $mi_clave_secreta )

1- La estructura sería sha1, algoritmo razonablemente fuerte a la vez que rápido, podrías utilizar un cifrado mas fuerte pero se resentiría el rendimiento si tienes muchos usuarios.

2- El password del usuario al que se concatena un salt, p.e. M3d1@v1d4+E234R

3- La clave secreta interna de la aplicación L@C14v€53cR3ta_d3_TuApp

Con este sistema un atacante que robe los hashes de la base de datos tendrá muy dificil crackearlos sin conocer la clave interna de la aplicación y un ataque de fuerza bruta duraría un tiempo no asumible para lograrlo.

#1 Si estas muy perdido en desarrollo web te recomiendo hacer el curso de Udacity sobre desarrollo web que aunque utilice Python y Google App Engine te va a aclarar todas esas dudas que tienes ademas de tener una curva de aprendizaje muy progresiva.

https://www.udacity.com/course/cs253

1
kraneok

¿ Te encargan un proyecto web sin tener ni idea ?, interesante xD.

2 1 respuesta
B

Consejo al populacho: No os metais más comida en la boca de la que os cabe. Dicho esto, esas cifras son bajísimas y las maneja hasta un mysql con la configuración por defecto.

2
Spacelord

#5 La cuarta palabra del OP es "propuesto". No "encargado". Tampoco digo que no tenga ni idea (de hecho, sí la tengo), lo que digo es que nunca he hecho un desarrollo como este en un soporte web en lugar de escritorio. Por eso el hilo se titula "orientación" y no "ayuda desesperada". XDDD

Al final estoy dudando entre Spring y Django, tengo que verlos mejor para saber si puedo hacer con ellos todo lo que necesito hacer para el proyecto. Pero, por el momento, Spring va ganando. PHP nunca me ha gustado (manías personales), así que descarto Symfony.

¡Gracias a todos por las sugerencias!

PiradoIV

Si dispones de un servidor para instalar tu aplicación, tira de lo que quieras, pero si vas a pillar el típico hosting compartido, lo más barato seguramente sea PHP.

Y lo que te han dicho arriba, esas cifras son de risa.

1 respuesta
Spacelord

#8 En principio es servidor propio. Más que nada porque el grado de control que quiere esta gente sobre la aplicación ya descarta un hosting barato de 1and1, para entendernos. Así que teóricamente no tendría problemas en instalar lo que necesitara.

Imagino que el tema de backups y tal lo llevarán ellos.

Usuarios habituales