SlideShare a Scribd company logo
안녕하세요 카카오톡 자동응답 API를 이용한 교내 소식 전달 시스템 SKHUFEEDS를
발표를 맡은 <발표자 이름>입니다.
1
먼저 저희 프로젝트에 참여한 구성원들을 소개하겠습니다. 우선 소프트웨어공학과 한
영빈 학우와 김희수 학우, 정보통신공학과 한나라 학우가 프로젝트에 참여하였습니다.
한영빈 학우는 전체적인 프로젝트를 총괄, 구독 설정 모듈 개발과 서버 배포와 관리를
담당하였습니다. 김희수 학우는 카카오톡 통신부 개발을 맡았으며, 한나라 학우는 프로
젝트 기획 및 크롤러 모듈 개발을 담당하였습니다.
2
여러분들은 보통 어떤 방식으로 학교 소식이나 공지사항을 확인 하시나요? 대부분 학
교 메인 홈페이지나 학과 홈페이지 등 각 웹사이트를 방문하여 확인 할 것 입니다. 그런
데 웹사이트를 방문 하였을 때 사이트가 복잡하여 헤매는 경우, 또는 확인을 못하는 경
우도 많이 있을 것입니다. 이미 대다수의 학우 분들은 모바일 환경에서 대부분의 소식
을 받아보는 반면, 중요한 정보가 올라오는 학교 관련 웹사이트는 데스크톱 환경에서만
최적화가 되어 있어 모바일 에서는 소식 확인이 불편하다는 문제점이 있습니다. 그러다
보니 웹사이트에 직접 방문해서 소식을 확인하지 않는 학우 분들이 많습니다.
3
그렇기 때문에 많은 학우들이 중요한 공지를 놓치는 경우가 많습니다. 웹사이트를 확인
하지 않다 보니, 장학금 신청기간을 놓치는 경우도 많으며, 한솥밥 튜터링, 어울림 등 교
내에서 하는 프로그램 또한 놓치는 사례가 많습니다. 저희 SKHUFEEDS는 이 불편한
점을 착안하여 시작하게 되었습니다.
4
우선 이러한 문제를 해결하는 방법 중 하나는 모바일 환경에서도 중요정보를 쉽게 받
아볼 수 있도록 하는 것입니다. 모바일 환경에 최적화 하는 경우 보통 모바일 앱이나 모
바일 웹 개발을 많이 떠오르실 겁니다. 설치하고 홈 화면에 바로가기를 두면 언제든지
쉽게 접근이 가능하기 때문입니다.
5
하지만 모바일 앱이나 웹을 개발할 때는 다양한 디바이스와 환경을 고려해야 합니다.
안드로이드만 해도 다양한 os버전이 있고 제조사별 커스텀으로 인해 일부 디바이스에
서는 의도대로 작동되지 않을 수도 있습니다 웹 또한 많은 브라우저 환경을 고려해야
합니다. UI를 잘 설계하지 않으면 앱 사용이 어려워 외면 받을 수도 있습니다. 회원가입
이 필요하거나 하드웨어의 특정한 기능 또는 OS에서 제공되는 API를 사용해야만 구현
이 가능했다면 앱 으로 개발했겠지만, SKHUFEEDS는 중요소식을 쉽게 받아 볼 수 있
게 하는 것이 목적이었으므로 굳이 어플을 개발하면서 다양한 환경까지 대응하는 것에
시간을 낭비할 필요가 없다고 생각을 하였습니다.
6
그래서 저희는 챗봇 형태로 서비스를 개발 하기로 하였습니다. 저희는 챗봇 기능을 제
공하는 메신저중 카카오톡을 선정하였습니다. 그 이유는 국내에서 가장 많은 사용자를
보유한 메신저이기 때문에 쉽게 서비스를 접근 할 수 있기 때문입니다. 개발자 입장에
서는 다양한 이용 환경을 대응하지 않아도 된다는 장점이 있으며, 사용자 입장에서는
굳이 다른 어플을 깔지 않아도 되고, 익숙한 카카오톡의 UI를 사용하여 쉽게 서비스를
이용할 수 있다는 것입니다.
7
처음에 프로젝트를 시작 할 때, 구성원 중 백엔드 개발을 할 줄 아는 사람이 거의 없었습
니다. 그래서 올해 1학기 파이썬 스터디 부터 시작했고, 이후 여름방학 초반에 기본적
인 장고 프레임워크 사용 방법을 스터디 하여 필요한 지식을 먼저 습득 하였습니다. 이
후 서비스에서 사용할 데이터 베이스를 모델링 하였고, 본격적으로 개발을 시작하였습
니다. Git 을 이용하여 버전 관리를 하였으며, GitLab.com을 통해 소스코드를 공유 하
였습니다. 여름 방학이 끝나가고 개강이 다가올 때 즈음, 구독 설정 모듈 부터 개발이 완
료 되었으며, 이후 크롤러 모듈과 카카오톡 통신부 모듈 순으로 개발이 완료 되었습니
다.
8
앞서 언급했다 싶이, 입문 하기 쉬운 편인 파이썬과, 파이썬 웹 프레임워크인 장고를 이
용하여 서비스를 개발 하였습니다. 그리고 그림과 같이 크게 kakao, settings,
crawlers 이렇게 새 가지 모듈로 나누어 개발을 진행 하였습니다.
9
Kakao 모듈은 사용자가 카카오톡 채팅방에서 하는 대부분의 동작을 처리하는 모듈입
니다. 사용자가 특정 버튼을 누르거나 메시지를 전송하면, 해당 동작을 카카오톡 서버
를 통해 전달받아 처리하는 방식으로 작동합니다.
10
Kakao 모듈에서는 주로 사용자가 메시지 전송을 통해 보낸 명령어에 대한 처리, 플러
스친구 홈에서 친구 추가/차단 버튼을 누른 것에 대한 동작과, 채팅방 입장과 퇴장 동작
등, 채팅방에서 사용자가 할 수 있는 동작을 처리하고 있습니다.
11
Settings 모듈은 사용자가 받아보고자 하는 소식에 대한 구독을 설정 할 수 있게 하는
모듈입니다. 사용자에게 설정 화면으로 들어갈 수 있는 URL 을 발급해 전달할 때만,
kakao 모듈과 카카오톡 서버를 거쳐 통신하며. 그 외의 경우는 사용자가 설정 페이지
에 접속한 경우 이므로 사용자와 직접 통신합니다.
12
사진과 같이 구독 설정 화면을 제공 합니다. 구독 설정 화면은 “설정” 버튼을 누르면 나
오는 “설정 페이지” 버튼에 담긴 URL 을 통해 접근 가능합니다. URL 에는 JWT 가 포
함되어 있으며, 이 JWT를 통해 설정 화면 접속시 사용자를 인증합니다. JWT 발급과
인증 작업은 파이썬 모듈인 python-jose 를 이용하고 있습니다. 설정 화면 레이아웃은
Bootstrap 으용 하였습니다.
13
Crawlers 모듈은 지정된 웹페이지에서 필요한 정보를 가져오는 코드들을 모두 모아 둔
모듈 입니다. 주기적으로 크롤링 하여, 데이터베이스에 저장하는 작업을 합니다.
HTML 로 작성 되어있는 웹페이지는 BeautifulSoup 모듈을 이용하며, XML 문서는
파이썬 내장 모듈인 ElementTree 를 사용합니다. 적어도 한 시간 이상 간격을 두고 크
롤링 작업을 하고, URL 을 가져오는 경우. 추후 채팅방에 표시 할 때 많은 내용을 표시
할 수 있게 하기 위해, pyshorteners 모듈과 Google 단축 URL API를 이용해 단축하
여 저장합니다.
14
현재 크롤러 모듈에서는, 학사일정, 연락처, 날씨, 학교소식, 학식 식단을 크롤링 하고
있습니다. 연락처의 경우 학내기관과 교수님, 교직원 분들의 연락처를 크롤링 하고 있
으며, 날씨의 경우 학교 주변 날씨 정보를 기상청에서 가져오고 있습니다.
15
구독 하여 받아 볼 수 있는 학교 소식 항목은 아래와 같습니다. 구독 설정 화면에서 선택
적으로 구독 하실 수 있습니다. 추후 학과별 공지사항 등, 좀 더 많은 학내 소식을 제공
할 예정입니다.
16
한번 실행하면 마칠 때 까지 시간이 오래 걸리는 크롤링 작업은 같은 프로세스에서 실
행시 같은 쓰레드의 경우, 다른 작업을 수행 할 수 없고, 다른 쓰레드의 경우 데이터베이
스 쓰기 작업 시 충돌이 있을 수 있습니다. 때문에 Celery 를 이용하여 별도의 Worker
프로세스에서 작업이 실행되도록 하였습니다.
17
서버측 코드 배포시 다양한 도구를 이용하여, 효율적으로 배포하고 관리하고 있습니다.
기본적으로 Gitlab 을 이용하여 버전 관리와 이미지 빌드 및 보관을 하며, Docker 를
이용해 컨테이너 형태로 배포합니다. 컨테이너 스캐쥴링은 Docker 에 내장된 Docker
Swarm 으로 관리합니다. DB 서버는 MySQL, 파이썬으로 작성한 백엔드를 프로덕션
환경에 배포하기 위해 gunicorn, Caddy 를 사용합니다. Celery, RabbitMQ 는 앞서
언급한 크롤링 작업을 워커 프로세스에서 실행하기 위해 사용하고 있습니다. 이 모든것
을 배포할 기반 환경으로 AWS 의 EC2 VM 을 사용합니다.
18
실제 서비스 이용 화면입니다. 사진처럼 카카오톡 플러스친구 형태로 서비스가 제공됩
니다.
19
구독설정 화면입니다.
20
연락처 검색 기능 사용 예 입니다.
21
학사일정, 날씨, 학식 사용 화면입니다.
22
9.18 일부터 공개 베타테스트를 시작하여, 지금까지 진행하고 있으며. 동시에 정식 서
비스를 위해 개선 작업을 계속 하고 있습니다.
개선 작업을 통해 테스트 기간동안 학식 조회 기능을 구현 완료하여, 이를 포함한 버전
을 배포해 둔 상태입니다.
10.13 일 까지 베타 테스트를 계속 진행할 예정이며, 10.21 일에 정식 서비스를 시작할
예정입니다.
23
공개 베타 테스트의 경우 테스트를 시작한 이후, 10월 2일 기준 16분께서 테스트에 참
여해 주시고 계십니다.
24
서비스 운영을 위해 총 3개의 플러스친구 계정을 운영할 예정이며, 그 중 2개 계정을 친
구추가하여 이용해 보실 수 있게 됩니다. 정식 버전을 서비스할 SKHUFEEDS /
skhufeeds 계정은 10.21 일 부터 이용하실 수 있으며. 현제는 테스트용 계정인
SKHUFEEDS(TEST) / skhufeeds_test 계정을 통해 공개 베타 테스트 참여만 가능합
니다. SKHUFEEDS(SID) 는 내부 테스트를 위한 비공개 계정으로, 이용하실 수 없습니
다.
25
이제 사용 시연을 해 보도록 하겠습니다.
26
이상으로 발표를 마치겠습니다. 감사합니다.
27

