-
Indecisivness (군것질팀)
- 많은 기능이 아닌 비기능에 집중💥
- 기간이 짧은 만큼 하나를 똑바로 알아보자
- 이것 저것 해보며 아무거나 기록한다 👋
-
팀원
강병선 BE 김성재 BE -
진행일자
- 2023.05.18 ~ 05.26
- 전반적인 Web Architecture 이해
- 로그인 기능 관련 보안 로직을 설계한다.
- 처리율 제한 장치를 설계하고 작동 방식을 이해한다.
- XSS 스크립트 방어
- JAVA
- Springboot 프레임워크 이용
- MYSQL
- Intellij
- MySQL
- Visual Studio Code
-
User의 정보가 들어있는 데이터베이스가 만약에 해킹당한다면?
- 그 데이터베이스가 해킹당하더라도, 적어도 로그인은 못하게 할 수 있을까?
- User 정보가 들어있는 DB에는 비밀번호를 해싱한 값을 저장한다.
- 해싱한 값을 Decoding할 때 사용되는 salt는 다른 DB에 저장한다.
- 목적
- 규모가 큰 서비스들은 하루 사이에도 엄청나게 많은 요청을 받는다.
- 현 프로젝트에서는 미들웨어의 로드밸런싱 등은 이용하지 않음
- 개발 시간이 너무 적다!!!
- 토큰 버킷 알고리즘으로 사용자의 접근 제한 횟수를 막아보자.
- 토큰 버킷 알고리즘의 작동 방식은 그나마 버스트 요청 처리가 가능하니 사용자도 상대적으로 덜 불편할 거라 생각
- 참고서적 : 가상 면접 사례로 배우는 대규모 시스템 설계 기초
- 4장 -
처리율 제한 장치의 설계
- 4장 -
- 참고서적 : 가상 면접 사례로 배우는 대규모 시스템 설계 기초
- 일정 시간마다 버킷을 생성
- 각 IP마다 버킷 생성
- 각 버킷에 일정 시간마다 토큰을 추가
- 버킷이 비어있을 때 요청이 날아오면 요청을 수행하지 않음
- 장점
- 가독성을 높이고 유지보수가 편리해진다.
- 클라이언트 - 서버 통신 간의 편리성을 제공한다.
- 단점
- 너무 많은 세분화는 오히려 유지보수를 어렵게 할 수 있다.
- 결론
- 적당한 수준에 대해서 서로 합의 후 지정
- RestContollerAdvice를 이용하여 예외를 한 곳에서 깔끔하게 관리한다.
- Runtime Exception 상속도는 아래와 같음.