Yeji's Tech Notes
article thumbnail
반응형

 

안녕하세요 오랜만에 블로그 글을 써보네요 ㅎㅎ

오늘은 최근에 열린 퇴근길 밋업에 추첨되어서 참가 후기를 가져왔습니다

 

https://www.inflearn.com/course/offline/josh-long-meetup

 

[지금 무료] [인프런 X VMware Tanzu] Spring Boot 밋업 with Josh Long | 인프런 - 인프런

인프런 | , 자바 챔피언, 스프링 개발자 애드버킷Josh Long과 함께하는 특별한 Spring Boot 밋업! 인프런 퇴근길 밋업 with Josh Long 안녕하세요, 인프런입니다.9월 9일, 인프런은 VMware Tanzu와 협업하여 특

www.inflearn.com

 

참가신청 기간: 8월 29일(목) ~ 9월 2일(월) 10:00
참가자 발표일 : 9월 4일(화)
본 행사는 무료로 진행되며, 참가자 200인은 추첨을 통해 선발합니다.

 

보통 행사같은거 신청해서 된 경험이 없었기에 잊고 살고 있었는데... 갑자기 당첨 연락이 와서 얼떨떨하게 갔습니다..ㅎㅎ

 

이번 행사에서는 번역 시스템인 플리토를 통해서 실시간 번역내용을 보면서 강연을 들을 수 있었습니다.

약간의 딜레이가 있긴했지만 제가 들으면서 놓친 부분을 다시 스크립트 보면서 볼 수 있고 이해하지 못한 단어를 플리토에서 빠르게 번역해주니깐 엄청난 도움이 되었습니다 ㅎㅎ

 

초급 난이도라고 표기되어있었지만... 뒤로 갈수록 모르는 내용이 많이 나왔습니다...* 이게 초급..

 

제가 강연때 기억에 남는 주제는 크게 5가지 였습니다.

 

1. Java21 짱

2. ApplicationModularListener

3. SpringAI (vectorStore)

4. 가상스레드

5. GraalVM

 

1. Java21 짱

현재 Java8 같은 경우는 쓸 이유가 없으며 새로운 버전이 계속 나오고 있다는 얘기가 나오면서 곧 출시되는 Java23에 대한 얘기가 언급되었습니다. 

https://www.java.com/releases/

 

JDK Releases

The release information on this page covers the JDK releases that were widely distributed or significant to the development of Java. It does not cover patch releases or other one-off releases.

www.java.com

 

 

2024-09-17일 곧 출시되는 Java23에 대한 얘기가 나오면서 Java8보다 3배 뛰어남. 8*4=24인데 암튼 그래서 3배 뛰어남..

얘기를 하시는데 너무 웃겼습니다...ㅋㅋ

 

Java 21, 최신 LTS(Long-Term Support) 버전에서는 데이터 지향 프로그래밍을 위한 여러 기능이 추가 및 개선되었습니다.

- seal types

- records

- pattern matching

- smart switch expression

 

데이터 모델링을 더 간결하고 안전하게 할 수 있게 되었으며, 특히 다양한 데이터 표현 방식과 개선된 switch문에 대해서 언급하였습니다

 

2. ApplicationModuleListener

 

이벤트 프로그래밍에 대한 얘기가 나오면서 EventListener에 대한 언급이 있었습니다. 기존에 사용하는 EventListener 같은 경우에 대해 단점이 존재하는데,

1. 메세징 처리를 하지만 이 메세징 처리 같은 경우 같은 JVM내에 있음

2. 시간 적 위치 적으로 커플링 됨

3. 별도의 스레드에서 실행되는 문제

이 3가지 문제점으로 인한 대응책으로 ApplicationModuleListener에 대해서 말씀해주셨습니다.

 

https://docs.spring.io/spring-modulith/docs/current/api/org/springframework/modulith/ApplicationModuleListener.html

 

ApplicationModuleListener (Spring Modulith 1.2.3 API)

Deprecated, for removal: This API element is subject to removal in a future version. An ApplicationModuleListener is an Async Spring TransactionalEventListener that runs in a transaction itself. Thus, the annotation serves as syntactic sugar for the genera

