개인 프로젝트를 진행하면서 겪었던 거에 대하여 작성해보고자 합니다.
현재 메이플스토리의 모든 캐릭터들에 대한 정보들을 가지고, 이에 대한 통계를 보여주는 페이지를 구현하고자 했습니다.
어떻게 했는데?
초기 구상로직은 검색된 유저들에 대한 정보를 기록하는 db에서 서버별, 레벨별로 select로 데이터를 가져와서 처리하고자 했습니다.
그렇게 구현하니 db에서 데이터를 정리해서 가져오는데 6분 정도의 시간이 소요되었습니다.
해당 부분은 문제가 있다고 생각이 들어 해당 데이터들을 미리 저장해두는 db를 구현하고 이에 데이터를 저장하도록 했습니다.
현재까지 로직
- 검색된 유저들에 대한 정보를 가지고 있는 db에 원하는 부분 데이터는 where 조건걸고 가져옴
- 가져온 데이터를 화면에 보여줌
보여지는데 필요한 정보들만 있는 DB를 만들고 select를 위한 index를 만들고 수행했었습니다.
검색된 캐릭터를 기준으로 한다면, 정확하진 통계 데이터를 유저들에게 보여주는 거라고 생각했습니다. 이를 해결하기 위한 여러 방법들을 찾다가 union open api관련해서 수행을 하면 될것이라고 생각했습니다.
현재까지 로직
- 검색된 유저들에 대한 정보를 가지고 있는 db에 원하는 부분 데이터는 where 조건걸고 가져옴
- 가져온 데이터를 저장하는 db를 만들고, select를 위한 index를 만듬
- 해당 로직을 수행하는 bash 스크립트 생성
- 가져온 데이터를 화면에 보여줌
그래서 메이플스토리 open api중에 union 랭킹을 가져오는 api가 존재합니다. 이를 활용해서 통계 로직을 수행하면 다음과 같은 데이터가 제공됩니다.
{
"date": "2026-07-18",
"ranking": 1,
"character_name": "밥먹어친구야",
"world_name": "베라",
"class_name": "도적",
"sub_class_name": "듀얼블레이더",
"union_level": 11667,
"union_power": 1797837051
},
character_name은 본캐 닉네임이고, 이를 캐릭터 정보 검색 open api를 활용하면 7일 이내 접속을 했는지에 대한 정보를 가져올 수 있어, 이를 통한 통계를 추출하고자 했습니다.
현재 모든 정보를 보여주기 위해 가져온 모든 유저 데이터를 기준으로 처리하는 로직을 개선하고자 했습니다.
현재까지 로직
- maplestory union ranking open api를 통해 데이터를 가져옴
- character_name을 user 조회를 통해 7일 이내 접속을 한 유저인지 확인
- 7일 이내 접속을 한 유저에 대한 정보만 db에 저장
- 이에 대한 bash 스크립트 생성
- 가져온 데이터를 화면에 보여줌
가져온 데이터를 기준으로 미리 구분을 해서 따로 저장을 하고, 이 데이터를 보여주는 방식으로 하면 좀 더 개선될거라고 생각했습니다.
총 인구수와 서버별 인구수에 대한 정보를 불러오는데 조건을 건 select문을 통해 가져오고 있어, 속도적으로 문제가 있을거라고 생각했습니다.
그래서, 데이터를 수집 및 정제하는 스크립트에 월드별로 미리 저장하는 by world라는 db를 만들고 이를 저장하도록 한 다음에, 조회하는데 해당 정보만 보여주도록 수행하고자 했습니다.
현재까지 로직
- maplestory union ranking open api를 통해 데이터를 가져옴
- character_name을 user 조회를 통해 7일 이내 접속을 한 유저인지 확인
- 7일 이내 접속을 한 유저에 대한 정보만 db에 저장
- db에 저장된 데이터를 기반으로 world 기준으로 새로운 db에 데이터 저장
- 이에 대한 bash 스크립트 생성
- 가져온 데이터를 화면에 보여줌
결론
해당 내용은 제가 1개의 기능을 구현하기 위해 겪었던 시행착오들을 적어봤습니다.
해당 로직은 현재 최대 4초의 시간이 소요되고, 더 많은 기능들을 제공하기 위하여 로직을 수정하다보면, 더 많은 데이터들이 발생하게 될것이고, 더 많은 시간이 소요될 거라고 생각되어 현재도 개선작업에 있습니다.
'CS > 개인 프로젝트' 카테고리의 다른 글
| Cargo dependency 중복 분석기 SearchRustLib 소개 (0) | 2026.05.02 |
|---|---|
| Rust로 만드는 통신 프로그램 (0) | 2026.04.01 |
| Open Source Issue Searcher (0) | 2026.03.11 |
| 간단한 rest api 통신 확인 EasyPost (0) | 2026.03.09 |
| Versatile Web (0) | 2026.03.01 |
댓글