전체 글 16

Saga: Choreography vs Orchestration

분산 시스템에서 여러 서비스에 걸친 트랜잭션을 다룰 때, Saga Pattern은 사실상 표준적인 접근법이 됐다.그런데 막상 도입하려고 하면 바로 이 질문에 부딪힌다."Choreography과 Orchestration 중 이 프로젝트에 적절한 것은 무엇인가?" 둘 다 같은 문제를 풀지만, 구조와 트레이드오프가 꽤 다르다. 이 글에서는 두 방식을 비교하고, 어떤 상황에서 무엇이 더 맞는지를 정리한다.Saga Pattern이란?마이크로서비스 환경에서 단일 DB 트랜잭션처럼 ACID를 보장하는 건 불가능하다.Saga는 이를 해결하기 위해 각 서비스의 로컬 트랜잭션을 연결하고, 중간에 실패하면 보상 트랜잭션(Compensating Transaction) 으로 롤백하는 패턴이다.구현 방식은 두 가지다.Choreo..

카테고리 없음 2026.04.20

Caching으로 인기 매장 조회 API 응답 시간 최적화

요식업 운영 통합 솔루션 서비스를 개발하며 어느덧 기능 구현 단계를 지나, 백엔드는 성능 최적화와 안정성을 높이는 작업으로 넘어가게 됬다. 서비스 운영 환경에서 최적화를 생각할 때 가장 먼저 떠오르는 질문은 "어디에서 병목이 발생하고 있는가?"였다.병목은 다양한 원인으로 일어날 수 있다.트래픽이 몰리는 시점의 API 응답 지연과도한 DB 호출외부 연동 지연등의 여러 케이스가 존재한다. 하지만 이러한 원인들의 공통점은 명확하다. 리소스 경쟁이 발생 구간을 줄이지 못하면 병목의 근본적인 해결을 할 수 없다.개발중인 서비스의 경우, 메인 페이지에서 인기 있는 매장 리스트를 보여주고 있다. 이는 필연적인 API 요청으로 이어진다. 그래서 이 기능을 캐싱을 활용해 최적화한 과정을 복기하며 정리해보고자 한다.기존 ..

회고의 기록 2025.12.13

Caching(캐싱)이란?

