For customers, it is important to know how Betty Blocks handles high-volume requests to their application. This article aims to answer any questions related to performance of the platform and how we guarantee performance when the app is used at scale.
Performance Statistics (as of Q1 2019)
This chapter includes statistics on which scale the platform currently operates, these statistics were measured in Q1 2019. Please contact support via chat if you need more
Note: Every production app is powered by only one codebase, and all apps share all hardware we have.
General Betty Blocks Platform
- Apps currently running in Production: 5.500
- Database tables running in Production: 80.500
- Database fields running in Production: 916.600
- Back-office views running in Production: 89.600
- Actions running in Production: 102.000
- Endpoints running in Production: 96.500
- Commits made to our codebase: 62.500
Front-end Servers (serving HTML/CSS/JSON/JSON to clients)
- Average response times in platform or back-office: 150 ms
- Average response times from GET endpoints: 500 ms
- Average response times from POST endpoints: 600 ms
- Average daily requests on our front-end servers: 7.1 million
- Average yearly request on our front-end servers: 2.6 billion
Application Servers (Actions, Expressions etc)
- Average calculations per 24 hours: 11.4 million
- Average calculations per year: 4.2 billion
- Average calculation time for actions: 1,7 seconds
- Average time to import large CSV or Excel files: 40 seconds
- Average time to generate an export file: 8 seconds
- Average time to mass delete records: 6 seconds
- Average time to merge changes to production: 30 seconds
- Average time to create a new application: 10 seconds
Background and Technologies Used
The Betty Blocks platform is 100% cloud-based, that means that building applications happens from within the browser. Also, apps on the platform are not the result of generated code, apps are simply 'configurations' on our platform. With this setup we've removed the need to tie a specific app to a specific piece of hardware/server, all of our production apps share the same hardware. In terms of scaling, this results in the possibility that Betty Blocks could scale up servers at any given moment, for all apps. We have auto-scaling enabled on our infrastructure, so as soon as we detect high load on the infrastructure we automatically add new servers.
Codebase That Allows for High Scalability
For our codebase, we use a mix of Ruby on Rails and the highly scalable language Elixir/Erlang. We are currently in the process of transforming our Ruby codebase to a more Elixir-oriented codebase. For every module we transformed from Ruby to Elixir, we achieved over 200% increase in performance, in some cases we increased it by 500%. On top of that, our Elixir codebase needed just 30% of the current Ruby servers we run.
Elixir is a dynamically-typed functional programming language emphasizing a sweet-spot between programmer productivity and functional purity. Utilizing the underlying Erlang/OTP (created by Ericsson in 1986), it offers massive scalability options benefitting from the same technology that drives high availability, high-throughput telecom and networking infrastructure. By being a functional programming language Elixir (and Erlang) are able to fully utilize modern multi-core processors, maximizing resource utilization on off-the-shelf (i.e. commodity) hardware and virtualized environments. Functional programming language in general benefits from the fact that code written in them is easier to reason with (w.r.t. correctness and completeness). The Elixir environment also offers features as hot code reloading (updates without downtime) and dynamic recompilation (i.e. meta programming).
WhatsApp is one of the most successful users of Elixir, they scaled to almost 1 billion active users with only 50 engineers. https://www.wired.com/2015/09/whatsapp-serves-900-million-users-50-engineers/
Any questions? Please contact us via chat. Our Elixir engineers would love to answer any questions you might have!