본문 바로가기

Java/Spring4

WebClient Request, Response 통신데이터 확인하기 Spring boot 사용시에 WebClient 를 많이 사용하실 텐데요. 기본적으로 이렇게 사용하는 경우에는 통신 요청 Body 에 그냥 Java 클래스를 그대로 넣어서 전달하는 경우가 많습니다.. 최근에는 Body의 Content-Type을 json/application, text 등으로 설정하는 경우가 많습니다. 다만 이렇게 사용시에는 실제로 통신이 일어나는 Request, Response 데이터 확인이 쉽지가 않고 Spring 이 변환해주는 최종적인 결과만을 받아보게 될 때가 많아서 디버깅에 종종 어려움을 겪습니다. Optional responseResult = testClient.post() .uri(TEST_ORDER_URI) .accept(MediaType.APPLICATION_JSON) ... 2023. 11. 27.
Spring Boot, JPA로 만든 API 서비스의 성능 개선하기 오늘은 서비스 성능 개선을 위한 고군분투기를 하나 작성해볼까 합니다. 앞에서 작성했던 몇 가지 글들은 모두 이 목적을 위해서 고생하면서 알아낸 것들입니다. 2023.04.20 - [Java/Spring] - JPA로 mssql(sql server)의 문자열 데이터 조회할 때 인덱스 적용 안됨 이슈 JPA로 mssql(sql server)의 문자열 데이터 조회할 때 인덱스 적용 안됨 이슈 보통은 회사에서 JPA를 사용한다고 하시면 오라클을 많이 사용하시겠지만, 상황에 따라서는 MS-SQL (SQL Server) 도 많이 사용할 것입니다. 그런데, MS-SQL 에 JPA를 연동해서 사용하실 때 성능 이슈를 조 toycoding.tistory.com 2023.05.08 - [Java/Spring] - JPA을.. 2023. 5. 8.
JPA을 이용하여 복합키 테이블에 데이터 삽입시 select insert 방지하기 최근에 특정 서비스를 새로 런칭하기 위해서 부하테스트를 진행할 일이 있었습니다. 현재 팀에서 운영하는 서비스는 대부분 하루에 1천~1만건 사이의 호출이 들어오기 때문에 부하로 인한 이슈는 거의 없었습니다. 대부분 잘못된 쿼리로 인한 문제였습니다. 그러나 새로 런칭해야할 서비스는 쿼리는 간단한 대신에 1일간 10만건에서 100만건까지의 호출을 처리를 해야한다는 것이었습니다. 흔히말하는 네카라쿠배 같은 기업이나 특별한 스타트업, 혹은 매출/이익이 많은 서비스를 운영하는 기업들은 이 정도의 트래픽은 아무것도 아니라고 생각할 수도 있겠지만 저희 회사의 기준에서는 여러 제약이 있는 상황이기에 일반적인 인프라 환경에서 해당 호출은 상당히 부담될 수 있는 요소라고 생각되었습니다. 그래서 내부적으로 1차 목표로 잡은 .. 2023. 5. 8.
JPA로 mssql(sql server)의 문자열 데이터 조회할 때 인덱스 적용 안됨 이슈 보통은 회사에서 JPA를 사용한다고 하시면 오라클을 많이 사용하시겠지만, 상황에 따라서는 MS-SQL (SQL Server) 도 많이 사용할 것입니다. 그런데, MS-SQL 에 JPA를 연동해서 사용하실 때 성능 이슈를 조심할 부분이 있습니다. 테이블에 인덱스를 걸어두었는데, 실제로는 제대로 동작을 하고 있지 않는 케이스가 발생하는 것이죠. 실제로 데이터베이스에서 문자를 저장하는 방법은 다양하고, 일반적으로 문자 데이터는 MS-SQL에서 주로 varcahr, nvarchar 를 사용을 합니다. 그런데, JPA에서는 이것을 String 으로 통일해서 사용하고 있습니다. 이 말은 JPA가 내부적으로 데이터베이스의 특정한 타입을 변경을 해준다는 것인데 그 과정에서 인덱스가 제대로 적용되지 않을 수 있습니다. .. 2023. 4. 20.