Language

our primary language about Golang

Go, Go, Go hip developers

키인사이드에서 사용하는 주 개발언어는 Go(https://golang.org/)입니다.

Go은 아주 인기 있는 언어는 아니지만 blockchain 개발언어로 많이 사용되면서 최소한 DLT(Distributed Ledger Technology) 영역에서는 중요한 언어가 되었습니다. 그럼에도 DLT client를 만드는 것이 아니라면, contract code와 dapp을 개발에서는 여전히 쓰이는 곳은 거의 없다고 봅니다.

키인사이드가 Go를 주 개발 언어로 선택한 이유는 간단합니다. 키인사이드가 사용하는 main DLT framework는 Hyperledger Fabric(이하 HLF)이 Go로 작성되어 있으며, HLF의 chaincode(contract code)를 작성 할 수 있는 언어 중 성능이 가장 좋기 때문입니다. 개인적으로 개발 언어 선택을 할 때 해당 프로젝트에 적합한 언어 중 성능이 가장 우수한 것을 선호 합니다. Learning curve가 짧고 개발이 쉬운 언어들, reference가 많고 개발자를 구하기 쉬운 언어들이 중요한 선택 요소가 될 수 있습니다. 하지만 실제 상용 서비스에서 높은 성능은 회사 이익에 직결되는 부분이 크고, 더 좋은 사용자 경험을 제공해 줄 수도 있습니다. 더욱이, DLT의 가장 약점인 성능 부분을 개발언어 선택만으로 일정 부분 만회 할 수 있다면 쓰지 않을 이유는 없으므로 HLF의 경우 현재 Go, Java, Javascript(nodejs), Python으로 chaincode 작성이 가능하며 이중 Go를 선택하는 것은 당연하다고 생각됩니다. 나는 게으른 개발자이지만, 개발자가 조금 더 수고를 하면 매우 큰 긍정적인 효과를 얻어 낼 수 있다면 반드시 그렇게 해야 한다고 생각합니다.

단지 chaincode 작성을 Go로 한다고 해서 주 개발언어라고 하기에는 무리가 있습니다. 키인사이드에서는 DLT 이 외 대부분의 영역에서도 Go를 사용하고 있습니다. 거기에는 몇 가지 이유가 있는데, 앞서 이야기한 성능 부분도 중요 했지만 가장 큰 이유는 작은 스타트업 회사의 생존 전략 때문이기도 합니다. 스타트업은 인원이 적고 필요시 충원을 하는 것도 쉽지 않아, 때로는 한 명이 여러 사람의 몫을 해내야 하는 경우가 많은데, 특히 개발의 경우 더욱 그렇습니다. 적은 인원의 개발팀이 조금 큰 프로젝트를 담당하기 위해 꼭 필요한 것이 개발자 swap입니다. 각자의 개발자가 맡은 주 업무가 있겠지만, 서로 다른 업무의 개발자들이 서로의 코드를 검증해 줄 수 있어야 하고, 유사시 다른 사람의 코드를 수정해 주어야 할 수도 있습니다다. 아예 업무 자체를 통째로 바꿀 수도 있습니다. 또한 스타트업 특성상 프로젝트가 매우 가변적이기 때문에 유기적으로 2-3명 정도의 인원이 짧은 시간동안 임시 unit으로 문제를 해결해야 하는데, 사용하는 framework이 다르고 개발자 마다 경험과 수준이 다르기 때문에 이러한 유연한 팀을 만들려면 최소한 개발 언어의 통일은 되어야 한다고 생각합니다.

앞서 DLT영역 때문에 Go를 선택을 하였지만, Go언어가 web과 일부 app을 개발하는 데에도 무리가 없기 때문에 주 개발언어가 되는 것은 문제가 없었습니다.

Are you hip? Let's get together!