본문 바로가기

전체 글56

kotlin coroutine 정리 1. couroutine?Coroutine은 thread의 Background 작업을 대신할 수 있는 asynchronous/non-blocking programming을 제공하는 경량쓰레드(Light-Weight Threads)여기서 경량(Light-Weight Threads)란?기존 Java 쓰레드는 OS의 Java Native Interface(JNI)를 통해 커널 영역을 호출하여 OS가 커널 쓰레드를 생성하고 1:1로 매핑했다. 이때 Context Swiching을 하면 OS에서도 Context Switching이 된다.경량 쓰레드는 OS의 쓰레드와 1:1로 매핑되지 않는다. OS의 쓰레드를 여러 경량 쓰레드가 번갈아가며 사용한다. 이때 발생하는 context swiching은 어플리케이션 단계에.. 2024. 9. 4.
RPC와 gRPC RPC 프로토콜의 탄생 이유rpc는 같은 프로세스 내부의 기능이 아닌, 다른 프로세스 혹은 다른 서버의 프로세스에 있는 기능을 같은 프로세스 내부의 기능처럼 사용하기 위한 프로토콜이다. 여기서 '같은 프로세스 내부의 기능처럼 사용'의 의미는 다른 프로세스와 통신하기 위한 IPC 작업이나 외부 통신을 위한 네트워크 I/O에 대한 작업(네트워크 프로토콜, 메시지 직렬화 등)을 추상화 하여 개발자가 같은 프로세스에 있는 로컬 함수를 호출하듯이 사용하기 편함을 의미한다.gRPCgRPC는 Google에서 개발한 RPC 프레임워크이다. gRPC는 기본적으로 네트워크 통신을 통해 다른 서버에 있는 기능을 사용하기 위해 탄생했다.(내부의 다른 프로세스와의 통신도 가능하다.)gRPC가 추상화 해준 핵심 기능은 다음과 같.. 2024. 8. 21.
[Redis] Redis Cache를 활용한 성능 개선기 (2) 1. Spring에서 Redis Cache 도입 캐시 전략을 선택했으니 이제 프로젝트에 진행할 차례이다. Redis는 다양한 언어를 지원하고 여러 프레임워크에서 Redis를 위한 추상화가 잘 되어있어서 도입하기 굉장히 편하다. 우리 프로젝트는 Spring boot 3.1 버젼 Java 17 버젼이로 이루어져 있으니 이 기준인 점 참고 바란다. 1.1 Redis 설정 redis를 통해 캐시를 하려면 몇몇 설정들이 필요하다. 위의 설정을 하나씩 살펴보자. 로컬 캐싱의 경우, 객체 자체가 어플리케이션 메모리에 보관되기 때문에 타입 정보가 그대로 유지되고, 객체의 상태가 변하지 않는다. 그래서 직렬화, 역직렬화가 필요하지 않거나 필요한 경우에도 객체의 값이 변하는 걱정은 하지않아도 된다. 하지만 글로벌 캐싱(r.. 2023. 11. 10.
[Redis] Redis Cache를 활용한 성능 개선기 (1) 0. 이 글을 쓰게 된 이유 프로젝트에 캐싱을 통해서 성능 개선을 하면서 Redis를 사용한 경험을 기록하고자 이 글을 쓰게 되었다. 1. 캐싱에 레디스를 선택한 이유 1. 높은 성능 Redis는 기본적으로 전체 데이터를 메모리에서 관리한다. 데이터 백업 같은 작업은 디스크에 저장하긴 하지만 이는 비동기로 작동하기 때문에 응답 성능에는 거의 영향을 미치지 않는다. 그에 반해 RDB는 기본적으로 데이터를 디스크에서 관리한다. 요즘 RDB들도 메모리를 많이 활용하긴 하지만 결국에는 디스크에 저장된다. 즉, Redis는 RDB와 다르게 Disk I/O가 자주 발생하지 않기 때문에 성능이 몇 배 빠를 수 밖에 없다. 2. 개발 용이성 어플리케이션과 연동하기 쉽게 여러 개발 언어를 지원한다. 그리고 다른 NoSQ.. 2023. 11. 9.
[후기] 코끼리끼리 사용자 유치(feat. 우아한테크코스 6기) 0. 이 글을 쓰게 된 이유 팀 프로젝트를 진행하며 사용자 유치를 진행한 과정에 대해 기록하기 위해 이 글을 쓰게 되었다. 1. 코끼리끼리 간단 소개 일단, 코끼리끼리 서비스에 대해서 간단하게 소개하겠다. 코끼리끼리는 함께 목표를 달성해나가는 로드맵 기반 모임 생태계를 핵심 가치로 제공한다. 같은 목표를 가진 사용자들이 먼저 그 목표를 달성해본 사용자가 제공하는 로드맵을 함께 따라가는 플랫폼이다. 코끼리끼리를 사용해보고 싶으면 코끼리끼리 서비스를 참고하길 바란다. 코끼리끼리 프로젝트에 대해서 자세히 알아보고 싶은 사람은 코끼리끼리 WIKI를 참고하자. 2. 사용자 유치 계획 코끼리끼리 서비스는 로드맵을 제공해주는 스터디 기반 플랫폼이다. 그래서 우리는 로드맵이 필요한 사람 & 함께 동기부여를 얻고 싶은 .. 2023. 10. 24.
[CS] HikariCP 설정으로 쿼리 성능 개선하기 0. 이 글을 쓰게된 이유 이번 프로젝트에서 HicariCP 설정을 통한 쿼리 성능 최적화를 담당하게 되었다. 이 과정에서 배운 점을 기록하고자 이 글을 쓰게되었다. 1. Connection pool size 일단 제일 중요한 Connection pool size로 성능 개선을 해보자. HikariCP 공식 문서에서 Connection pool size 설정 관련한 WIKI를 보면 오히려 크기를 늘리지말고 줄이는 것이 성능 개선에 유리하다고 되어있다. 그렇다면 왜 그럴까? 1.1 제한된 서버 자원 데이터베이스의 병목 현상은 주로 CPU, 하드디스크, 네트워크 이 세가지로 인해 발생한다고 한다. 메모리도 물론 영향을 미치지만, 이들에 비해 굉장히 미미한 수준이다. 우리의 서버는 이러한 자원들이 제한되어있으.. 2023. 10. 7.