천하제일 망함대회 🙉

~ 부제: 성능을 무시한 프로그램의 최후 ~

2019. 11. 14.

Consumer Squad

권 기웅

📚 ToC

  1. 발단
  2. 전개
  3. 위기
  4. 절정
  5. 결말
  6. 교훈

✨ 자기 🐮🐶 (소개라는 뜻 ㅎ)

이름: 권기웅

나이: 32

소속: Consumer Squad

입사일: 2019년 4월 8일

원래 하던거: 기획자 비스무리한거

좋아하는거: 고양이, 커피

🥚 망했다는건 뭘까요?

🥚 망했다는건 뭘까요?

🥚 망했다는건 뭘까요?

내 생각대로 안됐다

(내가 잘못 생각한건 아닐까...?)

🥚 들어가기 전에

홈큐레이션

홈 화면 개편 프로젝트 입니다.

사용자에게 다양한 레스토랑을 여러가지 조건으로 보여줍니다

🥚 발단

원래 비슷한 기능 하는 코드 대충 고쳐쓰면 되겠지?

레스토랑 정보뿐 아니라 사업자 번호도 필요해? DB에서 매번 가져오지 뭐

레스토랑 몇 개나 되겠어 일단 성능은 고려하지 않아도 될거같아

레인이 추가된다고는 하지만 딱히 기약은 없으니까 확장성은 나중에...

망함의 극대화를 위해 다소 과장된 부분이 있습니다...

🥚 전개

라이브 배포 후 테스트

 

1. 홈 화면인데 한숨 자고 일어나면 화면 로딩이 끝날거 같음

2. 레스토랑 데이터가 너무 많아서대용량 외장 하드가 필요할 것 같음

3. 너무 느리니까 앱에서 타임아웃(시간초과로 무시) 내버림

4. 이런식이면 못써요

5. 망했어요

⚡️ 위기

1. 기존 코드와 캐시 데이터는 공유해야 하는데...

2. 레스토랑 목록 받아오는데 기본적으로 0.4~0.5초 걸리는데

3. 모든 응답을 1초 이내로는 끝내야 하는데...

4. 홈 화면이라 트래픽을 그대로 맞을텐데...

5. 이제 슬슬 릴리즈 해야 하는데...

앞으로 어떻게 개선해야 할지 모르겠음

⚡️ 위기

그래도 뭔가 하긴 해야 함

1. 기존 코드와 캐시 데이터는 공유해야 하는데...

 

2. 레스토랑 목록 받아오는데 기본적으로 400~500ms 걸리는데

3. 모든 응답을 1000ms 이내로는 마쳐야 하는데...

4. 홈 화면이라 트래픽을 그대로 맞을텐데...

5. 이제 슬슬 릴리즈 해야 하는데...

레스토랑 개수가 많아서, 직렬화 - 역직렬화 비용이 너무 큼

⚡️ 위기

그래도 뭔가 하긴 해야 함

1. 레스토랑 리스트랑 캐시는 공유해야 하는데...

2. 레스토랑 목록 받아오는데 기본적으로 0.4~0.5초 걸리는데

 

3. 모든 응답을 1000ms 이내로는 마쳐야 하는데...

4. 홈 화면이라 트래픽을 그대로 맞을텐데...

5. 이제 슬슬 릴리즈 해야 하는데...

타겟요 → 레스토랑 리스트 → 필요 없는 필드 추가를 위한 디비 쿼리

→ 데이터 필터링 및 정렬 → 필요없는 업랭크 ...

⚡️ 위기

그래도 뭔가 하긴 해야 함

1. 레스토랑 리스트랑 캐시는 공유해야 하는데...

2. 레스토랑 목록 받아오는데 기본적으로 400~500ms 걸리는데

3. 모든 응답을 1초 이내로 끝내야 하는데...

4. 홈 화면이라 트래픽을 그대로 맞을텐데...

5. 이제 슬슬 릴리즈 해야 하는데...

6개의 스윔레인을 만드는 작업을

최대 0.5초 이내로 끝내보자

⚡️ 위기

그래도 뭔가 하긴 해야 함

1. 레스토랑 리스트랑 캐시는 공유해야 하는데...

2. 레스토랑 목록 받아오는데 기본적으로 400~500ms 걸리는데

3. 모든 응답을 1000ms 이내로는 마쳐야 하는데...

4. 홈 화면이라 트래픽을 그대로 맞을텐데...

5. 이제 슬슬 릴리즈 해야 하는데...

... 이건 어쩔 수 없음 프로젝트 이름이 "홈큐레이션" 임 😭

⚡️ 위기

그래도 뭔가 하긴 해야 함

1. 레스토랑 리스트랑 캐시는 공유해야 하는데...

2. 레스토랑 목록 받아오는데 기본적으로 400~500ms 걸리는데

3. 모든 응답을 1000ms 이내로는 마쳐야 하는데...

4. 홈 화면이라 트래픽을 그대로 맞을텐데...

5. 이제 슬슬 릴리즈 해야 하는데...

필요한 데이터만 데이터베이스에서 가져오고

내가 동작을 잘 모르는 기존코드를 그대로 사용하는건 포기하자

⚡️ 절정

(대충 일정 못 맞추겠다는 짤)

⚡️ 절정

...은 아니고 속도 개선을 위해 플젝 멤버들에게 도와주세요 요청

1. 클라이언트 형님들께서 불필요한 필드 찾아주심

2. 열심히 QA 해주시는 기획/QA 누님들

3. 두뇌 풀가동해서 일단 그럴싸한 방법 찾아냄 (with 상우님)

⚡️ 절정

도와주셨으니 나도 뭔가 해야지...

1. 앱 분리 및 리팩토링

2. 촉박한 QA 시간을 단축하기 위한 빡빡한 테스트 코드

3. 주말 코딩

🍰 결말

도와주셨으니 나도 뭔가 해야지...

1. 앱 분리 및 리팩토링

2. 촉박한 QA 시간을 단축하기 위한 빡빡한 테스트 코드

3. 주말 코딩

🍰 결말

최대 4.5초 걸리던 응답 → 0.7초로 단축

응답크기 900KB → 100KB 로 단축

(아직 부하 테스트는 모름)

🍰 교훈

  1. 매도 먼저 맞는게 낫다. ADR은 빨리 받자
  2. 성능은 나중에라고 생각하다가 큰 코 다친다
  3. 막히는게 있으면 "도움"을 외치자
  4. 코딩을 잘하자
  5. 천하제일 망함대회에서 발표할 일 없도록 하자

이런 것들을 느꼈습니다(아마도)

ADR 설명

큐레이션 프로젝트 설명 추가

천하제일 망함대회에 쓸 망한 슬라이드

By Doon Doon

천하제일 망함대회에 쓸 망한 슬라이드

제1회 천하제일 망함대회

  • 928