의사 결정 1.DB 결정 (RDB vs NoSql, RDB 중 MySQL)

[배경]

라이엇 API가 특수하다보니 데이터를 가져올 때 어떤 데이터 베이스로 해야 할지 결정해야 했습니다

[요구사항]

1.라이엇 api에서 제공하는 데이터 구조(소환사, 게임 기록, 챔피언 정보 등)에 적합할 것

2.트랜잭션을 지원하고 데이터 일관성 보장할 것

3.데이터가 많아도 스케일링이 용이할 것

[선택지]

1.관계형 데이터 베이스(MySQL, PostgreSQL, MariaDB)

2.NoSQL 데이터 베이스(MongoDB, Cassandra, DynamoDB)

[의사결정/사유]

관계형 데이터 베이스 선택하고 그 중에 MySQL을 선택하여 구현

관계형 데이터 베이스의 경우, 데이터의 구조가 명확한 정형화된 데이터 구조로 저장 및 조회가 가능하고 SQL을 통해 복잡한 조인, 집계 및 트랜잭션 관리가 용이하기 때문에 라이엇 api의 데이터 구조와 맞고 데이터 일관성 유지에도 좋아서 선택했습니다

그 중에서 MySQL, PostgreSQL 중에 MySQL을 선택한 이유는 MySQL은 읽기 성능이 뛰어나며 트랜잭션 처리, 스케일링도 용이하고 대중적으로 널리 사용되기 때문에 최종적으로 선택하였습니다

의사 결정 2. 스프링 이벤트 큐(Spring Event Queue)

[배경]

라이엇 API는 요청 횟수 제한을 하기 때문에. API 호출 횟수요청의 빈도를 제어하는 기능을 제공하하는 기능이 필요했습니다

[요구사항]

1.요청을 일정 시간 내에 제한된 횟수만큼 처리할 것

2.과도한 요청이 있을 경우, 자동으로 대기하거나 재시도 할 것