More Related Content

Similar to SKHUFEEDS 소개 발표자료(노트 포함)

[월간금융] 스마트워크 필수활용팁(1)
[월간금융] 스마트워크 필수활용팁(1)[월간금융] 스마트워크 필수활용팁(1)
[월간금융] 스마트워크 필수활용팁(1)
규문 최
 
Parallel diary
Parallel diaryParallel diary
Parallel diary
Hong Jin Baek
 
Android Developer JeongJaeyun
Android Developer JeongJaeyunAndroid Developer JeongJaeyun
Android Developer JeongJaeyun
jaeyunjeong1
 
Hellotutorial
HellotutorialHellotutorial
Hellotutorial
hellotutorial
 
SKHUFEEDS 소개 발표자료
SKHUFEEDS 소개 발표자료SKHUFEEDS 소개 발표자료
SKHUFEEDS 소개 발표자료
Youngbin Han
 
웹 Front-End 실무 이야기
웹 Front-End 실무 이야기웹 Front-End 실무 이야기
웹 Front-End 실무 이야기
JinKwon Lee
 
D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기
D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기
D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기
Soojin Ro
 
포트폴리오 김규하
포트폴리오 김규하포트폴리오 김규하
포트폴리오 김규하
GyooHa Kim
 
U&i insight2012스터디설명회
U&i insight2012스터디설명회U&i insight2012스터디설명회
U&i insight2012스터디설명회
Amy Young Ah Kim
 
