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

스타트업에서 기술책임자로 살아가기
스타트업에서 기술책임자로 살아가기스타트업에서 기술책임자로 살아가기
스타트업에서 기술책임자로 살아가기Hyun-woo Park
 
코틀린 멀티플랫폼, 미지와의 조우
코틀린 멀티플랫폼, 미지와의 조우코틀린 멀티플랫폼, 미지와의 조우
코틀린 멀티플랫폼, 미지와의 조우Arawn Park
 
Python 테스트 시작하기
Python 테스트 시작하기Python 테스트 시작하기
Python 테스트 시작하기Hosung Lee
 
Airflow를 이용한 데이터 Workflow 관리
Airflow를 이용한  데이터 Workflow 관리Airflow를 이용한  데이터 Workflow 관리
Airflow를 이용한 데이터 Workflow 관리YoungHeon (Roy) Kim
 
스프링 부트와 로깅
스프링 부트와 로깅스프링 부트와 로깅
스프링 부트와 로깅Keesun Baik
 
로그 기깔나게 잘 디자인하는 법
로그 기깔나게 잘 디자인하는 법로그 기깔나게 잘 디자인하는 법
로그 기깔나게 잘 디자인하는 법Jeongsang Baek
 
svn 능력자를 위한 git 개념 가이드
svn 능력자를 위한 git 개념 가이드svn 능력자를 위한 git 개념 가이드
svn 능력자를 위한 git 개념 가이드Insub Lee
 
Mongo DB 성능최적화 전략
Mongo DB 성능최적화 전략Mongo DB 성능최적화 전략
Mongo DB 성능최적화 전략Jin wook
 
SQL Server에서 Django를 추구하면 안 되는 걸까?
SQL Server에서 Django를 추구하면 안 되는 걸까?SQL Server에서 Django를 추구하면 안 되는 걸까?
SQL Server에서 Django를 추구하면 안 되는 걸까?태환 김
 
[215]네이버콘텐츠통계서비스소개 김기영
[215]네이버콘텐츠통계서비스소개 김기영[215]네이버콘텐츠통계서비스소개 김기영
[215]네이버콘텐츠통계서비스소개 김기영NAVER D2
 
코딩 테스트 및 알고리즘 문제해결 공부 방법 (고려대학교 KUCC, 2022년 4월)
코딩 테스트 및 알고리즘 문제해결 공부 방법 (고려대학교 KUCC, 2022년 4월)코딩 테스트 및 알고리즘 문제해결 공부 방법 (고려대학교 KUCC, 2022년 4월)
코딩 테스트 및 알고리즘 문제해결 공부 방법 (고려대학교 KUCC, 2022년 4월)Suhyun Park
 
Amazon Redshift의 이해와 활용 (김용우) - AWS DB Day
Amazon Redshift의 이해와 활용 (김용우) - AWS DB DayAmazon Redshift의 이해와 활용 (김용우) - AWS DB Day
Amazon Redshift의 이해와 활용 (김용우) - AWS DB DayAmazon Web Services Korea
 
[Pgday.Seoul 2020] SQL Tuning
[Pgday.Seoul 2020] SQL Tuning[Pgday.Seoul 2020] SQL Tuning
[Pgday.Seoul 2020] SQL TuningPgDay.Seoul
 
잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다
잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다
잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다Arawn Park
 
Overlapped IO와 IOCP 조사 발표
Overlapped IO와 IOCP 조사 발표Overlapped IO와 IOCP 조사 발표
Overlapped IO와 IOCP 조사 발표Kwen Won Lee
 
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]MongoDB
 
[pgday.Seoul 2022] 서비스개편시 PostgreSQL 도입기 - 진소린 & 김태정
[pgday.Seoul 2022] 서비스개편시 PostgreSQL 도입기 - 진소린 & 김태정[pgday.Seoul 2022] 서비스개편시 PostgreSQL 도입기 - 진소린 & 김태정
[pgday.Seoul 2022] 서비스개편시 PostgreSQL 도입기 - 진소린 & 김태정PgDay.Seoul
 
[Pgday.Seoul 2017] 2. PostgreSQL을 위한 리눅스 커널 최적화 - 김상욱
[Pgday.Seoul 2017] 2. PostgreSQL을 위한 리눅스 커널 최적화 - 김상욱[Pgday.Seoul 2017] 2. PostgreSQL을 위한 리눅스 커널 최적화 - 김상욱
[Pgday.Seoul 2017] 2. PostgreSQL을 위한 리눅스 커널 최적화 - 김상욱PgDay.Seoul
 
대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐
대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐
대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐Terry Cho
 
