You’ve seen the release notes for our last few builds and it’s obvious we were focusing on bug fixes and feature completion. We’re waiting on two big features to go through our testing process; Web hooks and Option 66 Provisioning. In the meantime, we’re focusing on optimizing all of Powercode for the next couple weeks. With a large, organized push, we should be able to tackle some known performance issues throughout the software and increase responsiveness and scalability. There are some low hanging fruit for us to focus on that should make a big dent in any performance issues.
Remove duplicate processing of database items
Yes… on just about every page load of Powercode, the same information is being pulled from and processed by the database server multiple times. Systematically going through and removing these will help quite a bit, as each query locks the tables it touches. Are we embarrassed? A little, but the developers that thought it was a good idea are no longer here and we’re going to fix it.
Converting to a new database driver for PHP
It’s no real secret what Powercode’s technology stack looks like. The MySQL driver for PHP that Powercode uses is a little outdated. Again, we are making an organized push to replace it all.
Strategic caching
Most information about the customer isn’t going to change. We shouldn’t need to process all that info every time you load a customer overview. We’re going to intelligently cache different items throughout Powercode and purge them when information is updated. Unfortunately, this piece isn’t entirely a part of our 2 week push, but is in progress.
Explore the replacement of MySQL with Percona
What is interesting about this is that our exploration alone is forcing us to make necessary optimizations as they are required by Percona. Percona is fantastic for increasing throughput over MySQL given it is configured properly, and even if we don’t make the switch, Percona is a little less forgiving which is helping us optimize.
We have gone through and documented over 90% of pages in Powercode and their load times, query times, and other request profile attributes for more long-term optimization targeting.
Beyond the MySQL database optimizations, we’re auditing the server as a whole and changing some things on the install/update process. Before I started working here, while doing some research about Powercode I came across a post by one of our customers comically questioning the addition of Ruby to PHP and tcl. Being here for several months now, I’m questioning the same.
As amazing as Powercode is for our customer base, there are a ton of obvious things that need just a little love. I’ll keep you guys updated on what we’re working on.