Poland
Placker | Accelerating SaaS growth via architecture refactor
Software supplier
Product
Website
Placker is a project management SaaS from the Netherlands. A comprehensive tool for managing work across teams and projects. Used globally by 130k users including companies like Accenture and Expedia.
Technology Stack
- PHP
- Symfony
- MySQL
- RabbitMQ
- Redis
- JavaScript
- AngularJS
- RxJS
- Docker
- DigitalOcean
- DataDog
- GitLab CI/CD
- PHPUnit
- Cypress
- PHPStan
- Sentry
Challenge
Placker was already a mature SaaS product used by thousands of teams in over 40 countries around the world. Users love it because of the large feature set and tremendous flexibility. When we first saw it, we were impressed as well. Almost any option you imagine for a project/task management software - Placker has it!
An impressive number of features, introduced in the first few years, increased code complexity and added undesirable dependencies. This made the development of further features difficult and time-consuming. It also increased the effort required for maintenance and raised the entry threshold for new developers. Placker's architecture enabled a quick integration with Trello but at the same time closed it for further integrations.
Our challenge was to introduce an agile process of architecture refactoring to restore the product growth and make it extremely open to extending the feature and further integrations.
Goals
- Make SaaS open for multiple integrations
- Reduce time-to-market for new features
- Make the platform easier to maintain
Solution
- Maintaining a high speed of introducing new features and integrations required to implement a flexible, and easily extendible architecture. We also did not want to rewrite the application from scratch as the existing codebase was relatively new and complex. We have started with the introduction of an event-based architecture, that allowed us to decouple different parts of the codebase one by one.
- After having the initial message-driven architecture in place, we started to extend it by introducing a concept we called extensions. Extensions react to changes that happened in the system and can add reactions to that changes. Example: Trello extension listens for card changes and if it knows the card is also on Trello - it updates Trello with the new state.
- Thanks to the message-driven architecture we were able to introduce more improvements: queues and processing computing heavy changes asynchronously, monitoring of the changes (metrics with change types, customers involved etc) and adding new integrations (Google Calendar, Zapier, Slack).
- We have introduced an approach that is based on releasing features soon, gathering feedback from ourselves and initial users (features available as a beta version), and then, based on the feedback, we released a second, upgraded version to all users.
Outcomes
Our agile process of architecture refactoring resulted in a steady, 4% yearly decrease in software complexity. New architecture was introduced step by step, making Placker easier to maintain, develop and integrate with every iteration. After 18 months we managed to reduce the maintenance effort and development time for new features by 40%.
worked on this project
Michał
CTO