인프런 커뮤니티 질문&답변

cw k님의 프로필 이미지
cw k

작성한 질문수

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

회원 조회 API

api 응답객체 네이밍 및 new에 대해

해결된 질문

작성

·

513

0

안녕하세요. 강의 너무 잘 보고 있습니다.

좋은 컨텐츠를 제공해주시는 인프런과 영한님, 서포터분들께 감사드립니다.

 

api응답 객체 네이밍에 대해 질문이 있습니다.

등록,수정의 경우 응답객체 네이밍이 ~~Response

조회의 경우 MemberDTO 를 Result로 래핑해서 보내는데

DTO와 Response로 네이밍하는 기준이 있는지 궁금합니다.

 

또 하나는, 좀 엉뚱한 질문일 수도 있는데

응답시마다 new를 통해 응답객체를 생성하는데

대규모 시스템에 성능에 크게 문제가 없는지와

응답 객체를 싱글톤으로 만드는 패턴같은것도 있는지 궁금합니다.

 

감사합니다.

 

답변 1

3

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. cw k님

프로젝트 마다 다를 것 같기는 한데요. 저는 특별한 네이밍 규칙을 가지고 있지는 않습니다.

API 응답의 최종 껍데기는 Response를 포함한다 정도가 규칙이 될 수는 있는데, 이런 규칙은 구성원들과 프로젝트를 진행하면서 합의를 이루는 것이 필요할 수 는 있습니다.

DTO는 데이터 전송 객체라는 뜻인데, 가장 광범위하게 데이터를 전달하는 목적으로 사용되는 객체를 뜻합니다.

DTO는 객체간의 전송에도 사용되고, API 응답에도 사용되는 가장 광범위한 의미로 생각하시면 됩니다.

 

Q: 응답시마다 new를 통해 응답객체를 생성하는데 대규모 시스템에 성능에 크게 문제가 없는지

-> 네 자바의 GC 성능은 매우 뛰어나기 때문에 이런 부분으로 성능 문제가 발생하지는 않습니다. 응답 객체를 싱글톤으로 구현하게 되면 멀티쓰레드 상황에서 공유 이슈가 발생하기 때문에 더 큰 문제가 발생할 수 있습니다. 그리고 더 나아가서 응답 객체들을 풀에 넣어두고 재사용하는 객체 풀링도 방법이 될 수 있지만, 이 경우에도 멀티쓰레드 상황에서 동시에 여러 쓰레드가 객체 풀에 접근하는 동시성 이슈를 락 등으로 해결해야 합니다. 현대에는 GC 성능이 매우 뛰어나기 때문에, 객체를 new로 생성해서 GC 하는 비용은 매우 저렴합니다. 결과적으로 멀티쓰레드 상황에서는 객체 풀링을 사용하는 비용보다 new를 직접 사용하는 것이 더 좋은 성능을 보입니다.

감사합니다.

cw k님의 프로필 이미지
cw k
질문자

답변 감사드립니다!

cw k님의 프로필 이미지
cw k

작성한 질문수

질문하기