Hope all is well around this special time. It has been a fruitful month with enhancements on the product side and infrastructure side.
We added full UTF-8 character support when evaluating tasks' response body. If your target's response body contains characters such as a pile of poo 💩, and you want to set up conditional notifications around those data, you can do it now. We should have supported this from day one, but due to an improper database charset configuration, we ended up supporting a much smaller set of UTF-8 characters (more details see: https://mathiasbynens.be/notes/mysql-utf8mb4#character-sets). So my apologies to those who send requests to emoji rich websites, and have seen message
Error saving response body in your task execution history. This issue had been fixed.
The charset configuration update requires a database migration. It was the most time consuming migration we've done since it needs to migrate one of our largest database tables, which stores tasks' response body. And yes, every single row. Service availability has always been our top priority. To make sure we have a smooth migration in production, we stress-tested the process in our stage environment, which has an identical database setup as our production environment. The migration took 3.5 minutes for 8000+ rows that store 3 GB response body in HTML format, this all happened on an idle server without disrupting any core services.
We also introduced a task retry mechanism. Web tasks that timed out will be automatically retried one time before marked as failed. This is particularly useful when the HTTP target is served outside of North America, where we host our servers. This would increase the success rate for tasks with those HTTP targets. Eventually, we will deploy servers in more geographic locations to reduce failures due to network connectivity issues. So far, our web requests to European and Asian domains have enjoyed a pretty high success rate, but we'll continue monitoring our success rate to help decide when to start expanding our server regions.
We optimized our response body storage logic. This dramatically reduced the database footprint when response body remains the same for a web task. This helps iHook scale as our user base keeps growing, and paved the way for us to support much more than 20 task execution history we support today, which is far from enough for users who trigger once per minute and want to review task execution detail a couple of hours earlier.
We refactored the way user authentication data is stored and accessed, which reduces the database queries needed to serve a client request. Users should experience slightly faster loading speed when accessing various functionalities in the dashboard. We also refactored the logic that connects the scheduler and the HTTP request worker, which dramatically reduces the amount of database write transactions. This helps reduce the delay between a web task's scheduled execution time and actual execution time.
Thank you for reading! And thank you for your trust with iHook. It's encouraging to see new friends joining our community each week, and to see that iHook's automated web tasks are making your life a little bit easier. In return, we'll keep working hard on delivering high-quality features, that provide great user experiences. Stay safe!