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
감사합니다.
질문 받습니다.
발표 종료 후에도
별도의 자리를 마련해 보겠습니다.

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

  • 1.
    v 제목 이름 v Django 봄은 다시온다 Django와 함께 좋은 웹서비스 코드 만들기 정경업
  • 2.
    v 제목 이름 v 목차 발표자 소개 Django 봄은다시 온다 좋은 코드란? 어떻게 좋은 코드를 만들까? 결론
  • 3.
  • 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 꼭 쓰라는거 아닙니다.
  • 7.
  • 8.
    v 제목 이름 Django가 뭐죠? 숙련된 개발자가마감일을 지킬 수 있게 빠르고, 많은 것이 준비된 뉴스 CMS로 시작한 파이썬 웹프레임워크 https://www.djangoproject.com/community/logos/
  • 9.
  • 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 봄은 다시 올지도? 네이버 웹툰 “들어는 보았나! 질풍기획!” 중 밈이 된 장면
  • 12.
  • 13.
    v 제목 이름 목표를 달성하는 코드 뉴스사이트를 만들어주세요. (1) ● 기사를 분류하고 예쁘게 볼 수 있어야 합니다. ● 기사를 작성하고, 수정하고, 삭제할 수 있어야 합니다. ● 기사를 여러 플랫폼에 배포할 수 있어야 합니다. ● 갑자기 트래픽이 몰려도 어느정도 견딜 수 있어야 합니다. 비즈니스 목표를 달성하는 코드 - 충분히 좋은 코드일까?
  • 14.
    v 제목 이름 사실 목표는 더있다. 뉴스 사이트를 만들어주세요. (2) ● 개발자는 당신 혼자입니다. ● 3개월 뒤에 새 기능을 넣어야 합니다. ● 1년 뒤에 개편을 해야합니다. ● 무슨 일이 일어날지 몰라도 해야할겁니다. 비즈니스 목표는 변하고, 비용은 제한적이다. 만화 “요츠바랑!” 4권 중 밈이 된 이미지
  • 15.
    v 제목 이름 여러 목표를 달성하는코드 ● 비즈니스 기능을 달성하고 ● 비즈니스 변화에 대응하고 ● 비용은 적게 이를 좋은 코드라고 생각합니다. https://www.reddit.com/r/ProgrammerHumor/comments/l9lbm2/code_review_be_like/ 영화 “원더 우먼 1984”에서 밈이 된 한 장면
  • 16.
  • 17.
    v 제목 이름 코드양 읽을 코드가 적어야읽으며 고치기 유리하다. 단어 오자 하나 수정하려면? ● 8만 대장경 vs 3줄 요약문 Django는 많은 것이 이미 만들어져 있어 코드양을 줄인다. 국보 제23호 합천 해인사 대장경판 / 문화재청 https://brunch.co.kr/@cowithawrd/72
  • 18.
  • 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 감사합니다. 질문 받습니다. 발표 종료후에도 별도의 자리를 마련해 보겠습니다.