기술

Go 1.27, 포스트 양자 암호화 도입과 서버 메모리 비용 30% 절감 실현

Adrian Kessler

Go 1.27은 사용자 화면에 닿기 전에 인프라 계층에 영향을 미치는 두 가지 변경 사항을 선보였다. 이제 언어는 TLS에 포스트퀀텀 암호화를 통합하고, 작은 할당의 메모리 비용을 최대 30%까지 줄인다. 규모 면에서 비용을 절감해 주는 이런 업데이트인데, 정작 같은 주에 발표된 AI 프레임워크가 헤드라인을 장식했다.

포스트퀀텀 추가 사항은 FIPS 204에서 표준화된 서명 방식인 ML-DSA를 구현하는 새로운 crypto/mldsa 패키지다. Go의 TLS 1.3은 이제 세 가지 ML-DSA 변형(MLDSA44, MLDSA65, MLDSA87)을 사용해 연결을 인증할 수 있으며, crypto/x509 라이브러리는 이들 변형이 포함된 인증서를 구문 분석하고 검증할 수 있다. 이러한 방어가 막아내려는 위협, 즉 RSA나 타원곡선 암호를 깨뜨릴 만큼 강력한 양자 컴퓨터는 현재 실용적인 규모로 존재하지 않는다. 하지만 마이그레이션에는 수년이 걸린다. 장기적인 유효 기간을 가진 기록을 관리하는 금융, 의료, 정부 기관들은 이미 이를 적극적인 계획 문제로 다루고 있다.

메모리 변경은 덜 눈에 띄지만 더 즉각적인 가치를 지닌다. Go 런타임은 이제 80바이트 미만의 객체(수천 개의 동시 요청을 처리하는 일반 서버에서 대부분의 할당을 차지하는 클래스)를 대상으로 크기 전문화된 할당 루틴을 생성한다. 그 결과 해당 클래스의 할당 비용이 30% 줄어들었으며, 벤치마크에 따르면 서버 워크로드에서 3~5%의 속도 향상으로 이어진다. Go는 클라우드 API, 결제 처리기, 내부 플랫폼 서비스를 대규모로 실행한다. 이런 환경에서 그 차이는 실제 인프라 비용이다.

Go 1.27은 또한 제네릭이 Go 1.18에 도입된 이후 존재했던 격차, 즉 제네릭 메서드를 해결한다. 이전에는 메서드가 자체 타입 매개변수를 가질 수 없어, 타입 간 연산이 타입의 네임스페이스 밖에 있는 패키지 수준 함수로 밀려났다. 이 수정은 표준 라이브러리에서 확인할 수 있다. math/rand/v2.Rand가 세 가지 개별 정수형 메서드를 단일 제네릭 N() 메서드로 통합한 것이다. 이 문제를 우회해 왔던 코드베이스에게 이 변경은 새로운 패턴을 도입하기보다는 기존 패턴을 풀어내는 셈이다.

언급할 만한 주의사항이 두 가지 있다. 포스트퀀텀 지원은 옵트인(opt-in) 방식이다. 기존 TLS 구성은 변경 없이 계속 작동하며, 생태계 전반의 도입은 점진적으로 이루어질 것이다. 30% 메모리 개선은 80바이트 미만 할당 클래스에만 적용되며, 엔지니어들은 특정 워크로드를 프로파일링한 후에야 헤드라인 수치를 기대할 수 있다.

그 밖의 추가 사항으로는 거의 보편적으로 사용되던 서드파티 의존성을 제거하는 네이티브 uuid 패키지, 프로덕션에서 영구히 차단된 고루틴을 잡아내기 위해 이제 일반 공개된 고루틴 누출 프로파일러, 그리고 API를 변경하지 않고 기존 encoding/json 패키지를 조용히 뒷받침하는 새로운 encoding/json/v2 구현이 있다. 8월 19일에 출시된 Go 1.27은 go.dev에서 다운로드할 수 있으며, macOS 지원은 이제 버전 13 Ventura 이상이 필요하다.

태그: , , , , ,

토론

댓글 0개가 있습니다.