develpreneur podcast

Peer-To-Peer : An Architecture Pattern Where Everyone Shares The Work

This episode digs into the peer-to-peer software architecture pattern.  It is common among file-sharing and crypto networks.  Likewise, the pattern is not too complicated.  However, it is robust and secure as we have tightly defined communication paths.  We also have every node playing the role of both client and server. The Peer-To-Peer Pattern Defined The description of peer-to-peer is even less complex than client-server.  We have two nodes with a bi-directional link between them.  Each node can serve as a client or as a server.  Therefore, we also see this at times when we want to keep two machines synchronized for load balance and fail-over purposes.  The network can expand to any number of nodes.  However, each node connects to... Read more

develpreneur podcast

Broker Pattern – Send Requests To The Correct Worker

The broker pattern may seem very similar to some others we have examined.  However, it is more about distributed systems than balancing traffic.  The pipe-filter and master-slave patterns provide single path processing.  This pattern sends the requests down different paths based on the request itself. The Broker Pattern Defined A broker pattern is a sort of tree structure.  We start with a client that makes a request to the broker.  The broker assesses that request and then sends it to a server that can handle the request.  Note that the selected server is not a candidate for load purposes as much as its services.  The broker queries servers (or server report when they register) for services provided.  This pattern allows... Read more

develpreneur podcast

Pipe-filter : An Architecture for Processing Data

The pipe-filter architectural pattern is very common and used to process data.  It is flexible and scalable.  This pattern has existed in other areas.  However, it is the perfect solution for software problems that need steps or filters. The Pipe-Filter Pattern Defined Think of a start and an endpoint.  Data has to go from beginning to end, and work will be done on it along the way.  The work done is the filters, and we can place any number of filters along the journey.  Each one is stand-alone in a sense as it takes in data, does the work, and then spits it out on the other end.  We can change countless steps like this together as one might do... Read more

develpreneur podcast

Master-Slave : An Architecture For Distributing Work

We switch gears in this episode and look at a pattern for getting work done.  The master-slave pattern can be confused with the client-server.  However, they are very different.  The main difference is how the work flows through the system. The Master-Slave Pattern Defined This pattern is a way to get large jobs done.  In contrast, the client-server pattern focuses on multiple users and requests.  The master-slave pattern provides an example of delegating work within a system. The requests come into the master.  Then, the master splits up the work into pieces that are farmed out to the slaves.  When a slave completes the work, the results are sent back to the master.  The master then puts together the results... Read more

develpreneur podcast

Client-Server Pattern – Software Architecture

The discussion of patterns sort of goes backwards this episode.  First, we look at the client-server pattern.  It is an older and well-established pattern.  However, it is not suited to modern solutions.  This approach harkens back to the old days of mainframes and massive servers that were shared resources for application users. The Client-Server Pattern Defined This pattern is the simplest version of a layered pattern.  There is the front-end client and the backend server.  Unlike the layered approach, the client-server pattern is more focused on resources.  This approach embraces the idea of a central server that clients connect to for sharing data.  It also gives a central point (the server) to scale the application.  Thus, you can think of... Read more

develpreneur podcast

The Layered Pattern – Software Architecture Solutions

We start our journey through software architecture patterns with one of the most common.  The layered pattern is easy-to-use and often easy to understand.  However, it is misunderstood, and there are challenges to overcome.  These are not weaknesses of the pattern.  Instead, they are obstacles for the designers and implementors to overcome.  This approach is also known as an N-tier pattern. The Layered Pattern Defined This pattern is a divide-and-conquer approach to software architecture.  The application is broken down into four layers that interact.  Thus, a complex problem to be addressed as smaller problems.  The four layers typically flow from the user to the solution’s back-end. Presentation Layer/User Interface Application Layer (sometimes called service) Business Logic Layer Data Access Layer... Read more