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

More Related Content

What's hot

[pgday.Seoul 2022] POSTGRES 테스트코드로 기여하기 - 이동욱
[pgday.Seoul 2022] POSTGRES 테스트코드로 기여하기 - 이동욱[pgday.Seoul 2022] POSTGRES 테스트코드로 기여하기 - 이동욱
[pgday.Seoul 2022] POSTGRES 테스트코드로 기여하기 - 이동욱PgDay.Seoul
 
Node.js Tutorial for Beginners | Node.js Web Application Tutorial | Node.js T...
Node.js Tutorial for Beginners | Node.js Web Application Tutorial | Node.js T...Node.js Tutorial for Beginners | Node.js Web Application Tutorial | Node.js T...
Node.js Tutorial for Beginners | Node.js Web Application Tutorial | Node.js T...Edureka!
 
AWS 신규 데이터 분석 서비스 - QuickSight, Kinesis Firehose 등 (양승도) :: re:Invent re:Cap ...
AWS 신규 데이터 분석 서비스 - QuickSight, Kinesis Firehose 등 (양승도) :: re:Invent re:Cap ...AWS 신규 데이터 분석 서비스 - QuickSight, Kinesis Firehose 등 (양승도) :: re:Invent re:Cap ...
AWS 신규 데이터 분석 서비스 - QuickSight, Kinesis Firehose 등 (양승도) :: re:Invent re:Cap ...Amazon Web Services Korea
 
Airflow를 이용한 데이터 Workflow 관리
Airflow를 이용한  데이터 Workflow 관리Airflow를 이용한  데이터 Workflow 관리
Airflow를 이용한 데이터 Workflow 관리YoungHeon (Roy) Kim
 
[pgday.Seoul 2022] 서비스개편시 PostgreSQL 도입기 - 진소린 & 김태정
[pgday.Seoul 2022] 서비스개편시 PostgreSQL 도입기 - 진소린 & 김태정[pgday.Seoul 2022] 서비스개편시 PostgreSQL 도입기 - 진소린 & 김태정
[pgday.Seoul 2022] 서비스개편시 PostgreSQL 도입기 - 진소린 & 김태정PgDay.Seoul
 
스프링 시큐리티 구조 이해
스프링 시큐리티 구조 이해스프링 시큐리티 구조 이해
스프링 시큐리티 구조 이해beom kyun choi
 
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]MongoDB
 
5 things you didn't know nginx could do
5 things you didn't know nginx could do5 things you didn't know nginx could do
5 things you didn't know nginx could dosarahnovotny
 
검색엔진이 데이터를 다루는 법 김종민
검색엔진이 데이터를 다루는 법 김종민검색엔진이 데이터를 다루는 법 김종민
검색엔진이 데이터를 다루는 법 김종민종민 김
 
AWS 기반 대규모 트래픽 견디기 - 장준엽 (구로디지털 모임) :: AWS Community Day 2017
AWS 기반 대규모 트래픽 견디기 - 장준엽 (구로디지털 모임) :: AWS Community Day 2017AWS 기반 대규모 트래픽 견디기 - 장준엽 (구로디지털 모임) :: AWS Community Day 2017
AWS 기반 대규모 트래픽 견디기 - 장준엽 (구로디지털 모임) :: AWS Community Day 2017AWSKRUG - AWS한국사용자모임
 
[넥슨] kubernetes 소개 (2018)
[넥슨] kubernetes 소개 (2018)[넥슨] kubernetes 소개 (2018)
[넥슨] kubernetes 소개 (2018)용호 최
 
How to build massive service for advance
How to build massive service for advanceHow to build massive service for advance
How to build massive service for advanceDaeMyung Kang
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDBMike Dirolf
 
Elasticsearch 한글 형태소 분석기 Nori 노리
Elasticsearch 한글 형태소 분석기 Nori 노리Elasticsearch 한글 형태소 분석기 Nori 노리
Elasticsearch 한글 형태소 분석기 Nori 노리종민 김
 
Découverte de Elastic search
Découverte de Elastic searchDécouverte de Elastic search
Découverte de Elastic searchJEMLI Fathi
 
Introduction to Node js
Introduction to Node jsIntroduction to Node js
Introduction to Node jsAkshay Mathur
 
Mongoose: MongoDB object modelling for Node.js
Mongoose: MongoDB object modelling for Node.jsMongoose: MongoDB object modelling for Node.js
Mongoose: MongoDB object modelling for Node.jsYuriy Bogomolov
 

What's hot (20)

[pgday.Seoul 2022] POSTGRES 테스트코드로 기여하기 - 이동욱
[pgday.Seoul 2022] POSTGRES 테스트코드로 기여하기 - 이동욱[pgday.Seoul 2022] POSTGRES 테스트코드로 기여하기 - 이동욱
[pgday.Seoul 2022] POSTGRES 테스트코드로 기여하기 - 이동욱
 
