Google spotlights Go language with new open source load balancer

Google spotlights Go language with new open source load balancer

Most of Google’s open source releases have centered on infrastructure-building projects, like Kubernetes, that stem from the company’s work with its public cloud infrastructure.  But Google’s latest open source project — a load-balancing technology called Seesaw —  instead comes from work done for the company’s corporate, in-house infrastructure.

Seesaw, available on GitHub, also gives Google an opportunity to demonstrate the value of its Go language in a major project.

Seesaw was designed to fill four basic needs at Google, according to the blog post announcing its release. These include routing traffic for “unicast and anycast VIPs [virtual IP addresses],” performing load balancing with NAT and DSR (dynamic source routing, used for wireless mesh networks), checking system health, and “ease of management, including automated deployment of configuration changes.”

Successful open source projects rarely start from scratch, and Seesaw was no exception. An existing project, the Linux Virtual Server, was used as the substrate for Seesaw to perform the traffic handling. Google expanded on LVS’ functionality and used Go’s concurrency and interprocess communications functions to make the bundle easier to manage.

Before Go existed, Google might have created something similar by wrapping LVS with Python. One of Go’s goals is to provide a language that’s as flexible as Python but delivering far greater raw performance and with native functions that make it easier to design decentralized, network-connected applications. Python gained some of these functions in version 3.5, but Go had them from the outset, and Google has been determined to prove that the features baked into the language are an inherent advantage.

Seesaw is available under the Apache license, although a disclaimer on its GitHub repository notes, “This is not an official Google product,” meaning Google won’t provide any support.


[Source:- Javaworld]