도메인 변경에 따른 영향
도메인의 수정이 타 서비스에 영향이? 문제 상황 기존 설계로 인해 도메인 필드의 수정이 테스트 코드뿐 아니라 이벤트 클래스, 타 서비스에까지 영향을 줬다. 테스트 코드는 도메인 변경시 당연히 영향이 가겠지만, 타 서비스에 영향은 생각지 못했다. 이벤트 클래스 설계 먼저 이벤트 클래스를 설계는 다음과 같이 했었다. 공통 Event를 설계하면...
도메인의 수정이 타 서비스에 영향이? 문제 상황 기존 설계로 인해 도메인 필드의 수정이 테스트 코드뿐 아니라 이벤트 클래스, 타 서비스에까지 영향을 줬다. 테스트 코드는 도메인 변경시 당연히 영향이 가겠지만, 타 서비스에 영향은 생각지 못했다. 이벤트 클래스 설계 먼저 이벤트 클래스를 설계는 다음과 같이 했었다. 공통 Event를 설계하면...
관심사의 분리 다음 코드는 공연 정보를 생성하는 코드이다. 공연 등록 정보가 들어오면 검증을 거치고 저장한 뒤 예약 서비스로 전달한다(kafka) public void createPerformance(PerformanceDto registrationDto) { validatePerformanceDate(registrationDto); // 검증...
많은 사람들이 생각하는 Hibernate에 대해 가지는 오해중 하나는 데이터베이스가 크거나 사용자가 많아지면 성능 문제가 발생한다고 생각합니다. 하지만 대부분 잘 만들어진 프로젝트를 보면 HIbernate를 사용하여 확장성이 뛰어나고 유지 보수가 쉬운 영속성 계층을 구현한 것을 볼 수 있습니다. 그러면 이러한 잘만들어진 프로젝트와 달리 성능 문제를 ...
[예약 시스템] 굳이 멀티모듈이 필요한가? 개인적으로 느낀 결론부터 말하자면 변경할 확률이 적거나 크지 않으면 멀티모듈이 필요없다. 단일 모듈로도 충분하다. 처음 예약 시스템을 설계할 때는 ‘이전 회사에서 멀티 모듈로 구성했으니까 똑같이 한 번 해볼까?’라는 단순한 생각으로 설계했었다. 심플하게 하나의 멀티 모듈 안에 모든 MSA 서비스들을 모아...
대량의 예약 신청으로 인한 동시성 문제 해결 방법 문제 상황 중간 계층은 모두 생략했다. 문제 상황은 이렇다. 대량의 예약 신청이 동시에 요청이 왔을 때, 각각의 요청은 gateway server에서 제공하는 Load Balancing 기능을 통해 분산됐지만 예약 신청 과정 중에 동시성 문제가 발생했다. 기존 코드 public Reserva...
메서드명 Guide 1. 좋은 네이밍이란? 좋은 네이밍이란 무엇일까? 대다수의 사람들이 어떠한 코드를 보고 이름을 잘 지었구나 라고 느낄 수 있으면 그것이 좋은 네이밍이 아닐까? 그럼 어떻게 작성해야 좋은 네이밍이 될까? 여기서 중점을 둬야하는 것은 대다수의 사람들이 판단했을 때이다. 대다수의 사람들이 일반적으로 자주(일반성) 사용하며 가독성이 ...
Spring Scheduler Tip 1. 스케줄러의 사용이유 스케줄러는 일정한 주기에 특정한 작업을 반복시키기 위해 사용된다. 예를 들어, 가게 정산을 밤 11시 마다 하고 싶다면 이를 하나의 스케줄의 작업으로 묶어서 설정할 수 있다. 스프링에서는 이러한 스케줄 처리를 아주 간단하게 설정할 수 있게 지원해준다. 2. 스케줄러 사용방법 기본적...
API 디자인 10개 체크리스트(Java 8) API를 설계함에 있어서 가장 중요한 것은 사용자 친화적인가 입니다. 사용자 친화적이란, 읽기 쉽고 해석하기 쉬우며 실행의 결과가 예측이 가능한 것을 의미합니다. 좋은 API 디자인을 위해서는 깊은 생각과 많은 경험이 필요합니다. API가 오픈되고 사람들이 사용하게 되면 수정하기가 어렵기 때문에 처음...
Slow Query 추적 실제 사내 서버에서 특정 페이지를 조회할 때, 상당한 딜레이 후에 화면이 표출되는 것을 보고 이를 추적했던 과정입니다. 사용 DB는 PostgreSQL 입니다. Intellij 로그 추적 # hibernate statistics spring.jpa.properties.hibernate.generate_statistics...
1. 람다란? 가장 먼저 람다란 무엇이고 어디서 나온 말이며 중요한 키워드가 무엇인지 설명하고자 한다. 1) 람다란 무엇인가? 람다(lamda)라는 용어는 미적분학 학계에서 개발한 시스템에서 유래한다. 람다가 있기 전 자바에서는 익명 함수가 존재했다. 익명 함수란 이름 그대로 이름 없는 함수이며 사용할 때 바로 구현해서 사용되는 함수이다. 람...