It’s simply called “Go” but if you want to learn about the development language that’s gaining traction as way to help enterprises better deploy code in a rapidly scalable cloud environment, it’s best to search go “go lang.”
Go is an open source project developed by a team at Google and many contributors from the open source community, and distributed under a BSD-style license. Go’s native concurrency features such as goroutines and channels are well suited for network applications, so many Go projects to date are for networking, distributed functions or service such as APIs, Web servers, and minimal frameworks for Web applications.
Author and instructor William Kennedy has been teaching Go for several years and said most of his clients are larger enterprises, including GE and Cisco Systems. A common theme he’s found among all companies is that their development teams are easily able to use languages such as Python and Ruby, but are having issues when it comes to application deployment.
Deployment complications are becoming prevalent as enterprises embrace micro-services architectures and cloud computing as a means to scale up quickly, added Wade Chia, CTO at TradeRev, an online car auction service. “There’s a lot of complications that can happen in deployment,” he said. “In micro-services those complications are complex.”
The term “micro-service architecture” has sprung up over the last few years to describe a particular way of designing software applications as suites of independently deployable services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API.
As organizations are moving from legacy applications to micro-services, Chia said they are encountering challenges using Node.js to get services to talk to back-end REST API. Traditionally, he said, a great deal of faith is put into the compiler, but that’s where problems arise when you want to do scalable code in the code. “Go is just like a breath of fresh air. It feels like a cloud native development language.”
Kennedy said the goal of Go is to have a programming language that enables the developer to be as productive as possible and to minimize and simplify the amount of code they need to write to solve problems. It was designed to solve problems common to infrastructure and networking companies such as Google. “It hides as much complexity as possible, but allows a developer to have a mental model of what’s going on.”
He said the Go language is not trying to be the fastest on the planet, but many companies are seeing the productivity levels of their developers go up. “The performance is beyond what they were able to see before.” Otherwise, said Kennedy, developers have to write code in C or be well tuned as to how Java works.
The day Kennedy was interviewed he had an iOS Swift developer in one his classes to learn Go for backend development, said anyone with knowledge of C and similar languages could easily pick it up, and he expects Go to become fairly prevalent in the next 12 to 18 months as many cloud platforms and container companies choose it for their backend development.
However, Kennedy doesn’t see Go moving into the desktop space, although at some point it might be suitable for iOS and Android, as well as Internet of Things applications as Google publishes more APIs.
Chia said that as a new language, Go didn’t initially see rapid adoption in the enterprise, but doesn’t see any disadvantages to using, especially as standard library support grows and it’s possible to have Go services talk to those written in Python or Java.
Google has thrown a lot of money at Go garner interest, added Kennedy, and version of Go that Google uses internally is the same one available to any developer. “It’s truly an open source project,” he said. There’s a large community support the language internally and externally.”