Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

PyCon 2017 프로그래머가 이사하는 법 2 [천원경매]

1,454 views

Published on

발표 당일에 발표를 결심하는 바람에 아침부터 코엑스로 가는 버스 안에서, 점심 시간과 쉬는 쉬간에 틈틈이 작업하느라 리허설을 한 번밖에 해보지 못해서 발표할 때 거의 슬라이드 노트를 읽다시피 했던 점 넓은 마음으로 양해 부탁드립니다. 마지막 한 문장을 남겨두고 징이 울려서 매우 아쉽네요. 좋은 행사를 만드는데 기여하신 모든 스텝, 발표자 그리고 참가자 분들께 진심으로 감사드립니다. 내년에 또 뵐 수 있었으면 좋겠습니다.

Published in: Software

PyCon 2017 프로그래머가 이사하는 법 2 [천원경매]

  1. 1. 프로그래머가 이사하는 법 2
 천원경매 이야기 변수민 PyCon 2017 라이트닝토크
  2. 2. 프로그래머가 이사하는 법 1 PyCon 2015 프로그래머가 이사하는 법: 대중교통망이 편리한 곳에 집을 얻고자 했던 노력 2년 전, 파이콘에서 이사 후보지의 대중교통망을 시각화 해서
  3. 3. 프로그래머가 이사하는 법 1 PyCon 2015 프로그래머가 이사하는 법: 대중교통망이 편리한 곳에 집을 얻고자 했던 노력 교통이 편리한 곳으로 이사 가고자 시도했던 프로젝트에 대해 발표 했었습니다.
  4. 4. 프로그래머가 이사하는 법 1 • 이사는 무사히 잘 마쳤지만 • 아쉽게도 프로젝트는 더이상 진행되지 않고 있다 • 핑계: 본업이 바쁘다보니 관심에서 멀어지고 새로운 참여자를 구하지 못함 덕분에 이사는 잘 했는데, 결론적으로 프로젝트는 망했어요.
  5. 5. 이사 • 기존 임대차 계약 만료, 재무적 이유 • 출퇴근 시간을 조금 더 줄여보고 싶은 욕망 • 15-20분 ➜ 5분 마침 이번에 임대차 계약이 만료되기도 했고 (집주인은 저를 붙잡았지만),
  6. 6. 이사 출퇴근 시간을 조금 더 줄여보려고 다시 이사를 하게 되었습니다. • 기존 임대차 계약 만료, 재무적 이유 • 출퇴근 시간을 조금 더 줄여보고 싶은 욕망 • 15-20분 ➜ 5분
  7. 7. 문제점: 필요 없는 물건 들을 쌓아놓고 산다 여러분들도 이사를 해보셔서 아시겠지만, 항상 걸림돌이 되는건 사용하지 않는 물건들이죠.
  8. 8. 필요 없는 물건이 있다면 • 중고 장터에 내다 팔거나, • 지역 사회에 기부하거나, • 쓰레기통에 버린다. 그래서 필요 없는 물건은 중고 장터에 내다 팔거나, 지역사회에 기부하거나,
  9. 9. 필요 없는 물건이 있다면 • 중고 장터에 내다 팔거나, • 지역 사회에 기부하거나, • 쓰레기통에 버린다. 그마저도 여의치 않으면 그냥 버립니다.
  10. 10. 저는 미국에서 대학을 다녔었는데, 그때에는 이베이에 물건을 많이 내다 팔았었어요.
  11. 11. 공식적 핑계: 인트라넷의 스크린샷을 외부에 공개하는 것은 회사 보안 규정에 위배됩니다. 사실은: 발표 당일에 슬라이드를 만드는데 OTP가 만료되어 VPN 접속을 못 하고,
 그렇다고 스크린샷 찍으러 회사 갔다오긴 귀찮고. 회사 인트라넷 중고 장터에 내다 팔기 요즘엔 이베이 대신 회사 인트라넷의 장터 게시판에 물건을 팝니다.
  12. 12. 회사 인트라넷 중고 장터에 내다 팔기 주로 전자제품, 외화 현찰, 공연 티켓, 제주산 감귤 같은 것들이 거래되는데, 공식적 핑계: 인트라넷의 스크린샷을 외부에 공개하는 것은 회사 보안 규정에 위배됩니다. 사실은: 발표 당일에 슬라이드를 만드는데 OTP가 만료되어 VPN 접속을 못 하고,
 그렇다고 스크린샷 찍으러 회사 갔다오긴 귀찮고.
  13. 13. 회사 인트라넷 중고 장터에 내다 팔기 가끔은 집이나 차를 거래하는 분들도 계십니다. 공식적 핑계: 인트라넷의 스크린샷을 외부에 공개하는 것은 회사 보안 규정에 위배됩니다. 사실은: 발표 당일에 슬라이드를 만드는데 OTP가 만료되어 VPN 접속을 못 하고,
 그렇다고 스크린샷 찍으러 회사 갔다오긴 귀찮고.
  14. 14. 장점: 믿을만한 고객, 배송과 반품 쉬움
 단점: 손이 많이 감, 가격 책정 어려움 인트라넷 장터 게시판 회사 장터에서 물건을 팔면 서로 신뢰할 수 있어서 좋긴 한데,
  15. 15. 장점: 믿을만한 고객, 배송과 반품 쉬움
 단점: 손이 많이 감, 가격 책정 어려움 인트라넷 장터 게시판 이게 그냥 단순 게시판이다보니 은근히 손이 많이 갑니다.
  16. 16. 너무 비싸게 올리면 안 팔리고,
 너무 싸게 올리면 손해보는 느낌 가격 책정의 어려움 그리고 무엇보다도 가격 책정이 어렵다는 단점이 있습니다.
  17. 17. 너무 비싸게 올리면 안 팔리고,
 너무 싸게 올리면 손해보는 느낌 가격 책정의 어려움 올렸다가 안 팔리면 나중에 또 올려야 돼요.
  18. 18. 경매를 하자 해결책 그래서 제가 떠올린 해결책은 “경매를 하자”.
  19. 19. 그래도 제일 진지하게 원하는 사람이 가져갔으면 좋겠다 이사짐 중에서는 공짜로 줄 수 있는 물건들도 많지만 물론 공짜로 줄 수 있는 물건들도 많지만,
  20. 20. 그래도 제일 진지하게 원하는 사람이 가져갔으면 좋겠다 이사짐 중에서는 공짜로 줄 수 있는 물건들도 많지만 그래도 제일 진지하게 원하는 사람이 가져갔으면 좋겠다는 마음이 있었어요.
  21. 21. 돈을 가장 많이 내는 사람이 가장 진지한 사람 자본주의 사회에서 가장 진지한 사람은 돈을 제일 많이 내는 사람이죠.
  22. 22. 구글 폼(Form)으로 진 행하던 천원경매 사실 예전에도 가끔씩 장터 게시판에서 경매로 물건을 팔긴 했었어요.
  23. 23. 구글 폼(Form)으로 진행하던 천원경매 자동으로 낙찰 가격을 계산 구글 폼에서 입찰을 하면 자동으로 최종 낙찰가가 계산되도록 만들어놨는데
  24. 24. 구글 폼(Form)으로 진행하던 천원경매 • 사람들은 텍스트를 읽지 않음 • 입찰자가 경매 규칙을 이해하지 못해 입찰이 무효화 되는 경우 • Outbid 되었을 경우 알림 받지 못함 • 경매 종료 후 수작업으로 낙찰자에게 가격과 입금 방법 안내 유효하지 않은 입찰에 대한 적절한 피드백을 주는 것이 어렵기도 하고
  25. 25. 구글 폼(Form)으로 진행하던 천원경매 • 사람들은 텍스트를 읽지 않음 • 입찰자가 경매 규칙을 이해하지 못해 입찰이 무효화 되는 경우 • Outbid 되었을 경우 알림 받지 못함 • 경매 종료 후 수작업으로 낙찰자에게 가격과 입금 방법 안내 경매가 끝난 후 낙찰자에게 금액과 입금 방법을 수동으로 안내하는 것도 매우 귀찮은 일이었어요.
  26. 26. 경매 서비스를 만들자 해결책 제 동료가 항상 하는 말이 있는데, “똑같은 일을 세 번 이상 하고 있다면 자동화를 할 때가 온 것이다”
  27. 27. 해결책 그래서 제가 수작업으로 하던 일을 자동으로 해주는 경매 서비스를 만들기로 했습니다. 경매 서비스를 만들자
  28. 28. 천원경매 • 경매 시작가는 무조건 1,000원
 (시장이 충분히 크면 최종 낙찰가는 시장가에 수렴) • 회원 가입이 없이 입찰 • 유효하지 않은 입찰을 시도할 경우 적절한 피드백 • Outbid 되었을 경우 이메일로 알림 • 낙찰되었을 경우 이메일로 낙찰가와 입금 방법 안내 이베이에서는 시작 가격을 비싸게 하면 등록 수수료가 많이 나오기 때문에 항상 99센트에서 시작했어요.
  29. 29. 천원경매 • 경매 시작가는 무조건 1,000원
 (시장이 충분히 크면 최종 낙찰가는 시장가에 수렴) • 회원 가입이 없이 입찰 • 유효하지 않은 입찰을 시도할 경우 적절한 피드백 • Outbid 되었을 경우 이메일로 알림 • 낙찰되었을 경우 이메일로 낙찰가와 입금 방법 안내 그때의 경험도 있고, 프로그램을 최대한 단순하게 만들기 위해서 시작 가격은 무조건 천원으로 고정했습니다.
  30. 30. 섹시한 기술에 대한 열정 Lambda API Gateway React 이왕 만드는거 이렇게 멋진 기술을 사용해보고 싶었어요.
  31. 31. 섹시한 기술에 대한 열정 Lambda API Gateway React 백엔드는 AWS 람다와 API 게이트웨이를 이용해서 구성하고, 프론트엔드는 React로.
  32. 32. 하지만 현실은 팍팍한 일정 하지만 저의 본업이 웹 개발이 아니기도 하고 이사 작업
 예정일 데이트 이사짐
 정리 이사짐
 정리
  33. 33. 하지만 현실은 팍팍한 일정 이사 작업
 예정일 데이트 이사짐
 정리 이사짐
 정리 새로운 것을 배우면서 만든다면 하루 안에 못 끝낼게 뻔하기 때문에
  34. 34. 현실과 타협 • 이미 경험해본 기술을 가지고 • 토요일 하루만에 만들자 그냥 전통적인 방법으로 개발하기로 했습니다.
  35. 35. 상품 설명 먼저, 가장 중요한 상품 설명 페이지는 이렇게 생겼습니다. 경매 진행 상황도 함께 보여줘요.
  36. 36. 상품 설명을 위한 이미지 업로더, WYSIWYG 에디터를 만들 시간이 없다 그런데, 상품 설명을 위한 이미지 업로더와 에디터를 직접 만들기는 싫었습니다.
  37. 37. 적절한 아웃소싱(?) Google Docs BeautifulSoup, requests 상품 설명과 사진 천원경매 5분 간 격 캐 시 그래서 구글 독스로 상품 설명을 만들면 본문만 추출해서 천원경매 서비스에 그대로 보여주도록 만들었습니다.
  38. 38. 입찰 의향서 이름, 이메일, 최고 입찰가 그 다음으로는 입찰 시스템인데,
  39. 39. eBay 경매 시스템 입찰가 ≥ 최종 낙찰가 이것도 이베이의 시스템을 그대로 차용하기로 했습니다.
  40. 40. eBay 경매 시스템 입찰가 ≥ 최종 낙찰가 한가지 흥미로운 점은 입찰가와 최종 낙찰가가 항상 같지 않을 수도 있다는 것입니다.
  41. 41. eBay 경매 시스템 이름 입찰가 시간 Alejandro 1,000 09:28 … … … Jennifer 10,000 14:02 Kevin 20,000 14:03 이게 무슨 말이냐 하면, 제니퍼가 만원에 입찰했고 케빈이 2만원에 입찰한 상태에서 경매가 마감된다면
  42. 42. 최종 낙찰가 20,000 최종 낙찰가는
  43. 43. 20,000 최종 낙찰가 2만원이 아니라
  44. 44. 10,050
 10,000 + 50 최종 낙찰가 2등 입찰가인 만원에 최소 증가폭인 50원을 더한 10,050원이 됩니다.
  45. 45. 최소 가격 증가폭 • 한국 주식거래소의 규칙을 그대로 • 5,000원 미만일 경우 5원 • 10,000원 미만일 경우 10원, • 50,000원 미만일 경우 50원, • … 가격 증가폭은 한국 주식거래소의 규칙을 그대로 가져왔어요.
  46. 46. 이메일 인증 천원경매 AWS SES 입찰자 입찰 확인 코드 경매에 입찰하면 입찰자에게 입찰 확인 코드가 발송되고, 그걸 클릭해야 최종적으로 입찰이 확인됩니다.
  47. 47. 이메일 인증 천원경매 AWS SES 입찰자 입찰 확인 코드 장난 입찰을 막기 위한 최소한의 장치라고 보시면 되겠습니다.
  48. 48. 첫 판매 안 쓰는 물건을 처분 그렇게 해서 실제로 경매를 진행해서 안 쓰는 물건을 처분하기 시작했어요.
  49. 49. 판매자 인터페이스 처음에는 상품 등록 인터페이스를 만들 시간도 없어서 이렇게 명령창에서 상품을 등록해야 했습니다.
  50. 50. 첫 판매자 고객 “나도 팔거 많은데 이거 쓰고 싶다.
 판매자 인터페이스를 만들어주세요!” 그러다가 얼마 전에 첫 번째 판매자 고객을 모시게 되었습니다.
  51. 51. 판매자 인터페이스 만드는 중… 그래서 이렇게 판매자 인터페이스도 만들고 있구요.
  52. 52. 앞으로의 계획 • 사내에서 물건을 사고 팔 수 있는 플랫폼으로 • 결제 자동화 (약간의 매출을 올려볼 기회) 앞으로 시간이 허락한다면 사내에서 물건을 사고 팔 수 있는 플랫폼으로 발전시켜볼 생각입니다.
  53. 53. 앞으로의 계획 • 사내에서 물건을 사고 팔 수 있는 플랫폼으로 • 결제 자동화 (약간의 매출을 올려볼 기회) 결제 모듈 같은걸 붙이면 약간의 매출을 올려볼 기회도 생기겠죠.
  54. 54. 경쟁할 계획 없음 하지만 이건 어디까지나 사내 중고 장터 정도의 포지셔닝이고, 이런 애들과 경쟁할 생각은 없습니다.
  55. 55. 다른 회사에도 퍼트리자 저의 친구들에게 열심히 영업해서 다른 회사 사람들도 사내에서 경매를 할 수 있게 만드는 것도 재밌을 것 같아요.
  56. 56. https://1000won.auction 천원경매 주소는 여기구요,
  57. 57. https://github.com/suminb/auction 코드는 여기에 공개해두었습니다.
  58. 58. https://github.com/suminb/auction 저는 코드를 공개하면 안 되는 이유가 있지 않는 한 항상 코드를 공개하는데,
  59. 59. https://github.com/suminb/auction 여러분들 중 누군가가 제 코드와 아이디어를 가져다가 회사를 차리셔도 좋습니다.
  60. 60. https://github.com/suminb/auction 그럼 전 여기서 해방될 수 있겠지요.
  61. 61. 감사합니다 저의 이야기는 여기까지 입니다. 감사합니다.

×