본문 바로가기
  • 장원익 기술블로그

분류 전체보기579

Spring 에서 @Async 를 사용할 때는 ThreadPoolTaskExecutor 를 등록해주자 TL;DR 이번 글의 핵심을 요약하면 다음과 같다 @Async 은? Spring 에서 비동기 작업을 쉽게 실행할 수 있도록 도와주는 기능 왜 ThreadPoolTaskExecutor 를 등록해야 할까? Spring 의 기본 비동기 처리 Executor 는 매번 새로운 thread 를 생성 ThreadPool 을 이용할 필요가 있음 사전지식 Executor 와 ThreadPoolExecutor Spring 의 TaskExecutor ThreadPoolExecutor 이해하기 정확히는 ThreadPoolExecutor 안에서 어떤 로직에 의해 새로운 thread 를 만드는지 알아야 함 설정에 따라 single thread 처럼 동작할 수 있음 적절한 ThreadPoolTaskExecutor 의 설정 값 찾기.. 2024. 4. 17.
DDD 의 aggregate 에 대한 이야기 TL;DR 이번 글의 핵심을 요약하면 다음과 같다 aggregate 란 무엇인가 3가지 핵심 도메인 구성요소 중 가장 기본 entity 와 value 의 composition 완전한 하나의 개념 왜 aggregate 가 필요할까 고정자(invariant) 와 일관성 (consistency) 을 지키는 핵심 객체 aggregate 의 핵심 구성요소 3가지 entity, root-entity, value aggregate 을 설계하기 3가지 설계 지표 일관성을 기준으로 나누기 actor 를 기준으로 나누기 usecase 를 기준으로 나누기 잘 나뉘어진 aggregate 의 특성 aggregate 란 무엇인가 에릭 에반스가 제시한 DDD, domain driven design 에서 핵심 도메인 구성요소는 3가.. 2024. 4. 10.
cache 101 - Spring Cache 에 대하여 (feat. 캐시로 todo list 를 만들어보자) cache 101 시리즈는 web application 을 개발하며 마주하는 cache 에 대해 필요한 지식과 도구들의 사용법을 학습하는 시리즈입니다. 1. Cache 에 대한 거의 모든 것 의 순서대로 글을 읽으시면 학습에 더 많은 도움이 됩니다. 오늘은 Spring 에서 제공하는 Cache 에 대해서 이야기 해볼 것이다 Spring 에서는 Cache 에 대하여 Spring Transaction 과 마찬가지로 높은 추상화를 제공한다 @Transactional // spring transaction support public Todo create() {} @Cacheable // spring cache support public Todo create() {} Spring 에서는 이를 Cache Abstr.. 2024. 3. 13.
cache 101 - 캐시에 대한 거의 모든 것 이번에는 cache 에 대해서 알아볼 것이다. cache 라고 한다면 computer science 에서 정말 다양한 분야에서 사용되고, 동일한 기능을 수행하지만 문맥에 따라서 다른 이해도가 필요하다. 나는 cache 에 대해서 web application layer 의 문맥에서 설명을 할 것이고, software cache 에 대한 설명을 주로 할 것이다. hardware cache 와 더 low level 의 cache 를 원한다면 이 글은 적합하지 않을 수 있다. TL;DR 이번 글의 핵심을 요약하면 다음과 같다 1. 캐시란 무엇인가 cache: 데이터를 저장하여 미래에 해당 데이터에 대한 요청을 더 빠르게 처리할 수 있도록 하는 hardware 혹은 software cache 의 종류 h/w ca.. 2024. 2. 1.
오프셋 페이징, 단계별로 최적화하기 이 글은 offset based pagination 을 빌미로 데이터베이스의 내부 동작과 여러 개념들을 알아보는 글 입니다. 2개의 글로 구성되어 있고, 각각의 글에서 얻을 수 있는 insight 가 다르니 함께 읽으면 더욱 유익합니다. 오프셋 페이징이 느린 진짜 이유 오프셋 페이징, 단계별로 최적화하기 2023. 11. 19.
오프셋 페이징이 느린 진짜 이유 이 글은 offset based pagination 을 빌미로 데이터베이스의 내부 동작과 여러 개념들을 알아보는 글 입니다. 2개의 글로 구성되어 있고, 각각의 글에서 얻을 수 있는 insight 가 다르니 함께 읽으면 더욱 유익합니다. 오프셋 페이징이 느린 진짜 이유 느림의 근본적인 원인 0번 offset 부터 시작 offset 까지의 데이터는 버려지고 10건만 결과로 반환됨 offset based pagination 이 느린 이유 문제는 정렬 방식에 있음 정렬을 위해 결과 처리를 streaming 이 아닌 buffering 방식으로 전환 streaming vs buffering streaming: 쿼리 실행 결과를 즉시 client 에게 반환 LIMIT 구문과 함께 사용할 때 이점 존재 bufferi.. 2023. 11. 19.