profile
모르면 알고 넘어가자

제네릭 (Generics)

제네릭은 코드의 재사용성과 타입 안정성을 동시에 확보할 수 있도록 도와주는 기능이다. 즉, 구체적인 타입을 미리 정하지 않고, 필요할 때마다 유연하게 타입을 지정할 수 있게 해준다.함수를 작성할 때 특정 타입에 의존하지 않고, 여러 타입에 대해 동작하도록 만들고 싶을

2025년 3월 17일
·
0개의 댓글
·

리액트 동작 방식 (1)

리액트는 선언적 UI 라이브러리로, 사용자 인터페이스를 효율적으로 구성하고 관리하는데 초점이 맞춰져 있다. 리액트 동작 방식을 이해하라면 핵심 개념인 가상 DOM, 컴포넌트 기반 아키텍처, 단방향 데이터 흐름 등을 알아야 한다.선언적 UI 라이브러리는 어떤 상태일 때

2025년 2월 4일
·
0개의 댓글
·

DispatcherServlet, Interceptor, Filter, AOP 정리

스프링 MVC의 프론트 컨트롤러 역할을 수행하는 서블릿 클래스이다.모든 HTTP 요청이 DispatcherServlet을 거쳐서, 적절한 Controller와 핸들러로 매핑되어 처리된다.웹 서버에서 HTTP 요청을 DispatcherServlet에 전달한다.Dispat

2025년 1월 22일
·
0개의 댓글
·

HTTP 통신 과정

HTTP(Hyper Text Transfer Protocol)이란 클라이언트와 서버 간 데이터를 주고 받기 위한 프로토콜이다.HTTP 종류는 TCP와 UDP 방식이 있으며, 80 포트를 사용한다.TCP는 연결형 서비스로 3-way handshaking 과정을 통해 연결

2025년 1월 20일
·
0개의 댓글
·

Redis 캐싱 전략

Redis를 활용하여 애플리케이션 성능과 확장성을 높이려면, 단순히 '어떤 데이터를 캐싱할지' 결정하는 것을 넘어, 캐시 전략을 체계적으로 수립해야 된다.Redis 캐싱 전략을 구성할 때 주로 고려하는 요소와 대표적인 패턴 및 기법들을 알아보자.자주 조회되는 데이터를

2025년 1월 8일
·
0개의 댓글
·

정렬 알고리즘 종류와 가장 좋은(?) 정렬은 무엇일까?

정렬 알고리즘은 데이터 집합을 오름차순 또는 내림차순으로 재배열하는 과정에서 사용되며, 시간 복잡도, 메모리 사용량, 정렬 안정성 등의 기준에 따라 여러 가지 종류가 존재한다.가장 중요한 퀵 정렬, 병합 정렬, 힙 정렬만 보자.피벗을 중심으로 작은 값과 큰 값을 분할하

2025년 1월 7일
·
1개의 댓글
·

서비스 디스커버리 (Eureka)

MSA에서 각 서비스의 위치를 동적으로 관리하고 찾아주는 기능각 서비스는 등록 서버(Eureka)에 자신의 위치를 등록하고, 이를 조회하여 통신서비스 등록, 서비스 조회, 헬스 체크 등의 기능넷플릭스가 개발한 서비스 디스커버리 서버로, MSA에서 각 서비스의 위치를 동

2024년 12월 16일
·
0개의 댓글
·

Spring Cloud Gateway

Spring Cloud Gateway는 Spring 프로젝트의 일환으로 개발된 API 게이트웨이로, 클라이언트 요청을 적절한 서비스로 라우팅하고 다양한 필터링 기능을 제공한다.Spring Cloud Netflix 패키지의 일부로, MSA에서 널리 사용된다.동적 라우팅

2024년 12월 9일
·
0개의 댓글
·

Redis Sentinel, Cluster 차이

Redis는 단일 인스턴스로도 운영 가능하지만 물리 머신이 가진 메모리 한계를 초과하는 데이터를 저장하고 싶거나, failover에 대한 처리를 통해 고가용성을 보장하려면 Sentinel이나 Cluster 등의 운영 방식을 선택해서 사용해야 한다.Failover : 장

2024년 12월 3일
·
0개의 댓글
·
post-thumbnail

쿼리 조회 성능 개선

쿼리 횟수 증가 : 데이터가 많을 수록 쿼리 횟수가 기하급수적으로 증가. 데이터베이스 부하 증가네트워크 지연 : 각 쿼리마다 네트워크 왕복 시간이 소요되어 전체 응답 시간이 길어짐트랜잭션 관리 오버헤드 : 각 쿼리에 대해 트랜잭션을 관리해야 하므로 오버헤드 발생쿼리 횟

