brunch

You can make anything
by writing

C.S.Lewis

by DaeHyun Kim Aug 10. 2024

초짜 파이썬 개발자가 서비스 만든 썰 푼다 -05-

과거의 망령은 빨리 몰아낼수록 좋다

0. 웹 개발자들에겐 아주 유명한 개그가 있다.

서버에서는 200을 응답했는데, 실제 그 안을 뜯어보면 에러코드가 있거나 의미없는 텅 빈 배열이 있거나 하는 케이스에 대한 것이다.


1. 웹 표준대로라면 비어있는 값은 200으로 전달되어서는 안된다. 서버에서 발생한 예외도 500으로 응답하거나 아니면 예외처리를 해서 개발팀 내 합의된 값-200을 제외한-으로 응답하던가 해야 한다. 서버가 응답은 200으로 했는데 그 안에 들어있는 값이 Request에 대응하는 적절한 Response가 아니라면 Client에서는 혼돈과 불필요한 코드, 예외처리 등등이 일어날수 밖에 없다.


.....그런데 왜 난 프로젝트 초기에 이런 멍청한 짓을 반복한 것일까.

일단 욕심 때문은 아닙니다.

 2. 이전에 사용하던 PHP 기반 프레임웍인 CodeIgniter2의 경우, 아래와 같은 코드가 가능하다.(생각해보니 PHP는 다 가능할듯)

<html>
    // 잡다구리한 HTML
    <div>
        <?php
            render_cart_list(member_id); // 카트에 담긴 아이템 리스트
        ?>
    </div>
    // 역시 잡다구리한 HTML
</html>

여기서 cart에 담긴 것이 아무것도 없다고 가정해보자. 제대로 된 서버쪽 코드라면 당연히 404로 응답해야 맞다.

하지만 이런 코드에서는 어떠한 경우에서도 서버는 200 이외의 값을 반환해서는 안된다. 에러를 응답하게 되면 html페이지 중간에 에러코드가 출력되거나 코드에 따라 페이지 렌더링을 망가트릴수 있다. 그런 케이스를 피하기 위해 render_cart_list는 무조건 200을 응답해야 한다.

물론, 200이외의 값은 예외로 핸들링 하는 방법도 고려할수 있겠지만 이런 호출 포인트나 페이지가 많아지면 예외 핸들링 코드가 여기저기 굴러다니게 되고, 안그래도 html과 php코드가 같이 붙어있어 잔뜩이나 가독성이 떨어지는데 기름을 붓는 꼴이 된다. 그럴바엔 차라리 항상 200을 리턴하게 하고 서버단에서 비어있는 값에 대해서 적절하게 핸들링하는게 속 편하다. 선택과 집중이랄지.


3. 예전에는 이런것을 제대로 이해하지 못해 어딘가의 기술면접에서 잠꼬대 같은 대답을 한적도 있다. 지금 생각하면 부끄러운 일이다. 하지만 더 부끄러운것은 백엔드와 프론트엔드가 서로 완벽하게 분리되서 Rest API로 통신하는데 저래 코딩하는 버릇이 남아있다는 사실이 아닐까.

그러게 왜그랬누


이정도로 했으면 바보짓을 충분히 한거 같은데 과연 그럴까.

정말로 그랬으면 이 자아비판 시리즈는 시작도 안했을거여....

작가의 이전글 초짜 파이썬 개발자가 서비스 만든 썰 푼다 -04-
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari