kornienko - Fotolia
How can teams simplify microservices development, especially when scaling microservices is the key? Many are turning to the Go programming language and Go kit for answers.
Native programming languages like Go are becoming increasingly popular, which is a bit of a mystery to those of us who have lived a lifetime programming against the Java Virtual Machine (JVM). As all of us living in the Java ecosystem know, there has been no shortage of work put into creating peripheral JVM languages that address many of the perceived deficiencies of the Java language, but despite the work being done with languages like Scala or Clojure or Kotlin, many developers are setting aside their virtual machines and choosing to work with native languages like Rust, Swift and Go.
Peter Bourgon knows a thing or two about the Go programming language. More specifically, the software engineer and popular QConn speaker knows quite a bit about microservices development with the Go programming language; he is the author of the Go kit, a popular framework or library for developing microservices using the Go programming language. According to Bourgon, there's just something compelling about native language development.
Native languages versus the JVM
"We all love the maturity, evolution and iteration that went into the JVM," said Bourgon about his respect for the Java ecosystem. "But I feel like there's a desire to return to basics. It's a feeling that's been simmering for quite a bit of time." Of course, Bourgon's programming history, which includes working on search engines and developing VoIP and protocol analysis software, has landed him in a world of Python, C and C++ development, as opposed to working heavily with JVM languages. But even from that perspective, the move toward a new native language like Go or Rest is a welcome one.
Peter Bourgonsoftware engineer, Weaveworks
"I feel like there's a desire to return to basics," Bourgon said about the trend toward choosing native languages like Swift or Rust for modern software development, or choosing native technologies like the Go kit for developing microservices. "Getting back to a sense of simplicity is ultimately what fueled the native language trend. We see that language features from the past, when dusted off and brought into a modern context, can alleviate a lot of pains we associate with languages like C."
Concurrency support and the Go programming language
Of course, the popularity of Go in terms of microservices development is fueled by more than simply a desire to reminisce about language features of yesteryear. When scaling microservices and thinking about managing massive microservices loads, being able to do concurrency well is essential, and it's hard to imagine a much simpler programming paradigm for creating concurrent functions than the manner in which the Go language creates goroutines. "Go's big contribution was the native concurrency story, and arguably the implicit interface stuff," Bourgon said. "With these features you get a lot of value, and you get a lot of expressiveness that wasn't available in languages like C."
To learn more about microservices development, the Go kit, how software containers like Docker are changing the microservices development landscape, along with the reasons why organizations are putting a renewed importance on well-designed APIs, listen to the full podcast with Weaveworks' Peter Bourgon.
Which language to choose for microservices development
Microservice orchestration and development shouldn't be hard
Alternate JVM languages like Kotlin provide microservices developers more options