2024년 11월 12일
·
0개의 댓글
·

보상 트랜잭션

MSA에서 보상 트랜잭션은 분산 시스템에서 여러 서비스 간의 데이터 일관성을 유지하기 위한 기법이다.일반적으로 MSA는 각 서비스가 독립적으로 배포되고 운영될 수 있도록 설계되어 있기 때문에, 하나의 서비스에서 트랜잭션이 발생하더라도 다른 서비스에는 영향을 미치지 않는

2024년 11월 1일
·
0개의 댓글
·

권한 오류 발생 시 500 Error 반환되는 문제

문제 상황 권한이 없는 API 요청 시 권한 오류 403이 반환 돼야 되는데 500 error가 발생 해결 과정 권한 오류가 mvc 계층에서 난 오류여서 GlobalException 핸들러가 security exceptionhandler보다 먼저 exception을 가로채게 돼서 500 error 발생 Global Exception에 AccessDen...

2024년 10월 14일
·
0개의 댓글
·

대기열 시스템 Kafka & Redis

대기열 대기열은 서버에 대용량 트래픽이 몰릴 때를 대비하여 서버의 부하를 일정 수준으로 유지하기 위해 만든다. 티켓팅 시간에 맞춰 많은 요청이 한번에 들어올 경우 서버가 부하를 이기지 못하고 장애가 발생할 수 있다. 따라 요청들에 대기열을 부여하여 하나씩 처리할 수

2024년 10월 7일
·
0개의 댓글
·

Exception Handler 적용 이슈

각 서비스에서 Exception 모듈 의존성을 추가하여 GlobalException은 잘 동작하지만, 모듈 내에 정의한 예외 핸들러가 제대로 동작하지 않는 문제가 발생예외 핸들러 클래스가 Spring 애플리케이션 컨텍스트에 포함되지 않아서 발생하는 것Exception

2024년 10월 7일
·
0개의 댓글
·
post-thumbnail

Elastic Search

엘라스틱 서치는 분산형 오픈 소스 검색 엔진으로, Apach Lucene를 기반으로 개발되었다.주로 로그 분석, 검색 엔진, 데이터 분석 등에 활용되며, 빠르고 확장성 있는 검색 기능을 제공엘라스틱 서치는 텍스트 검색뿐만 아니라 구조화된 데이터와 비정형 데이터의 저장,

2024년 9월 4일
·
0개의 댓글
·
post-thumbnail

풍선 딜리버리 시스템 아키텍처 설계

https://tidal-property-d16.notion.site/API-27f203be83994af283b65dcb6271d78e?pvs=74사용자 테이블 (p_users)메뉴(p_menus)가게 (p_restaurants)장바구니 (p_carts)주문

2024년 8월 23일
·
0개의 댓글
·

JPA N+1 문제

JPA N+1 문제는 데이터베이스 성능 저하를 유발하는 대표적인 문제 중 하나이다.주로 OneToMany 나 ManyToMany 같은 다대일, 일대다 관계를 조회할 때 발생예를들어, Customer 와 Order가 일대다 관계를 가지고 있다고 가정고객과 관련된 모든 주

2024년 8월 21일
·
0개의 댓글
·

Entity 설계 연습

쇼핑몰에서 고객은 여러 개의 상품을 주문할 수 있다.각 주문은 여러 상품을 포함하며, 각 상품은 하나의 주문에 속한다.이 상황에서 주문과 상품의 관계는 다대다 관계이다. 또한, 주문에는 고객 정보가 포함되며, 고객과 주문의 관계는 일대다 관계이다.고객은 여러 주문을 가

2024년 8월 20일
·
0개의 댓글
·
post-thumbnail

Kafka

카프카는 분산 이벤트 스트리밍 플랫폼이다. 대용량 데이터 스트리밍을 처리하고 저장할 수 있는 오픈 소스 솔루션이다. 주로 이벤트 스트리밍, 데이터 파이프라인 및 실시간 데이터 피드를 구축하는데 사용한다.메시지 큐와 유사하지만, 대용량 데이터 스트림을 저장하고 실시간으로

2024년 8월 19일
·
0개의 댓글
·

RabbitMQ

RabbitMQ는 메시지 브로커이다. 메시지 브로커는 메시지를 프로듀서로부터 컨슈머에게 전달하는 중간 매개체 역할을 한다.메시지를 Queue에 저장하고 필요할 때 적절한 수신자에게 전달비동기 처리 : 데이터를 비동기 처리하여 시스템의 응답성을 높임부하 분산 : 여러 소

2024년 8월 16일
·
0개의 댓글
·