2일 전

“자바 상태 API로 앱 시작 속도 높인다”··· 새 오픈JDK 프로젝트 제안

Paul Krill | InfoWorld
자바 런타임의 ‘상태(state)’를 저장해 인스턴스를 빠르게 시작하는 것을 목표로 하는 새로운 개발 제안이 오픈JDK(OpenJDK) 커뮤니티에서 제기됐다. 제안서에 따르면 이를 통해 자바 애플리케이션의 긴 시작 시간을 단축할 수 있다. 
 
ⓒGetty Images

자바 소프트웨어 제공업체 아줄(Azul)의 선임 소프트웨어 엔지니어 안톤 코즐로프가 오픈JDK 커뮤니티에 제안한 ‘CRaC(Coordinated Restore at Checkpoint)’ 프로젝트는 애플리케이션과 런타임 간의 조정을 통해 상태를 저장하고 복원하는 것을 목표로 한다. 또한 제안서는 자바 런타임이 가상머신 스냅샷, 컨테이너 스냅샷, 리눅스의 CRIU(Checkpoint/Restore In Userspace) 프로젝트 등 상태를 저장하는 여러 방법을 지원하도록 할 것이라고 전했다. 

자바 런타임의 상태(스냅샷, 체크포인트)를 저장해 자바 애플리케이션의 긴 시작 시간과 워밍업을 줄일 수 있다는 게 제안서의 설명이다. 저장된 상태가 인스턴스를 빠르게 시작(복원)하는 데 사용된다. 

한편 상태를 저장한 후 실행 환경이 변경될 수 있는 등의 몇 가지 문제가 있다고 제안서는 밝혔다. 여러 인스턴스가 저장된 상태에서 동시에 시작되는 경우 고유성(uniqueness)을 확보해야 하고 실행이 어느 시점에서 분산돼야 하는 것도 또 다른 문제라고 덧붙였다. 

제안서는 이러한 문제를 해결하는 실질적인 방법은 자바 애플리케이션이 상태를 저장하고 복원하는 시기를 인식하도록 하는 것이라고 말했다. 그렇게 되면 애플리케이션이 환경 변화를 처리할 수 있고, 해당 환경에서 고유성을 확보할 수도 있다. 

이어서 제안서는 상태가 복원되지 않거나 혹은 복원 후에 제대로 작동하지 않을 경우 상태를 저장하지 않도록 API 및 런타임에서 안전 검사(safety checks)를 검토하고 있다고 덧붙였다. 

API는 JEP(JDK Enhancement Proposal) 프로세스에 따라 개발되고 표준 자바에 부합할 것으로 예상된다. 특정 버전의 자바가 해당 API 타깃으로 지정되진 않았다. 

해당 제안서에 달린 한 코멘트는 이 프로젝트가 레드햇(Red Hat)의 유사한 제안과 동기화될 수 있다고 말했다. 또 ‘프로젝트 라이덴(Project Leyden)’과 시너지 효과를 내 자바의 문제점을 해결할 수 있을 것이라는 점도 언급됐다. 

제안서에 따르면 원활한 API 채택을 위해 org.crac 호환성 라이브러리를 사용할 수 있도록 할 계획이다. 이 라이브러리는 JDK에서 CRaC API를 지원하지 않아도 이를 사용할 수 있도록 한다. CRaC 또는 해당 API를 지원하지 않는 JDK 버전에서 실행할 경우 org.crac API 계층은 쓸모없는 ‘no-op’ 계층으로 작동하지만 CRaC 기능이 포함된 JDK 버전에서 실행하면 이 기능은 API 사용 코드를 변경할 필요 없이 org.crac API를 통해 노출되고 사용할 수 있다. 

따라서 org.crac API 계층을 사용하면 프로토타입 또는 향후 버전의 JDK에서만 작동하는 별도의 소프트웨어 버전을 구축할 필요 없이 CRaC API 코딩을 시작할 수 있다. ciokr@idg.co.kr


 



