객체지향적으로 코드 리팩토링 하기 [Spring/Java]
·
Spring
1. 객체지향이란?JAVA는 알다시피 객체지향적인 언어다. 그렇다면 객체지향이라는 것이 무엇일까 한번 다들 고민해 봤을 거라고 생각한다.검색해서 나오는 내용들을 보면 객체지향은 OOP다, SOLID원칙을 지켜야 한다라고 단순히 설명하면서 알려주는데 대부분의 사람도 마찬가지로 나도 이런 식으로 그냥 외우고 있었다.또한 SOPT라는 동아리를 하고, 프리랜서로 외주를 맡아 일하면서 여러가지 프로젝트를 진행했는데 코드를 구성할 때 객체지향적으로 생각하면서 코드를 짜지는 않았던 것 같다.그래서 다음과 같은 책을 읽고 코드를 리팩토링하면서 블로그를 작성해보려고 한다.https://product.kyobobook.co.kr/detail/S000213447953 자바/스프링 개발자를 위한 실용주의 프로그래밍 | 김우근..
Spring Boot 서비스 환경 스트레스 테스트 3 [Spring/Java]
·
Spring
지금까지 진행된 내용은 JVM 환경을 모니터링하고 DB 커넥션을 빠르게 되돌려 줄 수 있게 쿼리 최적화와, 트랜잭션의 동작, QueryHints 어노테이션, DB의 접근하는 로직을 최소화할 수 있도록 구성했다.이제 스트레스 테스트를 실제로 진행해야 한다.1. 스트레스 테스트 with K6K6는 그라파나 Lab에서 개발된 오픈소스로 다른 스트레스 테스트 툴에 비해서 들어가는 리소스가 적다. 또한 Go언어로 만들어져 빠르고 실제 테스트 스크립트 작성은 Js로 구성할 수 있다.https://kiru-dev-study.tistory.com/26 Spring Boot 프로파일링 및 Stress Test [Spring]현재 진행하고 있는 프로젝트의 대한 최적화를 진행하기 위해 다음과 같은 기술 스택을 사용했고 어떻..
Spring Boot 서비스 환경 스트레스 테스트 [Spring/Java]
·
Spring
1. 구성하게 된 이유스타트업 프로젝트를 2주안에 서버 구축이 완료되어어야 한다는 소리에 다급하게 프로젝트를 시작하고 인프라 구축, API 개발까지 완료를 한 상황에서 물론 스스로 응답에 관련한 테스트는 진행했지만 내가 만든 서비스의 수용량, 즉 얼마나 많은 유저들이 접속해서 유지할수 있는지 파악이 되지 않았다. 그리고 만든 서비스는 MSA 구조로 나뉘어져 있는 구조였기 때문에 각 컴포넌트 끼리 통신을 주고 받는 경우가 많아 하나의 요청도 분산되어있는 서비스에서 추적이 가능해야 했다. 따라서 스트레스 테스트 과정중 Spring Boot의 Observability가 필요하다고 생각했고 그에 따라 구성해본 경험을 작성해보려고 한다. 2. 서비스 환경 버젼(2025.01.04 기준 최신 latest 이미지만 ..
[Spring] Redis Stream을 사용한 EventPublisher, EventListener 구현
·
Spring
https://playground.sopt.org/projects/179 SOPT | 프로젝트 둘러보기자세한 내용이 궁금하신가요?playground.sopt.org다음과 같은 Product에 참여를 해 서버 개발자로 참여를 했었는데요.!그런데 여기서 의문점이 하나 있었는데 데이트 코스를 생성하는 과정에서 다음과 같은 과정을 거쳐야 했었습니다1. 데이트 코스 생성 [CREATE] 2. 코스를 생성하면 User에게 코스를 생성했으니 Point값 추가 [ UPDATE ]3. 그후 Point 내역을 보여주기 위한 Point 테이블에 Point 생성 [CREATE] 근데 여기서 의문점이였던게 어라라???POST API한개로 다른 테이블을 조회해서 UPDATE와 CREATE를 전부 수행해도 되는것인가...?에 대한..
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%..
데이터베이스에 더미 데이터를 추가하는 방법
·
Spring
일단 더미데이터란? 특정 데이터를 테스트나 데모용도로 사용하기 위해 임의로 만든 데이터입니다! 저희도 과제를 하고 API를 작성함에 있어서 더미데이터를 넣어주고 test하는것이 필요한 경우가 많죠! 하지만 저도 이런점들을 잘 몰랐을때 그냥 Main코드에 더미데이터를 추가하는 코드를 넣거나 그냥 test API마다 값을 달리해서 추가하는 경우가 종종 있었습니다!! 따라서 아래와 같은 방식을 사용해서 더미데이터를 집어넣는다면 코드를 좀더 간결하고 작업하기 쉽게 만들수 있겠죠?? 1. data.sql 스프링 부트에서 (src/main/resource) 안에 만들어주시면 어플리케이션 "실행"시에 자동으로 실행됩니다! 다음과 같이 쿼리문을 만들어서 실행시켜주면 자동으로 더미데이터를 만들수가 있습니다! 어떻게 만들..