컴퓨터 프로그래밍 158

[Spring] Swagger UI 적용

🌱 Swagger UISwagger UI는 RESTful API를 문서화하고 시각적으로 표현하기 위한 도구다. API의 엔드포인트, 요청 및 응답 형식 등을 사용자에게 쉽게 이해할 수 있는 형태로 보여준다.  🌱 Swagger UI 장점자동 문서화: Swagger UI는 API 코드에 주석을 추가하거나 Swagger Annotation을 사용하여 자동으로 API 문서를 생성한다. 이를 통해 개발자들은 코드 변경 시 문서도 함께 업데이트할 수 있다.인터랙티브: Swagger UI는 사용자가 API를 직접 테스트할 수 있는 인터페이스를 제공한다. 사용자는 요청을 보내고 응답을 확인할 수 있어 API의 동작을 쉽게 이해할 수 있다.시각적 표현: API의 엔드포인트, 요청 및 응답 모델을 시각적으로 표시하여..

[Spring] Soft Delete

📚 배경1. 탈퇴한 회원의 계정으로 중복 계정 생성을 막을 때2. 데이터 분석을 위해서 탈퇴한 회원에 대한 데이터가 필요할 때3. 서비스 정책 상 탈퇴한 유저의 정보를 정해진 기간동안 유지할 필요가 있을 때 등 위와 같은 이유로 soft Delete 가 사용된다.직접 User Entity 에 userStatus 라는 필드를 만들어서 삭제 유무를 파악했었는데, Spring Boot 에서 이를 지원해주기 때문에 활용하는 방법에 대해서 알아보았다.User@Getter@Entity@SQLDelete(sql = "UPDATE users SET deleted = true WHERE id = ?")@SQLRestriction("deleted = false")@NoArgsConstructor@Table(name = ..

[CS] CI/CD 파이프라인 구축을 위한 이해

1. CI/CD 는 세 단계를 가진다. 개발, 빌드, 배포각 단계는 하나의 서버 개념이다.2. Jar 파일 빌드 시점에 대한 고민 .jar 파일을 빌드해야하기 때문에 이 과정을 개발 단계에서 포함해서 가져가냐, 빌드 단계에서 가져가냐의 차이는 있다. 빌드 단계에서 .jar 파일을 빌드하게 해놓는다면 Github Actions, Jenkins 등 툴에 따라서 환경을 맞춰줘야한다.이렇게 하면 이미지가 가벼워진다. 개발단계에서 이미지를 만들고 도커파일 자체에서 jdk, gradle 를 정의하고 가져온다면 build 를 어떤 툴로 하든 가능해진다. but, 이미지가 무거워진다는 단점이 있다.  사실상 이렇게 만든 .jar 파일을 배포하면 끝이다.3. 서버 확장 시 생길 수 있는 문제 하지만 나중에 EC2 서버를..

[Spring] 페이지네이션 정리 코드

Controller// 식물사전 리스트 조회@GetMapping("/v1/dictionaries")public ResponseEntity>> getDictionaryList( @RequestParam(defaultValue = "1") int page, @RequestParam(defaultValue = "10") int size) { return ResponseEntity.ok(ApiResponse.success(dictionaryService.getDictionaryList(page, size)));} 🎯 @RequestParam 으로 page, size 를 받고 defaultValue 를 설정함으로서 다른 입력이 없으면 기본 값을 설정해준다. 🎯 Page 로 반환하..

[CS] ACCESS 토큰과 REFRESH 토큰

💡 Refresh 토큰이 뭐에요 Access 토큰과 비교해서 알아봅시다.구분액세스 토큰리프레시 토큰역할API 호출 시 인증액세스 토큰 재발급수명짧음 ( 몇 분 ~ 몇 시간 )김 ( 며칠 ~ 수개월 )사용 위치모든 API 요청에 사용만료된 액세스 토큰 갱신 시 사용저장 위치브라우저 메모리, 쿠키 등쿠키, 로컬 스토리지 또는 서버만료 시 처리리프레시 토큰으로 재발급만료 시 재로그인 필요 이 두 가지를 함께 사용하면 보안과 편의성을 모두 확보할 수 있다.리프레시 토큰을 통해 자주 로그인하지 않아도 되면서도, 액세스 토큰의 짧은 수명으로 보안을 강화할 수 있다.  💡 어떤 구조로 이 두 가지를 함께 사용할 수 있을까?💡 Access 토큰과 Refresh 토큰을 조합할 때의 주의사항이 뭘까?리프레시 토큰 재..

[CS] 트랜잭션 오버헤드

조회 성능을 최적화 하는 과정에서 트랜잭션 오버헤드를 줄여서 성능을 향상시키는 방법을 몇 가지 제시받았는데, 트랜잭션 오버헤드가 정확히 뭔지 처음 들어봐서 한 번 알아보고자 한다. 트랜잭션 오버헤드가 뭔가요? 트랜잭션 오버헤드란 트랜잭션을 시작하고 유지하며 완료하기 위해 추가적으로 발생하는 비용을 의미한다. 이는 트랜잭션이 데이터의 무결성과 일관성을 보장하기 위해 필요한 여러 작업(락, 로그 기록, 복구 준비 등)에서 발생한다. 이 추가 비용은 CPU, 메모리, 네트워크, 디스크 I/O 등의 리소스를 소비하며 시스템 성능에 영향을 미칠 수 있다. 트랜잭션 오버헤드의 원인에는 뭐가 있나요.1. 트랜잭션 시작 및 종료 작업명령 처리 비용:트랜잭션을 시작하면 데이터베이스는 begin, commit, rollb..

[내배캠] Spring Project 24조 뉴스피드 프로젝트 팀 KPT 회고

팀 KPT 회고KEEP, 다음 프로젝트로 가져갈 ·  추가 구현에서 경험한 동시성 처리, Redis를 이용한 캐시의 이점, 쿼리와 인덱스를 이용한 최적화, 젠킨스와 도커를 이용한 CICD까지 직접 구현하진 않은 부분일지라도 팀 노션에 작성된 부분을 통해 간접 경험을 하거나 동료의 구현 모습을 보면서 좀더 본인의 기술을 디벨롭 할 수 있는 경험.  ·  의견 차이를 커뮤니케이션을 통해 극복하는 자세를 유지하면 좋다. 대부분의 개발이 단체로 이뤄지기 때문에 의견을 수용하고, 배우는 자세를 유지하는것은 매우매우 좋음.  ·  동시성 처리에서 분산락, 낙관락, 비관락을 활용한 다양한 동시성 처리 방식을 적용해보았고, 각 방법이 특정 메서드에 얼마나 적합한지 확인하는 과정을 거침.  ·  외부 API 호출을 통한..