SlideShare ist ein Scribd-Unternehmen logo
1 von 15
Downloaden Sie, um offline zu lesen
- 자바를 넘어선 새로운 시작의 서막
알도개(알고 보면 도움되는 개발 이야기)
이미지 출처: 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
박재호

Weitere ähnliche Inhalte

Was ist angesagt?

インサイドShell:.NETハッキング技術を応用したPowerShell可視性の向上 by 丹田 賢
インサイドShell:.NETハッキング技術を応用したPowerShell可視性の向上 by  丹田 賢インサイドShell:.NETハッキング技術を応用したPowerShell可視性の向上 by  丹田 賢
インサイドShell:.NETハッキング技術を応用したPowerShell可視性の向上 by 丹田 賢
CODE BLUE
 

Was ist angesagt? (20)

Storage 101: Rook and Ceph - Open Infrastructure Denver 2019
Storage 101: Rook and Ceph - Open Infrastructure Denver 2019Storage 101: Rook and Ceph - Open Infrastructure Denver 2019
Storage 101: Rook and Ceph - Open Infrastructure Denver 2019
 
GitHub Actions in action
GitHub Actions in actionGitHub Actions in action
GitHub Actions in action
 
Introduction to Git and GitHub
Introduction to Git and GitHubIntroduction to Git and GitHub
Introduction to Git and GitHub
 
DevOps with GitHub Actions
DevOps with GitHub ActionsDevOps with GitHub Actions
DevOps with GitHub Actions
 
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
 
The benefits of using Git
The benefits of using GitThe benefits of using Git
The benefits of using Git
 
Advanced GitHub Enterprise Administration
Advanced GitHub Enterprise AdministrationAdvanced GitHub Enterprise Administration
Advanced GitHub Enterprise Administration
 
Gitlab, GitOps & ArgoCD
Gitlab, GitOps & ArgoCDGitlab, GitOps & ArgoCD
Gitlab, GitOps & ArgoCD
 
클라우드 네이티브 전환 요소 및 성공적인 쿠버네티스 도입 전략
클라우드 네이티브 전환 요소 및 성공적인 쿠버네티스 도입 전략클라우드 네이티브 전환 요소 및 성공적인 쿠버네티스 도입 전략
클라우드 네이티브 전환 요소 및 성공적인 쿠버네티스 도입 전략
 
Using GitHub Actions to Deploy your Workloads to Azure
Using GitHub Actions to Deploy your Workloads to AzureUsing GitHub Actions to Deploy your Workloads to Azure
Using GitHub Actions to Deploy your Workloads to Azure
 
インサイドShell:.NETハッキング技術を応用したPowerShell可視性の向上 by 丹田 賢
インサイドShell:.NETハッキング技術を応用したPowerShell可視性の向上 by  丹田 賢インサイドShell:.NETハッキング技術を応用したPowerShell可視性の向上 by  丹田 賢
インサイドShell:.NETハッキング技術を応用したPowerShell可視性の向上 by 丹田 賢
 
[넥슨] kubernetes 소개 (2018)
[넥슨] kubernetes 소개 (2018)[넥슨] kubernetes 소개 (2018)
[넥슨] kubernetes 소개 (2018)
 
MySQL Document Store를 활용한 NoSQL 개발
MySQL Document Store를 활용한 NoSQL 개발MySQL Document Store를 활용한 NoSQL 개발
MySQL Document Store를 활용한 NoSQL 개발
 
[SOSCON 2017] 주니어 개발자 5000명, 개발 해서 남 주자
[SOSCON 2017] 주니어 개발자 5000명, 개발 해서 남 주자[SOSCON 2017] 주니어 개발자 5000명, 개발 해서 남 주자
[SOSCON 2017] 주니어 개발자 5000명, 개발 해서 남 주자
 
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
 
GitLab.pptx
GitLab.pptxGitLab.pptx
GitLab.pptx
 
Kubernetes/ EKS - 김광영 (AWS 솔루션즈 아키텍트)
Kubernetes/ EKS - 김광영 (AWS 솔루션즈 아키텍트)Kubernetes/ EKS - 김광영 (AWS 솔루션즈 아키텍트)
Kubernetes/ EKS - 김광영 (AWS 솔루션즈 아키텍트)
 
Helm intro
Helm introHelm intro
Helm intro
 
PostgreSQL High Availability in a Containerized World
PostgreSQL High Availability in a Containerized WorldPostgreSQL High Availability in a Containerized World
PostgreSQL High Availability in a Containerized World
 
Webpack slides
Webpack slidesWebpack slides
Webpack slides
 

Ähnlich wie (알도개) 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
 

Ähnlich wie (알도개) 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경험
 

Mehr von Jay Park

Mehr von Jay Park (20)

(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?
 
(독서광) 쉽고 빠르게 익히는 실전 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 박재호