Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Arquitetura em camadas em python e quanto isso pode ajudar

514 views

Published on

Venha ver como conceitos de arquitetura de software e padrões de projeto também podem ser aplicados quando desenvolvemos em Python. Veremos exemplos práticos de como isso traz maturidade ao projeto e o quanto ajuda na manutenção e evolução do mesmo. Por fim será mostrado case de como isso é importante no desenvolvimento de soluções para área financeira na empresa Nexxera.

Published in: Technology
  • Be the first to comment

Arquitetura em camadas em python e quanto isso pode ajudar

  1. 1. Quanto isso pode ajudar? ARQUITETURA EM CAMADAS EM PYTHON
  2. 2. ITENS QUE VEREMOS SOBRE ESSE ASSUNTO ⇝ O que é arquitetura em camadas; ⇝ Pensar em camadas ainda é importante? ⇝ Aplicando uso de camadas em Python; ⇝ Padrões de projetos, como eles ajudam a ter camadas; ⇝ Quais vantagens e desvantagens? ⇝ Um caso real do uso de camadas.
  3. 3. o que é arquitetura em camadas ?
  4. 4. É UM ESTILO ARQUITETURAL QUE PROPÕE DIVIDIR UM SISTEMA EM VÁRIAS CAMADAS DE ACORDO COM A RESPONSABILIDADE DE CADA PARTE DO SOFTWARE. ESSE ESTILO PROPÕE QUE: ⇝ AS CAMADAS TENHAM UM PROPÓSITO BEM DEFINIDO; ⇝ CADA CAMADA CONHEÇA APENAS CAMADAS ABAIXO DELA; ⇝ AS CAMADAS POSSAM SER REAPROVEITÁVEIS.
  5. 5. UM DESENHO TRADICIONAL DE CAMADAS...
  6. 6. O USO DE CAMADAS EM SOFTWARE GANHOU FORÇA NA DÉCADA DE 90, COM USO DE 2 CAMADAS. LOGO DEPOIS GANHOU MAIS POPULARIDADE COM O USO DE 3 CAMADAS. O CONCEITO NÃO NASCEU NO MUNDO DE SOFTWARE, OUTRAS ÁREAS O USAM HÁ MUITO TEMPO! E NO MUNDO DE SOFTWARE ELE TAMBÉM É APLICADO HÁ MAIS TEMPO DO QUE PARECE.
  7. 7. MODELO OSI SISTEMAS OPERACIONAIS DOCKER
  8. 8. E… NA MINHA APLICAÇÃO PENSAR EM CAMADAS AINDA É IMPORTANTE? ⇝ MESMO COM ARQUITETURA ORIENTADA A SERVIÇOS? ⇝ MESMO COM MICRO-SERVIÇOS ? ⇝ MESMO COM CLOUD? DEVEMOS AINDA TER QUE PENSAR EM CAMADAS? SIM !!!
  9. 9. VOCÊ PODE NÃO SABER OU ATÉ NÃO QUERER, MAS GERALMENTE SUA APLICAÇÃO ESTÁ EM CAMADAS !!! WEB APP MOBILE APP DATABASE CONTROLLERS REST DOMAIN SERVICE REPOSITORY MODEL RELATIONAL NOSQL EXTERNAL SERVICES REST SERVICES MESSAGE QUEUE OTHERS FRONT BACK
  10. 10. E COMO POSSO APLICAR CAMADAS EM PYTHON ?
  11. 11. VAMOS USAR UM EXEMPLO !. apenas backend . Um projeto simples, chamado: Quotes Box (Caixinha de Citações) que usa os frameworks: Flask e SQLAlchemy
  12. 12. Telas administrativas... API Rest... O projeto tem...
  13. 13. O projeto começa pequeno.
  14. 14. Mas, o projeto cresce um pouco...
  15. 15. E... o projeto cresce mais ainda...
  16. 16. o projeto é dividido em camadas!
  17. 17. O fonte é dividido em vários arquivos .py...
  18. 18. pronto, o projeto está usando arquitetura em camadas !!! só que não ! E PORQUE ?
  19. 19. novos recursos são necessários… ⇝ Executar processos agendados (cron); ⇝ Suportar volume alto de requisições; ⇝ Trabalhar com outros bancos de dados; dificuldades na implementação surgem… ⇝ Com mais desenvolvedores há conflitos na codificação; ⇝ Fazer testes está cada vez mais difícil; ⇝ ...
  20. 20. eu consigo ____ ? ⇝ Executar rotinas de negócio sem usar API rest... ⇝ Trocar de forma fácil meu framework que expõe rest... ⇝ Optar por salvar os dados em nosql ou relacional... ⇝ Aplicar testes a partes específicas de forma simples... ⇝ Dividir o trabalho entre o time sem gerar conflito... ⇝ Evoluir o sistema sem precisar refatorar tudo... e.. diante disso, nos perguntamos:
  21. 21. o que pode ser feito para realmente usar camadas no projeto?
  22. 22. Comece separando em pacotes, representando as camadas. Projeto Único quote-box-core==1.0.0 Projeto Core Projeto App Ou
  23. 23. Tenha cuidado com dependência entre camadas Camada domain não deveria conhecer coisas da camada acima Usando apenas SQLAlchemy
  24. 24. ⇝ A falta de tipagem facilita esperar atributos da camada de cima que não fazem parte do modelo da camada em questão; ⇝ Métodos decorrentes de necessidades da camada de cima, como: to_json(), json(); ⇝ Camadas esperando variáveis de ambiente definidas na camada de cima; ⇝ Tipo de dados específico de um bancos de dados. e... o que mais precisamos ter atençao?
  25. 25. ⇝ Camadas que serão usadas como bibliotecas, é melhor usar objetos como estrutura de dados e evitar dicionários; ⇝ Frameworks que “geram tudo” mas não em camadas, ou organizado em camadas mas com dependências implícitas entre uma camada e a camada acima. ⇝ Não confiar apenas nos “olhos”, usar ferramentas que validem a arquitetura. Ex.: Structure101. precisamos ter atençao também em...
  26. 26. E… o que podemos estudar para trabalhar corretamente com camadas?
  27. 27. princípios de orientação a objetos e PADRÕES DE PROJETO
  28. 28. quais deles podem me ajudar? ⇝ Princípios SOLID; ⇝ Padrões GoF; ⇝ Padrões GRASP; ⇝ Padrão MVC;
  29. 29. CAMADAS SÓ SE APLICAM A SOLUÇÕES COM BACKEND/FRONTEND? Não !... DOMAINCONTROLLER JSON YAML LINE ARGUMENTS EXTERNAL CLIENTS APP DE DEPLOY EXECUTADA VIA LINHA DE COMANDO.
  30. 30. TODA SOLUÇÃO DEVERIA SER ARQUITETADA EM CAMADAS? Não !... Isso não é uma regra, esse estilo não resolve todos seus problemas, mas geralmente ajuda! Entenda bem o negócio e o momento do projeto!
  31. 31. QUAIS VANTAGENS? ⇝ Maior organização do código; ⇝ Código mais testável; ⇝ Software modularizado; ⇝ Divisão de responsabilidade; ⇝ Maior adaptabilidade; ⇝ Maior reusabilidade; ⇝ Maior escalabilidade. E DESVANTAGENS? ⇝ Maior número de Classes; ⇝ Maior complexidade na execução do sistema; ⇝ Menos performance dependendo da forma de comunicação entre as camadas; ⇝ Maior complexidade no versionamento; ⇝ Requer maior conhecimento e maturidade do desenvolvedor.
  32. 32. COMO O USO DE CAMADAS AJUDA NA CONSTRUÇÃO DE SOLUÇÕES CORPORATIVAS NA NEXXERA.
  33. 33. DOMAIN SERVICE REPOSITORY MODEL (WEB) CONTROLLER REST DATABASES SOLUÇÃO FINANCEIRA, PAGAMENTOS BANCÁRIOS (CONSOLE) CONTROLLER TEXT/PLAIN FILE EXTERNAL SERVICES RELACIONAL www.nexxera.com
  34. 34. OBRIGADO A TODOS! isaacsouza@gmail.com Projeto exemplo em: https://gitlab.com/betterdeveloper-examples/ quotes-box-layers Slides em: https://pt.slideshare.net/betterdeveloper www.betterdeveloper.net PERGUNTAS? BONS LIVROS QUE AJUDAM NO ASSUNTO... agile software development, principles, patterns and pratices

×