~ 부제: 성능을 무시한 프로그램의 최후 ~
2019. 11. 14.
Consumer Squad
권 기웅
이름: 권기웅
나이: 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 설명
큐레이션 프로젝트 설명 추가