Software Architecture - Beginner
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.
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
Contarvariance.
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.
Comments