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

임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012
devCAT Studio, NEXON
 
임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013
devCAT Studio, NEXON
 

What's hot (20)

라이브 서비스를 위한 게임 서버 구성
라이브 서비스를 위한 게임 서버 구성라이브 서비스를 위한 게임 서버 구성
라이브 서비스를 위한 게임 서버 구성
 
데이터베이스 프로젝트 최종보고서
데이터베이스 프로젝트 최종보고서데이터베이스 프로젝트 최종보고서
데이터베이스 프로젝트 최종보고서
 
[Pgday.Seoul 2020] SQL Tuning
[Pgday.Seoul 2020] SQL Tuning[Pgday.Seoul 2020] SQL Tuning
[Pgday.Seoul 2020] SQL Tuning
 
엘라스틱서치 실무 가이드_202204.pdf
엘라스틱서치 실무 가이드_202204.pdf엘라스틱서치 실무 가이드_202204.pdf
엘라스틱서치 실무 가이드_202204.pdf
 
쉽게 쓰여진 Django
쉽게 쓰여진 Django쉽게 쓰여진 Django
쉽게 쓰여진 Django
 
[D2] java 애플리케이션 트러블 슈팅 사례 & pinpoint
[D2] java 애플리케이션 트러블 슈팅 사례 & pinpoint [D2] java 애플리케이션 트러블 슈팅 사례 & pinpoint
[D2] java 애플리케이션 트러블 슈팅 사례 & pinpoint
 
서비스중인 게임 DB 설계 (쿠키런 편)
서비스중인 게임 DB 설계 (쿠키런 편)서비스중인 게임 DB 설계 (쿠키런 편)
서비스중인 게임 DB 설계 (쿠키런 편)
 
Django admin site 커스텀하여 적극적으로 활용하기
Django admin site 커스텀하여 적극적으로 활용하기Django admin site 커스텀하여 적극적으로 활용하기
Django admin site 커스텀하여 적극적으로 활용하기
 
2017 Pycon KR - Django/AWS 를 이용한 쇼핑몰 서비스 구축
2017 Pycon KR - Django/AWS 를 이용한 쇼핑몰 서비스 구축2017 Pycon KR - Django/AWS 를 이용한 쇼핑몰 서비스 구축
2017 Pycon KR - Django/AWS 를 이용한 쇼핑몰 서비스 구축
 
iFunEngine: 30분 만에 게임 서버 만들기
iFunEngine: 30분 만에 게임 서버 만들기iFunEngine: 30분 만에 게임 서버 만들기
iFunEngine: 30분 만에 게임 서버 만들기
 
Django의 배신(주니어 개발자의 Django 삽질기)
Django의 배신(주니어 개발자의 Django 삽질기)Django의 배신(주니어 개발자의 Django 삽질기)
Django의 배신(주니어 개발자의 Django 삽질기)
 
임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012
 
임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013
 
파이콘 한국 2019 - 파이썬으로 서버를 극한까지 끌어다 쓰기: Async I/O의 밑바닥
파이콘 한국 2019 - 파이썬으로 서버를 극한까지 끌어다 쓰기: Async I/O의 밑바닥파이콘 한국 2019 - 파이썬으로 서버를 극한까지 끌어다 쓰기: Async I/O의 밑바닥
파이콘 한국 2019 - 파이썬으로 서버를 극한까지 끌어다 쓰기: Async I/O의 밑바닥
 
Django in Production
Django in ProductionDjango in Production
Django in Production
 
게임 디자이너와 게임 서버
게임 디자이너와 게임 서버게임 디자이너와 게임 서버
게임 디자이너와 게임 서버
 
[2019] 200만 동접 게임을 위한 MySQL 샤딩
[2019] 200만 동접 게임을 위한 MySQL 샤딩[2019] 200만 동접 게임을 위한 MySQL 샤딩
[2019] 200만 동접 게임을 위한 MySQL 샤딩
 
스타트업 인턴 개발자 3달간의 고군분투기 김은향
스타트업 인턴 개발자 3달간의 고군분투기 김은향스타트업 인턴 개발자 3달간의 고군분투기 김은향
스타트업 인턴 개발자 3달간의 고군분투기 김은향
 
Amazon Aurora Read Replica와 Django DB Router 활용팁 - 한종원, HBSmith :: AWS Summi...
Amazon Aurora Read Replica와 Django DB Router 활용팁 - 한종원, HBSmith  :: AWS Summi...Amazon Aurora Read Replica와 Django DB Router 활용팁 - 한종원, HBSmith  :: AWS Summi...
Amazon Aurora Read Replica와 Django DB Router 활용팁 - 한종원, HBSmith :: AWS Summi...
 
MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현
 

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

Kgc2014 삼한제국기 포스트모템 김찬웅
Kgc2014 삼한제국기 포스트모템 김찬웅Kgc2014 삼한제국기 포스트모템 김찬웅
Kgc2014 삼한제국기 포스트모템 김찬웅
Chanwoong Kim
 

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

월간 리드잇(beta) 2018년 10월호
월간 리드잇(beta) 2018년 10월호월간 리드잇(beta) 2018년 10월호
월간 리드잇(beta) 2018년 10월호
 
190413 스타트업에서 마크업 개발자로 살아남기 - 오혜진 발표
190413 스타트업에서 마크업 개발자로 살아남기 - 오혜진 발표190413 스타트업에서 마크업 개발자로 살아남기 - 오혜진 발표
190413 스타트업에서 마크업 개발자로 살아남기 - 오혜진 발표
 
AI시대, 개발자로서 살아가는 법 - AI를 이용해서 더 좋은 개발자로 성장하기
AI시대, 개발자로서 살아가는 법 - AI를 이용해서 더 좋은 개발자로 성장하기AI시대, 개발자로서 살아가는 법 - AI를 이용해서 더 좋은 개발자로 성장하기
AI시대, 개발자로서 살아가는 법 - AI를 이용해서 더 좋은 개발자로 성장하기
 
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
 

More from Kyoung Up Jung

More from Kyoung Up Jung (13)

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 이해하기
간단한 블로그를 만들며 Django 이해하기간단한 블로그를 만들며 Django 이해하기
간단한 블로그를 만들며 Django 이해하기
 
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 감사합니다. 질문 받습니다. 발표 종료 후에도 별도의 자리를 마련해 보겠습니다.