Búsqueda del framework ideal de framework

1,391 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,391
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
28
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Búsqueda del framework ideal de framework

  1. 1. Búsqueda del frameworkBúsqueda del framework ideal de PHPideal de PHP 1er Encuentro de Software Libre del Ecuador Yonel Meza Avila y@doknos.com
  2. 2. • Para el desarrollador: • Arquitectura adecuada • Facilidad para realizar cambios (módulos y look&feel) • Velocidad de desarrollo • Fácil depuración • Para el rendimiento del sistema: • Bajo tiempo de ejecución • Baja cantidad de memoria utilizada ¿Qué estamos buscando? D R A V C D T M
  3. 3. Historia CakePHP Symfony Zend Framework Patrón de diseño MVC MVC MVC (por elección) 1era versión 2005 (Michal Tatarynowicz) 2005 (Fabien Potencier) 2006 (Zend ?) Origen USA Francia USA Licencia MIT MIT BSD Estable actual 1.3.5 1.4.8 1.10.8
  4. 4. ¿De qué disponemos? CakePHP Symfony Zend Framework Manejo AJAX Prototype y Script.aculo.us JQuery Dojo ORM Propio (Patrón Data Mapper) Doctrine(*) y Propel No (Table and Row data gateway) Pruebas Sí Sí Sí Cache Sí Sí Sí Versión del PHP 5 y 4 5 5 i18n y L10n Sí Sí Sí
  5. 5. ¿Qué más tenemos? ● CakePHP: ● Pocas funcionalidades integradas en el core ● Pocos plugins en la comunidad ● Symfony: ● Cantidad media de funcionalidades en el core (por encima de lo mínimo necesario) ● Gran cantidad de plugins en la comunidad ● Zend: ● Gran cantidad de funcionalidades en el core (a veces más de las deseadas) ● Poca cantidad de plugins en la comunidad
  6. 6. ¿Cómo organizamos nuestro código? ControladorControlador VistaVista ModeloModelo Cliente Petición Resultado Lectura Escritura Lectura Envío de información Directa Indirecta (Patrón observador) D A
  7. 7. CakePHP: Modelos Symfony: Objeto, tabla ZF: definido por el desarrollador CakePHP: Modelos Symfony: Objeto, tabla ZF: definido por el desarrollador VISTA CONTROLADOR MODELO Layout, template, helpers CakePHP: Elements Symfony: Partials ZF: Partials CakePHP: Elements Symfony: Partials ZF: Partials CakePHP: No tiene Symfony: Components ZF: Actions CakePHP: No tiene Symfony: Components ZF: Actions CakePHP: No tiene Symfony: Slots ZF: Placeholders CakePHP: No tiene Symfony: Slots ZF: Placeholders CakePHP: Métodos Symfony: Actions ZF: Actions CakePHP: Métodos Symfony: Actions ZF: Actions CakePHP: No tiene Symfony: Components ZF: Actions CakePHP: No tiene Symfony: Components ZF: Actions ¿Qué posibilidades tenemos? D A C
  8. 8. CakePHP: Modelos Symfony: Objeto, tabla ZF: definido por el desarrollador CakePHP: Modelos Symfony: Objeto, tabla ZF: definido por el desarrollador VISTA CONTROLADOR MODELO Layout, template, helpers CakePHP: Elements Symfony: Partials ZF: Partials CakePHP: Elements Symfony: Partials ZF: Partials CakePHP: No tiene Symfony: Components ZF: Actions CakePHP: No tiene Symfony: Components ZF: Actions CakePHP: No tiene Symfony: Slots ZF: Placeholders CakePHP: No tiene Symfony: Slots ZF: Placeholders CakePHP: Métodos Symfony: Actions ZF: Actions CakePHP: Métodos Symfony: Actions ZF: Actions CakePHP: No tiene Symfony: Components ZF: Actions CakePHP: No tiene Symfony: Components ZF: Actions Layouts Layout + template template Layout Página Final = D A C
  9. 9. CakePHP: Modelos Symfony: Objeto, tabla ZF: definido por el desarrollador CakePHP: Modelos Symfony: Objeto, tabla ZF: definido por el desarrollador VISTA CONTROLADOR MODELO Layout, template, helpers CakePHP: Elements Symfony: Partials ZF: Partials CakePHP: Elements Symfony: Partials ZF: Partials CakePHP: No tiene Symfony: Components ZF: Actions CakePHP: No tiene Symfony: Components ZF: Actions CakePHP: No tiene Symfony: Slots ZF: Placeholders CakePHP: No tiene Symfony: Slots ZF: Placeholders CakePHP: Métodos Symfony: Actions ZF: Actions CakePHP: Métodos Symfony: Actions ZF: Actions CakePHP: No tiene Symfony: Components ZF: Actions CakePHP: No tiene Symfony: Components ZF: Actions D A C ¿Qué posibilidades tenemos?
  10. 10. CakePHP: Modelos Symfony: Objeto, tabla ZF: definido por el desarrollador CakePHP: Modelos Symfony: Objeto, tabla ZF: definido por el desarrollador VISTA CONTROLADOR MODELO Layout, template, helpers CakePHP: Elements Symfony: Partials ZF: Partials CakePHP: Elements Symfony: Partials ZF: Partials CakePHP: No tiene Symfony: Components ZF: Actions CakePHP: No tiene Symfony: Components ZF: Actions CakePHP: No tiene Symfony: Slots ZF: Placeholders CakePHP: No tiene Symfony: Slots ZF: Placeholders CakePHP: Métodos Symfony: Actions ZF: Actions CakePHP: Métodos Symfony: Actions ZF: Actions CakePHP: No tiene Symfony: Components ZF: Actions CakePHP: No tiene Symfony: Components ZF: Actions Parte inteligente en las vistas Template Sf: Components Zf: Actions Lógica Presentación (Partials) D A C
  11. 11. CakePHP: Modelos Symfony: Objeto, tabla ZF: definido por el desarrollador CakePHP: Modelos Symfony: Objeto, tabla ZF: definido por el desarrollador VISTA CONTROLADOR MODELO Layout, template, helpers CakePHP: Elements Symfony: Partials ZF: Partials CakePHP: Elements Symfony: Partials ZF: Partials CakePHP: No tiene Symfony: Components ZF: Actions CakePHP: No tiene Symfony: Components ZF: Actions CakePHP: No tiene Symfony: Slots ZF: Placeholders CakePHP: No tiene Symfony: Slots ZF: Placeholders CakePHP: Métodos Symfony: Actions ZF: Actions CakePHP: Métodos Symfony: Actions ZF: Actions CakePHP: No tiene Symfony: Components ZF: Actions CakePHP: No tiene Symfony: Components ZF: Actions D A C ¿Qué posibilidades tenemos?
  12. 12. CakePHP: Modelos Symfony: Objeto, tabla ZF: definido por el desarrollador CakePHP: Modelos Symfony: Objeto, tabla ZF: definido por el desarrollador VISTA CONTROLADOR MODELO Layout, template, helpers CakePHP: Elements Symfony: Partials ZF: Partials CakePHP: Elements Symfony: Partials ZF: Partials CakePHP: No tiene Symfony: Components ZF: Actions CakePHP: No tiene Symfony: Components ZF: Actions CakePHP: No tiene Symfony: Slots ZF: Placeholders CakePHP: No tiene Symfony: Slots ZF: Placeholders CakePHP: Métodos Symfony: Actions ZF: Actions CakePHP: Métodos Symfony: Actions ZF: Actions CakePHP: No tiene Symfony: Components ZF: Actions CakePHP: No tiene Symfony: Components ZF: Actions Posición de los bloques variables Template + Layout =Slot 1 (PH) Slot 2 (PH) Template Slot 2 Slot1 Layout Template Slot 2 Slot1 D A C
  13. 13. ¿Qué necesitamos para crear un modelo? ● CakePHP: Poco ● Creación de archivos,configuración de los los modelos, relaciones. ● Symfony: Nada ● Solo comando en una terminal, configuraciones pequeñas ● Zend Framework: Mucho ● Creación de archivos, configuración de los los modelos, relaciones, implementación de métodos de escritura, lectura, actualizaciones, etc. D V
  14. 14. ● CakePHP: Scaffolds ● Fáciles de crear, poco personalizables ● Symfony: Admin ● Fáciles de crear, completamente personalizables, incluyen filtros de datos ● Zend Framework: Ninguna ¿Necesitamos interfaces de administración? D V
  15. 15. ● CakePHP: Poco ● Solo sentencias SQL ejecutadas a través de los modelos ● Symfony: Completo ● posee un barra de información completa: configuración de la aplicación, módulos de la vista ejecutados, sentencias SQL ejecutadas a través de los modelos y logs, memoria y tiempo utilizados en la corrida ● Zend Framework: Mínimo ● solo modificación al formato de var_dump Y si tenemos errores D D
  16. 16. ● Tiempo de ejecución ● Internas ● Externas (Apache JMeter) ● Memoria utilizada ● Internas ¿Qué pruebas se realizaron? R T M
  17. 17. ● Máquina host: ● Intel i5 M430 2.27 Ghz ● Memoria 4GB DDR3 1067MHz ● HD SATA II 5400 rpm ● Maquina virtual – 2 CPUs – Memoria 1GB – Debian Lenny ¿En qué se realizaron? R T M
  18. 18. ● 3 módulos: ● Principal: mínimo procesamiento ● Módulo albums: búsqueda en una sola tabla e impresión paginada ● Módulo songs: búsqueda en dos tablas relacionadas e impresión paginada ¿De qué se trata la aplicación? R T M
  19. 19. ¿Podemos medir tiempo de proceso? R T Cargar configuracionesCargar configuraciones DespachadorDespachador Censo de tiempoCenso de tiempo Censo de tiempoCenso de tiempo Controlador principal (index.php en raíz de la app) Impresión de diferenciaImpresión de diferencia Cliente (Petición) Cliente (Respuesta)
  20. 20. Home page Albums Songs TOTAL 0 50 100 150 200 250 Tiempo de proceso cf sf zf ms ¿Qué obtuvimos en las pruebas internas? R T
  21. 21. ¿De qué otra forma se podría medir el tiempo? Apache JMeter es una aplicación Open Source, desarrollada en Java y diseñada para realizar pruebas funcionales y de rendimiento a diferentes tipos de aplicaciones. Pruebas realizadas: ● 1 usuario, múltiples peticiones consecutivas ● 10 usuarios simultáneos, múltiples peticiones consecutivas R T
  22. 22. Home Albums Songs Total 0 50 100 150 200 250 Tiempo de respuesta cf sf zf ms R T ¿Qué obtuvimos en las pruebas externas? (1 usuario)
  23. 23. Home Albums Songs Total 0.00 1.00 2.00 3.00 4.00 5.00 6.00 7.00 8.00 9.00 Rendimiento (peticiones por segundo) cf sf zf r/s R T ¿Qué obtuvimos en las pruebas externas? (1 usuario)
  24. 24. Home Albums Songs Total 0 200 400 600 800 1000 1200 Tiempo de respuesta cf sf zf ms R T ¿Qué obtuvimos en las pruebas externas? (10 usuarios)
  25. 25. Home Albums Songs Total 0.00 2.00 4.00 6.00 8.00 10.00 12.00 14.00 16.00 Rendimiento (peticiones por segundo) cf sf zf r/s R T ¿Qué obtuvimos en las pruebas externas? (10 usuario)
  26. 26. ¿Cuánto consume mi aplicación? R M Cargar configuracionesCargar configuraciones DespachadorDespachador Controlador principal (index.php en raíz de la app) Impresión del máximoImpresión del máximo Cliente (Petición) Cliente (Respuesta) Censo de memoriaCenso de memoria
  27. 27. ¿Qué obtuvimos? Home page Albums Songs 0 2000 4000 6000 8000 10000 12000 Consumo de memoria (memory_get_peak_usage) cf sf zf kB R M
  28. 28. ¿Quién ganó? • Para el desarrollador: • Arquitectura adecuada • Facilidad para realizar cambios (módulos y look&feel) • Velocidad de desarrollo • Fácil depuración • Para el rendimiento del sistema: • Bajo tiempo de ejecución • Baja cantidad de memoria utilizada
  29. 29. ¿Dónde podemos encontrar información? ● CakePHP: ● www.cakephp.org ● www.cakedc.com ● Symfony: ● www.symfony-project.org ● Zend Framework: ● framework.zend.com
  30. 30. Búsqueda del frameworkBúsqueda del framework ideal de PHPideal de PHP ¡Gracias por su atención! 1er Encuentro de Software Libre del Ecuador Yonel Meza Avila y@doknos.com www.doknos.com

×