Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Buenas Prácticas de Python en Proyectos de Desarrollo

Buenas Prácticas de Python en Proyectos de Desarrollo

Buenas prácticas en el desarrollo de lambdas con Python en AWS.

Python Pereira

April 01, 2020
Tweet

More Decks by Python Pereira

Other Decks in Programming

Transcript

  1. Gary Briceño Software Senior Developer en Globant. Ingeniería Electrónica con

    más de 15 años de experiencia. Instructor de tecnología: RUP, UML, Java, Android and Python, por más de 10 años. https://www.linkedin.com/in/garybriceno/ @garybriceno 2
  2. • Uso del README.md • Estructura de carpetas • Estructura

    del código • Pruebas unitarias • Pruebas de integración • Centralización de tareas • Uso de propiedades por ambiente • Despliegue Agenda 3
  3. 4 ¿Que es una lambda? • AWS Lambda es un

    servicio en la nube en el que podemos subir un código que será ejecutado en nuestro nombre en la infraestructura de Amazon Web Services.
  4. 7

  5. • Una documentación a nivel del proyecto o al nivel

    de cada componente ayuda. • Utilizar el archivo README.md es un buen punto de partida. • Se puede luego mejorar e incluir una carpeta docs/ de ser necesario. • Se debe incluir, el propósito del componente, de dónde provienen los datos, que archivos son críticos y cómo se ejecutan los test. Uso del README.md 11
  6. Uso del README.md • En el proyecto, se acordo incluir:

    ◦ Cual es la story en Jira que da origen a la lambda. ◦ Si hay cambios, incluir el histórico de cambios, así como las diferentes story que afectan a la lambda. La última story va primero. ◦ De ser necesario, incluir algunos ejemplos. 12
  7. 14

  8. 18

  9. • Es una guía para el código en Python ◦

    Escritura de nombres, indentación, comentarios ◦ https://realpython.com/python-pep8/ • Uso de black: con esta librería cede el control de los detalles del formato, así se enfoca en el contenido. • Uso de flake8: se utiliza para revisar la consistencia de estilos en proyectos Python Seguir un estándar: PEP8 22
  10. 1. Lógica de negocio: el código hace lo que el

    negocio espera, cumple con la US. 2. Lógica algorítmica: el código contempla los escenarios más predecibles de error, usa el mejor algoritmo para el problema que intenta resolver, está desacoplado, entre otros. 3. Lectura de código: el código es legible, se hace un buen uso de nombre de variables, constantes y clases.. nada de código espagueti, es escalable 4. Rendimiento: se hace uso de las estructuras de datos de manera correcta, se utiliza el lenguaje en su forma optima https://wiki.python.org/moin/PythonSpeed/PerformanceTips , los algoritmos son de baja complejidad. 5. Estilo: el código cumple con las reglas de estilo que establece el PEP8 https://www.python.org/dev/peps/pep-0008/ Lineamientos del Code Review 23
  11. 25

  12. Pruebas Unitarias • Uso de metodologías orientada a pruebas como

    TDD (Test Development Driven) • Automatización de las pruebas con PyTest y Tox 26
  13. Uso de PyTest Datos de prueba para los test Mockup

    de las funciones Funciones de prueba 27
  14. • Las pruebas es un proceso constante • Con cualquier

    cambio, se ejecutan las pruebas • Lo mínimo al realizar cambios es asegurarse que las pruebas continúan funcionando. • Lo deseable incrementar pruebas adicionales para los cambios realizados. Realización de Test 30
  15. 32

  16. • AWS SAM o Serverless Application Model, es un framework

    opensource para construir serverless en AWS. • El comando sam local ofrece soporte para la invocación local y la prueba de funciones lambda. SAM CLI: 36
  17. 39

  18. Ventajas El mismo código puede ser utilizado por el equipo.

    Se abstraen tareas al equipo de desarrollo, permitiéndoles centrarse en la lógica de negocio. Una forma similar de interactuar con los diferentes artefactos. El código crece innecesariamente. El versionamiento no es sencillo, se pueden presentar artefactos trabajando con diferentes versiones. Si debe tener un proceso de socialización de los cambios en la librería. Desventajas 41
  19. 45

  20. Las decisiones de arquitectura deben ser socializadas con todo el

    equipo, se debe establecer un canal de comunicación bidireccional entre el equipo de desarrollo y el equipo de arquitectura, son parte del mismo equipo. 49
  21. 50