Michele Riva
Senior Software Architect @NearForm
Google Developer Expert
Microsoft MVP
MicheleRivaCode
Build scalable, high performances and modern web applications using Next.js, the React framework for production
MicheleRivaCode
MicheleRivaCode
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
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
e.g., releasing a new software version or upgrading the runtime
MicheleRivaCode
The system should remain stable during maintenance and debugging
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
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
MicheleRivaCode
"This programming language doesn't scale"
MicheleRivaCode
MicheleRivaCode
MicheleRivaCode
MicheleRivaCode
You're not Facebook, Twitter, or WhatsApp
MicheleRivaCode
MicheleRivaCode
MicheleRivaCode
MicheleRivaCode
MicheleRivaCode
Good PHP code scales better than bad Erlang code.
Good Ruby code scales better than bad Scala code.
MicheleRivaCode
"We need to use cloud functions to manage high traffic. Serverless computing scales better"
MicheleRivaCode
MicheleRivaCode
MicheleRivaCode
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
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
Cloud Functions are good at managing spiky and unpredictable traffic
MicheleRivaCode
MicheleRivaCode
NoSQL databases scales better than RDBMS
MicheleRivaCode
MicheleRivaCode
MicheleRivaCode
Good PHP code scales better than bad Erlang code.
Good Ruby code scales better than bad Scala code.
MicheleRivaCode
Good MySQL knowledge is better than any NoSQL poor knowledge
Good experience with PostgreSQL is better than no experience with NoSQL
MicheleRivaCode
We need everything custom, so it fits our use case
MicheleRivaCode
MicheleRivaCode
MicheleRivaCode
Frameworks already provide everything we need to implement most of the custom business logic we need in our apps
MicheleRivaCode
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
MicheleRivaCode
MicheleRivaCode
@MicheleRiva
@MicheleRivaCode
/in/MicheleRiva95
www.micheleriva.dev