Domain Name Server
•
enables WWW
•
changes domain name to ip address
Load Balancer
•
Horizontal scaling is always better than vertical scaling
◦
prevent service interruption
◦
even you can scale server vertically, there is an limit
•
enables horizontal scaling
◦
by distributing requests to the duplicated server
Web Application Server
•
executes business logic and sends responds through HTML
•
Should choose proper server language (Node.js, Ruby, PHP, Scala, Java, C#, .NET, ...) and its web MVC framework (Express for Node.js, Ruby on Rails, Play for Scala, Laravel for PHP)
Database Server
•
struct, insert, find, modify, delete, and compute data
•
Each backend service could have distinct different database
•
SQL vs NoSQL
Cache Service
•
provide key-value data that could be found in O(1)
•
Instead of re-calculation, application retrieves result from cache
•
Redis / Memcache
Job Queue & Server
•
application should do background task asynchronously
◦
For example, google crawling and indexing data from internet
•
Job Queue architecture has two components
◦
Queue consists of Jobs that is FIFO (First-in-first-out)
◦
Job server that runs job in queue