Teamkerbell
TeamkerbellTeamkerbell
Teamkerbell
seongside
 
my activities before getting a job
my activities before getting a jobmy activities before getting a job
my activities before getting a job
Deo Kim
 
제로보드과제보고서
제로보드과제보고서제로보드과제보고서
제로보드과제보고서
kth919
 
신동형의 발로 뛰는 ICT Insight Vol3
신동형의 발로 뛰는 ICT Insight Vol3신동형의 발로 뛰는 ICT Insight Vol3
신동형의 발로 뛰는 ICT Insight Vol3Donghyung Shin
 
『빠르게 훑어보는 구글 클라우드 플랫폼』 - 맛보기
『빠르게 훑어보는 구글 클라우드 플랫폼』 - 맛보기『빠르게 훑어보는 구글 클라우드 플랫폼』 - 맛보기
『빠르게 훑어보는 구글 클라우드 플랫폼』 - 맛보기
복연 이
 
Seuk sak
Seuk sakSeuk sak
Seuk sak
SeongHyuk Jeong
 
[취업특강] IT분야에서 행복하게 일하기 - SW 개발자를 중심으로
[취업특강] IT분야에서 행복하게 일하기 - SW 개발자를 중심으로[취업특강] IT분야에서 행복하게 일하기 - SW 개발자를 중심으로
[취업특강] IT분야에서 행복하게 일하기 - SW 개발자를 중심으로
Sungwoo Park
 
I/O Extended 2019 Seoul - What's New in Web
I/O Extended 2019 Seoul - What's New in WebI/O Extended 2019 Seoul - What's New in Web
I/O Extended 2019 Seoul - What's New in Web
HanboramRobinJang
 
한양대학교 셔틀시스템 셔틀콕 개발기
한양대학교 셔틀시스템 셔틀콕 개발기한양대학교 셔틀시스템 셔틀콕 개발기
한양대학교 셔틀시스템 셔틀콕 개발기
Yunhwan Na
 
[스마트스터디]스마트스터디는 무엇을 / 왜 / 어떻게 만들어 왔는가
[스마트스터디]스마트스터디는 무엇을 / 왜 / 어떻게 만들어 왔는가[스마트스터디]스마트스터디는 무엇을 / 왜 / 어떻게 만들어 왔는가
[스마트스터디]스마트스터디는 무엇을 / 왜 / 어떻게 만들어 왔는가
smartstudy_official
 
WHAT / WHY / HOW WE’RE ENGINEERING AT SMARTSTUDY
WHAT / WHY / HOW WE’RE ENGINEERING AT SMARTSTUDYWHAT / WHY / HOW WE’RE ENGINEERING AT SMARTSTUDY
WHAT / WHY / HOW WE’RE ENGINEERING AT SMARTSTUDY
Hyun-woo Park
 

