brunch

You can make anything
by writing

C.S.Lewis

by 오준석 Apr 20. 2017

오버워치 전적검색기 앱 죽였다 살린 삽질기

1. 오버워치 전투정보실 앱을 만들기로 하다

2016년 오버워치 정식버전 런칭에 맞춰서 안드로이드 앱을 만들기로 함. 4년만에 개인 앱 출시기 때문에 새출발하는 마음으로 개발자 계정 부계정으로 만들기로 함.


1. 기획

전적 정보를 확인하는 앱으로 방향을 잡음


2. 기술 검토

일단 블리자드에서 제공하는 API를 알아보니 오버워치는 제공 안 함. 그래서 사설 API 서버를 알아보니 있긴 있다. 출처는 찾아보면 나올 것이고, 일단 이걸로 만들어서 출시하기로 함.
요청이 일정 수가 넘으니 서버가 뻗어 버린다. API 서버를 직접 만들기로 함.


3. API 서버

일단 학원에 있는 라즈베리파이에 Node로 API 서버를 만듦. 데이터는 블리자드 홈피에서 파싱하기로 함.


4. 파싱

노가다의 시작. 약 2주를 꼬박 작업하여 드디어 API를 만들었는데, 한 번에 모든 데이터를 얻으니 JSON이 5만 라인은 된다. 일단 이 데이터를 라즈베리파이에 요청해서 받는데 40초 넘게 걸림.

안드로이드는 10초 이상의 네트워크는 타임아웃 처리 된다.


5. 서버 교체

라즈베리파이가 구려서 데이터 처리가 오래 걸려서 AWS를 기웃 거림.

AWS 에서 EC2 서버 가장 싼 것을 1년 프리티어로 가입해서 쓰기로 함.

EC2 만들고 node 설치하고 하다가, Elastic Beanstalk 라는 걸 발견함.

eb create 로 환경 만들고 git commit 하고 eb deploy 하면 배포 됨.

와! 편하다. 또 이걸 사용하면 오토 스케일링도 되고, 모니터링도 되고 뭔가 좋아 보임.


2. 출시

1. 마케팅

요즘은 마케팅을 해야 앱을 알릴 수 있다고 해서 광고비로 일단 30만원 써 봄.

효과 없음.


2. 프리티어 종료

글은 짧게 썼지만 어느새 1년 프리티어가 종료된다는 메일을 받음.

Elastic Beanstalk 를 사용하면서 느낀 건 가장 사양이 낮은 micro t2 는 서비스를 하기엔 성능이 써 먹을 만 한게 못 된다. 한 단계 위는 내 기준에 비쌈.

이 앱이 한달에 1000원 벌어 주는데, 서버비로 2만원 넘게 나갈 것 같음.


3. 오버인포 서비스 종료

안 될 놈은 버리자는 생각으로 서비스 종료.

플레이 스토어에서 내리고, 서버 다 내림.


3. 부활

학생 중에 한 명이 오버인포 앱을 보고 왔다고 한다. 이걸 만든 사람은 믿을만 하다고 생각되었단다. 그럼 다시 부활 시켜야지.


1. 돈 안드는 서버 찾기

Elastic Beanstalk 는 어쨋든 EC2를 하루종일 켜 놔야 하기 때문에 한달에 2만원 넘게 깨진다. 뭔가 다른게 필요하다. 구글의 Firebase Function으로 파싱하는 함수만 빼자고 판단됨.

서울 리젼의 EC2 가격


2. Firebase Function

Function 베타를 사용해 보기로 하고 코드를 마이그레이션.

뭐지. 다른 node 모듈은 다 돌아가는데, 파싱모듈인 cheerio-httpcli 가 안 된다. 

내가 잘못 한 거겠지. 몇 일 삽집을 함.

안 된다.

공짜 플랜은 안 되는 것 같다. 

Outbound networking이 공짜버전은 Google-only다


Blaze 플랜으로 업그레이드 함.

Firebase 요금제

올렸는데도 안 된다.

다시 공짜 플랜으로 내림.


3. AWS Lambda

비슷한 기능으로 AWS Lambda를 기웃거림. 몇 개월 전에 사실 시도하다 잘 안 되서 접어 놨음.

다시 검토하다 cheerio-httpcli 가 잘 되는 것을 확인 함.

그럼 거의 다 끝났다!! 라고 생각했는데 이놈의 아마존은 문서가 내가 난독증이 있는 건지 못 알아 먹겠다.

어쨌든 삽질을 하다가 lambda 쪽에서 event가 params를 받을 수 있다고 해서 event.params.value 식으로 접근이 안 되어 엄청 삽질했다.

결론은 event.value로 접근 됨...


4. API Gateway

구글 Firebase Function은 함수를 올리면 바로 접근 HTTP 주소가 할당되는데, 아마존은 따로 해야 함.

API Gateway 서비스를 만들어서 람다와 연결함.

여기서 또 리퀘스트 규칙이니 뭐니 해 줄게 많아서 또 삽질함.

일단 잘 연결되어 테스트 하니 잘 됨


5. 문제들

람다는 메모리에 따라 요금이 달라지는데 제일 낮은 128메가로는 처리가 40초 걸린다.

512메가로 올리면 7초 걸림. 일단 10초 안짝으로 끝낼려면 이걸로 해야 됨.

난 512메가


6. 부활

일단 부활 시켰다. 서버리스 아키텍쳐를 구현한 첫 번째 앱이다.

서버리스 아키텍쳐. 소위 이런식의 구성임

24시간 도는 서버는 없고 내 계산대로라면 56000명이 한 달에 한 번씩 사용할 때 까지는 나는 돈이 안 나갈거다.

그 이상이면 과금이 될 거고.

내 계산이 맞을지는 불확실함. AWS는 전에도 엄한곳에서 과금이 된 적이 있어서.

이렇게 오버인포는 부활되었다.


나만 알아먹게 썼지만, 비슷한 삽질한 해 본 사람이라면 힌트는 다 얻을 수 있을 것이다.


7. 오버인포 다운로드

https://play.google.com/store/apps/details?id=com.team_coder.overwatchcic




매거진의 이전글 [파이썬] 버전별로 pip도 다른걸 써야 되더라
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari