SlideShare a Scribd company logo
1 of 29
Download to read offline
v
제목
이름
v
Django 봄은 다시 온다
Django와 함께 좋은 웹서비스 코드 만들기
정경업
v
제목
이름
v
목차
발표자 소개
Django 봄은 다시 온다
좋은 코드란?
어떻게 좋은 코드를 만들까?
결론
v
제목
이름
v
발표자 소개
정경업(파이)
perhapsspy@gmail.com
v
제목
이름
경력
● 프리랜서, 한겨레 CMS 리뉴얼 외주 개발 (현재)
● Iamdt Backend Engineer (3개월)
● NRISE Backend Chapter Leader (1년 반)
● ODK Media Backend Leader (3년)
● 프리랜서 (1년), 혜움세무회계 CTO 4개월 포함
● SmartStudy Softwore Engineer (3년 반)
● 아이티동아 Developer (4년)
v
제목
이름
이전 발표들
PyCon Korea
● 2021 Django를 Django답게, Django로 뉴스 사이트 만들기
● 2017 신입에서 CTO까지, 야근하지 않는 웹개발
● 2016 Django로 쇼핑몰 만들자
DjangoCon Korea
● 2018 Django를 배우다, Django로 배우다.
ODK Media 사내
● 2021 OK, 계획대로 되고 있어?
● 2020 테스트가 뭐에요?
v
제목
이름
일하다보니
10년 이상 Django로,
여러 스타트업의 웹서비스를,
개발 및 운영했고,
그 중에 같은 서비스를 3번 리뉴얼 해봤습니다.
그러다보니
Django가 왜 생산성이 높았더라?
이유를 분석해서 이야기하면 좋겠다.
Django 꼭 쓰라는거 아닙니다.
v
제목
이름
v
Django 봄은 다시 온다
v
제목
이름
Django가 뭐죠?
숙련된 개발자가 마감일을 지킬 수 있게
빠르고, 많은 것이 준비된
뉴스 CMS로 시작한 파이썬 웹프레임워크
https://www.djangoproject.com/community/logos/
v
제목
이름
Django 트렌드
https://trends.google.com/trends/
v
제목
이름
프론트엔드의 서버 진출 (SSR)
● React, Next.js
● Vue, Nuxt.js
● Svelte, SvelteKit
기존 웹 프레임워크의 프론트 진출
● Django, HTMX
● Phoenix, Liveview
● Laravel, LiveWire
https://knowyourmeme.com/memes/spider-man-pointing-at-spider-man
v
제목
이름
이 둘이 만나는 지점이 있을까?
SSR은 기존 웹 프레임워크들이 이미 준비된 것들이 많다.
Django가 특히 이미 잘하는 것들이 많다.
HTMX로 프론트도 챙기고 하던 일도 잘하는 Django
Django 봄은 다시 올지도?
네이버 웹툰 “들어는 보았나! 질풍기획!” 중 밈이 된 장면
v
제목
이름
v
웹 서비스에서
좋은 코드란?
v
제목
이름
목표를 달성하는 코드
뉴스 사이트를 만들어주세요. (1)
● 기사를 분류하고 예쁘게 볼 수 있어야 합니다.
● 기사를 작성하고, 수정하고, 삭제할 수 있어야 합니다.
● 기사를 여러 플랫폼에 배포할 수 있어야 합니다.
● 갑자기 트래픽이 몰려도 어느정도 견딜 수 있어야 합니다.
비즈니스 목표를 달성하는 코드
- 충분히 좋은 코드일까?
v
제목
이름
사실 목표는 더 있다.
뉴스 사이트를 만들어주세요. (2)
● 개발자는 당신 혼자입니다.
● 3개월 뒤에 새 기능을 넣어야 합니다.
● 1년 뒤에 개편을 해야합니다.
● 무슨 일이 일어날지 몰라도 해야할겁니다.
비즈니스 목표는 변하고, 비용은 제한적이다.
만화 “요츠바랑!” 4권 중 밈이 된 이미지
v
제목
이름
여러 목표를 달성하는 코드
● 비즈니스 기능을 달성하고
● 비즈니스 변화에 대응하고
● 비용은 적게
이를 좋은 코드라고 생각합니다.
https://www.reddit.com/r/ProgrammerHumor/comments/l9lbm2/code_review_be_like/
영화 “원더 우먼 1984”에서 밈이 된 한 장면
v
제목
이름
v
어떻게 좋은 코드를 만들까?
v
제목
이름
코드양
읽을 코드가 적어야 읽으며 고치기 유리하다.
단어 오자 하나 수정하려면?
● 8만 대장경 vs 3줄 요약문
Django는 많은 것이 이미 만들어져 있어 코드양을 줄인다. 국보 제23호 합천 해인사 대장경판 / 문화재청
https://brunch.co.kr/@cowithawrd/72
v
제목
이름
간단한 기사 목록 구현
v
제목
이름
데이터 구조 전환 단계
맥락이 다른 단계에서 데이터 전달을 해나가는 과정, 웹 서비스는 데이터 구조를 계속 바꿔야 한다.
서버 안에서도 단계가 나뉜다. 각 단계마다 데이터 구조를 만들고 매핑.
이미 단계가 많고 복잡하다.
하나의 언어로 여러 단계를 다룰 수 있다면 효과적
https://excalidraw.com 로 직접 그림
v
제목
이름
기사 작성 구현
Post 요청을 받고 유효한지 확인할 폼 단계를 Model의 필드만 정해 만들 수 있다.
일부 HTML 코드도 자동으로 만들 수 있다.
v
제목
이름
의존은 좋은가 나쁜가?
의존이 높으면?
코드를 고치면 다른 곳에도 영향을 준다.
좋은점
● 한번에 고칠 수 있다.
나쁜점
● 하나가 깨지면 다른 것도 깨진다.
Form 구조 따로 정의하여 모델의 의존을 낮춰보기
v
제목
이름
생산성을 위한 선택 할 수 있다면?
● 간단한 것은 높은 의존으로 빠르게 구현
● 복잡한 것은 낮은 의존으로 유연하게 구현
● 일단 만들고, 이후 필요에 따라 수정
Form HTML도 직접 정의하여 의존을 낮춰보자
v
제목
이름
고치기 쉬우려면?
고칠 부분을 찾기 쉬워야
● 가독성, 구조화 등
● Pythonic하게 짜면 쉬워진다.
찾은 부분을 바꾸기 쉬워야
● 비즈니스를 본질적으로 정리하고
● 원자적 기능 단위를 구성
● 조립해서 대응
애니 “우주소년 아톰” 중 밈이 된 장면
애니 “곰돌이 푸” 중 밈이 된 장면
v
제목
이름
고치는데 비용이 큰 부분은?
답은?
표현
영역
프론트
중간
영역
서버
데이터
영역
DB
사용자가
우선이지 비즈니스
로직은
여긴데?
저장은
어디에
하고?
만화 “맛의 달인” 중 밈이 된 장면
v
제목
이름
데이터 모델 구조 변경 비용이 크다.
● 기존 데이터를 이전 해야 할 수도 있다.
● 기존 데이터에 관련된 코드를 모두 고쳐야 한다.
● 변경하는 도중에도 웹서비스가 동작해야 한다.
https://www.reddit.com/r/ProgrammerHumor/comments/yk2ush/databases/
v
제목
이름
데이터 모델은 비즈니스를 표현한다.
비즈니스 변경은 곧 데이터 모델의 변화.
현재 비즈니스에 맞게 항상 고쳐야 한다.
낮은 비용으로 고칠 수 있다면?
자주 일어나고 힘든 일을 쉽게 할 수 있다.
v
제목
이름
데이터 모델 변경 해보기
banner/models.py
내용을 수정 한 후
v
제목
이름
결론
좋은 코드는
● 만들때 적은 비용이 들고,
● 고칠 곳을 발견하기 쉽고, 고치기 쉽다.
적은 비용으로 만들려면
● 적은 코드로 기능을 구현하고
● 필요에 따라 의존을 조절하기 쉽고
고치기 쉽게 만들려면
● 가장 어려운 부분인 데이터 모델부터 쉽게 고칠 수 있어야 한다.
Django에 많은 것이 이미 준비되어 있다.
http://www.quickmeme.com/meme/35epb9
v
제목
이름
v
감사합니다.
질문 받습니다.
발표 종료 후에도
별도의 자리를 마련해 보겠습니다.