Similar to SKHUFEEDS 소개 발표자료(노트 포함) (20)

[월간금융] 스마트워크 필수활용팁(1)
[월간금융] 스마트워크 필수활용팁(1)[월간금융] 스마트워크 필수활용팁(1)
[월간금융] 스마트워크 필수활용팁(1)
 
Parallel diary
Parallel diaryParallel diary
Parallel diary
 
Android Developer JeongJaeyun
Android Developer JeongJaeyunAndroid Developer JeongJaeyun
Android Developer JeongJaeyun
 
Hellotutorial
HellotutorialHellotutorial
Hellotutorial
 
SKHUFEEDS 소개 발표자료
SKHUFEEDS 소개 발표자료SKHUFEEDS 소개 발표자료
SKHUFEEDS 소개 발표자료
 
웹 Front-End 실무 이야기
웹 Front-End 실무 이야기웹 Front-End 실무 이야기
웹 Front-End 실무 이야기
 
D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기
D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기
D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기
 
포트폴리오 김규하
포트폴리오 김규하포트폴리오 김규하
포트폴리오 김규하
 
U&i insight2012스터디설명회
U&i insight2012스터디설명회U&i insight2012스터디설명회
U&i insight2012스터디설명회
 
Teamkerbell
TeamkerbellTeamkerbell
Teamkerbell
 
my activities before getting a job
my activities before getting a jobmy activities before getting a job
my activities before getting a job
 
제로보드과제보고서
제로보드과제보고서제로보드과제보고서
제로보드과제보고서
 
신동형의 발로 뛰는 ICT Insight Vol3
신동형의 발로 뛰는 ICT Insight Vol3신동형의 발로 뛰는 ICT Insight Vol3
신동형의 발로 뛰는 ICT Insight Vol3
 
『빠르게 훑어보는 구글 클라우드 플랫폼』 - 맛보기
『빠르게 훑어보는 구글 클라우드 플랫폼』 - 맛보기『빠르게 훑어보는 구글 클라우드 플랫폼』 - 맛보기
『빠르게 훑어보는 구글 클라우드 플랫폼』 - 맛보기
 
Seuk sak
Seuk sakSeuk sak
Seuk sak
 
[취업특강] IT분야에서 행복하게 일하기 - SW 개발자를 중심으로
[취업특강] IT분야에서 행복하게 일하기 - SW 개발자를 중심으로[취업특강] IT분야에서 행복하게 일하기 - SW 개발자를 중심으로
[취업특강] IT분야에서 행복하게 일하기 - SW 개발자를 중심으로
 
I/O Extended 2019 Seoul - What's New in Web
I/O Extended 2019 Seoul - What's New in WebI/O Extended 2019 Seoul - What's New in Web
I/O Extended 2019 Seoul - What's New in Web
 
한양대학교 셔틀시스템 셔틀콕 개발기
한양대학교 셔틀시스템 셔틀콕 개발기한양대학교 셔틀시스템 셔틀콕 개발기
한양대학교 셔틀시스템 셔틀콕 개발기
 
[스마트스터디]스마트스터디는 무엇을 / 왜 / 어떻게 만들어 왔는가
[스마트스터디]스마트스터디는 무엇을 / 왜 / 어떻게 만들어 왔는가[스마트스터디]스마트스터디는 무엇을 / 왜 / 어떻게 만들어 왔는가
[스마트스터디]스마트스터디는 무엇을 / 왜 / 어떻게 만들어 왔는가
 
WHAT / WHY / HOW WE’RE ENGINEERING AT SMARTSTUDY
WHAT / WHY / HOW WE’RE ENGINEERING AT SMARTSTUDYWHAT / WHY / HOW WE’RE ENGINEERING AT SMARTSTUDY
WHAT / WHY / HOW WE’RE ENGINEERING AT SMARTSTUDY
 

More from Youngbin Han

Ubucon Europe and Asia
Ubucon Europe and AsiaUbucon Europe and Asia
Ubucon Europe and Asia
Youngbin Han
 
우분투 아시아 컨퍼런스 바닥에서 시작하기
우분투 아시아 컨퍼런스 바닥에서 시작하기우분투 아시아 컨퍼런스 바닥에서 시작하기
우분투 아시아 컨퍼런스 바닥에서 시작하기
Youngbin Han
 
Automating boring and repetitive UbuCon Asia video and subtitle stuffs
Automating boring and repetitive UbuCon Asia video and subtitle stuffsAutomating boring and repetitive UbuCon Asia video and subtitle stuffs
Automating boring and repetitive UbuCon Asia video and subtitle stuffs
Youngbin Han
 
Engaging new l10n contributors through Open Source Contributhon
Engaging new l10n contributors through Open Source ContributhonEngaging new l10n contributors through Open Source Contributhon
Engaging new l10n contributors through Open Source Contributhon
Youngbin Han
 
