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