11. 11
매년 최소한 새로운 언어 하나를 익혀라.
같은 문제를 다른 언어를 사용하여 다른 방식으로 풀라.
여러 접근방법을 배우게 되면 사고를 확장하는 데 도움이 되고,
문제와 삽질을 피할 수 있다.
〃Andrew Hunt, David Thomas - 실용주의 프로그래머〃
인트로
12. 12
지금 현재 자신이 주로 삼고 있는 언어 이외에,
새로운 프로그래밍 언어를 배우라.
새 언어를 배우고, 새 언어의 표현 방식을 배우라.
그렇게 하면 사고의 영역이 확장 될 수 있다.
〃Chad Fowler - 사랑하지 않으면 떠나라〃
인트로
13. 13
개인적인 공부는 쉽다.
= 시간만 있으면, 흥미만 있으면…
- 시간이 없어도 의지만 있으면 개인 스터디는 쉽다.
- 그만큼 포기도 관대하게 빨리 할 수 있다.
인트로
19. 19
기존과는 다른 기술 방식으로
담당하게 된 프로젝트
“영화 추천 서비스”
(베타 오픈. 계속 열일 중…)
인트로
20. 20
• 슬라이드를 통해 보여주고 싶은 것
- 언론사는 보수적인 경향이 있어서 독특한 기술이 없을 거야
- 회사에서는 “안정”이 중요 하기 때문에,
결국엔 한 기술로만 작업이 진행 될 거야.
- 개인 발전을 위해서는 업무 외의 시간에서만 활용해야 하는 걸까?
… 라는 편견을 없애고 싶습니다.
인트로
22. 22
• 기존 시스템
- Architecture
ASP.NET(C#)의 웹 폼을 이용 하여, 데이터를 뿌려준다.
Front-End와 Back-End의 경계 역할이 제대로 나누어져 있지 않다.
기술 변화
Web Application
ASP.NET
(Web Form)
database
jQuery
23. 23
• 기존 시스템
- Architecture
Web Form 방식은 웹 개발을 할 때 아직도 많이 사용 되는 기능.
하지만 이 방식에 너무 익숙해지면 “복-붙 프로그래머”가 되어,
개발에 흥미가 떨어진다.
기술 변화
Web Application
ASP.NET
(Web Form)
database
jQuery
24. 24
• 기존 시스템
- Architecture
jQuery를 비하하는 것은 아니지만,
Ajax 통신을 하는 부분의 구조가 복잡해지면 html 그려내기 어렵다.
(잘 못하면 스파게티 코드 될 가능성도…)
기술 변화
Web Application
ASP.NET
(Web Form)
database
jQuery
25. 25
• 새로운 시스템
- Architecture
기술 변화
Front-End
Vue.js
jQuery
bootstrap
Back-End
Ruby(Rails)
json
database
WEBrick
26. 26
• 새로운 시스템
- Architecture
기술 변화
Front-End
Vue.js
jQuery
bootstrap
Back-End
Ruby(Rails)
json
database
WEBrick
27. 27
• 새로운 시스템
- Architecture
기술 변화
Front-End
Vue.js
jQuery
bootstrap
Ajax 를 이용하여,
Back-End에서 가공한 json 데이터를
Vue.js를 이용 하여 화면에 뿌려준다.
32. 32
• 새로운 시스템
- Architecture
기술 변화
Front-End
Vue.js
jQuery
bootstrap
관리자 페이지는 bootstrap을 사용하여,
심플하게 화면을 구성 한다.
- bootstrap admin template 선정
선택1) adminlte
선택2) matrix-admin
=> matrix-admin template 선택
=> 이유? adminlte는 많이 써 봐서 식상함.
무조건 새로운 것!ㅎㅎ
34. 34
• 새로운 시스템
- Architecture
기술 변화
Front-End
Vue.js
jQuery
bootstrap
Back-End
Ruby(Rails)
json
database
WEBrick
35. 35
• 새로운 시스템
- Architecture
기술 변화
Back-End
Ruby(Rails)
json
WEBrick
Ruby On Rails 를 이용 하여,
데이터베이스 조회 및, json 데이터를 가공 한다.
ORM 방식을 도입.
조금만 쉽게(?) 가자. 프로시저 사용
( 다른 사람들도 나 없을 때, 수정을 할 수 있도록… )
37. 37
• 새로운 시스템
- Architecture
기술 변화
Back-End
Ruby(Rails)
json
WEBrick
WEBrick을 이용하여 웹 서버를 구동 한다.
38. 38
• 새로운 시스템
- Architecture
기술 변화
Front-End
Vue.js
jQuery
bootstrap
Back-End
Ruby(Rails)
json
databaseWEBrick
39. 39
• 새로운 시스템
- Architecture
기술 변화
database
프로시저 사용
한 가지 이슈
- 프로시저에서 SELECT 구문을 여러 개로 구성 하면
json 가공하기 어려워 진다.
(현재 정책은 1 Procedure 1 ResultSet)
40. 40
• 새로운 시스템
- 기술 선정 이유
- Ruby
1) 빠른 생산성
2) 타 프레임워크에 비해 설정에 손이 많이 안 간다.
3) 최근 급 성장 하고 있는 스타트업에서 많이 채택한 언어.
( http://rorlab.org/websites?per_page=100 )
그리고…
새로운 언어 학습의 즐거움!
기술 변화
41. 41
• 새로운 시스템
- 기술 선정 이유
- Vue.js
1) 발음대로 철저히 뷰(View)에 최적화된 프레임워크
(철저히 Front 에서 단독으로 사용)
2) 가볍고 빠르다.
3) 한글 레퍼런스 문서도 있고, 러닝 커브가 빠르다.
(http://kr.vuejs.org/v2/guide/ )
그리고…
새로운 언어 학습의 즐거움!
기술 변화
42. 42
• 새로운 시스템
- 해야 할 일!( 베타 오픈 => 정식 오픈 )
- Vue.js의 Component를 사용 하여, 공통 모듈 병합
- Ruby와 친해진 후, ORM 기법을 이용하여 고도화 예정
(ORM을 안 쓰면 Ruby를 쓸 이유도 없다.)
- Puma Web Server로 교체
- 이슈!
- 부트스트랩 템플릿에 Vue.js를 사용하다 보니(관리자페이지),
( 내장 라이브러리와 충돌되는 부분이 많다. )
( 하지만 사용자 페이지는 퍼블리싱이 되어 문서가 나오기 때문에, 반영 하기 쉬웠다. )
- 루비 하는 사람이 나 뿐이다…( 휴가 어떻게 가지?? )
기술 변화
44. 44
• 기존 시스템
- “PMS”에 TASK를 등록 한다.
- 디자인을 진행 한다.
- 퍼블리싱을 진행 한다.
- 개발을 진행 한다.
- 테스트를 한다.
- 실 서버에 배포 한다.
모든 작업의 히스토리는 PMS에서 확인이 가능 하다.
전형적인 “Water Fall” 방식!!
방법론 변화
45. 45
• 새로운 시스템
- “Trello”를 이용하여 1주 ~ 2주 정도의 TASK를 리스트 업 하고
- 개발을 진행 한다. (디자인, 기획과는 상관 없이)
모든 작업의 히스토리는 Confluence를 이용하여 문서화 한다.
( TO-DO 리스트 / 리서치 문서 / 설계 문서 /
개발 문서 / 종료 회의록 등등 )
전형적인 “Agile” Scrum 방식!!
방법론 변화
53. 53
• 새로운 시스템
- trello + confluence를 이용해서 느낀 장점
- 계획성 있게 프로젝트가 진행 된다.
( trello의 to-do list / confluence의 상세 일정 체크 )
- 문서 정리를 깔끔하게 할 수 있다.
( confluence 의 매크로 기능 )
방법론 변화
54. 54
• 새로운 시스템
- 다음에 시도 해 보고 싶은 것
- Slack의 도입 ( 도입 완료 )
- 현재는 독고다이로 개발을 하기 때문에 메신저가 필요 없다.
- 추후 루비 영혼의 파트너를 만나면 슬랙을 통한 커뮤니케이션
- Jira의 도입
- 이슈 트래킹
- 테스트
- 실패 한 부분
- 100% 잘 진행 되고 있었던, 스프린트 개념이 마지막 베타 오픈 전에 무너짐.
- 급 추가 수정 개발사항을 처리하면서 프로세스가 꼬임.
- 지금부터 마음잡고 다시 진행
방법론 변화
72. 72
• 보여 준 것
- 한 기술 분야만 고집해서 할 필요는 없다.
- 가끔은 팀의 활력을 불어 넣는 데는 새로운 기술 도입 만큼 효과적인 처방전
은 없다.
- 좀 더 강하게 밀어 붙이기 위해서는 서비스가 잘 되야 할 텐데…
현재 정식 서비스 런칭을 위해 대 규모 수정 작업 중…^^
결론
73. 73
• (감당 할 수 있는)힘든 것
- 맨 땅에 헤딩
- 코드 구조 잡기
- 코딩 컨벤션
- 환경설정( Ruby를 윈도우에서 돌려요…^^;;; )
- IDE ( notepad++로 개발… 음? )
- 문서화
- 처음 해 본 기술이라,
내가 정리 한 이 문서가 정말 활용 성 있는 좋은 정보일까?
- 서버 관리
- 레일즈 서버 관리 초보.
- 설정 몇 개 차이로 서버 성능이 모뎀 급에서 LTE급으로 변화.
결론
74. 74
• (감당 할 수 없이)힘든 것
- 늘어나지 않았던 추가 개발 일정
- 일주일 정도의 수정 일정이 발생. 하지만 오픈 일정은 + 7 이 아닌 “0”
- 무엇인가 요구사항이 바뀌었다면, 그 일정을 남겨놔야 하는데…
결론