Go의 현황

Read this post in other languages:

Go 언어는 오늘날 많이 이용되는 프로그래밍 언어 중에서도 인기가 높습니다. 열정적인 팬과 이 언어를 애호하는 커뮤니티가 이 언어의 빠른 속도와 효과에 매료되었음을 잘 알고 있지만 이에 대해 조금 더 자세히 살펴 보았습니다. 더 많은 것을 알아내기 위해 Go에서 사용할 수 있는 정보를 더 자세히 들여다 보았습니다. 이와 더불어 GoLand의 개발자 애드버킷이면서, Go 전문가인 Florin Pățan이 Go의 현황을 바탕으로 한 전문가 의견도 함께 확인하실 수 있습니다.

지역별 Java 개발자 분포

Go 개발자 약 110만 명

Go를 기본 언어로 사용하는 전문 Go 개발자의 수는 약 110만 명 입니다. 다른 프로그래밍 언어를 주로 사용하지만 Go도 조금 사용하는 전문 개발자를 포함하면 그 수는 최대 약 270만에 가까울 것입니다.

전 세계적 분포로 보면, 아시아에 가장 많은 Go 개발자는 포진되어 있으며 이 중에서 약 57만 명의 개발자가 Go를 기본 언어로 사용합니다.

전문가 분석

Go로 개발하는 지역에 대한 결과는 제가 예상했던 그대로입니다. 아시아에는 Go 사용자 수가 많은데, 제 상각에는 Tencent, Alibaba 및 Huawei와 같은 거대 기업에 소속된 개발자 수가 상당하기 때문인 것 같습니다. 이들 기업에 소속되어있는 개발자 수는 상당합니다.

자세한 지역별 현황

아래 그래프는 2020년 개발자 에코시스템 설문 조사에서 국가별로 Go를 기본 언어로 사용하는 개발자의 분포를 보여줍니다(응답자는 최대 3개의 기본 언어를 선택할 수 있었음). 중국은 중국 개발자의 16%가 Go를 사용할 만큼 사용자가 가장 많이 집중되어 있습니다.

전문가 분석

중국이 1위를 차지한 것은 그리 놀랍지 않습니다. 러시아는 2위, 미국은 5위 정도에 위치할 것으로 예상했었습니다.

중국이 1위를 차지한 이유는 개발자 수가 워낙 많기 때문일 것입니다. 그리고 제가 아는 많은 회사(예: PingCAP, Tencent 및 Huawei)에는 마이크로 서비스와 결합된 내부 도구, 인프라 및 백엔드 서비스를 지원하고 빌드할 수 있는 개발자가 많이 있습니다. 이것이 핵심인 것 같습니다.

러시아의 Go 커뮤니티가 정말 훌륭하다는 것을 알고 있으므로, 러시아에서 Go가 인기있는 언어인 것은 어쩌면 당연한 결과입니다. 일본과 우크라이나가 그렇게 높을 줄은 몰랐고, 독일과 인도는 조금 더 높을 것으로 예상했습니다. 4 ~ 5년 전 베를린에 있었을 때 제가 알고 있던 거의 모든 스타트업에서 Go가 상당히 많이 사용되었던 것으로 기억합니다.

산업 통찰력

2020년 개발자 에코시스템 설문 조사에 따르면, Go는 전문 개발자가 사용하는 기본 언어에서 10위를 차지했으며, 그 비율은 약 7%였습니다.

전문가 분석

Go는 계속해서 성장하고 있다고 생각합니다. 사람들은 Go를 첫 프로그래밍 언어로 시작하는 것이 아니라 일반적으로 PHP 및 Ruby와 같은 다른 언어에서 Go로 마이그레이션하며, 제가 알기로는 주로 C++ 및 C#에서 마이그레이션합니다.

Go는 정적으로 형식화된 언어인 반면 PHP는 동적이기 때문에 PHP와 비교했을 때 Go의 장점은 유형 안전성이라고 할 수 있습니다. 이는 작성한 코드가 런타임에 문제 없이 컴파일되고 작동하도록 보장하는 측면에서 컴파일러가 대부분의 작업을 수행함을 의미합니다. Go가 C ++에 비해 갖는 장점은 단순하다는 것입니다. Go에서는 모든 것이 매우 간단합니다.

일반적으로, Go의 장점은 코드를 작성할 때와 런타임 때 기본적으로 속도가 빠르다는 것입니다. 일반적으로, Go를 사용하면 특별한 최적화 없이도 5~10배의 성능을 얻을 수 있으며 이는 기업에게 중요한 생산적인 이점으로 작용합니다. 또한 간단한 언어이고 쉽게 익힐 수 있으며 기존 프로젝트에서 마이크로 서비스를 쉽게 대체할 수 있습니다.