Caching이란?캐싱(Caching)은 자주 사용하는 데이터를 미리 저장해 두고 필요할 때 빠르게 제공하는 기술이다. 이를 통해 성능을 향상시키고 시스템 부하를 줄일 수 있다. 캐싱의 목적성능 향상: 데이터베이스나 API 호출 없이 빠르게 데이터를 가져올 수 있다.부하 감소: 동일한 요청을 여러 번 처리하는 대신, 캐시에 저장된 데이터를 활용하여 서버 및 데이터베이스 부담을 줄인다.응답 속도 개선: 네트워크 지연을 줄일 수 있다. 캐싱의 종류위치에 따른 분류클라이언트 캐시: 웹 브라우저(예: HTTP 캐시), 모바일 앱 등에서 데이터 저장한다.서버 캐시: 애플리케이션 서버, 웹 서버에서 데이터 캐싱데이터베이스 캐시: 쿼리 결과를 캐싱하여 DB 부하를 줄인다.CDN(Cache Delivery Networ..

etc. 2025.02.28

Pageable

Paging(페이징)이란?대량의 데이터를 처리할 때 한 번에 모든 데이터를 불러오지 않고 일정 크기로 나누어 가져오는 기법데이터베이스 조회 또는 API 응답에서 자주 사용 Paging의 장점성능 최적화: 전체 데이터를 한 번에 가져오면 성능 저하 가능성이 있음메모리 사용 절감: 필요한 데이터만 조회하여 메모리 사용을 줄일 수 있음응답 속도 향상: 데이터를 모두 가져오는 방법에 비해 비교적 사용자에게 빠르게 제공 가능사용자 경험 개선: 스크롤을 이용한 무한 로딩, 페이지네이션 UI 구현 가능 Pageable이란?Spring Data JPA에서 페이징 처리를 쉽게 할 수 있도록 제공하는 인터페이스 Paging and Sorting :: Spring Data RESTThis section documents S..

Ajax

Ajax [ Ajax란? ] Ajax는 서버로부터 데이터를 가져와 전체 페이지를 새로 고치지 않고 일부만 로드할 수 있게 하는 기법이다. 본래 Ajax는 ⁰비동기 요청을 보내는 데 필요한 기술, 즉 Asynchronous Javascript And XML의 약자였으나 이후 브라우저 내에서 비동기 기능을 제공하는 모든 기법을 통칭하게 되었다. [ 데이터 타입 ] 서버는 주로 HTML, XML, JSON을 전달하므로, 이에대해 학습 해야한다. [ jQuery와 Ajax ] https://api.jquery.com/jquery.ajax/#jQery-ajax-url-settings jQuery를 이용하여 Ajax를 사용하게 되면 많은 이점이 있다. 일단 Ajax의 기본 Method를 이용해서 Server와 통신..

Ajax를 이용한 ID 중복 확인

Register 기능에 Validation을 구현하다가 많은 여러 사이트의 회원가입에 있는 기능인 ID 중복 체크를 만들어보기로 생각했다. ID 중복 체크를 하기 위해서는 입력한 ID가 기존 데이터에 있는지 확인하는 Controller와 입력한 ID를 데이터로 담아 서버에 요청을 보낼때 비동기 처리 방식을 사용할 수있어야 한다. 앞서 말한 조건들에 맞는 기술이 Ajax이다. [ 참고 ] Ajax 정리 : https://snorlax1106.tistory.com/55 [ Controller 생성 ] @ResponseBody @GetMapping("/idCheck") public int idCheck(String id) throws Exception { if(userService.select(id) != n..

필터(Filter)와 인터셉터(Interceptor)

필터 [ 필터(Filter)란? ] 필터(Filter)는 J2EE 표준 스펙 기능으로 디스패처 서블릿(Dispatcher Servlet)에 요청이 전달되기 전/후에 url 패턴에 맞는 모든 요청에 대해 부가작업을 처리할 수 있는 기능을 제공한다. 디스패처 서블릿은 스프링의 가장 앞단에 존재하는 프론트 컨트롤러이므로, 필터는 스프링 범위 밖에서 처리가 되는 것이다. 즉, 스프링 컨테이너가 아닌 톰캣과 같은 웹 컨테이너에 의해 관리가 되는 것이고(스프링 빈으로 등록은 된다.), 디스패처 서블릿 전/후에 처리하는 것이다. [ 필터(Filter)의 메소드 ] 필터를 추가하기 위해서는 javax.servlet의 Filter 인터페이스를 구현(implements)해야 하며 이는 다음의 3가지 메소드를 가지고 있다...

서블릿(Servlet)

서블릿(Servlet) [ 서블릿(Servlet)이란? ] 서블릿이란 Dynamic Web Page를 만들 때 사용되는 자바 기반의 웹 애플리케이션 프로그래밍 기술이다. 웹을 만들때는 다양한 요청(Request)과 응답(Response)이 있기 마련이고 이 요청과 응답에는 규칙이 존재한다. 이러한 요청과 응답을 일일이 처리하려면 굉장히 힘들기 때문에 서블릿은 이렇나 웹 요청과 응답의 흐름을 간단한 메서드 호출만으로 체계적으로 다룰 수 있게 해주는 기술이다. 서블릿은 자바 클래스로 웹 애플리케이션을 작성한 뒤 이후 웹 서버 안에 있는 웹 컨테이너에서 이것을 실행하고, 웹 컨테이너에서는 서블릿 인스턴스를 생성 후 서버에서 실행되다가 웹 브라우저에서 서버에 요청(Request)을 하면 요청에 맞는 동작을 수행..

Web Server와 WAS

Web Server [ Web Server의 개념 ] 소프트웨어와 하드웨어로 구분된다. 하드웨어 : Web 서버가 설치되어 있는 컴퓨터 소프트웨어 : 웹 브라우저 클라이언트로부터 HTTP 요청을 받아 정적인 컨텐츠(.html .jpeg .css 등)를 제공하는 컴퓨터 프로그램 [ Web Server의 기능 ] HTTP 프로토콜을 기반으로 하여 클라이언트(웹 브라우저 또는 웹 크롤러)의 요청을 서비스하는 기능을 담당한다. 기능 1) 정적인 컨텐츠 제공 WAS를 거치지 않고 바로 자원을 제공한다. 기능 2) 동적인 컨텐츠 제공을 위한 요청 전달 클라이언트의 요청(Request)을 WAS에 보내고, WAS가 처리한 결과를 클라이언트에게 전달(응답, Response)한다. 클라이언트는 일반적으로 웹 브라우저를 ..