More Related Content

What's hot

PoP - “Platform of Platforms”: Framework for building Single-Page Application...
PoP - “Platform of Platforms”: Framework for building Single-Page Application...PoP - “Platform of Platforms”: Framework for building Single-Page Application...
PoP - “Platform of Platforms”: Framework for building Single-Page Application...Leonardo Losoviz
 
Django in Production
Django in ProductionDjango in Production
Django in ProductionHyun-woo Park
 
Scouter와 influx db – grafana 연동 가이드
Scouter와 influx db – grafana 연동 가이드Scouter와 influx db – grafana 연동 가이드
Scouter와 influx db – grafana 연동 가이드Ji-Woong Choi
 
날로 먹는 Django admin 활용
날로 먹는 Django admin 활용날로 먹는 Django admin 활용
날로 먹는 Django admin 활용KyeongMook "Kay" Cha
 
失敗から学ぶAndroid設計話
失敗から学ぶAndroid設計話失敗から学ぶAndroid設計話
失敗から学ぶAndroid設計話chigichan24
 
오픈소스GIS 개론 과정 - OpenLayers 기초
오픈소스GIS 개론 과정 - OpenLayers 기초오픈소스GIS 개론 과정 - OpenLayers 기초
오픈소스GIS 개론 과정 - OpenLayers 기초HaNJiN Lee
 
