A service is one or more processes handling a common task. These processes operate as a tightly-coupled whole.
All processes in a service will generally:
- Share the same API class definitions
- Moreover, they will normally share the same codebase
- Create a single instance of the bus client in
bus = lightbus.create().
For example, your company may have the following:
- An online store
- A price monitoring script
- An image resizing resizing process
Each of these would be a service.
The store service would have a web process and a Lightbus process. The image resizing service & and price monitoring services would each likely have a Lightbus process only.
A simple lightbus deployment could therefore look something like this:
In this example the following actions would take place:
- Django reads from the web service database in order to serve web content
- The online shop's Lightbus process receives pricing events from the price monitoring service. It updates products in the database using this new pricing data.
- When the Django app receives an image upload, it performs a RPC to the image resizing service to resize the image1.
Making the Django process wait for an RPC to respond is probably a bad idea in this case, but it illustrates how it could be done. Using an event (which is fire-and-forget) could be more suitable in reality. ↩