처리중입니다. 잠시만 기다려주세요.
TTJ 코딩클래스
정규반 단과 자료실 테크 뉴스 코딩 퀴즈
테크 뉴스
Hacker News 2026.03.30 31

Go로 나만의 Language Server를 만들 수 있는 라이브러리가 나왔어요

Hacker News 원문 보기
Go로 나만의 Language Server를 만들 수 있는 라이브러리가 나왔어요

에디터가 코드를 이해하는 비밀, Language Server Protocol

VS Code나 IntelliJ 같은 에디터에서 코드를 작성할 때, 자동완성이 뜨고, 함수 위에 마우스를 올리면 타입 정보가 나오고, 에러에 빨간 줄이 그어지죠? 이런 기능들이 마법처럼 동작하는 건 사실 뒤에서 Language Server라는 프로그램이 열심히 일하고 있기 때문이에요. Language Server Protocol(LSP)이라는 건, 이 에디터와 Language Server가 서로 대화하는 규칙을 정해놓은 표준 프로토콜인데요. 마이크로소프트가 처음 만들었고, 지금은 거의 모든 주요 에디터가 이걸 지원하고 있어요.

이게 뭐가 좋냐면, 예전에는 에디터마다 플러그인을 따로따로 만들어야 했거든요. Vim용 하나, VS Code용 하나, Emacs용 하나… 이런 식이었는데, LSP가 등장하면서 Language Server 하나만 잘 만들어 놓으면 어떤 에디터에서든 돌아가게 됐어요. 쉽게 말해 "통역사"를 하나만 고용하면 전 세계 어디서든 소통할 수 있게 된 거죠.

go-lsp: Go 개발자를 위한 LSP 프레임워크

이번에 공개된 go-lsp는 Go 언어로 Language Server를 만들 수 있게 해주는 라이브러리예요. 핵심 특징은 LSP 스펙 3.17 버전을 완전히 지원한다는 점이에요. LSP 3.17이라고 하면 2022년에 나온 최신 안정 스펙인데, 인레이 힌트(코드 중간중간에 타입 정보를 살짝 보여주는 기능)나 타입 계층 구조 조회 같은 비교적 최근 기능들까지 포함되어 있어요.

사용법을 보면 꽤 직관적이에요. Go에서 서버 인스턴스를 하나 만들고, 각 기능(자동완성, 정의로 이동, 호버 정보 등)에 대한 핸들러를 등록하는 방식이에요. 이게 뭐냐면, "사용자가 자동완성을 요청하면 이 함수를 실행해줘"라고 알려주는 거예요. 프레임워크가 JSON-RPC 통신이나 메시지 파싱 같은 복잡한 부분을 다 처리해주니까, 개발자는 실제 언어 분석 로직에만 집중할 수 있어요.

stdio(표준 입출력) 방식의 통신을 기본으로 지원하고 있고, 이건 대부분의 에디터가 Language Server와 소통할 때 쓰는 가장 일반적인 방식이에요. 프로세스를 하나 띄워놓고 표준 입출력으로 JSON 메시지를 주고받는 구조라 별도의 네트워크 설정 없이도 바로 동작하죠.

기존 도구들과 비교하면?

Go 생태계에서 LSP를 다루는 도구가 아예 없었던 건 아니에요. 구글이 만든 gopls가 Go 언어 자체의 Language Server로 이미 유명하고, 내부적으로는 golang.org/x/tools/gopls 패키지를 활용하고 있거든요. 하지만 gopls는 "Go 언어를 위한" Language Server이지, "Go로 다른 언어의 Language Server를 만들기 위한" 프레임워크는 아니에요.

go-lsp가 노리는 포지션은 좀 달라요. 예를 들어 여러분이 회사에서 자체 DSL(도메인 특화 언어)을 만들었다고 해볼게요. 설정 파일 포맷이 될 수도 있고, 쿼리 언어가 될 수도 있어요. 이런 커스텀 언어에 대해 에디터 지원을 추가하고 싶을 때, go-lsp를 쓰면 비교적 빠르게 Language Server를 만들 수 있는 거예요.

다른 언어 진영을 보면, TypeScript에는 vscode-languageserver-node라는 공식 라이브러리가 있고, Rust에는 tower-lsp가 있어요. Python에는 pygls가 꽤 인기 있고요. Go 쪽에서는 이런 역할을 하는 라이브러리가 상대적으로 부족했는데, go-lsp가 그 빈자리를 채우려는 시도로 볼 수 있어요.

한국 개발자에게 주는 시사점

솔직히 말하면, Language Server를 직접 만들 일이 있는 개발자는 많지 않을 거예요. 하지만 생각보다 활용할 수 있는 시나리오가 있어요. 사내에서 사용하는 커스텀 설정 포맷이나 템플릿 언어가 있다면, Language Server를 만들어서 자동완성과 에러 검사를 추가하는 것만으로도 팀 전체의 생산성이 크게 올라갈 수 있거든요. 특히 Go로 백엔드를 개발하는 팀이라면, 같은 언어로 도구까지 만들 수 있다는 건 꽤 매력적인 포인트예요.

또 하나, LSP의 동작 원리를 이해하는 건 개발 도구 생태계를 이해하는 데 큰 도움이 돼요. 에디터 플러그인을 만들거나, 코드 분석 도구를 개발할 때 LSP를 알고 있으면 설계 선택지가 훨씬 넓어지거든요.

정리하자면

go-lsp는 Go로 LSP 3.17 스펙을 완전 지원하는 Language Server를 만들 수 있게 해주는 프레임워크예요. 범용적으로 쓸 일이 잦진 않지만, 커스텀 언어나 DSL을 다루는 팀에게는 꽤 유용한 도구가 될 수 있어요.

혹시 회사에서 자체 DSL이나 설정 포맷을 쓰고 계신 분 있나요? 에디터 지원이 있으면 좋겠다고 생각해본 적 있으시다면 한번 살펴볼 만한 프로젝트예요.


🔗 출처: Hacker News

이 뉴스가 유용했나요?

이 기술을 직접 배워보세요

파이썬으로 자동화를 시작해보세요

파이썬 기초부터 자동화까지 실전 강의.

파이썬 강의 보기

"비전공 직장인인데 반년 만에 수익 파이프라인을 여러 개 만들었습니다"

실제 수강생 후기
  • 비전공자도 6개월이면 첫 수익
  • 20년 경력 개발자 직강
  • 자동화 프로그램 + 소스코드 제공

매일 AI·개발 뉴스를 받아보세요

주요 테크 뉴스를 매일 아침 이메일로 전해드립니다.

스팸 없이, 언제든 구독 취소 가능합니다.