천하제일 망함대회 🙉
~ 부제: 성능을 무시한 프로그램의 최후 ~
2019. 11. 14.
Consumer Squad
권 기웅
📚 ToC
- 발단
- 전개
- 위기
- 절정
- 결말
- 교훈
✨ 자기 🐮🐶 (소개라는 뜻 ㅎ)
이름: 권기웅
나이: 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 로 단축
(아직 부하 테스트는 모름)
🍰 교훈
- 매도 먼저 맞는게 낫다. ADR은 빨리 받자
- 성능은 나중에라고 생각하다가 큰 코 다친다
- 막히는게 있으면 "도움"을 외치자
코딩을 잘하자천하제일 망함대회에서 발표할 일 없도록 하자
이런 것들을 느꼈습니다(아마도)
ADR 설명
큐레이션 프로젝트 설명 추가
천하제일 망함대회에 쓸 망한 슬라이드
By Doon Doon
천하제일 망함대회에 쓸 망한 슬라이드
제1회 천하제일 망함대회
- 907