XECon+PHPFest2014 발표자료 - ElasticSearch를 이용한 통합검색 구축방법 - 김훈민
XECon+PHPFest2014 발표자료 - ElasticSearch를 이용한 통합검색 구축방법 - 김훈민XECon+PHPFest2014 발표자료 - ElasticSearch를 이용한 통합검색 구축방법 - 김훈민
XECon+PHPFest2014 발표자료 - ElasticSearch를 이용한 통합검색 구축방법 - 김훈민XpressEngine
 
SpringDataJPA - 스프링 캠프
SpringDataJPA - 스프링 캠프SpringDataJPA - 스프링 캠프
SpringDataJPA - 스프링 캠프Younghan Kim
 
Massive service basic
Massive service basicMassive service basic
Massive service basicDaeMyung Kang
 
고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들
고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들
고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들Chris Ohk
 
Go言語で作る webアプリ@gocon 2013 spring
Go言語で作る webアプリ@gocon 2013 springGo言語で作る webアプリ@gocon 2013 spring
Go言語で作る webアプリ@gocon 2013 springTakuya Ueda
 
Google Calendar API - PHP 연동하기
Google Calendar API - PHP 연동하기Google Calendar API - PHP 연동하기
Google Calendar API - PHP 연동하기승빈이네 공작소
 
Pyqgis 기초편
Pyqgis 기초편Pyqgis 기초편
Pyqgis 기초편Jiyoon Kim
 
Django를 Django답게, Django로 뉴스 사이트 만들기
Django를 Django답게, Django로 뉴스 사이트 만들기Django를 Django답게, Django로 뉴스 사이트 만들기
Django를 Django답게, Django로 뉴스 사이트 만들기Kyoung Up Jung
 
[124] 하이브리드 앱 개발기 김한솔
[124] 하이브리드 앱 개발기 김한솔[124] 하이브리드 앱 개발기 김한솔
[124] 하이브리드 앱 개발기 김한솔NAVER D2
 

What's hot (20)

PoP - “Platform of Platforms”: Framework for building Single-Page Application...
PoP - “Platform of Platforms”: Framework for building Single-Page Application...PoP - “Platform of Platforms”: Framework for building Single-Page Application...
PoP - “Platform of Platforms”: Framework for building Single-Page Application...
 
Django in Production
Django in ProductionDjango in Production
Django in Production
 
Scouter와 influx db – grafana 연동 가이드
Scouter와 influx db – grafana 연동 가이드Scouter와 influx db – grafana 연동 가이드
Scouter와 influx db – grafana 연동 가이드
 
날로 먹는 Django admin 활용
날로 먹는 Django admin 활용날로 먹는 Django admin 활용
날로 먹는 Django admin 활용
 
失敗から学ぶAndroid設計話
失敗から学ぶAndroid設計話失敗から学ぶAndroid設計話
失敗から学ぶAndroid設計話
 
오픈소스GIS 개론 과정 - OpenLayers 기초
오픈소스GIS 개론 과정 - OpenLayers 기초오픈소스GIS 개론 과정 - OpenLayers 기초
오픈소스GIS 개론 과정 - OpenLayers 기초
 
200531 jandi
200531 jandi200531 jandi
200531 jandi
 
XECon+PHPFest2014 발표자료 - ElasticSearch를 이용한 통합검색 구축방법 - 김훈민
XECon+PHPFest2014 발표자료 - ElasticSearch를 이용한 통합검색 구축방법 - 김훈민XECon+PHPFest2014 발표자료 - ElasticSearch를 이용한 통합검색 구축방법 - 김훈민
XECon+PHPFest2014 발표자료 - ElasticSearch를 이용한 통합검색 구축방법 - 김훈민
 
SpringDataJPA - 스프링 캠프
SpringDataJPA - 스프링 캠프SpringDataJPA - 스프링 캠프
SpringDataJPA - 스프링 캠프
 
Massive service basic
Massive service basicMassive service basic
Massive service basic
 
PostGIS 시작하기
PostGIS 시작하기PostGIS 시작하기
PostGIS 시작하기
 
고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들
고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들
고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들
 
Introduction to Node.js
Introduction to Node.jsIntroduction to Node.js
Introduction to Node.js
 
Go言語で作る webアプリ@gocon 2013 spring
Go言語で作る webアプリ@gocon 2013 springGo言語で作る webアプリ@gocon 2013 spring
Go言語で作る webアプリ@gocon 2013 spring
 
