Golang is discussed here as an open source programming language providing nice features for DevOps while developing highly competitive concurrent programs and performing clear outcome for outsourcing software companies.
As I came back home today my head was full of thoughts in a mess as if a hurricane’s blown, having swapped ‘IT engineer’ with the ‘DevOps’, and ‘complex dependency trees’ with ‘vendoring concept’. There were two possible reasons of such a case with my mind and emotional state: either hot and exhausting summer routine or the fact that my friend has broken into the DevOps career recently and shared burdens of info on a variety of IT issues including his plan how to deal both with the customers and the developers efficiently. To tell the truth, his plans looked like Google office: bright, smart, going further and ...boosting my ‘Oh-I-am-an-old-school-conservative-business-analytic’ thoughts.
Golang Basic Features
What I really heard and know about Golang for DevOps is that it’s a kind of language easily used for any project scope purposes. Once we’ve got a request to rewrite chatbot for QArea client’s forum. So, the demands were outlined (deadlines were hardly met, I’d like to specify) and to facilitate the process I dived into code myself. With the course of time this chatbot has got many complicated things became old, and the rest of them turned out to be plain and simple. It could be redeveloped with any language, it was decided to use Go, which turned out to be manageable and painless to apply.
As soon as since that very moment I’ve been extremely interested in advantages of Golang for the developers under DevOps approach, I’ve talked to the professionals from our QArea team, testing the ground, asking various questions. So now I wanna share with you what I have already picked up: what Go can propose for DevOps.
Golang Development Pros and Cons
Here two lists will be placed: what Go lets developers do to perform better while meeting the desired demands and how it contributes IT team management (considering Go proposes some extra values in this field).
So, here are the reasons why Golang is vastly implemented in DevOps tools and in writing a code in general:
- Simple and concise syntax. No developer employed by a software services company will be terrified while operating Golang web framework.
- Concurrency. One can be sure this feature was in the minds of Go creators. It’s performed through goroutines and channels. It’s much more simpler to achieve collateral execution (no locking);
- Speed. What is surprising (and trust me, cause I’ve interviewed a lot of specialists. Their opinions were splitted on the other issues, but concerning this one they voted unanimously) either small scripts or huge data sets are written, one is able to perform greatly. This language is granting speed for you. Once 5000 concurrent connections test was completed, the failure rate for Java, PHP, Node was really significant while Go performed well.
- No more complex dependency trees. Golang is quite a quirky one, it compiles all the dependencies into the binary.
- Minimal amount of runtime errors (since it’s statically typed language).
- Function closure is really amazing feature. Having experienced it at once, you’ll like it forever.
Considering all the mentioned above, once you have a request for any software development company, it’s possible to be sure your order will be designed under ‘Do one item and do it in a right way’ slogan with understandable and reusable code as an outcome.
Benefit from Go being not a developer
Go competitive advantages for IT team management in a programming company are the following:
- You have no need to wrap the mind considering how to involve a new specialist into the project; even if he (or she) is not an advanced developer with not too much experience with Go, it’s much more simpler to add the specialist to the team (one of my colleagues specified: ‘in spite of the fact I’ve already gained ‘my best practices’ and ‘how to do it better’ pieces of advice, it’s still easy for me to introduce even not so talented and really slow professionals to Go project (either web server or go web application design). One needs a week to be fully involved and that is the worst case);
- Analytics (yeap, sometimes they need to see the code as well) are aware of it easily;
- Projects are growing, sometimes there’s a need to return to your own or your colleagues’ code, and I did hear and many programmers working in software companies did experience it’s convenient to do with Go. No complications at all;
- Having looked through a range of Go based works, I’ve made a conclusion, obviously, Go is pushing the design toward less deep abstractions, and that contributes the outcome judging by code clarity and readability.
Phew, so much is discussed (and everything is so useful to be aware of Go peculiarities for any web development company), but the rest of data in my head is even bigger to be placed here. Let’s make a break for coffee or tea. I’m actually dreaming about the time when artificial intellect will assist in quick lunch making at our kitchens while we’re discussing ‘Go or not Go’ here surfing the net. By the way, we could surely speak about machine learning in Go as well: haven’t you heard? It’s possible to design algorithms getting input data and predicting the output. Nowadays developers have opportunity to deal with machine learning libraries (as well as with go network libraries) created in Go (glad to direct you slightly, naming them: GoLearn, which is simple and customisable; Goml, which comprises many models making one learn in an online communicative reactive manner; intriguing Gorgonia written totally in Go).
Specialist’s personal insights into Go
You know, few things on Earth are so perfect that no chance to be improved (may be the Earth itself), there are some insights about Go tiny drawbacks coming along with which on a constant basis could make them an eyesore both for the developer and the user:
- One of them is absence of possibility to restart a code while its execution: once you need to renew Go simple web server code, server process should be canceled and the new one should be launched. It influenced the accessibility of the server under code updating;
- Go’s deceitful similarity with C-like languages. Under absence of wish to get acquainted with at least the basic manual (not even smoking it) funny ‘select’ statements with ‘default’ active appear. They might be funny, but anyway they could lead to ‘Wow, in this Go of yours TCP reader occupied all CPU all of a sudden’
To sum up all the scratches given above I’d like to prevent you from treating Go as the simplest language ever, beyond the border of its simplicity the dragons could appear. Anyway, DevOps with their mission to save the world (I’m just kidding, read, pls, ‘save the user’) could apply Go to solve real life problems.
See you and Go to implement any kind of project (from creating server with Go to designing Golang web app). Contact us as an IT development company ;-)!