With the release of Version 0.7 came many new features, as well as improvements to the technology. In this post, I will introduce the rework of our HTTP framework, which positively impacts the overall performance of Appwrite.
This rework introduces asynchronous and non-blocking coroutines, allowing HTTP/S requests to Appwrite's API to be significantly improved under load. Using some new internal components, most significantly our move to the Swoole HTTP server, we are better utilizing memory and CPU, which has resulted in much improved performance for the Appwrite API layer.
To illustrate the improvements, we have benchmarked various scenarios against version 0.6.2 and version 0.7.0. We performed requests to multiple endpoints of Appwrite to read and write data. All requests were made to endpoints that require authentication and conduct abuse control, functions which also benefit from these improvements.
The following results are for a 5 minute period of load and stress testing with 500 concurrent clients using k6.
As can be seen, only 98% of all requests were successful, the rest resulted in a timeout due to overload.
With version 0.7 things look quite different. Not only were all requests successful, but there were almost twice as many requests with on average around half the response time.
Considering all factors together, this signifies a total increase in performance of ~91%.
This performance boost is part of a series of steps we are taking to ensure developers have the ability to take full advantage of their Appwrite servers. With upcoming new versions, we plan to share more data and insights from both the development process and Appwrite benchmarks.
If you are interested into Appwrite, you can check some of our getting started guides for Web, Flutter, or Server, and visit our Discord community where we chat about Appwrite non-stop with over 1,200 fellow Appwriters.
If you’re excited about these improvements, you should probably also track what is coming up next by visiting our Github projects. You can also ask for new features on our Github issues and go over our upcoming feature specs on the Appwrite RFCs repository.