DZone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
Refcards Trend Reports
Events Video Library
Over 2 million developers have joined DZone. Join Today! Thanks for visiting DZone today,
Edit Profile Manage Email Subscriptions Moderation Admin Console How to Post to DZone Article Submission Guidelines
View Profile
Sign Out
Refcards
Trend Reports
Events
View Events Video Library
Zones
Culture and Methodologies Agile Career Development Methodologies Team Management
Data Engineering AI/ML Big Data Data Databases IoT
Software Design and Architecture Cloud Architecture Containers Integration Microservices Performance Security
Coding Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Culture and Methodologies
Agile Career Development Methodologies Team Management
Data Engineering
AI/ML Big Data Data Databases IoT
Software Design and Architecture
Cloud Architecture Containers Integration Microservices Performance Security
Coding
Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance
Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks

Integrating PostgreSQL Databases with ANF: Join this workshop to learn how to create a PostgreSQL server using Instaclustr’s managed service

Mobile Database Essentials: Assess data needs, storage requirements, and more when leveraging databases for cloud and edge applications.

Monitoring and Observability for LLMs: Datadog and Google Cloud discuss how to achieve optimal AI model performance.

Automated Testing: The latest on architecture, TDD, and the benefits of AI and low-code tools.

Related

  • Internal Architecture of the SQLite Database
  • 101 Guide To Develop Software for Beginners
  • Hey Developers: Diagrams Don’t Need to Be So Complex
  • Visualizing a Career Path

Trending

  • Agile Estimation: Techniques and Tips for Success
  • Modular Software Architecture: Advantages and Disadvantages of Using Monolith, Microservices and Modular Monolith
  • Build a Digital Collectibles Portal Using Flow and Cadence (Part 1)
  • Message Construction: Enhancing Enterprise Integration Patterns
  1. DZone
  2. Data Engineering
  3. Data
  4. Architecture Diagrams

Architecture Diagrams

Take a romp through architecture design, and explore concepts such as top-down orientation, and process-centric design.

Paul Hammant user avatar by
Paul Hammant
·
Dec. 29, 15 · Analysis
Like (13)
Save
Tweet
Share
6.01K Views

Join the DZone community and get the full member experience.

Join For Free

apologies to the time-honored 180 year old architecture profession, this is about software architecture a much younger interloper that reappropriated the ‘a’ word.

thoughtworks' lukasz plotnicki had a great blog posting bff @ soundcloud . bff is “backend for frontends,” by the way. the artwork on architectures alone great. it is quite close to the style i prefer. let’s pick one of the ones from that article:

what i like:

  • top down nature – humans at the top transitioning through tiers to data-at rest at the bottom (implied in that diagram).
  • it is process-centric. some of their processes are services, some (web) servers.
  • directionality shows invocation not flow of data (though those diagrams are useful too).

remember is process is a thing that appears in taskmanger (windows) or “ps” (unix). it may or may not be listening on a socket. it may or may not have timed or scheduled activities. it may or may not manage threads internally. it the smallest level at which the operating system carves up ram and cpu attention.

what isn’t shown, the article was only about bff:

  • scaling of each service/server or indeed which ones can’t be scaled (monolith implies that)
  • and load balancing for that
  • or reverse proxies
  • containment generally
  • protocols and payloads for connections
  • purpose of node, and technologies

containment

while docker is the container of the year, containment can happen at a number of levels. i find all such things interesting for process architecture diagrams:

containment goes further too – the spring framework is a container for components within one jvm. unless you’ve implemented double-click to drill into a tomcat processes, hosted web-apps and then into springs hosted components show ing those graphically is too much for one chart.

adding names of server technologies add to clarity too. especially things like tomcat which are containers too:

increasingly though these days, teams instantiating java web apps from the main method, and treating the http functionality as a simple library.

scaling

horizontal scaling is the rule, in the modern era. very few things are vertically scaled these days, so in my opinion we should try to give an indication of the former, at leave the latter to the imagination of the reader:

as you can see, we have choices too – should lines pass through a load balance (or reverse proxy) or connect to them? whichever is least lines i think. scaling can be on a machine that has more than one process (less popular these days):

the numbers of horizontally scaled nodes may change between production and non-production environments. if elastic scaling is what your organization is doing then representing a range (x100-200) is fine.

protocols and payloads

know what’s going up and down the stack is something else i think is important.

it’s more cluttered for the lines that are implying the bulk of the bytes of the conversation is in the reply and therefore maybe cacheable.

busses

you know message queues, asynchronous pub/sub things…

final thoughts.

i’ve not previously drawn in websocket style communications from a web server to a browser, and maybe architecture diagrams need that.

in other diagrams i have had to represent a file system directory or two. some processes are doubtless watching them for “new” files. this is a rudimentary queue system, and common with ftp ingesting solutions. i use a manilla folder representation for that.

labels for base languages like java, python can help where your organization develops with more than one. then you would add a box for an in-house piece to help clarify it in the context of many more technologies. in most cases you will also want labels for the purpose of the thing/group: “content management,” “media streamer,” etc.

of course, as mentioned before we might possibly have too many labels for one chart with everything i have listed above.

Software architecture Diagram operating system

Published at DZone with permission of Paul Hammant. See the original article here.

Opinions expressed by DZone contributors are their own.

Related

  • Internal Architecture of the SQLite Database
  • 101 Guide To Develop Software for Beginners
  • Hey Developers: Diagrams Don’t Need to Be So Complex
  • Visualizing a Career Path

Comments

Partner Resources

X

ABOUT US

  • About DZone
  • Send feedback
  • Careers
  • Sitemap

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • Become a Contributor
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 3343 Perimeter Hill Drive
  • Suite 100
  • Nashville, TN 37211
  • support@dzone.com

Let's be friends: