[Spring] 처리율 제한(Rate Limit)으로 악의적인 공격 차단하기
·
Dev/Spring & JPA
개요KOALA 서비스 회원가입에서는 총 2 가지의 인증이 요구된다.이메일 인증문자 인증 문자 인증은 1 건당 대략 20원 정도 청구된다.만약 누군가 의도적으로 많은 요청을 보내면, 불필요한 요청이 쌓이고 비용이 지불된다.이를 예방하기 위한 처리율 제한 기능을 추가해보자!  처리율 제한(Rate Limit)일정 시간 내에 요청되는 최대 횟수를 제한하는 기술이다.과도한 요청으로 인한 서비스 장애 및 피해를 방지한다. 예시사용자가 5회 이상 잘못된 비밀번호를 입력할 경우, 15분 동안 해당 계정의 로그인 시도를 차단초당 최대 1000명의 사용자가 접속할 수 있도록 제한하며, 초과 시 대기열에 넣거나 "사이트가 과부하 상태입니다"라는 메시지를 표시한 사용자가 특정 API에 1초에 100번의 요청을 보내고자 할 ..
[Spring] HTTP Request Client(webclient, feignclient)
·
Dev/Spring & JPA
개요 HTTP Client에 대해서는 인턴십 때 익히 알고 있었다. 당시 회사 코드는 단순한 MVC 구조가 아니라 모두 HTTP Client 요청을 날렸다.  이때 Webclient를 사용했는데, Asynchronous & Non-blocking으로 리소스 자원의 효율성을 극대화했다. 보통 front → back회사 코드는 front → back → platform  아무튼 그렇게 첫 HTTP Client를 사용했었고.. 이후 KOALA 프로젝트에서 Feign을 접했다. 작년 10월부터 올해 7월, HTTP Client를 사용하며 노션에 정리해둔 내용을 오픈한다...🤗 당시에 feign의 동시성 관련해서 헷갈리는 점이 너무 많았으나, 공식문서와 사례를 읽으면서 모두 정리해봤다!!  1. HTTP Re..
[spring] null 처리를 위한 spring의 Stringutils
·
Dev/Spring & JPA
개요 서버 단 코드를 구현할 때 null 처리를 미리 해주는 것이 중요하다. 특히 요청과 응답에 대한 코드를 모두 작성하면서, 서버 개발자가 미리 null 처리를 잘 해주면 불필요한 트랜잭션을 막을 수 있음을 알게 되었다. 또한 null이 들어오면 안 되는 상황에서 null을 활용함으로써 적절한 예외 처리를 할 수 있고, 버그를 방지할 수 있다. 굳이 강조하지 않아도 기본적으로 중요한 null 처리, java spring 개발자는 이 널 처리를 어떻게 하면 좋을까? Stringutils 문서 를 확인해보면 Stringutils는 spring framework에서 제공하는 String 타입에 대한 메소드다. StringUtils (Spring Framework 6.1.2 API) hasText Check ..
[spring] @Async와 SimpleAsyncTaskExecutor, TaskExecutor 그리고 thread pool
·
Dev/Spring & JPA
@Async Asynchronous excution을 지원하는 스프링 어노테이션이다. 빈에 등록된 함수에 이 하지만 이러한 방식은 @Async 어노테이션을 적용하면 요청을 별도의 스레드(같은 Object data를 공유하는 스레드 중 하나)에서 실행한다. 이러한 Async 동작방식을 적용하여 호출자는 해당 메서드가 완료되는 것을 기다릴 필요가 없다. public interface EmailService { @Async void sendEmail(String template, Map properties); } → 위 예시에서 sendEmail 메소드는 별도의 스레드에서 실행된다. Spring’s @Async annotation, indicating that it should run on a separate..
[Backend] 객체 지향 특징 | 다형성 | 좋은 객체 지향 설계 5 가지 원칙(SOLID) | EJB
·
Dev/Spring & JPA
The hell of EJB…. EJB(Enterprise Java Beans): 자바당 정파 기술 이론은 좋은데 실무적으로 사용하기에 복잡하고 힘들면서, 느리다. Spring(스프링) EJB 컨테이너 대체 Hibernate EJB 엔티티빈 기술을 대체 JPA 새로운 표준 정의 객체 지향 특징 추상화, 캡슐화, 상속, 다형성 객체지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 “객체”들의 모임으로 파악하고자 하는 것이다. 각각의 개체는 메시지를 주고 받고, 데이터를 처리할 수 있다. ⇒ 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 sw 개발에 많이 사용된다. 유연하고, 변경이 용이하다? 레고 블럭 조립하듯이 부품을 갈아 끼우듯이 컴포넌트..
sebinChu
'Dev/Spring & JPA' 카테고리의 글 목록