SlideShare a Scribd company logo
1 of 15
Download to read offline
- 자바를 넘어선 새로운 시작의 서막
알도개(알고 보면 도움되는 개발 이야기)
이미지 출처: https://www.flickr.com/photos/75409276@N06/29379427975
CC BY-NC-SA 2.0
GraalVM – 자바를 넘어선 새로운 시작의 서막
GraalVM이란?
고성능 JDK 배포판
자바와 다른 JVM 기반 애플리케이션의 수행 속도를 가속화
1. Graal: 자바로 만들어진 새로운 JIT(Just-In-Time) 컴파일러
2. 개발 프로그래밍 언어 수준의 상호 운용성: 폴리그랏 프로그래밍
3. AOT(Ahead of Time) 네이티브 이미지 컴파일러: 워밍업 시간 단축
GraalVM – 자바를 넘어선 새로운 시작의 서막
GraalVM을 써야 하는 이유
• 더 빠른 자바
• 다양한 프로그래밍 언어로 애플리케이션 확장
• 네이티브 이미지 생성
• 마이크로서비스 아키텍처에 적합한 특성
• 오라클 데이터베이스에서 MLE(Multilingual Engine) 지원
• 다양한 도구
• 생태계 확장
GraalVM – 자바를 넘어선 새로운 시작의 서막
라떼는 말이야…
두 가지 JIT 컴파일러:
• C1: 클라이언트용(대기 시간)
• C2: 서버용(메모리 희생해 처
리량 개선)
• Mixed(시작 시 C1, 어느 정도
시간이 지나면 C2) – 자바 5
이후
GraalVM – 자바를 넘어선 새로운 시작의 서막
그런데 말이지…
GraalVM에서는:
• C2 대신 JVMCI를 적용하는
자바 기반의 Graal 컴파일러
적용(C++ JIT는 기술 부채로
인해 확장 불가 판정)
• 참고) JVMCI(Java Virtual
Machine Compiler
Interface)
LLVM
GraalVM – 자바를 넘어선 새로운 시작의 서막
• 정적인 바이너리를 생성하는 대신 동적으로 바이너리를
생성하는 JIT의 기능에 어마무시한 최적화를 가함
• 특히 스칼라 Spark 같은 콜스택이 깊은 경우 성능 개선이
유리
• 네이티브 이미지 빌드: 자바 클래스를 네이티브로 컴파일,
런타임 데이터 영역을 그대로 메모리로 덤프
• 자바 9의 CDS (Class Data Sharing), AppCDS
(Application Class Data Sharing), AOT compiler
를 JRE 의존성이 없이 단독 동작하게 개선!
• 런타임 프로파일링 데이터를 파일로 떨어뜨린 다음
에 이 정보를 네이티브 이미지에 넣어 실제 워크로드
에 가까운 성능을 발휘하게 코드를 최적화!
• GraalVM 런타임 JIT가 16% 정도 더 고성능이긴 하지
만, 네이티브 이미지 역시 기존 HotSpot의 최고 성능
에 필적함
어떻게 성능을 높일까?
GraalVM – 자바를 넘어선 새로운 시작의 서막
마이크로서비스 아키텍처, 게 섯거라!
• 특히 서버리스인 경우 warmup 시간이 중요
• 하지만 액티브까지 오랜 시간이 걸리는 자바는 상대적으로 불리했음
• 하지만 native(AOT)로 빌드할 경우라면?
• 거의 즉각적으로 반응하므로 매우 유리해짐
• 사례
• 스프링네이티브(https://docs.spring.io/spring-
native/docs/current/reference/htmlsingle/)
• Quarkus(https://quarkus.io/):
• MICRONAUT(https://micronaut.io/)
• helidon(https://helidon.io/)
GraalVM – 자바를 넘어선 새로운 시작의 서막
마이크로서비스 아키텍처, 게 섯거라!(계속됨)
Quarkus 사례: 메모리와 초기 기동 시간 비교
GraalVM – 자바를 넘어선 새로운 시작의 서막
두 가지 버전, 지원 환경
• GraalVM 엔터프라이즈: 오라클 JDK 기반
• GraalVM 커뮤니티: 오픈JDK 기반(GPL v2)
• 참고) 커뮤니티 에디션은 엔터프라이즈 에디션이 지원하는 최적화의
2/3 수준만 옵션을 제공
• 대신 LTS 지원(GraalVM 20.3.0)
• 지원 대상: Java 8, Java 11, Java 16, Java 17(실험적)
• 지원 운영체제: 리눅스(선호됨), 맥OS X, 윈도우(개발 환경을 목표)
• 지원 아키텍처: x86-64, ARM 64비트
GraalVM – 자바를 넘어선 새로운 시작의 서막
다양한 프로그래밍 언어 지원
•Node.js – the Node.js 14.17.6 runtime for JavaScript
•Python – Python 3.8.5 compatible
•Ruby – Ruby 2.7.3 compatible
•R – GNU R 4.0.3 compatible
•GraalWasm – WebAssembly (Wasm)
높은 성능, 강건한 런타임!
기존 로직의 재사용, 언어간 상호 호출 가능
GraalVM – 자바를 넘어선 새로운 시작의 서막
개발자 편의성
• VSCode의 경우
• GraalVM Tools for Java
• GraalVM Tools for Micronaut
• GraalVM Extension for Java
• VisualVM(https://visualvm.github.io/)
• GraalVM 21.2.0부터 지원
GraalVM – 자바를 넘어선 새로운 시작의 서막
정말 사용하는 곳이 있는가?
• 오라클 RDBMS에서 저장 프로시저(Stored Procedure)로 자바스크립트를
지원할 수 있는 이유가 무엇인지 생각해보자
• 페이스북 사례: https://blogs.oracle.com/javakr/post/graalvm-facebook
• 트위터 사례: https://www.youtube.com/watch?v=pR5NDkIZBOA
• NVidia 사례(Polygot 언어 바인딩): https://github.com/NVIDIA/grcuda
GraalVM – 자바를 넘어선 새로운 시작의 서막
추가 정보가 필요하다면?
• Σ민수아빠 유튜브 채널:
https://www.youtube.com/channel/UCo32ifcqG3i56nI
jS2YtRIw
• GraalVM 공식 유튜브 채널:
https://www.youtube.com/c/GraalVM
• GraalVM Demos:
https://github.com/graalvm/graalvm-demos
• https://jaxlondon.com/blog/an-introduction-to-
graalvm-oracles-new-virtual-machine/
GraalVM – 자바를 넘어선 새로운 시작의 서막
결론
• 차익 거래가 가능한 GraalVM을 사용하지 않을 이유가 있을까?
• 페북 사례를 보면 OpenJDK를 GraalVM으로 바꾸기만 해도 10~40% 성
능 개선과 10% 정도 CPU 사용량을 줄이는 효과!
• 여러 프로그래밍 언어의 혼합 사용(폴리그랏)
• 마이크로서비스 아키텍처에 제격
• 이제 업그레이드는 선택이 아니라 필수다! 보안 패치가 아닌 기능/성능 개
선을 담고 있기에…
• 향후 오라클 JDK와 오픈JDK에 통합될 가능성이 점쳐진다 – 자바를 넘어선
새로운 시작의 서막을 기대하시라!
발표자 소개
기술 배경
전문 검색 엔진, 임베디드 시스템(리눅스 커널 디바이스 드라이버), 빅데이터/인공지능 연구 개발,
고성능 고가용성 데이터베이스
주요활동
IT 전문서 번역 (클린 코드, 피플웨어, 해커: 광기의 랩소디, 게임 엔진 블랙 북 등)
개발강의 (삼성전자, SK C&C, 삼성SDC, 현대자동차 기술 세미나와 교육)
활동채널
블로그: https://jhrogue.blogspot.com
슬라이드 셰어: https://www.slideshare.net/jrogue/presentations
유튜브: https://www.youtube.com/c/박재호dev
문의 jrogue@gmail.com
박재호

More Related Content

What's hot

サーバーサイドでの非同期処理で色々やったよ
サーバーサイドでの非同期処理で色々やったよサーバーサイドでの非同期処理で色々やったよ
サーバーサイドでの非同期処理で色々やったよ
koji lin
 
そんなトランザクションマネージャで大丈夫か?
そんなトランザクションマネージャで大丈夫か?そんなトランザクションマネージャで大丈夫か?
そんなトランザクションマネージャで大丈夫か?
takezoe
 
オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメオブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメ
Yoji Kanno
 
AWS와 부하테스트의 절묘한 만남 :: 김무현 솔루션즈 아키텍트 :: Gaming on AWS 2016
AWS와 부하테스트의 절묘한 만남 :: 김무현 솔루션즈 아키텍트 :: Gaming on AWS 2016AWS와 부하테스트의 절묘한 만남 :: 김무현 솔루션즈 아키텍트 :: Gaming on AWS 2016
AWS와 부하테스트의 절묘한 만남 :: 김무현 솔루션즈 아키텍트 :: Gaming on AWS 2016
Amazon Web Services Korea
 
[C33] 24時間365日「本当に」止まらないデータベースシステムの導入 ~AlwaysOn+Qシステムで完全無停止運用~ by Nobuyuki Sa...
[C33] 24時間365日「本当に」止まらないデータベースシステムの導入 ~AlwaysOn+Qシステムで完全無停止運用~ by Nobuyuki Sa...[C33] 24時間365日「本当に」止まらないデータベースシステムの導入 ~AlwaysOn+Qシステムで完全無停止運用~ by Nobuyuki Sa...
[C33] 24時間365日「本当に」止まらないデータベースシステムの導入 ~AlwaysOn+Qシステムで完全無停止運用~ by Nobuyuki Sa...
Insight Technology, Inc.
 

What's hot (20)

Unified JVM Logging
Unified JVM LoggingUnified JVM Logging
Unified JVM Logging
 
Building the Game Server both API and Realtime via c#
Building the Game Server both API and Realtime via c#Building the Game Server both API and Realtime via c#
Building the Game Server both API and Realtime via c#
 
Java開発の強力な相棒として今すぐ使えるGroovy
Java開発の強力な相棒として今すぐ使えるGroovyJava開発の強力な相棒として今すぐ使えるGroovy
Java開発の強力な相棒として今すぐ使えるGroovy
 
サーバーサイドでの非同期処理で色々やったよ
サーバーサイドでの非同期処理で色々やったよサーバーサイドでの非同期処理で色々やったよ
サーバーサイドでの非同期処理で色々やったよ
 
영속성 컨텍스트로 보는 JPA
영속성 컨텍스트로 보는 JPA영속성 컨텍스트로 보는 JPA
영속성 컨텍스트로 보는 JPA
 
SPAのルーティングの話
SPAのルーティングの話SPAのルーティングの話
SPAのルーティングの話
 
이벤트 기반 분산 시스템을 향한 여정
이벤트 기반 분산 시스템을 향한 여정이벤트 기반 분산 시스템을 향한 여정
이벤트 기반 분산 시스템을 향한 여정
 
そんなトランザクションマネージャで大丈夫か?
そんなトランザクションマネージャで大丈夫か?そんなトランザクションマネージャで大丈夫か?
そんなトランザクションマネージャで大丈夫か?
 
人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with Karate人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with Karate
 
決済サービスのSpring Bootのバージョンを2系に上げた話
決済サービスのSpring Bootのバージョンを2系に上げた話決済サービスのSpring Bootのバージョンを2系に上げた話
決済サービスのSpring Bootのバージョンを2系に上げた話
 
オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメオブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメ
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
도메인 주도 설계 (Domain Driven Design)
도메인 주도 설계 (Domain Driven Design)도메인 주도 설계 (Domain Driven Design)
도메인 주도 설계 (Domain Driven Design)
 
AWS와 부하테스트의 절묘한 만남 :: 김무현 솔루션즈 아키텍트 :: Gaming on AWS 2016
AWS와 부하테스트의 절묘한 만남 :: 김무현 솔루션즈 아키텍트 :: Gaming on AWS 2016AWS와 부하테스트의 절묘한 만남 :: 김무현 솔루션즈 아키텍트 :: Gaming on AWS 2016
AWS와 부하테스트의 절묘한 만남 :: 김무현 솔루션즈 아키텍트 :: Gaming on AWS 2016
 
Serverless時代のJavaについて
Serverless時代のJavaについてServerless時代のJavaについて
Serverless時代のJavaについて
 
PacemakerのMaster/Slave構成の基本と事例紹介(DRBD、PostgreSQLレプリケーション) @Open Source Confer...
PacemakerのMaster/Slave構成の基本と事例紹介(DRBD、PostgreSQLレプリケーション) @Open Source Confer...PacemakerのMaster/Slave構成の基本と事例紹介(DRBD、PostgreSQLレプリケーション) @Open Source Confer...
PacemakerのMaster/Slave構成の基本と事例紹介(DRBD、PostgreSQLレプリケーション) @Open Source Confer...
 
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。 【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
 
[C33] 24時間365日「本当に」止まらないデータベースシステムの導入 ~AlwaysOn+Qシステムで完全無停止運用~ by Nobuyuki Sa...
[C33] 24時間365日「本当に」止まらないデータベースシステムの導入 ~AlwaysOn+Qシステムで完全無停止運用~ by Nobuyuki Sa...[C33] 24時間365日「本当に」止まらないデータベースシステムの導入 ~AlwaysOn+Qシステムで完全無停止運用~ by Nobuyuki Sa...
[C33] 24時間365日「本当に」止まらないデータベースシステムの導入 ~AlwaysOn+Qシステムで完全無停止運用~ by Nobuyuki Sa...
 
DockerとKubernetesをかけめぐる
DockerとKubernetesをかけめぐるDockerとKubernetesをかけめぐる
DockerとKubernetesをかけめぐる
 
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
 

Similar to (알도개) GraalVM – 자바를 넘어선 새로운 시작의 서막

Open standard open cloud engine (3)
Open standard open cloud engine (3)Open standard open cloud engine (3)
Open standard open cloud engine (3)
uEngine Solutions
 

Similar to (알도개) GraalVM – 자바를 넘어선 새로운 시작의 서막 (20)

그루비 소개 발표자료 - 김연수
그루비 소개 발표자료 - 김연수그루비 소개 발표자료 - 김연수
그루비 소개 발표자료 - 김연수
 
AngularJS In Production
AngularJS In ProductionAngularJS In Production
AngularJS In Production
 
IBM JVM 소개 - Oracle JVM 과 비교
IBM JVM 소개 - Oracle JVM 과 비교IBM JVM 소개 - Oracle JVM 과 비교
IBM JVM 소개 - Oracle JVM 과 비교
 
Gradle 소개
Gradle 소개Gradle 소개
Gradle 소개
 
Front end dev 2016 & beyond
Front end dev 2016 & beyondFront end dev 2016 & beyond
Front end dev 2016 & beyond
 
Theano 와 Caffe 실습
Theano 와 Caffe 실습 Theano 와 Caffe 실습
Theano 와 Caffe 실습
 
개발자가 바라보는 자바의 미래 - 2018
개발자가 바라보는 자바의 미래 - 2018개발자가 바라보는 자바의 미래 - 2018
개발자가 바라보는 자바의 미래 - 2018
 
Oracle Container Cloud Service & Docker Overview
Oracle Container Cloud Service & Docker OverviewOracle Container Cloud Service & Docker Overview
Oracle Container Cloud Service & Docker Overview
 
201702-Oracle Container Cloud Service
201702-Oracle Container Cloud Service201702-Oracle Container Cloud Service
201702-Oracle Container Cloud Service
 
Laravel로 스타트업 기술 스택 구성하기
Laravel로 스타트업 기술 스택 구성하기Laravel로 스타트업 기술 스택 구성하기
Laravel로 스타트업 기술 스택 구성하기
 
Crawling with AWS Lambda
Crawling with AWS LambdaCrawling with AWS Lambda
Crawling with AWS Lambda
 
Spring boot와 docker를 이용한 msa
Spring boot와 docker를 이용한 msaSpring boot와 docker를 이용한 msa
Spring boot와 docker를 이용한 msa
 
SOSCON 2017 - Backend.AI
SOSCON 2017 - Backend.AISOSCON 2017 - Backend.AI
SOSCON 2017 - Backend.AI
 
Open standard open cloud engine (3)
Open standard open cloud engine (3)Open standard open cloud engine (3)
Open standard open cloud engine (3)
 
올챙이 현재와 미래
올챙이 현재와 미래올챙이 현재와 미래
올챙이 현재와 미래
 
웨일브라우저 성능 및 메모리 최적화
웨일브라우저 성능 및 메모리 최적화웨일브라우저 성능 및 메모리 최적화
웨일브라우저 성능 및 메모리 최적화
 
JS Game Engines
JS Game EnginesJS Game Engines
JS Game Engines
 
모바일 Rpg 게임서버 제작
모바일 Rpg 게임서버 제작모바일 Rpg 게임서버 제작
모바일 Rpg 게임서버 제작
 
java_1장.pptx
java_1장.pptxjava_1장.pptx
java_1장.pptx
 
당근마켓에서 IaC경험
당근마켓에서 IaC경험당근마켓에서 IaC경험
당근마켓에서 IaC경험
 

More from Jay Park

More from Jay Park (20)

(독서광 2024년 5월) 요즘 AI 페어 프로그래밍
(독서광 2024년 5월) 요즘 AI 페어 프로그래밍(독서광 2024년 5월) 요즘 AI 페어 프로그래밍
(독서광 2024년 5월) 요즘 AI 페어 프로그래밍
 
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?
 
(독서광) 쉽고 빠르게 익히는 실전 LLM - ChatGPT 활용부터 LLM 파인튜닝, 임베딩, 고급 프롬프트 엔지니어링까지
(독서광) 쉽고 빠르게 익히는 실전 LLM - ChatGPT 활용부터 LLM 파인튜닝, 임베딩, 고급 프롬프트 엔지니어링까지(독서광) 쉽고 빠르게 익히는 실전 LLM - ChatGPT 활용부터 LLM 파인튜닝, 임베딩, 고급 프롬프트 엔지니어링까지
(독서광) 쉽고 빠르게 익히는 실전 LLM - ChatGPT 활용부터 LLM 파인튜닝, 임베딩, 고급 프롬프트 엔지니어링까지
 
(독서광) LEAN HR - 당신의 스타트업은 안녕하십니까 (한빛미디어 2024)
(독서광) LEAN HR - 당신의 스타트업은 안녕하십니까 (한빛미디어 2024)(독서광) LEAN HR - 당신의 스타트업은 안녕하십니까 (한빛미디어 2024)
(독서광) LEAN HR - 당신의 스타트업은 안녕하십니까 (한빛미디어 2024)
 
(독서광) 구술 문화와 문자 문화: 출간 30주년 기념판 (전후 해제 포함)
(독서광) 구술 문화와 문자 문화: 출간 30주년 기념판 (전후 해제 포함)(독서광) 구술 문화와 문자 문화: 출간 30주년 기념판 (전후 해제 포함)
(독서광) 구술 문화와 문자 문화: 출간 30주년 기념판 (전후 해제 포함)
 
(독서광) 테드 창의 숨 (아홉 가지 단편/중편 SF 과학 소설 모음집)
(독서광) 테드 창의 숨 (아홉 가지 단편/중편 SF 과학 소설 모음집)(독서광) 테드 창의 숨 (아홉 가지 단편/중편 SF 과학 소설 모음집)
(독서광) 테드 창의 숨 (아홉 가지 단편/중편 SF 과학 소설 모음집)
 
(독서광) 이제는 이기는 인생을 살고 싶다 - 적을 만들지 않고 단번에 갈등을 풀어내는 백전백승 변호사의 지혜지략
(독서광) 이제는 이기는 인생을 살고 싶다 - 적을 만들지 않고 단번에 갈등을 풀어내는 백전백승 변호사의 지혜지략(독서광) 이제는 이기는 인생을 살고 싶다 - 적을 만들지 않고 단번에 갈등을 풀어내는 백전백승 변호사의 지혜지략
(독서광) 이제는 이기는 인생을 살고 싶다 - 적을 만들지 않고 단번에 갈등을 풀어내는 백전백승 변호사의 지혜지략
 
(독서광) 프로덕트 매니저 원칙: 10년이 가도 변하지 않을 PM/PO로 살아가는 원칙과 철학
(독서광) 프로덕트 매니저 원칙: 10년이 가도 변하지 않을 PM/PO로 살아가는 원칙과 철학(독서광) 프로덕트 매니저 원칙: 10년이 가도 변하지 않을 PM/PO로 살아가는 원칙과 철학
(독서광) 프로덕트 매니저 원칙: 10년이 가도 변하지 않을 PM/PO로 살아가는 원칙과 철학
 
(독서광) 개발자로 첫 출근했어요 - 사내 개발 도구, 기술, 문화 적응 가이드
(독서광) 개발자로 첫 출근했어요 - 사내 개발 도구, 기술, 문화 적응 가이드(독서광) 개발자로 첫 출근했어요 - 사내 개발 도구, 기술, 문화 적응 가이드
(독서광) 개발자로 첫 출근했어요 - 사내 개발 도구, 기술, 문화 적응 가이드
 
(독서광) 책 vs 책: 코딩 테스트 합격자 되기 vs 파이썬 알고리즘 인터뷰
(독서광) 책 vs 책: 코딩 테스트 합격자 되기 vs 파이썬 알고리즘 인터뷰(독서광) 책 vs 책: 코딩 테스트 합격자 되기 vs 파이썬 알고리즘 인터뷰
(독서광) 책 vs 책: 코딩 테스트 합격자 되기 vs 파이썬 알고리즘 인터뷰
 
(독서광) 테니스 이너 게임
(독서광) 테니스 이너 게임(독서광) 테니스 이너 게임
(독서광) 테니스 이너 게임
 
(독서광) 인간 vs. AI 정규표현식 문제 풀이 대결
(독서광) 인간 vs. AI 정규표현식 문제 풀이 대결(독서광) 인간 vs. AI 정규표현식 문제 풀이 대결
(독서광) 인간 vs. AI 정규표현식 문제 풀이 대결
 
(독서광) 모던 리눅스 교과서
(독서광) 모던 리눅스 교과서(독서광) 모던 리눅스 교과서
(독서광) 모던 리눅스 교과서
 
(독서광) 상자 밖에 있는 사람
(독서광) 상자 밖에 있는 사람(독서광) 상자 밖에 있는 사람
(독서광) 상자 밖에 있는 사람
 
(독서광) 자바 알고리즘 인터뷰 with 코틀린
(독서광) 자바 알고리즘 인터뷰 with 코틀린(독서광) 자바 알고리즘 인터뷰 with 코틀린
(독서광) 자바 알고리즘 인터뷰 with 코틀린
 
(독서광) 리그 오브 레전드 플레이어 중심주의
(독서광) 리그 오브 레전드 플레이어 중심주의(독서광) 리그 오브 레전드 플레이어 중심주의
(독서광) 리그 오브 레전드 플레이어 중심주의
 
(일상다반사) 2023년 구독자 3,000명 돌파 이벤트
(일상다반사) 2023년 구독자 3,000명 돌파 이벤트(일상다반사) 2023년 구독자 3,000명 돌파 이벤트
(일상다반사) 2023년 구독자 3,000명 돌파 이벤트
 
(독서광) 오늘날 우리는 컴퓨터라 부른다
(독서광) 오늘날 우리는 컴퓨터라 부른다(독서광) 오늘날 우리는 컴퓨터라 부른다
(독서광) 오늘날 우리는 컴퓨터라 부른다
 
(독서광) 사실은 이것도 디자인입니다
(독서광) 사실은 이것도 디자인입니다(독서광) 사실은 이것도 디자인입니다
(독서광) 사실은 이것도 디자인입니다
 
(독서광) 프로덕트 매니지먼트
(독서광) 프로덕트 매니지먼트(독서광) 프로덕트 매니지먼트
(독서광) 프로덕트 매니지먼트
 

(알도개) GraalVM – 자바를 넘어선 새로운 시작의 서막

  • 1. - 자바를 넘어선 새로운 시작의 서막 알도개(알고 보면 도움되는 개발 이야기) 이미지 출처: https://www.flickr.com/photos/75409276@N06/29379427975 CC BY-NC-SA 2.0
  • 2. GraalVM – 자바를 넘어선 새로운 시작의 서막 GraalVM이란? 고성능 JDK 배포판 자바와 다른 JVM 기반 애플리케이션의 수행 속도를 가속화 1. Graal: 자바로 만들어진 새로운 JIT(Just-In-Time) 컴파일러 2. 개발 프로그래밍 언어 수준의 상호 운용성: 폴리그랏 프로그래밍 3. AOT(Ahead of Time) 네이티브 이미지 컴파일러: 워밍업 시간 단축
  • 3. GraalVM – 자바를 넘어선 새로운 시작의 서막 GraalVM을 써야 하는 이유 • 더 빠른 자바 • 다양한 프로그래밍 언어로 애플리케이션 확장 • 네이티브 이미지 생성 • 마이크로서비스 아키텍처에 적합한 특성 • 오라클 데이터베이스에서 MLE(Multilingual Engine) 지원 • 다양한 도구 • 생태계 확장
  • 4. GraalVM – 자바를 넘어선 새로운 시작의 서막 라떼는 말이야… 두 가지 JIT 컴파일러: • C1: 클라이언트용(대기 시간) • C2: 서버용(메모리 희생해 처 리량 개선) • Mixed(시작 시 C1, 어느 정도 시간이 지나면 C2) – 자바 5 이후
  • 5. GraalVM – 자바를 넘어선 새로운 시작의 서막 그런데 말이지… GraalVM에서는: • C2 대신 JVMCI를 적용하는 자바 기반의 Graal 컴파일러 적용(C++ JIT는 기술 부채로 인해 확장 불가 판정) • 참고) JVMCI(Java Virtual Machine Compiler Interface) LLVM
  • 6. GraalVM – 자바를 넘어선 새로운 시작의 서막 • 정적인 바이너리를 생성하는 대신 동적으로 바이너리를 생성하는 JIT의 기능에 어마무시한 최적화를 가함 • 특히 스칼라 Spark 같은 콜스택이 깊은 경우 성능 개선이 유리 • 네이티브 이미지 빌드: 자바 클래스를 네이티브로 컴파일, 런타임 데이터 영역을 그대로 메모리로 덤프 • 자바 9의 CDS (Class Data Sharing), AppCDS (Application Class Data Sharing), AOT compiler 를 JRE 의존성이 없이 단독 동작하게 개선! • 런타임 프로파일링 데이터를 파일로 떨어뜨린 다음 에 이 정보를 네이티브 이미지에 넣어 실제 워크로드 에 가까운 성능을 발휘하게 코드를 최적화! • GraalVM 런타임 JIT가 16% 정도 더 고성능이긴 하지 만, 네이티브 이미지 역시 기존 HotSpot의 최고 성능 에 필적함 어떻게 성능을 높일까?
  • 7. GraalVM – 자바를 넘어선 새로운 시작의 서막 마이크로서비스 아키텍처, 게 섯거라! • 특히 서버리스인 경우 warmup 시간이 중요 • 하지만 액티브까지 오랜 시간이 걸리는 자바는 상대적으로 불리했음 • 하지만 native(AOT)로 빌드할 경우라면? • 거의 즉각적으로 반응하므로 매우 유리해짐 • 사례 • 스프링네이티브(https://docs.spring.io/spring- native/docs/current/reference/htmlsingle/) • Quarkus(https://quarkus.io/): • MICRONAUT(https://micronaut.io/) • helidon(https://helidon.io/)
  • 8. GraalVM – 자바를 넘어선 새로운 시작의 서막 마이크로서비스 아키텍처, 게 섯거라!(계속됨) Quarkus 사례: 메모리와 초기 기동 시간 비교
  • 9. GraalVM – 자바를 넘어선 새로운 시작의 서막 두 가지 버전, 지원 환경 • GraalVM 엔터프라이즈: 오라클 JDK 기반 • GraalVM 커뮤니티: 오픈JDK 기반(GPL v2) • 참고) 커뮤니티 에디션은 엔터프라이즈 에디션이 지원하는 최적화의 2/3 수준만 옵션을 제공 • 대신 LTS 지원(GraalVM 20.3.0) • 지원 대상: Java 8, Java 11, Java 16, Java 17(실험적) • 지원 운영체제: 리눅스(선호됨), 맥OS X, 윈도우(개발 환경을 목표) • 지원 아키텍처: x86-64, ARM 64비트
  • 10. GraalVM – 자바를 넘어선 새로운 시작의 서막 다양한 프로그래밍 언어 지원 •Node.js – the Node.js 14.17.6 runtime for JavaScript •Python – Python 3.8.5 compatible •Ruby – Ruby 2.7.3 compatible •R – GNU R 4.0.3 compatible •GraalWasm – WebAssembly (Wasm) 높은 성능, 강건한 런타임! 기존 로직의 재사용, 언어간 상호 호출 가능
  • 11. GraalVM – 자바를 넘어선 새로운 시작의 서막 개발자 편의성 • VSCode의 경우 • GraalVM Tools for Java • GraalVM Tools for Micronaut • GraalVM Extension for Java • VisualVM(https://visualvm.github.io/) • GraalVM 21.2.0부터 지원
  • 12. GraalVM – 자바를 넘어선 새로운 시작의 서막 정말 사용하는 곳이 있는가? • 오라클 RDBMS에서 저장 프로시저(Stored Procedure)로 자바스크립트를 지원할 수 있는 이유가 무엇인지 생각해보자 • 페이스북 사례: https://blogs.oracle.com/javakr/post/graalvm-facebook • 트위터 사례: https://www.youtube.com/watch?v=pR5NDkIZBOA • NVidia 사례(Polygot 언어 바인딩): https://github.com/NVIDIA/grcuda
  • 13. GraalVM – 자바를 넘어선 새로운 시작의 서막 추가 정보가 필요하다면? • Σ민수아빠 유튜브 채널: https://www.youtube.com/channel/UCo32ifcqG3i56nI jS2YtRIw • GraalVM 공식 유튜브 채널: https://www.youtube.com/c/GraalVM • GraalVM Demos: https://github.com/graalvm/graalvm-demos • https://jaxlondon.com/blog/an-introduction-to- graalvm-oracles-new-virtual-machine/
  • 14. GraalVM – 자바를 넘어선 새로운 시작의 서막 결론 • 차익 거래가 가능한 GraalVM을 사용하지 않을 이유가 있을까? • 페북 사례를 보면 OpenJDK를 GraalVM으로 바꾸기만 해도 10~40% 성 능 개선과 10% 정도 CPU 사용량을 줄이는 효과! • 여러 프로그래밍 언어의 혼합 사용(폴리그랏) • 마이크로서비스 아키텍처에 제격 • 이제 업그레이드는 선택이 아니라 필수다! 보안 패치가 아닌 기능/성능 개 선을 담고 있기에… • 향후 오라클 JDK와 오픈JDK에 통합될 가능성이 점쳐진다 – 자바를 넘어선 새로운 시작의 서막을 기대하시라!
  • 15. 발표자 소개 기술 배경 전문 검색 엔진, 임베디드 시스템(리눅스 커널 디바이스 드라이버), 빅데이터/인공지능 연구 개발, 고성능 고가용성 데이터베이스 주요활동 IT 전문서 번역 (클린 코드, 피플웨어, 해커: 광기의 랩소디, 게임 엔진 블랙 북 등) 개발강의 (삼성전자, SK C&C, 삼성SDC, 현대자동차 기술 세미나와 교육) 활동채널 블로그: https://jhrogue.blogspot.com 슬라이드 셰어: https://www.slideshare.net/jrogue/presentations 유튜브: https://www.youtube.com/c/박재호dev 문의 jrogue@gmail.com 박재호