Created
December 28, 2021 00:09
-
-
Save wall72/2d74609e7e74e17a54b544af9c6b9a7b to your computer and use it in GitHub Desktop.
Software Architecture 의사결정 : Java 버전 선정
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Software Architecture 의사결정 : Java 버전 선정 | |
0. 의사결정 | |
- Java : Java 11 | |
- 선정 사유 | |
[가장 최근의 아키텍처로 안정화된 버전] | |
>> Java 8 은 너무 오래되고 현재 17 버전 출시 | |
>> Java 17은 출시된지 얼마안되어 더 안정화 필요 | |
>> 다음 LTS 버전인 21은 2023년 9월 출시 예정 | |
>> Java 8 을 Java 11 호 전환하는데 많은 노력이 필요함. 그러나 Java 11 이후로는 잦은 릴리즈와 큰 변화없는 업그레이드로 전환이 용이 | |
[컨테이너 실행환경에 최적화된 버전] | |
>> Docker 컨테이너 실행 환경에 최적화된 버전 | |
>> Java 8도 191업데이트 부터 가능하나 굳이 하위버전을 채택할 필요는 없음 | |
[성능향상된 최신의 버전] | |
>> 성능향상을 위한 여러 기능이 포함됨 | |
- 고려 사유 | |
[호환성 문제 발생에 대한 리스크] | |
<< 모듈 기능 때문에 오동작하는 Java 기반의 SW 있을 수 있으므로 모든 제품도입시 호환성 준수여부를 확인해야 함 | |
-*- | |
Back-up 주요 개선점 (Java 8 대비) | |
모듈 기능 추가 | |
- Java 의 모듈 기능이 도입되어 필요한 모듈만 실행시에 포함하는 런타임 구성이 가능하게 됨 | |
- 기존에 사용하던 허가되지 않는 com.sun.* 등의 내부 기능을 사용하지 못하게 됨 | |
>> 더 빠른 로딩타임과 모듈화된 아키텍처로 정합성 향상 | |
>>> Java 9 부터 적용된 아키텍처로 호환성 문제 발생 소지 있음 --> 레거시 자바 시스템의 경우 호환성을 점검하여 전환 | |
Docker 컨테이너 지원 개선 | |
- Java 10 이전버전까지는 컨테이너에 설정된 CPU 및 메모리 할당량 제한을 인식하지 못했음 | |
>> 컨테이너 상에서 실행되는 Java 가 더 정확하고 상세한 자원사용을 가능하게 함 | |
>>> k8s 등의 컨테이너 구성 설정 재구성 필요 --> 신규 구성 시 해당사항 없음 | |
※ Java 8 jdk8u191 버전 이후 버전에서는 해결된 문제이지만 굳이 하위버전을 선택할 필요는 없음 | |
성능 향상 | |
- 새로운 가비지컬렉션 지원 | |
- 기타 JVM 성능향상을 위한 여러가지 업그레이드 포함 | |
-*- | |
Back-up 기술지원 | |
[Oracle] | |
- Java 8, 2014.03, 2022.03 -> 너무 오래되고 곧 지원 종료 (레거시를 위한 확장지원 2030까지 유료지원) | |
- Java 11, 2018.09, 2023.09 | |
- Java 17, 2021.09, 2026.09 | |
[Adoptium] | |
- Java 8, 2014.03, 2026 05 | |
- Java 11, 2018.09, 2024.10 | |
- Java 17, 2021.09, TBC | |
-*- | |
참조 | |
(1) 'Java 11 이상으로 전환해야 하는 이유', https://docs.microsoft.com/ko-kr/java/openjdk/reasons-to-move-to-java-11, | |
https://docs.microsoft.com/en-us/java/openjdk/reasons-to-move-to-java-11 | |
(2) 'Java Support Roadmap', https://www.oracle.com/java/technologies/java-se-support-roadmap.html | |
(3) 'Java 11 로 마이그레이션 할 시간', https://blog.naver.com/PostView.nhn?blogId=digul2&logNo=221525574043, https://medium.com/criciumadev/its-time-migrating-to-java-11-5eb3868354f9 | |
(4) 'Oracle JDK Migration Guide', https://docs.oracle.com/en/java/javase/17/migrate/ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment