SlideShare une entreprise Scribd logo
1  sur  48
Télécharger pour lire hors ligne
Jongwon Han
Django API Server Unit Test

and Remote Debugging
PyCon Korea 2017
발표자 소개
• 한종원
• Python과 Cloud Infra, Lean/Agile 방법론 그리고 애플의 제품을 사랑.
• 2012년 석사 학위를 마치고, startup을 시작

(이때부터 Python, AWS를 production level에서 사용)
• '의미가 있는 일을, 올바르게 하고 싶다.'
• 경력
• (현) DevOps 전문 스타트업 ‘HB Smith’ 대표
• 택시 O2O 서비스 스타트업 ‘Kanizsa Lab’의 backend server / infra devops 담당
• Cloud computing 전문 스타트업 'A2 company' co-founder (‘KINX’에 인수합병)
• NEXON 'MapleStory 국내 Live Team'에서 DBA, SA로 근무 (산업 기능 요원)
https://www.linkedin.com/in/addnull/
https://hbsmith.io
Startup 경력 = Python 사용 기간
• 발표 대상: 중급 Django API server 개발자
• 발표 순서
• Django API server unit test
• 나의 개발 환경 구축기
• Remote Debugging
• Wrap Up
(예상 발표 시간: 35~40분)
Django API server unit test
Django API server unit test
• Why Django?
• Python 이라서!
• 정형화된 code structure
• 풍부한 troubleshooting 과 사용자 그룹
-> 누가 개발해도 결과가 비슷
https://www.djangoproject.com/
Django API server unit test
• 물론 단점도 많습니다.
• 다소 느리고, 무겁죠.
• 살짝 아쉬운 ORM 최적화.
-> 난 API server만 만들고 싶고,

HTML template 같은 건 안쓰는데…
-> DML은 ORM 한테 맡겨도,

database schema(DDL)는 직접 관리하세요.
Django API server unit test
• 그럼 Django 말고 더 좋은게 있을까요?
-> 그래도 API 개발 기한(due date)을 지키기 위해선,

Django + DRF 만한 것도 없는 것 같아요.
http://www.django-rest-framework.org/
Django API server unit test
• What is Django API server unit test?
• 여기서 말하는 ‘unit’은 각각의 API를 의미
• 즉, unit test는 실제 API call을 해보고

의도한 결과가 나오는지 확인
• 되도록 가능한 모든 API call을 test
-> 실행되지 않는 bug는 bug가 아니다?!?!
Django API server unit test
• API call example
• HTTP method:
• base URL:
• endpoint(path):
• query parameters:
(GET) https://api.example.com/v1/users/?role=admin&status=active
GET, POST, PUT, DELETE …
https://api.example.com/v1
/users/
role=admin&status=active
Django API server unit test
• unit(API) test에서 “의도한 결과”란?
-> 성공(2XX) 뿐만 아니라 일부러 실패(4XX)하는지도 확인
Django API server unit test
• “되도록 가능한 모든” API call test를 위해서
• Django의 in-memory DB:
• DRF의 ‘APITestCase’ Class:
• ‘factory_boy’:
-> 매번 깨끗한 test DB 생성
-> API call template
-> random parameter value generator
https://github.com/FactoryBoy/factory_boy
Django API server unit test
• 오늘 발표에 사용된 code
• API 와 unit test example