Introduction to Hanjp-IM Project (DebConf18 - Hsinchu, Taiwan)
Introduction to Hanjp-IM Project (DebConf18 - Hsinchu, Taiwan)Introduction to Hanjp-IM Project (DebConf18 - Hsinchu, Taiwan)
Introduction to Hanjp-IM Project (DebConf18 - Hsinchu, Taiwan)
Youngbin Han
 
What's new in Ubuntu 18.04 LTS
What's new in Ubuntu 18.04 LTSWhat's new in Ubuntu 18.04 LTS
What's new in Ubuntu 18.04 LTS
Youngbin Han
 
Naver Campus Hackday Winter 2017 참가 후기
Naver Campus Hackday Winter 2017 참가 후기Naver Campus Hackday Winter 2017 참가 후기
Naver Campus Hackday Winter 2017 참가 후기
Youngbin Han
 
우분투한국커뮤니티 2017년 활동보고
우분투한국커뮤니티 2017년 활동보고우분투한국커뮤니티 2017년 활동보고
우분투한국커뮤니티 2017년 활동보고
Youngbin Han
 
FluxSync Team 중간보고
FluxSync Team 중간보고FluxSync Team 중간보고
FluxSync Team 중간보고
Youngbin Han
 
openSUSE.Asia Summit 2017 Tokyo 참관후기
openSUSE.Asia Summit 2017 Tokyo 참관후기openSUSE.Asia Summit 2017 Tokyo 참관후기
openSUSE.Asia Summit 2017 Tokyo 참관후기
Youngbin Han
 
How & Why we have connected Slack & IRC
How & Why we have connected Slack & IRCHow & Why we have connected Slack & IRC
How & Why we have connected Slack & IRC
Youngbin Han
 
Snaps on Ubuntu Desktop
Snaps on Ubuntu DesktopSnaps on Ubuntu Desktop
Snaps on Ubuntu Desktop
Youngbin Han
 
How and why we have integrated Slack and IRC
How and why we have integrated Slack and IRCHow and why we have integrated Slack and IRC
How and why we have integrated Slack and IRC
Youngbin Han
 
Ubuntu's Unity - Birth to Death(in 5minutes)
Ubuntu's Unity - Birth to Death(in 5minutes)Ubuntu's Unity - Birth to Death(in 5minutes)
Ubuntu's Unity - Birth to Death(in 5minutes)
Youngbin Han
 
Jekyll and GitHub Pages
Jekyll and GitHub PagesJekyll and GitHub Pages
Jekyll and GitHub Pages
Youngbin Han
 
Git&GitHub 를 이용한 버전관리와 협업 - 4.협업과 지속적 통합
Git&GitHub 를 이용한 버전관리와 협업 - 4.협업과 지속적 통합Git&GitHub 를 이용한 버전관리와 협업 - 4.협업과 지속적 통합
Git&GitHub 를 이용한 버전관리와 협업 - 4.협업과 지속적 통합
Youngbin Han
 
Git&GitHub 를 이용한 버전관리와 협업 - 2.비교하기와 되돌리기
Git&GitHub 를 이용한 버전관리와 협업 - 2.비교하기와 되돌리기Git&GitHub 를 이용한 버전관리와 협업 - 2.비교하기와 되돌리기
Git&GitHub 를 이용한 버전관리와 협업 - 2.비교하기와 되돌리기
Youngbin Han
 
Git&GitHub 를 이용한 버전관리와 협업 - 1.첫 커밋 푸시하기
Git&GitHub 를 이용한 버전관리와 협업 - 1.첫 커밋 푸시하기Git&GitHub 를 이용한 버전관리와 협업 - 1.첫 커밋 푸시하기
Git&GitHub 를 이용한 버전관리와 협업 - 1.첫 커밋 푸시하기
Youngbin Han
 
Node.js 런타임 버전 관리하기
Node.js 런타임 버전 관리하기Node.js 런타임 버전 관리하기
Node.js 런타임 버전 관리하기
Youngbin Han
 
제2회 SSSCON - 웹해킹 스터디 현황
제2회 SSSCON - 웹해킹 스터디 현황제2회 SSSCON - 웹해킹 스터디 현황
제2회 SSSCON - 웹해킹 스터디 현황
Youngbin Han
 

More from Youngbin Han (20)

Ubucon Europe and Asia
Ubucon Europe and AsiaUbucon Europe and Asia
Ubucon Europe and Asia
 
우분투 아시아 컨퍼런스 바닥에서 시작하기
우분투 아시아 컨퍼런스 바닥에서 시작하기우분투 아시아 컨퍼런스 바닥에서 시작하기
우분투 아시아 컨퍼런스 바닥에서 시작하기
 
Automating boring and repetitive UbuCon Asia video and subtitle stuffs
Automating boring and repetitive UbuCon Asia video and subtitle stuffsAutomating boring and repetitive UbuCon Asia video and subtitle stuffs
Automating boring and repetitive UbuCon Asia video and subtitle stuffs
 
Engaging new l10n contributors through Open Source Contributhon
Engaging new l10n contributors through Open Source ContributhonEngaging new l10n contributors through Open Source Contributhon
Engaging new l10n contributors through Open Source Contributhon
 