Kubernetes, Docker, Vault와 같은 많은 IT 인프라 도구는 Go를 사용하여 구축됩니다. 따라서 Java로 작업하는 회사가 많겠지만 특히 이러한 프로젝트의 유지관리 및 패치 적용 부분에서는 Go를 사용하는 팀도 있을 겁니다. 이것이 아마도 채택이 계속 증가하는 또 다른 이유 중 하나일 것입니다. 이 기술이 공통 인프라 및 배포에 더 많이 사용될수록 Go의 성장은 더 가속화될 것입니다. 개발자 에코시스템 설문 조사에서 했던 질문인 "향후 12개월 내에 다른 언어를 채택/이전할 계획이 있으신가요? 만약 그렇다면 어떤 언어가 될까요?"에서 13%의 응답자가 Go를 선택했다는 점을 감안할 때, 앞으로 몇 년 내에 더 많은 사람들이 Go를 사용하기 시작할 것이며, 특히 Go 점유율이 15~20% 선이 될 것으로 생각합니다.

Go로 개발되는 소프트웨어의 유형

웹 서비스는 Go가 가장 많이 사용되는 영역으로, 2020년 개발자 에코시스템 설문 조사의 결과에 따르면 36%를 차지합니다.

전문가 분석

웹 서비스의 경우, 가장 중요한 과제는 상당히 빠르게 작동하는 API 서버를 만드는 것입니다. 프레임워크가 반드시 필요한 것은 아니므로 Go를 사용하여 빠르게 시작하고 실행할 수 있습니다.

저는 이 그래프가 앞으로 크게 바뀔 것으로 생각하지는 않습니다. Go로 시작하는 것이 간단하기 때문에 웹 서비스 부분에서 점유율이 더 높아질 것으로 기대합니다.

"유틸리티"의 경우도 많은 양의 데이터를 처리할 수 있는 빠른 앱을 작성하고 작은 유틸리티 앱 또는 많은 자원이 들어가는 일회성 작업을 작성하기가 상당히 쉽기 때문에 앞서 이야기한 부분과 비슷하다고 생각합니다. 여기에서 IT 인프라를 조망하는 것도 의미가 있습니다. Docker와 Kubernetes를 채택하는 사람이 많을수록 Go를 찾는 사람도 많아질 것입니다. 둘 모두 Go로 작성하기 때문이죠. 특히, 모든 유형의 DevOps 작업에서 유형 안전성과 빠른 속도를 제공하는 Go의 이점을 누릴 수 있습니다. 인프라의 클라우드 측면(Google, Amazon, and Azure 등)과 상호 작용하는 것이 매우 쉽습니다. 모두 훌륭한 SDK를 가지고 있기 때문이죠. 제네릭이 출시되는 몇 년 후에는 “라이브러리/프레임워크”에서 약간의 향상을 기대할 수 있을 것으로 생각합니다.

시스템 소프트웨어 – 더 많은 사람들이 시스템 소프트웨어로 Rust와 같은 것을 사용하기 시작함에 따라 이 부분은 감소하기 시작할 것으로 생각합니다. 데이터베이스의 경우도 마찬가지입니다. 따라서 향후 6% 정도의 틈새 도메인이 될 것입니다. 프로그래밍 도구 – 이 부분이 목록의 높은 위치에 있다니 놀랍군요. Go를 이용해 어떤 프로그래밍 도구들이 만들어지고 있는지 궁금합니다.

Go가 사용되는 주요 산업

2020년 개발자 에코시스템 설문조사에 따르면 Go 프로그래머들은 주로 IT 서비스 부문에서 활동하고 있으며 금용 및 핀테크, 클라우드 컴퓨팅/플랫폼 및 기타 산업 분야가 뒤를 이었습니다.

전문가 분석

금융 및 핀테크. Go를 통해 실행되고 있거나 인프라에 Go를 광범위하게 사용하는 은행이 꽤 많다는 사실을 알고 있기 때문에 이 결과는 예상한대로 입니다. 예를 들어, 영국의 Monzo는 Go를 사용하여 은행 전체를 구축했습니다. 클라우드 컴퓨팅과 플랫폼도 비슷한데, Go로 작성되는 종류의 애플리케이션이 이 부문에서 자연스럽기 때문입니다.

모바일 개발은 예상치 못한 결과입니다. Go의 모바일 개발 역사는 그리 내세울 것이 없습니다. 오히려 모바일 앱의 웹 서비스나 백엔드에는 Go를 사용할 것으로 예상했지만, 그게 전부입니다.

당분간 Go 사용이 늘지 않을 것으로 예상되는 몇몇 산업 분야가 있습니다. 예를 들어, 머신 러닝을 기반으로 하는 분야는 여전히 Python이 지배적이기 때문입니다. Go에서도 머신 러닝을 대중화하고 개선하려는 노력이 이루어지고 있지만 결과는 적어도 2년 정도 후에나 나타날 수 있을 것으로 생각합니다.

Go 도구

패키지 관리자

Go 모듈은 Go 개발자 사이에서 가장 인기있는 패키지 관리자입니다. 2020년 개발자 에코시스템 설문 조사에 따르면 채택률은 2019년에는 41%였던 수치가 2020년에는 82%로 증가했습니다.

전문가 분석

