새소식

300x250
2. 웹개발/개발 주저리

오라클 자바 SE 유료화(1) - 정보 정리

  • -
728x90

오라클 자바 SE 유료화에 대한 정보 정리


안녕하세요. 갓대희 입니다. 이번 포스팅은 Java 유료 논쟁 ] 에 관련 내용 입니다. : ) 


현재 이벤트, 프로모션 PL 업무를 진행하며 사용자 접근 제어 솔루션 도입도 준비하고 있었다.

그러던 도중 "Oracle Java 유료화" 와 관련된 업무를 준비해 보라는 팀장님의 말씀에 틈틈히 내용을 정리 해보고 저녁 외부 세니나도 다녀 왔다. 관련 내용을 정리해 보려고 한다.

여러 자료들과 세미나에서 듣고 느낌점을 포함해서 작성 하다보니 지극히 사견이 포함 되어있고, 절대 정답을 나타내지 않기 때문에 댓글로 다른의견을 주시면 감사하겠습니다.


Java SE (Java Standard Edition)


1. Oracle JDK 라이센스 전환


▶ 과거 라이센스 정책


 - 지금까지 BCL(Binary Code License)이라는 라이선스 체계를 따랐다. (~2018년 6월)

 - BCL은 유료와 무료가 섞인 라이선스 체계다.
   (프로그램을 작동(running)하기 위한 목적으로 사용되는 것만을 허용한다.)

 - 서버 컴퓨터나 PC, 태블릿, 스마트폰 등의 '일반 목적 컴퓨팅' 용도로는 무료로 사용할 수 있고, 키오스크 등 특수한 목적의 컴퓨팅 장비에 사용할 때는 유료인 요금제다.

 - 프로그램을 내부적인 비즈니스 운영 또는 상업용 목적, 제품화 목적으로 사용하고자 할 때에는 수정하지 않은 상태로 프로그램의 번들 된 부분으로서(bundled as part of) 소유권에 대한 고지문 등을 삭제하거나 대체하지 않은 상태로 사용해야 한다.



▶ 현재 변경된 라이센스 정책

 - BCL 라이센스가 2018년 7월 부로 Java SE Subscription라는 이름의 년 단위 유료 구독형 라이센스로 새롭게 개편되었다.
   (영구 라이선스에서 구독 모델(서브스크립션)으로 변경, 서브스크립션을 도입하면서 오라클 자바 SE의 BCL 정책을 폐지)

 - 지속적인 업데이트 & 보안 패치를 받고자 하는 고객에 대해서 서브스크립션 라이선스(Subscription License)를 구해야 한다.

 - 오라클의 이번 정책변경은 무료에서 유료로 바뀌는 것이 아니라, 라이선스 과금 모델에서 서브스크립션 과금 모델로 바뀌는 것이다.

 - 이는 소프트웨어 업계의 전반적인 트렌드다. 어도비시스템즈, 마이크로소프트 등 대표적인 소프트웨어 회사들이 이같은 흐름을 이끌고 있다.
  (요즘 포토샵, 오피스도 월정액 요금을 내고 사용하는 것이 일반적, 불법 소프트웨어 차단하고, 고객들이 최신 버전을 사용하도록 유도한다는 점에서 소프트웨어 업체에는 큰 이득)




2. Oracle Java Subscription


▶ 서브스크립션


 -서브스크립션을 구매하지 않은 기업은 오라클 JDK 자바 SE를 업무용, 상업용, 운영용으로 사용할 수 없다.
   (비상업적인 용도에 한해서는 이전과 같은 무료 사용이 가능)

 - 업데이트 및 버그 패치도 제공되지 않는다.

 - 서브스크립션 구매 후 기간이 종료되면 모든 접속이 금지된다.

 - 새로운 라이센스는 서버 및 클라우드 인스턴스의 경우 프로세서 당 월 25달러를, 데스크탑의 경우 사용자 당 월 2.5달러를 요구한다. 대량구매 및 2년, 3년 장기 구독에 따른 할인이 제공된다.
 (개발용으로 프로젝트에서 사용시 '개발자 수' 이고 운영시에는 운영서버의 'core' 수 이다.)

 - Subscription 계약은 월단위 과금이지만, 계약은 1년 단위로 이루어진다.


▶ Java SE Desktop Subscription (데스크톱 가격) - 사용자당 $2.5 / 월 
| Monthly Subscription Price | Subscription Metric | Volume |
  2.5 Named User Plus 1-999
  2.0 Named User Plus 1,000-2,999
  1.75 Named User Plus 3,000-9,999
  1.5 Named User Plus 10,000-19,999
  1.25 Named User Plus 20,000-49,999
