굳이 멀티모듈이 필요할까?
[예약 시스템] 굳이 멀티모듈이 필요한가? 개인적으로 느낀 결론부터 말하자면 변경할 확률이 적거나 크지 않으면 멀티모듈이 필요없다. 단일 모듈로도 충분하다. 처음 예약 시스템을 설계할 때는 ‘이전 회사에서 멀티 모듈로 구성했으니까 똑같이 한 번 해볼까?’라는 단순한 생각으로 설계했었다. 심플하게 하나의 멀티 모듈 안에 모든 MSA 서비스들을 모아...
[예약 시스템] 굳이 멀티모듈이 필요한가? 개인적으로 느낀 결론부터 말하자면 변경할 확률이 적거나 크지 않으면 멀티모듈이 필요없다. 단일 모듈로도 충분하다. 처음 예약 시스템을 설계할 때는 ‘이전 회사에서 멀티 모듈로 구성했으니까 똑같이 한 번 해볼까?’라는 단순한 생각으로 설계했었다. 심플하게 하나의 멀티 모듈 안에 모든 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)라는 용어는 미적분학 학계에서 개발한 시스템에서 유래한다. 람다가 있기 전 자바에서는 익명 함수가 존재했다. 익명 함수란 이름 그대로 이름 없는 함수이며 사용할 때 바로 구현해서 사용되는 함수이다. 람...
로그 설정 정리 1. 로깅 설정 이 글은 여러 자료들을 찾아보고 가장 나을 것 같다고 생각되는 것을 정리한 것이다. Spring Boot 2.7.9 버전을 기준으로 하며 logback.xml 을 설정한다. 먼저 로깅 처리에서 중요한 것 중 하나는 Dev 와 Prod 환경의 차이를 두는 것이다. 너무 많은 정보를 Prod에 넣어서는 안되고 필요한 ...
OpenAPI Swagger + Restdocs 의 장점을 한대 모은 OpenAPI Specification 을 사용하는 예시를 간략 정리했다. start.spring.io에서 Spring REST Docs를 추가했다고 가정하고 추가한 요소에 대해서만 작성한다. Dependency plugins { id 'java' id 'org...
윈도우 단축키 1. 실행 shft + f10/f9 : 이전 실행했던 것 실행 / 디버그 (우측 상단 실행문 목록 확인) ctrl + shft + f10 : 현재 커서가 있는 곳 실행 2. 추가 alt + insert : 생성자, 메서드, 테스트 추가 ctrl + shft + t : 테스트 클래스 추가 f5 : 현재 ...