2025년 07월 14일
및 에서 관련 글을 읽은 후 공부한 내용을 정리한 내용입니다. 부정확하거나 사실과 다른 내용이 있을 수 있습니다. Just In Time Java는 일반적으로 바이트코드(.class)를 생성하고, 이 바이트코드를 JVM 위에서 해석한 후 기계여러 변환하여 실행한다. 그런데 바이트코드를 매번 해석하게 되면 느릴 수 밖에 없다. 이 때 등장하는 게 바로 …
2025년 07월 09일
재직중인 회사에서 서비스하는 제품 중 OCR을 이용해 문서 파일의 글자를 추출하고, 이를 기반으로 제목을 추정하는 기능이 포함 되어있다. 나는 감사하게도 NAVER CLOVA OCR과 서비스를 연동하고, 추출된 텍스트를 기반으로 문서 제목을 추정하는 기능 개발/개선에 참여했다. 제목 추출 알고리즘의 초기 기본적으로 이미지 혹은 PDF 파일을 OCR 처리…
2025년 07월 08일
기존 운영 서비스에서 업로드 된 파일명을 WHERE 조건을 걸어 조회 해야하는 일이 생겼다. 테스트 목적으로 로컬에서 파일을 업로드 하고 조건절에 파일 명을 걸어, SQL을 날렸는데 분명 동일한 파일 제목인데도 불구하고 조회 결과에 포함되지 않는 문제가 생겼다. 그러던 중 DB 컬럼 값을 자세히 살펴보니 다음과 같은 기이한 현상이 발생하였다. 비정상적인 …
2025년 06월 17일
네이버에서 가장 많이 방문하는 주소는 뭘까요? 보통 https://naver.com 으로 접속하는 경우가 가장 많습니다. 그렇기 때문에 메인 페이지 접속 시 호출되는 API가 느리다면 사용자 경험에 큰 영향을 줄 수밖에 없습니다. 실무에서 개발한 서비스도 메인 페이지에서 여러 API를 호출하고 있었고, 단순 캐싱 수준을 넘어 쿼리 플랜에 대한 분석을 통…
2025년 06월 16일
은 의 고가용성 (High Availabiliity)를 보장하기 위한 시스템입니다. 많은 요청을 처리해야 하는 서비스에서 만약 한 대의 Redis만 사용한다면 과도한 부하로 인해 장애가 발생했을 때, Redis에 의존하는 서비스들은 정상적으로 운영하기 어렵고, 성능이 대폭 감소할 수 있습니다. 고가용성이란? 고가용성 (HA, High Availabil…
2025년 06월 12일
이전 글 (NestJS 트랜잭션 적용 원리 알아보기) 에서는 NestJS와 Node.js 환경에서 TypeORM을 통해 어떤식으로 을 적용할 수 있는지 실제 코드와 함께 살펴봤다. 본 포스트에서는 typeorm-transactional을 사용하지 않고, 직접 Decorator를 구현하여 간편하게 트랜잭션을 적용하는 법을 보이겠다. Node.js의 T…
2025년 06월 05일
Spring Boot 에서는 다음과 같은 코드로 간단하게 을 적용할 수 있다. 자세한 적용 원리나 옵션에 대해서는 의 @Transactional Annotation에 대해 학습이 필용하지만, 위 방법으로 단순하고 간단하게 을 적용할 수 있다. 이것이 가능하게 하는 것이 바로 AOP (Aspect-Oriented Programming, 관점 지향 프로그…
2025년 05월 15일
어느 날, 마우스 휠 Up, Down을 통해 IntelliJ Editor의 Font Size 조절이 갑자기 되지 않았다. 옵션을 건드려봐도, Mac 자체에서 지원하는 Zoom이 될 뿐, Editor의 Font Size가 변경되지는 않았다. 해결방법 1. 손쉬운 사용 설정 켜져있는지 확인 나의 경우 에서 에 가 매핑되어 있었다. 이러한 경우 옵션을…