Contact for Details 50,000+

▶ Java SE Subscription (서버 및 클라우드 배포 환경) - 프로세서당 $25 / 월
| Monthly Subscription Price | Subscription Metric | Volume |
  25 Processor 1-99
  23.75 Processor 100-249
  22.5 Processor 250-499
  20 Processor 500-999
  17.5 Processor 1,000-2,999
  15 Processor 3,000-9,999
  12.5 Processor 10,000-19,999
Processor 20,000+



ex1) Java 운용 Application 서버 10 core / Desktop 사용자 100명
        (28,031 * 10) + (2,803 * 100) = 560,610원 / 1개월
                                        6,727,320원 / 1년

ex2) Java 운용 Application 서버 10 core / Desktop 사용자 100명
※ 총 JAVA 이용비 = 서버 비용비 + 데스크톱 이용비
※ 서버 이용비 = 25$ * 코어수 * 코어팩터(프로세서 성능지수)
※ 데스크톱 이용비 = 10(직원수)*2.50$=25$


▶ 기존 Oracle JDK 8 바이너리의 경우 2019년 1월 이후 업데이트부터 라이센스 구독을 요구한다.
 - 새로운 라이센스는 Oracle JDK 11 바이너리부터 적용된다. 또한, 오직 라이센스 구독자 만이 LTS 업데이트 지원을 받을 수 있다.

※ LTS : 장기지원서비스, JDK 11 : 2018.9월 출시된 자바SE 버전, 다음 LTS 지원 버전(Oracle JDK 17)의 출시는 2021년 가을(약 3년 뒤))

(오라클은 앞으로 6개월마다 새버전을 내놓고, 특정버전만 LTS(장기지원서비스)를 하겠다고 밝혔다.
오라클은 자바SE9 버전부터 6개월마다 자바를 업데이트한다. 버그패치와 같은 지원 서비스도 6개월까지만 진행한다. 원칙적으로 기업들은 6개월마다 자바SE 를 업그레이드 해야 한다.
하지만 기업에서 운영되는 플랫폼을 6개월마다 업그레이드 하는 것은 사실상 불가능하다. 이를 위해 LTS가 있다고 봐도 될 것 이다.)


▶ Java Se Subscription 모델 방식 설명 - 사용 유형별 구분



※ 도입 검토 실제 사례
 - 삼성 SDS에서도 이와 관련하여 개발자용 Subscription 구독을 검토하였으나 약 100몇억이나 비용이 발생한다고 추정 되어 구매를 포기하였다고 한다.



3. Java는 원래 무료가 아니었나?


▶ 흔히 우리는 Java를 무료라고 생각하고 써왔을 텐데 왜 이런 논란이 생기게 되었는지 자세히 확인해 보자.

   Q : Java 다운로드는 무료로 제공됩니까?
   A : 예, Java 다운로드는 무료입니다. java.com에서 최신 버전을 다운로드할 수 있습니다.
   java.com에서도 무료라고 명시되어 있다.


▶ 오라클 자바SE는 원래부터 유료였다. 
 - 개인이 사용할 때는 무료지만, 기업에서 사용할 때는 라이선스를 구매해야 했다.
알집 프로그램을 집에 있는 PC에 설치해서 개인적으로 쓰는 건 괜찮지만, 회사 컴퓨터에 깔면 비용을 내야 하는 것과 비슷하다.

 - 오라클 자바SE도 마찬가지다.
   개인 PC에 설치하는건 무료지만 회사 PC나 서버에 설치하면 오라클의 라이선스를 구매해야 했다.
   그러나 국내에선 자바SE를 돈 내고 쓰는 경우가 거의 없었다.
   한국오라클도 이 사업에 큰 관심이 없는 듯 보였고, 이 때문에 마치 오라클 자바SE가 완전 무료인 것처럼 사용됐다.
 
 - 즉 오라클이 구독 모델로 바꾼 건 자바가 아니라 '자바 개발 도구(Java Development Kit, JDK)'다.
   자바 언어 자체는 무료지만, JDK는 완전한 무료가 아니다.
   JDK는 자바란 개발언어를 활용하기 쉽도록 만든 개발환경 패키지가 있다.



※ 용어 정리

▶ JAVA SE(Java Standard Edition)
 - JVM (Java 가상 머신) 및 API 등으로 구성되어 있다.
 - Core Java라고도 하며 가장 기본적이고 표준적인 Java 버전

▶ JAVA EE(Java Enterprise Edition)
 - "Java SE"에 서버용 확장 표준들을 추가 한 것 이다.
 - Java 2 Platform, Enterprise Edition 또는 J2EE로 알려져 있었다.

