<p>So I am looking to expand into the world of DevOps. Many years back I did server monitoring then stepped out of it. The climate changed a bit, I remember Perl and Python being big but my current company uses Ruby so that's something I have to deal with. </p>
<p>I personally do some stuff with Docker and my company is about to implement Docker so I figured learning Go would be good. My concern is learning a language for one company or one implementation. Time is obviously limited and I can only dedicate so much of it to learning this that or the other thing. </p>
<p>I wanted to know if anyone here uses Go a lot in their jobs and what the climate is like currently. Again my main concern is dedicating time to learn something that has little application outside of our Docker implementation. </p>
<hr/>**评论:**<br/><br/>hijinks: <pre><p>DevOps person here.. You won't find many jobs where you are working just in Go. You probably want to target a company like Docker and try to work there and I'm sure you can do Dev and probably some ops if you want. </p>
<p>To be honest most companies that hire devops is just another title for sys admin but does cloud automation stuff. </p></pre>JayNotAtAll: <pre><p>Fair enough. DevOps does seem to be a buzzword title that came around with the Cloud movement. </p>
<p>I guess a better question is, would having Go in my toolbox be worthwhile? </p></pre>hijinks: <pre><p>I do a lot of deep work in terraform creating patches or new resources. So ya go will help a lot. Its always nice as others have said about shipping a single binary around and it works. I create a lot of really simple REST api services around things in go also. </p></pre>taion809: <pre><blockquote>
<p>Fair enough. DevOps does seem to be a buzzword title that came around with the Cloud movement.
I guess a better question is, would having Go in my toolbox be worthwhile?</p>
</blockquote>
<p>IMO yes, as soon as you have multiple operating systems it's nice to be able to deploy a single binary instead of messing with gems and python packages on windows vs linux servers.</p></pre>asyncrep: <pre><p>There's plenty of Go jobs out there, you wouldn't be learning it for just one company. There's also tons of Docker jobs out there, and understanding containers is a pretty important thing nowadays for a lot of shops. This will only grow in the future also.</p></pre>JayNotAtAll: <pre><p>Thanks. I just realized that terraform, Kubernetes and grafana are largely written in Go so that's cool too. </p></pre>asyncrep: <pre><p>I think you should just start learning the language. If you've never hacked in something modeled around CSP, then you're in for a treat.</p></pre>JayNotAtAll: <pre><p>Appreciate the advice. I picked up some material and am messing around with it. Unfortunately I am learning Ruby at the exact same time so hopefully I don't lose my mind trying to learn two languages</p></pre>asyncrep: <pre><p>I get learning Ruby because it's your new job, but you're not really going to actually /learn/ anything new about programming if you've already done Python and Perl...</p></pre>JayNotAtAll: <pre><p>I agree, some syntax differences but otherwise similar. I am really just holding my nose as I do it cause I personally have never like Ruby. If it weren't my job, I wouldn't be doing it. I distinctly remember at a Meetup group where we did a Skype call with one of Docker's founders, he talked about converting Docker from Ruby to Go and how much he disliked Ruby lol</p></pre>asyncrep: <pre><p>Yep... It's slower than Python and Perl and that's not changing any time soon.</p>
<p>By the time you've reached critical mass, you'll be rewriting all your Ruby logic.</p>
<p>That being said, it might help you prototype faster so that you don't go out of business ;)</p></pre>JayNotAtAll: <pre><p>Yes. most of my Ruby hatred stems from Rails. Earlier in my life I met so many Rails "developers" whose code was not secure in the least bit. My buddy and I often pointed out how insecure their sites were. Rails made coding too easy. Not that I believe that coding should be in the realm of only the super smart, but come on, adding that heavy of an abstraction layer to where the code practically writes itself create a ton of people writing terrible underlying code</p></pre>phattymcfat: <pre><p>I mean the problem there is ease of use + insecure defaults. If you make something so easy to develop in that you dont have much knowledge of what is actually happening and you dont make it difficult to write insecure code, then youve written a bad framework imo.</p></pre>JayNotAtAll: <pre><p>I concur. I am sure that there are many competent Ruby developers out there. It is just for me, in the early days of Rails, most of the devs I met didn't know how things worked under the hood yet were able to make functioning apps so it left a bad taste in mouth. </p></pre>codemonkey14: <pre><p>I think a big misconception about what DevOps is is that there is some "job" that is specifically DevOps. DevOps is not a single job or responsibility, but rather a group mentality and philosophy about greater team cohesion and cooperation between developers and operations guys to build tools and infrastructure to make software development easier. Things like build pipelines, automation testing, continuous integration and deployment, etc.. are things that need to be built and understood(at least to some degree) by everyone involved. Learning Go to get a "DevOps" job isn't the right way to think of things. Instead, learning about stuff like automation testing, build pipelines, deployment tools like docker and Jenkins and chef, and then applying that knowledge in your company is how you really get a DevOps philosophy working in your company. If learning Go helps you learn , extend, or build your own tools to help achieve some of the DevOps principles in your workplace great, but achieving and "working" a DevOps role is not something that any one language will help you achieve. </p></pre>JayNotAtAll: <pre><p>I appreciate your answer. Very well written!</p></pre>sir_alvarex: <pre><p>I work devops for my company and primarily program in GO. It's the best tool we've found for cloud operations (like a client side loadbalancer or monitoring tool) as well as being the most flexible tool we have for designing a CLI for our integrations (cross compiling is awesome. Python and Ruby environments always get messed up on dev's laptops).</p>
<p>Most of the Devops tools coming out (Docker, Hashicorp's library, Container Schedulers, etc) are being written in Golang. This means that over time companies will likely pick this up as the go-to for devops work (in my opinion, at least).</p>
<p>TL;DR I think you'll be okay and in fact increase your hirability if you become a good Golang developer.</p></pre>random314: <pre><p>You don't really need to know golang for docker right?</p></pre>JayNotAtAll: <pre><p>To use Docker know but I want to extend it and figure it would be nice to use it's native language</p></pre>5ourpu55: <pre><p>The best golang client is the one they use to drive the cli, which is a go library</p></pre>sir_alvarex: <pre><p>It's helped us tremendously in understanding <em>what</em> it is doing when bugs go awry. Really cuts down on headaches when you can read complicated go code.</p></pre>snippet2: <pre><p>I think you'll learn something different. Types and open interfaces are heavily used. Also not many generics.</p>
<p><a href="https://medium.com/golangspec/interfaces-in-go-part-iii-61f5e7c52fb5" rel="nofollow">https://medium.com/golangspec/interfaces-in-go-part-iii-61f5e7c52fb5</a></p>
<p><a href="https://www.goinggo.net/2014/05/methods-interfaces-and-embedded-types.html" rel="nofollow">https://www.goinggo.net/2014/05/methods-interfaces-and-embedded-types.html</a></p>
<p><a href="https://peter.bourgon.org/go-best-practices-2016/#top-tip-9" rel="nofollow">https://peter.bourgon.org/go-best-practices-2016/#top-tip-9</a></p>
<p><a href="https://docs.google.com/document/d/1vrAy9gMpMoS3uaVphB32uVXX4pi-HnNjkMEgyAHX4N4/mobilebasic" rel="nofollow">https://docs.google.com/document/d/1vrAy9gMpMoS3uaVphB32uVXX4pi-HnNjkMEgyAHX4N4/mobilebasic</a></p>
<p>A good editor
<a href="https://github.com/visualfc/liteide" rel="nofollow">https://github.com/visualfc/liteide</a></p></pre>diY1337: <pre><p>If in Europe try Schibsted Product and Technology. They contribute to many projects written in Go, ig. Spinnaker</p></pre>titpetric: <pre><p>As you already have some previous experience, I would actually suggest you my API Foundations in Go & 12 Factor Apps with Docker and Go - it seems both very much fit exactly into your use case. There's a bundle available where you save about $8 if you get both and if you don't leave me a tip which is used for buying books, usually :)</p>
<p><a href="https://leanpub.com/b/golang-app-bundle" rel="nofollow">https://leanpub.com/b/golang-app-bundle</a></p>
<ul>
<li>Go is very much a general purpose language, but it's geared more towards back-end development,</li>
<li>Go shines very much with high concurrency and things like websockets - learning this is never bad,</li>
<li>I use Go a lot, I tend to pick it over Node/PHP pretty much all the time, but I don't always have a choice</li>
</ul>
<p>Anyway, bunches of jobs are available for Go, interesting stuff and most of it is dealing with some kind of scaling, but not exclusively. It's a very good language to learn in my opinion, because it gives you a different outlook on other programming languages, and perhaps you'll notice some bad patterns in terms of how people write code in other languages today. The question is not so much what Go can do, but what you can do with Go - providing APIs feels very natural for Go, but writing front-end code with html/template not so much - you can, it's fine, only you'll be better off with Vue/React/Whatever and use whatever in Go as a back-end service, where it shines. Unlike node, the libraries available for Go are usually of a higher calibre, and nobody thinks of using things that could result in that fucking <code>left-pad</code> fiasco. Vendoring your dependencies into your codebase solves that problem completely, while just the way how people write Go code and use packages already take care of this. Go has a very strong stdlib, and external packages are used when they solve very specific needs, and not something like generic type checks or whatever. I'm rambling at this point.</p>
<p>TL;DR Go is great and you can build cool stuff with it, Node hurts my sensibilities</p></pre>
这是一个分享于 的资源,其中的信息可能已经有所发展或是发生改变。
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码`
- 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传