자바 컴파일 성능을 올리기 위한 아줄시스템의 제안

컴퓨터 프로그래밍에는 컴파일이라는 과정이 있다. 우리가 흔히 프로그래밍 언어라고 말하는 C언어, 파이썬과 같은 언어는 인간이 이해하기 쉽게 만들어진 언어다. 하지만 이 언어들은 컴퓨터가 이해하지는 못한다. 이 때문에 사람이 이해하기 쉽게 작성된 코드는 기계가 이해할 수 있는 코드(기계어)로 변환되어야 하는데, 이게 컴파일이다. 자바도 마찬가지다. 프로그래머가 자바 언어로 코드를 작성하면 기계가 이해할 수 있는 언어로 바꿔주는 컴파일이라는 과정이 필요하다.

그런데 자바는 다른 언어와 좀 다른 점이 있다. 컴파일 한 번에 기계어로 바꾸지 않는다. 자바는 프로그래머가 작성한 코드를 컴파일하면 기계어가 아닌 바이트코드로 컴파일 된다. 이후 자바가상머신(JVM)을 통해 다시 기계어로 바꾸는 과정을 거친다.

이는 자바가 등장한 철학과 관련이 있다. 자바는 운영체제에 의존하지 않는 프로그램을 만들자며 등장한 언어다. 자바로 개발을 하면 운영체제가 윈도우든, 리눅스든 관계없이 구동되도록 하자는 취지다. 이를 위해 자바는 JVM이라는 중간단계를 만들었다. 어떤 운영체제든 JVM이 있으면 자바 프로그램을 구동할 수 있는 것이다. 프로그래머가 컴파일하면 1단계로 JVM이 이해할 수 있는 바이트코드로 바뀐다. JVM은 이 바이트코드를 읽은 후 다시 기계어로 바꾼다. 이 덕분에 코드를 한 번만 작성해도 JVM이 깔려있는 모든 운영체제에서 구동할 수 있게 된다.

이는 자바의 큰 장점이지만, 역효과도 있다. JVM이라는 중간단계를 거침으로 해서 성능이 느려지는 것이다. 프로그램이 실행될 때 바이트코드를 기계어로 바꾸게 되는데, 이 과정에서 성능 이슈가 발생한다. 많은 IT 업체들이 이 성능 문제를 해결하려는 노력을 펼친다.

자바 전문업체인 ‘아줄시스템’도 이와 같은 노력을 펼치는 회사다. 최근 이 회사가 발표한 ‘클라우드 네이티브 컴파일러(Cloud Native Compiler)’가 이런 노력의 일환이다.

간단히 말하면 바이트코드를 기계어로 만드는 컴파일 과정 중 하나인 JIT(Just In Time)을 클라우드로 외주화 하는 것이다. 원래 자바 프로그램은 단일 시스템에서 코드를 실행하는데, JIT을 클라우드에서 별도로 진행하면 더 빠르게 프로그램을 구동할 수 있다는 접근법이다.

‘클라우드 네이티브 컴파일러’는 아줄의 자바 런타임 플랫폼인 ‘프라임(Platform Prime)’과 함께 작동한다. 회사 측은 “클라우드 네이티브 컴파일러가 탄력적으로 스케일을 키우고 줄이면서 이전에 최적화된 컴필레이션을 JVM 전반에 걸쳐 재사용해서 연결되는 모든 JVM의 성능을 높이고 시작 시간을 줄여준다”고 설명했다.

클라우드 네이티브 컴파일러는 이 회사가 밀고 있는 ‘아줄 인텔리전스 클라우드’의 한 제품이다.아줄시스템즈의 CEO 겸 공동창업자인 스캇 셀러스(Scott Sellers)는 “아줄 인텔리전스 클라우드를 통해 일견 모순돼 보이는 인프라 운영 비용 절감 및 애플리케이션 성능 향상에 대한 우선순위들을 함께 추구할 수 있다”며 “아줄은 보다 적은 컴퓨팅 자원으로 더 빠른 성능을 제공해, 고객의 인프라스트럭처 지출을 최대 50% 절감시킨다. 고객의 애플리케이션 코드를 변경하거나 코드를 추가하는 방법이 아니라 애플리케이션을 구동하는 기저 인프라스트럭처를 최적화해서 이를 실현시킨다”고 말했다.

글. 바이라인네트워크
<심재석 기자>shimsky@byline.network

관련 글

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다