▶ JRE(Java Runtime Environment)
 - Java 프로그램이 실행되도록 제공되는 환경.
 - JVM, 클래스 라이브러리 및 기타 지원 파일이 들어 있다.
 - 컴파일러, 디버거 등의 개발 도구 는 포함되어 있지 않다 .

▶ JDK(Java SE Development Kit)
 - 애플리케이션을 개발하기 위해 필요한 프로그램 (javac, java, javadoc, jdb 등) 과 JRE가 포함되어 있다.
   


4. Oracle JDK

 
▶ Java의 무료 논쟁은 2011년 오라클이 소유권을 가지면서 시작되었다. 다만 명확히 해야할 점은 Java라는 프로그래밍 언어 자체는 GPL 라이센스로 무료이다.

 - 오라클 자바 SE는 무료였다가 유료로 바뀌는 것이 아니다.(자바는 무료지만, JDK는 유료였다)

 - Java 애플리케이션을 실행하기 위해서는 JVM이 필요하고 컴파일하기 위해서는 JDK가 필요하다. 일반적으로 JDK를 설치하면 JVM(Hotspot이라고도 표현, Java 기술의 핵심)도 함께 설치된다.

 - 문제는 Java가 아닌 이 JDK에 있다.


▶ 엔드오브퍼블릭업데이트(EOPU)

 - 오라클은 특정시점 이후부터 공식 기술지원을 종료한다.
    EOPU 이후 JDK 버전별 패치는 유상 유지보수 계약을 체결한 상용 라이선스 보유자에게만 제공된다.

 - Oracle JDK는 위에서 말했듯이 사용 목적에 따라 무료 or 유료일 수 있다. (매우 애매하다)
 ㆍ일반적인 목적의 컴퓨팅(General Purpose Computing)에만 사용시 무료 (데스크탑, 노트북, 스마트폰, 태블릿 등의 사용)
 ㆍ일반적이지 않은 목적의 컴퓨팅(Non-General Purpose Computing) 사용시 유료 과금 (특정 기능 만을 위해 작동하는 시스템 및 솔루션에서의 사용)

 - 이런 애매한 표현때문에 대안으로 뒤에서 다룰 Open JDK나 Azul Systems에서 제공하는 Zulu 등을 사용할 수 있다.
   (JDK와 JVM을 제공하는 OpenJDK은 GPL v2 with the Classpath Exception 라이센스로 무료)

 - Oracle JDK 최종 업데이트 제공 버전 (참고 : https://www.java.com/ko/download/faq/release_dates.xml)
   JDK1.4.2_30(SE 4)
   JDK1.5.22(SE 5)
   JDK1.6.45(SE 6)
   JDK1.7.80(SE 7) (Java 7 Update 80 PSU(OTN)는 마지막 공용 7 릴리스, 2015년 4월 14일)
   JDK1.8.202(SE 8)(2019년 1월 15일) 버전 이하 사용시 무료



★ 이미 작년부터 시작하여 많은 타 벤더들의 JDK가 오라클 JDK의 대안으로 화두가 되었었다. 

유료화 대응 전략을 세우기 전 각각의 JDK마다 특징을 간단히 알아보고 넘어가도록 하자.


5. Open JDK


 - 오라클이 오픈소스 커뮤니티에 제공한 소스기반으로 오픈소스로 개발되고 있는 JDK.

 - 다양한 벤더에서 OpenJDK 바이너리를 공급 한다. (오라클, 레드햇, Azul, AdoptOpenJDK 등)

 - GPL(GPL v2 with the Classpath Exception) 라이센스로 무료

 - OpenJDK의 운영 주체는 오라클. 오라클 또한 OpenJDK를 기반으로 자사의 부가적인 기능을 추가한 Oracle JDK를 제작하여 배포하는 것이다.

 - LTS 지원 없이 6개월마다 새로운 버전이 공개된다.

 - OpenJDK 구현체
OpenJDK의 명세는 JCP(오라클, IBM, SAP 등으로 구성)에 의해서 결정된다.
OpenJDK는 결정된 스펙(Java SE 7: JSR 336, Java SE 8: JSR 337)을 구현한 레퍼런스 소스 코드이다.
많은 상업 JVM 벤더들이 이 OpenJDK 레퍼런스 소스 코드를 기반으로 각자의 JVM을 제작한다.
엄격한 테스트의 TCK 인증을 통과하면 OpenJDK를 완벽히 준수하는 구현체로 인정된다.
Oracle JDK 또한 Java SE 7부터 이 OpenJDK를 기반으로 앞서 설명한 추가 요소를 담아 배포한다.

 - 관련 Site


GPL 라이센스란 무엇인가. 꼭 간단하게라도 집고 넘어 가야한다. 

▶ GNU General Public License (GPLv2)

 - 자유 소프트웨어 재단(FSF)에서 만든 자유 소프트웨어 라이선스

 - 미국의 리처드 스톨만(Richard Stallman)이 GNU-프로젝트로 배포된 프로그램의 라이선스로 사용하기 위해 작성

 - 해당 라이센스는 다음 네 가지 조항을 명시하고 있다.

① 컴퓨터 프로그램을 어떤 목적으로든지 사용할 수 있다.
② 컴퓨터 프로그램의 복사를 언제나 프로그램의 코드와 함께 판매 또는 무료로 배포할 수 있다.
③ 컴퓨터 프로그램의 코드를 용도에 따라 결정할 수 있다.
④ 변경된 컴퓨터 프로그램 역시 프로그램의 코드와 함께 자유로이 배포할 수 있다.

GNU 일반 공중 라이선스는 자유 소프트웨어를 공유하고 수정할 수 있는 자유를 보장하기 위해 의도되었다.

즉, 소프트웨어가 사용자 모두에게 자유롭게 이용될 수 있도록 하는 것이다.



6. Oracle Jdk vs Open JDK

 ※ Open JDK와 Oracle 유료 JDK간 차이점

(1) Oracle 유료 JDK에는 개발, 버전관리 편의성을 증진시켜주는 관리 Tool 제공
    - Java Web Start
    - Java SE 엔터프라이즈 관리 기능
       · Java SE 8 AMC(Advanced Management Console) : 기업 전반에 배포된 Java 버전의 대시보드 뷰 제공
       · Java SE 8 MSI Enterprise JRE Installer
       · Java SE 8 Java Flight Recorder & Mission control
       · Java SE 8 Java Usage Logger

(2) Oracle 유료 JDK는 최대 8년까지 패치/업데이트 제공, Open JDK는 6개월 간격으로 Minor 버전을 제공


(3) Open JDK 사용시 주의점
 - Open JDK6에서 파일 처리와 같은 기본적인 OS-Integration 관련 기능과  네트워크 처리 및 Swing에서 몇몇 문제점이 보고 되었으므로, Open JDK 사용 시에는 Open JDK 7 이상 사용을 권고한다고 한다.

(4) JDK8, JDK11, JDK 17이 앞으로 LTS로 지원됨을 알 수 있다. 이도 JDK 선택시 고려 


7. OpenJDK는 운영 환경에 적합할까?


 - TCK 인증을 받은 OpenJDK 기반의 빌드 버전을 사용하면 운영 환경에 아무런 문제가 없다.

 - Java SE 7부터 모든 JDK는 OpenJDK 레퍼런스 소스 코드를 기반으로 제작된다. 
   (Jave SE 6 버전의 OpenJDK는 백포트 방식으로 구현되어 성능 저하 이슈가 존재한다.)
   (OpenJDK는 자바 스펙을 명시한 JSR 336, JSR 337를 빠짐없이 완전히 구현한 구현체이다.)

 - 오라클이 아닌 서드파티 업체가 OpenJDK를 기반으로 공인된 JDK를 제작하여 배포하려면 오라클의 유료 라이센스인 OCTLA에 가입해야 한다.
   기업리스트 : http://openjdk.java.net/groups/conformance/JckAccess/jck-access.html
   이 업체들이 OpenJDK 기반의 자체 빌드를 배포하려면 오라클의 엄격한 TCK 인증을 통과해야 한다. 수만가지의 테스트를 단 하나라도 통과하지 못하면 인증되지 않는다.

 - OpenJDK를 멀티 플랫폼 바이너리로 빌드하여 배포하는 대표적인 업체로는 Azul Systems가 있다. 개발 환경과 운영 환경 모두 Oracle JDK의 대안으로 좋은 평가를 받고 있다.
   


8. Azul Zulu


 - 우리 회사에도 Azul Zulu에 대한 자료가 공유 되었다.

 - 실제로 미국에서는 Azul Systems의 발빠른 대응 때문인지 이미 많은 회사에서 채택하여 사용 하고 있다고 한다. 우리나라에서도 해당 기업에서 발빠른 대응을 통해 Azul이 대항마로서 화두가 된 적도 많지만, 우리나라에선 점점 관심을 잃어가는 듯 하기도 하다.

 - 성능을 높이고, Oracle 보단 저렴하다는 전략을 기반으로 하는 듯 하다.

 - TCK를 통과한 무료 OpenJDK 구현체

 - Azul Systems(미국 소재의 Java Runtime 제작 전문 회사)는 Zulu라는 OpenJDK 기반 빌드에 부가 기능을 추가한 Windows, Linux, Mac OS X 바이너리를 무료로 제공한다.

 - 나도 집에서 Zulu JDK 변환하여 Java Program가 없는지 확인 결과 별다른 이상은 찾지 못하였다.




9. 무료 JDK


 1) Azul Systems Zulu / Zulu Enterprise
 

 2) AdoptOpenJdk with HotSpot
  
 - AdoptOpenJDK는 커뮤니티에 의해 무료로 제공되고 있는 OpenJDK 호환 바이너리.

 - TCK 인증을 받지 못하여 OpenJDK 호환 바이너리라고 한다.
   (Azul Systems Zulu, Amazon Corretto와 달리 오라클로부터 TCK 인증을 받기 위한 계약을 맺지 못했기 때문)

 - 커뮤니티 측 에서는 TCK 인증을 받기 위해 지속적으로 노력하고 있으며 품질에는 전혀 문제가 없다고 설명하고 있다.



 3) Red Hat OpenJDK

 - 2018/6/4에 RedHat 사는 OpenJDK8 지원 종료 후 OpenJDK11을 출시 이것을 LTS (장기 지원)로 제공하겠다고 발표했다.

 - OpenJDK 8부터 Red Hat은 Red Hat JBoss Middleware와 함께 Windows 응용 프로그램을 개발할 수 있도록 Microsoft Windows에서 OpenJDK를 사용할 수있게 지원한다.

 - Red Hat Enterprise Linux에는 OpenJDK가 기본 Java 개발 및 런타임 환경으로 포함되어 있다.




