PENEKhun / springdog

(개발중) 캡스톤 디자인 - SW의 안전성 지원을 위한 서비스형 보안 라이브러리 개발
Apache License 2.0
0 stars 0 forks source link

Write skeleton core code for 'Ratelimit' #7

Closed PENEKhun closed 1 month ago

PENEKhun commented 2 months ago

Memo

Backlog:

In Progress:

Done:

PENEKhun commented 2 months ago

Self Question

Controller 파싱 시기

Runtime

런타임(매핑 빈 등록되는 시기)에 파싱하는 것.

장점

따로 런타임에 정보를 넘기기 위한 코드들이 필요하지 않음 (간편함)

단점

어노테이션 프로세싱

빌드 이전에 파싱함.

장점

빠르고 깔끔함

단점

어노테이션 프로세싱 과정에서 파싱한 정보를 넘기긴 해야되는데... 어떤식으로 넘겨야할지... 고민해 보아야함.

PENEKhun commented 2 months ago

어노테이션 프로세싱 이후에 정보를 어떻게 넘기지?

  1. 어노테이션 프로세싱때 DB를 잠깐 켜서 할까?

    • 어노테이션 프로세싱때 JPA를 띄우기가 흠...
  2. json 파일을 만들거나... (근데 이건 좀 별로인듯)

  3. 그냥 정적 class를 빈으로 등록하는 코드를 생성하는 것 (괜찮은거 같기도) 혹은, application이 띄워졌을때 정보를 디비에 저장하는 코드를 그냥 째로 생성?? 다른 모듈간에 의존성을 낮추는데 많이 도움될거 같음.

PENEKhun commented 2 months ago

그냥 런타임때 컨트롤러 정보를 가져오는 것으로 결정.

PENEKhun commented 2 months ago

API 형상 관리

저장할때, 전체 해쉬를 버전 테이블에서 비교

다르다면, endpoint hash | 다른 정보 endpoint Parameter hash | 다른 정보 해시 정보로 변경 추적(변경테이블에 기록) ACTIVATED_BUT_NEVER_FOUND C, D 추적 완료 후, endpoint 테이블 밀고 다시 데이터 삽입

버전테이블 pk id(date), hash, endpoints_string

변경테이블 pk id(autogener), version_id, change_type(C,D)

PENEKhun commented 2 months ago

TODO:

어느정도 구현되면, 코드정리 할 것 (shared에 너무 몰빵됨..)

PENEKhun commented 1 month ago

그냥 일단 Caffeine으로 프로토타입 만들고, 나중에 ehcache로 변경하자.