본문 바로가기

전체 글50

240406 알림센터 서비스 기술스택 조사 RDB 보단 NoSQL TTL 일정 시간이 지난 데이터에 대한 스키마 관리를 안 해도 되는 도메인 TTL을 기본적으로 지원해주는 NoSQL이 RDB보다 적합 유연한 스키마 대응 Read/Write가 굉장히 빈번하게 일어나는 도메인 특성상 한 번에 최대한 적은 행이 추가되어야 함 알림 도메인의 큰 틀은 고정되어있지만, 알림의 행위를 정의하는 부분은 구조의 변경이 잦기 때문에 유연한 스키마를 가질 수 있어야 함 Schema-less한 NoSQL이 RDB보다 적합합니다. 성능 알림 도메인에는 트랜잭션 관리가 필요 없습니다. 트랜잭션 관리를 하지 않고 성능을 챙길 수 있는 NoSQL이 RDB보다 적합 Redis 보단 MongoDB 각 알림 데이터는 상호 간 독립적임 즉, 중복되는 .. 2024. 4. 7.
240404 문제 상황 esc-server 가 빌드조차 안됨 esc-server-compose 빌드도 esc-server 테스트에서 빌드 실패 삽질 과정 esc-server 의 application.yml 에 optional: 붙히면 빌드는됨... > 결국 그럼 설정을 안받아오는셈 Gradle 9.0 버전문제? powermock + JUnit4 를 사용하는것으로 확인 그냥 경고문구였음 removal 예정이지 진짜 된건 아니고 내 프로젝트 버전은 7.0이었음(ㅎ) .env 설정문제? > java17 인것도 확인하고 local.env 추가도함 클론 받은 레포 자체가 틀렸음 > esc-server-compose 에 esc-server, esc-server-config, esc-nginx 까지 포함된거 였음 spring c.. 2024. 4. 6.
QueryDsl + JPA 로 게시글 페이지네이션 구현기, 일대다 외부조인시 유의해야할 점 개별 웹툰 페이지를 조회하는 API 를 구현해보겠다. 위와 같이 웹툰 개별 페이지로 들어가면 웹툰의 정보와 전체 회차 목록을 볼 수 있다. 이 중 빨간 영역의 전체 회차 목록을 불러오는 API 를 개발하자. 최신순, 오래된 순 정렬 PageSize = 30 썸네일, 회차 제목, 별점, 업로드 일자가 필요 구현에 앞서 필요한 기본 개념을 짚고 간다. Querydsl 을 사용하는 이유 QueryDSL은 하이버네이트 쿼리 언어(HQL: Hibernate Query Language)의 쿼리를 타입에 안전하게 생성 및 관리해주는 프레임워크이다. QueryDSL은 정적 타입을 이용하여 SQL과 같은 쿼리를 생성할 수 있게 해 준다. QueryDSL 을 이용하면 Spring Data JPA 만으로는 구현하기 힘들었던.. 2023. 9. 17.
ERD Cloud 를 이용한 데이터 모델링, DB 설계 팀프로젝트 경험은 두세번 있지만 개인프로젝트 경험치가 적다고 느껴 내가 관심이 있는 도메인으로 프로젝트를 하나 완성해보기로 했다. 어릴적부터 웹툰을 좋아해서 네이버 웹툰 페이지를 참고하여 화면 단위로 요구사항을 정리하고 DB 설계를 해보았다. 다양한 웹툰 정보를 검색, 추천, 페이징조회 해야하기 때문에 이번 기회에 QueryDsl 도 공부해보기로 했다. 나는 크게 홈, 웹툰, 마이페이지 를 기준으로 기능을 정리하였다. (베스트도전, 도전만화는 기능이 중복되는 것이라 생각하여 제외) 주요 기능이 구현되면 쿠키 결제와 같이 결제 기능도 추가시켜보겠다 1. 홈 오늘의 웹툰 조회 읽다만 웹툰 조회 실시간 인기 웹툰 조회 장르별 인기 웹툰 조회 (PURE, FANTASY, ACTION, DAILY, THRILL).. 2023. 9. 17.
[Spring] 쓰레드 동시성 문제와 ThreadLocal 쓰레드의 동시성(Concurrency) 싱글 코어에서 멀티스레드를 동작시키기 위한 방식으로, 멀티 태스킹을 위해 여러 개의 스레드가 '번갈아가면서' 실행되는 성질을 말한다. 그래서 이는 정말 물리적으로 동시에 동작하는 것은 아니다. 각각의 쓰레드는 위와같이 code, data, files 등을 공유하며, 독립적인 레지스터와 스택을 가지고 있다. 한 프로세스에 있는 스레드 들은 같은 address space에 있기 때문에 서로의 레지스터, 스택 간의 접근이 가능하다. 데이터 영역에는 전역변수와 정적변수가 해당된다. 동시성 문제 여러 쓰레드가 동시에 같은 인스턴스의 필드 값을 변경하면서 발생하는 문제를 동시성 문제라 한다. 이런 동시성 문제는 여러 쓰레드가 같은 인스턴스의 필드에 접근해야 하기 때문에 트래픽.. 2023. 9. 1.
[JPA] 프록시와 지연로딩 본 게시글은 김영한 님의 자바 ORM 표준 JPA 프로그래밍 - 기본편 을 정리한 내용입니다. 필요한 연관관계만 조회해 오는 것이 효과적이다 JPA를 사용하면 객체 그래프를 통해 연관관계를 탐색할 수 있다 엔티티들은 데이터베이스에 저장되어 있다 한 객체 조회 시 연관되어 있는 엔티티들을 모두 조회하는 것 보다는 필요한 연관관계만 조회해 오는 것이 좋다 이를 위해 JPA는 지연로딩 방식을 지원, 하이버네이트(Hibernate)는 프록시 객체를 통해 지연 로딩을 구현한다 다음과 같은 객체 관계를 가질 때, Member를 조회할 시 Team도 함께 조회해야할까? 단순히 회원 이름만 출력한다면 Team까지 조회 쿼리를 날릴 필요가 없다. 이를 위해 지연로딩을 사용한다. JPA에서의 프록시 em.find() 와 .. 2023. 5. 19.