뭔지 모르지만 발표
ASP에서 Django로 옮겨간 사연
페이스북에서 홧김에 정한 패기 넘치는 제목
Slide 2
Slide 2 text
주의
이 문서는 수준이 참 낮습니다.
미리 양해를 구합니다.
만든 사람이 마감에 쫓겨 제 정신이 아닌 채 만들었습니다.
진지합니다. 궁서체입니다.
Slide 3
Slide 3 text
파이라고 합니다.
2013년 1월부터 지금까지
요새 Hot 한 SMARTSTUDY에서
소프트웨어 엔지니어 인척 하며
월급과 경험치를 훔치고 있습니다.
+ exp 100
+ gold 400
ㅋㅋㅋㅋㅋ
파이
[월급루팡]
Slide 4
Slide 4 text
뭘 할까 하다가, IRC에서...
<아침놀> 2013.08.30 21:16:26
원래 남의 삽질은 좋은 구경거리(....)
그렇다고 합니다.
그래서 그냥 적당히 삽질한 썰 풉니다.
적당히 삽질한 썰 풉니다.
되지도 않는 드립이나 쳐야지
Slide 5
Slide 5 text
이것은 한 개발자의 성장기
라고 쓰고 삽질기 라고 읽습니다.
Slide 6
Slide 6 text
첫 직장
G사에 입사.
취직 못하고 노는 것 보단 좋겠지 뭐.(안일)
하지만 날 기다리고 있던 건
Slide 7
Slide 7 text
ASP!!!! 오 예!!
그것도 Classic ASP. 망했어요.
이때는 아직 ASP가 좋은지 나쁜지도 몰랐다.
Slide 8
Slide 8 text
당시 할 줄 아는 거
약간의 웹 디자인
XHTML / CSS
학교 과제 수준의 C, Java
게시판 겨우 짤 수준의 JSP
이글루스 스킨만들다가...
졸업작품 하느니라...
Slide 9
Slide 9 text
취직이 된 게 신기하다.
시작된 월급 루팡 전설… 투 비 컨티뉴
대표님, 절 뭘 믿고 뽑았나요?
Slide 10
Slide 10 text
최초 나모웹에디터로 제작
5년간 리뉴얼 없었음
놀랍게도
여기에 있던 코드가 여기에도 또 있고…
수 십개의 게시판이 복붙 복붙
당시 G웹진의 상황
혁신적인 iCode
Slide 11
Slide 11 text
소스 코드가 2GB!
돌아가는 게 신기하다.
게임 소스 아닙니다. 웹페이지입니다.
Slide 12
Slide 12 text
ASP로 뭘 했나요?
모바일 게임 소개 페이지 제작
이벤트 페이지, 설문조사 페이지 제작
다음 TV팟 연동 코너 제작
메인페이지 리뉴얼 등 등.
Slide 13
Slide 13 text
object.title을 해보고 싶어서
언제까지 SQL 노가다 할텐가..!
직접 유사 ORM 제작.
Model용 Class는 Excel을 활용하여 생성(...)
Top10, List 등 그때그때 필요한 함수 만듬
결론
ASP로 객체지향 프로그래밍,
몹쓸 짓이구나.
Slide 14
Slide 14 text
고통 받는 ASP
관리할 수 없는 거대한 스파게티 소스
해킹 취약(망할 웹셀)
캐슬, 웹나이트 등 별짓을 다 해도 뚫린다.
크롬 : 이 사이트는 헤로운 사이트다.
Slide 15
Slide 15 text
나에게 떨어진 임무
I웹진을 새로 만들고 G웹진을 리뉴얼 하라.
Slide 16
Slide 16 text
단, 너 혼자서
까라면 까야지...
할 수 있지? … / 네...
Slide 17
Slide 17 text
ASP는 안되겠어, 어떻게든...
주변에 알만한 사람들에게 어떻게든
날로 먹을 수 있는 프레임워크를 추천 받았다.
후보는 ROR과 Django.
Slide 18
Slide 18 text
Django!
<아침놀> 제가 이번에 책을 검수했는데요...
쉽고 빠른 웹개발
Django.
아침놀님의 강력 추천.
더 이상 설명은 생략한다.
Slide 19
Slide 19 text
날로 먹을 수 있다!
ASP로 수십 수백줄 짜야했던 것들이
Django에는 이미 다 있다.
ORM, Model, Template, View,
User, Auth, Admin, 등등등…
Slide 20
Slide 20 text
그러니 잘 찾아봐
쉽긴 X뿔...
세상의 모든 것을 그곳에 두고 왔다.
docs.djangoproject.com
Slide 21
Slide 21 text
모든 것을 새롭게
아파치나 IIS로 다 되는거 아니였나요?!
WSGI가 뭐에요?
파일 서빙을 위한 경량 웹서버를 따로 돌려야한
다고요?
Nginx는 또 뭐하는 놈이죠?
HTTP가 뭐였죠?
….
웹이 뭐죠..?
Slide 22
Slide 22 text
서버가 어찌 돌아가는거야?
소스코드
웹서버
클라이언트
ASP
url = path 요청
웹서버가 알아서 다 해요
소스코드
웹서버
(proxy)
클라이언트
Django url != path 함수 실행 명령
Django
(Python)
WSGI
이게 다 뭐다냐.
Slide 23
Slide 23 text
하지만 해냈다.
I웹진 개발
❏ 최초 버전 약 4개월 걸림. 오픈 성공.
❏ 최적화, 그거 먹는 거에요? -> 장애 발생
❏ 캐쉬 발라서 해결.
❏ Django는 캐쉬 설정도 참 쉽습니다.
❏ 모듈을 나눌 줄 몰랐다.(Python 초보)
❏ 천 단위 라인의 코드 발생(.....)
Slide 24
Slide 24 text
이어지는 G웹진 리뉴얼
수십 개의 게시판 중에 고르고 골라서
보존해야 하는 데이터 약 6만건
마이그레이션 해야 한다.
더불어 I웹진의 교훈
- 쓸대없이 만들지말고 Django Admin을 활용하자
- 캐쉬 등 미리 최적화 구조를 생각하자.
- 디자인 그냥 내가 하자.
Slide 25
Slide 25 text
목표 재정의
기사를 최대한 읽기 쉽게 합시다.
기사 생산 및 배포가 쉽게 해주세요.
웹 표준 준수로 검색 잘되게 해주세요.
짧고 예쁜 URL 주세요. (예전 URL 리다이렉트)
망한 커뮤니티는 완전 대폭 축소하죠.
배너는 밥줄이라 포인트 시스템 있어야 해요.
…..
Slide 26
Slide 26 text
근데, 저는 한 명입니다.
공돌이를 갈아넣어봅시다.
으아아아아아...
한번 해봤으니 이번엔 좀 쉬울꺼야… 쉽긴 X뿔...
Slide 27
Slide 27 text
일단 마이그레이션
게시판 수만큼 있는 테이블
컬럼으로 나뉜 페이지 구분(text1,text2,text3..)
기사 내용엔 나모 강한 향기가(....)
….
어쩌라고….
Slide 28
Slide 28 text
마이그레이션 계속
모든 것은 Django 안에서.. (management cmd)
1. 하나의 모델로 읽어온다.
2. 필요한 정보를 추출하여 분류/관계 생성
3. 분류/관계 맞춰서 새 모델에 넣기
4. 새 모델에서 잘못된 데이터 재 가공
5. 위 단계 예상하지 못한 추가 작업
스크립트가 몇 개니...
Slide 29
Slide 29 text
Backend
module 분리를 의미 있게 열심히
자주 쓰는 모델은 역정규화
save()에서 캐쉬 초기화
django admin에서 모든 것을 관리
Slide 30
Slide 30 text
Publishing
각종 포탈 사이트로 기사 전송하는 많은 방법
FTP, RSS, XML, JSON…
publish 앱에서 모두 해결
관리는 모두 Django admin
Django admin은 (알고 쓰면) 쉽고 강력하다.
Slide 31
Slide 31 text
기사 관리 및 배포(출판)
Slide 32
Slide 32 text
기사 작성
Slide 33
Slide 33 text
Frontend
기사를 읽기 쉽게 하자.
디자인은 단순(좀 심했나.)
배너는 밥줄이라...
HTML5 / CSS3
jQuery, Bootstrap custom
IE 6~7 포기, 8 부분 지원
Slide 34
Slide 34 text
허술한
모자이크
Slide 35
Slide 35 text
어떻게든 했습니다.
되던데요.
더이상 PPT를 만들다간 내가 지루해서 안되겠다.
Slide 36
Slide 36 text
다하고 보니...
국내에 얼마 없는 Django 개발자.(요샌 많더라.)
얕지만 나름 풀 스택 개발자.
가.. 되어있더라…?!
Slide 37
Slide 37 text
정신 차려보니...
많은 개발자들이 가고 싶어하는 HOT한
스타트업 SMARTSTUDY에 탑승해 있네요.
SMARTSTUDY는
여러분을 환영합니다.
기 승 전 광고