Node.js Tutorial for Beginners | Node.js Web Application Tutorial | Node.js T...
Node.js Tutorial for Beginners | Node.js Web Application Tutorial | Node.js T...Node.js Tutorial for Beginners | Node.js Web Application Tutorial | Node.js T...
Node.js Tutorial for Beginners | Node.js Web Application Tutorial | Node.js T...
 
AWS 신규 데이터 분석 서비스 - QuickSight, Kinesis Firehose 등 (양승도) :: re:Invent re:Cap ...
AWS 신규 데이터 분석 서비스 - QuickSight, Kinesis Firehose 등 (양승도) :: re:Invent re:Cap ...AWS 신규 데이터 분석 서비스 - QuickSight, Kinesis Firehose 등 (양승도) :: re:Invent re:Cap ...
AWS 신규 데이터 분석 서비스 - QuickSight, Kinesis Firehose 등 (양승도) :: re:Invent re:Cap ...
 
Airflow를 이용한 데이터 Workflow 관리
Airflow를 이용한  데이터 Workflow 관리Airflow를 이용한  데이터 Workflow 관리
Airflow를 이용한 데이터 Workflow 관리
 
[pgday.Seoul 2022] 서비스개편시 PostgreSQL 도입기 - 진소린 & 김태정
[pgday.Seoul 2022] 서비스개편시 PostgreSQL 도입기 - 진소린 & 김태정[pgday.Seoul 2022] 서비스개편시 PostgreSQL 도입기 - 진소린 & 김태정
[pgday.Seoul 2022] 서비스개편시 PostgreSQL 도입기 - 진소린 & 김태정
 
스프링 시큐리티 구조 이해
스프링 시큐리티 구조 이해스프링 시큐리티 구조 이해
스프링 시큐리티 구조 이해
 
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
 
Express JS
Express JSExpress JS
Express JS
 
5 things you didn't know nginx could do
5 things you didn't know nginx could do5 things you didn't know nginx could do
5 things you didn't know nginx could do
 
검색엔진이 데이터를 다루는 법 김종민
검색엔진이 데이터를 다루는 법 김종민검색엔진이 데이터를 다루는 법 김종민
검색엔진이 데이터를 다루는 법 김종민
 
AWS 기반 대규모 트래픽 견디기 - 장준엽 (구로디지털 모임) :: AWS Community Day 2017
AWS 기반 대규모 트래픽 견디기 - 장준엽 (구로디지털 모임) :: AWS Community Day 2017AWS 기반 대규모 트래픽 견디기 - 장준엽 (구로디지털 모임) :: AWS Community Day 2017
AWS 기반 대규모 트래픽 견디기 - 장준엽 (구로디지털 모임) :: AWS Community Day 2017
 
[넥슨] kubernetes 소개 (2018)
[넥슨] kubernetes 소개 (2018)[넥슨] kubernetes 소개 (2018)
[넥슨] kubernetes 소개 (2018)
 
How to build massive service for advance
How to build massive service for advanceHow to build massive service for advance
How to build massive service for advance
 
NGINX Plus on AWS
NGINX Plus on AWSNGINX Plus on AWS
NGINX Plus on AWS
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDB
 
Elasticsearch 한글 형태소 분석기 Nori 노리
Elasticsearch 한글 형태소 분석기 Nori 노리Elasticsearch 한글 형태소 분석기 Nori 노리
Elasticsearch 한글 형태소 분석기 Nori 노리
 
Découverte de Elastic search
Découverte de Elastic searchDécouverte de Elastic search
Découverte de Elastic search
 
Introduction to Node js
Introduction to Node jsIntroduction to Node js
Introduction to Node js
 
Flask Basics
Flask BasicsFlask Basics
Flask Basics
 
Mongoose: MongoDB object modelling for Node.js
Mongoose: MongoDB object modelling for Node.jsMongoose: MongoDB object modelling for Node.js
Mongoose: MongoDB object modelling for Node.js
 

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

워프드레스 기반 쇼핑몰 구축 전략
워프드레스 기반 쇼핑몰 구축 전략워프드레스 기반 쇼핑몰 구축 전략
워프드레스 기반 쇼핑몰 구축 전략Jason Bum-Soo Kim
 
장고로 웹서비스 만들기 기초
장고로 웹서비스 만들기   기초장고로 웹서비스 만들기   기초
장고로 웹서비스 만들기 기초Kwangyoun Jung
 
