an implementation of streaming service using cloud storage

7
- 1 - 클라우드 스토리지를 이용한 스트리밍 서비스 구현

Upload: hanbum-seo

Post on 12-Apr-2017

158 views

Category:

Software


3 download

TRANSCRIPT

Page 1: An Implementation of Streaming Service using Cloud Storage

- 1 -

졸업 논문 최종원고

클라우드 스토리지를 이용한 스트리밍 서비스 구현

An Implementation of Streaming Service using Cloud Storage

제출일 : 2015년 10월 23일

제출자 : 학번 : 200954004

성명 : 정 남 규

학번 : 200954008

성명 : 서 한 범

지도교수: 김 현 경 (인)

한신대학교 공과대학

정보통신학부

Page 2: An Implementation of Streaming Service using Cloud Storage

- 2 -

클라우드 스토리지를 이용한 스트리밍 서비스 구현

An Implementation of Streaming Service using Cloud Storage

서 한범, 정 남규

Han-Bum Seo, Nam-Kyu Jeong

한신대학교 IT대학 정보통신학부

Div. of Information & Telecom, IT college, Hanshin Univ.

본 논문에서는 클라우드 스토리지에 저장된 미디어 파일을 스트리밍 방식으로 재생이 가능한 서비스 제공을 목적으로 한다. 처음 사용자는 웹을 통해서 가입을 한다. 사용자는 클라우드 스토리지를 이용하기 위해서 직접 하나씩 파일을 업로드하는 것이 아니라 클라이언트 프로그램을 통해 파일 동기화 방식으로 클라이언트와 서버간의 파일 리스트를 대조하여 파일 송수신 및 삭제가 진행된다. 저장한 미디어 파일를 웹에서도 재생이 가능하지만 모바일을 주로 이용한 서비스 제공을 목표로 하였으며, 뮤직플레이어 형태의 어플리케이션을 이용하여 음악을 들을 수 있다. 클라우드 스토리지와 스트리밍 재생 서비스이 결합된 서비스를 이용함으로써 사용자의 편의성과 메모리 사용의 효율성을 높일 수 있다.

1. 서론 데이터 저장장치와 모바일 데이터 전송기술의 발전으로 하루 평균 SNS에 콘텐츠가 25억 개 이상 게시되고 있으며. 동영상 콘텐츠도 30초마다 한 개씩 유튜브에 올라오며, 모바일 메신저로 하루에 약 40억 개의 메시지가 이동한다. 현재는 빠른 인터넷 속도에 따라 전송되는 데이터 용량도 폭발적으로 증가하고 있으며, 그 형태도 텍스트, 이미지, 음성, 동영상 등으로 다양하다.[1] 본 논문에서는 이와같은 네트워크 환경 속에서 사용자가 웹, PC, 모바일을 통해 클라우드 스토리지를 이용한 스트리밍 서비스 구현을 목표로 한다. 구성은 다음과 같다. 2장에서는 사용자가 서비스를 이용하는데 있어서 접근 순서를 토대로 웹, 클라이언트 프로그램, 모바일 순서대로 작성을 하였으며 모든 부분에서 공통적으로 사용되는 탐색 방식이나 기법은 추가적으로 다루었다. 3장에서는 모든 내용을 종합하여 결론을 내릴 것이다.

2. 연구 내용

2.1 웹페이지 가장 우선적으로 사용자가 서비스를 이용하기 위한 가입은 웹을 이용하도록 하였다.

(그림1) 가입 및 로그인 페이지

(그림 1)과 같이 웹 서버를 이용하여 가입 및 로그인 페이지를 구현하였으며, 가입은 단순히 ID를 이용하여 가입이 가능하며 가입이 성공되면 해당 사용자만의 디렉토리가 서버 내에 생성

Page 3: An Implementation of Streaming Service using Cloud Storage

- 3 -

되어 클라이언트 프로그램을 이용하여 파일 전송이 가능하게 된다.

(그림 2) 사용자 파일 리스트 웹페이지

로그인 페이지를 통해 로그인에 성공하면 (그림 2)와 같이 링크가 걸려있는 파일 리스트를 볼 수 있는데 해당 페이지는 업로드한 파일의 리스트 사용자가 확인하고 파일 이름을 클릭하면 해당 파일에 대해서만 재생이 가능하도록 구현하였다.

2.2 사용자 및 파일 리스트 관리 (그림 2)에서 사용자의 파일 리스트만 봐도 알 수 있듯이 다수의 사용자가 여러 개의 파일을 이용할 수 있는 서비스를 구현하기 위해선 사용자 및 파일 리스트 관리할 데이터베이스가 필수적이다. 이와 같은 경우에 SQL을 이용하는 것이 일반적이지만 데이터베이스 관련 어플리케이션의 성능을 좌우하는 것이 바로 SQL 실행 속도이며, 그중에서도 가장 많은 시간과 자원을 소모하면서, 전체 시스템 성능을 좌우하는 것이 질의문(select query)이기 때문이다.[2]

(그림3) 웹을 통한 디렉토리 접근

