Erlang/OTP 29.0 메이저 릴리즈 — 한국 백엔드 팀 도입 체크리스트

본 글은 2026년 4월 15일 공개된 Erlang/OTP 29.0 메이저 릴리즈의 핵심 변경점을 정리합니다. 한국 백엔드·플랫폼 팀이 도입 전 점검해야 할 호환성 항목과 보안·언어·런타임 차원의 의미를 함께 다룹니다.

Erlang/OTP 29.0 메이저 릴리즈 도입을 검토하는 분산 백엔드 시스템 환경 이미지
Photo by Taylor Vick on Unsplash

검토 기준: Erlang/OTP 29.0 공식 릴리즈 노트, 동일 시점 BEAM 런타임 사양. 비교 대상은 OTP 27~28 계열입니다. 원 트렌드 출처는 GeekNews Erlang/OTP 29.0 게시물이며, 1차 근거는 공식 릴리즈 페이지(www.erlang.org/news/188)를 사용합니다.

1. OTP 29.0 한눈에 — 어떤 갈래의 변경인가

Erlang/OTP 29.0은 언어 문법, 컴파일러·JIT 최적화, 표준 라이브러리 확장, 보안 알고리즘 교체, 빌드 타깃 정리까지 다섯 갈래를 한 번에 묶은 메이저 릴리즈입니다. 공식 릴리즈 노트는 EEP-78·EEP-79 채택, 양자내성 키 교환 도입, 32-bit Windows 빌드 중단 같은 굵직한 항목을 함께 명시합니다.

실제 운영 영향은 새 문법보다 두 가지에서 먼저 드러납니다. 첫째는 SSH/SSL 기본 키 교환 알고리즘 교체이고, 둘째는 32-bit Windows 빌드 제거입니다. 둘 모두 코드 변경 없이도 배포·이기종 환경에서 호환성 이슈를 만들 수 있습니다.

2. 네이티브 레코드(EEP-79)와 다중값 컴프리헨션(EEP-78)

OTP 29.0은 EEP-79 기반 네이티브 레코드를 실험적 기능으로 추가했습니다. 공식 릴리즈 노트 기준 네이티브 레코드는 기존 튜플 기반 레코드와 달리 자체 데이터 타입으로 취급됩니다. 다만 공식 안내는 OTP 29 단계에서, 그리고 OTP 30에서도 동작이 바뀔 수 있는 실험적 상태임을 명시합니다. 운영 서비스 핵심 경로에 곧바로 도입하기보다는 내부 라이브러리·툴링부터 시범 도입하는 편이 안전합니다.

EEP-78 다중값 컴프리헨션은 하나의 컴프리헨션 표현식에서 여러 결과를 한 번에 만드는 문법입니다. 공식 릴리즈 노트에 등장하는 예시는 다음과 같습니다.

1> [-I, I || I <- [1, 2, 3]].
[-1,1,-2,2,-3,3]

리스트 한 번 순회로 양수·음수 쌍을 동시에 만드는 형태입니다. 기존에는 `lists:flatmap/2` 같은 함수로 풀던 패턴이라 가독성과 컴파일 최적화 측면 모두에서 의미가 있습니다.

3. 가드와 컴파일러 — is_integer/3와 JIT 개선

가드 표현식 영역에서는 `is_integer/3` BIF가 추가되었습니다. 공식 릴리즈 노트 설명에 따르면 값이 정수이고 동시에 특정 범위에 속하는지를 한 호출로 검증할 수 있어, 기존 `is_integer(X) andalso X >= Lo andalso X =< Hi` 패턴을 단축합니다. 가드 표현식이 단순해지면 패턴 매칭의 가독성과 컴파일러의 정적 분석 모두 이득을 봅니다.

컴파일러·JIT도 두 가지 최적화를 보강했습니다. 첫째, JIT는 여러 little-endian 세그먼트를 가지는 바이너리의 매칭 및 생성 코드를 더 효율적으로 생성합니다. 둘째, 컴파일러는 생성기에 의존하지 않는 상수 값의 map comprehension에 대해 더 적은 명령을 만들도록 개선되었습니다. 두 항목 모두 공식 릴리즈 노트에 명시되어 있으며, 패킷 파싱·바이너리 프로토콜 구현이 잦은 백엔드 코드에 직접 영향을 줍니다.

4. 양자내성 키 교환 — SSH/SSL 기본값이 바뀌었다

양자내성 키 교환 ML-KEM 도입을 다루는 보안 알고리즘 개념 이미지
OTP 29의 SSH·SSL 기본값 변경은 PQC 전환의 시작점입니다. — Photo by FlyD on Unsplash

운영 관점에서 가장 큰 변경은 보안 알고리즘 영역입니다. OTP 29.0의 SSH 기본 키 교환은 `mlkem768x25519-sha256`으로 바뀌었습니다. 공식 릴리즈 페이지 기준으로 이는 ML-KEM-768과 X25519를 결합한 하이브리드 알고리즘이며, 양자 컴퓨터 공격을 가정한 PQC 안전성과 기존 ECDH 안전성을 동시에 보장하는 구조입니다.

SSL 쪽도 같은 방향입니다. 공식 릴리즈 노트에 따르면 기본 설정에서 최선호 키 교환 그룹이 하이브리드 `x25519mlkem768`로 바뀌어, 클라이언트가 지원하면 우선 협상됩니다. 같은 알고리즘을 OpenSSH 진영도 OpenSSH 9.9부터 기본값으로 채택해 두었기 때문에, 최신 OpenSSH와의 호환성은 오히려 개선되는 방향입니다.

