nivel empresarial edicion desarrollo arquitectura aplicaciones aplicacion frameworks

frameworks - edicion - ¿Cómo planeo una aplicación web de nivel empresarial?



java a nivel empresarial (6)

  1. Use un sistema framework / MVC. Cuanto más organizado y centralizado sea tu código, mejor.

  2. Intenta usar Memcache. PHP tiene una extensión incorporada para él, toma alrededor de diez minutos para configurar y otros veinte para poner en su aplicación. Puede almacenar en caché lo que quiera, guardo en caché todos los registros de mi base de datos para cada aplicación. Deambula.

  3. Yo recomendaría usar un sistema de control de fuente como Subversion si aún no lo está.

Estoy en un punto en mi carrera independiente donde he desarrollado varias aplicaciones web para pequeñas y medianas empresas que soportan cosas como la gestión de proyectos, reservas / reservas y gestión de correo electrónico.

Me gusta el trabajo pero descubro que, finalmente, mis aplicaciones llegan a un punto en el que la escucha es muy alta. Miro hacia atrás al código que escribí hace 6 meses y encuentro que tengo que pasar un tiempo simplemente volviendo a aprender cómo lo codifiqué originalmente antes de poder hacer una corrección o incorporar funciones adicionales. Trato de practicar el uso de frameworks (he usado Zend Framework antes, y estoy considerando Django para mi próximo proyecto)

¿Qué técnicas o estrategias usas para planear una aplicación que sea capaz de manejar a muchos usuarios sin interrumpir y mantener el código lo suficientemente limpio como para mantenerlo fácilmente? Si alguien tiene algún libro o artículo que pueda recomendar, también sería muy apreciado.


Aunque hay ciertamente buenos artículos sobre ese tema, ninguno de ellos es un sustituto de la experiencia del mundo real.

La capacidad de mantenimiento no es nada que pueda planificar en línea recta, excepto en proyectos muy pequeños. Es algo de lo que debe ocuparse durante todo el proyecto. De hecho, crear muchas clases de código de infraestructura y de antemano puede producir código que es incluso más difícil de entender que el código de spaghetti ingenuo.

Así que mi consejo es limpiar sus proyectos existentes , refactándolos continuamente. Mire las partes que fueron difíciles de cambiar, y busque soluciones más simples que sean más fáciles de entender y de ajustar. Si el código es demasiado malo para eso, considere reescribirlo desde cero.

No inicie nuevos proyectos y espere que tengan éxito, simplemente porque ha leído más artículos o ha utilizado un nuevo marco. En su lugar, identifique las fallas de sus proyectos existentes y corrija sus problemas específicos . Siempre que necesite cambiar su código, pregúntese cómo reestructurarlo para respaldar cambios similares en el futuro. Esto es lo que debe hacer de todos modos, porque habrá cambios similares en el futuro.

Al hacer esas refactorizaciones te encontrarás con varias preguntas específicas sobre las que puedes preguntar y leer artículos. De esta forma aprenderá más que solo haciendo preguntas generales y leyendo artículos generales sobre mantenimiento y marcos.

Comience a limpiar su código hoy . No lo posponga a sus proyectos futuros.

(Lo mismo ocurre con la documentación. Los primeros documentos de todo el mundo fueron muy malos. Después de varios meses resultan ser demasiado detallados y llenos de cosas sin importancia. Así que complementa la documentación con soluciones a los problemas que realmente tenías, porque las posibilidades son buenas para el próximo En el año, se enfrentará a un problema similar. Esas experiencias mejorarán su estilo de escritura más que cualquier guía de estilo de "cómo escribir bien".


Deberías considerar quizás usar SharePoint. Es un entorno que ya está diseñado para hacer todo lo que has mencionado, y tiene muchas otras características que tal vez no hayas pensado (pero tal vez necesites en el futuro :-))

Aquí hay información del sitio oficial.
Hay dos entornos de SharePoint diferentes que puede usar: Windows Sharepoint Services (WSS) o Microsoft Office Sharepoint Server (MOSS). WSS es gratuito y se envía con Windows Server 2003, mientras que MOSS no es gratuito, pero tiene muchas más características y cubre casi todas las necesidades de su empresa.


