I was reading the articles about the technical architecture role and responsibilities and found some interesting pieces of information so thought to share with you all. In this post, I will try to capture some of the techniques and terms commonly use in software architect and ask in interview.
1. SOLID Principals
a. Single Responsibility Principal – Class should have only one responsibility.
b. Open Closed Principal – Open for extension but closed for modification.
c. Liskov Substitution Principal – Covariance and Contravariance.
d. Interface Segregation Principal – Client should never be forced to implement the interface that it doesn’t use
e. Dependency Inversion Principal – Entities must depend on abstraction not on concretions.
2. CAP Theorem – It’s a concept that a distributed database system can only have 2 of the 3 below guaranties.
a. Consistency – All data see the same data at same time.
b. Availability – Every request gets a response success/failure.
c. Partition Tolerance – System continuous to run despite the number of message being delayed.
3. BASE Property of system – These properties are for NoSQL database to manage and curation of unstructured data. It has three properties
a. Basic Availability – Availability of data even in the presence of failure.
b. Soft State – BASE principals completely abandon the properties of ACID. The data consistency is developer problem and should not handle by the database.
c. Eventual Consistency – In some point of time in future data will be in consistent state.
4. Twelve Factor App Principal – Building software as service application.
a. Codebase -
b. Dependencies –
c. Config –
d. Backing Services –
e. Build, Release and Run –
f. Processes -
g. Port Binding –
h. Concurrency –
i. Disposability –
j. Dev/Prod Parity –
k. Logs –
l. Admin Processes -
5. Heuristic Exception – This failure occurs in distributed environment when communication between transaction manager and recoverable resource is not possible for an extended period of time. The recoverable resource may decide to unilaterally commit or rollback the changes done in the context of transaction. Such decision called heuristic decision.
6. Shared Nothing Architecture – It’s a distributed computing approach where each node is independent.
a. No resource shared between nodes
b. The nodes are able to work independently
c. Failure on one node affects the users of that node.
7. Scalability – It’s an ability of a system, network and process to handle a growing amount of load by adding more resources.
8. Cluster – Group of computer machines that can individually run a software. The main purpose of clustering is to achieve 100% availability.
9. Load Balancing – It’s a simple technique for distributing workloads across multiple machines. Most common load balancing techniques are as below.
a. Round Robin
b. Session Affinity
c. IP Address Affinity
10. Sharding – Architectural approach that distribute single database system into a cluster of machine.
No comments:
Post a Comment