0% found this document useful (0 votes)
10 views6 pages

Soft Architect

The document outlines the principles of software architecture, emphasizing the importance of documentation and diagramming for clarity and communication among team members. It details various diagramming techniques, including flowcharts and the C4 model, and describes several architectural patterns such as layered, client-server, event-driven, microkernel, microservices, and cloud-native architectures. Additionally, it provides examples of public cloud platforms like AWS, Microsoft Azure, and Google Cloud Platform for architecting applications.

Uploaded by

vb_pol@yahoo
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
10 views6 pages

Soft Architect

The document outlines the principles of software architecture, emphasizing the importance of documentation and diagramming for clarity and communication among team members. It details various diagramming techniques, including flowcharts and the C4 model, and describes several architectural patterns such as layered, client-server, event-driven, microkernel, microservices, and cloud-native architectures. Additionally, it provides examples of public cloud platforms like AWS, Microsoft Azure, and Google Cloud Platform for architecting applications.

Uploaded by

vb_pol@yahoo
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 6

Software Architecture Diagramming and Patterns

Software Architecture
Describes the fundamental concepts and properties of a system within the context of its environment,
relationships, and principles of design.

When to Document What to Document Architectural Diagrams

Documentation is vital Core components Good software architectural


when more than one High-level architecture diagrams are sources of
person is involved in the Significant changes truth and clarity.
project. It helps prevent reasoning Conveys a software system’s
technical debt and provides essential composition and
stable reference. behaviors to technical
/non-technical audiences.

Types of Diagramming

Forward Design Backward Design

Forward design entails creating your Backward design involves diagramming


diagrams before you or your team after the code has already been written.
starts coding.

Characteristics:
Easy to access and share.
Diagram core components and interactions.
Highlight critical system interactions and relationships.
Easy to identify potential flaws or areas for improvement.

Diagramming Basic
1. Flowchart: Most basic and simple tool to visualize the logic of an algorithm or program before
you start coding.
Flowchart Diagramming Convention

Name Symbol Function Name Symbol Function

Represent the starting


Start/End Represents processes (e.g.,
point or terminal point of Process
mathematical operations)
a flowchart.

Connects components in a
Flow lines flowchart and indicates Database Represents databases
flow direction.

Represents information or
Input/Output Person Represents actors or users
data that is transmitted or
or a software system
received.

Represents checkpoints to
Decision evaluate conditions for
making decisions.

2. The C4 Model: A practical way to document software architecture into four levels:
Context (level 1): Shows what the system does, who uses it, and what other system it connects to.
Containers (level 2): Shows the main parts (like apps, databases, or services) and how they work
together.
Components (level 3): Break down each main part into smaller pieces, showing how the code
inside is organized.
Code (level 4): The most detailed level, which shows specific code elements like classes and
function.
Software Architecture Diagramming and Patterns
3. The 14 UML Diagrams: Unified Modeling Language (UML) is used to create diagrams for
documenting level 4 architectural elements.

Categories of UML Diagram

Structured Behavioral
Show what objects are Show how those objects
within a modeled system. interact with each other.

Class Component Activity Communication


diagram diagram diagram diagram

Deployment Object Interaction State machine


diagram diagram diagram diagram

Package Profile Sequence Timing


diagram diagram diagram diagram

Composite structure diagram Use case diagram

Software Architecture Patterns


1. Layered (N-tier) Architecture: Divides components (or applications) into horizontal, logical
layers. Each layer manages its specific logic independently, a principle known as separation of
concerns (SoC).

Types of Layered Architecture:

1- Closed layer: Request must pass through 2- Open layer: Some layers are open to allow
each preceding layer, as shown below. direct access to layers below them when by
passing layers makes sense for certain requests.

Presentation Presentation
Manages user interface Component Component Component Component
and user input.

Business Business
Handles core business Component Component Component Component
logic.

Persistence Persistence
Manages data access. Component Component Component Component