그래서 이러한 단점을 극복하기 위해 (그림 3)과 같이 웹 프로그래밍 언어를 이용하여 서버에

서는 디렉토리 탐색을 하여 웹에 파일 리스트를 출력하도록 구현하였다.

(그림 4) 디렉토리 탐색 순서도

(그림 4)는 디렉토리 탐색의 순서도이다. 기본적으로 깊이 우선 탐색을 구현하여 사용자 디렉토리의 최상위 경로부터 디렉토리인지 파일인지를 판단하여 재귀적으로 탐색하여 출력하도록 구현하였다.

(그림 5) 서버에서 작성한 파일 리스트

(그림 5)는 (그림 2)와 달리 링크가 설정되지 않은 것을 볼수 있는데 두 페이지 모두 (그림 4)의 동일한 알고리즘을 이용하여 구현하였다. 단지 숨겨진 페이지에서는 폼 ID에 디렉토리 경로를 삽입하여 상위 디렉토리와 하위 디렉토리 및 파일이 구분이 가능하도록 구현하였다.

Page 4: An Implementation of Streaming Service using Cloud Storage

- 4 -

2.2.1 웹 파싱 앞서 설명한 서버에서 작성된 파일리스트를 클라이언트 PC에서는 웹을 통하여 가져올 수 있도록 구현하였다. 이와 같은 기법을 웹 파싱(Web Parsing)이라고 하는데

(그림 6) 디렉토리 탐색 순서도

(그림 6)와 같이 파일리스트를 받아오는 방식또한 최상위 경로부터 하위 디렉토리 이름을 폼 ID로 찾아가면서 깊이 우선 탐색으로 구현하였다.

2.3 클라이언트 프로그램 사용자가 스마트폰을 이용하여 듣고 싶은 음악 파일을 클라이언트 프로그램을 이용하여 손쉽게 업로드 할 수 있도록 구현하였다.

(그림 7) 아이디 입력과 루트 경로 설정

(그림 7)과 같이 아이디를 입력하고 로그인에 성공하면 사용자 아이디의 해싱(Hashing) 처리가 된 특정 페이지에 접근하여 최근 전송된 클라이언트의 루트 디렉토리 경로를 받아온다. 가입 직후에는 기본 디렉토리가 설정이 되어 있지 않지만 단 한 번의 동기화가 진행 되었다면 지정한 디렉토리의 경로가 서버에 저장이 된다.

(그림 8) 트리 구조 디렉토리 탐색기

그렇기 때문에 루트 결로 설정을 통해 동기화할 디렉토리르 지정해주어 디렉토리 경로가 확인이 되면 (그림 8)와 같이 트리구조로 디렉토리가 나타나게 된다. 파일이 아닌 디렉토리만 트리로 나타나게 구현하였으며 디렉토리내의 파일들은 우측에 테이블 구조로 이름, 크기, 종류, 수정한 날짜를 확인 할 수 있도록 구현하였다.

(그림 9) 다운로드와 동기화 버튼 및 서버 파일 리스트

또한 (그림 9)와 같이 오른편에는 서버에 현재 저장된 파일리스트를 볼 수 있는데 이것 또한 앞서 설명한 특정 웹페이지를 파싱하여 구현 하였다.

Page 5: An Implementation of Streaming Service using Cloud Storage

- 5 -

2.3.1 소켓 통신 (그림 9)에서 볼수 있듯이 로그인에 성공하면 다운로드와 동기화 버튼을 볼 수 있는데 동기화와 다운로드는 모두 TCP/IP 소켓 통신으로 구현이 되었다. 클라우드 스토리지 시스템의 데이터 전송은 속도보다는 안정성이 매우 중요하다. ‘전송한 데이터를 제대로 받았는지’, 또한 ‘송수신하는 컴퓨터 간의 연결회선은 문제가 없는지’에 대해서 신뢰성이 보장되어야 하기 때문에 TCP/IP 통신을 해야 한다.[3]

(그림 10) 동기화

실질적으로 ‘보내는쪽과 받는쪽이 어디가 되는냐’에 따라서 업로드와 다운로드로 구분이 되는데 그중에서 (그림 10)과 같이 동기화는 파일 리스트를 이용하여 부분 업로드를 구현하여 완성시켰다. 우선 서버의 파일리스트를 가져오고 현재 동기화할 디렉토리에서 파일을 전송하면서 하나씩 이름을 제거한다. 그중에는 중복되는 것은 전송하지 않고 통과하고 리스트에 남아있는 목록을 전부 삭제하게 되면 클라이언트와 서버의 파일 리스트가 같게 된다. 파일의 송신과 수신 알고리즘은 다음과 같다.

(그림 11) 송신 알고리즘

(그림 11)에서 볼 수 있듯이 (그림 4)과 동일한 방식으로 디렉토리를 탐색하여 파일 이름을 송신한다.

(그림 12) 수신 알고리즘

(그림 12)에 경우에도 (그림 6)과 동일한 방식으로 구현을 했으나 수신받은 파일 이름이 디렉토리로 판단이 될 경우 디렉토리를 만들어 하위에 파일을 복사하도록 구현하였다.