Google Calendar API - PHP 연동하기
Google Calendar API - PHP 연동하기Google Calendar API - PHP 연동하기
Google Calendar API - PHP 연동하기
 
Pyqgis 기초편
Pyqgis 기초편Pyqgis 기초편
Pyqgis 기초편
 
Nodejs vatsal shah
Nodejs vatsal shahNodejs vatsal shah
Nodejs vatsal shah
 
GitLabをバックアップしてみた
GitLabをバックアップしてみたGitLabをバックアップしてみた
GitLabをバックアップしてみた
 
Django를 Django답게, Django로 뉴스 사이트 만들기
Django를 Django답게, Django로 뉴스 사이트 만들기Django를 Django답게, Django로 뉴스 사이트 만들기
Django를 Django답게, Django로 뉴스 사이트 만들기
 
[124] 하이브리드 앱 개발기 김한솔
[124] 하이브리드 앱 개발기 김한솔[124] 하이브리드 앱 개발기 김한솔
[124] 하이브리드 앱 개발기 김한솔
 

Similar to Django 봄은 다시 온다 - Django와 함께 좋은 웹서비스 코드 만들기.pdf

월간 리드잇(beta) 2018년 10월호
월간 리드잇(beta) 2018년 10월호월간 리드잇(beta) 2018년 10월호
월간 리드잇(beta) 2018년 10월호Hantae John Yu
 
190413 스타트업에서 마크업 개발자로 살아남기 - 오혜진 발표
190413 스타트업에서 마크업 개발자로 살아남기 - 오혜진 발표190413 스타트업에서 마크업 개발자로 살아남기 - 오혜진 발표
190413 스타트업에서 마크업 개발자로 살아남기 - 오혜진 발표Hyejin Oh
 
Golang+on+analytics+and+blockchain
Golang+on+analytics+and+blockchainGolang+on+analytics+and+blockchain
Golang+on+analytics+and+blockchainNAVER Engineering
 
임태현, 프로그래머 생존 가이드
임태현, 프로그래머 생존 가이드임태현, 프로그래머 생존 가이드
임태현, 프로그래머 생존 가이드태현 임
 
MongoDB in use(김인범, mongodb korea)
MongoDB in use(김인범, mongodb korea)MongoDB in use(김인범, mongodb korea)
MongoDB in use(김인범, mongodb korea)InBum Kim
 
Software engineer가 되기 위한 여정
Software engineer가 되기 위한 여정Software engineer가 되기 위한 여정
Software engineer가 되기 위한 여정Aree Oh
 
Room.d 사업계획서 3.0 ver
Room.d 사업계획서 3.0 verRoom.d 사업계획서 3.0 ver
Room.d 사업계획서 3.0 verwkddnjset
 
예비 개발자를 위한 웹서비스 개발 방법론 특강 - 폴리텍대학교 강서캠퍼스
예비 개발자를 위한 웹서비스 개발 방법론 특강 - 폴리텍대학교 강서캠퍼스예비 개발자를 위한 웹서비스 개발 방법론 특강 - 폴리텍대학교 강서캠퍼스
예비 개발자를 위한 웹서비스 개발 방법론 특강 - 폴리텍대학교 강서캠퍼스시은 김
 
예비 개발자를 위한 소프트웨어 세상 이야기
예비 개발자를 위한 소프트웨어 세상 이야기예비 개발자를 위한 소프트웨어 세상 이야기
예비 개발자를 위한 소프트웨어 세상 이야기수보 김
 
Kgc2014 삼한제국기 포스트모템 김찬웅
Kgc2014 삼한제국기 포스트모템 김찬웅Kgc2014 삼한제국기 포스트모템 김찬웅
Kgc2014 삼한제국기 포스트모템 김찬웅Chanwoong Kim
 
나에게 맞는 커리어를 만들어가기 - WTM18
나에게 맞는 커리어를 만들어가기 - WTM18나에게 맞는 커리어를 만들어가기 - WTM18
나에게 맞는 커리어를 만들어가기 - WTM18KYUNGSUK Cho
 
기술 관심 갖기: 스타트업 기술 101 (Interested in Tech?: Startup Technology 101)
기술 관심 갖기: 스타트업 기술 101 (Interested in Tech?: Startup Technology 101)기술 관심 갖기: 스타트업 기술 101 (Interested in Tech?: Startup Technology 101)
기술 관심 갖기: 스타트업 기술 101 (Interested in Tech?: Startup Technology 101)Jeongkyu Shin
 
How to implement your dream 20150427
How to implement your dream 20150427How to implement your dream 20150427
How to implement your dream 20150427Will Kim
 
