8. 보통의 서비스 개발 과정
• “NDC Replay” 를 서비스하는 웹 애플리케이션 개발
• 이를 위한 데이터베이스 생성 및 연결
• ‘적절한’ 로드 밸런싱 및 백업 플랜 준비
• 매년 NDC가 열릴 때마다 업데이트
– NDC 사무국으로부터 데이터를 받아서 가공 후 업로드
<또는>
– 전용 백오피스를 별도로 제작하여 NDC 사무국에 제공
9. 고민
• 개발자는 단 두 명이다. 게다가 풀 타임이 아니다.
• 서버라는 것은 관리를 필요로 한다
– 죽을 수도 있습니다
– 해킹당할 수도 있습니다
– 업데이트를 해야 하는 경우도 있습니다
• 1년에 한 번 크게 내용이 바뀌고, 그 사이에는 거의 변화가 없다
10. 방향
• “만들어놓고 잊어버릴 수 있는” 사이트 만들기
• 연계 서비스를 최소화
• 유지보수는 최대한 하지 않도록
• 개발자 도움 없이 self-service + update 가능하도록
11. 웹 애플리케이션을 만들 필요 있나?
• 사이트를 모두 다 static html으로 만들자!
서버 취약점, 업데이트 이슈 없어짐
서버의 구성이 매우 단순해짐
심지어 CDN에 업로드해도 됨!
12. 정적 웹 사이트 제작 도구 제공
• 데이터 입력 주체 : NDC 사무국 (엔지니어가 아님)
14. 변환 도구의 필요성
• 백오피스를 만들어주거나,
• 직접 변환을 해서 사이트 제작까지 할 수 있는 변환 도구 제공
15. 세 가지 파트의 작업
1. 세션 정보를 json 으로 변환하는 도구
2. 이를 바탕으로 제작되는 Static Website
3. 강연 자료 변환 도구
16. 세션 정보 : xlsx to json
• xlsx -> json -> website
• 엑셀 매크로를 제작하여, 저장 시 .json 자동 생성
17. Static website
• xlsx -> json -> website
• 처음에는 Single page application을 고려
– 단일 html + json
• 검색엔진을 고려 : 크롤러가 세션 정보를 제대로 캐싱할 수 있도록
• 세션 별로 html 파일을 하나씩 생성
• {{NRP_*}} 로 placeholder를 만든 Template html 작성
21. HTML 자동 생성
• 엑셀에서 얻은 session_list.json 을 사용하여 html 생성
• Lua로 만들었음
– 이유 : 제작자가 편하니까! (매우 중요)
– Lua-resty-template 이라는 템플릿 라이브러리를 사용 (복선1)
• 실제 사용은 .bat 파일을 통해 진행
– 엔지니어가 아닌 사람에게는 조금 낯선 프로세스
– 툴 사용 숙련이 쌓이고 나면 괜찮아질 것이라고 생각 (복선2)
22. 변환 : pptx
• iSpring 을 사용하여 HTML5/SWF Player 변환
• Iframe으로 감싸서 사용
23. 변환 : pdf
• ghostscript + imageMagick 으로 이미지 변환
• pdf to jpeg + player.html 생성해주는 lua script 제작
24. 변환 : 동영상
• 동영상
– PotEncoder를 사용하여 mp4 생성
– 스트리밍 플레이에 최적화된 preset을 제작하여 제공
– 구 IE 지원을 위해 video.js 사용
30. 2015
• 레티나 지원, 오픈그래프(페이스북 미리보기) 등 마이너 업데이트
• 2015년 NDC 데이터 추가해서 업로드
– 데이터 입력 담당자가 2014년과 다른 분
– 입력 중에 문제가 생겨서 봐드림…
31. 2016
• 데이터 입력 담당자가 또 다른 분 2015년담당자는 군대 가심
• 엑셀에 데이터를 입력하고 ‘컴파일한다’ 는 개념을 매우 어려워함
32. 이게 아닌데…?
• 애초에 왜 이렇게 만들었을까?
– 가능한 한 빨리 개발하고, 개발 완료 후에는 신경쓰고 싶지 않았다
– 서버와 DB를 없앤다 = 성공
• 새 데이터를 입력하는 과정을 매년 지원해야 하네?
33. 무엇을 잘못 생각했나
• ‘그리 어렵지 않을 것이다’
– 엑셀에 입력하고 콘솔 애플리케이션으로 후처리하는 절차
– 게임 개발에서는 흔하지만 일반적으로는 대단히 낯설다!
• ‘곧 숙련될 것이다’
– 1년에 한 번 쓰는 툴이므로 숙련될 틈이 없다
– 담당자도 매년 바뀐다
34. 역시 편집툴이 있어야겠다 ㅠ_ㅠ
• 적어도 오피스 프로그램이나 웹 페이지처럼 생겨야 한다
• 콘솔 애플리케이션은 이제 그만…
36. 데이터 저장을 S3에 한다면?
• 데이터를 브라우저에서 바로 편집 가능하다면?
• HTML을 브라우저에서 바로 생성 가능하다면?
• DB 없이 S3 권한 관리만으로 편집툴을 만들 수 있다!!!
• CloudFront에 물리면 트래픽 비용도 줄일 수 있다!!!
지금 만든다면 원본 데이터는 구글 스프레드시트에 저장하는 걸 검토할 듯