10. CSP (Cloud Service Provider)


 - Amazon Corretto
 (OpenJDK @ Amazon Linux)

요즘 AWS 등과 같은 클라우드 컴퓨팅의 환경으로 전환하고 있는 기업들이 많이 생겨나도 있다.

이런 클라우드 컴퓨팅 서비스를 제공하는 벤더에서도 무료로 JDK를 배포하고 있으니 이도 대응책 중의 하나이다.

 - JDK 사용도 무료이며 기술 지원도 무료로 제공 된다.






11. 결론 - 대응 전략


1) Java SE 4~10

▶ 기존 JDK는 그대로 사용해도 된다. (오라클 문의 시 사용해도 된다고 하였다. 찝찝하지만.)

 - 오라클 홈페이지에서 BCL(Oracle Binary Code License) 하에 공식 업데이트 버전이 제공 되므로 기존과 동일하게 무료로 사용 가능 하다.

 - 다만 오라클에서 제공하는 최종 공식버전 업데이트보다 높은 minor 버전 사용 시 상용 소프트웨어에 대한 불법적인 사용으로 간주 될 수 있다.

 - 결국 혹시 최종 공식버전 업데이트보다 높은 경우 Java SE Subscription 신청하여 유료로 사용하거나 OpenJDK를 사용 해야 한다.


