개발오답노트
close
프로필 사진

개발오답노트

github: @player-geun

  • 분류 전체보기 (7)
    • 오답노트 (4)
    • 개념정리 (3)
  • 홈
  • 태그
  • 방명록
  • 관리자

비슷하지만 다른 RPS 와 TPS

MSA로 구성된 환경에서는 다른 영역에 API를 요청할 일이 많습니다. 모놀리식처럼 같은 DB를 공유하지 않기 때문에, 다른 영역의 데이터를 제공받기 위해서는 API 요청이 필수에요. 실무에서는 API를 요청하거나 요청받았을 때는 조건에 따라 캐싱을 적용하기도 합니다. 해당 API의 TPS나 RPS가 높을 것이라고 예상되일 때인데요. 그렇다면 RPS 와 TPS 는 어떤 차이가 있을까요? NotationRPSRPS는 서버 또는 API 게이트웨이가 초당 처리하는 HTTP 요청 수를 측정하는 지표입니다. 트랜잭션 개념과 무관하게 단순한 HTTP 요청 개수를 측정해요.예시: 1초 동안 100개의 GET 요청을 받으면 RPS는 100 RPSTPSTPS는 데이터베이스 또는 서버에서 초당 처리되는 트랜잭션의 개수를 ..

  • format_list_bulleted 개념정리
  • · 2025. 2. 9.

Native Query 테스트가 꼭 필요할까

실무에서는 Native Query 를 활용하는 경우가 많습니다. 두 가지 이유 때문인데요. 첫 번째로 레거시 때문입니다. 과거에는 애플리케이션 로직 중심이 아닌 쿼리 베이스로 비지니스 로직을 설계했어요. 따라서 레거시가 오래된 기업일 수록 네이티브 쿼리에 많은 비지니스 로직이 있는 경우가 많습니다. 보통 이를 Migration 하는 과정에서 기존의 Native Query를 해체하여 애플리케이션 로직으로 변경하면 좋겠지만, 해당 업무의 임팩트나 속도에 따라 기존 Native Query가 그대로 사용되기도 해요. 두번째는 성능 때문입니다. 성능이 중요한 경우, 일반적으로 JPA 보다 Native Query로 최적화된 단일 쿼리로 로직을 구현하기도 해요. 첫 번째 경우에서 Native Query에 대한 테스트..

  • format_list_bulleted 오답노트
  • · 2025. 2. 2.

같은 TCP 기반이지만 다른 통신 방식: HTTP, TCP Socket

은행에서는 다른 은행이나 금융 기관과 통신할 때, 전용선 기반의 TCP Socket 방식을 사용합니다. 처음에는 일반적인 TCP와 TCP Socket 개념이 헷갈렸는데요. TCP Socket 과 TCP 는 같은 것이 아닙니다. 저도 처음에는 두 개를 동일시하게 생각하여, TCP 기반의 HTTP와 TCP Socket이 차이점을 받아드리기 힘들었어요. TCP Socket이 연결지향인데, HTTP는 어떻게 비연결지향이지 와 같은 의문을 해소하기 위해 개념을 정리합니다. Notation먼저 Protocol 의 정의를 먼저 알아봅니다. 프로토콜은 컴퓨터가 원거리 통신 장비 사이에서 메세지를 주고 받는 양식과 규칙의 체계에요.쉽게 생각하면, 보고서를 작성해서 제출할 때 특정 양식대로 제출하는 것을 말합니다. 개행과..

  • format_list_bulleted 개념정리
  • · 2025. 1. 26.

non-nullable한 필드에 null이 주입되는 문제

Kotlin에서는 nullable 한 필드와 non-nullable 한 필드를 문법적으로 구분할 수 있도록 지원합니다. 이를 통해 null-safety 한 코드를 구현할 수 있게 도와주는데요. 실무에서 non-nullable한 필드에 null이 주입되어 있어 당황했던 경험을 공유합니다.Problem일반적으로 실무에서는 enum의 name이 아닌 특정 code로 정의해서 소통하는 경우가 있는데요. 아래는 대출의 심사 타입을 나타내는 enum 예제 코드입니다.enum class EvaluationType(val code: String, description: String) { PRE("01", "가심사"), MAIN("02", "본심사") ;}참고: 은행에서 고객의 대출 여부와 한도 금액 등을 평가하는 심사..

  • format_list_bulleted 오답노트
  • · 2025. 1. 12.

엔티티 속성과 데이터베이스 컬럼 간의 데이터 변환 - AttributeConverter

실무에서 @Convert 애노테이션이 엔티티 프로퍼티에 붙어있는 것을 볼 수 있습니다. 처음에는 @Enumerated 로 충분한 것이 아닌가 싶었지만, 그렇지 않았어요. AttributeConverter 의 개념을 정리하고, 실무에서는 어떻게 사용되는지 알아봅니다. NotationAttributeConverter 는 JPA에서 엔티티의 속성과 데이터베이스 컬럼 간의 데이터 변환 을 처리하는 인터페이스입니다. JPA 구현체(Hibernate 등)는 애플리케이션 초기화 시점에 Reflection 을 통해 AttributeConverter를 스캔하고 인스턴스화하여, 엔티티의 속성 값이 데이터베이스에 저장되거나 조회될 때 컨버터를 자동으로 적용해요.package javax.persistence;public in..

  • format_list_bulleted 개념정리
  • · 2025. 1. 7.

로드 밸런싱 환경에서 로컬 캐시(Local Cache)의 동기화 문제

MSA 환경에서는 하나의 비지니스를 수행하기 위해서 여러 서버 간의 통신을 필요로 합니다. 여러 서버 간의 통신은 자연스럽게 긴 Latency 를 만들게 되고, 일반적으로 가장 쉬운 방법은 cache 를 적용하는 것이에요. 저는 API 응답시간을 줄이기 위해 로컬 캐시를 적용할려고 했다가 동기화 문제를 만났던 경험이 있습니다. Problem은행에서 고객이 신청한 대출의 심사를 위해서는 여러 가지 정보들이 필요해요. 고객의 개인 정보, 소득 정보, 신용 점수 등 여러 가지 정보는 대출을 심사하는 과정에서 사용됩니다. MSA 환경에서는 Domain 에 따라 서버가 분리되어 있어서, 심사를 진행하는 서버에서는 다른 서버로부터 데이터를 요청하는 API를 호출하게 되요.@Serviceclass EvaluateLo..

  • format_list_bulleted 오답노트
  • · 2025. 1. 5.
  • navigate_before
  • 1
  • 2
  • navigate_next
공지사항
전체 카테고리
  • 분류 전체보기 (7)
    • 오답노트 (4)
    • 개념정리 (3)
인기 글
전체 방문자
오늘
어제
Copyright © player-geun 모든 권리 보유.
SKIN: Copyright © 쭈미로운 생활 All rights reserved. Designed by JJuum.
and Current skin "dev-roo" is modified by Jin.

티스토리툴바