Introduction to Hanjp-IM Project (DebConf18 - Hsinchu, Taiwan)
Introduction to Hanjp-IM Project (DebConf18 - Hsinchu, Taiwan)Introduction to Hanjp-IM Project (DebConf18 - Hsinchu, Taiwan)
Introduction to Hanjp-IM Project (DebConf18 - Hsinchu, Taiwan)
 
What's new in Ubuntu 18.04 LTS
What's new in Ubuntu 18.04 LTSWhat's new in Ubuntu 18.04 LTS
What's new in Ubuntu 18.04 LTS
 
Naver Campus Hackday Winter 2017 참가 후기
Naver Campus Hackday Winter 2017 참가 후기Naver Campus Hackday Winter 2017 참가 후기
Naver Campus Hackday Winter 2017 참가 후기
 
우분투한국커뮤니티 2017년 활동보고
우분투한국커뮤니티 2017년 활동보고우분투한국커뮤니티 2017년 활동보고
우분투한국커뮤니티 2017년 활동보고
 
FluxSync Team 중간보고
FluxSync Team 중간보고FluxSync Team 중간보고
FluxSync Team 중간보고
 
openSUSE.Asia Summit 2017 Tokyo 참관후기
openSUSE.Asia Summit 2017 Tokyo 참관후기openSUSE.Asia Summit 2017 Tokyo 참관후기
openSUSE.Asia Summit 2017 Tokyo 참관후기
 
How & Why we have connected Slack & IRC
How & Why we have connected Slack & IRCHow & Why we have connected Slack & IRC
How & Why we have connected Slack & IRC
 
Snaps on Ubuntu Desktop
Snaps on Ubuntu DesktopSnaps on Ubuntu Desktop
Snaps on Ubuntu Desktop
 
How and why we have integrated Slack and IRC
How and why we have integrated Slack and IRCHow and why we have integrated Slack and IRC
How and why we have integrated Slack and IRC
 
Ubuntu's Unity - Birth to Death(in 5minutes)
Ubuntu's Unity - Birth to Death(in 5minutes)Ubuntu's Unity - Birth to Death(in 5minutes)
Ubuntu's Unity - Birth to Death(in 5minutes)
 
Jekyll and GitHub Pages
Jekyll and GitHub PagesJekyll and GitHub Pages
Jekyll and GitHub Pages
 
Git&GitHub 를 이용한 버전관리와 협업 - 4.협업과 지속적 통합
Git&GitHub 를 이용한 버전관리와 협업 - 4.협업과 지속적 통합Git&GitHub 를 이용한 버전관리와 협업 - 4.협업과 지속적 통합
Git&GitHub 를 이용한 버전관리와 협업 - 4.협업과 지속적 통합
 
Git&GitHub 를 이용한 버전관리와 협업 - 2.비교하기와 되돌리기
Git&GitHub 를 이용한 버전관리와 협업 - 2.비교하기와 되돌리기Git&GitHub 를 이용한 버전관리와 협업 - 2.비교하기와 되돌리기
Git&GitHub 를 이용한 버전관리와 협업 - 2.비교하기와 되돌리기
 
Git&GitHub 를 이용한 버전관리와 협업 - 1.첫 커밋 푸시하기
Git&GitHub 를 이용한 버전관리와 협업 - 1.첫 커밋 푸시하기Git&GitHub 를 이용한 버전관리와 협업 - 1.첫 커밋 푸시하기
Git&GitHub 를 이용한 버전관리와 협업 - 1.첫 커밋 푸시하기
 
Node.js 런타임 버전 관리하기
Node.js 런타임 버전 관리하기Node.js 런타임 버전 관리하기
Node.js 런타임 버전 관리하기
 
제2회 SSSCON - 웹해킹 스터디 현황
제2회 SSSCON - 웹해킹 스터디 현황제2회 SSSCON - 웹해킹 스터디 현황
제2회 SSSCON - 웹해킹 스터디 현황
 

