Your SlideShare is downloading. ×
Do not use Django as like as SMARTSTUDY
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Do not use Django as like as SMARTSTUDY

3,796

Published on

Python Korea 2012-11 모임에서 발표한 장고 사용 후기 자료입니다.

Python Korea 2012-11 모임에서 발표한 장고 사용 후기 자료입니다.

Published in: Technology
0 Comments
41 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,796
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
56
Comments
0
Likes
41
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. DO NOT USE AS LIKE ASSMARTSTUDY
  • 2. 사실•파이썬, 잘 모릅니다!•원래 윈도우 게임 개발자.•야매 LAMP 스택 경험자.•하지만 웹 프레임워크 경험은 흐리멍텅
  • 3. 조건•불투명한 회사의 미래.•모바일 브라우저의 특성도 잘 모름.•그거 말고도 할 일이 너무 많은데,•크고 아름답지 못한 X을 만들긴 싫어서.
  • 4. The Web framework for perfectionists with deadlines
  • 5. 쟁고마감일을 잘 지키고 싶은 이들을 위한 웹 프레임워크
  • 6. 개밥 먹는 Django 인증샷
  • 7. 일단 시작했는데•누구한테 물어봐야 하는지 모르겠네.•‘쉽고 빠른 웹 개발 Django’ 구입.•요즘 버전과 달라서 쬐끔 아쉬움.•그래도 끝까지 자세히 잘 읽어볼껄...
  • 8. 그 무엇보다 #langdev irc.ozinger.org마음씨 곱고 착한 아저씨들이 득실 득실
  • 9. 어떻게 하면 좋다이렇게 해서 멋지다이런건 많이 있으니까
  • 10. “ 사람들은 말이죠, 원래 자기가 잘 모르는 걸 추천합니다. 잘 알면 절대 추천 못해요. ” #langdev 채널의 d님
  • 11. 잘못한 것• syntax • debug-toolbar• views.py • cache• layout • session• deploy • orm• compressor • database
  • 12. 그나마 잘한 것 • fabric • celery
  • 13. 1. Syntax
  • 14. •무엇보다 PEP8 부터 보고 시작할 껄... • http://www.python.org/dev/peps/pep-0008/
  • 15. •pyflakes / pyflakes.vim • http://pypi.python.org/pypi/pyflakes • http://www.vim.org/scripts/script.php? script_id=2441•pep8 • http://pypi.python.org/pypi/pep8•pylint • http://pypi.python.org/pypi/pylint
  • 16. 2. views.py
  • 17. •만능 파일을 만들지 맙시다.•뷰에는 제발 뷰 코드만.•파일을 기능 단위로 분리하세요. utils.py 등•models.py 의 모델 클래스를 활용하세요.
  • 18. •비교적 양호한 예제를 참고합니다.•DjangoResources • https://code.djangoproject.com/wiki/DjangoResources•django-basic-apps • https://github.com/nathanborror/django-basic-apps
  • 19. 3. Layout
  • 20. •역시, 비교적 양호한 예제를 참고합니다.• http://www.deploydjango.com/django_project_structure• https://github.com/garethr/django-project-templates
  • 21. •templates / static 을 분리하니까,•언뜻 좋아보이긴 하는데, 은근히 불편.•어차피 collectstatic 해야하니까!•모든 css붙이는 방식으로 회피. file 이름에 prefix를 element 이름과 static
  • 22. 4. Deploy
  • 23. 개발할 땐 단순하지만
  • 24. 배포할 땐 아니란다
  • 25. Text... an he said, “Deployment is fucking hard.” http://rdegges.com/deploying-django
  • 26. •개발 환경과 실제 환경 맞추기.•서비스가 병렬로 늘어나는 경우 규격화.•h님과 같이 패키지화하여 개인 저장소 사용.•supervisord / daemontools 조합. • http://kill.devc.at/node/323
  • 27. • http://www.djangobook.com/en/2.0/chapter12.html• http://www.deploydjango.com/ •heroku 기반이긴 하지만 좋으니까 읽어봅시다.
  • 28. 5. Compressor
  • 29. •할 꺼면 전부 다 하고, 안할 꺼면 넣지 말자.•{% css %} / {% js %} 블럭을 고정.•가끔 쓰는 css / js 들은 그냥 따로 쓰자.•그리고, 어지간하면 지우지 마세요!
  • 30. 6. django-debug-toolbar
  • 31. •정말 debug 용. 성능 모니터링은 아닙니다.•프로덕션에서 이것 또는 linesman 돌리면 사망.•개발 환경에서만 쓰세요. • http://werkzeug.pocoo.org/docs/debug/
  • 32. •django-statsd • https://github.com/andymckay/django-statsd •이것 저것 보기 위한 UDP 기반 statsd 사용 •그래프를 출력하기 위해 graphite 사용 •graphite 도 django project. (아?)•좋긴 한데, 왜케 복잡한가...•django-easy-profiler app 누가 만들어 주세요.
  • 33. •혹시라도 써보고 싶으시면, • http://django-statsd.readthedocs.org/en/latest/ • http://www.robgolding.com/blog/2012/01/14/django- in-production-part-3---automation-and-monitoring/
  • 34. •한 번의 리퀘스트에 뷰가 두 번 호출되는 버그. • https://github.com/django-debug-toolbar/django- debug-toolbar/pull/204
  • 35. 7. Cache
  • 36. •편리합니다, 하지만 잘 써야 합니다.•뷰에서만 하지 말고 템플릿에서도 캐시.•여러 웹 서버가 있어도, 캐시 서버는 하나로!•사용자의 요청에 따라 캐시 갱신(?) •가끔 위험합니다. •정말 오래 걸리는 일은 되도록 celery로 넘기기. • https://gist.github.com/3656474
  • 37. •이미 만들어져 있는 데코레이터를 잘 쓰자.•@vary_on_headers / @vary_on_cookie•@never_cache•@cache_control public must_revalidate private proxy_revalidate no_cache max_age no_transform s_maxage
  • 38. 8. Session
  • 39. •사용자 탈퇴 처리 후, 로그아웃을 시켜야 하는데,•세션을 무효화 할 수가 없네!•모든 세션을 뒤져서 user_id 확인 후 삭제. •세션이 80만개, 인덱스 없음. •어떡하지?
  • 40. 9. ORM
  • 41. select_relatedprefetch_related 꼭 쓰세요 prefetch_related는 Django 1.4 에서 추가
  • 42. 30 sec7924 queries
  • 43. 10. Database Sharing
  • 44. •기존 서비스의 계정을 공유하는 서비스를 추가. •기존 코드에 추가로 작성할까, •fork 할까 고민하다 •페이스북에 물어봄.
  • 45. fork 하는거다! E D FA IL
  • 46. •공통 정보를 다른 데이터베이스로 분리했는데,•Cross-database-relations 제한! • http://blog.naver.com/ez_/140164805705from django.db.backends.signals import connection_createdfrom django.dispatch import receiver@receiver(connection_created)def disable_constraints(sender, connection, **kwargs):    connection.disable_constraint_checking()
  • 47. •마이그레이션이나 여타 이슈로 신경쓰임.•같이 써야 하는 서비스나 모델이 있으면,•별도의 외부 서비스로 분리하고,•RESTful 처리하는게 낫지 않나 생각합니다.
  • 48. 이게 사는건가...
  • 49. 그나마 잘한 것 • fabric • celery
  • 50. 1. Fabric
  • 51. •원격지에 ssh로 붙어서 할 수 있는 모든 것•그리고 그 전에 준비해야 하는 모든 일•모두 fabric으로 통합하세요. • http://fabfile.org
  • 52. •모든 서비스 각자의 fabfile 을 가진다.•각종 대몬은 upstart로 규격화.•개발 서버와 실 서버 환경의 동일하게 유지.•필수 명령어 정의 init / start / stop / restart•배포 서버에서 전역 fab 명령어 f로 원격지 작업. •f <service_name> <command> •/etc/bash_completion.d 활용.
  • 53. 2. Celery
  • 54. •Celery : Task Queue•각종 백그라운드 작업 관리 / 구동 •celeryd : 실제 작업을 수행함 •celerybeat : cron과 같이 주기적 작업을 발생 •celerycam : celeryd의 작업을 수집 • http://celeryproject.org/ • http://docs.celeryproject.org/en/latest/django/index.html
  • 55. •옛날에는 수동으로 SQL 하던 작업을,•Django command로 바꿔서 crontab으로 호출.•이제는 해당 command의 내용을 task로 바꿔서,•celery에 periodic task로 등록.
  • 56. 감사합니다
  • 57. DO NOT USE AS LIKE ASSMARTSTUDY
  • 58. 사실•파이썬, 잘 모릅니다!•원래 윈도우 게임 개발자.•야매 LAMP 스택 경험자.•하지만 웹 프레임워크 경험은 흐리멍텅
  • 59. 조건•불투명한 회사의 미래.•모바일 브라우저의 특성도 잘 모름.•그거 말고도 할 일이 너무 많은데,•크고 아름답지 못한 X을 만들긴 싫어서.
  • 60. The Web framework for perfectionists with deadlines
  • 61. 쟁고마감일을 잘 지키고 싶은 이들을 위한 웹 프레임워크
  • 62. 개밥 먹는 Django 인증샷
  • 63. 일단 시작했는데•누구한테 물어봐야 하는지 모르겠네.•‘쉽고 빠른 웹 개발 Django’ 구입.•요즘 버전과 달라서 쬐끔 아쉬움.•그래도 끝까지 자세히 잘 읽어볼껄...
  • 64. 그 무엇보다 #langdev irc.ozinger.org마음씨 곱고 착한 아저씨들이 득실 득실
  • 65. 어떻게 하면 좋다이렇게 해서 멋지다이런건 많이 있으니까
  • 66. “ 사람들은 말이죠, 원래 자기가 잘 모르는 걸 추천합니다. 잘 알면 절대 추천 못해요. ” #langdev 채널의 d님

×