How do you upgrade a legacy application without attempting a full rewrite? Our large PHP application at InboxDollars works well and generates revenue. Unfortunately, we're locked into an old version of CakePHP. Rather than rewriting the ancient beast, we created a way to write new feature code using modern PHP while leaving our main application intact. We follow the Strangler Pattern using microservices. In this tutorial we learn: How the Strangler Pattern works Producer/Consumer programming using microservices Criteria for identifying your Strangler Pattern candidates Structuring your code with an eye to future change Our example uses CakePHP and RabbitMQ. It's based on our experience at InboxDollars, but we focus on principles that apply to any language or framework.


Comments are closed.

Daevid Vincent at 15:35 on 8 Sep 2017

TL;DR use Rabbit/MQ for fire & forget DB inserts and have your "worker" listener use the prepared bulk insert statements.

It really didn't talk about micro-services, at least not in the way I think of them with multiple Docker containers all doing a single thing well and spawning and dying after their job is done, and connected together...

The talk should be: 'How to sell RabbitMQ to the community', even not a workshop, it was just talking and talking.

Rithy Chhen at 09:18 on 9 Sep 2017

I was hoping to learn more about Microservices, but the talk was all about rabbitMQ.

Ed Barnard (Speaker) at 12:48 on 9 Sep 2017

This talk did not meet expectations. My approach entirely missed the mark. Thank you for the detailed feedback; I do want to teach what I can in a way that's useful. I'll be rebuilding this talk from scratch in a way that's hopefully far more useful. Thank you!

How did I miss the mark? The title begins "Microservices," but my topic was using microservices as a specific implementation (of the Strangler pattern) rather than on microservices in general. In retrospect, if I'd titled the talk "producer/consumer programming" that would have done a better job of telling people what to expect. Another issue was my approach. I aimed at the design stage rather than coding stage but wasn't able to make it truly interactive. I tried an approach that simply didn't work. Next time we'll do code right away.