Sergey Nivens - Fotolia


Google's Go language seeks DevOps middle ground

Google's contributions to DevOps culture -- the Go programming language and site reliability engineering title -- strike out in the right direction, though there's still a ways to go.

Modern IT organizations show growing interest in new programming languages, driven to meet business pressures for speed and agility without breaking anything. Google's Go language is gaining significant traction, especially in operations.

Today's most popular languages are based on object-oriented programming models, which are closely tied to system components such as the operating system. Established languages are often not as modular -- able to be broken up into small pieces and processed quickly -- as developers would like.

Go -- an infrastructure runtime language created in 2009 by Google engineers Robert Griesemer, Rob Pike and Ken Thompson -- was designed to address those limitations. In some ways, the Google Go language's design mimics the virtualization movement, wherein virtualized systems feature an abstraction layer that separates applications from hardware-level interfaces.

Go is modular: Its executables function autonomously with no external dependencies unless deliberately specified. Modern applications are large and complex, and processing runs across many systems. The Google Go programming language's modularity provides strong concurrency features, which speeds up execution on networked, distributed services, like web servers and containers.

Write a Go language function

Google attempted to combine the speed of a dynamic language, such as Python, with the performance and safety of a compiled language, such as C, in the Go programming language. It is flexible and lightweight with user-friendly syntax, has fast compile times and is scalable.

Consequently, Go has been garnering acceptance. The language has done well in systems infrastructure programming and development of new, large, complex applications relying on containers. It first appeared on market research firm RedMonk's annual survey listing the 20 most popular programming languages in 2015, and rose to number 15 in the rankings in 2016, holding steady in the Q1 2017 results.

Programming languages have traditionally evolved slowly, tied closely to specific vendors. For example, the C programming language was created in 1978, and Oracle's Java emerged in 1991. Building up those ecosystems took a lot of time.

Recently, dramatic changes swept through the programming language landscape, thanks to open source.

"The open source model is having a major impact on the development of new programming languages," said Mark Driver, a vice president and research director at Gartner. New languages spring up practically overnight, addressing challenges experienced with existing languages.

A long way to Go

Historically, tension arose between development and operations teams because they have conflicting goals: Developers want to release new features to the masses as quickly as possible, and operations teams desire to prevent updates from disrupting the existing system infrastructure. Ops often tries to put the brakes on new releases, while development looks for ways to sneak around traditional operations checks.

The Google Go language has quickly emerged as a tool that may help operations and development staff clear these traditional barriers. Developers get dynamic, modular coding, while the application support group can trust compile performance and scalability in production. However, Go is missing important ecosystem elements that hold it back from a mass following.

Go has shortcomings. The language does not mesh well with traditional desktop graphical user interfaces (GUIs). A few frameworks are available, but more work is needed on cross-platform GUI libraries.

Another issue is a byproduct of the language's independence from underlying elements, such as an operating system. Go is not as good of a fit for managing low-level system components, such as embedded systems design, kernels or device drivers.

Additionally, the Go developer ecosystem is immature. Few commercial programming, development and management systems are available. Third-party help, such as systems integrators and channel partners, is difficult to find.

The pieces needed to build up that support field are largely missing. "Right now, very few organizations offer Go training and certification," Driver said.

Eduonix Learning Solutions Pvt. Ltd., a training company based in Navi Mumbai, India, offers a course covering issues such as Go's development environment, syntax and language structure, toolchain and dependencies. Udemy, which offers over 45,000 courses online, runs one class that focuses on Go fundamentals and how to apply the language to real-world scenarios. Pluralsight LLC's class, The Go Programming Language, looks at topics including concurrency, branches and loops.

So, what is Go's future? Driver noted that the programming market in the future will probably be more fragmented than in the past, where a few languages dominated development. Go may not dominate, like Java or C did during their heydays, but its use could become as widespread as Python.

Next Steps

Google is also behind an emerging DevOps concept dubbed site reliability engineering (SRE). SRE bridges ops and dev with a mathematical formula for green-lighting or red-lighting software launches. A team of dedicated engineers with ops skills continuously oversees software reliability during development. Proponents say SRE prevents a bored, frustrated ops team and keeps production stability from thwarting development creativity.

Dig Deeper on Matching IT Resources to Application Requirements