2) Java SE 11 +

 - Java SE 버전 릴리즈 정책이 변경 되어 6개월 마다 Major 버전이 리리즈 된다. (Java SE9부터 적용)

 - Java SE 11부터 LTS 버전이 3년 단위로 발표 예정이다. (SE 11, SE 17, SE 23, SE 29, SE 35)

 - Java SE 11부터 OTN(Oracle Technology Network License) 라이선스 하에 제공되므로 개인용으로만 무료 사용 가능.

 - 기업 업무용으로 사용 시에 Java SE Subscription 신청하여 유료로 사용하거나 OpenJDK를 사용 해야 한다. 





우리 싸이트와 같은 경우는 Java1.7을 사용하고 있는데 향후 10년뒤에도 1.7로 계속 운영할까? 

다른 타 회사들에서도 빠르게 대응하고 있고, 충분히 OpenJdk, Zulu등의 JDK 적용가능하며, 향후 Java 버전 업을 생각한다면, 이번 기회에 타 JDK로의 변경을 검토해볼만 하다고 생각 한다.

이에 따른 적용, 테스트 후 또다시 관련 내용을 포스팅 해봐야지.



다음 포스팅은 JDK 변경 작업을 테스트 후 이와 관련된 시행 착오, 경험등을 정리해서 포스팅 해봐야 겠다.


 - 참고
https://jsonobject.tistory.com/395
http://blog.daum.net/tingle/9032485
https://cholchori.tistory.com/1859

※ JVM, JDK, JRE?
https://stackoverflow.com/questions/11547458/what-is-the-difference-between-jvm-jdk-jre-openjdk/11580321




300x250
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.