
시작하기 lol에는 아이언, 브론즈, 실버, 골드, 플레티넘, 다이아몬드, 마스터, 그랜드마스터, 챌린저 9개의 티어가 존재한다. 해당 티어들의 이미지는 라이엇에서 파일 형식으로 제공해준다. 9개의 이미지 파일을 데이터베이스나 s3가 아닌 서버에 저장하여 프론트로 전달하기로 결정 하였다. 이미지의 개수가 정해져있고 적은 이미지 파일을 굳이 디비나 s3에 저장할 이유를 못찾았다. 이미지 파일 생성 정적파일인 static에 각 티어 이미지들을 저장한다. 그 후 main.ts에 다음과 코드를 작성한다. app.useStaticAssets(join(__dirname, '../../', 'static'), { prefix: '/tier', }); 문제 상황 app.useStaticAssets(join(__dirn..

시작하기 데이터 수집, 데이터 분석 프로세스에서는 한개의 RDS 서버를 사용하고 있다. 문제 1. AWS 프리티어 기간이 종료됨에 따라 RDS 과금이 발생하였다. 2. 나는 데이터 분석 EC2 한대도 같이 사용하고 있어서 요금 절약과 rds 실행/중지 자동화를 구현해보려 한다. 1. IAM 사용자 생성 사용자 이름 작성 및 암호 설정 후 다음. 직접 정책 연결 선택 → rds 검색 → fullAccess 선택 후 사용자 생성 액세스 키 생성 2. Amazon Lambda로 함수 생성하기 Lambda에서 사용할 키 생성 액세스 키 / 비밀 액세스 키 다운로드 Lambda 함수 생성 RDS 조작 코드 생성 aws-sdk패키지 사용, IAM에서 생성한 액세스키 입력 후 RDS 인스턴스 생성. RDS 실행 / ..

Error 테스트 하기 champ의 데이터를 제공하는 api에서 데이터베이스에 존재하지 않는 챔피언id로 요청을 보낼 경우에 대한 예외처리를 테스트를 작성한다. it('getTargetChampion은 존재하지 않는 챔피언id를 받으면 error return?', async () => { let error = null; const Param = { champId: '4', position: 'default', }; try { await service.getTargetChampion(Param); } catch (err) { error = err; } expect(error).not.toBeNull(); }); try catch 문을 이용하여 error가 발생했는지 여부를 not.tobeNull() 메서드..
DTO 리팩토링의 시작 배경 dto를 객체의 타입용도로만 사용하였다. 이후 dto에 대해 알게 되었고 배운 내용을 토대로 현재 프로젝트에 적용해보기로 하였다. dto는 각 계층 간 데이터 통신의 규격이 되는 객체이다. controller → service → repository의 계층에서 데이터 통신을 하려면 각 계층의 dto로 변환해주어야 한다. entity는 데이터베이스와 매핑되는 객체. DB에 접근하는 repository 계층은 entity 객체만 이용되는 것이 바람직하다. Service 계층 프로젝트는 repository 패턴을 적용하고 있다. repository에서 entity 객체를 전달 받아서 service에서 사용할 service 계층의 dto로 변환 후 데이터 연산을 통해 controll..
시작하기 Carryduo 게임 데이터를 분석하기 위해서는 몇가지의 사용자 데이터 수집이 필요하다. 게임 내의 사용자 id, 사용자 puuid, matchid 등이 필요하다. Carryduo는 사용자 티어 중 중간 티어(게임 랭크)인 플레티넘, 다이아몬드 사용자의 데이터를 수집한다. Riot에서 제공하는 api로 플레티넘, 다이아몬드 사용자의 summonerId, puuId, matchId를 차례로 수집 한다. 데이터 수집 프로세스 기존 데이터 수집 프로세스 데이터베이스 연결 테스트용 request 로직실행 - 예외처리를 위해 테스트용으로 riot api에 요청 실행 데이터 수집 로직 실행 스케줄 패키지인 toad-scheduler를 이용해 2시간 30분 마다 실행 하도록 설정 데이터 수집 프로세스 완료 ..

전적 검색 / 갱신 로직 현재 소환사 전적 검색 / 갱신은 여러 riot api를 통해 값을 가져온다. 소환사 이름으로 소환사의 개인 정보(summonerId, puuid,…)를 가져온다. 소환사의 summonerId로 소환사의 전적(win, tier, level, lp…)을 가져온다. 소환사의 summmonerId로 소환사의 모스트 챔피언을 가져온다. 소환사의 puuid로 플레이한 경기의 id인 matchId 10개를 가져온다. 소환사의 matchId로 게임 내 상세 데이터를 가져온다. 여기서 4번이 10개를 가져오면 반복문을 통해 게임내 데이터를 가져온다. 그러므로 소환사 검색 / 갱신은 riot api에 요청하는 양은 14번 정도이다. 그리고 riot에서는 api 요청 제한이 걸려있고 한번 제한이 ..