[TIL] 최종 프로젝트 (20) - 우다다다 발표일_HTTP Conection을 쓰면 안됩니다.

J쭈디·2025년 3월 17일
0

Sparta_프로젝트

목록 보기
31/35

발표 날 아침, 갑자기 동시성 제어가 발표에서 빠져버렸다는 이야기를 들어버렸다.

(눈 커짐) 네?

들어보니 Redis는 정합성에 문제가 없지만 동기화를 할 때는 정합성이 제대로 들어가질 않았다는 게 이유였다. 음...? 이미 저번에 Redirect 예외처리를 할 때 페이지가 제대로 안 되면 아예 조회 수를 집계하지 않게 한다고 이야기 했는데 그걸 부하테스트를 돌렸다는 모양이다.

그럴 수 있지... 일단 발표에서 빠진다는 얘기에 멘붕이 와서 튜터님들께 헬프를 요청했고, 결국 내가 저번에 만든 예외처리문 중에 리다이렉트 전에 GET 메서드로 요청을 보내는 걸로 연결 여부를 확인하는 로직을 짜버렸기 때문에 문제가 생긴거였다.

아무튼 그리하여 해당 메서드를 지워버리는 걸로 겨우 어찌어찌 수습을 했다. 사실 메서드를 사용할 때 공부를 제대로 안 한게 큰 원인이었던 거 같다.
코드를 하나하나 톺아봐야 했는데, 그저 구현하기 급급했던 거 같아서 오늘도 반성을 한다.

        try {
            HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();
            connection.setRequestMethod("GET");
            connection.setConnectTimeout(3000);
            connection.setReadTimeout(3000);

            int statusCode = connection.getResponseCode();
            return statusCode >= 200 && statusCode < 400; // 200~300대에서는 true 반환
        } catch (IOException e) {
            return false; // 페이지가 존재하지 않으면 false 반환
        }

나는 이 코드가 실제로 HTTP Connection에 직접 연결이 되는 로직인 걸 몰랐단 게 큰 문제였다.

그리하여 이 코드를 빼고, 페이지가 연결되는지 여부를 확인하는 건 프론트의 역할이라는 것을 알게 되었다.

profile
언제 어느 위치에 있더라도 그 자리의 최선을 다 하는 사람이 되고 싶습니다.

0개의 댓글