[MSA] DDD 구조 고려한 패키지를 생성하는 방법
·
TIL
기존에 있던 모노리딕 프로젝트의 패키지 구조를 변화시키고 각 도메인별로 콘텍스트를 나눠 이후 분산환경으로 전환하더라도 문제없이 수행할 수 있도록 개선하는 작업을 진행해보려고 한다.이 관계에서 여러가지 고민들을 했었는데 이 부분들에 대한 감각을 기록해놓으려고 한다.패키지 구조내가 찾아본 DDD 아키텍처에 대해서는 여러 패키지 전략이 존재했다.첫 번째 구조는 다음과 같았다.여기서 독특한 점은 application의 usecase와 event 였다.domain아래에 서비스가 존재하는데 application에서 별도로 usecase라는 행위와 event라는 행위를 구분한 점을 처음 발견했다.com.example.project ├── domain # 핵심 도메인 로직 │ ├── order ..
[DDD 아키텍처/잡담] 도메인 주도 설계를 왜 해야 할까?
·
TIL
ERD와 DDD의 관계ERD는 각 도메인간의 관계를 fk로 참조하고 관련되어 있는 테이블끼리 연관관계를 만든다.이 관계를 기반으로 스프링에서는 자바 클래스와 JPA를 사용하여 불일치 패러다임을 해소한다.하지만 여기서 문제점이 각 클래스간에 @ManyToOne, @OneToMany, @OneToOne으로 도메인간 종속관계가 모두 이어진다.이 문제는 정합성, 일관성으로 이어진다. 만약 Order와 Product가 있고 M:N 관계일떄 중간테이블인 OrderItem이 있다고 생각해보자.만약 OrderItem에서 수정이 이뤄진다면 이 테이블은 Product와 연관이 있을까?JPA를 사용하고 엔티티중심으로 생각한다면 두 테이블이 모두 중간테이블과 연관되어 있기 때문에 영향을 미칠 수 있다. 예를 들어 Produc..
[TIL] 모놀리딕 스프링 부트 프로젝트를 수행하고 내가 공부해야 할 것들
·
TIL
MSA 공부RibbonResilience4jCircuit BrakerConfig ServerGatewayQueryDSL책 구매해서 DB 실습과 함께 N+1 문제, 최적화 등 다시 공부하기Elastic Search, Logstash인덱스 생성, 저장, 조회인기검색어 개발로그 분석 및 데이터 모니터링 (AOP를 어떻게 활용해서 로그를 만들까?, 로그 레벨을 어떻게 나눠볼까?)도메인 구조 다시 공부하고 고민해보기RedisSession Clustering?정합성 전략 다시 공부하기Kafka어떻게 학습할까Spring Batch필요한 상황 및 보고 바로 적용할 수 있는 실습 레포지터리 만들어두기Spring AI이걸로 무엇을 할 수 있는지 체크하기매일 해야 하는 것알고리즘 공부CS 학습이력서 수정프로젝트 테스트 코드..
[Spring Security 예외 처리] 인증 및 인가에 대한 예외처리 방법
·
TIL
스프링 시큐리티는 DispatcherServlet이라는 서블릿 단보다 앞에 위치한다. 그 말은 Spring Context와 서블릿의 영향을 받기 전에 먼저 작동하는 필터라는 말이다. 그렇기에 우리가 정의한 GlobalExceptionHandler에서 Exception이 발생하는 것을 처리하는 과정을 Filter에서는 적용할 수 없다. 그렇다면 SpringSecurity에서 발생하는 인증/인가에 대해서는 어떻게 처리해야 할까?SpringSecurity에서는 ExceptionHandlingConfigurer라는 불변 클래스가 존재한다. 해당 클래스는 AuthenticationEntryPoint 클래스와 AccessDeniedHandler 클래스가 필드에 존재하는데 이 두 필드가 예외를 처리하는 클래스이다.두..
[TIL] Stream 활용하기, CI/CD 파이프라인 개발, 엔티티 개발 협업
·
TIL
오늘 한 일팀원간 작업 현황 파악 및 목표 재설정Stream을 활용한 엔티티 연결, DTO 객채로 변환CI/CD 파이프라인 개발Index공부작업 내용팀원간 작업 현황 파악 및 목표 재설정오후4시, 저녁10시마다 팀원간의 작업상황을 수시로 체크하고 다음 날 진행해야 할 개발과정에 대한 진도를 다시 설정했다.나를 제외한 세 분이 I 성향을 갖고 있어서 소통이 항상 조용조용하고 말수가 없는 편이었지만 다들 최선을 다해주고 있는것 같아서 너무 감사하기도했고 조금은 답답한 마음도 들기도했다... ㅋㅋㅋㅋㅋㅋ 하지만 반대로 생각해보면 아직 개발을 많이 안해본 분들도 계시고 각자의 생각에 정리할 시간이 필요하기도하니 조금만 서로를 이해하면 다 그럴수 있다는 생각이 들었다.이렇게 각자 업무를 다시 분담하고 지금도 수시..
[TIL] Filter예외 처리, 서버 배포
·
TIL
오늘 한 일Entity 연관관계 설정서버 배포 준비Filter 로직 수정작업 내용Entity 연관관계 설정각 팀원들이 생성한 Entity를 전체적으로 검토하고 잘못된 엔티티나 필드명이 있는지 점검하는 시간을 가졌다.이 과정 또한 PR을 통해 코멘트를 달고 해결하는 과정이 이루어졌다. 그 과정에서 UUID, ID라는 변수명이 각 타입에 맞지 않게 생성되어있는 것을 발견하고 추가로 컨벤션을 작성하였다.서버 배포 준비Docker와 GitActoins를 사용한 배포 방식과 Code Deploy와 Docker를 사용한 배포 방식을 고민하게 됐다.이전에는 Docker와 GitActions를 사용해봐서 새로운 방식으로 배포방식을 사용해볼까 고민했었다. 하지만 Code Deploy는 AWS중심의 배포 방식이라 이후에 ..