운영 조직에 있으면서 개발자에게는 자발적인 개선작업을 시작하고자 할 때는 상사에 대한 ‘설득’이라는 어려운 과제가 주어진다. 사회통념상 시스템 운영 조직은 사고 안치고 장애 발생하게 하지 않는 것이 최우선이라서 그렇다.
담당 시스템에서 사용하는 JDK 버전이 너무 낡아서 지난 연초 KPI에 업그레이드 계획을 명시했고 실제 작업을 진행하기 직전에 설득하기 위한 사유를 정리해보았다. 대용량 데이터를 사용하는 거대 시스템도 아니고, 사용 라이브러리나 코드에서도 딱히 걸리는 부분도 없어 딱히 업그레이드에 이슈는 없어 보였기 때문이다.
어차피 구글링하면 쉽게 찾아낼 수 있는 내용들이지만 ‘보고용’ ‘설득용’ 자료가 필요해서 간략하게 정리한 내용이다.
- 보안성 - JDK 7은 2015년 4월에 Oracle에서 공식 업데이트 지원을 종료함.
- → 2016년 이후 JDK 제품군에서 식별된 취약점이 159건으로 이에 대한 업데이트가 이뤄지지 않음.
- → 네트워크 방화벽 및 OS패치를 무력화할만한 대형 결함 발견 시 대책 필요.
- 가용성 - JDK 7까지는 PermGen 메모리 영역 사이즈가 고정되어 있어 메모리 누수가 지속적이고 대량으로 발생할 경우 Out of Memory 에러로 장애발생함.
- → JDK 8부터는 metaspace로 대체됨 (Native Memory 영역)
- → 메모리가 부족하면 JDK가 동적으로 할당하므로 메모리 누수로 인한 장애 발생 소지 줄임
- 범용성 - OAuth2 등의 기능 구현을 위한 최신 자바 라이브러리는 JDK 8 기반으로 컴파일되어 업데이트 되고 있음.
- → 보안취약점이나 신 기능 구현을 위해 라이브러리 업데이트가 필요할 경우 대비.
- → 성능 상 JDK 7보다는 JDK 8이 우위.
- 효용성 - JDK 8에서는 Lambda식 및 함수형 프로그래밍 등의 기법이 도입되어 보다 간결하고 효과적인 코딩 가능.
- 기타 - 향후 자바 유료화 이슈로 인해 OpenJDK으로의 전환 필요성이 대두될 수 있어 JDK 교체 작업에 대한 레퍼런스를 축적하고자 함.
댓글 없음:
댓글 쓰기