El consejo más importante que puedo dar al haber ayudado a hacer crecer una aplicación web antigua en una aplicación web de alta demanda y extremadamente alta es encapsular todo. - en particular

  1. Use buenos principios y marcos de MVC para separar su capa de vista de su lógica comercial y modelo de datos.
  2. Use una capa de persistencia sólida para no acoplar su lógica comercial a su modelo de datos
  3. Planifique la apatridia y el comportamiento asincrónico.

Aquí hay un excelente artículo sobre cómo eBay aborda estos problemas http://www.infoq.com/articles/ebay-scalability-best-practices


Para mejorar el mantenimiento, puede:

  • Si usted es el único desarrollador, adopte un estilo de codificación y apéguese a él. Eso le dará confianza más adelante al navegar a través de su propio código sobre cosas que posiblemente podría haber hecho y las cosas que definitivamente no haría. Tener confianza en dónde buscar y qué buscar y qué no buscar le ahorrará mucho tiempo.

  • Siempre tome tiempo para actualizar la documentación. Incluye la tarea en el plan de desarrollo; incluir ese tiempo en el plan como parte de cualquier cambio o nueva función.

  • Mantenga la documentación equilibrada: algunos diagramas de alto nivel, comentarios significativos. Los mejores comentarios dicen que no se pueden leer desde el código en sí. Como razones comerciales o "por qué" detrás de ciertos fragmentos de código.

  • Incluya en el plan el esfuerzo por mantener actualizada la estructura del código, los nombres de las carpetas, los espacios de nombres, los objetos, las variables y los nombres de rutina, y reflejar lo que realmente hacen. Esto contribuirá en gran medida a mejorar el mantenimiento. Siempre llame a una espada "pala". Evite grandes porciones de código, estructurelo por medios disponibles dentro del idioma de su elección, déle a los fragmentos nombres significativos.

  • Bajo acoplamiento y alta coherencia. Asegúrese de estar al día con las técnicas para lograr esto: diseño por contrato, inyección de dependencia, aspectos, patrones de diseño, etc.

  • Desde el punto de vista de la administración de tareas, debe estimar más tiempo y cobrar una tarifa más alta por trabajos no continuos. No dude en advertir al cliente de que necesita tiempo adicional para realizar pequeños cambios no continuos distribuidos en el tiempo en lugar de grandes proyectos continuos y mantenimiento continuo, ya que la administración y los gastos generales de análisis son mayores (necesita administrar y analizar cada cambio, incluido el impacto en el sistema existente por separado). Un beneficio que obtendrá su cliente es una mayor expectativa de vida del sistema. La otra es una documentación precisa que preservará su opción de buscar la ayuda de otra persona en caso de que decida hacerlo. Ambos protegen la inversión del cliente y son puntos fuertes de venta.

  • Utilice el control de fuente si no lo hace ya

  • Mantenga un registro detallado de todo lo que hace el cliente más cualquier comunicación importante (una computadora simple o un CMS en papel). Refresca tu memoria antes de cada tarea.

  • Mantenga un registro de los problemas que quedan abiertos, ideas, sugerencias por cliente; de nuevo actualice su memoria antes de comenzar una tarea.

  • Planifique con anticipación cómo se realizará el apoyo posterior a la implementación, debata con el cliente. Haga que sus sistemas sean fáciles de mantener. Planifique la parametrización, las herramientas de monitoreo, los controles de cordura en la construcción. Vender soporte post-implementación al cliente como parte del contrato inicial.

  • Expande mediante la contratación, incluso si necesitas a alguien solo para brindar soporte posterior a la implementación, haz las tareas de administración.

Lectura recomendada:


Sinceramente, recomendaría consultar los Patrones de arquitectura de aplicaciones empresariales de Martin Fowlers. Discute muchas maneras de hacer que su aplicación sea más organizada y mantenible. Además, recomendaría usar pruebas unitarias para comprender mejor tu código. El libro de Kent Beck sobre Test Driven Development es un gran recurso para aprender cómo abordar el cambio en su código a través de pruebas unitarias.