SAD TheFirst
SAD TheFirst
"The architecture of a software system is the set of design decisions that are
expensive to change."
This definition focuses on the idea that architecture comprises the fundamental design
choices that have a long-term impact on the system. These decisions are typically
difficult or costly to modify once implemented, so they must be carefully considered at
the start of the development process. It highlights the importance of stability and the
durability of design choices in shaping the architecture of a system.
Software architecture plays a critical role in the success of a software system for
several key reasons:
- Manages Complexity
As software systems grow in size and functionality, they become increasingly complex.
Software architecture helps to break down this complexity into manageable
components (modules, layers, or services), enabling teams to work on different parts
of the system independently while ensuring they can fit together as a cohesive whole.
- Facilitates Communication
- Supports Reusability
Software architecture helps in making key technical decisions, such as choosing the
right frameworks, programming languages, databases, or communication protocols.
These decisions can have a lasting impact on the success and adaptability of the
system.
Software architecture helps ensure that the system is aligned with the business
requirements and goals. It translates business objectives into technical requirements,
ensuring that the system meets user needs, adheres to organizational standards, and
delivers value to stakeholders.
Conclusion
Interfaces between components in a software system define how different parts of the
system communicate and interact with each other. They can be in the form of APIs,
protocols, messaging systems, or data exchanges. Here are some examples of
interfaces between components:
- File-Based Interface
While software reuse offers many benefits, such as reducing development time and
cost, improving quality, and fostering consistency across applications, it also presents
several challenges and problems. Here are some key issues associated with software
reuse:
"The risk of over-engineering your systems" refers to the potential danger of designing
or developing a system with more complexity, features, or detail than is necessary for its
intended purpose. Over-engineering can occur when developers or designers try to
account for too many possible scenarios, anticipate future needs that may never arise,
or aim for an overly perfect solution. While the goal might be to make the system robust
or future-proof, this often leads to wasted time, higher costs, and unnecessary
complications.
Why is it a risk?
1. Increased Development Time and Costs: When a system is over-engineered,
the development process becomes longer because more features and
complexity are added. This can drive up costs and delay project timelines.
2. Difficult Maintenance and Updates: The more complex a system is, the harder
it is to maintain and update. Developers might struggle to understand the over-
engineered components, making it time-consuming to fix bugs or add new
features.
3. Reduced Performance: Sometimes, adding too many features or making the
system too modular can decrease its performance. A system that tries to do
everything might not excel at anything in particular, making it less efficient.
4. Wasted Resources: Over-engineering can mean that resources (like developer
time, server capacity, or financial investments) are used for features that aren’t
necessary or valuable for the user.
Example of Over-engineering
Imagine a small online store that sells a limited range of products. The initial goal is to
build a basic e-commerce site where users can browse products, add them to the cart,
and check out. However, the development team starts adding unnecessary features like
a complex recommendation system powered by AI, an overly detailed user preference
management system, or multi-language support when the store only serves one region.
Instead of focusing on getting the store up and running with essential features, they
spend months adding functions that the business doesn’t yet need. The store takes
much longer to launch, costs far more to develop, and the business has invested in
capabilities that won't be useful until much later—if ever.
- Centralization
- Adaptability
Customers can easily expand the number of clients or servers. Because the server is
centralized, there are no concerns regarding authorization to network resources growing
in size. As a result, the setups only require a small number of people.
- Protection
Because of the centralized design of a client-server network, data is adequately
secured. So only if you’re an authorized user can you access the data via login and
password and two-factor authentication. In addition, if the data is lost, the records can
be recoverable quickly with one backup.
- Operation
It is simple to handle files because they are all kept on a single server. A client-server
network can simply monitor and access necessary file records.
1. Traffic Congestion
The primary disadvantage of client server network is the traffic congestion it undergoes.
If too many clients make request from the same server, it will result in crashes or
slowing down of the connection. An overloaded server creates many problems in
accessing informations.
2. Robustness
As we all know client server networks are centralized. In case if the main server
happens to undergo failure or interference, then the whole network will be disrupted.
Therefore, client server networks lacks on the side of robustness.
3. Cost
The cost involved in setting up and maintaining the server is usually high in client server
network as it does on the network operations. Since the networks are powerful they can
be expensive to purchase. Hence, not all the users will be able to afford them.
4. Maintenance
When the servers are implemented, it is going to work non-stop. Which means it must
be given proper attention. If there are any problems, it must be resolved immediately
without any delay. Hence, there should be a specialized network manager appointed to
maintain the server.
5. Resources
Not all the resources that is present on the server is acquirable. For an example, it is
not possible to print a document on the web directly or edit any informations on the
client hard disk drive.
For example:
Advantage: Centralization
Example: During peak times like the end of the month, many customers simultaneously
access the online banking services to check their accounts or perform transactions. This
leads to the bank's server becoming overloaded, causing the system to slow down or
even crash, disrupting service for both customers and branch employees.
Example of SOA:
● Inventory Service: Keeps track of products in stock and updates quantities after
sales.
● Payment Service: Processes payments from customers through different
methods (credit cards, PayPal, etc.).
● Shipping Service: Handles the logistics of shipping orders, including tracking
and delivery updates.
● Customer Service: Manages customer profiles, preferences, and purchase
history.
Each service operates independently but communicates with others when needed. For
instance, when a customer places an order, the system calls the Payment Service to
process the payment, the Inventory Service to check product availability, and the
Shipping Service to arrange delivery.
Because these services are loosely coupled, the platform can update or replace one
service (e.g., adding a new payment method) without affecting the others. This flexibility
allows the e-commerce platform to scale and adapt to new business needs efficiently.
Microservices Architecture:
Each of these services operates independently but communicates with others through
APIs. For example, when a user opens Spotify and starts playing a song, the
Streaming Service delivers the audio, while the Recommendation Service updates
the suggestions based on the song being played. The Billing Service ensures that the
user has an active subscription.
11. Microservices often communicate through the HTTP protocol, which allows them to
interact with each other using standard HTTP methods like 'GET, POST, PUT, and
DELETE. ' This 'RESTful API' communication ensures decoupled services and platform
independence. Microservices also communicate with each other through network
protocols and messaging mechanisms. Some of the common methods of their
communication are: HTTP/HTTPS, Messaging Queues, RPC (Remote Procedure
Calls), Event Streaming, Service Mesh. These communication mechanisms enable
microservices to interact effectively in distributed systems, facilitating scalability,
resilience, and maintainability.
12. Solution Architects focus on the big picture and aligning technology with business
goals, while Technical Architects delve into the details of implementing and maintaining
IT solutions. In particular, there are some key differences:
- Job Duties:
· Solution Architects are responsible for identifying and designing IT solutions that
align with an organization's goals. They focus on business needs and how technology
can enable them.
- Skills:
· Solution Architects may have stronger skills in business analysis, strategic
thinking, and communication with non-technical stakeholders.
- Embrace lifelong learning: Continuously updating knowledge and skills. This can be
achieved through attending workshops, webinars, or online courses, reading books and
articles, or joining professional organizations. By staying informed about the latest
trends and developments, it can enhance the performance and expand horizons.
- Adopt digital tools: In order to increase productivity, foster creativity, and better
comprehend difficult ideas, learners should become familiar with digital tools and
platforms. These resources can include interactive learning platforms for virtual and
augmented reality as well as software for developing, modeling, or analyzing data.
● Flexibility: Create spaces that can be easily reconfigured to meet the evolving
needs of users. Consider factors like workspace flexibility, collaboration areas,
and technology integration.
● Future-Proofing: Design for user experiences that anticipate future technological
advancements, such as virtual reality, augmented reality, or wearable devices.
14.
· Startups or small companies that need to launch e-commerce quickly and don’t
have time for server issues or complex on-premises software
Just as with SaaS and PaaS, there are specific situations when IaaS is most
advantageous.
· Startups and small companies may prefer IaaS to avoid spending time and money
on purchasing and creating hardware and software.
· Larger companies may prefer to retain complete control over their applications and
infrastructure, but they want to purchase only what they actually consume or need.
· Companies experiencing rapid growth like the scalability of IaaS, and they can
change out specific hardware and software easily as their needs evolve.
15. Google Cloud consists of a set of physical assets, such as computers and hard disk
drives, and virtual resources, such as virtual machines (VMs), that are contained in data
centers around the globe. Google Cloud Platform (GCP) is also a suite of cloud
computing services offered by Google that includes a variety of infrastructure and
platform services for businesses and developers. GCP, which leverages Google’s
extensive global infrastructure, enables organizations to efficiently build, deploy, and
scale applications and services. The platform offers a variety of services for businesses
and developers, including infrastructure and platform services. Some of the key features
of the platform are application development and deployment, big data and analytics,
machine learning and artificial intelligence, storage and databases, networking
solutions, the Internet of Things, and DevOps and continuous integration/continuous
deployment.