Database Database
Stores and retrieves data.
Software Architecture Diagramming and Patterns
2. Client-Server Architecture: Multiple nodes or clients connected over a network or internet
connection who communicate with a central server.

Components

Service requesters
Client Client
Service requesters (aka clients) that
send requests.
Server

Service providers TCP connections

Service providers that respond to requests.


Client Client

3. Event-Driven Architecture: Distributed asynchronous architecture patterns that are highly


adaptable.

Independent components react to and process events without depending on each other.
Easy to update or change components without impacting others.

Event

Event
Queue

Event Mediator

Event Event
Channel Channel

Event Processor Event Processor Event Processor Event Processor

Module Module Module Module Module Module Module Module

Module Module Module Module Module Module Module Module

Topologies of event-driven architecture


Mediator topology
A central mediator coordinates tasks that have multiple steps. It has four main components:
Event queues
Event mediators
Event channels
Event processors

Broker topology
It relies on brokers and event processors that handle tasks directly, creating a chain of events
that are processed sequentially. Broker topologies have two main types of components:
Brokers
Event processors
Software Architecture Diagramming and Patterns
4. Microkernel Architecture (Plug-In Architectures): Used to implement applications that can
be downloaded as a third-party product.

Commonly found in internal business applications.

Plug-in Plug-in
component component

Core System

Plug-in Plug-in
component component

Types of microkernel architecture

A core system Plug-in modules

contains the minimum business logic Used to add more features to the soft-
needed to make the software system ware system’s functionality.
operational.

5. Microservices Architecture
Consists of groups of small, independent, self-contained services with small code bases.

Client Client Client Client Client

User Interface

Microservice Microservice Microservice Microservice


Component Component Component Component

Module Module Module Module Module Module Module Module

Module Module Module Module Module Module Module Module

Database Database Database Database

Features of microservices architecture:


Independent deployment
Decoupling
Automation required
Service components
Software Architecture Diagramming and Patterns
6. Cloud-Native Architecture: Primarily used for distributed computing systems where the
interactions between components are mediated through one or more shared spaces
(the components exchange tuples and entries).

Components in cloud native architecture

Processing units Virtual middleware

Includes data replication engine and an Manages requests, sessions, data replication,
asynchronous persistence store (optional) distributed request processing, and
for backup. process-unit deployment.

Processing Unit

Module Module Module Processing Processing Processing


Unit Unit Unit

In-Memory Data

Virtualized Middleware

Messaging Grid Data Grid Processing Grid

Deployment Manager

Data Replication Engine

Public Cloud Platforms for Architecting Applications


1. Amazon Web Services (AWS): A mix of infrastructure (IaaS), platform (PaaS), and packaged
software as a service (SaaS), so it has a wealth of resources like Workload Discovery and the
AWS CloudFormation Designer for creating, reviewing, and diagramming your
application’s architecture.

Example of an AWS Architecture:

VPC

Private subnet

Data Component
Client API

AWS Lambda Amazon Neptune


Gremlin function
Amazon AWS AppSync
API Gateway

AWS Lambda Amazon OpenSearch Service


Gremlin function (Successor to Amazon
Elasticsearch Service)

Amazon API Gateway


serviceGremlin API
Software Architecture Diagramming and Patterns
2. Microsoft Azure: The second-most popular cloud computing solution.

Example of a reference architecture describing how a solution uses machine learning to create
movie recommendations automatically and at scale.

User and movie interaction data User clients

2 3 4 6

Azure Blog Data Science Azure Machine Azure Container Instance


Storage Virtual Machine Learning service - model service

- Azure Cosmos DB

3. Google Cloud Platform (GCP): A collection of cloud computing services and the third-largest
IaaS provider.
Example of a reference architecture for a simple, containerized application.

Containerized workload with Load Balancer

2. Route to service
Cloud Load Balancing Kubernetes Engine

1. Requests

Device

To learn more, feel free to take help from the following resources:

Grokking the Modern Scalable Systems 101 How to Design a Web


System Design Interview Application: Software
Architecture 101
> > >

You might also like