Ref: https://www.udemy.com/course/aws-certified-cloud-practitioner-new/learn/lecture/20054238
Client-Server Paradigm for Web Applications

- A client app (e.g. your web browser) sends a request via the internet (group of networks) to a remote server (e.g. a Gmail server)
- The server is constantly listening to requests from clients: when a request comes, it can accept it and initiate a connection with that client
- Clients and servers identify each other via their IP addresses
Physical Servers and Hardware (HW)
Computer/Server components
- COMPUTE: processes data, performs calculations
- HW components: CPU (Central Processing Unit), GPU (Graphical Processing Unit)
- GPUs are much faster and much more expensive than CPUs → GPUs offer high performance for game graphics, big data processing, ML training, GenAI…
- MEMORY: temporarily stores frequently or recently accessed data → data stored in memory can be accessed at high speeds
- ❗ Data in memory is temporary or ephemeral, i.e. not reliable! → easily overwritten or lost (e.g. when starting other programs, or restarting the server)
- HW components: RAM (Random Access Memory)
- STORAGE: stores data persistently (data access much slower than in memory)
- HW components: disks - SSD (Solid State Drive), HDD (Hard Disk Drive)
- Data can be stored with different structures: block storage, object storage, file storage (file systems)
- Database (DB): data stored with additional structure & intelligence → makes it easier to search (query) and process than with regular storage
- NETWORK: communicates with external devices, prepares data to be sent to other devices, receives data from other devices
- HW components: cables, NW Interface Card (NIC), L3 Router, L2 Switch, DNS server…
- Networking can use many intermediate devices for correct routing through a NW
- 💡 Physical HW can be emulated using advanced tech like virtualization and containerization → virtual components and servers offer more efficient use of physical resources
Challenges of physically hosted servers
- Traditionally, IT businesses hosted physical servers in their premises or Data Centers (DCs)
- Problems/challenges
- Difficult to predict scale: how many users will use the app? Will they use our app differently depending on time of year? Time of week? Will our app become popular and need to increase our capacity?
- Wasted capacity: since it's difficult to predict scale, buy big and expensive servers as a precaution, but they waste a lot of capacity in the beginning…
- Management overhead: engineers must keep SW in servers updated, must hire staff to monitor server status 24/7, adding and replacing HW takes time…
- Maintenance costs: servers occupy space, must pay rent for facilities that host the servers, must pay security staff, must pay power supply and cooling…
- Usually very localized in the beginning, with very low physical resilience: what if there's an earthquake or natural disaster? What if our facilities get vandalized?
- Getting started is very costly and expensive