[TECHCON 2019: MOBILE - iOS]2.들숨에 협업 날숨에 클린코드
[TECHCON 2019: MOBILE - iOS]2.들숨에 협업 날숨에 클린코드[TECHCON 2019: MOBILE - iOS]2.들숨에 협업 날숨에 클린코드
[TECHCON 2019: MOBILE - iOS]2.들숨에 협업 날숨에 클린코드NAVER Engineering
 
초보개발자의 TDD 체험기
초보개발자의 TDD 체험기초보개발자의 TDD 체험기
초보개발자의 TDD 체험기Sehun Kim
 
NHN 게임서버엔진팀 리빌딩과 운영 방침.pdf
NHN 게임서버엔진팀 리빌딩과 운영 방침.pdfNHN 게임서버엔진팀 리빌딩과 운영 방침.pdf
NHN 게임서버엔진팀 리빌딩과 운영 방침.pdfMancheol Jeon
 
Event Storming(이벤트 스토밍)
Event Storming(이벤트 스토밍)Event Storming(이벤트 스토밍)
Event Storming(이벤트 스토밍)종일 김
 
How To Become Better Engineer
How To Become Better EngineerHow To Become Better Engineer
How To Become Better EngineerDaeMyung Kang
 
[D2 CAMPUS] 안드로이드 오픈소스 스터디자료 - HTML, Android Animation
[D2 CAMPUS] 안드로이드 오픈소스 스터디자료 - HTML, Android Animation[D2 CAMPUS] 안드로이드 오픈소스 스터디자료 - HTML, Android Animation
[D2 CAMPUS] 안드로이드 오픈소스 스터디자료 - HTML, Android AnimationNAVER D2
 

Similar to Django 봄은 다시 온다 - Django와 함께 좋은 웹서비스 코드 만들기.pdf (20)

월간 리드잇(beta) 2018년 10월호
월간 리드잇(beta) 2018년 10월호월간 리드잇(beta) 2018년 10월호
월간 리드잇(beta) 2018년 10월호
 
190413 스타트업에서 마크업 개발자로 살아남기 - 오혜진 발표
190413 스타트업에서 마크업 개발자로 살아남기 - 오혜진 발표190413 스타트업에서 마크업 개발자로 살아남기 - 오혜진 발표
190413 스타트업에서 마크업 개발자로 살아남기 - 오혜진 발표
 
Golang+on+analytics+and+blockchain
Golang+on+analytics+and+blockchainGolang+on+analytics+and+blockchain
Golang+on+analytics+and+blockchain
 
임태현, 프로그래머 생존 가이드
임태현, 프로그래머 생존 가이드임태현, 프로그래머 생존 가이드
임태현, 프로그래머 생존 가이드
 
MongoDB in use(김인범, mongodb korea)
MongoDB in use(김인범, mongodb korea)MongoDB in use(김인범, mongodb korea)
MongoDB in use(김인범, mongodb korea)
 
Software engineer가 되기 위한 여정
Software engineer가 되기 위한 여정Software engineer가 되기 위한 여정
Software engineer가 되기 위한 여정
 
Room.d 사업계획서 3.0 ver
Room.d 사업계획서 3.0 verRoom.d 사업계획서 3.0 ver
Room.d 사업계획서 3.0 ver
 
예비 개발자를 위한 웹서비스 개발 방법론 특강 - 폴리텍대학교 강서캠퍼스
예비 개발자를 위한 웹서비스 개발 방법론 특강 - 폴리텍대학교 강서캠퍼스예비 개발자를 위한 웹서비스 개발 방법론 특강 - 폴리텍대학교 강서캠퍼스
예비 개발자를 위한 웹서비스 개발 방법론 특강 - 폴리텍대학교 강서캠퍼스
 
Microservice coding guide
Microservice coding guideMicroservice coding guide
Microservice coding guide
 
예비 개발자를 위한 소프트웨어 세상 이야기
예비 개발자를 위한 소프트웨어 세상 이야기예비 개발자를 위한 소프트웨어 세상 이야기
예비 개발자를 위한 소프트웨어 세상 이야기
 
Kgc2014 삼한제국기 포스트모템 김찬웅
Kgc2014 삼한제국기 포스트모템 김찬웅Kgc2014 삼한제국기 포스트모템 김찬웅
Kgc2014 삼한제국기 포스트모템 김찬웅
 
나에게 맞는 커리어를 만들어가기 - WTM18
나에게 맞는 커리어를 만들어가기 - WTM18나에게 맞는 커리어를 만들어가기 - WTM18
나에게 맞는 커리어를 만들어가기 - WTM18
 
