team logo icon
article content thumbnail

저는 지울 Id가 없으면 418을 주겠습니다. 불만 있으신 분?

라이트닝 토크에서 어그로만 끌다 온 크루가 아쉬워서 작성하는 글


0️⃣ . 라이트닝 토크..?



5월 7일... 갑자기 올라온 하나의 글... 바로 라이트닝 토크 지원자를 모집하는 글이었다.


발표하는 걸 좋아하기도 하고 마침, 테코톡도 한번 더 하고 싶었던 터라

바로 별표를 누르고 어떤 주제를 발표할지 고민하기 시작했다.


금요일 2시.. 당시 이미 수요일 3시 였기 때문에, 테코톡 처럼 무거운 주제는 힘들 것이라고 판단했다.


그리고 떠오른 한가지 생각... 그래.. 어그로를 끌자!


그래서 우테코 한 가운데 공간에서 외쳤다....

저는 지울 Id가 없으면 418을 주겠습니다. 불만 있으신 분?



** 418 : I am a Teapot 으로, IETF 에서 만우절에 장난으로 출판한 RFC2324 - HTCPCP (Hyper Text Coffee Pot Control Protocol) 에서 나온 Status Code


이후 라이트닝 토크 의 실제 주제를 공개했다.



전날까지 정말 아무도 토론에 참여해주지 않을까 걱정되어 PPT 에 이런 내용도 작성했다.


그러나 예상과 다르게 많은 크루들이 참여해주었고,

시간이 너무나도 부족해 하려던 마무리를 제대로 짓지 못해 아쉬운 마음에 글로 작성해

남겨 공유해보려고 한다.

1️⃣ . 지울 때 Id가 없으면 어떤 Status Code 를 주세요?



만약 Delete API 를 구현하려고 했고, 본인이 예외처리에 정말 진심이라고 가정을 해보자.

만약 Delete 를 하려는 Id 혹은 무언가가 존재하지 않을 때,

예외 처리를 할 것인가? 200 을 줄 것인가? 400 을 줄것인가?


이 글을 보고 있는 누군가는 당연히 000 이지; 라고 외치겠지만, 놀랍게도 이 주제는 의견이 정말 많이 갈리는 주제였다.


실무 경험이 있는 개발자들 사이에서도 의견과 주장이 갈려, 그에 맞춰 크루들 사이에서도

이에 대한 의견을 주고 받느라 한동안 떠들썩 했다.


각자 어떻게 주장을 하고 있을까?

2️⃣ . 들어왔던 주장



200 파의 의견


  • Delete 를 해달라고 요청이 들어왔고, 수행하지 않았더라도 결과적으로 삭제된 상태이기 때문에 성공으로 판단해야 한다.

  • 실패400 을 내려주어야 하는데, 결과적으로 성공한 행위에 400 을 주는 경우 클라이언트

    측에서 헷갈릴 가능성이 있다.


400 파의 의견


  • ✅ 유저가 요청한 값이 애초에 없는 것이니 유저는 원하는 값의 삭제를 확인하지 못한 것이다.

    잘못된 요청이라는 응답을 보내야 한다.

  • Delete 는 자원을 삭제하기 때문에 이에 대한 검증은 반드시 해줘야 한다.


정도로 정리가 가능하다. 실제로 나 또한, Palmspring 에서 예외처리를 404 로 해주고 있었다.


이유는 Palmspring 이라는 서비스는 팀 블로그 이고,

블로그를 운영하는 입장에서 무언가를 삭제하는 행위는 굉장히 크리티컬하기 때문이었다.

(글을 한달 내내 작성했는데, 요청하지 않은 글이 삭제되면 화나지 않는가... )


또, 정상적으로 작동되는 줄 알았던 기능에서 잘못된 연결로 인해 이상한 값이 들어가는 경우도

있었기 때문에 이런 경우 빠르게 파악하고 전달하기 위해 예외처리를 해놓기도 했다.


???: 아~ 그래서 너는 400이라고?


3️⃣ . 저는 418이요.



개인적으로 나는 이렇게 생각한다.

해당하는 행위를 성공 으로 볼 것이냐 실패 라고 볼 것이냐는 너무 이분법 적이지 않은가? 🤔


개발이라는 것은 혼자할 수 없고, 응답의 처리에 대한 생각은 클라이언트와 백엔드가 각자 다를 수 있다.

무엇보다 중요한 것은 우리 팀이 어떤 주관을 가지고 어떻게 결정을 내렸는가 라고 생각한다.


StatusCode 를 받는 것도 결국은 우리 팀의 클라이언트와 우리 팀의 서버 아닌가?


그래서 라이트닝 토크의 마지막도

정답은 존재하지 않는다. 오늘의 토론은 200, 400을 정하기 위함이 아닌,

어떤 주장을 가지지 못했던 크루들에게 이런 의견도 있다는 것을 알리고 주관을 갖게 하기 위함이었다.

와 같이 언급하고 마무리 지었다.


418을 주장하는 폴라를 설득해라 를 주제로 한 순간부터 누군가는 눈치챘겠지만

미안하지만 이번 라이트닝 토크의 토론은 정답이 없고, 목표는 주관이 없는 크루였다.


열심히 대답해준 크루들은 이미 충분히 잘 나아가고 있다고 생각한다.


4️⃣ . 고민해 볼 한가지



라이트닝 토크를 준비하던 도중 인상 깊은 글을 하나 발견했다.



데이터가 없을 때 200인가? 400인가? 라는 글인데 하나의 팀에서 어떤 과정으로 생각을 하고

어떤 과정으로 하나의 결론을 내리는지 엿볼 수 있는 좋은 자료라고 생각해 토크 마지막에 공유를 했다.


또, 커리어리에서는 이와 같은 주제로 이야기를 나눈 기록도 있다.


앞으로 레벨 3에 들어간다면 크루들과 함께 프로젝트를 해볼텐데,

이런 의미에서 기술도 좋지만 적극적으로 의견을 낼 수 있는 분위기를 만들 수 있는 크루가 되고 싶다.


다들 잘해보아요~! 사실 나만 잘하면 됨


5️⃣ . 뒷 이야기...



커피챗은 처음 토론에 참여해준 크루와 진행했다. 고마워~~!!~




최신 아티클
Article Thumbnail
Polla
|
2024.10.10
HealthCheck 문제 발생시 Elastic Beanstalk Restart 자동화 하기
HealthCheck 문제가 발생했을 때, 대처할 수 있는 방안을 생각 해보기
Article Thumbnail
Polla
|
2024.05.17
나의 개발 마인드 변화기 (feat. CDN)
우아한테크코스를 다니고 마인드를 바꾼 이야기