docs.spring.io

 

3. SpringAI (vectorStore)

우리가 사용하고 있는 데이터를 AI가 접근할 수 있기를 바라는 경우 AI에 보낼 수 있도록 vectorStore를 사용할 수 있도록 추천하였으며 이에 대해 간단한 예제를 보여주었습니다..

 

spring.ai.vectorstore.pgvector.initialize.schema=true

 

https://github.com/spring-projects/spring-ai/blob/main/README.md

 

spring-ai/README.md at main · spring-projects/spring-ai

An Application Framework for AI Engineering. Contribute to spring-projects/spring-ai development by creating an account on GitHub.

github.com

 

4. 가상스레드

스레드를 사용하는 경우는

1, 확장 가능한 코드 작성을 원하는 경우

2. 가능한 많은 트래픽 처리

3. AI 사용 시 다른 서버에 네트워크 요청

이 3가지 경우에 스레드를 사용할 수 있는데 이때 JVM의 스레드는 비용이 많이 발생합니다. 하지만 반응형으로는 바꾸고 싶지 않을때를 위해 Java21에서  사용가능한 가상스레드를 추천하였습니다.

 

실제 가상스레드를 사용했을때와 안했을때의 속도차이는 2배 가량 차이가 발생했습니다

 

https://bell-sw.com/blog/a-guide-to-using-virtual-threads-with-spring-boot/

 

5. GraalVM

https://www.reddit.com/r/elixir/comments/1acai5h/energy_efficiency_of_programming_languages/#lightbox

 

From the elixir community on Reddit: Energy efficiency of Programming languages

Explore this post and more from the elixir community

www.reddit.com

 

 2017년도 에너지 효율을 보면 Java가 TOP5에 들 정도로 효율성이 높은 언어라고 되어있습니다.

그만큼 Java는 속도있는 언어에 대해 언급하면서 원 빌리언 로우 챌린지에 대해서 얘기가 나왔습니다

 

https://github.com/gunnarmorling/1brc

 

GitHub - gunnarmorling/1brc: 1️⃣🐝🏎️ The One Billion Row Challenge -- A fun exploration of how quickly 1B rows from a

1️⃣🐝🏎️ The One Billion Row Challenge -- A fun exploration of how quickly 1B rows from a text file can be aggregated with Java - gunnarmorling/1brc

github.com

 

이 챌린지는 10억 행의 텍스트 센서 데이터가 있으면 모두 읽어야되며 대략 13기가바이트 정도의 데이터 입니다

해당 대회에서는 Java만 사용가능하며 다른 어떤 것도 사용 불가합니다(라이브러리도 안됨) 오직 JDK만 사용할 수 있습니다. 이 대회의 Top1,2,3은 모두 GraalVM을 사용하고 있습니다

 

GraalVM은 Java 배포판입니다. OpenJDK 기반이지만 추가 유틸리티, 추가 기능이 있습니다.

그리고 이러한 기능 중 하나는 네이티브 이미지 컴파일러입니다. 그리고 이 네이티브 이미지 컴파일러를 사용하면 Mac 또는 Linux 또는 Windows 네이티브 바이너리를 빌드할 수 있습니다. 따라서 JDK도 없고, JRE도 없고, 런타임도 없습니다.

 

https://www.graalvm.org/

 

GraalVM

Graal JIT Compiler Use the GraalVM JDK with the optimizing Graal just-in-time (JIT) compiler to increase your Java application performance.

www.graalvm.org

 

후기

처음 Java관련한 얘기로 시작되었을때 에이 전부 알고 있는것, 진부한것 이라는 생각이 들었을때쯤..새로운 기능과 이점에 대해서 말씀해주시면서 뒤로갈수록 더 흥미진진한 강연이었습니다

컨퍼런스를 많이 다녀본건 아니지만 여태까지 다녔던 컨퍼런스 중에서 제일 좋은 경험이었다고 생각듭니다..

 

해당 밋업은 9월 내로 인프런에 공개될 예정이라고 알려주셨습니다 꼭 한번 들어보길 추천드립니다 👍

반응형
profile

Yeji's Tech Notes

@Jop

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!