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.

De 1 a 1.000.00 de usuários

314 views

Published on

Palestra feito na PHPConf - 2016

Apresento uma estrutra de escabilidade, passando pelos passos de crescimento de um software web.
Conceitos como cache, concorrências, storage para arquivos estáticos, servidores de busca, sessões em memória e afins.

Published in: Software

De 1 a 1.000.00 de usuários

  1. 1. De 1 a 1.000.000 de usuários
  2. 2. Felipe Klerk Signorini DevOps - ativo.com ● Arquiteto de software ● Infra estrutura ● Desenvolvimento.
  3. 3. Por onde começar?
  4. 4. Não seja o programador StackOverflow
  5. 5. "Aqui as coisas sempre funcionaram assim..." Cultura e conhecimento
  6. 6. Para os primeiros milhões de usuários a linguagem não importa.
  7. 7. Não importa a ferramenta ➔ Estude os conceitos, o porque aquela ferramenta foi feita. ➔ Aplicação e servidores andam juntos ➔ Se questione o porque utiliza determinadas ferramentas. ➔ Pense primeiro na arquitetura e por último em quais ferramentas utilizar ➔ A capacidade em visualizar o todo impacta direto na escalabilidade do sistema
  8. 8. "Meoo coloca um MongoDB que sua aplicação vai voar" NoSQL, você realmente precisa?
  9. 9. Começe com um banco relacional ➔ Tecnologias maduras e estáveis ➔ Documentação e comunidade ➔ Ferramentas de mercado Sistema de monitoramento, análises, forks e afins ➔ Se bem estruturado seu banco relacional dará conta dos seus primeiros milhões de usuários. ➔ Sua estrutura de dados normalmente é relacional
  10. 10. Quando pensar em NoSQL ➔ Sua estrutura de dados é baseado em meta dados ➔ Base sem esquema ➔ Massiva quantidade de dados (TB`s) ➔ Massiva quantidade de registros (muitos mesmos)
  11. 11. "Isso não é minha responsabilidade." Arquitetura de aplicações
  12. 12. Arquitetura? Infraestrutura Como as máquinas se relacionam, banco de dados, serviços, sistema de cache, firewall e afins. “Contanization”, “Infra is code”, “LoadBalances/AutoScaling” Serviços Como os aplicativos se comunicam, relação entre gateways, APIs, sistemas e afins. “ESB”, “Microservices”, “monoliticos” Aplicativo Estrutura em nível de aplicação, como as classes e funções se relacionam. “OOP”, “Design Pattern”
  13. 13. "O problema está no servidor." Escalabilidade é responsabilidade da Infra?
  14. 14. Escalabilidade Vs Performance
  15. 15. 1 Usuário
  16. 16. Apache/PHP e DB
  17. 17. >10 Usuários
  18. 18. Escalabilidade? 4 GBs 1 CPU 8 GBs 2 CPUs 16 GBs 4 CPUS 2 GBs ● Consiste em aumentar o poder computacional ● Exige downtime do aplicativo ● Muito caro ● Haverá um limite
  19. 19. Escalabilidade ? 4 GBs 1 CPU 4 GBs 1 CPU 4 GBs 1 CPU ● Mais barato que a escalabilidade vertical ● Garante failbacks no aplicativo ● SOA ● Alta disponibilidade ● A longo prazo se torna o único caminho
  20. 20. Apache/PHP DataBase
  21. 21. >100 Usuários
  22. 22. Cache Guardar algo temporáriamente para uso posterior
  23. 23. ● Aumenta a performance da aplicação ● Diminui gastos em recursos computacionais ● Aumenta o uso de IO (file cache) ● Considero o cache o item mais importante para começar a escalar a aplicação
  24. 24. HTTP Cache - App Routes Controller DataBase View MIddleware
  25. 25. HTTP Cache - App Routes Controller DataBase View MIddleware Cache
  26. 26. View Object Cache - View Render Controller View Object Render View Object Render
  27. 27. View Object Cache - View Render Controller View Object Render View Object Render Cache
  28. 28. Model Cache - Models Database Controller Model Database
  29. 29. Model Cache - Models Database Controller Model Database Cache
  30. 30. get_file_contents Cache - Request HTTP Controller get_file_contents HTTP Controller
  31. 31. get_file_contents Cache - Request HTTP Controller get_file_contents HTTP Controller Cache
  32. 32. SuperCache - Wordpress
  33. 33. Cache - Memoria
  34. 34. PHP/Script Cache - OpCache Parser Compile Execute OutPut
  35. 35. PHP/Script Cache - OpCache Parser Execute OutPut Compile
  36. 36. Cache - Nginx HTTP Routes Controller DataBase View MIddleware
  37. 37. Cache - Nginx HTTP Routes Controller DataBase View MIddleware Cache
  38. 38. Cache - Nginx
  39. 39. Replica Banco "não" escala, mais existe opções.
  40. 40. MySQL - Replica App Master ReplicaEscrita Escrita Leitura
  41. 41. Existe a possibilidade da criação de clusters, e/ou utilização de técnicas de sharding data, porém ainda não é o momento
  42. 42. nginx/php+fpmReverse Cache Master Replica
  43. 43. >1000 Usuários
  44. 44. Concorrência Agora sim vamos falar de LoadBalances e AutoScaling.
  45. 45. Entenda que cada máquina deve ser Stateless, não pode conter nenhuma informação vital. ● Uploads de arquivos ● Sessões do php ● Logs
  46. 46. nginx/php+fpm LoadBalance Master Replica nginx/php+fpm LoadBalance
  47. 47. nginx/php+fpm LoadBalance Master Replica nginx/php+fpmstorage Static files
  48. 48. nginx/php+fpm LoadBalance Master Replica nginx/php+fpmCDN CDNs storage
  49. 49. Some web systems rely on “sticky sessions” – that is, caching user session data in memory of the app’s process and expecting future requests from the same visitor to be routed to the same process. Sticky sessions are a violation of twelve-factor and should never be used or relied upon. Session state data is a good candidate for a datastore that offers time-expiration, such as Memcached or Redis
  50. 50. nginx/php+fpm LoadBalance MasterReplica nginx/php+fpmstorage Sessões Memcached
  51. 51. session_drive=memcached session.save_handler = memcache session.save_path = tcp://10.1.1.1:11211'
  52. 52. Sessões
  53. 53. nginx/php+fpm LoadBalance Master nginx/php+fpmstorage Logs ELK
  54. 54. Logs - ELK - Stack
  55. 55. Logs
  56. 56. AutoScaling Crescimento e redução automática de clusters.
  57. 57. nginx/php+fpm LoadBalance MasterReplica nginx/php+fpmstorage Autscaling Memcach ed
  58. 58. Autscaling
  59. 59. Indexação Resultados de buscas, listagem de dados, seleção de dados de forma geral.
  60. 60. Servidores de busca
  61. 61. nginx/php+fpm LoadBalance MasterReplica nginx/php+fpmstorage Servidores de busca MC Elastic Search
  62. 62. >100.000 Usuários
  63. 63. Topologia
  64. 64. DevOps DevOps is a new term emerging from the collision of two major related trends. The first was also called “agile system administration” or “agile operations”; it sprang from applying newer Agile and Lean approaches to operations work. The second is a much expanded understanding of the value of collaboration between development and operations staff throughout all stages of the development lifecycle when creating and operating a service, and how important operations has become in our increasingly service-oriented world. -Ernest Mueller, Aug 2, 2010 – Last Revised Jan 16, 2016
  65. 65. nginx/php+fpm LoadBalance Master nginx/php+fpmstorage MC Elastic Search nginx/php+fpm Replica Replica
  66. 66. nginx/php+fpm LoadBalance Master nginx/php+fpmCDN MC Elastic Search nginx/php+fpm Replica Replica storage
  67. 67. nginx/php+fpm LoadBalance Master nginx/php+fpmCDN MC Elastic Search nginx/php+fpm Replica Replica storage Elastic Search Elastic Search
  68. 68. nginx/php+fpm LoadBalance Master nginx/php+fpmCDN MC Elastic Search nginx/php+fpm Replica Replica storage Elastic Search Elastic SearchMC MC
  69. 69. nginx/php+fpm LoadBalance nginx/php+fpmAkamai nginx/php+fpm storage Akamai
  70. 70. nginx/php+fpm LoadBalance nginx/php+fpm Akamai nginx/php+fpm
  71. 71. >1.000.000 Usuários
  72. 72. SOA Service-Oriented Architecture.
  73. 73. SOA na prática ➔ Serviços por módulos independentes ➔ Administrados e escalados independentemente ➔ Flexibilidade e entendimento de cada função ➔ Automatizar processos operacionais ➔ SOA + Modularização = Agilidade
  74. 74. MicroServices
  75. 75. LoadBalance Route 53 LoadBalance nginx/php+fpm nginx/php+fpm nginx/php+fpm nginx/php+fpm LoadBalance Master Replica Replica LBs, LBs e LBs
  76. 76. Master Master Master Master Master Master Master Master DataBase - Shard
  77. 77. Brokers
  78. 78. RabbitMq Worker - P API Pedidos Pagamento - Adquirente Checkout Ativo - Checkout Ativo - Cielo - Redes - Stone RabbitMq Cielo Redes Stone Trap Gateway - Cielo API - Redis Redis 1 - Teste de Cartão de crédito Processo de pagamento FailBack Entre as adquirentes Status de processo Cielo Redes Stone API Users Consulta existência do cartão API Geradores
  79. 79. nginx/php+fpm LoadBalance Master nginx/php+fpmCDN MC Elastic Search nginx/php+fpm Replica Replica storage Elastic Search Elastic SearchMC MC Worker Worker Worker Worker RabbitMQ Worker Worker Worker Worker RabbitMQ Worker Worker RabbitMQ
  80. 80. Bye. felipeklerk@yahoo.com.br linkedin.com/in/felipe-klerk-signorini facebook.com/felipesignorini

×