본문 바로가기

Kotlin3

[Kotlin] value class를 활용해서 "원시 값과 문자열을 포장하라" 성능 최적화하기 안녕하세요! 이번 글에서는 "모든 원시 값과 문자열을 포장하라" 원칙에 대해 알아보고, Kotlin으로 성능 최적화 하는 방법에 대해 알아보겠습니다. 요약 객체지향 생활체조의 "모든 원시 값과 문자열을 포장하라" 원칙을 Kotlin으로 구현할 때 value class를 '잘' 활용하면 불필요한 오버헤드를 줄일 수 있습니다. 생성 성능 측정 결과, 유의미한 차이는 없었습니다. 참조 및 연산 성능 측정 결과, value class가 일반 클래스보다 약 32% 느렸습니다. JVM Heap dump를 분석한 결과, value class가 일반 클래스에 비해 약 58%의 공간만 차지했습니다. 이 글에서 얻을 수 있는 것 객체지향 생활체조의 "모든 원시 값과 문자열을 포장하라" 원칙을 이해할 수 있다. Kotlin.. 2023. 12. 10.
[Infra] UUID vs Snowflake ID : 분산 시스템에서 유일한 ID를 만들어보자 안녕하세요. 황진성입니다. 오늘은 분산 시스템에서 유일한 ID를 만드는 방법에 대해 알아보겠습니다. 다양한 방법이 있지만, Twitter(X)에서 만든 Snowflake 방식과 UUID 방식을 주로 비교해 보겠습니다. 그리고 ID 생성기를 직접 Kotlin으로 구현하고, Spring Boot, JPA와 통합해서 간단한 블로그 애플리케이션을 만들어보겠습니다. 개요 개발을 하다 보면 유일한 ID를 만들어서 데이터를 관리해야 할 일이 생기기 마련입니다. 대표적으로 관계형 데이터베이스의 테이블 내 레코드 별로 고유 식별자를 가지는 경우가 있습니다. PK로써 테이블 내 고유함을 결정하는 지표가 되며, 인덱스 생성 시에도 활용합니다. 하지만 데이터와 트래픽이 많아진다면 ID 부여 방식에 대해 한 번쯤 고민해봐야 합.. 2023. 9. 10.
[Kotlin] 코루틴 이해를 위한 배경 지식 안녕하세요. 황진성입니다. 최근에 이직을 했고, 합류한 팀에서 비즈니스 로직 틈틈이 코루틴을 사용하는 것을 확인했습니다. 저는 비동기, 병렬 처리 등에 대해서 제대로 공부하거나 사용해 본 적이 없어서 코드를 명확하게 이해하는 것이 힘들었습니다. 단순히 공식 문서에서 예제 한두번 돌려보고 대충 이해하고 쓰기만 했습니다. 꼼꼼히 코드 리뷰를 해주실 때 잘못 사용된 부분을 알려 주시긴 하는데, 언제까지 이렇게 개발할 수 없었습니다. 이 참에 코루틴에 대해 어느 정도 자세히 알아보고자 합니다. 코루틴과 코루틴을 감싸고 있는 이야기를 모두 해볼까 하는데, 여러 개의 포스트로 나눠서 차근차근 정리해 보겠습니다. 1편에서는 "코루틴을 감싸고 있는 이야기"에 집중해서 이야기해보겠습니다. 동시성(Concurrency)과.. 2023. 6. 24.