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.

PHP with Service BUS (RabbitMQ/Redis/MongoDB) - IMasters PHP Experience 2016

1,099 views

Published on

PHP with Service Bus – Desacoplamento de Workflows com serviços de Barramento

Published in: Software
  • Be the first to comment

  • Be the first to like this

PHP with Service BUS (RabbitMQ/Redis/MongoDB) - IMasters PHP Experience 2016

  1. 1. PHP with ServiceBus Desacoplamento de Workflows com serviços de barramento utilizando RabbitMQ
  2. 2. 40% Market Share Plataforma de Pagamento
  3. 3. Nosso ecossistema Ecossistema DLP ONLINE ADQUIRENTE GATEWAY DE PAGAMENTOS TEF / GATEWAY OFFLINE PROCESSADORA Pagar.me
  4. 4. Nossos clientes LOJAS DEPARTAMENTO MODA ENTRETENIMENTO ALIMENTOS Temos mais de 1500 lojas em nosso portfólio, algumas delas são as maiores marcas brasileiras e internacionais. ÓLEO TV
  5. 5. www.mundipagg.com
  6. 6. Faça parte do nosso time! abrandao@mundipagg.com { TEMOS VAGAS } "A única maneira de fazer um excelente trabalho é amar o que você faz." (Steve Jobs)
  7. 7. Quer jogar?
  8. 8. Relaxa!! D boa, você vai achar a solução!
  9. 9. { Seja criativo!! :) =)
  10. 10. Quer um café?
  11. 11. C# .Net jQuery PHP Magento Angular.js Node.js Gulp Java Ruby SQL Server MongoDB Kibana Log Stash Redis RabbitMQ Cassandra Scala Akka.Net Python TFS Git Apache Jira SentryMonitis Python New Relic Azure Nosso Stack MVC REST Web APIGo
  12. 12. Vamos dominar o mundo!!!!
  13. 13. Faça parte do nosso time! abrandao@mundipagg.com { TEMOS VAGAS } "A única maneira de fazer um excelente trabalho é amar o que você faz." (Steve Jobs)
  14. 14. Faça parte do nosso time! querotrabalhar@stone.com abrandao@mundipagg.com "A única maneira de fazer um excelente trabalho é amar o que você faz." (Steve Jobs)
  15. 15. Alexandre Brandão { Microsoft C# .Net Solution Developer, C++ Linux Developer, C/C++ Embedded Programmer } <contatos> <twitter> @abrandaolustosa </twitter> <skype> abrandao@mundipagg.com </skype> </contatos> Gerente de TI Analista Desenvolvedor Sênior Arquiteto de Sistemas /* Linkedin: abrandaol */ curl -data “experiencia=16_anos&motivacao=inovacao%20e%20pesquisa” https://www.mundipagg.com
  16. 16. Service BUS
  17. 17. “Definição” : “An enterprise service bus (ESB) is a software architecture model used for designing and implementing communication between mutually interacting software applications in a service-oriented architecture (SOA)” { }
  18. 18. Integração de Sistemas
  19. 19. <wrong> Não utilize workflows centralizados e dependentes do banco de dados </wrong> “Repense sua arquitetura”
  20. 20. Recursos
  21. 21. Pipeline – Service Bus
  22. 22. { Soluções – Service Bus } - RabbitMQ - CloudAMQP (RabbitMQ) - Azure ServiceBus - IBM MQ Series - Amazon SQS - SQL Server Service Broker - Microsoft Message Queue - OpenShift - Kafka
  23. 23. https://www.rabbitmq.com/ • Robust messaging for applications • Easy to use • Runs on all major operating systems • Supports a huge number of developer platforms • Open source and commercially supported • Multiplatform for Windows, Linux and Mac OS • Erlang
  24. 24. RabbitMQ - SDKs C# .Net PHP Java Ruby ErlangPerl Javascript Go Python Scala Haskell
  25. 25. The Advanced Message Queuing Protocol (AMQP) is an open standard application layer protocol for message-oriented middleware. The defining features of AMQP are message orientation, queuing, routing (including point- to-point and publish-and-subscribe), reliability and security. AMQP
  26. 26. To become the standard protocol for interoperability between all messaging middleware AMQP
  27. 27. Plugins Management • Gerenciamento • Configuração • Monitoramento STOMP/ MQTT • Integrações utilizando outros protocolos de comunicação Federation / Shovel • Configuração de cluster em redes não confiáveis
  28. 28. Características do RabbitMQ • Queue • Consumer • Public/Subscriber • Exchange • Channel • Persitent • Durável / Transiente • Atomicidade • Round-Robin • Acknolodge • Ack/Nack • TTL (Time to Live)
  29. 29. Tipos de fila do RabbitMQ • Basic • Work • Topic • Route • Fanout • RPC
  30. 30. Basic - RabbitMQ P – Producer C – Consumer Queue in Red The simplest thing that does something
  31. 31. Work - RabbitMQ Distributing tasks among workers Automatic - Round-Robin
  32. 32. Publish/Subscribe (FanOut)- RabbitMQ Sending messages to many consumers at once Exchange Types: direct, topic, headers and fanout channel.exchange_declare(exchange='direct_logs', type=‘fanout')
  33. 33. Routing - RabbitMQ Receiving messages selectively channel.exchange_declare(exchange='direct_logs', type='direct') channel.basic_publish(exchange='direct_logs', routing_key=severity, body=message)
  34. 34. Topics - RabbitMQ Receiving messages based on a pattern channel.exchange_declare(exchange='direct_logs', type=‘topic')
  35. 35. RPC Async WorkFlow - RabbitMQ Remote procedure call implementation Define properties: CorrelationId and ReplyTo (QueueName to reply message)
  36. 36. Install Client - RabbitMQ { "require": { "php-amqplib/php-amqplib": "2.5.*" } } $composer install or update Tutorial: https://www.rabbitmq.com/tutorials/
  37. 37. API de Autorização { Stack } Repositório de código: https://github.com/alexandrebl
  38. 38. • NoSQL • Cache de dados • Dicionário (Chave/Valor) • Dados em memória • Persistência como opção • Stand Alone • Cluster • Replicação • Redis-cli • Redis Manager • NoSQL • Json Format Data • Dados em disco • Stand Alone • Shard • Replica • Mongo Shell • RoboMongo • MongoChef • PHP Framework • MVC • Open-source • REST API • Event/handle • Console • Composer
  39. 39. Fluxo da API de Autorização
  40. 40. { Seja hoje uma pessoa melhor do que você foi ontem }
  41. 41. Pesquise...
  42. 42. Pesquise... Estude...
  43. 43. Pesquise... Estude... Domine...
  44. 44. Pesquise... Estude... Influencie... Domine...
  45. 45. Alexandre Brandão Twitter: @abrandaolustosa E-mail: abrandao@mundipagg.com Tel: +55 (21) 97367-6161 https://github.com/alexandrebl Obrigado :) Linkedin: abrandaol
  46. 46. Alexandre Brandão Twitter: @abrandaolustosa E-mail: abrandao@mundipagg.com Tel: +55 (21) 97367-6161 https://github.com/alexandrebl Perguntas? Linkedin: abrandaol

×