Security News
The Risks of Misguided Research in Supply Chain Security
Snyk's use of malicious npm packages for research raises ethical concerns, highlighting risks in public deployment, data exfiltration, and unauthorized testing.
fish-and-loaves
Advanced tools
fish-and-loaves
is a Proof-of-Concept Load Balancer written with Express, and it only supports requests with no Request Body as the configuration with the request
API was too complicated.
The inspiration for the project was this blog post by The Code Barbarian.
One difference between the implementation in the blog and fish-and-loaves
is that the application is defined by a configuration file as opposed to hard coding the structure in the code.
Not only this, but the load balancer also uses child-process
to spawn
multiple instances of the application and customize the instance output.
npm install --save-dev fish-and-loaves
yarn add -D fish-and-loaves
To run fish-and-loaves
, three environmental variables need to be defined in a .env
file.
# Host IP
FISH_HOST=127.0.0.1
# Load Balancer Port
FISH_PORT=3030
# Determines HTTPS (Provide SSL)
FISH_SSL=false
After installation in a project, a simple command can be used.
yarn fish-and-loaves <path/to/lb-config.js>
With the configuration file, the structure is designed to be intuitive as a simple layer of Infrastructure-as-Code.
module.exports = {
// Name of Application
name: 'myapp',
// Path to run Application in 'node <path/to/start/script>'
path: './myapp/bin/www',
// Recipe as an Array of Instances
recipe: [
{
// Name of Instance
name: 'main',
// ANSI Color Output
color: '\x1b[36m%s\x1b[0m',
// Weight of Instance
weight: 3,
// Preferred Port (Optional)
port: 5000
},
{
name: 'aux1',
color: '\x1b[33m%s\x1b[0m',
weight: 1
},
// More Instances...
]
}
I have been curious about load balancers for a while ever since I took a class on Internet Technology and saw a picture of a server hierarchy.
The implementation of a Load Balancer is not limited to the Weighted Priority Policy used (as opposed to Round-Robin, Classification, etc.), but the single implementation of one of the policies was enough to understand the concepts of a Load Balancer and managing processes.
However, these types of policies are important to understand as they are useful for any distributed system at any level of abstraction, not just the application layer.
Although I will not be able to make a full-fledged cloud architecture framework, this project gave me a little taste of how DevOps software is developed: automating the organization of many different components in a system as opposed to only focusing on a single process.
Side Note: The names in the code are based on a story from Matthew 14:14-21 in which Jesus feeds 5,000 people with only 5 loaves and 2 fish, which parallels the precise distribution and organization of a Load Balancer
FAQs
Proof-of-Concept Load Balancer written with Express
We found that fish-and-loaves demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Snyk's use of malicious npm packages for research raises ethical concerns, highlighting risks in public deployment, data exfiltration, and unauthorized testing.
Research
Security News
Socket researchers found several malicious npm packages typosquatting Chalk and Chokidar, targeting Node.js developers with kill switches and data theft.
Security News
pnpm 10 blocks lifecycle scripts by default to improve security, addressing supply chain attack risks but sparking debate over compatibility and workflow changes.