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.

Python/Django를 이용한 쇼핑몰 구축(2018 4월 Django Girls Seoul)

2018 4월 Django Girls Seoul 세션에서 발표된 자료입니다.

Python/Django를 이용한 쇼핑몰 구축(2018 4월 Django Girls Seoul)

  1. 1. Python/Django를 이용한 쇼핑몰 구축 Django Girls Seoul 조영일(Jeffrey@intakefoods.kr) 인테이크 주식회사 / 서울 서초구 명달로 116 6층
  2. 2. N 100% Python으로 동작하는 쇼핑몰 https://www.shopintake.com
  3. 3. N 보통 개발자들의 생각 요즘 컨텐츠 커머스가 핫하다는데, 우리도 커머스 좀 해봅시다~ 쇼핑몰 좀 만들어주세요.
  4. 4. N 하지만 현실은.. 카테고리/제품 페이지 회원가입/로그인 마이페이지 장바구니 결제연동 이벤트/공지사항 고객센터 상품 관리/재고 관리 주문 관리 배송 관리 매출 통계 CMS SMS/이메일 발송 고객 문의 관리
  5. 5. N 하지만 현실은.. 카테고리/제품 페이지 회원가입/로그인 마이페이지 장바구니 결제연동 이벤트/공지사항 고객센터 상품 관리/재고 관리 주문 관리 배송 관리 매출 통계 CMS SMS/이메일 발송 고객 문의 관리
  6. 6. N 직접 만들고 싶었던 이유
  7. 7. N Why Django? The web framework for perfectionists with deadlines. Core concepts of Django • Ridiculously fast : 낮은 러닝 커브와 빠른 개발 속도 • Fully loaded : 일반적인 웹 개발에 필요한 대부분의 기능 기본 탑재(Batteries Included) • Incredibly versatile : 다양한 용도를 위해 사용 가능
  8. 8. N 이제 만들어 볼까요? - 제품 • Model • 제품과 관련된 정보가 생각보다 많습니다. • 고객Side:상품명/썸네일/상세페이지/제품표기사항/정가/판매가/배송정보/구매후기등 • 물류Side:물류코드/현재재고/안전재고/품절여부등 • 관리자Side:관리코드/판매수량/원가/상품옵션/상품표시순서등 • 하나의 Model 에 다 넣으면 관리가 힘들어 집니다. • 모든 곳에서 참조할 만한 attribute만 핵심 Model로 남기고 기능 단위로 Model을 분리(분리된 모델은 핵심 Model 을 Foreign Key로 참조) • ShopProduct (고객에게표시될제품상세페이지, 상품표기사항등) • ShopProductThumbnail (제품썸네일이미지) • ProductLogisticsInfo (물류코드,재고,품절여부등)
  9. 9. N 이제 만들어 볼까요? - 제품 • View • 쇼핑몰에서는 이미지 처리가 중요합니다. • 특히 제품 썸네일이 중요해요! • sorl-thumbnail : Django 3rd party 이미지 썸네일 라이브러리 • 다양한 image 자르기(cropping) 옵션 • Model, Admin 과 손쉽게 통합 가능 • View와 Template 모두에서 썸네일 생성 가능 • django-storage와 통합하여 사용 가능
  10. 10. N 이제 만들어 볼까요? - 제품 • View • 이미지 서빙 • 페이지 로딩 속도를 줄여야 서비스 이탈률이 줄어듭니다. • 페이지 로딩 속도의 적 : 이미지! => 그런데 한국 쇼핑몰엔 이미지가 많아요. • 이미지 서빙에는 반드시 CDN(Contents Delivery Network)를 적용 • AWS : CloudFront + S3 • Azure : Azure CDN • Google Cloud : Cloud CDN • Django-storages: Django의 static파일들을 손쉽게 위의 CDN과 통합 할 수 있음 42,000 pixel, 이미지33장
  11. 11. N 이제 만들어 볼까요? - 장바구니 • 상품 주문을 위한 시작점 • 핵심 기능 : 상품 담기, 수량 변경, 삭제, 가격 계산 • 생각보다 구현이 귀찮고 까다롭습니다. • Django-carton : 위의 기본적인 기능들을 지원하는 Django 장바구니 App. 사용자가 제작한 제품 Model을 기반으로 동작, 장바구니 내용을 session 에 저장함.
  12. 12. N 이제 만들어 볼까요? - 장바구니 • 쇼핑몰 정책에 따른 배송비 처리 기능 추가 구현 • (로그인 기능이 있을 경우) 장바구니 내용을 보존하기 위해 장바구니 내용을 JSON으로 serialize / deserialize 할 수 있는 기능 추가 구현 • 한 유저의 장바구니 내용은 서로 다른 브라우저/Device 를 불문하고 보존되어야 합니다. (전환율 ↑) • 고객의 장바구니 내역을 분석 할 수 있으면 더욱 좋겠죠? => 장바구니 맞춤형 쿠폰 발송 등
  13. 13. N 이제 만들어 볼까요? – 결제 연동 • 사실은 쇼핑몰 개발 시 가장 까다로운 부분 • 복잡한 국내 온라인 결제 프로세스 (Active-X, Non Active-X, ISP결제, 앱카드 등등) • 대부분의 PG사가 Python SDK 지원하지 않음 • 난해한 개발 메뉴얼 • 테스트가 어려움 • 요즘엔 간편 결제 까지 지원 해야함-복수 결제 대행사 결제 연동을 구현해야하는 문제 (카카오페이, 네이버페이, 페이코 등등) • 결제가 안정적이지 못하면, 소비자는 해당 쇼핑몰을 신뢰 할 수 없음 (전환율↓)
  14. 14. N 이제 만들어 볼까요? – 결제 연동 • 아임포트 직원은 아닙니다만.. 결제 연동 하셔야 한다면 ‘아임포트’ 를 쓰세요. • 개발자 친화적인 매뉴얼 • 복수 결제 대행사 연동 시에도 single code base로 구현 가능 • REST API 형태로 주문 상태를 손쉽게 조회 가능 • Python rest client 도 있음
  15. 15. N 이제 만들어 볼까요? – 관리자 페이지 • 관리자 페이지 UI를 직접 만드는 것 – 귀찮고 생각보다 일이 많습니다. • Django admin site : 어쩌면(!) Django 최고의 기능 • 처음엔 Django Admin 을 최대한 활용하고 필요에 따라 차차 관리자 UI를 만드는 방식을 추천 합니다. • Django model admin 의 수많은 옵션을 제대로 사용하기 • 웬만큼 직접 만든 Admin UI 보다 편리함
  16. 16. N 이제 만들어 볼까요? – 관리자 페이지 • Django Admin Action : Admin에서 기본 제공하는 Action 이외의 Custom Action 을 정의하여 사용하면 유용합니다. Custom Action 을 정의하여 Django Admin 상에서 엑셀 다운로드를 구현한 예시
  17. 17. 이제 만들어 볼까요? – 관리자 페이지 • Django-summernote • 쇼핑몰 관리자는 개발자가 아니기 때문에, 컨텐츠 수정 편집 시 WYSIWYG 에디터 도입이 필요합니다 • Model Field와 Admin 에 쉽게 통합되는 WYSIWYG 에디터 App
  18. 18. 추가하면 좋은 도구들 • Google Analytics E-commerce Plugin • 쇼핑몰엔 반드시 적용해야함! • 제품별 매출 분석 • 쇼핑 행동 분석 • 결제 단계별 이탈률 분석 (제품 상세페이지 -> 장바구니 -> 결제 시작 -> 결제 완료) • Mailchimp • 대량 Email 발송 기능의 경우 직접 개발 시 많은 난관이 존재합니다. (Email RBL/Whitelist등) • 전 세계적으로 가장 성공적인 이메일 마케팅 서비스 • 쇼핑몰 통합 기능으로 고객의 장바구니/구매 내역에 기반한 상세한 고객 타게팅 메일링 가능
  19. 19. 추가하면 좋은 도구들 • Sentry • 실시간 버그 레포팅 도구 • 오류 발생 시 Stacktrace를 포함한 상세한 버그 레포팅을 제공 • Django logger 를 통해 통합 가능 • 이메일/슬랙 등을 통한 알림 기능
  20. 20. 감사합니다. 이 주제와 관련된 좀 더 자세한 발표 자료(PyCon KR 2017) https://www.slideshare.net/druidcho/2017-pycon-kr-djangoaws

×