How would you design a program so it can easily scale?
Designing an application so it can scale is the key account every senior staff engineer should possess. Scaling allows you to start with a single small application with limited processes that address a small number of the classes. If the architecture is designed properly, the system could scale as you add objects, classes, and data. Not only is this design methodology efficient, but it enables the application to grow without having to be reprogrammed. This is a key factor the interviewer will be interested in and something you will be asked about.
Consider whether the system should be a monolithic service or a combination of microservices. For example, how many databases, caching layers, or message queues are required?
"In my experience, the key to developing an application that can scale begins with the design. When starting, I have the option of using a monolithic service or many small ones. Depending on the application, I choose one of these methodologies, document the design, noting the patterns, and code references. As the application scales, we can refer to the documentation to understand how the base application was built and can scale using the classes, inheriting or extending them."