SKHUFEEDS 소개 발표자료(노트 포함)

  • 1. 안녕하세요 카카오톡 자동응답 API를 이용한 교내 소식 전달 시스템 SKHUFEEDS를 발표를 맡은 <발표자 이름>입니다. 1
  • 2. 먼저 저희 프로젝트에 참여한 구성원들을 소개하겠습니다. 우선 소프트웨어공학과 한 영빈 학우와 김희수 학우, 정보통신공학과 한나라 학우가 프로젝트에 참여하였습니다. 한영빈 학우는 전체적인 프로젝트를 총괄, 구독 설정 모듈 개발과 서버 배포와 관리를 담당하였습니다. 김희수 학우는 카카오톡 통신부 개발을 맡았으며, 한나라 학우는 프로 젝트 기획 및 크롤러 모듈 개발을 담당하였습니다. 2
  • 3. 여러분들은 보통 어떤 방식으로 학교 소식이나 공지사항을 확인 하시나요? 대부분 학 교 메인 홈페이지나 학과 홈페이지 등 각 웹사이트를 방문하여 확인 할 것 입니다. 그런 데 웹사이트를 방문 하였을 때 사이트가 복잡하여 헤매는 경우, 또는 확인을 못하는 경 우도 많이 있을 것입니다. 이미 대다수의 학우 분들은 모바일 환경에서 대부분의 소식 을 받아보는 반면, 중요한 정보가 올라오는 학교 관련 웹사이트는 데스크톱 환경에서만 최적화가 되어 있어 모바일 에서는 소식 확인이 불편하다는 문제점이 있습니다. 그러다 보니 웹사이트에 직접 방문해서 소식을 확인하지 않는 학우 분들이 많습니다. 3
  • 4. 그렇기 때문에 많은 학우들이 중요한 공지를 놓치는 경우가 많습니다. 웹사이트를 확인 하지 않다 보니, 장학금 신청기간을 놓치는 경우도 많으며, 한솥밥 튜터링, 어울림 등 교 내에서 하는 프로그램 또한 놓치는 사례가 많습니다. 저희 SKHUFEEDS는 이 불편한 점을 착안하여 시작하게 되었습니다. 4
  • 5. 우선 이러한 문제를 해결하는 방법 중 하나는 모바일 환경에서도 중요정보를 쉽게 받 아볼 수 있도록 하는 것입니다. 모바일 환경에 최적화 하는 경우 보통 모바일 앱이나 모 바일 웹 개발을 많이 떠오르실 겁니다. 설치하고 홈 화면에 바로가기를 두면 언제든지 쉽게 접근이 가능하기 때문입니다. 5
  • 6. 하지만 모바일 앱이나 웹을 개발할 때는 다양한 디바이스와 환경을 고려해야 합니다. 안드로이드만 해도 다양한 os버전이 있고 제조사별 커스텀으로 인해 일부 디바이스에 서는 의도대로 작동되지 않을 수도 있습니다 웹 또한 많은 브라우저 환경을 고려해야 합니다. UI를 잘 설계하지 않으면 앱 사용이 어려워 외면 받을 수도 있습니다. 회원가입 이 필요하거나 하드웨어의 특정한 기능 또는 OS에서 제공되는 API를 사용해야만 구현 이 가능했다면 앱 으로 개발했겠지만, SKHUFEEDS는 중요소식을 쉽게 받아 볼 수 있 게 하는 것이 목적이었으므로 굳이 어플을 개발하면서 다양한 환경까지 대응하는 것에 시간을 낭비할 필요가 없다고 생각을 하였습니다. 6
  • 7. 그래서 저희는 챗봇 형태로 서비스를 개발 하기로 하였습니다. 저희는 챗봇 기능을 제 공하는 메신저중 카카오톡을 선정하였습니다. 그 이유는 국내에서 가장 많은 사용자를 보유한 메신저이기 때문에 쉽게 서비스를 접근 할 수 있기 때문입니다. 개발자 입장에 서는 다양한 이용 환경을 대응하지 않아도 된다는 장점이 있으며, 사용자 입장에서는 굳이 다른 어플을 깔지 않아도 되고, 익숙한 카카오톡의 UI를 사용하여 쉽게 서비스를 이용할 수 있다는 것입니다. 7
  • 8. 처음에 프로젝트를 시작 할 때, 구성원 중 백엔드 개발을 할 줄 아는 사람이 거의 없었습 니다. 그래서 올해 1학기 파이썬 스터디 부터 시작했고, 이후 여름방학 초반에 기본적 인 장고 프레임워크 사용 방법을 스터디 하여 필요한 지식을 먼저 습득 하였습니다. 이 후 서비스에서 사용할 데이터 베이스를 모델링 하였고, 본격적으로 개발을 시작하였습 니다. Git 을 이용하여 버전 관리를 하였으며, GitLab.com을 통해 소스코드를 공유 하 였습니다. 여름 방학이 끝나가고 개강이 다가올 때 즈음, 구독 설정 모듈 부터 개발이 완 료 되었으며, 이후 크롤러 모듈과 카카오톡 통신부 모듈 순으로 개발이 완료 되었습니 다. 8
  • 9. 앞서 언급했다 싶이, 입문 하기 쉬운 편인 파이썬과, 파이썬 웹 프레임워크인 장고를 이 용하여 서비스를 개발 하였습니다. 그리고 그림과 같이 크게 kakao, settings, crawlers 이렇게 새 가지 모듈로 나누어 개발을 진행 하였습니다. 9
  • 10. Kakao 모듈은 사용자가 카카오톡 채팅방에서 하는 대부분의 동작을 처리하는 모듈입 니다. 사용자가 특정 버튼을 누르거나 메시지를 전송하면, 해당 동작을 카카오톡 서버 를 통해 전달받아 처리하는 방식으로 작동합니다. 10
  • 11. Kakao 모듈에서는 주로 사용자가 메시지 전송을 통해 보낸 명령어에 대한 처리, 플러 스친구 홈에서 친구 추가/차단 버튼을 누른 것에 대한 동작과, 채팅방 입장과 퇴장 동작 등, 채팅방에서 사용자가 할 수 있는 동작을 처리하고 있습니다. 11
  • 12. Settings 모듈은 사용자가 받아보고자 하는 소식에 대한 구독을 설정 할 수 있게 하는 모듈입니다. 사용자에게 설정 화면으로 들어갈 수 있는 URL 을 발급해 전달할 때만, kakao 모듈과 카카오톡 서버를 거쳐 통신하며. 그 외의 경우는 사용자가 설정 페이지 에 접속한 경우 이므로 사용자와 직접 통신합니다. 12
  • 13. 사진과 같이 구독 설정 화면을 제공 합니다. 구독 설정 화면은 “설정” 버튼을 누르면 나 오는 “설정 페이지” 버튼에 담긴 URL 을 통해 접근 가능합니다. URL 에는 JWT 가 포 함되어 있으며, 이 JWT를 통해 설정 화면 접속시 사용자를 인증합니다. JWT 발급과 인증 작업은 파이썬 모듈인 python-jose 를 이용하고 있습니다. 설정 화면 레이아웃은 Bootstrap 으용 하였습니다. 13
  • 14. Crawlers 모듈은 지정된 웹페이지에서 필요한 정보를 가져오는 코드들을 모두 모아 둔 모듈 입니다. 주기적으로 크롤링 하여, 데이터베이스에 저장하는 작업을 합니다. HTML 로 작성 되어있는 웹페이지는 BeautifulSoup 모듈을 이용하며, XML 문서는 파이썬 내장 모듈인 ElementTree 를 사용합니다. 적어도 한 시간 이상 간격을 두고 크 롤링 작업을 하고, URL 을 가져오는 경우. 추후 채팅방에 표시 할 때 많은 내용을 표시 할 수 있게 하기 위해, pyshorteners 모듈과 Google 단축 URL API를 이용해 단축하 여 저장합니다. 14
  • 15. 현재 크롤러 모듈에서는, 학사일정, 연락처, 날씨, 학교소식, 학식 식단을 크롤링 하고 있습니다. 연락처의 경우 학내기관과 교수님, 교직원 분들의 연락처를 크롤링 하고 있 으며, 날씨의 경우 학교 주변 날씨 정보를 기상청에서 가져오고 있습니다. 15
  • 16. 구독 하여 받아 볼 수 있는 학교 소식 항목은 아래와 같습니다. 구독 설정 화면에서 선택 적으로 구독 하실 수 있습니다. 추후 학과별 공지사항 등, 좀 더 많은 학내 소식을 제공 할 예정입니다. 16
  • 17. 한번 실행하면 마칠 때 까지 시간이 오래 걸리는 크롤링 작업은 같은 프로세스에서 실 행시 같은 쓰레드의 경우, 다른 작업을 수행 할 수 없고, 다른 쓰레드의 경우 데이터베이 스 쓰기 작업 시 충돌이 있을 수 있습니다. 때문에 Celery 를 이용하여 별도의 Worker 프로세스에서 작업이 실행되도록 하였습니다. 17
  • 18. 서버측 코드 배포시 다양한 도구를 이용하여, 효율적으로 배포하고 관리하고 있습니다. 기본적으로 Gitlab 을 이용하여 버전 관리와 이미지 빌드 및 보관을 하며, Docker 를 이용해 컨테이너 형태로 배포합니다. 컨테이너 스캐쥴링은 Docker 에 내장된 Docker Swarm 으로 관리합니다. DB 서버는 MySQL, 파이썬으로 작성한 백엔드를 프로덕션 환경에 배포하기 위해 gunicorn, Caddy 를 사용합니다. Celery, RabbitMQ 는 앞서 언급한 크롤링 작업을 워커 프로세스에서 실행하기 위해 사용하고 있습니다. 이 모든것 을 배포할 기반 환경으로 AWS 의 EC2 VM 을 사용합니다. 18
  • 19. 실제 서비스 이용 화면입니다. 사진처럼 카카오톡 플러스친구 형태로 서비스가 제공됩 니다. 19
  • 21. 연락처 검색 기능 사용 예 입니다. 21
  • 22. 학사일정, 날씨, 학식 사용 화면입니다. 22
  • 23. 9.18 일부터 공개 베타테스트를 시작하여, 지금까지 진행하고 있으며. 동시에 정식 서 비스를 위해 개선 작업을 계속 하고 있습니다. 개선 작업을 통해 테스트 기간동안 학식 조회 기능을 구현 완료하여, 이를 포함한 버전 을 배포해 둔 상태입니다. 10.13 일 까지 베타 테스트를 계속 진행할 예정이며, 10.21 일에 정식 서비스를 시작할 예정입니다. 23
  • 24. 공개 베타 테스트의 경우 테스트를 시작한 이후, 10월 2일 기준 16분께서 테스트에 참 여해 주시고 계십니다. 24
  • 25. 서비스 운영을 위해 총 3개의 플러스친구 계정을 운영할 예정이며, 그 중 2개 계정을 친 구추가하여 이용해 보실 수 있게 됩니다. 정식 버전을 서비스할 SKHUFEEDS / skhufeeds 계정은 10.21 일 부터 이용하실 수 있으며. 현제는 테스트용 계정인 SKHUFEEDS(TEST) / skhufeeds_test 계정을 통해 공개 베타 테스트 참여만 가능합 니다. SKHUFEEDS(SID) 는 내부 테스트를 위한 비공개 계정으로, 이용하실 수 없습니 다. 25
  • 26. 이제 사용 시연을 해 보도록 하겠습니다. 26