2.4 모바일 스트리밍 서비스 모바일 스트리밍 서비스는 모바일 어플리케이션에서 웹서버로부터 데이터를 가져와 처리가 된다. 파일 리스트에 경우 클라이언트 프로그램과 동일하게 사용자의 특정 페이지의 내용을 파싱으로 불러와서 URL주소를 만들어 이용하도록 구현하였다.

Page 6: An Implementation of Streaming Service using Cloud Storage

- 6 -

(그림 13) 모바일 어플리케이션 첫화면

(그림 13)과 같이 사용자 페이지를 불러오기 전에 클라우드에 저장된 정보를 필요한 사용자에게 제공하기 위해서 우선적으로 사용자를 확인을 할 수 있는 로그인 창을 실행 시킨다. 사용자가 웹 사이트를 통해 생성한 아이디를 로그인 창에서 사용 가능 한지를 확인하고 사용자에게 토스트를 통해 알린다.

(그림 14) 모바일 어플리케이션 첫화면

로그인에 성공하면, (그림 14)과 같이 사용자가 클라이언트를 통해 미리 업로드한 미디어 파

일과 폴더를 불러오는데, 파일과 폴더를 구별하기 위해서 폴더일 경우 이름 마지막에 ‘/‘를 넣었다. 불러온 목록에서 파일을 선택할 경우 음악이 실행되며, 폴더를 선택할 경우 최상단의 경로 정보가 갱신되고 폴더 안의 목록을 불러온다. 실행된 파일은 하단의 제어기를 통해 재생, 정지, 다음 파일등의 기능을 사용할 수 있으며 실시간으로 시간정보를 받아 탐색 바(Seek bar)를 이용해 원하는 부분으로 이동할 수 있다.

2.4.1 편의 기능 미디어 플레이어를 제작하면서 우리가 흔히 사용하는 여러 기능을 최대한 활용하여 만들기 위해서 반복 듣기 기능과 무작위 듣기 기능을 추가했다. 반복 듣기 기능은 한곡을 반복해서 듣는 기능을 말하고, 무작위 듣기 기능은 폴더 내의 미디어를 임의의 순서대로 재생하는 기능이다. 기본적으로 미디어 플레이어를 실행할 경우에 비활성화 상태이며 (그림 14)와 같이 'Loop X' 와 ‘Random X’ 로 표시된다.

(그림 15) 편의 기능 활성화시 변화 모습

기능이 활성화되면 (그림 15)와 같이 'Loop O' 와 ‘Random O’ 로 표시된다. 두 기능은 서로 충돌을 방지하고 직관적으로 사용할 수 있게

Page 7: An Implementation of Streaming Service using Cloud Storage

- 7 -

무작위 듣기 기능보다 반복 듣기 기능을 우선적으로 실행하게 되어있다. 따라서 두 기능이 모두 활성화 되어있으면 한곡만 반복해서 재생된다.

3. 결론 본 논문에서는 사용자의 편의를 높이는 목적으로 구현이 되었다. 파일을 하나씩 업로드하는 방식이 아니라 버튼하나로 디렉토리 단위의 동기화를 구현하였으며, 웹페이지을 통한 스트리밍 재생은 물론이며 어플리케이션을 통해서 SD메모리에 없어도 뮤직플레이어처럼 재생 가능한 어플리케이션을 제공함으로써 전체적인 시스템을 함축시켜 편의성 높은 UI와 모바일 네트워크 환경에서 효율적인 데이터 전송이 가능하게 구현하였다. 하지만 보완해야할 부분도 많이 있다. 우선 소켓통신이 한명의 사용자만 접속할 시에만 통신이 원활하고 다중 접속을 시도할 때는 모든 사용자가 끊어지는 문제점이 있으며, 편의를 위해 인증절차를 간단히 했지만 그에 따른 보안은 취약할 수밖에 없다. 또한 현재 존재하는 스트리밍 서비스에 비해 전송을 위한 압축을 하지 않아서 어플리케이션을 통해 음악을 들을 경우 많은 데이터가 소비된다는 문제점이 있다.

4. 참고문헌[1] 데이터를 지배하는 자, 세상을 얻는다 - 빅데이터, “하루의 전송되는 데이터의 양”, http://it.donga.com/12113/,(2015.03.15.)

[2] Huni's Brog :: 높은 응답성능을 위한 쿼 리 작성 규칙, “쿼리 응답 속도”, http://kor2u.tistory.com/entry/높은-응 답성능을-위한-쿼리-작성-규칙,(2015.10.1.)

[3] 윤상배, 『뇌를 자극하는 TCP/IP 소켓 프로그래밍』, 한빛 미디어, pp.175 ~ 179, pp.206 ~ 207, 2011

5. 약력

서 한범

1990년 9월 19일

강원도 태백 출생

2009년 경인고등학교 졸업

2015년 한신대학교

정보통신학부

졸업예정

정 남규

1990년 4월 5일

서울특별시 출생

2009년 청원고등학교 졸업

2015년 한신대학교

정보통신학부

졸업예정