spring 3

[Spring 트래픽 제한] 인증 없는 API에 안전장치 달기: Bucket4j로 Rate Limiting 구현

서비스를 운영하다 보면 보안상 가장 고민되는 지점 중 하나가 바로 '인증되지 않은 사용자의 요청' 이다. 특히 파일 업로드 API는 악의적인 사용자의 타겟이 되기 쉽다. 주변에서도 왕왕 그러 악의적인 접근 때문에 aws 요금을 폭탄맞았다는 경우도 왕왕 들었다. 오늘은 최근 프로젝트 코드 리뷰 중 발견한 보안 취약점을 해결하기 위해, Bucket4j를 도입하여 트래픽 제한(Rate Limiting)을 적용한 과정을 공유하려 한다. 1️⃣ 현재 필자의 상황 (왜 트래픽 제한이 필요한가)현재 개발 중인 프로젝트의 판매자 회원가입 로직은 다음과 같다.판매자가 회원가입 폼을 작성하며 사업자등록증 등 증빙 서류를 업로드한다.이 서류는 S3의 temp/ 경로에 임시 저장된다. (아직 가입 전이므로 비로그인 상태)회원..

[프로젝트] Service, ServiceImpl 구조에 대한 내 생각과 결론 (부제: 이유없는 리팩토링을 지양하자)

프로젝트 기능 구현을 마무리 하고, 성능 테스트 및 성능 향상을 위한 리팩토링을 끝낸 후 다른 리팩토링 거리(?)를 찾고 있었다. 그러다 전에 진행한 팀 프로젝트에선 Service 레이어 계층을 인터페이스와 그 구현체로 분리해서 개발했었는데, (부끄럽지만 그 땐 제대로 된 이유도 모르고 강사님께서 이게 좋다! 라고 하시는 걸 무작정 따라만 했었다) 이번 개인 프로젝트에서는 서비스 계층 추상화를 따로 진행하지 않은 점이 생각났다. 그래서 왜 사람들이 Service 인터페이스와 그 구현체를 분리해서 추상화하는지 이유를 생각해보고 내 프로젝트에 적용해보는 과정까지 진행해보려 한다. (결론부터 말하자면 구현체 분리는 하지 않기로 결정함) 먼저 기존 코드와 분리 후 코드를 비교해보면 이렇다. (예시)🔹분리 전 ..

Project/Newsfeed 2024.04.19

프레임워크와 라이브러리의 차이

전에 KDT로 부트캠프에서 강의 들을 때도, Spring framework를 사용해서 팀 플젝 할 때 중간중간 문득! 그래서 프레임워크는 뭔데 ? 라이브러리랑 뭐가 다른건데? 라는 의문이 들었었다. 그럴 때 마다 구글링 해서 찾아보고, 아 ~~~ 이거구나! 하고 넘어가니까 뒤돌아서면 까먹는거다. 아예 기록해둬서 안까먹도록 박제 하려고 포스팅한다. ※ 백엔드 취준생이 작성한 글로, 틀린 개념이 있다면 댓글로 지적해주시면 감사하겠습니다. 프레임워크란? 개발자가 코드를 구현하는 개발 시간을 줄이고, 코드의 재사용성을 증가 시키기 위해, 일련의 클래스 묶음이나 뼈대, 틀을 라이브러리 형태로 제공하는 것을 말함 제어의 역전 개념이 적용된 대표적인 기술 프레임워크의 특징 개발자가 따라야 하는 가이드를 제공 개발할 ..

Framework/Spring 2024.01.16