Solving imaginary scaling issues
Michele Riva
Michele Riva
Senior Software Architect @NearForm
Google Developer Expert
Microsoft MVP
MicheleRivaCode
Real-World Next.js
Build scalable, high performances and modern web applications using Next.js, the React framework for production
MicheleRivaCode
MicheleRivaCode
Scalability
Software scalability is an attribute of a tool or a system to increase its capacity and functionalities based on its users’ demand. Scalable software can remain stable while adapting to changes, upgrades, overhauls, and resource reduction.
Source: https://fullscale.io/blog/what-is-software-scalability
MicheleRivaCode
MicheleRivaCode
Scalable software can remain stable while adapting to changes, upgrades, overhauls, and resource reduction.
MicheleRivaCode
The system should remain stable when applying any kind of change to both the infrastructure and application
Changes
e.g., switching from Compute Engine to Cloud Run to make the whole infrastructure more cost-effective
MicheleRivaCode
The system should remain stable when upgrading any of their components
Upgrades
e.g., releasing a new software version or upgrading the runtime
MicheleRivaCode
The system should remain stable during maintenance and debugging
Overhauls
e.g., if the system is not working properly, it should be easy to inspect production deployments
MicheleRivaCode
The system should remain stable
under high load
Resource reduction
e.g., an e-commerce is rolling out a great promotion with huge discounts, there's a lot of traffic on the website and the connection should remain stable
MicheleRivaCode
just 4 scenarios
MicheleRivaCode
imaginary issue #1
"This programming language doesn't scale"
MicheleRivaCode
MicheleRivaCode
MicheleRivaCode
MicheleRivaCode
imaginary issue #1, debunked:
You're not Facebook, Twitter, or WhatsApp
MicheleRivaCode
MicheleRivaCode
MicheleRivaCode
- How many active users do you have today?
- How many active users do you expect to have in five years from now?
- How much would it cost to teach your whole team to code in Erlang, Rust, C++, Scala, or any other "highly scalable" language?
MicheleRivaCode
MicheleRivaCode
imaginary issue #1,
debunked (again):
Good PHP code scales better than bad Erlang code.
Good Ruby code scales better than bad Scala code.
MicheleRivaCode
imaginary issue #2
"We need to use cloud functions to manage high traffic. Serverless computing scales better"
MicheleRivaCode
MicheleRivaCode
- 5GB free
- $0.12 per GB
Networking
- 128MB RAM, 200MHz CPU: $0.000000231 per 100ms
- 1024MB RAM, 1.4GHz CPU: $0.000001650 per 100ms
- 8192MB RAM, 4.8GHz CPU: $0.000006800 per 100ms
Compute time
- First 2M free
- Beyond 2M $0.40 per million
Invocations
MicheleRivaCode
Simple REST API example
Let's say we have a simple but critical REST API that gets 50 requests per second (129,600,000 requests per month).
The average execution time is 300ms.
We can use the cheapest RAM option (128MB).
We require around 100kb of bandwidth per execution.
MicheleRivaCode
MicheleRivaCode
Simple REST API example #2
Let's say we have a simple but critical REST API that gets 100 requests per second (259,200,000 requests per month).
The average execution time is 300ms.
We can use the cheapest RAM option (128MB).
We require around 100kb of bandwidth per execution.
MicheleRivaCode
MicheleRivaCode
MicheleRivaCode
MicheleRivaCode
imaginary issue #2, debunked:
Cloud Functions are good at managing spiky and unpredictable traffic
MicheleRivaCode
MicheleRivaCode
imaginary issue #3
NoSQL databases scales better than RDBMS
MicheleRivaCode
MicheleRivaCode
Companies actively using sql databases
- Uber
- Netflix
- Spotify
- Instacart
- Twitch
- Stackshare
- RobinHood
- Revolut
- Trivago
MicheleRivaCode
Good PHP code scales better than bad Erlang code.
Good Ruby code scales better than bad Scala code.
Remember?
MicheleRivaCode
Good MySQL knowledge is better than any NoSQL poor knowledge
Good experience with PostgreSQL is better than no experience with NoSQL
imaginary Issue #3, debunked:
MicheleRivaCode
imaginary issue #4
We need everything custom, so it fits our use case
MicheleRivaCode
MicheleRivaCode
Frameworks
MicheleRivaCode
Frameworks already provide everything we need to implement most of the custom business logic we need in our apps
imaginary Issue #4, debunked:
MicheleRivaCode
how do I determine if my application is really scalable or not?
MicheleRivaCode
Is my team scalable?
MicheleRivaCode
Are we adopting this technology because we're excited about it, or are we doing this because it's the best solution to our problems?
MicheleRivaCode
Do we know our app traffic?
MicheleRivaCode
But I want to have fun!
MicheleRivaCode
MicheleRivaCode
@MicheleRiva
@MicheleRivaCode
/in/MicheleRiva95
www.micheleriva.dev
Solving imaginary scaling issues
By Michele Riva
Solving imaginary scaling issues
- 393