Go언어 안정성 문제.

프로그래밍 2022. 5. 27. 19:16 Posted by UnHa Kim

Go언어는 버전별로 안정성에  큰 기복이 있는 듯 하다.

 

Go 1.17 출시 초기 버전을 적용하고,  장중에 매매 시스템에서 에러가 발생하면서 중단되는 현상을 몇 번 경험했고, 이후 안정성이 확보된 1.16으로 되돌아갔다.

Go 1.18의 경우 더 심각한 데, 1.18.2가 발표된 현재 시점까지 가장 기초적인 DLL 호출에서 에러가 발생하며 유닛 테스트도 통과하지 못한다.

그래서, 여전히 Go 1.16.15 버전에 머물러 있다.

 

예외 처리를 if문에 의존하는 Go언어 특성 상 Generics가 없는 1.16 버전으로는 코드 가독성이 떨어지는 지라,  코드 가독성 개선을 위해서 Go 1.18의 Generics 기능을 애타게 기다려온 입장에서, Go 1.18이 기본적인 DLL 호출에서조차 에러가 발생하는 상황이 실망스럽기 그지없다.

 

Go언어 특유의 빠른 컴파일 속도와 간결한 코드, 높은 개발 생산성 덕분에 어찌어찌 자동 매매 시스템 개발에 성공해서 운용하는 단계에 이르렀으므로, Go언어는 내 인생에서 소중한 존재임은 틀림없지만 현 시스템을 개선하는 데 장애물로 작용하는 것도 사실이다.

 

이럴 바에야 Go 언어의 대안을 찾아봐야 겠다는 생각이 들어서, Rust 언어를 공부하기 시작했다.

 

Rust 언어로 재개발 하는 데 성공하지 못하더라도, 이미 개발해 놓은 Go언어 시스템을 계속 사용하면 되므로, 어떻게든 성공시켜야 하던 절박함은 많이 줄어들었기에, Rust언어로 재개발을 완성할 때까지 끈질기게 진행할 수 있을 지는 모르겠다.

 

지금까지 공부한 바로는 Rust 언어도 try/catch/finally로 대표되는 예외처리 기능이 없고, 에러 발생 여부를 match문을 이용해서 일일이 확인해 줘야 하지만, 코드의 반복을 줄여주는 '?' 연산자가 존재하므로, 에러처리 때문에 코드 가독성이 낮아지던 Go언어에서의 문제는 없는 듯 하다.

그외 Generics/메모리 안정성/동시처리 등 여러가지 기능 면에서도 부족해 보이지 않는다.

 

다만, 변수 소유권 문제등 새로운 개념을 습득해야 하고, 예외처리를 제외한 나머지 코드 가독성은 Go언어보다 떨어지고, 컴파일 속도도 Go언어보다 많이 느리므로 개발 생산성도 낮을 텐데, 이 나이에 굳어버린 머리로 이런 단점을 극복해 낼 수 있을 지 모르겠다.

 

여러모로 Go 언어 1.18에서 기본적인 DLL 호출에서조차 에러가 발생하는 현 상황이 너무 안타깝다.

 

'프로그래밍' 카테고리의 다른 글

한국투자증권 REST API  (0) 2022.07.07
WebAssembly는 이식성 높은 바이트코드였구나.  (0) 2022.06.11
Rust 언어의 match문  (0) 2022.05.28
Go언어 안정성 문제.  (0) 2022.05.27
Go언어 에러처리  (0) 2016.11.02
Go언어 소개  (0) 2014.11.04

댓글을 달아 주세요