Back-End

Back-End/Spring

[ Spring ] API 문서화와 Spring Rest Docs는 무엇일까?!

API 문서화란 무엇일까??!!! API문서화는 클라이언트가 REST API 백엔드 애플리케이션에 요청을 전송하기 위해서 알아야 되는 요청정보(URL, request body, query parameter 등)을 문서로 잘 정리해 놓은 것을 뜻합니다. 우리는 이러한 문서를 API 문서 또는 API 스펙이라고 합니다. 이러한 API문서는 수기로 작성할 수 있지만 애플리케이션 빌드를 통해 자동 생성할 수 있습니다. Spring Rest Docs 애플리케이션 빌드는 대표적으로 Swagger와 Spring Rest Docs가 있지만 Swagger는 Spring Rest Docs 에 비해 오래된 기술입니다. Swagger는 애너테이션 기반의 애플리케이션 빌드이며 Swagger를 사용할 때 너무 많은 애너테이션을 ..

Back-End/Spring

[ Spring ] Mock이란 무엇일까?

Mock이란 무엇일까요? Mock이란 모조품 또는 흉내내는 것을 뜻합니다. 즉, 프로그래밍에 있어서의 Mock은 테스트를 하기 위한 가짜 객체를 뜻합니다. 이러한 Mock을 단위 테스트나 슬라이스 테스트 등에 사용하는 것을 Mocking이라고 합니다. Mock 객체를 사용하는 이유는 무엇일까? 테스트 단위는 가급적이면 작을수록 좋습니다. 만약 테스트를 내가 만든 프로그램 전체 단위로 진행하게 된다면 매우 비효율적일 것입니다. 따라서, Mock 객체를 활용하여 내가 테스트 하고자 하는 구간만 제한적으로 테스팅 할 수 있습니다. Mockito란 무엇일까요?! Mockito는 앞선 Mock 객체를 생성하고 동작하게 Mocking해주는 라이브러리 입니다. Mokito의 기능을 통해 테스트 대상에만 집중하여 테스..

Back-End/Spring

[ Spring ] 트랜잭션 (Trasaction)의 이해

트랜잭션의 이해 트랜잭션이란 무엇일까?! 물건을 주문하던 중 네트워크의 오류로 인해 물건이 주문되지 않았다. 그런데 내 주문목록에 보니 물건이 들어있고 며칠 뒤 물건이 집에 도착했다!! 그야말로 창조경제 아닌가?!! 이러한 상황을 미연에 방지하기 위해 내 주문이 취소 될때 네트워크의 오류가 발생하여 내 주문정보와 결재정보 둘중 하나라도 실패하게 되면 모두가 실패하였다고 처리하는 방식 즉, 여러개의 작업들을 하나의 그룹으로 묶어서 처리하는 단위를 뜻한다. 이러한 트랜잭션의 처리 방식을 All or Nothing이라고 한다. ACID 원칙 트랜잭션은 ACID 원칙을 따른다. 원자성(Atomicity) 더이상 쪼갤 수 없음을 뜻한다. 즉, 주문이 취소되지만 결제가 되거나, 결제가 취소되지만 주문이 되는 것이 ..

Back-End/Java

[Java/자바] e.printStackTrace를 사용하지 말아야 하는 이유

e.printStackTrace()는 예외 발생 당시의 호출 스택에 있던 메소드의 정보와 예외 결과를 화면에 출력한다. 즉, 에외 상황을 분석하기 위한 용도로 사용된다. 왜 e.printStackTrace를 사용하지 말아야 할까? 다섯가지 이유 System.err로 처리되기 때문에 제어가 어렵다 java리플렉션을 사용하기 때문에 오버헤드의 발생 가능성이 있다. 서버에서 스택 정보를 취합하기 때문에 부하가 발생할 가능성이 있다. 출력이 어디로 되는지 파악하기 어렵다 로깅 라이브러리 관리가 어렵다.