TECH 으로 돌아가기
TECH HACKER NEWS 오늘 8분 읽기 26 READS

젤리핀 12.0, '10' 떼고 성능·전자책까지 손본 대형 업데이트

젤리핀 12.0, '10' 떼고 성능·전자책까지 손본 대형 업데이트
SOURCE IMAGE · HACKER NEWS

오픈소스 미디어 서버 젤리핀(Jellyfin)이 새 정식 버전 12.0을 내놨다. 이번 릴리스는 이전 10.11이 시작한 라이브러리 데이터베이스 재구축 작업을 마무리하고, 그 위에서 실질적인 성능 개선을 끌어내는 데 초점을 맞췄다. 동시에 그동안 영상 재생에 밀려 홀대받던 책과 만화 지원을 서버 차원으로 끌어올렸다. 자체 운영 미디어 서버를 다루는 실무자라면 이번 판이 이름값에 걸맞은 '메이저' 업데이트라는 점부터 짚고 넘어갈 필요가 있다.

'10.'을 버린 버전 체계

가장 눈에 띄는 변화는 버전 이름 자체다. 원래대로라면 10.12.0이 됐을 판이 그냥 12.0으로 불리며, 서버도 자신을 12.0.0으로 보고한다. 앞자리 10은 한 번도 바뀌지 않으면서 정작 의미 있는 숫자를 가운데로 밀어냈고, 그 탓에 10.11.0처럼 라이브러리 데이터베이스를 통째로 뜯어고친 릴리스가 겉으로는 마이너 업데이트처럼 보였다. 사용자들이 그만큼 가벼운 마음으로 올렸다가 문제를 겪었다는 피드백이 있었고, 그래서 큰 변화가 있을 때 앞자리가 움직이도록 체계를 바꿨다. 젤리핀 버전 문자열을 파싱하는 클라이언트, 모니터링 점검 스크립트, 배포 스크립트, 컨테이너 태그 고정을 운영한다면 업그레이드 전에 이 부분부터 확인해야 한다.

업그레이드는 되돌릴 수 없다

이번 릴리스는 데이터베이스 스키마를 바꾸고 첫 부팅 때 데이터를 실제로 다시 쓴다. 즉 이전 버전으로 돌아가는 유일한 방법은 백업뿐이다. 업그레이드 전 반드시 젤리핀을 정지하고 데이터·설정 디렉터리를 전체 수동 백업해야 한다. 대상 버전은 10.10.7 또는 10.11.x여야 하며, 10.11.x에서 12.0으로 바로 올리는 것은 완전히 지원된다. 그보다 오래된 버전이라면 먼저 10.10.7로 올린 뒤 넘어가야 한다. 사용자명이 대소문자를 구분하지 않게 바뀐 점도 함정이다. 대문자만 다른 계정이 둘 있으면 마이그레이션이 실패하므로 미리 정리해야 한다. 업그레이드 후에는 전체 라이브러리 스캔이 필수인데, 자동으로 묶였던 대체 버전들이 초기화돼 스캔 전까지는 없는 것처럼 보인다. 첫 스캔은 평소보다 훨씬 오래 걸리고 일부 영화가 새로 추가된 것처럼 나타날 수 있으나 이는 정상이며, 마이그레이션 도중 서버를 멈춰서는 안 된다.

재생 목록과 컬렉션 성능

성능 개선의 핵심은 재생 목록과 컬렉션의 저장 방식이다. 이전에는 재생 목록 안의 모든 항목이 하나의 큰 목록으로 통째로 저장돼 데이터베이스가 그 내부를 들여다볼 수 없었다. 항목 개수를 세거나 시청 진행률을 계산하거나 한 페이지만 보여주는 일조차 목록 전체를 불러와 풀어헤쳐야 했고, 항목 하나를 추가·삭제하려 해도 전체를 다시 써야 했다. 12.0에서는 재생 목록의 각 항목이 개별 행(row)이 된다. 데이터베이스가 행을 세고, 한 페이지만 반환하고, 나머지를 건드리지 않고 항목 하나만 넣고 뺄 수 있다. 컬렉션과 박스셋도 같은 방식으로 저장돼 같은 개선을 받는다. 실사용에서는 예전에 멈추던 페이지가 더 이상 멈추지 않는 형태로 체감된다. 다만 이 작업은 라이브러리를 '읽는' 방식에 들어간 것이지 스캐너 자체를 겨냥한 것은 아니라는 점은 분명히 해둘 필요가 있다. 스캐너가 조금 빨라질 수는 있어도 그것이 이번 목표는 아니었다.

