콘텐츠로 건너뛰기

클로드 코드와 함께 각종 문제 처리하기

클로드 코드와 함께 각종 문제를 처리한 기온별 옷차림 | 오늘 뭐 입지?

클로드 코드와 각종 문제를 처리한 기온별 옷차림 | 오늘 뭐입지

문제 해결했을 때마다 그때 그때 적어놓을 걸 하는 아쉬움이 있긴 한데, 그래도 지금이라도 쓰는 게 어디야 하면서 문제 해결하면서 생각나는 부분을 최대한 써본다. 그때 그때 써놨으면 좀 더 자세하게 원인부터 과정, 결과까지 좀 더 디테일하게 쓸 수 있었을텐데 그때는 문제 해결에 집중하느라 그런 생각을 전혀 못했다. 이것도 일종의 회고인데, 미루지 말고 좀 제때 제때 해야겠다. 그래야 더 생생한 기억을 바탕으로 더 많은 것을 생각할 수 있으니.

지금 생각나는 가장 큰 문제 중 하나는 바로 로딩시간이었다. 로딩 시간이 걸려도 너무 오래 걸렸다. 이 시대에 느린 사이트는 용납이 안된다 정말. 그래서 원인과 해결 방법을 클로드와 파기 시작했다. 강의에서 배운 것들 중 가장 도움이 되었던 2개는 바로 작업을 시키지 말 것, 그리고 컨텍스트를 사실 기반으로 파악하게 할 것. 이 2가지였다. 그래서 클로드에게 “코드 베이스 기반으로 현황을 파악한 다음에, 로딩 속도가 오래 걸리는 문제의 원인을 찾고 이를 해결할 수 있는 방안을 우선 플래닝해줘” 이런 식으로 운을 띄우면서 문제 해결의 실마리를 찾아나갔다. 그리고 잘 이해가 되지 않는 부분이나 반박할 부분이 있으면 바로 말하면서 계속 플래닝을 깎아 나갔다.

맨 처음의 속도 이슈는 캐싱이 하나도 안되어 있어서 매번 새롭게 API를 불러오느라 속도가 느린 것이었는데, 기상청 API가 또 막 좋지 않아서 더 오래 시간이 걸렸던 것 같다. 그래서 캐싱을 적용하고 로컬에서 테스트를 계속 반복하면서 클로드에게 “이건 왜 느려? 이번엔 또 왜 느려?” 이런 식으로 질문을 해나가면서 문제를 풀어나갔던 것 같다. 나중에 알고보니 캐싱 문제만은 아니긴 했다. 이때는 캐싱에 꽂혀서 캐싱 문제를 해결하느라 시간을 다 썼고, 1차적으로 캐싱을 통해서 속도를 그나마 좀 빠르게 했었다. 그래도 만족할 만한 속도는 아니긴 했으나, 캐싱은 적용했고, 다른 문제를 또 파봐야 할 것 같아 여기서 마무리를 했다.

또 위치가 정확하게 맞지 않는 이슈가 있었다. 예를 들면 내가 삼각지역에 있는데 현 위치가 서울역으로 나오는 그런 문제. 삼각지역이랑 서울역이랑 뭐 거리 차이가 크지는 않은데 또 이게 정확한 정보를 보여줘야 하는 앱이다 보니까, 또 다른 앱들의 정확성이 너무 높다보니까 이런 오차는 꼭 해결해야겠다는 생각을 했다. 정확한 위치 정보가 나오지 않았던 이유는 대기 정보 API도 쓰고 있었는데, 이 대기 정보 API가 현 위치에서 가장 가까운 대기 관측소의 위치를 보여줘서 그랬던 것이었다. 나 같은 경우에는 가장 가까운 대기 정보 관측하는 곳이 서울역이었던 것이고.

그래서 이걸 어떻게 해결할까 하다가 카카오맵 혹은 네이버 지도 API를 써야겠다는 생각을 했다. 이전에 회사에서 네이버 지도 API를 통해 지도를 구현한 적이 있어서 이게 생각났다. 네이버는 지도 API가 유료였었나,, 그랬던 거 같고, 카카오는 무료여서 바로 카카오맵 API를 사용했다. 확실히 카카오맵을 쓰니까 위치가 동까지 정확하게 표시가 됐다. 외부의 또 다른 무료 API를 활용해서 문제를 해결한 건데, 평소에 많이 생각하는 “어떻게든 문제를 해결하기만 하면 됐지”의 느낌이 들었다.

저는 정말 열심히 하고 있습니다

근데 속도 이슈가 완전히 해결된 상태가 아니라서, 속도 이슈를 다시 테스트 해봤다. 어쩔 때는 그래도 나름 빨리 되는데, 어쩔 때는 너무 느려서 이거 진짜 성능 개선 안하면 진짜 못쓰는 서비스가 되겠다 싶었다. 크리티컬한 속도 이슈를 만들었던 이유는 여러가지 API를 직렬로 부르고 있어서 그랬던 것이다. 그래서 한 API에서 응답이 늦게 오면, 다른 API들의 응답도 느려지고, 그러다보니 서비스가 완전히 로딩되기까지의 속도가 엄청 느려지는 것이었다.

그래서 우선 API들의 처리를 병렬로 바꾸고, 또 가장 API 응답이 늦는 것이 대기오염 정도였나 그랬을 거다. 있어야 하는데, 막 가장 중요한 정보는 아니기도 하고 또 하단에 있는 정보라서, 다른 부분들을 먼저 보여주고 로딩이 완료되는대로 보여주는 것으로 변경했다. 그러니까 훨씬 속도가 나아졌다. 이 내용을 캐싱 적용할 때 같이 파악했으면 좋았겠지만, 이제라도 파악한게 어디냐 싶었다. 그리고 이 것을 통해 클로드에게 코드 베이스로 알려줘 라고 하더라도 모든 원인과 영향범위를 다 파악해서 찾아주지는 못한다는 것을 깨달았다. 그래서 반복적으로 물어봐야겠구나, 또 내가 지식이 많아야 어느 부분을 봐줘 라고 명확하게 지시를 내릴 수 있겠구나, 그러려면 아는 게 많아야 하고 아는 게 많기 위해서는 공부를 계속 해야겠구나 라는 생각을 했다.

사실 문제가 이것들로 다 깔끔하게 해결되었으면 좋겠지만, IT 서비스라는 게 그렇지 않다는 걸 너무 잘 알기 때문에 한동안은 매일 이런 저런 문제를 대응하느라 정신 없었던 거 같다. 나머지 문제는 다음 글에서.


blog by ash에서 더 알아보기

구독을 신청하면 최신 게시물을 이메일로 받아볼 수 있습니다.

댓글 남기기

저는 정말 열심히 하고 있습니다

blog by ash에서 더 알아보기

지금 구독하여 계속 읽고 전체 아카이브에 액세스하세요.

계속 읽기