Palmetto Flow is a concept for building distributed first
applications.
Palmetto Flow has a set of principles that enable you the developer to implement in technologies of your choice.
While each part of the system can be implemented in any technology, most of the current implementations are in
nodejs
andjavascript
. If you are interested in implmenting in other techologies and would like to share your implementations, please post an issue
With Palmetto Flow developers can create applications made up of components and services that can be exchanged or modified overtime with different technologies and patterns and approaches.
The core concept is to separate your application using loosely coupled processes that all subscribe to a publish/subscribe system, then components can publish requests and services can subscribe to topics and process the requests.
By structuring the application into components and services, it is easy for developers to understand and work together on features of the application. Services live near and own the data, components live near and own the presentation.
By leveraging a publish/subscribe system services can serve many applications and components can be re-used in different applications.
Building Componenents or Services in any technology of choice create flexibility to empower developers to work in the best technology for the task and not worry about having to modify or infect other parts of the application.
Since publish/subscribe is one to many, you can have many subscribers for the same service over several different locations, or you can use a push/pull pattern to have several workers and balance the load of requests amongst all of the workers. You can implement all of the common messaging patterns on top of publish/subscribe
One of the key features of Palmetto Flow is the commit-log and the ability to replay the log to rebuild data sources from the beginning, creates a very reliable and stable data log, so if your service needs its data store rebuilt it is a very simple process.
By separating the concerns of the application features Palmetto Flow can continue to keep timeline of adding a new feature consistent regardless of versions or iterations.
https://gitter.im/twilson63/palmettoflow
or submit an Issue
see contribution.md
see LICENSE