Today I Lived/항해99

[TIL] 2021.08.27 [항해99 / 82일] 성능이 떨어졌어요

장 상 현 2021. 8. 27.

오늘은?

 

동료들의 피드백 반영, 유저 테스트 반영 계획 & 마무리 일정 회의

 

필요 없는 사진 삭제 기능 구현

 

삽질, 삽질, 삽질, 삽질, 삽질, 삽질, 삽질, 삽질

 

회고

 

"이번에는, 구체적인 설계까지 구상한 후에 구현을 시작해 보세요"

 

그래서 작성했다.

// 필요없는 사진 처리

1. 문제인식

게시글 작성중 첨부한 이미지는 그 즉시 서버에 저장됨

그 상태에서 게시글 작성 취소 시 무의미한 데이터로 남음

서버의 부하를 막기 위해 주기적으로 삭제해야 함


2. 해결방법

node-schedule 사용하여 주기적 실행

작성된 게시글의 img_list 조회 +

이미지가 저장된 폴더 조회 +

두 결과값을 비교하여 게시글에서 사용하지 않는 이미지는 삭제


3. 구체적 설계

util.router -> node-schedule(02:00:00) ( utilController.cleanUp )

util.controller -> cleanUp(  
	1. posts = utilservice.findAllPost
	2. images = fs.readdirSync() // 동기 방식
	3. cleanUpList = posts.filter((x) => !images.includes(x)) // 차집합
)

util.service -> 1. findAllPost( board.findAll )
		2. findAllImage() // 불필요~?

 

뭘 해야 할지 술술 그려진다.

 

어렵지 않아 보인다며 자신감을 드러냈다.

 

응 아니야.

 

다차원 배열은 만만한 녀석이 아니었다.

 

늘 그렇듯이, 이런 삽질을 거친 후

 

구현을 하긴 했는데...

 

시킨 운동을 마치고 돌아온 그분이 황당해하며 말씀하신다.

 

"도대체 왜 그러는 거예요?"

 

"왜 자바스크립트로 C언어를 하는 거예요?"

 

"이 코드 그대로 C로 옮겨도 돌아갈 정도로 low level이네요"

 

.........

 

이게 칭찬이야 욕이야?

 

"리팩터링을 네 번은 해야겠네요."

 

역시 욕인 것 같다.

 

 

 

당연하게도, 구현했을 때부터가 시작인 코드 리뷰를 통한 수정사항이 잔뜩 쌓였다.

 

반복문을 줄이고, 애시당초 배열의 가공을 controller에서가 아닌 service에서 하고 등등!

 

다시금 시간 가는 줄 모르고 매달리며 신나게 괴로워하는 중인데

 

근래 일 평균 네시간만 잔 여파일까?

 

지켜보다가 이런 말을 하신다.

 

"전반적으로 성능이 떨어졌는데, 잠을 잡시다. 효율 있게 해야죠?"

 

성능이 떨어졌댄다...ㅋㅋㅋ

 

너무 재밌어서 졸리지도, 피곤하지도 않은데 확실히 머리가 안 도는 것 같다.

 

마무리를 못 하고 그냥 자는 건 참~ 불편한데

 

시간 사용의 효율성에 대해 깊은 공감을 하니, 일단 자고 마저 하겠다.

 

오늘의 명언

 

시간은 누구에게나 공평하게 주어진 자본금이다. 

 

이 자본을 잘 이용한 사람이 승리한다. 

 

- 아뷰난드

댓글