All applications require a user interface , a database of some sort and something in between to glue user experience with things being generated, whatever we are ordering a pizza or creating a invoice.
On the past years, technical evolution, internet and globalization made possible today that a small company in a any country can sell their products across the world. However applications were still being built the same way.
This poses a interesting challenges to companies to when and how to scale their applications together with their business and the typical solution was throwing more powerful hardware and bandwidth to support the demand.
This means that in a typical global environment a application must have their servers, databases, websites on infrastructure that needs to support the peak, lets take a example of a typical ecommerce application. It needs to support Christmas demand on their infrastructure but they pay for it the rest of the year.
Achieving the right scale properly without destroying any budget is a challenge as companies need to scale to a they cannot know first hand and they have to have teams managing the server park, software updates, redundancy, security. Many firms have SAASOPS departments specifically tuned to handle all these, at great cost
- Software must scale to a global Scale
- Software need to be usable in any platform including mobile devices
- Usage of a variety of database, application , email and web servers
- Bandwidth and network must scale accordingly
- Handling server load balancing, server replication, security and updates
- Data storage, security and replication
We believe companies should focus their resources, specifically human and financial to their own business and not on infrastructure. We don’t think companies should be worrying about latest software updates in their database servers or worrying about calculating a infrastructure scale to support their peak , and paying the ‘peak’ for the rest of the year.
Cloud providers understood this and in today’s modern software architectural patterns, storage, database, displaying and computing are totally abstracted. For example data storage is cheap, automatically backed up and replicated. Same for databases, whatever they are document store or simply sql instances, they are architectured to provide automatic replicas and backups and scale according to needs.
Recent application frameworks, especially web based, shifted from server side computing to client side computing reducing dramatically the need for server side computing.
But the biggest paradigm change comes from server side execution. Today we have at our disposal functions that execute as micro services, that exist in the amount called and exist only when they are required. This allows a entire application to live only when it is executing but scale from 0 to a gazzillion instances when needed.
A Serverless Architecture
Using microservices together with data storage and sql services, combined with latest application frameworks we can build software solutions that are totally scalable while totally cost efficient.
- Application Scales up and also down
- Cost related to usage. Pay what you use
- Bandwidth, data replication, security updates, load balancing are automatic
- No need to manage servers
- Code architecture is more strict, thus rending better quality applications with less faults
- Already existing monolithic applications need to be redone