• HTTP method:
• endpoint(path):
• query parameters:
GET
/numbers/
start=1&end=2
‘start’와 ‘end’라는 정수 2개 사이에 있는 모든 정수를 반환하는 API
https://github.com/HardBoiledSmith/tabris/tree/master/pycon_kr_2017_addnull
Django API server unit test
• API 와 unit test example (cont.)
Django API server unit test
• API 와 unit test example (cont.)
`
• API 와 unit test example (cont.)
Django API server unit test
• API 와 unit test example (cont.)
Django API server unit test
• unit test 실행 결과
Django API server unit test
• unit test 실행 결과 (cont.)
나의 개발 환경 구축기
나의 개발 환경 구축기
• 저는 Mac OS X 에서 PyCharm으로 개발합니다.

하지만 실제 서버 환경은 AWS의 Amazon Linux죠.

CentOS와는 다르다! CentOS와는!
나의 개발 환경 구축기
• 개발 환경과 실제 서버 환경 차이에서 오는 문제들…
• 그럼 ‘Virtualenv’ 쓰면 어떤가요?
-> Mac OS X에서는 좀 이상하게 동작해요.
-> 그리고 결국 동일한 환경이 아니잖아요.
나의 개발 환경 구축기
• 여기 Vagrant 라는 silver bullet이 있습니다.
• 심지어 Amazon Linux box도 있습니다.
https://www.vagrantup.com/
https://app.vagrantup.com/mvbcoding/boxes/awslinux/
나의 개발 환경 구축기
• 즉, 개발을 위한 Amazon Linux VM을 만들었습니다.
나의 개발 환경 구축기
• ‘Vagrantfile’
https://github.com/HardBoiledSmith/tabris/tree/master/pycon_kr_2017_addnull
나의 개발 환경 구축기
• ‘provisioning.py’
https://github.com/HardBoiledSmith/tabris/tree/master/pycon_kr_2017_addnull
나의 개발 환경 구축기
• Vagrant VM을 개발 환경으로 쓰면,
-> 실제 서버와 거의 동일한 환경을 5~10분만에 구축
-> 개발팀의 모든 개발자가 동일한 환경을 사용
-> 뭔가 개발 환경이 이상해지면, 속편하게 VM 날리고, 새로 VM 생성
misconfiguration
dependency hell
package version conflict
OOM garbage files
Remote Debugging
Remote Debugging
• Why remote debugging?
-> 실제 서버와 거의 동일한 환경을 위해서 Vagrant VM을 쓰지만,
-> PyCharm의 다양하고 편리한 debugger 기능을 쓰고 싶었어요.
Remote Debugging
• Mac OS X에서 실행되는 PyCharm 입장에서

Vagrant VM 안의 Django API server는 딴 세계
Remote Debugging
• PyCharm에서 지원하는 2가지 remote debugging
• Using a remote interpreter
• Using Python Debug Server
-> 기존 source code 수정 불필요 (추천)
-> 기존 source code 수정 필요
Remote Debugging
• PyCharm ‘Using a remote interpreter’ 설정 단계



1. Remote Interpreter



2. Debug Configuration



3. Auto Deployment
Remote Debugging - 1. Remote Interpreter 설정
• 1.1. [preferences] 에서

‘project interpreter’ 검색



1.2. 우측 상단의

톱니바퀴 클릭



1.3. ‘Add Remote’
Remote Debugging - 1. Remote Interpreter 설정
• 1.4. SSH Credentials 입력
Remote Debugging - 2. Debug Configuration 설정
• 2.1. [Run] -> [Edit Configurations]



2.2. 좌측 상단의 ‘+’ 버튼 클릭



2.3. ‘Python’ 선택
Remote Debugging - 2. Debug Configuration 설정
• 2.4. 오른쪽 화면처럼 설정
-> 여기까지만해도, remote debugging

가능합니다.
-> 하지만, local(Mac OS X)에서

Python code를 변경한 내용이

remote debugging에 바로 반영하려면?
Remote Debugging - 3. Auto Deployment 설정
• 3.1. [Tools] -> [Deployment]

-> [Configuration]



3.2. 좌측 상단의 ‘+’ 버튼 클릭



3.3. ‘SFTP’ 선택
Remote Debugging - 3. Auto Deployment 설정
• 3.4. 아래 화면처럼 ‘Connection’ 항목과 ‘Mappings’ 항목 설정
Remote Debugging - 3. Auto Deployment 설정
• 3.6. [Tools] -> [Deployment] -> [Automatic Upload]
• Auto Deployment 결과 예시
-> 이제 local(Mac OS X)에서

Python code를 변경한 내용이

remote debugging에 바로 반영됩니다.
Remote Debugging - Demo
우측 상단에 ‘벌레’
icon 클릭
Remote Debugging - Demo
/numbers/
?start = 1

&end = 10
Remote Debugging - Demo
/numbers/
?start = 10

&end = 1
### QUIZ ###
‘unit test’를 ‘remote debugging’하려면?
Remote Debugging
• Debug Configuration 설정
-> Script parameters에
‘runserver 0.0.0.0:80’ 대신에
‘test -v 3’을 입력
Wrap Up
Wrap Up
• Django API server unit test
• Django + DRF + factory_boy
• 나의 개발 환경 구축기
• Mac OS X + Vagrant(Amazon Linux)
• Remote Debugging
• PyCharm ‘Using a remote interpreter’
Call to Action
• 저희는 API 개발팀을 위한 모니터링 서비스를 만들고 있습니다.

저희의 early bird 고객이 되어주세요.
• 아직 Python Korea FG 가입하지 않으셨다구요?
• 저희 사이트에서 개발팁을 가져가세요!
https://hbsmith.io
https://www.facebook.com/groups/pythonkorea/
https://medium.com/hbsmith
Jongwon Han
감사합니다
addnull@hbsmith.io
010-9166-6855

Contenu connexe

Tendances

Django in Production
Django in ProductionDjango in Production
Django in ProductionHyun-woo Park
 
구글앱엔진+스프링+스프링datajpa+메이븐
구글앱엔진+스프링+스프링datajpa+메이븐구글앱엔진+스프링+스프링datajpa+메이븐
구글앱엔진+스프링+스프링datajpa+메이븐라한사 아
 
Isomorphicspring Isomorphic - spring web seminar 2015
Isomorphicspring Isomorphic - spring web seminar 2015Isomorphicspring Isomorphic - spring web seminar 2015
Isomorphicspring Isomorphic - spring web seminar 2015sung yong jung
 
201803 파이썬 세미나
201803 파이썬 세미나201803 파이썬 세미나
201803 파이썬 세미나JeongHwan Kim
 
[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트Chanwoong Kim
 
Python 으로 Slackbot 개발하기
Python 으로 Slackbot 개발하기Python 으로 Slackbot 개발하기
Python 으로 Slackbot 개발하기성일 한
 
티켓몬스터를 위한 PHP 개발 방법
티켓몬스터를 위한 PHP 개발 방법티켓몬스터를 위한 PHP 개발 방법
티켓몬스터를 위한 PHP 개발 방법Young D
 
[120316] node.js 프로그래밍 5장
[120316] node.js 프로그래밍 5장[120316] node.js 프로그래밍 5장
[120316] node.js 프로그래밍 5장sung ki choi
 
Javascript everywhere - Node.js | Devon 2012
Javascript everywhere - Node.js | Devon 2012Javascript everywhere - Node.js | Devon 2012
Javascript everywhere - Node.js | Devon 2012Daum DNA
 
Ryan Dahl의 Node.js 소개 동영상 해설 by doortts
Ryan Dahl의 Node.js 소개 동영상 해설 by doorttsRyan Dahl의 Node.js 소개 동영상 해설 by doortts
Ryan Dahl의 Node.js 소개 동영상 해설 by doorttsSuwon Chae
 
김찬웅_그룹웨어에 새 에너지를_NDC15
김찬웅_그룹웨어에 새 에너지를_NDC15김찬웅_그룹웨어에 새 에너지를_NDC15
김찬웅_그룹웨어에 새 에너지를_NDC15Chanwoong Kim
 
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안Jeongsang Baek
 
Parse.com 맛보기
Parse.com 맛보기Parse.com 맛보기
Parse.com 맛보기flashscope
 
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기현철 조
 
Vue SSR vs Prerender
Vue SSR vs PrerenderVue SSR vs Prerender
Vue SSR vs PrerenderChangwan Jun
 
ReactJS로 시작하는 멀티플랫폼 개발하기
ReactJS로 시작하는 멀티플랫폼 개발하기ReactJS로 시작하는 멀티플랫폼 개발하기
ReactJS로 시작하는 멀티플랫폼 개발하기Taegon Kim
 
Node.js
Node.jsNode.js
Node.jsymtech
 
서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)수보 김
 
Leadweb Nodejs
Leadweb NodejsLeadweb Nodejs
Leadweb Nodejs근호 최
 

Tendances (20)

Django in Production
Django in ProductionDjango in Production
Django in Production
 
구글앱엔진+스프링+스프링datajpa+메이븐
구글앱엔진+스프링+스프링datajpa+메이븐구글앱엔진+스프링+스프링datajpa+메이븐
구글앱엔진+스프링+스프링datajpa+메이븐
 
Isomorphicspring Isomorphic - spring web seminar 2015
Isomorphicspring Isomorphic - spring web seminar 2015Isomorphicspring Isomorphic - spring web seminar 2015
Isomorphicspring Isomorphic - spring web seminar 2015
 
201803 파이썬 세미나
201803 파이썬 세미나201803 파이썬 세미나
201803 파이썬 세미나
 
[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트
 
Python 으로 Slackbot 개발하기
Python 으로 Slackbot 개발하기Python 으로 Slackbot 개발하기
Python 으로 Slackbot 개발하기
 
Node.js 기본
Node.js 기본Node.js 기본
Node.js 기본
 
티켓몬스터를 위한 PHP 개발 방법
티켓몬스터를 위한 PHP 개발 방법티켓몬스터를 위한 PHP 개발 방법
티켓몬스터를 위한 PHP 개발 방법
 
[120316] node.js 프로그래밍 5장
[120316] node.js 프로그래밍 5장[120316] node.js 프로그래밍 5장
[120316] node.js 프로그래밍 5장
 
Javascript everywhere - Node.js | Devon 2012
Javascript everywhere - Node.js | Devon 2012Javascript everywhere - Node.js | Devon 2012
Javascript everywhere - Node.js | Devon 2012
 
Ryan Dahl의 Node.js 소개 동영상 해설 by doortts
Ryan Dahl의 Node.js 소개 동영상 해설 by doorttsRyan Dahl의 Node.js 소개 동영상 해설 by doortts
Ryan Dahl의 Node.js 소개 동영상 해설 by doortts
 
김찬웅_그룹웨어에 새 에너지를_NDC15
김찬웅_그룹웨어에 새 에너지를_NDC15김찬웅_그룹웨어에 새 에너지를_NDC15
김찬웅_그룹웨어에 새 에너지를_NDC15
 
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
 
Parse.com 맛보기
Parse.com 맛보기Parse.com 맛보기
Parse.com 맛보기
 
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
 
Vue SSR vs Prerender
Vue SSR vs PrerenderVue SSR vs Prerender
Vue SSR vs Prerender
 
ReactJS로 시작하는 멀티플랫폼 개발하기
ReactJS로 시작하는 멀티플랫폼 개발하기ReactJS로 시작하는 멀티플랫폼 개발하기
ReactJS로 시작하는 멀티플랫폼 개발하기
 
Node.js
Node.jsNode.js
Node.js
 
서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)
 
Leadweb Nodejs
Leadweb NodejsLeadweb Nodejs
Leadweb Nodejs
 

En vedette

20170829 HB Smith에서는 AWS 이렇게 사용한다
20170829 HB Smith에서는 AWS 이렇게 사용한다20170829 HB Smith에서는 AWS 이렇게 사용한다
20170829 HB Smith에서는 AWS 이렇게 사용한다Jongwon Han
 
AWS Summit - AWS를 통한 신뢰성 높은 지속적 배포 및 통합(CD, CI) ᄉ...
AWS Summit - AWS를 통한 신뢰성 높은 지속적 배포 및 통합(CD, CI) ᄉ...AWS Summit - AWS를 통한 신뢰성 높은 지속적 배포 및 통합(CD, CI) ᄉ...
AWS Summit - AWS를 통한 신뢰성 높은 지속적 배포 및 통합(CD, CI) ᄉ...Jongwon Han
 
20170718 hb smith에서는 aws 이렇게 사용한다
20170718 hb smith에서는 aws 이렇게 사용한다20170718 hb smith에서는 aws 이렇게 사용한다
20170718 hb smith에서는 aws 이렇게 사용한다Jongwon Han
 
20170422 HB Smith - Primer workshop
20170422 HB Smith - Primer workshop20170422 HB Smith - Primer workshop
20170422 HB Smith - Primer workshopJongwon Han
 
AWS Lambdas with a Static Outgoing IP
AWS Lambdas with a Static Outgoing IPAWS Lambdas with a Static Outgoing IP
AWS Lambdas with a Static Outgoing IPJongwon Han
 
HB Smith - Primer workshop
HB Smith - Primer workshopHB Smith - Primer workshop
HB Smith - Primer workshopJongwon Han
 
20171013 데이터 분석가를 위한 데이터플랫폼 Seminar - Public Cloud 101
20171013 데이터 분석가를 위한 데이터플랫폼 Seminar - Public Cloud 10120171013 데이터 분석가를 위한 데이터플랫폼 Seminar - Public Cloud 101
20171013 데이터 분석가를 위한 데이터플랫폼 Seminar - Public Cloud 101Jongwon Han
 
나도 내가 뭘 말해야되는지 잘 모르겠어 (본격 스타트업 환상 부수기)
나도 내가 뭘 말해야되는지 잘 모르겠어 (본격 스타트업 환상 부수기)나도 내가 뭘 말해야되는지 잘 모르겠어 (본격 스타트업 환상 부수기)
나도 내가 뭘 말해야되는지 잘 모르겠어 (본격 스타트업 환상 부수기)Yu Yongwoo
 
Project TIMAT - infrastructure as code
Project TIMAT - infrastructure as codeProject TIMAT - infrastructure as code
Project TIMAT - infrastructure as codeJesang Yoon
 
HB Smith - business plan - live hero - public
HB Smith - business plan - live hero - publicHB Smith - business plan - live hero - public
HB Smith - business plan - live hero - publicJongwon Han
 

En vedette (10)

20170829 HB Smith에서는 AWS 이렇게 사용한다
20170829 HB Smith에서는 AWS 이렇게 사용한다20170829 HB Smith에서는 AWS 이렇게 사용한다
20170829 HB Smith에서는 AWS 이렇게 사용한다
 
AWS Summit - AWS를 통한 신뢰성 높은 지속적 배포 및 통합(CD, CI) ᄉ...
AWS Summit - AWS를 통한 신뢰성 높은 지속적 배포 및 통합(CD, CI) ᄉ...AWS Summit - AWS를 통한 신뢰성 높은 지속적 배포 및 통합(CD, CI) ᄉ...
AWS Summit - AWS를 통한 신뢰성 높은 지속적 배포 및 통합(CD, CI) ᄉ...
 
20170718 hb smith에서는 aws 이렇게 사용한다
20170718 hb smith에서는 aws 이렇게 사용한다20170718 hb smith에서는 aws 이렇게 사용한다
20170718 hb smith에서는 aws 이렇게 사용한다
 
20170422 HB Smith - Primer workshop
20170422 HB Smith - Primer workshop20170422 HB Smith - Primer workshop
20170422 HB Smith - Primer workshop
 
AWS Lambdas with a Static Outgoing IP
AWS Lambdas with a Static Outgoing IPAWS Lambdas with a Static Outgoing IP
AWS Lambdas with a Static Outgoing IP
 
HB Smith - Primer workshop
HB Smith - Primer workshopHB Smith - Primer workshop
HB Smith - Primer workshop
 
20171013 데이터 분석가를 위한 데이터플랫폼 Seminar - Public Cloud 101
20171013 데이터 분석가를 위한 데이터플랫폼 Seminar - Public Cloud 10120171013 데이터 분석가를 위한 데이터플랫폼 Seminar - Public Cloud 101
20171013 데이터 분석가를 위한 데이터플랫폼 Seminar - Public Cloud 101
 
나도 내가 뭘 말해야되는지 잘 모르겠어 (본격 스타트업 환상 부수기)
나도 내가 뭘 말해야되는지 잘 모르겠어 (본격 스타트업 환상 부수기)나도 내가 뭘 말해야되는지 잘 모르겠어 (본격 스타트업 환상 부수기)
나도 내가 뭘 말해야되는지 잘 모르겠어 (본격 스타트업 환상 부수기)
 
Project TIMAT - infrastructure as code
Project TIMAT - infrastructure as codeProject TIMAT - infrastructure as code
Project TIMAT - infrastructure as code
 
HB Smith - business plan - live hero - public
HB Smith - business plan - live hero - publicHB Smith - business plan - live hero - public
HB Smith - business plan - live hero - public
 

Similaire à 20170813 django api server unit test and remote debugging

글로벌 게임 플랫폼에서 무정지, 무점검 서버 개발과 운영 사례
글로벌 게임 플랫폼에서 무정지, 무점검 서버 개발과 운영 사례글로벌 게임 플랫폼에서 무정지, 무점검 서버 개발과 운영 사례
글로벌 게임 플랫폼에서 무정지, 무점검 서버 개발과 운영 사례if kakao
 
AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016
AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016
AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016Amazon Web Services Korea
 
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기Chanwoong Kim
 
AWS Code 서비스 특집 - 아마존 DevOps와 CodeDeploy, CodePipeline (윤석찬)
AWS Code 서비스 특집 - 아마존 DevOps와 CodeDeploy, CodePipeline (윤석찬)AWS Code 서비스 특집 - 아마존 DevOps와 CodeDeploy, CodePipeline (윤석찬)
AWS Code 서비스 특집 - 아마존 DevOps와 CodeDeploy, CodePipeline (윤석찬)Amazon Web Services Korea
 
ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자Sewon Ann
 
2023 GDG Sondo DevFest - Flutter/ Flavor, PlatformChannel, Environment variab...
2023 GDG Sondo DevFest - Flutter/ Flavor, PlatformChannel, Environment variab...2023 GDG Sondo DevFest - Flutter/ Flavor, PlatformChannel, Environment variab...
2023 GDG Sondo DevFest - Flutter/ Flavor, PlatformChannel, Environment variab...MaRoKim4
 
Bon voyage Docker_Kubernetes
Bon voyage Docker_KubernetesBon voyage Docker_Kubernetes
Bon voyage Docker_Kubernetesssuseraada82
 
01.개발환경 교육교재
01.개발환경 교육교재01.개발환경 교육교재
01.개발환경 교육교재Hankyo
 
VSTS와 Azure를 이용한 팀 프로세스 관리
VSTS와 Azure를 이용한 팀 프로세스 관리VSTS와 Azure를 이용한 팀 프로세스 관리
VSTS와 Azure를 이용한 팀 프로세스 관리Gyuwon Yi
 
Meetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vsMeetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vsminseok kim
 
Progressive Web Apps
Progressive Web AppsProgressive Web Apps
Progressive Web Appsjungkees
 
CI in the Mobile World (한글번역)
CI in the Mobile World (한글번역)CI in the Mobile World (한글번역)
CI in the Mobile World (한글번역)DONGSU KIM
 
테스트수행사례 W통합보안솔루션
테스트수행사례 W통합보안솔루션테스트수행사례 W통합보안솔루션
테스트수행사례 W통합보안솔루션SangIn Choung
 
무정지&무점검 서버 개발과 운영 사례
무정지&무점검 서버 개발과 운영 사례무정지&무점검 서버 개발과 운영 사례
무정지&무점검 서버 개발과 운영 사례Taehyun Kim
 
[AWS Dev Day] 실습워크샵 | Amplify 와 AI 서비스를 활용한 서버리스 기반 소셜 안드로이드 앱 만들기
 [AWS Dev Day] 실습워크샵 | Amplify 와 AI 서비스를 활용한 서버리스 기반 소셜 안드로이드 앱 만들기 [AWS Dev Day] 실습워크샵 | Amplify 와 AI 서비스를 활용한 서버리스 기반 소셜 안드로이드 앱 만들기
[AWS Dev Day] 실습워크샵 | Amplify 와 AI 서비스를 활용한 서버리스 기반 소셜 안드로이드 앱 만들기Amazon Web Services Korea
 
당근마켓에서 IaC경험
당근마켓에서 IaC경험당근마켓에서 IaC경험
당근마켓에서 IaC경험용진 조
 
practical perf testing - d2startup
practical perf testing - d2startuppractical perf testing - d2startup
practical perf testing - d2startupJunHo Yoon
 
삶이편해지는_백엔드_개발자_지식.pdf
삶이편해지는_백엔드_개발자_지식.pdf삶이편해지는_백엔드_개발자_지식.pdf
삶이편해지는_백엔드_개발자_지식.pdfSeung kyoo Park
 

Similaire à 20170813 django api server unit test and remote debugging (20)

글로벌 게임 플랫폼에서 무정지, 무점검 서버 개발과 운영 사례
글로벌 게임 플랫폼에서 무정지, 무점검 서버 개발과 운영 사례글로벌 게임 플랫폼에서 무정지, 무점검 서버 개발과 운영 사례
글로벌 게임 플랫폼에서 무정지, 무점검 서버 개발과 운영 사례
 
AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016
AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016
AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016
 
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
 
AWS Code 서비스 특집 - 아마존 DevOps와 CodeDeploy, CodePipeline (윤석찬)
AWS Code 서비스 특집 - 아마존 DevOps와 CodeDeploy, CodePipeline (윤석찬)AWS Code 서비스 특집 - 아마존 DevOps와 CodeDeploy, CodePipeline (윤석찬)
AWS Code 서비스 특집 - 아마존 DevOps와 CodeDeploy, CodePipeline (윤석찬)
 
ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자
 
2023 GDG Sondo DevFest - Flutter/ Flavor, PlatformChannel, Environment variab...
2023 GDG Sondo DevFest - Flutter/ Flavor, PlatformChannel, Environment variab...2023 GDG Sondo DevFest - Flutter/ Flavor, PlatformChannel, Environment variab...
2023 GDG Sondo DevFest - Flutter/ Flavor, PlatformChannel, Environment variab...
 
Local Dev
Local DevLocal Dev
Local Dev
 
Bon voyage Docker_Kubernetes
Bon voyage Docker_KubernetesBon voyage Docker_Kubernetes
Bon voyage Docker_Kubernetes
 
01.개발환경 교육교재
01.개발환경 교육교재01.개발환경 교육교재
01.개발환경 교육교재
 
VSTS와 Azure를 이용한 팀 프로세스 관리
VSTS와 Azure를 이용한 팀 프로세스 관리VSTS와 Azure를 이용한 팀 프로세스 관리
VSTS와 Azure를 이용한 팀 프로세스 관리
 
Meetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vsMeetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vs
 
Progressive Web Apps
Progressive Web AppsProgressive Web Apps
Progressive Web Apps
 
CI in the Mobile World (한글번역)
CI in the Mobile World (한글번역)CI in the Mobile World (한글번역)
CI in the Mobile World (한글번역)
 
테스트수행사례 W통합보안솔루션
테스트수행사례 W통합보안솔루션테스트수행사례 W통합보안솔루션
테스트수행사례 W통합보안솔루션
 
무정지&무점검 서버 개발과 운영 사례
무정지&무점검 서버 개발과 운영 사례무정지&무점검 서버 개발과 운영 사례
무정지&무점검 서버 개발과 운영 사례
 
[AWS Dev Day] 실습워크샵 | Amplify 와 AI 서비스를 활용한 서버리스 기반 소셜 안드로이드 앱 만들기
 [AWS Dev Day] 실습워크샵 | Amplify 와 AI 서비스를 활용한 서버리스 기반 소셜 안드로이드 앱 만들기 [AWS Dev Day] 실습워크샵 | Amplify 와 AI 서비스를 활용한 서버리스 기반 소셜 안드로이드 앱 만들기
[AWS Dev Day] 실습워크샵 | Amplify 와 AI 서비스를 활용한 서버리스 기반 소셜 안드로이드 앱 만들기
 
당근마켓에서 IaC경험
당근마켓에서 IaC경험당근마켓에서 IaC경험
당근마켓에서 IaC경험
 
practical perf testing - d2startup
practical perf testing - d2startuppractical perf testing - d2startup
practical perf testing - d2startup
 
Place site Design
Place site DesignPlace site Design
Place site Design
 
삶이편해지는_백엔드_개발자_지식.pdf
삶이편해지는_백엔드_개발자_지식.pdf삶이편해지는_백엔드_개발자_지식.pdf
삶이편해지는_백엔드_개발자_지식.pdf
 

Plus de Jongwon Han

20191226 LEGACYLAND에서 살아남는 법
20191226 LEGACYLAND에서 살아남는 법20191226 LEGACYLAND에서 살아남는 법
20191226 LEGACYLAND에서 살아남는 법Jongwon Han
 
20190518 개발하기 좋은 날
20190518 개발하기 좋은 날20190518 개발하기 좋은 날
20190518 개발하기 좋은 날Jongwon Han
 
20190418 Read Replicas and Django DB Router - AWS Summit Seoul 2019
20190418 Read Replicas and Django DB Router - AWS Summit Seoul 201920190418 Read Replicas and Django DB Router - AWS Summit Seoul 2019
20190418 Read Replicas and Django DB Router - AWS Summit Seoul 2019Jongwon Han
 
20190214 Startup의 한정된 자원(인력, 자금)에서 AWS를 효율적으로 사ᄋ...
20190214 Startup의 한정된 자원(인력, 자금)에서 AWS를 효율적으로 사ᄋ...20190214 Startup의 한정된 자원(인력, 자금)에서 AWS를 효율적으로 사ᄋ...
20190214 Startup의 한정된 자원(인력, 자금)에서 AWS를 효율적으로 사ᄋ...Jongwon Han
 
20181126 AWS S3, SPA, 그리고 Vue.JS - HBSmith는 어떻게 Frontend를 Serverle...
20181126 AWS S3, SPA, 그리고 Vue.JS - HBSmith는 어떻게 Frontend를 Serverle...20181126 AWS S3, SPA, 그리고 Vue.JS - HBSmith는 어떻게 Frontend를 Serverle...
20181126 AWS S3, SPA, 그리고 Vue.JS - HBSmith는 어떻게 Frontend를 Serverle...Jongwon Han
 
20181108 HBSmith에서는 이렇게 AWS IaC로 배포한다
20181108 HBSmith에서는 이렇게 AWS IaC로 배포한다20181108 HBSmith에서는 이렇게 AWS IaC로 배포한다
20181108 HBSmith에서는 이렇게 AWS IaC로 배포한다Jongwon Han
 
20180915 HBSmith에서는 Django 이렇게 사용한다
20180915 HBSmith에서는 Django 이렇게 사용한다20180915 HBSmith에서는 Django 이렇게 사용한다
20180915 HBSmith에서는 Django 이렇게 사용한다Jongwon Han
 
20180726 AWS KRUG - RDS Aurora에 40억건 데이터 입력하기
20180726 AWS KRUG - RDS Aurora에 40억건 데이터 입력하기20180726 AWS KRUG - RDS Aurora에 40억건 데이터 입력하기
20180726 AWS KRUG - RDS Aurora에 40억건 데이터 입력하기Jongwon Han
 
20180609 BIT computer - AWS를 활용한 클라우드 기반 웹 개발 2주차
20180609 BIT computer - AWS를 활용한 클라우드 기반 웹 개발 2주차20180609 BIT computer - AWS를 활용한 클라우드 기반 웹 개발 2주차
20180609 BIT computer - AWS를 활용한 클라우드 기반 웹 개발 2주차Jongwon Han
 
20180602 BIT computer - AWS를 활용한 클라우드 기반 웹 개발 1주차
20180602 BIT computer - AWS를 활용한 클라우드 기반 웹 개발 1주차20180602 BIT computer - AWS를 활용한 클라우드 기반 웹 개발 1주차
20180602 BIT computer - AWS를 활용한 클라우드 기반 웹 개발 1주차Jongwon Han
 
20180124 스타트업부터 대기업까지 aws와 함께한 7년
20180124 스타트업부터 대기업까지 aws와 함께한 7년20180124 스타트업부터 대기업까지 aws와 함께한 7년
20180124 스타트업부터 대기업까지 aws와 함께한 7년Jongwon Han
 
20180124 naver labs aws network and security
20180124 naver labs aws network and security20180124 naver labs aws network and security
20180124 naver labs aws network and securityJongwon Han
 
20171221 naver labs aws 101
20171221 naver labs aws 10120171221 naver labs aws 101
20171221 naver labs aws 101Jongwon Han
 
HB Smith에서는 AWS 이렇게 사용한다
HB Smith에서는 AWS 이렇게 사용한다HB Smith에서는 AWS 이렇게 사용한다
HB Smith에서는 AWS 이렇게 사용한다Jongwon Han
 
Daily Continuous Deployment를 위한 Custom CLI 개발 및
 AWS Elastic Beanstalk에 적용하기
Daily Continuous Deployment를 위한 Custom CLI 개발 및
 AWS Elastic Beanstalk에 적용하기Daily Continuous Deployment를 위한 Custom CLI 개발 및
 AWS Elastic Beanstalk에 적용하기
Daily Continuous Deployment를 위한 Custom CLI 개발 및
 AWS Elastic Beanstalk에 적용하기Jongwon Han
 
Backend server monitoring and alarm system (collectd, graphite, grafana, zabb...
Backend server monitoring and alarm system (collectd, graphite, grafana, zabb...Backend server monitoring and alarm system (collectd, graphite, grafana, zabb...
Backend server monitoring and alarm system (collectd, graphite, grafana, zabb...Jongwon Han
 
DV 환경에서 PG 연동하기 ('우리 안의 소리', 2015-11-19)
DV 환경에서 PG 연동하기 ('우리 안의 소리', 2015-11-19)DV 환경에서 PG 연동하기 ('우리 안의 소리', 2015-11-19)
DV 환경에서 PG 연동하기 ('우리 안의 소리', 2015-11-19)Jongwon Han
 

Plus de Jongwon Han (17)

20191226 LEGACYLAND에서 살아남는 법
20191226 LEGACYLAND에서 살아남는 법20191226 LEGACYLAND에서 살아남는 법
20191226 LEGACYLAND에서 살아남는 법
 
20190518 개발하기 좋은 날
20190518 개발하기 좋은 날20190518 개발하기 좋은 날
20190518 개발하기 좋은 날
 
20190418 Read Replicas and Django DB Router - AWS Summit Seoul 2019
20190418 Read Replicas and Django DB Router - AWS Summit Seoul 201920190418 Read Replicas and Django DB Router - AWS Summit Seoul 2019
20190418 Read Replicas and Django DB Router - AWS Summit Seoul 2019
 
20190214 Startup의 한정된 자원(인력, 자금)에서 AWS를 효율적으로 사ᄋ...
20190214 Startup의 한정된 자원(인력, 자금)에서 AWS를 효율적으로 사ᄋ...20190214 Startup의 한정된 자원(인력, 자금)에서 AWS를 효율적으로 사ᄋ...
20190214 Startup의 한정된 자원(인력, 자금)에서 AWS를 효율적으로 사ᄋ...
 
20181126 AWS S3, SPA, 그리고 Vue.JS - HBSmith는 어떻게 Frontend를 Serverle...
20181126 AWS S3, SPA, 그리고 Vue.JS - HBSmith는 어떻게 Frontend를 Serverle...20181126 AWS S3, SPA, 그리고 Vue.JS - HBSmith는 어떻게 Frontend를 Serverle...
20181126 AWS S3, SPA, 그리고 Vue.JS - HBSmith는 어떻게 Frontend를 Serverle...
 
20181108 HBSmith에서는 이렇게 AWS IaC로 배포한다
20181108 HBSmith에서는 이렇게 AWS IaC로 배포한다20181108 HBSmith에서는 이렇게 AWS IaC로 배포한다
20181108 HBSmith에서는 이렇게 AWS IaC로 배포한다
 
20180915 HBSmith에서는 Django 이렇게 사용한다
20180915 HBSmith에서는 Django 이렇게 사용한다20180915 HBSmith에서는 Django 이렇게 사용한다
20180915 HBSmith에서는 Django 이렇게 사용한다
 
20180726 AWS KRUG - RDS Aurora에 40억건 데이터 입력하기
20180726 AWS KRUG - RDS Aurora에 40억건 데이터 입력하기20180726 AWS KRUG - RDS Aurora에 40억건 데이터 입력하기
20180726 AWS KRUG - RDS Aurora에 40억건 데이터 입력하기
 
20180609 BIT computer - AWS를 활용한 클라우드 기반 웹 개발 2주차
20180609 BIT computer - AWS를 활용한 클라우드 기반 웹 개발 2주차20180609 BIT computer - AWS를 활용한 클라우드 기반 웹 개발 2주차
20180609 BIT computer - AWS를 활용한 클라우드 기반 웹 개발 2주차
 
20180602 BIT computer - AWS를 활용한 클라우드 기반 웹 개발 1주차
20180602 BIT computer - AWS를 활용한 클라우드 기반 웹 개발 1주차20180602 BIT computer - AWS를 활용한 클라우드 기반 웹 개발 1주차
20180602 BIT computer - AWS를 활용한 클라우드 기반 웹 개발 1주차
 
20180124 스타트업부터 대기업까지 aws와 함께한 7년
20180124 스타트업부터 대기업까지 aws와 함께한 7년20180124 스타트업부터 대기업까지 aws와 함께한 7년
20180124 스타트업부터 대기업까지 aws와 함께한 7년
 
20180124 naver labs aws network and security
20180124 naver labs aws network and security20180124 naver labs aws network and security
20180124 naver labs aws network and security
 
20171221 naver labs aws 101
20171221 naver labs aws 10120171221 naver labs aws 101
20171221 naver labs aws 101
 
HB Smith에서는 AWS 이렇게 사용한다
HB Smith에서는 AWS 이렇게 사용한다HB Smith에서는 AWS 이렇게 사용한다
HB Smith에서는 AWS 이렇게 사용한다
 
Daily Continuous Deployment를 위한 Custom CLI 개발 및
 AWS Elastic Beanstalk에 적용하기
Daily Continuous Deployment를 위한 Custom CLI 개발 및
 AWS Elastic Beanstalk에 적용하기Daily Continuous Deployment를 위한 Custom CLI 개발 및
 AWS Elastic Beanstalk에 적용하기
Daily Continuous Deployment를 위한 Custom CLI 개발 및
 AWS Elastic Beanstalk에 적용하기
 
Backend server monitoring and alarm system (collectd, graphite, grafana, zabb...
Backend server monitoring and alarm system (collectd, graphite, grafana, zabb...Backend server monitoring and alarm system (collectd, graphite, grafana, zabb...
Backend server monitoring and alarm system (collectd, graphite, grafana, zabb...
 
DV 환경에서 PG 연동하기 ('우리 안의 소리', 2015-11-19)
DV 환경에서 PG 연동하기 ('우리 안의 소리', 2015-11-19)DV 환경에서 PG 연동하기 ('우리 안의 소리', 2015-11-19)
DV 환경에서 PG 연동하기 ('우리 안의 소리', 2015-11-19)
 

20170813 django api server unit test and remote debugging

  • 1. Jongwon Han Django API Server Unit Test
 and Remote Debugging PyCon Korea 2017
  • 2. 발표자 소개 • 한종원 • Python과 Cloud Infra, Lean/Agile 방법론 그리고 애플의 제품을 사랑. • 2012년 석사 학위를 마치고, startup을 시작
 (이때부터 Python, AWS를 production level에서 사용) • '의미가 있는 일을, 올바르게 하고 싶다.' • 경력 • (현) DevOps 전문 스타트업 ‘HB Smith’ 대표 • 택시 O2O 서비스 스타트업 ‘Kanizsa Lab’의 backend server / infra devops 담당 • Cloud computing 전문 스타트업 'A2 company' co-founder (‘KINX’에 인수합병) • NEXON 'MapleStory 국내 Live Team'에서 DBA, SA로 근무 (산업 기능 요원) https://www.linkedin.com/in/addnull/ https://hbsmith.io
  • 3. Startup 경력 = Python 사용 기간
  • 4. • 발표 대상: 중급 Django API server 개발자 • 발표 순서 • Django API server unit test • 나의 개발 환경 구축기 • Remote Debugging • Wrap Up (예상 발표 시간: 35~40분)
  • 5. Django API server unit test
  • 6. Django API server unit test • Why Django? • Python 이라서! • 정형화된 code structure • 풍부한 troubleshooting 과 사용자 그룹 -> 누가 개발해도 결과가 비슷 https://www.djangoproject.com/
  • 7. Django API server unit test • 물론 단점도 많습니다. • 다소 느리고, 무겁죠. • 살짝 아쉬운 ORM 최적화. -> 난 API server만 만들고 싶고,
 HTML template 같은 건 안쓰는데… -> DML은 ORM 한테 맡겨도,
 database schema(DDL)는 직접 관리하세요.
  • 8. Django API server unit test • 그럼 Django 말고 더 좋은게 있을까요? -> 그래도 API 개발 기한(due date)을 지키기 위해선,
 Django + DRF 만한 것도 없는 것 같아요. http://www.django-rest-framework.org/
  • 9. Django API server unit test • What is Django API server unit test? • 여기서 말하는 ‘unit’은 각각의 API를 의미 • 즉, unit test는 실제 API call을 해보고
 의도한 결과가 나오는지 확인 • 되도록 가능한 모든 API call을 test -> 실행되지 않는 bug는 bug가 아니다?!?!
  • 10. Django API server unit test • API call example • HTTP method: • base URL: • endpoint(path): • query parameters: (GET) https://api.example.com/v1/users/?role=admin&status=active GET, POST, PUT, DELETE … https://api.example.com/v1 /users/ role=admin&status=active
  • 11. Django API server unit test • unit(API) test에서 “의도한 결과”란? -> 성공(2XX) 뿐만 아니라 일부러 실패(4XX)하는지도 확인
  • 12. Django API server unit test • “되도록 가능한 모든” API call test를 위해서 • Django의 in-memory DB: • DRF의 ‘APITestCase’ Class: • ‘factory_boy’: -> 매번 깨끗한 test DB 생성 -> API call template -> random parameter value generator https://github.com/FactoryBoy/factory_boy
  • 13. Django API server unit test • 오늘 발표에 사용된 code • API 와 unit test example
 • HTTP method: • endpoint(path): • query parameters: GET /numbers/ start=1&end=2 ‘start’와 ‘end’라는 정수 2개 사이에 있는 모든 정수를 반환하는 API https://github.com/HardBoiledSmith/tabris/tree/master/pycon_kr_2017_addnull
  • 14. Django API server unit test • API 와 unit test example (cont.)
  • 15. Django API server unit test • API 와 unit test example (cont.)
  • 16. ` • API 와 unit test example (cont.)
  • 17. Django API server unit test • API 와 unit test example (cont.)
  • 18. Django API server unit test • unit test 실행 결과
  • 19. Django API server unit test • unit test 실행 결과 (cont.)
  • 20. 나의 개발 환경 구축기
  • 21. 나의 개발 환경 구축기 • 저는 Mac OS X 에서 PyCharm으로 개발합니다.
 하지만 실제 서버 환경은 AWS의 Amazon Linux죠.
 CentOS와는 다르다! CentOS와는!
  • 22. 나의 개발 환경 구축기 • 개발 환경과 실제 서버 환경 차이에서 오는 문제들… • 그럼 ‘Virtualenv’ 쓰면 어떤가요? -> Mac OS X에서는 좀 이상하게 동작해요. -> 그리고 결국 동일한 환경이 아니잖아요.
  • 23. 나의 개발 환경 구축기 • 여기 Vagrant 라는 silver bullet이 있습니다. • 심지어 Amazon Linux box도 있습니다. https://www.vagrantup.com/ https://app.vagrantup.com/mvbcoding/boxes/awslinux/
  • 24. 나의 개발 환경 구축기 • 즉, 개발을 위한 Amazon Linux VM을 만들었습니다.
  • 25. 나의 개발 환경 구축기 • ‘Vagrantfile’ https://github.com/HardBoiledSmith/tabris/tree/master/pycon_kr_2017_addnull
  • 26. 나의 개발 환경 구축기 • ‘provisioning.py’ https://github.com/HardBoiledSmith/tabris/tree/master/pycon_kr_2017_addnull
  • 27. 나의 개발 환경 구축기 • Vagrant VM을 개발 환경으로 쓰면, -> 실제 서버와 거의 동일한 환경을 5~10분만에 구축 -> 개발팀의 모든 개발자가 동일한 환경을 사용 -> 뭔가 개발 환경이 이상해지면, 속편하게 VM 날리고, 새로 VM 생성 misconfiguration dependency hell package version conflict OOM garbage files
  • 29. Remote Debugging • Why remote debugging? -> 실제 서버와 거의 동일한 환경을 위해서 Vagrant VM을 쓰지만, -> PyCharm의 다양하고 편리한 debugger 기능을 쓰고 싶었어요.
  • 30. Remote Debugging • Mac OS X에서 실행되는 PyCharm 입장에서
 Vagrant VM 안의 Django API server는 딴 세계
  • 31. Remote Debugging • PyCharm에서 지원하는 2가지 remote debugging • Using a remote interpreter • Using Python Debug Server -> 기존 source code 수정 불필요 (추천) -> 기존 source code 수정 필요
  • 32. Remote Debugging • PyCharm ‘Using a remote interpreter’ 설정 단계
 
 1. Remote Interpreter
 
 2. Debug Configuration
 
 3. Auto Deployment
  • 33. Remote Debugging - 1. Remote Interpreter 설정 • 1.1. [preferences] 에서
 ‘project interpreter’ 검색
 
 1.2. 우측 상단의
 톱니바퀴 클릭
 
 1.3. ‘Add Remote’
  • 34. Remote Debugging - 1. Remote Interpreter 설정 • 1.4. SSH Credentials 입력
  • 35. Remote Debugging - 2. Debug Configuration 설정 • 2.1. [Run] -> [Edit Configurations]
 
 2.2. 좌측 상단의 ‘+’ 버튼 클릭
 
 2.3. ‘Python’ 선택
  • 36. Remote Debugging - 2. Debug Configuration 설정 • 2.4. 오른쪽 화면처럼 설정 -> 여기까지만해도, remote debugging
 가능합니다. -> 하지만, local(Mac OS X)에서
 Python code를 변경한 내용이
 remote debugging에 바로 반영하려면?
  • 37. Remote Debugging - 3. Auto Deployment 설정 • 3.1. [Tools] -> [Deployment]
 -> [Configuration]
 
 3.2. 좌측 상단의 ‘+’ 버튼 클릭
 
 3.3. ‘SFTP’ 선택
  • 38. Remote Debugging - 3. Auto Deployment 설정 • 3.4. 아래 화면처럼 ‘Connection’ 항목과 ‘Mappings’ 항목 설정
  • 39. Remote Debugging - 3. Auto Deployment 설정 • 3.6. [Tools] -> [Deployment] -> [Automatic Upload] • Auto Deployment 결과 예시 -> 이제 local(Mac OS X)에서
 Python code를 변경한 내용이
 remote debugging에 바로 반영됩니다.
  • 40. Remote Debugging - Demo 우측 상단에 ‘벌레’ icon 클릭
  • 41. Remote Debugging - Demo /numbers/ ?start = 1
 &end = 10
  • 42. Remote Debugging - Demo /numbers/ ?start = 10
 &end = 1
  • 43. ### QUIZ ### ‘unit test’를 ‘remote debugging’하려면?
  • 44. Remote Debugging • Debug Configuration 설정 -> Script parameters에 ‘runserver 0.0.0.0:80’ 대신에 ‘test -v 3’을 입력
  • 46. Wrap Up • Django API server unit test • Django + DRF + factory_boy • 나의 개발 환경 구축기 • Mac OS X + Vagrant(Amazon Linux) • Remote Debugging • PyCharm ‘Using a remote interpreter’
  • 47. Call to Action • 저희는 API 개발팀을 위한 모니터링 서비스를 만들고 있습니다.
 저희의 early bird 고객이 되어주세요. • 아직 Python Korea FG 가입하지 않으셨다구요? • 저희 사이트에서 개발팁을 가져가세요! https://hbsmith.io https://www.facebook.com/groups/pythonkorea/ https://medium.com/hbsmith