전체보기
-
QueryDsl projections 자바 Record에 적용하기Spring Boot/JPA 2024. 4. 23. 01:58
QueryDsl을 이용하는 경우 반환 타입이 Entity가 아닌 다른 응답 객체(DTO)일때 Projection 기능을 제공해서 원하는 응답 객체로 변환할 수 있다.Projections.beanProjections.constructorProjections.fields@QueryProjection아니면 projection 기능을 포기하고 변환하는 로직을 작성해야하는데, 데이터 size가 크면 성능 이슈가 있을 수 있다. 위 4개 기능들의 사용법과, 장단점을 비교해보자. 결론부터 말하자면 Record는 Projections.constructor로만 데이터 바인딩이 가능하다. constructor 방식은 버그를 만들수 있어서, QueryDSL 응답객체는 Record 대신 class를 이용하고 fields pr..
-
Port Adapter 패턴이란? (클린아키텍처)Spring Boot 2024. 4. 20. 23:39
배경 사내에 MSA를 도입 해보자는 이야기가 있어서, 이왕이면 제대로 해보고 싶어 요즘 열심히 스터디 중이다. 내가 필요하고 판단한 선수지식은 다음과 같다. 멀티모듈(https://yeoon.tistory.com/145) DDD (https://yeoon.tistory.com/147) port-adapter pattern Spring Cloud event-consistency, 카프카 AWS EKS port-adapter pattern에 관해 작성해본다. Clean Architecture port adapter pattern은 아키텍처적인 문제를 해결하기 위해 등장한 아키텍처 패턴 중 하나다. 아키텍처는 기본적으로 변경이 어렵다 즉 개선이 어렵다. 좋은 아키텍처는 쉬운 확장, 테스트 하기 쉬운 코드, 높..
-
DDD 기본개념 톺아보기Spring Boot 2024. 4. 20. 00:23
배경사내에 MSA를 도입 해보자는 이야기가 있어서,이왕이면 제대로 해보고 싶어 요즘 열심히 스터디 중이다.내가 필요하고 판단한 선수지식은 다음과 같다.멀티모듈(https://yeoon.tistory.com/145)DDDport-adapter pattern (https://yeoon.tistory.com/148)Spring Cloudevent-consistency, 카프카AWS EKSDDD에 관해 작성해본다. Domain Driven Design의 탄생2005년 마틴 파울러, 로드 존슨 등등등 유명한 개발 아저씨들 모여 토론.주제는 1999년 ~ 2005년 EJB 등장으로 객체지향개발 같은 방법론 적용 못하고, 코드 너무 복잡해져서 해결책 논의.에릭 에반스라는 사람 Domain Driven Design이란..
-
JPA 주의점 (1) - OSIV false 설정 (open-in-view)Spring Boot/JPA 2024. 4. 19. 23:25
웹 서비스 성능에 중요한 지표로 "처리량"과 "응답시간"이 있다. 처리량 (throughput) - https://www.youtube.com/watch?v=JJJ4LReZ5q4서버에서 들어온 요청이 처리되는시간을 말한다.db connection 획득 시간db statement 전송 및 쓰기 시간요청 받은 statement 처리 시간db clent에게 result set 반환하는데 걸리는 시간db connection을 반환하고 Transaction이 idle되는 시간처리량을 숫자로 표현할때 TPS (Transaction Per Second)를 사용한다. TPS = transaction count / time초당 몇개의 클라이언트 요청 처리할 수 있는지 지표응답 시간 (response time) - 아래의..
-
멀티모듈 잘 설계해보기Spring Boot 2024. 4. 18. 01:35
배경 사내에 MSA를 도입 해보자는 이야기가 있어서, 이왕이면 제대로 해보고 싶어 요즘 열심히 스터디 중이다. MSA를 공부하려고 강남 교보문고에 들려서 MSA 관련 책 5권을 훑어봤는데 선수지식이 필요하다고 느껴서 이론 공부는 잠시 미루기로 했다. 내가 필요하고 판단한 선수지식은 다음과 같다. 멀티모듈 DDD (https://yeoon.tistory.com/147) port-adapter pattern (https://yeoon.tistory.com/148) Spring Cloud event-consistency, 카프카 AWS EKS 그중 가장 먼저 만들어보면서 해볼만한 멀티모듈 부터 다뤄본다. 결론부터 말하면 아래처럼 구성했다. 이런 구조에 다다른 이유를 기록 해본다. 멀티모듈 실무에서 처음 경험한..
-
Kafka 기본개념 정리Spring Boot/DB 2024. 4. 16. 01:29
1. Kafka 기본 용어 Producer의 messge 저장 대상 Broker는 기본 라운드로빈 방식으로 결정됨 Key를 지정해서 원하는 Broker에만 저장하는 방식도 제공 2. Kafka란? 링크드인에서 2010년 아래와 같은 문제 해결하기위해 개발, 2011년 아파치 오픈소스로 공개 실시간 데이터 처리 문제 데이터 파이프라인 구축 및 확장 문제 다양한 시스템과의 연동 분산 이벤트 스트리밍 플랫폼이라고 공식 페이지에서 소개하고 있음 포츈 100대 기업 80% 이상이 사용 중 (제조업, 은행, 보험, 통신사 . . . 광범위한 산업군) 3. Kafka 특징/사용용도 카프카 핵심 특징 빠른 데이터 전송, 높은 처리량, 낮은 지연 시간 파티션 파일 OS 페이지 캐시 사용 Zero Copy (디스크 버퍼 ..
-
DB Replication이란? 사용 이유Spring Boot/DB 2024. 3. 19. 19:44
1. 배경 사내 프로젝트는 단일 RDS를 Database로 사용중 RDS 장애 발생시 모든 서비스가 멈춘다. (가용성이 낮다) 부하, 트래픽 증가로 DB의 자원이 부족할때 확장이 어렵다. 단일 RDS 사용시 수직확장 수직 확장은 가격 대비 성능 비율이 선형적이지 못하다. 수직 확장이나, DB 업데이트를 위해서는 서비스를 중단해야한다. DB의 쓰기와 읽기 요청은 비대칭 적이다. 대부분 읽기가 더 많다. 2. Replication 도입 Replication이란? DB 백업이나, 성능 향상을 위해 DB를 여러대의 서버로 복제하는 행위 Replication을 도입하면 확장하기 쉽고 고가용성의 DB 구조를 구성할 수 있다. 데이터 저장소의 읽기와 쓰기로 분리 부하 분산 → DB 성능 향상 쓰기 속도 향상, 읽기 ..
-
2024 인프런 퇴근길 세미나 후기 #05 인프라 & AWS세미나 참석 2024. 2. 29. 00:53
오래간만에 오프라인 세미나에 다녀왔다. 인프런 퇴근길 세미나의 5번째 시리즈로, 회사에서 벗어나 환경을 바꿔 동기부여를 얻으려는 목적으로 신청했다. 인사이트 되었던 내용을 기록해 본다. 0. 현장 분위기 참가자의 경력은 5년 차가 5인 정도고 참석 인원 대부분이 1~3년차 주니어였다. (총원은 40명 정도) 인프런의 마지막 밤이었다. 다음날 인프런 사무실 이사로 사무실이 텅텅 비었다. (혹시나 향로님을 실제로 볼 수 있는 건 아닐까 기대감이 가득했지만,,) 1. 발표 내용 주제 : AWS, 그럴듯하게 운영해 보기 연사 : 이동규 (우아한형제들) AWS, 인프라 구축 경험 이야기 + 질의응답을 1시간 동안 진행하고, 1시간 동안 세미나에 오신 분들과 이야기하는 시간을 가졌다. 세미나 전에 사전질문을 받았는..