에피소드 대체 버전과 책 지원

지금까지 영화 전용이던 대체 버전 기능이 에피소드에도 적용된다. 방송본과 확장판, 혹은 같은 에피소드의 1080p와 4K 사본을 영화처럼 묶을 수 있고, 실제로 보던 버전을 따라가는 이어보기 데이터까지 유지된다. 앞서 언급한 필수 재스캔이 바로 이 기능 때문이다. 에피소드 버전을 제대로 동작시키려면 버전 링크 저장 방식을 고쳐야 했고, 자동으로 묶였던 버전은 디스크의 파일을 근거로 다시 만들어야 하기 때문이다. 책 쪽에서는 Bookshelf 플러그인이 하던 일 대부분이 서버 본체로 흡수되면서 이 플러그인은 사용 중단됐고, 기능은 서버에 병합되거나 ComicVine·GoogleBooks 프로바이더로 분리됐다. 추천 행의 출처도 라이브러리별로 고를 수 있게 됐는데, 음악 라이브러리를 ListenBrainz에 연결하면 태그가 아니라 실제 청취 데이터를 근거로 유사 아티스트를 제안받는다.

실무자가 챙겨야 할 나머지

서드파티 플러그인은 업그레이드 전에 제거해야 한다. 10.11용 플러그인은 12.0에서 로드되지 않으며 작성자가 새로 빌드해줄 때까지 기다렸다 다시 넣어야 한다. 공식 플러그인은 이미 12.0을 지원하도록 갱신됐다. 오래된 서드파티 클라이언트도 끊긴다. 레거시 /emby/ 및 /mediabrowser/ 주소 지원이 제거되고 옛 로그인 방식이 기존 서버에서도 비활성화돼, 수년간 업데이트가 없던 클라이언트가 위험하다. '실험적'으로 나왔던 레이아웃은 이제 그냥 'Modern'이라는 이름으로 데스크톱과 모바일 기본값이 됐고, 이전 것은 'Legacy'로 남는다. TV 기기는 종전대로 레거시 앱 기반의 TV 레이아웃을 쓴다. 이번 릴리스에는 서버와 웹 클라이언트의 보안 수정이 다수 포함됐다. 조작된 요청으로 젤리핀이 제공해서는 안 되는 디렉터리 바깥 파일에 접근하는 경로를 막고, 로그인 없이 설정 마법사를 다시 실행하는 것을 방지하며, 안전하지 않은 이름의 플러그인 패키지를 거부하고, 웹 클라이언트의 XSS 문제를 고친다. 원하는 시점에 마이그레이션만 돌리고 싶다면 서버가 새로 받는 --mode MigrateSystem 옵션으로 업그레이드만 수행하고 종료시킬 수 있다. 한편 10.11.0에서 예고했던 내장 TLS/SSL 지원 제거는 이번이 아니라 이후 버전으로 미뤄졌다. 리버스 프록시 뒤에서 운영하라는 권고 자체는 그대로이므로, 내장 TLS로 인터넷에 노출된 인스턴스를 쓰고 있다면 이 유예는 면제가 아니라 이전 시간을 번 것으로 받아들이는 편이 맞다.

SOURCE · HACKER NEWS
원문 전체 보기 → https://jellyfin.org/posts/jellyfin-release-12.0/
SHARE
NEXT · CHOOSE

변화를 읽었다면,
내가 만들 수익 구조를 고릅니다.

정보를 더 모으는 데서 멈추지 않고, 광고·외주·판매·중개·구독 중 내 상황에 맞는 출발점을 정해보세요.

21가지 수익 구조 살펴보기
처리 중...