프로젝트 한걸음 더

정보처리기사 준비하다가 프로젝트 리펙토링 2단계

효건 2025. 8. 1. 13:22

먼저 정리 하기 전 엔티티 구성은 별로였기에 정규화 과정을 했습니다. 또한, api는 데이터베이스를 MongoDB가 코스트 측면에서 유리할것으로 확인했습니다. 왜냐하면 조회능력이 뛰어나고 저장시 mysql보다 정형적이지 않기 때문에 여러가지 api를 가져와서 사용할수있기 때문입니다. 

정리하자면 여러가지 api를 사용해야하기 때문에 범용성 측면에서 MongoDB가 효율적이라고 판단했습니다. 

따라서 유저서비스나 게시판 그리고 댓글은 mysql을 사용하고 api에서 가져오는 정보는 mongoDB를 사용하여 두가지 트랙으로 진행하는것으로 정리했습니다. 

 

따라서 api를 분석해보겠습니다. 

Available resources

Area List one particular area. /v4/areas/{id} - Open
Areas List all available areas. /v4/areas/ - Open
Competition List one particular competition. /v4/competitions/PL - Open
Competition List all available competitions. /v4/competitions/ areas={AREAS} Open
Competition / Standings Show Standings for a particular competition. /v4/competitions/{id}/standings matchday={MATCHDAY}
season={YEAR}
date={DATE}
Open
Competition / Match List all matches for a particular competition. /v4/competitions/{id}/matches dateFrom={DATE}
dateTo={DATE}
stage={STAGE}
status={STATUS}
matchday={MATCHDAY}
group={GROUP}
season={YEAR}
Open
Competition / Teams List all teams for a particular competition. /v4/competitions/{id}/teams season={YEAR} Open
Competition / (Top)Scorers List top scorers for a particular competition. /v4/competitions/{id}/scorers limit={LIMIT}
season={YEAR}
Open
Team Show one particular team. /v4/teams/{id} - Open
Team List teams. /v4/teams/ limit={LIMIT}
offset={OFFSET}
Open
Match Show all matches for a particular team. /v4/teams/{id}/matches/ dateFrom={DATE}
dateTo={DATE}
season={YEAR}
competitions={competitionIds}
status={STATUS}
venue={VENUE}
limit={LIMIT}
Open
Person List one particular person. /v4/persons/{id} - Open
Person / Match Show all matches for a particular person. /v4/persons/{id}/matches dateFrom={DATE}
dateTo={DATE}
status={STATUS}
competitions={competitionIds}
limit={LIMIT}
offset={OFFSET}
Open
Match Show one particular match. /v4/matches/{id}   Open
Match List matches across (a set of) competitions. /v4/matches competitions={competitionIds}
ids={matchIds}
dateFrom={DATE}
dateTo={DATE}
status={STATUS}
Open
Match / Head2Head List previous encounters for the teams of a match. /v4/matches/{id}/head2head limit={LIMIT}
dateFrom={DATE}
dateTo={DATE}
competitions={competitionIds}
Open

이를 기반으로 api 조회의 시간을 필요한 5대리그만 00시에 조회를 하고 라이브 경기는 1분에 한번 조회하는 형식으로 무료플랜에 적합하게 하겠습니다.

 

그러려면 일단 

전체 조회 1회 라이브 조회 각 분당 10회 정도로 6초의 지연시간만 만든다. 이렇게 하면 될듯하다. 

또한, 

다른 api를 보자

https://developer.sportradar.com/

 

Awards List

MLB Awards List provides a list of all MLB awards available in the API.

developer.sportradar.com

여기에서는 실시간 업데이트가 없는 것으로 보이니 하루에 한번 업데이트 하는것으로 하는 것이 좋아 보인다. 

 

자 다음 2단계 -1 에서 직접 코딩에 들어가보도록 하자