4-1. 운영 영향

피어가 새 알고리즘을 지원하지 않으면 자동으로 다른 알고리즘으로 폴백합니다. 다만 인하우스 모니터링 도구, 구버전 클라이언트, FIPS 강제 환경에서는 새 KEX가 등장하는 것 자체가 알림이나 차단 룰을 트리거할 수 있어 사전 점검이 필요합니다. 자세한 변경 이력은 SSH 애플리케이션 릴리즈 노트에서 직접 확인하는 편이 안전합니다.

5. 운영 도구 — io_ansi와 ct_doctest

OTP 29.0은 표준 라이브러리에 두 개의 신규 모듈을 추가했습니다. `io_ansi`는 ANSI 가상 터미널 시퀀스를 표준 출력에 직접 보낼 수 있는 API를 제공합니다. CLI 도구나 운영 스크립트에서 색·강조 출력을 외부 의존성 없이 다룰 수 있어, 디버깅 도구와 마이그레이션 스크립트 작성 시 코드 양이 줄어듭니다.

`ct_doctest`는 Erlang 모듈 문서 또는 별도 문서 파일에 적힌 예제 코드를 그대로 테스트로 실행하는 모듈입니다. 공식 릴리즈 노트는 이 도구가 문서 예제의 자동 검증을 가능하게 한다고 명시합니다. 라이브러리 저자 입장에서는 문서 신뢰성을 CI 단계로 끌어올릴 수 있는 변화이며, 사내 라이브러리 표준화 흐름과도 잘 맞습니다.

표준 라이브러리에는 `rand:shuffle/1`, `rand:shuffle/2`처럼 리스트를 무작위 순열로 만드는 함수도 추가되었습니다. 사소해 보이지만 직접 구현하던 패턴을 줄이고 의도를 명확히 드러내는 데 도움이 됩니다.

6. 호환성 영향 — 32-bit Windows 중단과 unsafe 경고

OTP 29.0부터 32-bit Windows용 Erlang/OTP 빌드는 더 이상 제공되지 않습니다. 공식 릴리즈 노트가 직접 명시한 변경입니다. 사내 환경 가운데 윈도우 32-bit 빌드에 묶여 있는 레거시 서비스나 도구가 있다면 64-bit 또는 다른 OS로 분리하는 작업이 도입 전 선행 과제가 됩니다.

언어 차원에서는 함수에 `-unsafe` 속성을 붙여 “안전하지 않은 사용”임을 표기할 수 있습니다. 동시에 컴파일러는 OTP가 항상 안전하지 않다고 분류한 함수 호출에 대해 기본적으로 경고를 출력하도록 바뀌었습니다. CI가 경고를 에러로 승격시키는 정책을 적용하는 팀은 도입 직후 빌드 실패가 나올 수 있으므로 정책 예외 또는 코드 정리가 함께 필요합니다.

7. 도입 전 점검 체크리스트

Erlang OTP 29 도입 전 점검 체크리스트를 검토하는 개발자 작업 환경 이미지
Photo by Chris Ried on Unsplash

한국 백엔드·플랫폼 팀이 OTP 29.0을 검토할 때 최소한 다음 항목을 사전에 확인하는 편이 안전합니다.

  • 의존 라이브러리의 OTP 29 지원 여부 — Cowboy, Plug 기반 미들웨어, Riak/Erlang 분산 라이브러리, RabbitMQ 클라이언트 등.
  • SSH 클라이언트·서버의 KEX 협상 로그 — 새 `mlkem768x25519-sha256`가 협상 결과에 등장하는지, 폴백이 비정상적으로 자주 발생하지는 않는지.
  • TLS 종단 장비(L7 로드밸런서, WAF)에서 `x25519mlkem768` 그룹이 알림 또는 차단 룰을 만들지 않는지.
  • 32-bit Windows 의존 빌드 파이프라인 존재 여부와 분리 계획.
  • CI의 “warnings as errors” 적용 범위 — 새 unsafe 경고로 빌드 실패가 발생할 가능성.
  • 네이티브 레코드(EEP-79)는 실험적 기능이므로 운영 서비스 핵심 경로 대신 내부 도구·테스트 코드부터 도입.

특정 OTP 버전 범위를 명시하는 시스템을 운영한다면 호환성 매트릭스 확인이 우선입니다. 예를 들어 RabbitMQ는 공식 문서에서 OTP 버전 요구사항을 별도 페이지로 관리하므로 RabbitMQ 공식 호환성 문서에서 OTP 29 지원 표기를 직접 확인하는 편이 안전합니다.

관련 글

OTP 29.0의 보안 알고리즘 교체와 빌드 정책 변화는 최근 다룬 다른 인프라·보안 토픽과 같은 흐름에 있습니다. 함께 읽으면 운영 점검이 한층 촘촘해집니다.


📌 함께 보시면 좋은 글

※ 본 글은 AI(Claude)의 초안을 기반으로 편집자 검수를 거쳐 발행되었습니다. (한국 AI기본법 대응 고지)

이직·퇴사, 지금 움직여도 될지 헷갈리시나요?

막연히 불안한 건지, 정말 시점이 온 건지 판단이 어려울 때가 있습니다.

5분 체크리스트로 지금 상태를 먼저 정리해보세요.
결론을 대신 내리기보다, 스스로 판단할 기준을 잡는 데 도움을 드립니다.

무료 체크리스트 보기

아직 확신이 없다면, 지금이 ‘고민 단계’인지부터 먼저 점검해보세요