Spring Boot 서비스 환경 스트레스 테스트 [Spring/Java]
·
Spring
1. 구성하게 된 이유스타트업 프로젝트를 2주안에 서버 구축이 완료되어어야 한다는 소리에 다급하게 프로젝트를 시작하고 인프라 구축, API 개발까지 완료를 한 상황에서 물론 스스로 응답에 관련한 테스트는 진행했지만 내가 만든 서비스의 수용량, 즉 얼마나 많은 유저들이 접속해서 유지할수 있는지 파악이 되지 않았다. 그리고 만든 서비스는 MSA 구조로 나뉘어져 있는 구조였기 때문에 각 컴포넌트 끼리 통신을 주고 받는 경우가 많아 하나의 요청도 분산되어있는 서비스에서 추적이 가능해야 했다. 따라서 스트레스 테스트 과정중 Spring Boot의 Observability가 필요하다고 생각했고 그에 따라 구성해본 경험을 작성해보려고 한다. 2. 서비스 환경 버젼(2025.01.04 기준 최신 latest 이미지만 ..
Swagger로 사랑받는 개발자 되기 [ Spring ]
·
Spring
들어가며안녕하세요, 여러분! 오늘은 개발자로서 Swagger를 이용해 API 문서를 작성하는 방법과 이를 통해 사랑받는 개발자가 되는 방법에 대해 이야기해 보려고 합니다. 특히, Spring 프레임워크를 사용하는 여러분께 유용한 팁과 예제를 공유할 예정입니다. 그럼, 시작해볼까요?Swagger란 무엇인가요?Swagger는 API 문서를 자동으로 생성해주는 툴로, API의 설계 및 구현 과정에서 매우 유용하게 사용됩니다. Swagger를 사용하면, API의 명세를 쉽게 확인하고 테스트할 수 있어 개발자와 비개발자 모두에게 큰 도움이 됩니다. Spring 프레임워크와 결합하면 더욱 강력한 도구로 활용할 수 있습니다.@Tag와 @SecurityRequirement먼저, API 인터페이스를 정의하는 부분을 살펴..
Spring 검색조회 필터링 구현 방법 [JPA Specification]
·
Spring
https://spring.io/blog/2011/04/26/advanced-spring-data-jpa-specifications-and-querydsl안녕하세요..!오늘은 Spring Framework를 활용하여 검색조회 필터링을 구현하는 방법에 대해 소개할게요! 주어진 코드는특정 조건에 따라 Course 객체를 필터링하고, 결과를 DTO로 변환하여 반환하는 기능을 위해서 제가 진행한 프로젝트에서 필터링 기능을 적용하기 위해서 사용했습니다!이 과정에서 JPA의 Specification을 사용하여 동적 쿼리를 생성함으로써 필터링 기능을 작동시킬수 있습니다!1. Specification이란?Specification은 JPA에서 제공하는 인터페이스로, 동적 쿼리를 생성하는 데 유용합니다! . 주로 복잡한 ..
편리한 객체간 매핑을 위한 MapStruct 적용기 .feat 당근클론코딩
·
Spring
왜??Spring에 대한 공부와 여러가지 실습을 진행하면서 객체간 Mapping을 할 일이 많아졌고 각 객체 내부에 계속해서 다른 객체와 Mapping 해주는 로직을 짜게 되었습니다. 그러나 이제 객체가 늘어날수록 계속해서 Mapping 로직과 반환하는 DTO들이 많아졌고 관리의 용이성을 생각했을때 더 좋은 방법이 있다고 생각해서 찾아보게 되었습니다.일반적으로 제공하는 Mapper가 있지만 MapStruct라는 좋은 것이 있어서 코드설명과 함께 제공을 해드리려고 합니다. 네이버 클라우드의 블로그를 참고했습니다.https://medium.com/naver-cloud-platform/%EA%B8%B0%EC%88%A0-%EC%BB%A8%ED%85%90%EC%B8%A0-%EB%AC%B8%EC%9E%90-%EC%..
JPA - 단방향? 양방향? OneToMany? ManyToOne?
·
Spring
과제하다가 갑자기 DELETE 가 동작하지 않았다....ㅋㅋㅋㅋㅋㅋ... 따라서 여러가지 찾아보다가 이렇게 글을 쓰게 되었습니다...ERROR: update or delete on table "member" violates foreign key constraint "fkid4wmieido0slha6oaqc8l5fb" on table "blog"Detail: Key (id)=(6) is still referenced from table "blog".다음과 같은 Error로인해서 동작하지 않는다고 한다. 잘 읽어보면 update나 delete 시 member가 blog의 fk를 위반하고 있다고 한다. 따라서 blog참조하려다가 error가 떴다고 확인할수 있었다.그럼 이전에 먼저 ManyToOne , One..
SpringBoot와 Docker Container :Postgresql 연결하기!
·
Spring
먼저 사용에 앞서서 Docker를 알고 계신가요?https://crystalline-paper-4ea.notion.site/b1fb3ccc909d42e39263635676c3a7b8 여기서 docker & kubernetes 관련해서 간단하게 기본개념만 보고 오실수도있어요! 사실 저기에는 제가 정리한 내용이라 보기 어려우실 수도 있으니 간략하게 설명드리자면 커널을 공유해서 사용자의 resource를 사용해 간단하게 사용하는 인스턴스라고 생각하시면 될 것 같아요. 사용자마다 각 OS등의 환경이 다르기 때문에 발생하는 의존성 문제를 해결해줄수 있기 때문에 각 의존성을 모두 넣어서 하나의 이미지로 만들고 그 이미지를 실행시키면 컨테이너! 가 되는 과정이죠! 하나의 작은 서버개념 이라고 생각하시면 겁먹지 않고 ..
데이터베이스에 더미 데이터를 추가하는 방법
·
Spring
일단 더미데이터란? 특정 데이터를 테스트나 데모용도로 사용하기 위해 임의로 만든 데이터입니다! 저희도 과제를 하고 API를 작성함에 있어서 더미데이터를 넣어주고 test하는것이 필요한 경우가 많죠! 하지만 저도 이런점들을 잘 몰랐을때 그냥 Main코드에 더미데이터를 추가하는 코드를 넣거나 그냥 test API마다 값을 달리해서 추가하는 경우가 종종 있었습니다!! 따라서 아래와 같은 방식을 사용해서 더미데이터를 집어넣는다면 코드를 좀더 간결하고 작업하기 쉽게 만들수 있겠죠?? 1. data.sql 스프링 부트에서 (src/main/resource) 안에 만들어주시면 어플리케이션 "실행"시에 자동으로 실행됩니다! 다음과 같이 쿼리문을 만들어서 실행시켜주면 자동으로 더미데이터를 만들수가 있습니다! 어떻게 만들..