워드프레스 우커머스 쇼핑몰 홈페이지 제작 서비스
워드프레스 우커머스 쇼핑몰 홈페이지 제작 서비스워드프레스 우커머스 쇼핑몰 홈페이지 제작 서비스
워드프레스 우커머스 쇼핑몰 홈페이지 제작 서비스HanJun Lee
 
Room.d 사업계획서 3.0 ver
Room.d 사업계획서 3.0 verRoom.d 사업계획서 3.0 ver
Room.d 사업계획서 3.0 verwkddnjset
 
취향기반의 개인화 서비스를 통한 이커머스 혁신 – 소성운 ZIGZAG 데이터사이언티스트, 강상원 마이셀럽스 대표:: AWS Cloud We...
취향기반의 개인화 서비스를 통한 이커머스 혁신 – 소성운 ZIGZAG 데이터사이언티스트, 강상원 마이셀럽스 대표:: AWS Cloud We...취향기반의 개인화 서비스를 통한 이커머스 혁신 – 소성운 ZIGZAG 데이터사이언티스트, 강상원 마이셀럽스 대표:: AWS Cloud We...
취향기반의 개인화 서비스를 통한 이커머스 혁신 – 소성운 ZIGZAG 데이터사이언티스트, 강상원 마이셀럽스 대표:: AWS Cloud We...Amazon Web Services Korea
 
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018devCAT Studio, NEXON
 
시스템종합설계2조 큐피트
시스템종합설계2조 큐피트시스템종합설계2조 큐피트
시스템종합설계2조 큐피트다정 임
 
피플펀드 웹서비스 성능개선기(+초기 스타트업의 개발방법론) 20171220
피플펀드 웹서비스 성능개선기(+초기 스타트업의 개발방법론) 20171220피플펀드 웹서비스 성능개선기(+초기 스타트업의 개발방법론) 20171220
피플펀드 웹서비스 성능개선기(+초기 스타트업의 개발방법론) 20171220Seomgi Han
 
How to implement your dream 20150427
How to implement your dream 20150427How to implement your dream 20150427
How to implement your dream 20150427Will Kim
 
K모바일발표 120113 남들보다뛰어난앱만들기_공유용
K모바일발표 120113 남들보다뛰어난앱만들기_공유용K모바일발표 120113 남들보다뛰어난앱만들기_공유용
K모바일발표 120113 남들보다뛰어난앱만들기_공유용jinwook shin
 
역삼역, 이마트 AI_v최종.pdf
역삼역, 이마트 AI_v최종.pdf역삼역, 이마트 AI_v최종.pdf
역삼역, 이마트 AI_v최종.pdfDeukJin Jeon
 
[124] 하이브리드 앱 개발기 김한솔
[124] 하이브리드 앱 개발기 김한솔[124] 하이브리드 앱 개발기 김한솔
[124] 하이브리드 앱 개발기 김한솔NAVER D2
 
서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)수보 김
 
201803 파이썬 세미나
201803 파이썬 세미나201803 파이썬 세미나
201803 파이썬 세미나JeongHwan Kim
 
10만 라인, 26280시간의 이야기
10만 라인, 26280시간의 이야기10만 라인, 26280시간의 이야기
10만 라인, 26280시간의 이야기Minyoung Jeong
 
Django 봄은 다시 온다 - Django와 함께 좋은 웹서비스 코드 만들기.pdf
Django 봄은 다시 온다 - Django와 함께 좋은 웹서비스 코드 만들기.pdfDjango 봄은 다시 온다 - Django와 함께 좋은 웹서비스 코드 만들기.pdf
Django 봄은 다시 온다 - Django와 함께 좋은 웹서비스 코드 만들기.pdfKyoung Up Jung
 
Do not use Django as like as SMARTSTUDY
Do not use Django as like as SMARTSTUDYDo not use Django as like as SMARTSTUDY
Do not use Django as like as SMARTSTUDYHyun-woo Park
 
현장에서 사용하는 Software production
현장에서 사용하는 Software production현장에서 사용하는 Software production
현장에서 사용하는 Software productionJinho Yoo
 

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

워프드레스 기반 쇼핑몰 구축 전략
워프드레스 기반 쇼핑몰 구축 전략워프드레스 기반 쇼핑몰 구축 전략
워프드레스 기반 쇼핑몰 구축 전략
 
장고로 웹서비스 만들기 기초
장고로 웹서비스 만들기   기초장고로 웹서비스 만들기   기초
장고로 웹서비스 만들기 기초
 
워드프레스 우커머스 쇼핑몰 홈페이지 제작 서비스
워드프레스 우커머스 쇼핑몰 홈페이지 제작 서비스워드프레스 우커머스 쇼핑몰 홈페이지 제작 서비스
워드프레스 우커머스 쇼핑몰 홈페이지 제작 서비스
 
