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.

Enterprise php

Palestra apresentada no dia 2 de setembro no PHP Community Summit da Locaweb.

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all

Enterprise php

  1. 1. Hello PHP Community Summit. Enterprise PHP.
  2. 2. Guilherme Blanco
  3. 3. 12 Factor Apps http://12factor.net
  4. 4. S.O.A.http://arnon.me/soa-patterns/
  5. 5. Agenda. 1. Código 2. Dependências 3. Configuração 4. Ferramentasdesuporte 5. Build,release,run 6. Processos 7. Conexãoàportas 8. Concorrência 9. Descartável 10.Paridadedeambientes 11.Logs 12.Processosadministrativos
  6. 6. Código. 1
  7. 7. Todo seu código deve residir em um sistema de controle de versão.
  8. 8. Um único repositório para leitura e escrita. Vários repositórios “read-only” para build. https://github.com/dflydev/git-subsplit
  9. 9. Dependências. 2
  10. 10. Declare e isole todas as dependências que seu código necessita.
  11. 11. Bibliotecas. Recursos. Ferramentas de suporte.Serviços. Symfony
 Doctrine
 SecurityBundle Micro-serviços
 API
 Configuração cURL
 PHP
 Composer
 Webpack Amazon S3
 RabbitMQ
 MySQL
 Redis
  12. 12. Dependências • Ciclo de vida Responsável por iniciar serviços, reciclar serviços com falha, atualizar, etc. • Configuração Lê e aplica as configurações dos serviços hospedados, incluindo configurações de segurança, portas, etc. • Roteamento Configura em tempo de execução a conexão de um consumidor em um ponto de entrada de um serviço. • Administração Possibilita o controle sobre o ciclo de vida de um serviço hospedado, incluindo capacidade de monitoramento a um administrador. • Ambiente Provê serviços auxiliares, tais como: logging, cache, banco de dados, etc. Service Host.
  13. 13. Dependências. Source: http://arnon.me/soa-patterns/service-host/
  14. 14. Configuração. 3
  15. 15. Toda configuração deve ser mantida separada do seu código fonte.
  16. 16. Sua configuração deve ser unificada e gerenciada por um único serviço.
  17. 17. Configuração distribuída.
  18. 18. Configuração 1. Etcd. 2. Zookeeper. 3. Consul. 4. Eureka. 5. GIT. 6. Spring Cloud Config Server.
  19. 19. Configuração http://localhost:32769
 http://localhost:32769/v1/kv/?recurse 
 http://localhost:32769/v1/kv/PHPCommunitySummit/chave?raw
  20. 20. Configuração. • Periodicamente acessa configuração e/ou serviços buscando dados mais recentes. • Utiliza dados armazenados temporariamente para não sobrecarregar a aplicação. • Continua servindo dados (potencialmente) obsoletos no caso de falha. Active Service.
  21. 21. Configuração. Source: http://arnon.me/soa-patterns/active-service/
  22. 22. Ferramentas de suporte. 4
  23. 23. Cada ferramenta de suporte deve ser referenciável por um único endpoint.
  24. 24. Ferramentas de suporte. • Encapsula múltiplas instâncias através de um único endpoint. • Provê transparência de localidade. • Seu código não requer (ou sabe) a localidade de uma instância em específico. Virtual Endpoint.
  25. 25. Ferramentas de suporte. Source: http://arnon.me/soa-patterns/virtual-endpoint/
  26. 26. Processos. • Encapsula múltiplas instâncias através de um único endpoint. • Provê transparência de localidade. • Seu código não requer (ou sabe) a localidade de uma instância em específico. Service Monitor.
  27. 27. Ferramentas de suporte. http://localhost:32769/v1/catalog/services 
 http://localhost:32769/v1/catalog/service/consul
  28. 28. Build, release, run. 5
  29. 29. Build, release, run. 1. Continuous Integration. 2. Continuous Delivery. 3. Continuous Deployment.
  30. 30. Build, release, run. Source: http://bit.ly/2iKgJtL
  31. 31. Processos. 6
  32. 32. Toda instância de um serviço deve ser isento de estado (stateless).
  33. 33. Processos. • Uma instância de um serviço nada mais é que uma instância capaz de executar uma determinada lógica de negócio. Service Instance.
  34. 34. Processos. Source: http://arnon.me/soa-patterns/service-instance/
  35. 35. Processos. • Padrão onde o serviço ativamente monitora seu próprio estado. • Age de acordo com qualquer tipo de falha. • Tenta se recuperar de erros. • Publica seu status continuamente. Service Watchdog.
  36. 36. Processos. Source: http://arnon.me/soa-patterns/service-watchdog/
  37. 37. Conexão à portas. 7
  38. 38. Sua aplicação deve fazer interface com o mundo usando uma única URL.
  39. 39. Conexão à portas • Provê flexibilidade e auxilia na separação da lógica de negócio de outros elementos, tais como: - Validação - Segurança - Auditoria - Transformação - Balanceamento de carga Edge Component.
  40. 40. Conexão à portas. Source: http://arnon.me/soa-patterns/edge-component/
  41. 41. Conexão à portas • Intercepta requisições (requests) e respostas (responses). • Escaneia, filtra e valida requisições. • Limpa e auditora respostas. Service Firewall.
  42. 42. Conexão à portas. Source: http://arnon.me/soa-patterns/service-firewall/
  43. 43. Concorrência. 8
  44. 44. Separe a lógica de negócio em vários pequenos processos.
  45. 45. Concorrência. • Separa requisições de respostas. • Notifica recebimento de requisição. • Adiciona requisição em uma fila segura. • Balanceia a carga. • Prioriza o consumidor que monitora a fila. Decoupled Invocation.
  46. 46. Concorrência. Source: http://arnon.me/soa-patterns/decoupled-invocation/
  47. 47. RabbitMQ.
  48. 48. http://localhost:32774/
  49. 49. Concorrência. • Ajuda na escalabilidade da aplicação. • Auxilia na resolução de processos computacionais intensos. Gridable Service.
  50. 50. Concorrência. Source: http://arnon.me/soa-patterns/gridable-service/
  51. 51. Concorrência. • Possibilita RPC. • Quebra o processo em sub-tarefas. • Adiciona uma fila entre as sub-tarefas. • Cada sub-tarefa vira um componente independente. Parallel Pipelines.
  52. 52. Concorrência. Source: http://arnon.me/soa-patterns/parallel-pipeline/
  53. 53. Concorrência. • Possibilita Event-Driven Architecture (EDA) Inversion of Communication.
  54. 54. Concorrência. Source: http://arnon.me/soa-patterns/inversion-communication/
  55. 55. Descartável. 9
  56. 56. Minimize o tempo necessário para fazer o bootstrapping de sua aplicação.
  57. 57. Nunca crie tarefas para limpar estado no caso de falha de uma requisição.
  58. 58. Efetuar o deploy de uma nova instância do serviço deve uma tarefa simples e bem rápida.
  59. 59. Paridade de ambientes. 10
  60. 60. Ambientes de dev e prod devem ser o mais semelhantes possível.
  61. 61. Logs. 11
  62. 62. Utilize um sistema agregador de log.
  63. 63. Logs. • Serviço que usa dados imutáveis de múltiplos serviços para reporting. Aggregated Reporting.
  64. 64. Concorrência. Source: http://arnon.me/soa-patterns/aggregated-reporting/
  65. 65. Processos administrativos. 12
  66. 66. Tarefas de migração de versão devem fazer parte do processo de bootstrap da aplicação.
  67. 67. Done.Enterprise PHP.

    Be the first to comment

  • gmsantos

    Sep. 2, 2017
  • LucasdeOliveira32

    Sep. 2, 2017
  • LuayAlqatrawy

    Sep. 3, 2017
  • ThiagoRodrigues

    Sep. 3, 2017
  • RodrigoJosdaSilva1

    Sep. 4, 2017
  • edsonhjr

    Sep. 4, 2017
  • hugofcampos

    Sep. 4, 2017
  • hussan1

    Sep. 14, 2017
  • deoliveiralucasnet

    Sep. 25, 2017
  • beejhuff

    Feb. 25, 2018

Palestra apresentada no dia 2 de setembro no PHP Community Summit da Locaweb.

Views

Total views

1,185

On Slideshare

0

From embeds

0

Number of embeds

14

Actions

Downloads

11

Shares

0

Comments

0

Likes

10

×