기술 관심 갖기: 스타트업 기술 101 (Interested in Tech?: Startup Technology 101)
기술 관심 갖기: 스타트업 기술 101 (Interested in Tech?: Startup Technology 101)기술 관심 갖기: 스타트업 기술 101 (Interested in Tech?: Startup Technology 101)
기술 관심 갖기: 스타트업 기술 101 (Interested in Tech?: Startup Technology 101)
 
How to implement your dream 20150427
How to implement your dream 20150427How to implement your dream 20150427
How to implement your dream 20150427
 
[TECHCON 2019: MOBILE - iOS]2.들숨에 협업 날숨에 클린코드
[TECHCON 2019: MOBILE - iOS]2.들숨에 협업 날숨에 클린코드[TECHCON 2019: MOBILE - iOS]2.들숨에 협업 날숨에 클린코드
[TECHCON 2019: MOBILE - iOS]2.들숨에 협업 날숨에 클린코드
 
초보개발자의 TDD 체험기
초보개발자의 TDD 체험기초보개발자의 TDD 체험기
초보개발자의 TDD 체험기
 
NHN 게임서버엔진팀 리빌딩과 운영 방침.pdf
NHN 게임서버엔진팀 리빌딩과 운영 방침.pdfNHN 게임서버엔진팀 리빌딩과 운영 방침.pdf
NHN 게임서버엔진팀 리빌딩과 운영 방침.pdf
 
Event Storming(이벤트 스토밍)
Event Storming(이벤트 스토밍)Event Storming(이벤트 스토밍)
Event Storming(이벤트 스토밍)
 
How To Become Better Engineer
How To Become Better EngineerHow To Become Better Engineer
How To Become Better Engineer
 
[D2 CAMPUS] 안드로이드 오픈소스 스터디자료 - HTML, Android Animation
[D2 CAMPUS] 안드로이드 오픈소스 스터디자료 - HTML, Android Animation[D2 CAMPUS] 안드로이드 오픈소스 스터디자료 - HTML, Android Animation
[D2 CAMPUS] 안드로이드 오픈소스 스터디자료 - HTML, Android Animation
 

More from Kyoung Up Jung

OK, 계획대로 되고 있어?
OK, 계획대로 되고 있어?OK, 계획대로 되고 있어?
OK, 계획대로 되고 있어?Kyoung Up Jung
 
테스트가 뭐예요?
테스트가 뭐예요?테스트가 뭐예요?
테스트가 뭐예요?Kyoung Up Jung
 
Django를 배우다, Django로 배우다.
Django를 배우다, Django로 배우다.Django를 배우다, Django로 배우다.
Django를 배우다, Django로 배우다.Kyoung Up Jung
 
어른스럽게 일하기
어른스럽게 일하기어른스럽게 일하기
어른스럽게 일하기Kyoung Up Jung
 
신입에서 CTO까지, 야근하지 않는 웹개발
신입에서 CTO까지, 야근하지 않는 웹개발신입에서 CTO까지, 야근하지 않는 웹개발
신입에서 CTO까지, 야근하지 않는 웹개발Kyoung Up Jung
 
웹 개발, 왜 어려운가?
웹 개발, 왜 어려운가?웹 개발, 왜 어려운가?
웹 개발, 왜 어려운가?Kyoung Up Jung
 
Django ORM 왜 어렵게 느껴질까?
Django ORM 왜 어렵게 느껴질까?Django ORM 왜 어렵게 느껴질까?
Django ORM 왜 어렵게 느껴질까?Kyoung Up Jung
 
Django로 쇼핑몰 만들자
Django로 쇼핑몰 만들자Django로 쇼핑몰 만들자
Django로 쇼핑몰 만들자Kyoung Up Jung
 
뭔지 모르지만 발표
뭔지 모르지만 발표뭔지 모르지만 발표
뭔지 모르지만 발표Kyoung Up Jung
 
Django개발은 PyCharm에서
Django개발은 PyCharm에서Django개발은 PyCharm에서
Django개발은 PyCharm에서Kyoung Up Jung
 

More from Kyoung Up Jung (11)

NRISE에서 3개월
NRISE에서 3개월NRISE에서 3개월
NRISE에서 3개월
 
OK, 계획대로 되고 있어?
OK, 계획대로 되고 있어?OK, 계획대로 되고 있어?
OK, 계획대로 되고 있어?
 
테스트가 뭐예요?
테스트가 뭐예요?테스트가 뭐예요?
테스트가 뭐예요?
 
Django를 배우다, Django로 배우다.
Django를 배우다, Django로 배우다.Django를 배우다, Django로 배우다.
Django를 배우다, Django로 배우다.
 
어른스럽게 일하기
어른스럽게 일하기어른스럽게 일하기
어른스럽게 일하기
 