Room.d 사업계획서 3.0 ver
Room.d 사업계획서 3.0 verRoom.d 사업계획서 3.0 ver
Room.d 사업계획서 3.0 ver
 
취향기반의 개인화 서비스를 통한 이커머스 혁신 – 소성운 ZIGZAG 데이터사이언티스트, 강상원 마이셀럽스 대표:: AWS Cloud We...
취향기반의 개인화 서비스를 통한 이커머스 혁신 – 소성운 ZIGZAG 데이터사이언티스트, 강상원 마이셀럽스 대표:: AWS Cloud We...취향기반의 개인화 서비스를 통한 이커머스 혁신 – 소성운 ZIGZAG 데이터사이언티스트, 강상원 마이셀럽스 대표:: AWS Cloud We...
취향기반의 개인화 서비스를 통한 이커머스 혁신 – 소성운 ZIGZAG 데이터사이언티스트, 강상원 마이셀럽스 대표:: AWS Cloud We...
 
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
 
시스템종합설계2조 큐피트
시스템종합설계2조 큐피트시스템종합설계2조 큐피트
시스템종합설계2조 큐피트
 
피플펀드 웹서비스 성능개선기(+초기 스타트업의 개발방법론) 20171220
피플펀드 웹서비스 성능개선기(+초기 스타트업의 개발방법론) 20171220피플펀드 웹서비스 성능개선기(+초기 스타트업의 개발방법론) 20171220
피플펀드 웹서비스 성능개선기(+초기 스타트업의 개발방법론) 20171220
 
How to implement your dream 20150427
How to implement your dream 20150427How to implement your dream 20150427
How to implement your dream 20150427
 
K모바일발표 120113 남들보다뛰어난앱만들기_공유용
K모바일발표 120113 남들보다뛰어난앱만들기_공유용K모바일발표 120113 남들보다뛰어난앱만들기_공유용
K모바일발표 120113 남들보다뛰어난앱만들기_공유용
 
역삼역, 이마트 AI_v최종.pdf
역삼역, 이마트 AI_v최종.pdf역삼역, 이마트 AI_v최종.pdf
역삼역, 이마트 AI_v최종.pdf
 
수정수정
수정수정수정수정
수정수정
 
[124] 하이브리드 앱 개발기 김한솔
[124] 하이브리드 앱 개발기 김한솔[124] 하이브리드 앱 개발기 김한솔
[124] 하이브리드 앱 개발기 김한솔
 
서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)
 
201803 파이썬 세미나
201803 파이썬 세미나201803 파이썬 세미나
201803 파이썬 세미나
 
10만 라인, 26280시간의 이야기
10만 라인, 26280시간의 이야기10만 라인, 26280시간의 이야기
10만 라인, 26280시간의 이야기
 
Django 봄은 다시 온다 - Django와 함께 좋은 웹서비스 코드 만들기.pdf
Django 봄은 다시 온다 - Django와 함께 좋은 웹서비스 코드 만들기.pdfDjango 봄은 다시 온다 - Django와 함께 좋은 웹서비스 코드 만들기.pdf
Django 봄은 다시 온다 - Django와 함께 좋은 웹서비스 코드 만들기.pdf
 
사업계획서
사업계획서사업계획서
사업계획서
 
Do not use Django as like as SMARTSTUDY
Do not use Django as like as SMARTSTUDYDo not use Django as like as SMARTSTUDY
Do not use Django as like as SMARTSTUDY
 
현장에서 사용하는 Software production
현장에서 사용하는 Software production현장에서 사용하는 Software production
현장에서 사용하는 Software production
 

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

  • 1. Python/Django를 이용한 쇼핑몰 구축 Django Girls Seoul 조영일(Jeffrey@intakefoods.kr) 인테이크 주식회사 / 서울 서초구 명달로 116 6층
  • 2. N 100% Python으로 동작하는 쇼핑몰 https://www.shopintake.com
  • 3. N 보통 개발자들의 생각 요즘 컨텐츠 커머스가 핫하다는데, 우리도 커머스 좀 해봅시다~ 쇼핑몰 좀 만들어주세요.
  • 4. N 하지만 현실은.. 카테고리/제품 페이지 회원가입/로그인 마이페이지 장바구니 결제연동 이벤트/공지사항 고객센터 상품 관리/재고 관리 주문 관리 배송 관리 매출 통계 CMS SMS/이메일 발송 고객 문의 관리
  • 5. N 하지만 현실은.. 카테고리/제품 페이지 회원가입/로그인 마이페이지 장바구니 결제연동 이벤트/공지사항 고객센터 상품 관리/재고 관리 주문 관리 배송 관리 매출 통계 CMS SMS/이메일 발송 고객 문의 관리
  • 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