-
Notifications
You must be signed in to change notification settings - Fork 59
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
[New Feature]: Introduce a bal tool to support consolidating multiple services into a single executable #1331
Comments
@azinneera, Can you make it a proposal? |
@azinneera @sameerajayasoma From suggested names i prefer |
Meeting Notes - 11/02/2025 Summary The following changes were suggested and agreed with:
|
Based on the meeting notes, a new custom command will be introduced to facilitate the following:
The details can be found in the proposal.
My suggestion is also the same. @sameerajayasoma @shafreenAnfar WDYT? |
Based on the ChatGPT description below, I feel Bundle typically refers to grouping things together in a way that they are often kept together as a unit. The items may still be distinct in their nature, but are packaged or grouped together for convenience or efficiency. For example, you might bundle products together for sale or bundle services in a package. Consolidate suggests combining things into a single, unified whole. It often involves reducing the number of separate entities or items into a more streamlined or efficient form. Consolidation tends to emphasize the act of making something stronger or more coherent. For instance, you might consolidate multiple bank accounts into one or consolidate efforts to achieve a shared goal. |
IMO, it is tough to figure out a single word for this tool. All of the above suggestions are too generic. Can we allow This tool takes a list of Ballerina package names as the input. Then, It generates a new Ballerina package that imports all of them, combining multiple independently developed services (integrations) into a single deployable binary that shares the same HTTP listener. It creates a modular monolith or ESB-style server from separate integration components. The challenge is to figure out a descriptive name :) |
I tried some other names with the help of DeepSeek and these are a few recommendations with the reason:
I am still +1 for |
Description
Ballerina inherently supports microservices-style deployments, which are well-suited for microservice orchestration platforms like Kubernetes. However, many enterprise users deploy on VMs or Docker, where managing each service as a separate process increases complexity and resource overhead. We must provide a solution tailored to such scenarios by enabling consolidated deployments.
Describe your problem(s)
For users who follow a monolith-style deployment, the following must be supported OOTB:
Describe your solution(s)
The goal is to allow developers to specify services to consolidate into a single runtime process. For this, we will introduce a bal tool to generate the code required to group multiple services into one deployable artifact.
The tool:
Ballerina.toml
file to identify the services to consolidateconsolidated.bal
file with the shared listener and the service packages imported.Config.toml
containing all configurable variables.Features
Developers can create a consolidated package using the below command:
bal new -t ballerina/consolidate myConsolidatedPkg
This command creates a new Ballerina package with the consolidate tool added in the
Ballerina.toml
file as follows:Developers can Generate a single deployment artifact by executing the below command:
bal build [--cloud]
A few other name suggestion for the tool:
Related area
-> Compilation
Related issue(s) (optional)
No response
Suggested label(s) (optional)
No response
Suggested assignee(s) (optional)
No response
The text was updated successfully, but these errors were encountered: