Joypia

일반사용자의 콤플레인 본문

PM Story

일반사용자의 콤플레인

Laughing Stone 2020. 10. 20. 17:22
반응형

  막 인터넷상에 쇼핑몰 서비스가 여기저기 생겨나기 시작할 때쯤의 에피소드이다당시 나는 웹에이전시 회사에서 제 2의 개발자 길을 걷고 있었다그동안 파워빌더 코드로 C/S 프로그램 개발을 하고 있었다면, 이 때는 웹 프로그래밍을 하고 있었는데, ASP가 주였고 가끔 PHP Perl 을 다루었다

 

  나는 당시 다른 개발자와는 좀 다른 서비스를 고객에게 제공하고 있었다그전에 파워빌드 코더 였으므로, 관리자 페이지는 파워빌더로 개발하여 별도로 제공했던 것이다사실 당시엔 보안에 대해서는 거의 무방비 이었기에, 나름 웹상에 백도어로 관리자 페이지를 접근하기도 해서 보안에 대한 일부 방안이 되기도 했다 

내 입장에서는 그런 치밀하고 깊은 뜻이나 보안적 측면을 충분히 고려한 적 없고 그냥 개발하기 편해서 였다그러던 중 종가집 김치 사이트에 인터넷 쇼핑 기능을 구현하기를 원했었다당시 다니던 웹 에이전시 회사는 두산그룹 전체의 유지보수를 하고 있었는데, 이 건은 추가 사항이라 별도 계약을 맺고 진행해야만 했다. 

 

  문제는 늘 그렇듯이 없는 예산에 서비스는 해야 하니깐 억지로 사정사정해서 겨우 실비(?)로 진행하기로 했다내가 지금껏 머피의 법칙 비슷한 경험을 갖고 있다면 그것은 '싼 게 비지떡이다'라는 거다싸다고 다르게 코딩하는 것도 아닌데 꼭 문제가 발생한다제값 다 받고 개발하는 것은 거의 이수가 없다. ㅠㅠ

 

  아무튼 깔끔하게 개발을 완료했다사실 그 당시 종가집 김치의 상품은 몇 개 되지 않았고, 금액도 크지 않았기 때문에 서비스 구성도 그리 문제가 되지 않았다결제 부분에 대해서는 당시 데이콤의 지불게이트웨이를 사용해서 처리하였다.

카드정보가 문제가 될 수 있어서 아예 종가집 시스템에 남아있지 않고 승인여부만 다시 주문정보에 업데이트하는 방식을 취했다.

오픈 하는 날 고객 담당자에게 엄청 생색을 내었다도저히 있을 수 없는 금액에 해주는 거라며 거드름을 피웠다.

 

  그런데 문제가 발생했다분명 카드 승인은 났는데, 주문정보가 없는 경우가 발생했다12건이나 발생했다.

원인 파악이 되지 않았다. 분명 코딩이 잘 못 되었다면 모든 주문정보가 남아 있지 않거나 특정한 케이스에만 발생해야 하는데 그게 아니었다금액은 몇 만원 되지 않는 것이지만 그게 문제가 아니었다잘 알다시피 금액이 오가는 것은 그 규모를 떠나서 신뢰가 최우선 아닌가?

일단 내가 종가집 직원인양 주문자에게 일일이 전화해서 다시 주문 내용과 배달지 주소를 받아 수동으로 입력했다그리고 한편으로는 원인을 계속 찾고 있었다피가 말리는 일이었다. 머리가 쭈뼛 서고 스트레스는 말도 못했다2일째 자나가는 날, 종가집 게시판에 글이 하나 올라왔다.

 

  어느 아주머니께서 올리신 내용인데, 친절이 다가 아니다. 시스템을 제대로 동작하게 하는 것이 더 중요하다친절은 그다음에 생각하는 부가기능이다 이런 내용이었다갑자기 한 대 크게 얻어맞은 기분이 들었다. 

 

 

  그날 밤 종가집에서 요청한 것도 아닌데, 주문 및 배송 현황이라는 기능을 만들어 종가집 쇼핑몰 앞에 띄웠다그리고 "만약 주문했는데 다음 주문 현황에 보이지 않으면 연락 바란다"는 메시지도 함께 보이게 했다그리고 아주 무식한 방법으로 디버깅을 해나가기 시작했다라인 하나하나를 지우면서 체크를 하였다.

5일차 되는 날 원인을 알아냈다원인은 너무나도 하찮은 거였다당시 개발자들은 지금도 그렇지만 보통 에러가 나면 시스템에서 표시하는 메시지를 사용자가 직접 보는 게 예의가 아니라고 생각하고 대체 문장이 표시되게 코딩한다. 그 에러 메시지를 뿌리지 마라는 명령과 에러가 뜨면 그 에러 종류에 따라 다른 메시지를 주리라는 명령이 서로 충돌하는 거였다.

 

  두 번째 원인은 온전히 내 잘못이었다요즘은 데이터 타입에 아이덴터티라는 속성이 있어자동으로 레코드가 추가할 때 마다 순차적으로 번호가 증가하지만 당시엔 그런 데이터 타입이 없어 강제로 순차 번호를 발생시켜야 했다, 저장하기 전 지금 현재 최대값을 가져와서 그 값에 1을 더한 값을 저장하는 것이다- 이렇게 설명하면 이해하려나...? ㅠㅠ

그걸 더하라는 것을 SQL 문에 직접 넣어 저장 명령을 할 때 최대값을 구하게 해야 하는데, 입력 값들은 변수로 받을 , 최대값도 같이 산출하여 처리하는 바람에 우연히 같은 시간에 동일 이벤트가 발생하게 된 것이었다.

같은 최대값이 산출되어 둘 중 하나는 입력이 되지 않고 DB 에러가 났는데, 그게 화면에서는 보이지 않고, 무시하라는 명령 때문에 끝까지 스크립트를 실행하게 된 것이다.

 

  지금도 생각해 보면, 분명히 불편을 느낀 사용자가 심한 말로 게시판에 올리고 난리를 칠 수도 있는데 - 요즘 더 심하다, 아예 신상을 털어 공개 망신을 주는 등 인권 문제로 까지 야기되지 않는가오히려 정곡을 찌르는 표현과 절제된 표현이 더 큰 메시지로 다가왔었다지금도 그 메시지를 잊을 수가 없으며, 그 상황을 생각만 해고 끔찍하다.

 

반응형

'PM Story' 카테고리의 다른 글

연계가 많은 프로젝트  (0) 2020.10.20
프로젝트 사고 다발구간  (0) 2020.10.20
전개단계 요구사항 변경관리  (2) 2020.10.19
프로젝트 오픈소스 관리도구 예시  (0) 2020.10.16
개발방법론 유감 2/3  (0) 2020.10.16
Comments