Go 모듈이 표준 기본 모델이 되어 가는 상황이고 Go 팀도 GOPATH를 더 이상 사용하지 않기를 원하기 때문에 언젠가는 이 질문이 더 이상 필요하지 않을 것 같습니다. 다른 것들은 아마도 더 이상 사용되지 않을 것으로 생각합니다.

Go 라우터

2020년2018년 실시된 개발자 에코시스템 설문 조사에 따르면 Gorilla/Mux표준 라이브러리는 2018년 이후 가장 많이 사용된 Go 라우터로 나타났습니다.

전문가 분석

Reddit, Slack 등에서 사람들은 정말로 원하는 경우가 아니면 항상 표준 라이브러리의 사용만 고집하기 때문에 표준 라이브러리의 인기가 높은 것으로 생각합니다. 저는 gorilla/mux를 사용하는데, 그 이유는 성능을 크게 떨어트리지 않으면서 표준 라이브러리를 기본으로 하여 추상화의 이점을 좀 더 누릴 수 있기 때문입니다. 아마도 이것이 표준 라이브러리에 가장 가까운 것 중 하나이며 서버 작성을 더 쉽게 해주기 때문일 것입니다. 전반적으로, 이러한 구도는 제가 기대했던 것과 비슷합니다.

상위 5개의 웹 프레임워크

2020년2018년 개발자 에코시스템 설문 조사에 따르면 나머지 웹 프레임워크의 대부분은 수치가 그대로인 반면, Gin의 사용량은 2018년 이후 거의 두 배로 증가했습니다.

전문가 분석

Gin은 빠른 프레임워크 중 하나이고 좋은 평판을 얻고 있기 때문에 웹에서 이러한 인기를 끌고 있는 것으로 보입니다. 시기 상으로도 가장 앞서 나왔습니다. 따라서 많은 자료가 있고 많은 사용자가 사용하고 있으며, 추천하는 프레임워크이기도 합니다.

테스트 프레임워크

기본 제공 테스트를 사용하는 개발자의 비율은 2018년 64%에서 2020년 44%로 떨어진 반면, 다른 테스트 프레임워크의 사용량은 약간 증가했습니다.

전문가 분석

Go 표준 라이브러리에 바로 사용할 수 있는 정말 훌륭한 테스트 라이브러리가 있기 때문에 기본 제공 테스트의 사용 빈도가 높습니다.

기본 제공 테스트의 사용률이 떨어진 이유는, 예를 들어 PHP 같은 다른 언어를 사용하다가 이 언어로 넘어오는 사람들이 많아지고 있고 이 사용자들이 기존의 테스트 습관을 그대로 유지하려고 하기 때문인 것으로 생각됩니다.

가장 많이 논의된 Go 도구 및 기타 언어

Go는 IT 커뮤니티에서 종종 논의되곤 하는데, 이러한 커뮤니티 중 하나가 Stack Overflow입니다. Q&A 섹션에서 데이터를 가져와 어떤 태그가 “Go”와 함께 가장 많이 등장하는지 확인했습니다. 그 중에는 23개의 도구와 2개의 언어, “MySQL” 및 “PostgreSQL”이 있습니다. 이 외에 다른 상위 언어와 함께 등장하는 경우도 있습니다. 세로 축은 “Go”가 태그된 횟수를 나타내고, 가로 축은 “Go”가 태그된 경우를 포함하여 모든 태그가 포함된 횟수를 나타냅니다.

전문가 분석

JSON이 문제가 될 것으로 예상했습니다. JSON을 Go 데이터 구조로 마샬링 및 역마샬링하는 것은 쉽지 않으며 이것이 아마도 그렇게 두드러지는 이유일 것입니다. 구조체의 경우, 일반적으로 C++ 또는 C에서 전환한 경우를 제외한 다른 언어에서 Go로 전환한 사람들이 어려움을 겪기 때문에 이러한 결과가 나타났다고 생각합니다.

Amazon Web Services와 관련하여 많은 문제점이 대두될 것으로 예상했는데, 이는 AWS 자체의 인기가 높기 때문이라고 생각합니다. 지금은 Google App Engine용 Go 앱을 개발하는 것이 더 간단한데, 항상 그런 것은 아니었기 때문에 이것이 질문이 많았던 이유라고 생각합니다.

대체로 Go 커뮤니티는 꽤 재미 있고 포용적인 커뮤니티입니다. 초보자라고 결코 배척되지 않으며 질문을 하고 이 언어를 탐색하도록 지지해줍니다. 일반적인 주제와 관련하여 제네릭 및 일부 언어 개선, 컴파일러 개선 등이 가장 자주 논의됩니다.

제네릭은 특히 이 언어에 대해 가장 많이 요청되는 기능 중 하나로, 이를 통해 이점을 얻을 수 있는 많은 작업들이 있습니다.

여러분의 팀에서 GoLand를 사용해보고 싶으신가요? 사용자 수 제한 없이 무제한 사용자가 사용할 수 있는 평가판을 사용해 보세요.

지금 신청하세요!

이 게시물은 Ekaterina Zharova가 작성한 The state of Go를 번역한 글입니다.

image description

Discover more