전체 글(15)
-
DTO 상속에 대하여
#1. 개요 API를 구현할 때 기획과 프론트엔드의 요구로 인해 기존 Dto에 property 가 하나씩 추가되어야할 때가 있다. 호출되는 데이터의 DB 스키마가 변경되지 않더라도 말이다! 처음에 기존 Dto에 계속 property 를 추가했더니 하나의 Dto가 너무 커지고, 여러 API에 쓰이기 시작했다. 결과적으로 스웨거에 스키마가 올라갔을 때, 각 API에서 안 쓰이는 property 가 많아졌다. 이는 백엔드, 프론트엔드 양쪽에 다 여간 불편한 것이 아니었다. 그렇기에 Dto를 여러 개로 나누려했다. 그러나 나누려하는 이 Dto들은 결국 비슷한 정보를 리턴하기에, 겹치는 정보가 많았다. 그렇기에 아예 분리를 하기보다, 상속을 하는 것이 제일 좋은 판단이라고 생각했다. 그리고 분류를 해보면 보통 같..
2024.03.14 -
UML 시퀀스 다이어그램 그리기 - 기획과 개발자간 소통
HTML 삽입 미리보기할 수 없는 소스 #1. 설명 UML Diagram(시퀀스다이어그램) 특정 행동이 어떤 순서로 어떤 객체와 어떻게 상호작용하는 지 표현하는 행위 다이어그램 사용자 / 프론트 / 백 세개의 객체로 구분하고, 기획 / 프론트엔드 / 백엔드 개발 간 상호 소통을 원활히 될 수 있도록 도울 수 있음 기획자: 사용자 ↔ 서비스간 상호 작용을 고려 프론트엔드: 사용자에게 요청이 들어오면 어떤 API를 호출해, 어떤 데이터를 백엔드로부터 받아와서 어떻게 사용자에게 뿌려줄 지 고려 백엔드: 프론트엔드 측에서 어떤 데이터를 통해 요청을 하여 어떤 데이터를 요구할 지 고민해서 어떤 API를 구현할 지 고민 이 세 개의 고민을 해소해주기 위해 세 객체 사이의 상호 작용을 시퀀스 다이어그램을 통해서 도식..
2024.03.14 -
Java Spring - Cache 도입기 (2 / 2): Redis 적용기
HTML 삽입 미리보기할 수 없는 소스 #1. Redis 설정 기록 1. 라이브러리 추가 https://velog.io/@qotndus43/Cache 1) 그래들 추가 dependencies { // Spring Boot Starters implementation 'org.springframework.boot:spring-boot-starter-data-redis' implementation 'org.springframework.boot:spring-boot-starter-cache' // Other dependencies } 2) redis 설정 spring: data: redis: host: localhost port: 6379 각 yaml 파일마다 별도의 host를 갖게 해도 괜찮음 그러면 각 서버..
2024.03.14 -
Java Spring - Cache 도입기 (1 / 2): 어떤 캐시를 쓸까?
HTML 삽입 미리보기할 수 없는 소스 #1. 캐싱 툴 조사 Ehcache vs. Redis vs. Memcached 1. Spring boot Starter cache 💡 스프링 부트에서 캐시를 사용할 수 있게끔 해줌 스프링 부트에서 제공하는 캐싱 추상화를 활성화하기 위한 스터터 의존성. 앱 단에서 어떤 캐시 구현체를 사용할 지 명시하지 않으면, 스프링 부트는 기본적으로 간단한 로컬 메모리 캐시를 사용함. 즉 해당 스타터를 사용하여 캐싱을 활성화하고, ehcache 등 캐시 구현체를 지정할 수 있음. 사용 방법 그래들 추가 컨피그 추가 서비스에 어노테이션 추가 ehcache 와 동일 2. Ehcache 💡 스프링에서 캐시를 어떻게 사용할 지 정해주는 어노테이션을 제공하는 라이브러리 https://vel..
2024.03.14 -
Java Spring 으로 백엔드 개발 시 지양해야할 코딩 패턴:
HTML 삽입 미리보기할 수 없는 소스 #0. 개요 💡 java spring 으로 프로그래밍 하면서 마주친 몇 가지 간단한 지양하면 좋은 개발 코드 패턴. 심심치 않게 개발을 하다 보면 아 이런거는 사용하지 않는 게 좋다라고 다들 한 번쯤은 들어봤을 거다. 그래서 이런 포인트들을 간추려 정리하였다. #1. 쿼리 조회 시 * 사용 지양 쿼리 조회 시 필요한 컬럼만 뽑는 것이 좋다. * 로 모든 컬럼값을 불러와서 subquery 등을 구성할 경우 DB는 당연히 더 많은 cost 가 발생한다. SELECT * FROM users; SELECT id, name FROM users; #2. println() 사용 자제 참조: https://velog.io/@destiny1616/System.out.println-..
2024.03.14 -
네이버 코딩컨벤션 적용하기 - formatter / rules / suppressions .xml
HTML 삽입 미리보기할 수 없는 소스 #1. 설명 💡 아래 글은 전부 intellij 환경에서 실행됨 참조: https://naver.github.io/hackday-conventions-java/ https://bestinu.tistory.com/64 네이버에서 코딩 컨벤션 formatter와 checkstyle을 제공해주신다. 협업 시 이를 각각 적용 후, 검사하여, 통일된 코딩 환경을 만들면 좋을 것 같다. naver-intelij-formatter 포맷팅해주는 역할 naver-checkstyles-rules checkstyle 시 따르는 룰들 local checkstyle 에서 naver-checkstyles-rules를 등록하여 룰을 지정해줄 수 있음 naver-checkstyle-suppre..
2024.03.14