엘라스틱서치, 로그스태시, 키바나
엘라스틱서치, 로그스태시, 키바나엘라스틱서치, 로그스태시, 키바나
엘라스틱서치, 로그스태시, 키바나종민 김
 

What's hot (20)

스타트업에서 기술책임자로 살아가기
스타트업에서 기술책임자로 살아가기스타트업에서 기술책임자로 살아가기
스타트업에서 기술책임자로 살아가기
 
코틀린 멀티플랫폼, 미지와의 조우
코틀린 멀티플랫폼, 미지와의 조우코틀린 멀티플랫폼, 미지와의 조우
코틀린 멀티플랫폼, 미지와의 조우
 
Python 테스트 시작하기
Python 테스트 시작하기Python 테스트 시작하기
Python 테스트 시작하기
 
Airflow를 이용한 데이터 Workflow 관리
Airflow를 이용한  데이터 Workflow 관리Airflow를 이용한  데이터 Workflow 관리
Airflow를 이용한 데이터 Workflow 관리
 
스프링 부트와 로깅
스프링 부트와 로깅스프링 부트와 로깅
스프링 부트와 로깅
 
로그 기깔나게 잘 디자인하는 법
로그 기깔나게 잘 디자인하는 법로그 기깔나게 잘 디자인하는 법
로그 기깔나게 잘 디자인하는 법
 
svn 능력자를 위한 git 개념 가이드
svn 능력자를 위한 git 개념 가이드svn 능력자를 위한 git 개념 가이드
svn 능력자를 위한 git 개념 가이드
 
Mongo DB 성능최적화 전략
Mongo DB 성능최적화 전략Mongo DB 성능최적화 전략
Mongo DB 성능최적화 전략
 
SQL Server에서 Django를 추구하면 안 되는 걸까?
SQL Server에서 Django를 추구하면 안 되는 걸까?SQL Server에서 Django를 추구하면 안 되는 걸까?
SQL Server에서 Django를 추구하면 안 되는 걸까?
 
[215]네이버콘텐츠통계서비스소개 김기영
[215]네이버콘텐츠통계서비스소개 김기영[215]네이버콘텐츠통계서비스소개 김기영
[215]네이버콘텐츠통계서비스소개 김기영
 
코딩 테스트 및 알고리즘 문제해결 공부 방법 (고려대학교 KUCC, 2022년 4월)
코딩 테스트 및 알고리즘 문제해결 공부 방법 (고려대학교 KUCC, 2022년 4월)코딩 테스트 및 알고리즘 문제해결 공부 방법 (고려대학교 KUCC, 2022년 4월)
코딩 테스트 및 알고리즘 문제해결 공부 방법 (고려대학교 KUCC, 2022년 4월)
 
Amazon Redshift의 이해와 활용 (김용우) - AWS DB Day
Amazon Redshift의 이해와 활용 (김용우) - AWS DB DayAmazon Redshift의 이해와 활용 (김용우) - AWS DB Day
Amazon Redshift의 이해와 활용 (김용우) - AWS DB Day
 
[Pgday.Seoul 2020] SQL Tuning
[Pgday.Seoul 2020] SQL Tuning[Pgday.Seoul 2020] SQL Tuning
[Pgday.Seoul 2020] SQL Tuning
 
잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다
잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다
잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다
 
Overlapped IO와 IOCP 조사 발표
Overlapped IO와 IOCP 조사 발표Overlapped IO와 IOCP 조사 발표
Overlapped IO와 IOCP 조사 발표
 
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
 
[pgday.Seoul 2022] 서비스개편시 PostgreSQL 도입기 - 진소린 & 김태정
[pgday.Seoul 2022] 서비스개편시 PostgreSQL 도입기 - 진소린 & 김태정[pgday.Seoul 2022] 서비스개편시 PostgreSQL 도입기 - 진소린 & 김태정
[pgday.Seoul 2022] 서비스개편시 PostgreSQL 도입기 - 진소린 & 김태정
 
[Pgday.Seoul 2017] 2. PostgreSQL을 위한 리눅스 커널 최적화 - 김상욱
[Pgday.Seoul 2017] 2. PostgreSQL을 위한 리눅스 커널 최적화 - 김상욱[Pgday.Seoul 2017] 2. PostgreSQL을 위한 리눅스 커널 최적화 - 김상욱
[Pgday.Seoul 2017] 2. PostgreSQL을 위한 리눅스 커널 최적화 - 김상욱
 
대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐
대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐
대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐
 
엘라스틱서치, 로그스태시, 키바나
엘라스틱서치, 로그스태시, 키바나엘라스틱서치, 로그스태시, 키바나
엘라스틱서치, 로그스태시, 키바나
 

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