대규모 게임 서버, Scala 2.13에서 Scala 3로의 마이그레이션: 1년간의 여정
2025-02-06
이 글에서는 4년 이상 운영되어 온 프로덕션 환경의 멀티플레이어 모바일 게임 서버를 Scala 2.13에서 Scala 3로 마이그레이션한 저자의 경험을 자세히 설명합니다. 첫 시도는 Scala 3에서 주요 기능(매크로 어노테이션, 타입 프로젝션 등)이 제거되었고 대규모 코드 변경이 필요했기 때문에 실패했습니다. 1년 후, 저자는 Scala 2 코드베이스에 Scala 3 구문을 선행 적용하고, IntelliJ의 코드 검사 도구, Monocle 렌즈를 생성하는 사용자 지정 sbt 소스 제네레이터, 타입 프로젝션에 대한 창의적인 해결책 등 다각적인 접근 방식을 통해 마이그레이션에 성공했습니다. 의존성 충돌이나 컴파일 시간 지연과 같은 문제도 발생했지만, 라이브러리 포크, Scala 3의 Tuple.Map을 사용한 코드 최적화 등의 방법으로 해결했습니다. 어려움은 있었지만, 이 마이그레이션은 Scala 3의 메타 프로그래밍 기능의 힘과 가치를 보여줍니다.
개발
마이그레이션