신입에서 CTO까지, 야근하지 않는 웹개발
신입에서 CTO까지, 야근하지 않는 웹개발신입에서 CTO까지, 야근하지 않는 웹개발
신입에서 CTO까지, 야근하지 않는 웹개발
 
웹 개발, 왜 어려운가?
웹 개발, 왜 어려운가?웹 개발, 왜 어려운가?
웹 개발, 왜 어려운가?
 
Django ORM 왜 어렵게 느껴질까?
Django ORM 왜 어렵게 느껴질까?Django ORM 왜 어렵게 느껴질까?
Django ORM 왜 어렵게 느껴질까?
 
Django로 쇼핑몰 만들자
Django로 쇼핑몰 만들자Django로 쇼핑몰 만들자
Django로 쇼핑몰 만들자
 
뭔지 모르지만 발표
뭔지 모르지만 발표뭔지 모르지만 발표
뭔지 모르지만 발표
 
Django개발은 PyCharm에서
Django개발은 PyCharm에서Django개발은 PyCharm에서
Django개발은 PyCharm에서
 

Django 봄은 다시 온다 - Django와 함께 좋은 웹서비스 코드 만들기.pdf

  • 1. v 제목 이름 v Django 봄은 다시 온다 Django와 함께 좋은 웹서비스 코드 만들기 정경업
  • 2. v 제목 이름 v 목차 발표자 소개 Django 봄은 다시 온다 좋은 코드란? 어떻게 좋은 코드를 만들까? 결론
  • 4. v 제목 이름 경력 ● 프리랜서, 한겨레 CMS 리뉴얼 외주 개발 (현재) ● Iamdt Backend Engineer (3개월) ● NRISE Backend Chapter Leader (1년 반) ● ODK Media Backend Leader (3년) ● 프리랜서 (1년), 혜움세무회계 CTO 4개월 포함 ● SmartStudy Softwore Engineer (3년 반) ● 아이티동아 Developer (4년)
  • 5. v 제목 이름 이전 발표들 PyCon Korea ● 2021 Django를 Django답게, Django로 뉴스 사이트 만들기 ● 2017 신입에서 CTO까지, 야근하지 않는 웹개발 ● 2016 Django로 쇼핑몰 만들자 DjangoCon Korea ● 2018 Django를 배우다, Django로 배우다. ODK Media 사내 ● 2021 OK, 계획대로 되고 있어? ● 2020 테스트가 뭐에요?
  • 6. v 제목 이름 일하다보니 10년 이상 Django로, 여러 스타트업의 웹서비스를, 개발 및 운영했고, 그 중에 같은 서비스를 3번 리뉴얼 해봤습니다. 그러다보니 Django가 왜 생산성이 높았더라? 이유를 분석해서 이야기하면 좋겠다. Django 꼭 쓰라는거 아닙니다.
  • 8. v 제목 이름 Django가 뭐죠? 숙련된 개발자가 마감일을 지킬 수 있게 빠르고, 많은 것이 준비된 뉴스 CMS로 시작한 파이썬 웹프레임워크 https://www.djangoproject.com/community/logos/
  • 10. v 제목 이름 프론트엔드의 서버 진출 (SSR) ● React, Next.js ● Vue, Nuxt.js ● Svelte, SvelteKit 기존 웹 프레임워크의 프론트 진출 ● Django, HTMX ● Phoenix, Liveview ● Laravel, LiveWire https://knowyourmeme.com/memes/spider-man-pointing-at-spider-man
  • 11. v 제목 이름 이 둘이 만나는 지점이 있을까? SSR은 기존 웹 프레임워크들이 이미 준비된 것들이 많다. Django가 특히 이미 잘하는 것들이 많다. HTMX로 프론트도 챙기고 하던 일도 잘하는 Django Django 봄은 다시 올지도? 네이버 웹툰 “들어는 보았나! 질풍기획!” 중 밈이 된 장면
  • 13. v 제목 이름 목표를 달성하는 코드 뉴스 사이트를 만들어주세요. (1) ● 기사를 분류하고 예쁘게 볼 수 있어야 합니다. ● 기사를 작성하고, 수정하고, 삭제할 수 있어야 합니다. ● 기사를 여러 플랫폼에 배포할 수 있어야 합니다. ● 갑자기 트래픽이 몰려도 어느정도 견딜 수 있어야 합니다. 비즈니스 목표를 달성하는 코드 - 충분히 좋은 코드일까?
  • 14. v 제목 이름 사실 목표는 더 있다. 뉴스 사이트를 만들어주세요. (2) ● 개발자는 당신 혼자입니다. ● 3개월 뒤에 새 기능을 넣어야 합니다. ● 1년 뒤에 개편을 해야합니다. ● 무슨 일이 일어날지 몰라도 해야할겁니다. 비즈니스 목표는 변하고, 비용은 제한적이다. 만화 “요츠바랑!” 4권 중 밈이 된 이미지
  • 15. v 제목 이름 여러 목표를 달성하는 코드 ● 비즈니스 기능을 달성하고 ● 비즈니스 변화에 대응하고 ● 비용은 적게 이를 좋은 코드라고 생각합니다. https://www.reddit.com/r/ProgrammerHumor/comments/l9lbm2/code_review_be_like/ 영화 “원더 우먼 1984”에서 밈이 된 한 장면
  • 17. v 제목 이름 코드양 읽을 코드가 적어야 읽으며 고치기 유리하다. 단어 오자 하나 수정하려면? ● 8만 대장경 vs 3줄 요약문 Django는 많은 것이 이미 만들어져 있어 코드양을 줄인다. 국보 제23호 합천 해인사 대장경판 / 문화재청 https://brunch.co.kr/@cowithawrd/72
  • 19. v 제목 이름 데이터 구조 전환 단계 맥락이 다른 단계에서 데이터 전달을 해나가는 과정, 웹 서비스는 데이터 구조를 계속 바꿔야 한다. 서버 안에서도 단계가 나뉜다. 각 단계마다 데이터 구조를 만들고 매핑. 이미 단계가 많고 복잡하다. 하나의 언어로 여러 단계를 다룰 수 있다면 효과적 https://excalidraw.com 로 직접 그림
  • 20. v 제목 이름 기사 작성 구현 Post 요청을 받고 유효한지 확인할 폼 단계를 Model의 필드만 정해 만들 수 있다. 일부 HTML 코드도 자동으로 만들 수 있다.
  • 21. v 제목 이름 의존은 좋은가 나쁜가? 의존이 높으면? 코드를 고치면 다른 곳에도 영향을 준다. 좋은점 ● 한번에 고칠 수 있다. 나쁜점 ● 하나가 깨지면 다른 것도 깨진다. Form 구조 따로 정의하여 모델의 의존을 낮춰보기
  • 22. v 제목 이름 생산성을 위한 선택 할 수 있다면? ● 간단한 것은 높은 의존으로 빠르게 구현 ● 복잡한 것은 낮은 의존으로 유연하게 구현 ● 일단 만들고, 이후 필요에 따라 수정 Form HTML도 직접 정의하여 의존을 낮춰보자
  • 23. v 제목 이름 고치기 쉬우려면? 고칠 부분을 찾기 쉬워야 ● 가독성, 구조화 등 ● Pythonic하게 짜면 쉬워진다. 찾은 부분을 바꾸기 쉬워야 ● 비즈니스를 본질적으로 정리하고 ● 원자적 기능 단위를 구성 ● 조립해서 대응 애니 “우주소년 아톰” 중 밈이 된 장면 애니 “곰돌이 푸” 중 밈이 된 장면
  • 24. v 제목 이름 고치는데 비용이 큰 부분은? 답은? 표현 영역 프론트 중간 영역 서버 데이터 영역 DB 사용자가 우선이지 비즈니스 로직은 여긴데? 저장은 어디에 하고? 만화 “맛의 달인” 중 밈이 된 장면
  • 25. v 제목 이름 데이터 모델 구조 변경 비용이 크다. ● 기존 데이터를 이전 해야 할 수도 있다. ● 기존 데이터에 관련된 코드를 모두 고쳐야 한다. ● 변경하는 도중에도 웹서비스가 동작해야 한다. https://www.reddit.com/r/ProgrammerHumor/comments/yk2ush/databases/
  • 26. v 제목 이름 데이터 모델은 비즈니스를 표현한다. 비즈니스 변경은 곧 데이터 모델의 변화. 현재 비즈니스에 맞게 항상 고쳐야 한다. 낮은 비용으로 고칠 수 있다면? 자주 일어나고 힘든 일을 쉽게 할 수 있다.
  • 27. v 제목 이름 데이터 모델 변경 해보기 banner/models.py 내용을 수정 한 후
  • 28. v 제목 이름 결론 좋은 코드는 ● 만들때 적은 비용이 들고, ● 고칠 곳을 발견하기 쉽고, 고치기 쉽다. 적은 비용으로 만들려면 ● 적은 코드로 기능을 구현하고 ● 필요에 따라 의존을 조절하기 쉽고 고치기 쉽게 만들려면 ● 가장 어려운 부분인 데이터 모델부터 쉽게 고칠 수 있어야 한다. Django에 많은 것이 이미 준비되어 있다. http://www.quickmeme.com/meme/35epb9
  • 29. v 제목 이름 v 감사합니다. 질문 받습니다. 발표 종료 후에도 별도의 자리를 마련해 보겠습니다.