Software Scalability Questions & Answers for Architect Interview. Web applications scalability is a common problem most of the web architect face. Any internet facing web application may require to be highly scalable due to heavy load of traffic. Now a days, developing a smart web application is much more than creating dynamic Web pages. Irrespective of programming languages like Java, PHP, . Concrete block is ideal for building walls to hold back the soil after you dig into a slope for a pathway, patio, or other project. Block retaining walls are. NET, Python, Ruby or others, these challenges are faced by software architects everyday. As the web is growing, our need of building larger and more scalable applications is also becoming more important. Questions companies ask to hire web application architect of highly scalable websites. Hardware; Microsoft showcases a Cortana thermostat that you can't actually buy. Firm realises its time to put effort into this personal assistant nonsense. InformationWeek.com: News, analysis and research for business technology professionals, plus peer-to-peer knowledge sharing. Engage with our community. 1.Producing keygens, licenses for different protection systems (FlexLM, SentinelLM, ElanLM, CrypKey, etc.) 2.Producing emulators or crack for any kind of dongles. In this decade, lot of distributed web applications are being developed that can utilize the resources from multiple machines, by separating the application functionality into manageable group of tasks that can be deployed in a distribute systems. There are numerous benefits to dividing applications this way, some of the most important are re- usability, scalability, and manageability. In this article, I am trying to cover all the scalability interview questions you may be asked when you are looking for a web application software architect job. This list will also make a foundation for java architect interview questions or any other programming language agnostic software architect interview questions. If you are aspiring to become an architect then you must also check some of the best books available for software architects. What Do You Mean By High Availability? High Availability means the application will be available, without interruption. Achieving high availability for a application is not always a easy task. Using redundant server nodes with clustering is a common way to achieve higher level of availability in web applications. Availability is commonly expressed as a percentage of uptime in a given year. The adding of resource can be done in two ways. Scaling Up. This involves adding more resources to the existing nodes. For example, adding more RAM, Storage or processing power. Scaling Out. This involves adding more nodes to support more users. However, in practical, linearly scalable system may be the best option achievable. Poorly designed applications may have really high cost on scaling up/out since it will require more resources/user as the load increases. Clusters are typically utilized to achieve high availability for a server software. Clustering is used in many types of servers for high availability. App Server Cluster. An app server cluster is group of machines that can run a application server that can be reliably utilized with a minimum of down- time. Database Server Cluster. An database server cluster is group of machines that can run a database server that can be reliably utilized with a minimum of down- time. Join the NASDAQ Community today and get free, instant access to portfolios, stock ratings, real-time alerts, and more! Join Today. Resources include AIA contract documents, handbooks, guidelines, and MasterSpec. The main purpose of clustering is to achieve 1. A typical server software can be running on one computer machine and it can serve as long as there is no hardware failure or some other failure. By creating a cluster of more than one machine, we can reduce the chances of our service going un- available in case one of the machine fails. Doing clustering does not always guarantee that service will be 1. However it in not very likely in case you have many machines and they are located at different location or supported by their own resources. This is popular since many clients may be using middle tier and a lot of heavy load may also be served by middle tier that requires it be to highly available. Failure of middle tier can cause multiple clients and systems to fail, therefore its one of the approaches to do clustering at the middle tier of a application. In java world, it is really common to have EJB server clusters that are used by many clients. In general any application that has a business logic that can be shared across multiple client can use a middle tier cluster for high availability. In this type of load balancing the request is divided in circular order ensuring all machines get equal number of requests and no single machine is overloaded or underloaded. What Do You Mean By 'session Affinity'? This can be avoided by always serving a particular user session request from one machine. All the requests in a particular session are always redirected to the associated machine. This ensures the user data is only at one machine and load is also shared. In Java world, this is typically done by using jsessionid cookie. The cookie is sent to the client for the first request and every subsequent request by client must be containing that same cookie to identify the session. This may cause strange behavior for the users who use no cookie based browsers. In case one of the machine fails or goes down, the user information (served by that machine) will be lost and there will be no way to recover user session. In this approach, the client IP address is associated with a server node. All requests from a client IP address are served by one server node. This approach can be really easy to implement since IP address is always available in a HTTP request header and no additional settings need to be performed. This type of load balancing can be useful if you clients are likely to have disabled cookies. However there is a down side of this approach. If many of your users are behind a NATed IP address then all of them will end up using the same server node. This may cause uneven load on your server nodes. NATed IP address is really common, in fact anytime you are browsing from a office network its likely that you and all your coworkers are using same NATed IP address. Fail over is a important technique in achieving high availability. Typically a load balancer is configured to fail over to another machine when the main machie fails. To achieve least down time, most load balancer support a feature of heart beat check. This ensures that target machine is responding. As soon as a hear beat signal fails, load balancer stops sending request to that machine and redirects to other machines or cluster. JEE Application developer needs to make sure following things are taken care during web application development. All attributes/objects that are saved in HTTP Session are serializable. This means all your custom objects and child objects of that should be serializable. Making changes to any session attribute should be done using session. Attribute() method. If you have reference to a java object that was previously set in session, you must call session. Attribute() method every time you make any change to the object. The best approach may depend on the type of application. However there are few common methods used by application server vendors. Using session persistence, and saving the session to a shared file system (Persistence. Manager + File. Store) . This will allow all machines in a cluster to be able to access the persisted session from the shared file system. Using session persistence, and saving the session to a shared database (Persistence. Manager + JDBCStore) - This will allow all machines in a cluster to be able to access the persisted session from the shared database system. Using in- memory- replication, This will create a in memory copy of session in all the cluster nodes. This theorem has created the base for modern distributed computing approaches. Worlds most high volume traffic companies (e. Amazon, Google, Facebook) use this as basis for deciding their application architecture. Its important to understand that only two of these three conditions can be guaranteed to be met by a system. In this database design rows of a database table are stored separately, instead of splitting into columns (like in normalization and vertical partitioning). Each partition is called as a shard, which can be independently located on a separate database server or physical location. Sharding makes a database system highly scalable. This reduces the index size, which generally means improved search performance. The most common approach for creating shards is by the use of consistent hashing of a unique id in application (e. The downsides of sharding are,It requires application to be aware of the data location. Any addition or deletion of nodes from system will require some rebalance to be done in the system. If you require lot of cross node join queries then your performance will be really bad. Therefore, knowing how the data will be used for querying becomes really important. A wrong sharding logic may result in worse performance. Therefore make sure you shard based on the application need. According to CAP theorem, a BASE system does not guarantee consistency. This is a contrived acronym that is mapped to following property of a system in terms of the CAP theorem. Basically available indicates that the system is guaranteed to be available. Soft stateindicates that the state of the system may change over time, even without input. This is mainly due to the eventually consistent model. Eventual consistency indicates that the system will become consistent over time, given that the system doesn't receive input during that time. What Does Eventually Consistent Mean? This means there can be intermediate states that are not consistent between multiple nodes. Eventually consistent systems are useful at scenarios where absolute consistency is not critical. For example in case of Twitter status update, if some users of the system do not see the latest status from a particular user its may not be very devastating for system. Eventually consistent systems can not be used for use cases where absolute/strict consistency is required. For example a banking transactions system can not be using eventual consistency since it must consistently have the state of a transaction at any point of time. Your account balance should not show different amount if accessed from different ATM machines. Some reference material for better understanding on eventual consistency. What Is Shared Nothing Architecture? How Does It Scale? Shared nothing is recently become popular for web development due to its linear scalability.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. Archives
August 2017
Categories |