Mejor Framework PythonOO + SOLID -...
Transcript of Mejor Framework PythonOO + SOLID -...
![Page 1: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/1.jpg)
Mejor FrameworkPythonOO + SOLID
Vivir sin Frameworks
![Page 2: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/2.jpg)
Presentaciones
![Page 3: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/3.jpg)
Alea Soluciones Bifer Team
![Page 4: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/4.jpg)
@eferro@pasku1 @apa42
@nestorsalceda
![Page 5: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/5.jpg)
Un placer...
![Page 6: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/6.jpg)
¿Qué es un framework?
Django
Rails
Grails
Spring
AppEngine
Zope/Plone
![Page 7: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/7.jpg)
¿Qué ventajas nos aporta?
Aporta UNA solución (única)
Estructura tu aplicación
![Page 8: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/8.jpg)
¿Qué inconvenientes tiene?
Crea GRAN dependencia
Limita flexibilidad negocio
Obsolescencia / Moda ???
![Page 9: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/9.jpg)
![Page 10: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/10.jpg)
Desarrollo ÁgilCrecimiento Orgánico
Arquitectura Emergente
![Page 11: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/11.jpg)
![Page 12: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/12.jpg)
![Page 13: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/13.jpg)
![Page 14: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/14.jpg)
Lo único seguroTodo Cambia / Evoluciona
![Page 15: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/15.jpg)
Existe una alternativa
![Page 16: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/16.jpg)
Centrarnos en el Negocioy
Desarrollo ágil / evolutivo
![Page 17: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/17.jpg)
Poder postponer decisiones
![Page 18: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/18.jpg)
Tomar decisiones conscientemente
![Page 19: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/19.jpg)
![Page 20: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/20.jpg)
![Page 21: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/21.jpg)
![Page 22: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/22.jpg)
¿Cómo desarrollamos negocio?DDD Domain Driven Design
Clean Code / S.O.L.I.D
TDD Test Driven Development
![Page 23: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/23.jpg)
Pure Object Oriented Python
Independiente de IO (No net, No BD, No files, …)
![Page 24: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/24.jpg)
![Page 25: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/25.jpg)
¿Cómo hacemos el resto?
![Page 26: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/26.jpg)
![Page 27: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/27.jpg)
![Page 28: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/28.jpg)
![Page 29: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/29.jpg)
![Page 30: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/30.jpg)
Infraestructura y EntregaUsamos las abstracciones sobre libs
Clean Code / S.O.L.I.D
TDD Test Driven Development
![Page 31: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/31.jpg)
Conclusiones
![Page 32: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/32.jpg)
• Los frameworks son una decisión muy importante
• Las decisiones tienen que ser conscientes
![Page 33: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/33.jpg)
• Hacer un sistema que evolucione con las necesidades del cliente• Postponer decisiones
• Aplicar distintas soluciones técnicas
Nuestra forma de trabajo y arquitectura debe permitirnos:
![Page 34: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/34.jpg)
Que permiten centrarse en negocioQue facilitan el desarrollo ágilQue evolucionan a largo plazo
Que evolucionan a buena velocidad
Existen alternativas (Reales)
![Page 35: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/35.jpg)
![Page 36: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/36.jpg)
Referencias
DDD
http://en.wikipedia.org/wiki/Behavior-driven_development
TDD
http://en.wikipedia.org/wiki/Test-driven_development
Hexagonal Architecture
http://alistair.cockburn.us/Hexagonal+architecture
Clean Architecture
http://blog.8thlight.com/uncle-bob/2012/08/13/the-clean-architecture.html
![Page 37: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/37.jpg)
![Page 38: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/38.jpg)
Gracias !!!
![Page 39: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/39.jpg)
Mejor FrameworkPythonOO + SOLID
Vivir sin Frameworks
![Page 40: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/40.jpg)
Presentaciones
![Page 41: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/41.jpg)
Alea Soluciones Bifer Team
Hacemos productoTelecomunicacionesSistemas + SoftwareExtreme ProgrammingAportamos valor
![Page 42: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/42.jpg)
@eferro@pasku1 @apa42
@nestorsalceda
![Page 43: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/43.jpg)
Un placer...
![Page 44: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/44.jpg)
¿Qué es un framework?
Django
Rails
Grails
Spring
AppEngine
Zope/Plone
Framework (tal y como lo entendemos)- Intenta solucionar un problema concreto: - el problema que tenia el que lo creo - No hay dos problemas iguales - los problemas crecen (o por lo menos cambian)- Llama a tu código- Te hace depender de él (tanto como pueda) (herencia, callbacks, estructura fuentes, tipo de BD)- Estructura tu aplicación- Define una forma de desarrollar / testear- Aporta muchas soluciones prehechas
La mayor parte se centra en:Aplicaciones centradas en datos con interface usuario Web
El framework te suele “empujar” a usarlo de cierta forma
![Page 45: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/45.jpg)
¿Qué ventajas nos aporta?
Aporta UNA solución (única)
Estructura tu aplicación
VentajasNo necestias pensar demasiado inicialmenteAl principio pareces ir muy rápido
![Page 46: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/46.jpg)
¿Qué inconvenientes tiene?
Crea GRAN dependencia
Limita flexibilidad negocio
Obsolescencia / Moda ???
DesventajasVendes tu “alma”Te terminas centrandote en la solución técnica en vez de en el negocio del clientePierdes flexibilidad
![Page 47: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/47.jpg)
Decisiones técnicas siempre son TradeOffsCorto plazo vs Largo plazoFlexibilidad vs Dirección marcadaCentrarse en tecnologia vs Centrarse en negocioCrecimiento organico/evolutivo vs Desarrollo en Fases/Implantación
Usar un framework es un GRAN trade-off
El Cliente te paga por solucionar SU problema (Negocio / Dominio …) no por usar un framework (aunque esté de moda)
![Page 48: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/48.jpg)
Desarrollo ÁgilCrecimiento Orgánico
Arquitectura Emergente
![Page 49: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/49.jpg)
La evolución es:Sabemos muy pocoDesarrollamos lo mínimo posible / DesplegamosConseguimos feedbackRepetimos
![Page 50: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/50.jpg)
Nuestros conocimientos de negocio creceLas funcionalidades se acumulanEl necesidades cambian
![Page 51: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/51.jpg)
Al principio del proyecto no sabemos nada. Cómo coño elegimos el Framework !!!
Lo eliges porque:es lo que conoces???está de moda???
Si inicialmente no tenemos conocimiento de negocioCómo vamos a saber lo que necesitamos técnicamente ?Cómo va a saber el creador de framework lo que necesitamos ?Nos va a aportar productividad o va a secuestrar la evolución futura ?
Somos conscientes del compromiso que es usar un framework?
![Page 52: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/52.jpg)
Lo único seguroTodo Cambia / Evoluciona
![Page 53: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/53.jpg)
Existe una alternativa
![Page 54: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/54.jpg)
Centrarnos en el Negocioy
Desarrollo ágil / evolutivo
![Page 55: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/55.jpg)
Poder postponer decisiones
![Page 56: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/56.jpg)
Tomar decisiones conscientemente
![Page 57: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/57.jpg)
Un sistema está compuesto por subsistemas (excepto si es trivial)Diferentes subsistemas NO es diferentes módulos usando el mismo esquema de BD y compartiendo los datos
![Page 58: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/58.jpg)
ObjetivoCiclo desarrollo / release / feedback muy rápidoCada implementación debe ser mínimaFlexible Para que no cueste cambiar decisiones técnicasPara adaptarnos a Cualquier requisito
![Page 59: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/59.jpg)
Cada subsistema lo desarrollamos con este esquemaNos centramos en Dominio de cliente / Lógica de Negocio
Arquitectura LimpiasDesacopladaDelivery
![Page 60: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/60.jpg)
¿Cómo desarrollamos negocio?DDD Domain Driven Design
Clean Code / S.O.L.I.D
TDD Test Driven Development
![Page 61: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/61.jpg)
Pure Object Oriented Python
Independiente de IO (No net, No BD, No files, …)
Ese código:Es independiente de IO (No net, No BD, No files, …)Puede depender de abstracciones (Cliente rest, Persistencia agregado, ….)
![Page 62: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/62.jpg)
Velocidad desarrollo buenaReusabilidad buenaValor (desde el punto de vista del cliente) buena
Esto es por lo que nos pagan
![Page 63: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/63.jpg)
¿Cómo hacemos el resto?
![Page 64: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/64.jpg)
y el resto de código, el que se integra con el mundo exterior, el que permite comunicarse, el que permite persistir….Para ese código…
Reinventamos la rueda ????
![Page 65: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/65.jpg)
Ni de coña
![Page 66: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/66.jpg)
Usamos librerías… Muchas
![Page 67: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/67.jpg)
Cada librería la integramosCreando una abstracción de la parte que vamos a usar (que será lo mínimo posible)La parte de negocio usa esta abstracción (nunca la librería)Creamos un test de contrato para la parte que usamos (verificamos que podemos enviar un mensaje, escribir una tabla o lo que sea)
![Page 68: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/68.jpg)
Infraestructura y EntregaUsamos las abstracciones sobre libs
Clean Code / S.O.L.I.D
TDD Test Driven Development
![Page 69: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/69.jpg)
Conclusiones
![Page 70: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/70.jpg)
• Los frameworks son una decisión muy importante
• Las decisiones tienen que ser conscientes
![Page 71: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/71.jpg)
• Hacer un sistema que evolucione con las necesidades del cliente• Postponer decisiones
• Aplicar distintas soluciones técnicas
Nuestra forma de trabajo y arquitectura debe permitirnos:
Aplicar distintas soluciones técnicas (según se vayan necesitando, nunca antes)
![Page 72: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/72.jpg)
Que permiten centrarse en negocioQue facilitan el desarrollo ágilQue evolucionan a largo plazo
Que evolucionan a buena velocidad
Existen alternativas (Reales)
Aplicar distintas soluciones técnicas (según se vayan necesitando, nunca antes)
![Page 73: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/73.jpg)
Desarrollar en Python OO (Puro) es sencillo y divertido
![Page 74: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/74.jpg)
Referencias
DDD
http://en.wikipedia.org/wiki/Behavior-driven_development
TDD
http://en.wikipedia.org/wiki/Test-driven_development
Hexagonal Architecture
http://alistair.cockburn.us/Hexagonal+architecture
Clean Architecture
http://blog.8thlight.com/uncle-bob/2012/08/13/the-clean-architecture.html
![Page 75: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/75.jpg)
![Page 76: Mejor Framework PythonOO + SOLID - PyCon2013.es.pycon.org/media/mejor-framework-pythonoo-solid.pdf · Arquitectura Emergente. La evolución es: Sabemos muy poco Desarrollamos lo mínimo](https://reader030.fdocuments.net/reader030/viewer/2022040821/5e6a989d8dd0eb6d72618d47/html5/thumbnails/76.jpg)
Gracias !!!
Desksurfing