Avatar of liveweird
CTO at Shedul/Fresha

Initially we had just 1 monolithic application with a PostgreSQL database (picked for performance, community & flexibility to work with GIS data), but as we've developed more features, it was clear that some stuff is relatively independent from the rest of the platform - it made sense to split the application into loosely coupled, asynchronously communicated services. As a communication broker we've used RabbitMQ (wrapped in our custom, ProtoBuff-based wrapper). To reduce some excessive inter-process (& inter-dyno) communication, we've applied Redis as a tool to keep short-lived, not-persistent information (but not as a cheap caching workaround for any kind of performance issues ;>).

5 upvotes57.5K views