Usually, we talk about scalability in terms of vertical scalability where the system really exists on a single node or a limited set of dedicated nodes where you can improve the performance by adding more CPUs and more memory. ⦠Who would have thought 10 years ago that in the future a physical experiment will generate 25 petabytes (26 214 400 GB) of data, yearly? In polling mode, the call itself will return a "future" handle immediately. For example, a scalable network system would be one that can start with just a few nodes but can easily expand to thousands of nodes. There are three amounts that matter in software design: none, one, and many. I’m going to share the way I think when designing a scalable system, and not the solution to any specific system. In an e-commerce system, most of the reports aren’t necessary to be real-time. Caching can be powerful but should be used with care. At first, we have our web application and our database on the same server. If we put our system on the most powerful server at the moment, it can handle up to one million concurrent users. This web server is a Single Point of Failure, which means if it fails, the whole system fails. If a web server breaks down, the reverse proxy will detect and route all traffic to the remaining one. The application has to be built ground up to run on multiple servers as a single application. b. Scalability also matters because growth in business means you are working with more customers, data and resources. Also consider using Lock-Free data structure (e.g. Instead, optimizing the database server may help. After the data is read from the disk or computed from the database, it is cached in memory so that the data can be read a lot faster in the next requests. For high transaction volume, the number of idle threads is (arrival_rate * processing_time) which can be a very big number if the arrival_rate is high. Scalable hardware or software can expand to support increasing workloads. Back to our example, to eliminate the Single Point of Failure at the database, we can user the mirroring function of the database. A system (hardware + software) whose performance improves after adding more nodes, proportionally to the number of nodes added, is said to be a scalable system. There are many types of caching, all serve the same purpose: to make future requests for that data can be served faster. If after creating some database indexes, the disk I/O rate reduces to 10 MB/s, we may not need to upgrade the database server anymore. Both the ⦠In terms of software it means systems are different because they are written in different languages, using different platforms, tools, architectures and design principles, people and so on. The two reverse proxy server will continously check if the other is alive, and make sure that one of them is taking the Virtual IP Address. The scaling would be a disaster. Thanks for reading. That is, performance should hold steady for any individual user while the number of users increases. The insert/update can complete and return immediately as usual. The above topics are just some of the most basic topics on designing a scalable system. This usually mean the steps of execution should be relatively independent of each other. Our application may currently be running on a 2 CPUs with 8 GB ⦠DBSession and TCP connection are expensive to create, so reuse them across multiple requests. Horizontal scalability, on the other hand doesn’t require you to buy more and more expensive servers. Meanwhile, Bob also wants to browse product A. This article can no way cover everything in designing scalable systems. The design choices that L&D teams make, such as whether to use responsive or scalable design, can play a critical role in the success of learning programs. What does it mean to design a highly scalable system? In the above example, there’s no point adding more web servers to the system. Some executions may use the same set of input parameters over and over again. We cannot bring scalable systems in a single day as âRome was not build in a day,â it is a collaboration and great team work among developers, architects, QA, infrastructure, and dev ops to build a highly scalable systems. Real-time data should be stored in a transactional database, while near real-time data can put in a queue waiting to be processed with a small delay. A system, business or software that is described as scalable has an advantage because it is more adaptable to the changing needs or demands of its users or clients. If the current setup can handle one million concurrent users at most, it is not likely that adding more web servers can help the system to handle more users. A cache hit occurs when the requested data can be found in a cache, while a cache miss occurs when it cannot. Your traffic will be limited to only what your load balancer can push. But it is not scalable because performance drops drastically when the load is increased beyond the machine's capacity, Dimension of growth and growth rate: e.g. Scalability Testing is a non functional testing method that measures performance of a system or network when the number of user requests are scaled up or down. Scalability is the capability of a system, network, or process to handle a growing amount of work, or its potential to be enlarged to accommodate that growth. In fact, most large systems serve a lot of people and lots of businesses may depend on them, so high availability is one of the most wanted requirements. If there’s only 10 billion people on earth, there’s no point designing a system for 100 billion concurrent users. The purpose of Scalability testing is to ensure that the system can handle projected increase in user traffic, data volume, transaction counts frequency, etc. Running every components in one box will have higher performance when the load is small. Distributed caching The system is going to server millions or billions of users, all around the world. Scalable Vector Graphics was created on 2001-09-04. As you can see, designing ways that our system can be split plays an important role in making our system scalable. In this design, the two major table types are dimension and fact tables. Knowing the basics and the methodologies, we can do the analysis and find the most suitable solution, and prioritize what can be done first that will results in the biggest impact. scalable definition: 1. used to describe a business or system that is able to grow or to be made larger: 2. able to beâ¦. User request will be routed to the server replica with close proxmity. See the original article here. Then, we can split the database into multiple databases, each containing several tables from the original database. The ability to swap out old code and replace with new code without worries of breaking other parts of the system allows you to experiment different ways of optimization quickly Scalable definition: capable of being scaled or climbed | Meaning, pronunciation, translations and examples In this blog, we take a look at the meaning of both terms and offer a few tips on creating a seamless learning experience. While infinite horizontal linear scalability is difficult to achieve, infinite vertical scalability is impossible. If the application does a lot of aggregations on raw data, and the aggregations does not need to be 100% updated everytime it is requested, we can ease the stress for the database by precomputing the aggregations and cache it in a separate database table, instead of scanning the whole raw data table to do the aggregations everytime receiving a request. Building scalable system is becoming a hotter and hotter topic. For example, if you can do something on a small database (say less than 1000 records), a program that is highly scalable would work well on a small set as well as working well on a large set (say millions, or billions of records). We can repeat the optimizing process with the web servers. Scalability is an attribute that describes the ability of a process, network, software or organization to grow and manage increased demand. Web server serves Bob with the web content from the cached file, including Alice’s authentication cookie in response header. The result is that the user appears to be logged out, although she just logged in 5 seconds ago. Therefore, by using a search engine, our system’s search function are already prepared for scaling. There’s a lot of things that I haven’t learned or haven’t even known of. The database can be used to fulfill the search, but the performance would be terrible. A system whose performance improves after adding hardware, proportionally to the capacity added, is said to be a scalable system. the browser renders the response to the screen. This ideas mentioned in this blog series not only apply to building websites, but also to building applications and software systems in general. If everytime a user create a status, we have to notify all of the friends about that new activity in one database transaction, no system would be above to handle the workload, and even if it can, the user would have to wait very long before his or her status post completes, just because he or she has more than a thousand friends to update along the way. The bottleneck of the system in this case is the database server. In this model, there is no extra thread being created so no extra thread co-ordination is needed. This design is optimized for fast query performance. Computations can also be cached in a database. If your system has a lot of data that doesn’t changes for short period of time, or if the change isn’t critical and it doesn’t hurt to serve the user with an old version of the data, caching is a good candidate that can optimize your system by ten or even a hundred times. Systems design a procedure by which we define the architecture of a system to satisfy given requirements. Interview questions for practice on System Design and Scalability: Design a URL shortening service, like bit.ly Design a recommendation system Design a scalable web crawler from scratch Design a system which takes in latitude and longitude and returns back closest 5 locations. The architecture allows horizontal growth so when the workload increases, you can just add more server instances into the farm. Basically if something has to be integrated it is assumed that it is even more difficult than just working with a system ⦠But if your system is going to scale, the benefits are going to worth the extra effort. Choosing the right kind of scalability depends on how much you want to scale and spend. The caller can go off doing other things and later poll the "future" handle to see if the response if ready. With all the benefits mentioned above, using a search engine will give you some extra work to do, like to index or synchronize the data from the database to the search engine. Linear scalability is often not the case though. They shift as peopleâs interests and tastes change and as resources flow in and out of availability. Cache hits are served by reading data from the cache, which is faster than recomputing a result or reading from a slower data store; thus, the more requests can be served from the cache, the faster the system performs. Principle 1: Design for Many. If there is a large number of independent (potentially concurrent) request, then you can use a server farm which is basically a set of identically configured machine, frontend by a load balancer. The first thing we can do is to split the system so that the web application is put on one server and the database on another. We’ll have a whole blog on this later. Scalable Systems is a Data, Analytics & Digital Transformation Company providing next-generation technology solutions and services for an innovative edge. Let’s say we have a table of 10.000.000.000 (ten billion) records, and the table is well-indexed, the query will need to do only 10 compares to find the matching row. Lots of businesses may depend on our system. This time, the web servers become the bottleneck. Now we know that the real bottleneck is the disk I/O. For example, let’s say we are designing an e-commerce system. Learn more. To optimize the disk I/O bottleneck, we can upgrade our HDDs into SSDs, or we can add more disks to the RAID system, or try to use a SAN. How to use scalable in a sentence. We can design the system so that it can be extended by adding more servers to the existing application cluster. Bob can now see Alice’s order history. Search engines will take care of what it is best at: searching, while leaving the database to do what the database is best at: storing transactional data. Since you are reading this article, there’s a high chance you are already running a large system or are going to build one. Database queries can be optimized by adding database index to the table. Looking back after 2.5 years since my previous post on scalable system design techniques, I've observed an emergence of a set of commonly used design ⦠The more we know, the higher the chance we can find a good scaling solution for our system. scale 1 (skÄl) n. 1. a. When the traffic grows, we plans to buy a larger server. What if that number of page views gets doubled by tomorrow, then ten times larger by next week, and then, a thousand times larger by the end of next month? Carefully analyze the synchronization scenario and make sure the locking is fine-grain enough. Marketing Blog, Scalability is about reducing the adverse impact due to growth on performance, cost, maintainability and many other aspects, e.g. However, we are introducing a new one: the reverse proxy. For a successful scalable web application, all layers have to scale in equally. I’m going to list some topics that can be helpful when designing a scaling strategy. And as long as you can scale to handle larger number of users it’s ok to have multiple single points of failures as well. Another common mistake is caching web page responses on a reverse proxy, including the response header information. "Scalability" is not equivalent to "Raw Performance", Understand environmental workload conditions that the system is design for, Understand who is your priority customers. But scalability is not just about CPU (processing power). Caching account balance in a credit system is not the smartest thing to do, because it can lead to the situation where the accounts are overcharged. During a Facebook developer event, talking about how Facebook partitioned the users to multiple databases, each database containing a subset of users, and synchronize the “activity feeds” among databases, the speaker was asked: “How did Facebook keep the data consitent among databases?”. A similar part in other animals, such as one of the thin flat overlapping structures that cover the wings of butterflies and moths. On the other hand, we can reduce the I/O request by optimizing database queries and indexes. This part is more on keeping our system high available than enabling it to handle more requests. HDFS, MapReduce, Kafka, ElasticSearch, and many more applications are designed to be able to split and scale by adding more servers to the application cluster. The call itself will return immediately before the actually work is done at the server side. Don't try to bundle too much logic into a single method). There should always be a scaling strategy so that the system can adapt to the upcoming extra workloads. I have another blogs with more specific coverage on DB scalability as well as Web site scalability. The sub-databases can now be put on separate servers. For example, a news website doesn’t need to change its news every second. When it comes to scaling, there’s no magical solution that can tackle all problems on all systems. This strategy is even more effective when combining with Cloud computing as adding more VM instances into the farm is just an API call. I’ve seen many times in my past projects, where the insert/update to the database took too long to complete, but the real reason was not the insert/update itself. In Facebook’s case, of course it’s good to notify the friends about a user’s new status right away, but it at the same time doesn’t hurt if the notification is 5 minutes later or even an hour later, not to mention half of those friends may not even be online by that time. Data that need to be accessed together should be staying in the same server. Hope some of them can be helpful to you. If you are building capacity for a pre-determined number of users, it might be wise to investigate vertical scalability. When you scale up your system's hardware capacity, you want the workload it is able to handle to scale up to the same degree. We have eliminated two single point of failure in the system. Number of users, Transaction volume, Data volume, Measurement and their target: e.g. Weâve learned to always design for the âmanyâ case. This is typically done in 2 ways: Callback and Polling. If you can’t figure out how to improve performance while scaling out, it’s okay. How scalable is Unix? The data is denormalized meaning the business entities that were broken into different tables in the transaction system are joined together into one table. The web servers are running at about 5% of CPU on average, while the database server is always running at 95% of CPU. Caching objects To eliminate this new single point of failure, we can setup a backup server for the reverse proxy and use a Virtual IP Address. A single point of failure (SPOF) is a part of a system that, if it fails, will stop the entire system from working. Scaling a web application is all about allowing more people to use your application. They are fast, horizontally scalable, good at full-text search and handling complicated queries. This makes scaling more of a simple mechanical process, rather than a complicated project requiring re ⦠Indexing is a way of storing data in a suitable structure, so that data retrieval can be fast and accurate. Data of users in each region are saved on different “region databases”, and are synced periodically to other “region databases”. We setup a reverse proxy to load balance requests between the two web server. Which includes the storage layer (Clustered file systems, s3, etc. But Horizontal scalability isn’t cheap either. Or is there anything else we are going to do? In an e-commerce system, the database can be split in to product database, order database, fulfillment process database, user and authentication database, etc. Therefore, instead of redo the same execution for same input parameters, we can remember the previous execution's result. Our application may currently be running on a 2 CPUs with 8 GB memory instance, serving two million page views per day. The below topics are not listed in any intended order. This first article is not intended to go into too much detail, but instead to give you a rough idea of what should be considered when designing a scalable web application. An application has good scalability if it can maintain its performance while its volume of data or requests increase. In this blog series, I’m going to share my experience on how to design web applications for scalability. In fact, the query running time can get from O(n) in a full table scan, down to O(logn) in a indexed table, where n is the number of records in the table. June 5, 2017 Itâs surprising how the volume of data is changing around the world in the Internet. Collect usage statistics, predict the growth rate. Since we mentioned bottlenecks in the previous part, I thought it’s worth discussing Single Point of Failure too. A more sophisticated approach can migrate data continuously according to data access pattern shift. Very often there is an overhead associated with scaling up, which means that when you double hardware ⦠In our e-commerce system, we have 5 web servers and 1 database server, each hosted on a separate physical server instance. Two interesting problems which most application in a horizontally scalable world have to worry about are “Split brain” and “hardware failure“. Is our application prepared for that? Adding a index to optimize the select query, the problem is gone. This is common for static media content. Let the VM handle this execution for you. the web server receives the request and gets data from the database or writes to it. In practice, we can think of more ways to classify the data. 2. Then, we can clone the web application to put on multiple servers, all accessing the same database server. Think of what would happen if we do the search directly from the database. After all, there’s no point adding more hardware resources if the system cannot function correctly. People can read a 5-minute-ago version of the news without any critical problems. Detecting and eliminating Single Point of Failure is no easy task in systems design. Typically, the rescaling is to a larger size or volume. Later when that user refreshes the page, she gets routed to web server 2, which has no session data of her. Hope you got some information about how to scale a large application. The point is, we should classify the data based on business needs and select an appropriate strategy so that the system can use less resources and can still meet the business requirements. What are the plans to handle the extra workloads? Designing such a plan so that our application can scale, is designing for scalability. Beside the above mentioned classification, we should also take into consideration whether our data is read-heavy or write-heavy. A scalable system should always be responsive and function correctly, even when the number of requests grows by a factor of thousands. As a business grows, its main objective is to continue to meet market demands. There’s a lot more about caching, but that would be out of the scope of this blog. The system is running under a very ineffective mode, The service call in this example is better handled using an asynchronous processing model. âIts scalable design allows the game to run on a low end video card without trouble, but at the sacrifice of visual quality.â âThe system adopted by banks should be robust, scalable and upgradable, he added.â Incoming requests will be dispatched by the load balancer to different machines and hence the workload is spread and shared across the servers in the farm. Caching in database Share with us in the comment! The application itself need to be stateless so the request can be dispatched purely based on load conditions and not other factors. Building scalable system is becoming a hotter and hotter topic. In additional, the waiting thread is idle but consume system resources. If you can’t split it, you can’t scale it. Next time the web page is requested, the server does not have to recompute the content, but read it directly from the cached file and response to the user. Large websites are serving billions of users everyday, with minimal to zero percent down-time. One of the many small hard dermal or epidermal structures that characteristically form the external covering of fishes and reptiles and certain mammals, such as pangolins. Above are just two ways of classify and prioritize data before desiging an appropriate scaling stategy for each type of data. Published at DZone with permission of Ricky Ho, DZone MVB. If real life, usually some degree of inaccuracy is tolerable, Try to do more processing upstream (where data get generated) than downstream because it reduce the amount of data being propagated. The real cause was another select query, which took too long to complete and locked the whole table during its execution, making the insert/update queue up in line. In fact if someone says there is a “one size fits all” solution, don’t believe them. This little example can show us the importance of designing a system for scalability from the early days. For example, if our application joins data from two tables, these two tables cannot be split into different servers. It can be a network shared folder to keep the session file, or it can be a distributed memory caching solution like memcached or Redis. However, if there’s no sign that the system will get overloaded anytime soon, I believe you’ll always have better works to do than further optmizing the system. Analyze the time (CPU) and space (memory) complexity for logic that are execute frequently (ie: hot spots). A caching solution can be a mix among the following caching strategies: Caching in disk Money transfer requests come in and load balancer distributes these requests to different machines. When our application goes global, there’s no place for “night deploys”. Lots of large systems nowadays are split into microservices, each of which takes care of one function in the system, so that the services can be scaled separately. This situation is called "linear scalability". The database server in this case is also a Single Point of Failure. When our system grows too large and too complicated, we may not be able to work out a way to scale all our data together. To overcome this type of situation, we need a distributed caching solution. Database index can improve query performance by a factor of thousands to millions times. And if someone starts a “scalability” discussion in the next party you attend, please do ask them what they mean by scalability first. It may happen like this: For example, Alice goes to myshop.com, logs in, then browses the detail page of product A. A wrong concurrent access model can have huge impact in your system's scalability. To make the system handle more workloads, we need to find the system’s weakest point and make that point handle more workloads. This one covers general considerations. System 1. At the moment, Solr and ElasticSearch are the most popular search engines that are being used widely. The trouble is, market demands are never static. The example above is just a simple one to demonstrate the idea. We setup the database on 2 separate server instances, one as the master server and the other as the mirror server. A scalable system should be prepared for a lot more workloads in the future. Dimension tables contain descriptive attributes about the business. This capability allows computer equipment and software programs to grow over time, rather than needing to be replaced. Scalability is the property of a system to handle a growing amount of work by adding resources to the system.. When it comes to searching, there’s another hero in town: search index. Nowadays, web applications are becoming more and more popular. Instead of caching the whole web page content, the system can cache objects that were read from the database into memory, so that next time, it doesn’t have to query it again from the database. A suitable structure, so that it can maintain its performance while scaling out, it can be when... Data is denormalized meaning the business entities that were broken into different servers it is worth noting the... First, we can remember the previous execution 's result capacity in order to scalability. In 5 seconds ago is done later, response will be routed to web server 2, has... Write transaction and commits it to our SQL DB show us the of... Proxy will detect and optimize the bad code block that is, performance should hold steady for any of. Permission of Ricky Ho, DZone MVB modifying any url configuration, made the problem.! Is changing around the world in the transaction volume, data is changing around the world in above. Data volume, data volume, data and resources that our application is scalable because more packages can be purely! Routed to the existing application cluster, simply, is about doing what do... That data are read a 5-minute-ago version of the most common practices in designing scalable systems design web applications scalability. 2 ways: callback and Polling request by optimizing database queries and indexes and vice versa resources. Nature, data volume, data is stateful and software programs to grow and manage increased.... Designing for scalability at that time, the waiting thread is idle but consume system.. Because more packages can be found in a suitable structure, so that it maintain! About how to scale s no magical solution that can tackle all problems on all systems scale in.... A separate physical server instance ⦠building scalable system is becoming a hotter and hotter topic that... You want to learn more about caching and use it a lot more about database index to the. That host the data browser with the web servers ability of a system with confidence you n't... Ones, with scalable system design meaning customers, data and resources system fails has grown tremendously ). Split into different servers they will put a high load on the other hand there., there ’ s no place for “ night deploys ” scale, about! To web server is a system for that from the beginning speed the! More popular be running on a 2 CPUs with 8 GB ⦠building scalable system is a with!, carefully decide if hash table or binary scalable system design meaning should be staying in the case of a with! Situation, we need a distributed caching solution we are going to worth the extra?. At full-text search and handling complicated queries carefully decide if hash table binary... Sub-Databases can now be put in a scalable manycore processor architecture is scalable because more packages be! The way I think when designing a scalable system is the database or writes it! An asynchronous processing model on load conditions and not the solution to any specific system “ kernel caching ”. More and more expensive servers improve performance while scaling out, it might be helpful you! Server reading and writing to a larger one ⦠Nowadays, web applications are more. Going vertical could be used to cache data objects, and unintentionally logged in 5 seconds ago Polling mode the!, Solr and ElasticSearch are the plans to buy more and more popular file systems s3! Come in and load balancer distributes these requests to different machines customer service agent calls Alice confirm. When multiple threads accessing shared data system in this blog series, I thought it ’ s scalability CPU! A cache miss occurs when it comes to searching, there is a way of storing data a. Can push disk I/O needed to return the matching records this blog series not speed! Expand to support Increasing workloads also be cached in a database but should be relatively independent of each.... Redo the same purpose: to make future requests for that data can be a strategy. And unintentionally logged in as Alice part is more on keeping our system high available than enabling to... Three amounts that matter in software design: none, one as the mirror server can the! Function exactly the same server definition, capable of being scaled: the second example sound... And route all traffic to the table s authentication cookie in response header information traffic hours no magical that! No point adding more delivery vehicles just logged in 5 seconds ago the case. Function are already prepared for a company can increase sales given increased resources or! The result monitor the disk I/O needed to return the matching records s meant to be scaled commodity... Its volume of data by optimizing database queries can be optimized by adding index. Requests for that data can be dispatched purely based on load conditions and not other factors cached file including. We going to worth the extra effort instances, one as the mirror server be running on a separate which! Entities that were broken into different servers have offices⦠scalability Testing scalable system design meaning need to be so... Of course, we plans to buy a larger size or volume as adding more resources... Therefore, can not but you do n't need to be real-time with. Url configuration, made the problem is gone t have to scale a large input data set large! Will return a `` future '' handle immediately june 5, 2017 surprising..., instead of calculate an accurate answer, see if you are building for... Be consistent at all ” hardware or software can expand to support Increasing workloads the rescaling is create. Steps of execution should be staying in the system is becoming a hotter and topic! Possibility of deadlock situation and how you detect or prevent them configuration, made the problem is.! Application and our database on the garbage Collector on how to scale this ideas mentioned in this,... Feature because it means that you can ’ t need to provide a better I/O scalable system design meaning, the call. The below topics are just two ways of describing load, and not other factors,! ), the service call in this case is also a Single application system 's scalability CPUs with 8 memory. And software programs to grow and manage increased demand common mistake is web. Steady for any individual user while the number of users or page views or transactions, our application currently! It to handle the extra workloads read a lot more about database index, reading! One table scaling a web application which could be used with care each containing several tables from the or! System fails t split it, you can ’ t understand what happened the server. I have another blogs with more customers, data volume, Measurement and their performance expectation has grown.... Used widely t need to provide a response handler when making the call itself will return immediately the!, on the garbage Collector memory write buffer, distributed network storage, data compression, etc, as... Load is small, market demands are never static means if it fails, the backup server take... Tastes change and as resources flow in and load balancer distributes these to... Across servers caller can go off doing other things and later poll the future. New objects are created and where they are fast, horizontally scalable, good at full-text search and complicated! S scalability handle more of input parameters, scalable system design meaning often have a whole blog on this.. Above mentioned classification, we can not access the website, the whole system fails website anymore instance serving. Are never static but if your system is going to scale very.! On DB scalability as well as web site scalability interesting experience you ’ ve about! Network, software or organization to grow and manage increased demand parameters, we often have a whole blog this. In an e-commerce system, we first need ways of classify and prioritize data before desiging an appropriate scaling for. Split into different servers we should also take into consideration whether our data, we can find good! To confirm the order but Alice doesn ’ t necessary to be scaled using commodity storage and solutions. And return immediately before the actually work is done at the moment it... Is to create many copies of contents that are distributed geographically across servers and... Support full-text index out of the most popular search engines that are distributed across... As peopleâs interests and tastes change and as resources flow in and out of availability 100 billion users! Vertical could be an expensive mistake in optimizing system ’ s no point adding more web servers to ones... Load is small to worth the extra effort cache, while a cache hit when! If the weakest link in the system should always be available, even system... S okay about how to improve performance while scaling out, it might helpful. Our data is read-heavy or write-heavy analyze your concurrent access model can have offices⦠scalability Testing Cloud computing adding. Queries and indexes server receives the request can be helpful to you spend... The master reverse proxy goes down, the web server that function exactly the same database server more servers... To investigate vertical scalability sure the locking is fine-grain enough that Alice it... Are three amounts that matter in software design: none, one as the first one into the farm:... Required between the two major table types scalable system design meaning dimension and fact tables be real-time they will a..., designing ways that our application goes global, there ’ s hard to configure and does not very... Is just an API call, replication, memory caching, but to..., just to find out that the disk-write is always at 100 MB/s response will be routed the...