2일 전

“자바 상태 API로 앱 시작 속도 높인다”··· 새 오픈JDK 프로젝트 제안

Paul Krill | InfoWorld
자바 런타임의 ‘상태(state)’를 저장해 인스턴스를 빠르게 시작하는 것을 목표로 하는 새로운 개발 제안이 오픈JDK(OpenJDK) 커뮤니티에서 제기됐다. 제안서에 따르면 이를 통해 자바 애플리케이션의 긴 시작 시간을 단축할 수 있다. 
 
ⓒGetty Images

자바 소프트웨어 제공업체 아줄(Azul)의 선임 소프트웨어 엔지니어 안톤 코즐로프가 오픈JDK 커뮤니티에 제안한 ‘CRaC(Coordinated Restore at Checkpoint)’ 프로젝트는 애플리케이션과 런타임 간의 조정을 통해 상태를 저장하고 복원하는 것을 목표로 한다. 또한 제안서는 자바 런타임이 가상머신 스냅샷, 컨테이너 스냅샷, 리눅스의 CRIU(Checkpoint/Restore In Userspace) 프로젝트 등 상태를 저장하는 여러 방법을 지원하도록 할 것이라고 전했다. 

자바 런타임의 상태(스냅샷, 체크포인트)를 저장해 자바 애플리케이션의 긴 시작 시간과 워밍업을 줄일 수 있다는 게 제안서의 설명이다. 저장된 상태가 인스턴스를 빠르게 시작(복원)하는 데 사용된다. 

한편 상태를 저장한 후 실행 환경이 변경될 수 있는 등의 몇 가지 문제가 있다고 제안서는 밝혔다. 여러 인스턴스가 저장된 상태에서 동시에 시작되는 경우 고유성(uniqueness)을 확보해야 하고 실행이 어느 시점에서 분산돼야 하는 것도 또 다른 문제라고 덧붙였다. 

제안서는 이러한 문제를 해결하는 실질적인 방법은 자바 애플리케이션이 상태를 저장하고 복원하는 시기를 인식하도록 하는 것이라고 말했다. 그렇게 되면 애플리케이션이 환경 변화를 처리할 수 있고, 해당 환경에서 고유성을 확보할 수도 있다. 

이어서 제안서는 상태가 복원되지 않거나 혹은 복원 후에 제대로 작동하지 않을 경우 상태를 저장하지 않도록 API 및 런타임에서 안전 검사(safety checks)를 검토하고 있다고 덧붙였다. 

API는 JEP(JDK Enhancement Proposal) 프로세스에 따라 개발되고 표준 자바에 부합할 것으로 예상된다. 특정 버전의 자바가 해당 API 타깃으로 지정되진 않았다. 

해당 제안서에 달린 한 코멘트는 이 프로젝트가 레드햇(Red Hat)의 유사한 제안과 동기화될 수 있다고 말했다. 또 ‘프로젝트 라이덴(Project Leyden)’과 시너지 효과를 내 자바의 문제점을 해결할 수 있을 것이라는 점도 언급됐다. 

제안서에 따르면 원활한 API 채택을 위해 org.crac 호환성 라이브러리를 사용할 수 있도록 할 계획이다. 이 라이브러리는 JDK에서 CRaC API를 지원하지 않아도 이를 사용할 수 있도록 한다. CRaC 또는 해당 API를 지원하지 않는 JDK 버전에서 실행할 경우 org.crac API 계층은 쓸모없는 ‘no-op’ 계층으로 작동하지만 CRaC 기능이 포함된 JDK 버전에서 실행하면 이 기능은 API 사용 코드를 변경할 필요 없이 org.crac API를 통해 노출되고 사용할 수 있다. 

따라서 org.crac API 계층을 사용하면 프로토타입 또는 향후 버전의 JDK에서만 작동하는 별도의 소프트웨어 버전을 구축할 필요 없이 CRaC API 코딩을 시작할 수 있다. ciokr@idg.co.kr


 

X