오라클이 지난 6월말 깜짝 선언을 했다. 자바스탠더드에디션(SE) 과금 방식을 영구 라이선스에서 구독 모델(서브스크립션)로 변경하겠다고 밝혔다. 이 선언은 그 동안 무료로 인식돼 온 자바의 유료화 선언으로 받아들여지면서 관련업계에 큰 혼란을 초래했다.
자바SE 서브스크립션이 적용될 경우 이용자들은 서버, 데스크톱, 클라우드 등의 사용환경에 따라 매달 일정금액을 지불해야 한다. 대신 패키지 소프트웨어 사용권, 업그레이드, 패치, 기술지원 등의 혜택을 받게 된다.
가격은 서버의 경우 프로세서당 월 25달러, 데스크톱은 사용자당 월 2달러50센트다. 클라우드는 서버와 같은 가격이 적용된다.
1회 구매로 영구적인 라이선스를 보유하던 모델이 월 구독료를 지불하면서 오라클 자바 패키지를 이용하는 방식으로 바뀐 셈이다.
■ 자바는 무료지만, JDK는 유료였다
그 동안 한국에선 '자바=공짜'란 인식이 강했다. 그 때문에 오라클의 구독모델이 '자바 유료화'로 받아들여지고 있다.
실제로 오라클의 공식 발표 이후 곳곳에서 자바 유료화 대책을 마련하는 등 분주한 움직임을 보이고 있다. 유료화 대응을 위한 대책회의를 열고, 대응방안을 안내하는 세미나도 다수 열렸다. 한국오라클에도 기업고객들의 문의가 쇄도하고 있다.
자바는 전 세계적으로 사용 범위가 굉장히 넓다. 특히 한국에선 사용 비중이 높은 편이다. 공공, 금융, 제조 등 수많은 곳의 애플리케이션에서 절대적으로 많은 비중을 차지한다.
이런 점을 감안하더라도 자바SE 구독 모델 변경에 대한 한국 시장의 반응은 다른 나라에 비해 유난스럽다. 자바에 대한 잘못된 인식이 큰 오해를 낳고, 혼란을 키웠다.
‘자바=무료’란 말은 반만 맞고, 반은 틀렸다. 자바는 썬마이크로시스템즈가 만들어진 컴퓨터 프로그래밍 언어이면서 관련 소프트웨어 생태계, 플랫폼 전반을 지칭한다. 자바란 언어, 혹은 플랫폼 그 자체는 오픈소스다. 따라서 누구나 무료로 활용할 수 있다.
그런데 오라클이 구독 모델로 바꾼 건 자바가 아니라 ‘자바 개발 도구(Java Development Kit, JDK)’다. JDK는 자바란 개발언어를 활용하기 쉽도록 만든 개발환경 패키지가 있다. JDK는 썬마이크로시스템즈가 만들어 제공했으며, 지금은 썬을 인수한 오라클이 만든다. 자바SE, ME 같은 단어는 JDK의 일종이다.
오해는 여기서 출발한다. 자바 언어 자체는 무료지만, JDK는 완전한 무료가 아니다.
JDK는 기본적으로 오픈소스 개발체계로 구현된 오픈JDK를 가리킨다. 오라클은 오픈JDK를 기본삼아 기술지원을 제공하는 ‘오라클JDK’를 제공한다. 일종의 오라클 배포판이다.
오픈JDK는 GPL v2와 클래스패스익셉션(링크예외, CPE) 혼합 라이선스를 근간으로 한다. 그간 오라클JDK는 바이너리코드라이선스(BCL)에 기반했는데, 지난 9월 출시된 오라클JDK11부터 BCL 대신 오라클 상용 라이선스를 취득해야 쓸 수 있도록 변경됐다.
오라클은 자사 JDK에 ‘상용 기능(commercial features)’을 추가한 자바 SE 어드밴스드, 자바 SE 스위트 등을 유료로 제공해왔다. 상용기능은 자바미션컨트롤, 플라이트 리코더 등 5~6개 기능을 담았다. 이미 자바SE 유료 버전이 있었던 것이다.
JDK는 정해진 계획에 따라 버전을 업그레이드한다. 신기능 추가나 변경이 버전 업그레이드로 이뤄진다. 그리고 오라클은 정해진 기간 동안 보안, 버그 수정 등을 담은 패치를 비정기적으로 배포한다. 오픈JDK나 오라클JDK이 동일하다.
오라클은 JDK 공식 패치를 버전별로 3~5년 동안 누구나 받을 수 있도록 ‘퍼블릭 릴리스’로 제공한다. 웹사이트에 접속해 자유롭게 받을 수 있다. 이때까지가 특별한 조건 외에 무료로 오라클JDK를 사용할 수 있는 시기다.
오라클은 특정시점 이후부터 공식 기술지원을 종료한다. 이를 ‘엔드오브퍼블릭업데이트(EOPU)’라 부른다. EOPU 이후 JDK 버전별 패치는 유상 유지보수 계약을 체결한 상용 라이선스 보유자에게만 제공된다. ‘마이오라클서포트(MOS)’란 사용자포털에서 계정 인증을 받아야 패치 파일을 받을 수 있다.
JDK 7 버전은 2015년 4월 퍼블릭 업데이트가 종료됐다. 프리미어 지원은 2019년 7월 종료된다. 연장지원(extended support)이 2022년 7월까지다. JDK 8 버전은 2019년 1월로 퍼블릭 업데이트가 종료된다. 프리미어 서포트는 2022년 3월까지, 연장지원이 2025년 3월까지다.
이 같은 EOPU 정책은 과거나 지금이나 똑같다. 다만 내년부터 JDK 8버전의 경우 서브스크립션을 통해서 EOPU 이후 기술지원을 받을 수 있다. JDK 6과 7 버전의 경우 현재도 별도 계약을 통해 지원받을 수 있다. 오라클JDK는 EOPU 후 반드시 유료로 사용해야 하는 상용 소프트웨어란 점은 예나 지금이나 변함이 없다.
■ 6개월로 짧아진 JDK 버전 업그레이드
오라클의 자바SE 유료화 이슈의 혼란을 키운 요인이 하나 더 있다. 오라클은 작년 9월 JDK 9부터 JDK 버전 업그레이드를 연 2회로 변경했다. 이에 따라 오픈JDK의 퍼블릭 릴리스 기간이 6개월로 짧아졌다.
한 버전을 오랜 기간 유지해야 하는 수요를 위해 ‘롱텀서포트(LTS)’란 버전이 3년마다 오라클에서 출시된다. 지난 9월 출시된 오라클 JDK 11이 LTS 버전이다. 오라클JDK LTS 버전은 6개월의 퍼블릭 릴리스 기간 후 2026년까지 오라클에서 기술지원을 제공한다.
JDK는 8 버전까지 오픈JDK와 오라클JDK를 별개였다. 오라클은 오픈JDK 관련 공식 바이너리코드를 배포하지 않았다. 오픈JDK와 오라클JDK는 호환되지 않았다.
오라클은 JDK 11 버전부터 공식 바이너리 코드를 제공하고 있다. 이는 오픈JDK와 오라클JDK가 완전히 동일하다는 의미다. 오픈JDK나 오라클JDK는 최신 버전의 퍼블릭 릴리스 기간 동안 100% 상호호환된다. 이 상호호환성은 6개월 공개지원 기간 동안 유지된다. 오라클은 이 기간동안 오픈JDK와 오라클JDK에 동일한 패치를 제공한다. 반대로, 공개지원 기간 종료 후부터 오픈JDK와 오라클JDK는 전혀 다른 패키지로 상존한다는 뜻이기도 하다.
앞으로 JDK 사용자는 6개월마다 최신 버전으로 업그레이드하거나, 오라클JDK LTS 버전을 사용해 장기간 유지하거나, 제3의 오픈JDK 기술지원 방안을 찾아야 한다.
■ 자바 서브스크립션은 가격 인하
자바SE 서브스크립션을 구매하면 계약 기간 동안 오라클JDK를 사용할 수 있다. 비용 측면에서 오라클의 서브스크립션을 구매할 것인지, 직접 시스템을 유지할 것인지, 제3의 기업을 찾을 것인지, 혹은 사용중인 버전을 패치없이 계속 유지할 것인지 선택하는 것이다.
비용측면으로 보면 오라클 자바SE 서브스크립션은 그 동안 적용되던 영구적 라이선스보다 요금이 저렴해졌다.
서버의 경우 프로세서 99개까지 개당 월 25달러다. 10개의 프로세서를 이용하는 조건으로 3년 간 구독하면 월마다 250달러, 연간 5천달러, 3년 총 1만5천달러다. 기타 추가되는 비용은 없다.
기존 자바SE 어드밴스드 구매의 경우 프로세서당 5천달러였다. 동일 운영 환경이라면, 5만달러를 지불해야 한다. 여기에 전체 오라클 시스템 계약규모의 22%를 적용받는 유상 유지보수 계약은 별도다.
참고로, 오라클은 라이선스 계약에서 프로세서의 유형에 따라 갯수를 다르게 산정한다. x86 프로세서와 오라클 스팍 프로세서의 경우 물리적인 칩 하나를 0.5개로 계산한다. 이는 서브스크립션에도 동일하게 적용된다.
데스크톱의 경우도 서버와 마찬가지로 기존 대비 가격인화 효과가 있다.
감안해야 할 게 또 있다. 오라클이 더 이상 오라클JDK의 영구적 라이선스를 판매하지 않는다는 점이다. 즉, 자바 서브스크립션을 중단하면 그 순간부터 오라클JDK를 사용할 수 없다. 이용자는 구독을 유지하거나, 동일한 버전의 오픈JDK로 이전해야 한다.
가령, 내년 1월부터 2020년까지 2년간 오라클JDK 11을 서브스크립션으로 사용한다고 가정하자. 그 시점에 오픈 JDK 11은 이미 공식 기술지원이 종료된 상태다. 이때 오라클JDK와 오픈JDK는 호환되지 않는다.
2020년 1월 이후 구독을 갱신하지 않으면, 고객의 선택지는 3가지다.
첫째. 오픈JDK로 이전할 수 있다. 이를 위해선 시스템을 다시 최적화해야 한다. 사용자가 직접 오픈JDK의 제로데이 보안 취약점이나 버그에 대응해야 한다.
둘째. 제3의 오픈JDK 지원회사와 계약하고 지원을 받을 수 있다. 제3자의 기술지원은 무료일 수도, 유료일 수도 있다.
셋째. 오라클의 자바 서브스크립션을 갱신해 시스템 환경을 유지하고 지속적으로 지원을 받을 수 있다.
오픈JDK가 6개월마다 새 버전으로 바뀐다면 사용자는 그때마다 버전을 업그레이드해야 할까. 반드시 그래야 하는 것도 아니다. 새 버전이 나오더라도 기존 버전을 유지해도 된다.
■ 빨리 변해야 자바가 산다
오라클은 왜 JDK 관리 주기를 6개월로 단축했을까. 오라클은 자바의 경쟁력을 유지하기 위해서라고 주장한다.
자바는 전통적으로 느린 발전, 까다로운 혁신을 추구해왔다. 이전 버전과 하위 호환성을 보장하기 위해서다. 때문에 최신 개발 트렌드에 한발 뒤처지는 인상을 준다. 컨테이너, 마이크로서비스, 데브옵스, 클라우드 같은 개발 환경 변화도 어느 때보다 극심하다. 노드JS, 고, 스위프트 같은 최신의 개발언어가 인기를 끄는 가운데, 자바도 경쟁력을 유지하기 위해 새 트렌드를 빠르게 따라가야 하는 상황에 처했다. 과거처럼 3~5년 주기로 새 버전을 내놓으면 변화 속도를 따라가기 힘들다. 길어진 업그레이드 시간만큼 버전 간 변화의 폭은 더욱 커지고, 하위호환성 유지는 더욱 어려워진다.
실제로 자바 구버전에 머무르는 경우가 매우 많다. 국내 기업 가운데 자바 초기 버전을 사용중인 곳도 있다. 함수형 프로그래밍 사상을 수용한 JDK 8 버전이 2014년 나왔는데, 아직도 JDK 6나 7 버전을 사용중인 곳이 허다하다. 그만큼 자바 생태계에서 버전 업그레이드는 어려운 숙제였다.
오라클은 이에 6개월마다 새 버전을 내놓으면서, 업그레이드의 정도를 축소하는 전략을 택했다. 작년 9월 출시된 JDK 9의 경우 90개의 새 기능과 수정을 담고 있었다. 이 시점에 JDK에 모듈 아키텍처를 적용해 패키지 무게를 줄였다. 오라클은 JDK 9을 마지막 대규모 업그레이드 버전이라 칭했다. JDK 10은 12개의 변화가 있었다. JDK 11은 17개였다. 내년 3월 나올 JDK 12는 4개의 변화만 예고된다.
민첩하게 변화하기 위해 업그레이드 주기를 단축하되, 변경 규모를 줄여 호환성을 최대한 유지하겠다는 전략이다.
마크 라인홀드 오라클 자바플랫폼그룹 최고아키텍트는 지난달말 열린 ‘오라클 코드원(구 자바원)’ 기조연설에서 “오랜 기간 자바 커뮤니티는 JDK 8에서 11으로 업그레이드하는 큰 구멍을 어떻게 메울 지 고민하고 논의해왔다”며 “자바의 경쟁력을 유지하려면 더욱 빠르게 바뀌어야 한다는 건 커뮤니티의 요구사항이었다”고 설명했다.
관련기사
- 오라클, 자바11 출시2018.11.02
- 오라클, 자바SE 월 구독 상품 출시...칩당 25달러2018.11.02
- 오라클, 자바10 공개2018.11.02
- 자바EE 새 이름 '자카르타EE'2018.11.02
그는 “빠른 업데이트로 바뀌어도 자바의 호환성은 가장 큰 가치로 유지되므로 변활르 두려워 하지 마라”며 “자바의 생산성과 프로그램 성능을 높이는 것은 프로그래밍 패러다임, 애플리케이션, 배포 형태, 하드웨어 등의 변화 속에서 필수적인 선택”이라고 강조했다.
그는 “자바는 여전히 무료(Java is still free)”라며 “오라클 장기지원은 무료가 아니지만, 오픈JDK 혁신은 계속 무료로 제공할 것”고 단언했다.