웹(Web)/데브옵스(DevOps)

2023 Go-lang(Go 언어) 장단점/추이

SK_MOUSE 2023. 4. 10. 00:26
반응형

Go-lang

개요

지난 2~3년간 Go언어에 대해 집중적으로 관심이 좁혀졌던 것에 비해,

최근(2023)에는 Go-lang에 대한 관심이 식은것같아 시장 상황이 궁금하여 다음과 같은 글을 작성하게 되었다.

Youtuber Hot topic : Go lang before 2023

선요약

  1.  대한민국에서 Go언어로 주력으로 나가기는 어렵다.
  2. Go를 첫언어로 선택하기보다는 Java, Python 등이 많음.
  3. Go는 Type강제가 심한 언어이므로, OOP를 추구하는 다른언어들과 특징이 다르므로 선뜻 선택하기는 어려운편.
  4. C언어를 대체로 리팩토링하기에는 이르다고 생각.

 


Go언어 특징

• 편의성 :동시성 기능 중 일부는 언어 자체에 내장. 'http 패키지'와 같은 고 표준 라이브러리 패키지로 제공된다. 자동 메모리 관리 기능을 지원. 파이썬 등의 스크립팅 언어와 달리 고 코드는 빠르게 실행되는 네이티브 바이너리로 컴파일된다. 컴파일 속도는 매우 빨라서 스크립팅 언어를 쓰는 느낌이 들 정도다.

• 속도 : 고 바이너리의 실행 속도는 C보단 느리지만 속도 차이는 대부분의 애플리케이션에서 무시할 만한 수준이다. 대부분의 작업에서 고의 성능은 C와 대등.

• 이식성 : 고 툴체인으로 생성된 실행 파일은 기본적인 외부 종속성 없이 단독으로 실행할 수 있다. 고 툴체인은 다양한 운영체제 및 하드웨어 플랫폼에서 사용할 수 있으며, 여러 플랫폼에서 바이너리를 컴파일하는 데 쓸 수 있다.

• 상호운용성 : 고는 기반 시스템 액세스를 희생하지 않고 이 모든 장점을 제공한다. 고 프로그램은 외부 C 라이브러리와 통신하거나 네이티브 시스템 호출을 수행할 수 있다. 예를 들어 도커에서 고는 저수준 리눅스 함수, 컨트롤 그룹, 네임스페이스와 연결하여 컨테이너를 활용할 수 있다.

• 지원 : 고 툴체인은 리눅스, 맥OS, 윈도우 바이너리 또는 도커 컨테이너로 무료 제공된다. Red Hat Enterprise Linux와 Fedora 등 여러 인기 리눅스 배포판에 기본으로 포함돼 있어 이런 플랫폼에 배치하기 비교적 용이하다. VS Code 등 많은 서드파티 개발 환경에서도 고 지원은 탄탄하다.

 

 

개선

주요 개선 사항으로는 의존성 관리(고의 지속적인 문제점), 버그 진단, 신뢰성이 있었다. 이 밖에 메모리, CPU 사용량, 바이너리 크기, 빌드 타임 등도 지적됐다. 


 

Go언어 분야

:주요 사용 사례는 API 또는 RPC 서비스 개발(49%)이었다. 데이터 처리(10%), 웹 서비스(10%), CLI 애플리케이션(8%)

• 클라우드-네이티브 개발
고의 동시성 및 네트워킹 기능, 높은 수준의 이식성은 클라우드 네이티브 앱을 개발에 적합하다. 실제로 고는 도커, 쿠버네티스, 이스티오 등 여러 클라우드 네이티브 컴퓨팅의 기반을 구축하는 데 사용됐다.

• 분산형 네트워크 서비스
네트워크 애플리케이션의 핵심은 동시성이며, 고의 네이티브 동시성 기능(예: 고루틴 및 채널)은 이런 작업에 적합하다. 많은 고 프로젝트가 API, 웹 서버, 웹 애플리케이션을 위한 최소 프레임워크 등 네트워킹, 분산형 기능, 클라우드 서비스에 쓰이는 이유다. 

• 유틸리티 및 독립형 도구
고 프로그램은 외부 종속성이 최소화된 상태에서 바이너리로 컴파일된다. 그래서 유틸리티 및 기타 도구 제작에 이상적이다. 빠르게 실행되고 재배포를 위해 신속하게 패키지화할 수 있어서다. 텔레포트(Teleport, SSH용)라는 액세스 서버를 한 예로 들 수 있다. 텔레포트는 소스부터 컴파일하거나 사전 구축 바이너리를 다운로드하여 쉽고 빠르게 서버에 배치할 수 있다.

네트워크 고부하 환경, MSA 등 다양한 것을 섞어쓰는경우 Go-lang은 좋다.

하지만, 기존 것을 리팩토링하기엔 아직 어려움이 있을 것이다.

 


 

참고 출처:
https://www.itworld.co.kr/news/250756#csidxbf0b6039d33dcf0935cdb390457d98b 

반응형