/oberspace

A cloud world that spreads everywhere

Primary LanguageJavaScript

Oberspace : 다중 클라우드 통합 관리 웹서비스 개발

A cloud world that spreads everywhere https://url.kr/s69u2g

과학 기술의 발달과 컴퓨터 업계의 성장에 따라, 스토리지의 발전과 함께 세계 클라우드 시장이 성장하고 있다. 그로 인해 많아지는 클라우드들을 통합으로 관리하여 사용자의 편의를 증대시키는 웹 서비스를 제공하기 위한 웹 서버를 개발한다. 먼저, React.js로 UI를 구현하고, Node.js로 백엔드를 구성하며, DB는 AWS RDS를 이용하는 것으로 개발한다. 여러 아이디를 저장하는 보안적 측면에서는 Access 및 Refresh 토큰을 사용하는 JWT방식을 채용하였으며, 이외에 다중 클라우드 통합 검색, 드래그 앤 드롭을 활용한 타 클라우드로의 데이터 이동, ID/PW 통합 관리 등 현재 존재하는 클라우드들과는 여러 차이점을 가진 기술을 구현하였으며, 이를 통해 제안한 시스템으로 사용자의 편의성과 업무의 능률을 높이는 웹 서비스를 제공한다.

  1. Front-End

Oberspace의 디자인은 사용하기 쉽고, 편리하면서도 사용자가 개인의 파일에 온전히 집중할 수 있도록 도움을 주는 방향으로 개발되었다. 따라서 누구나 사용하기 쉽도록 직관적인 아이콘을 통해 간단하게 구현되었으며, 무채색을 사용함으로써 다른 요소들보다 파일이 눈에 더 잘 들어오도록 사용자의 가시성을 고려하였다. 또한, 사이드바를 선택적으로 접을 수 있는 기능을 추가하였는데, 사이드바를 접으면 그만큼의 공간이 파일 공간으로 대체되면서 시각적으로 더 넓게 확장된 파일 공간을 사용할 수 있도록 구현되었다. 이러한 이유로, Oberspace는 플랫 디자인 (Flat Design)에 따라 UI를 구성하여 가독성을 높였고, 핵심 정보만을 강조하여 사용자 중심의 인터페이스를 제공한다. 다만, 통합 스토리지는 대중적이지 않은 개념의 플랫폼이기 때문에 사용자들에게 생소함을 줄 수 있다는 점을 고려하여, 사용자가 최소한의 사용으로 금방 익숙해질 수 있도록 <그림1>의 메인 화면과 다른 서브 페이지들을 최대한 비슷하게 유지하는 방법을 취함으로써 만족스러운 UX(User Experience)가 될 수 있도록 노력하였다.

image
다른 스토리지 2개가 연결된 oberspace 메인 화면

기존의 클라우드 스토리지들을 통합하는데 앞서 사용자들이 하나의 스토리지를 사용하는 것처럼 불편함이 없어야 한다는 것이 본 서비스의 이슈였고, 하나의 스토리지처럼 구현하였다.

  1. Back-End
  1. Node.js를 통한 개발 본 프로그램에서는 프론트엔드에 이어 웹 서버를 구축, 운용한다. 서버 프로그래밍은 Node.js를 활용하고 데이터베이스를 위해서 Amazon Web Services(AWS)를 사용한다. Node.js는 Javascript Runtime이며 동시에 Server-Client 동작이 가능한 환경을 제공한다. 따라서 Node.js는 데이터베이스(DB) 같은 기능을 만들 수가 있어 프로그램의 로그인과 같은 형태를 구현할 수 있다. 또한 node package manager(npm)을 통한 다양한 모듈을 사용할 수 있어 개발 속도와 효율성이 높다. 1.1 AWS EC2 상의 Node.js 서버 배포 우리는 스토리지를 제공하는 것이 아닌 클라우드 스토리지 통합 관리 측면에서 웹 서버를 이용하여 서비스를 제공한다. 웹 서버 제공을 위해 AWS를 사용하는데 그 중 AWS EC2(Elastic Compute Cloud)는 AWS에서 가장 핵심적인 서비스로서 용량 조절(확장성), 가격, 인스턴스 제어, 보안 측에서 장점이 있다. 이러한 점을 고려하여 Oberspace에서는 AWS EC2를 대여하여 Node.js 서버를 서비스한다.

  2. Oberspace 계정 생성 Oberspace는 신뢰 가능한 서비스를 지향한다. 사용자의 아이디와 비밀번호는 보안 강화 및 많은 양의 데이터를 보관/처리 하기 위해 JWT 형식을 통하여 서비스를 제공한다. 2.1 JWT Token JWT Token은 Access Token과 Refresh Token을 사용하여 제공된다. 자동 로그인 이전에는 PBKDF2 알고리즘을 통해 ID/PW가 웹 DB에 저장되어있다.

image
JWT 동작 방식

최초 로그인 시 발급된 Access 및 Refresh Token을 사용한 방식이다. 브라우저에서 로그인을 요청하면 성공과 실패에 따라 <그림 2>의 방식대로 진행된다. 2.2 로그인 2.1의 JWT Token 방식을 통해 로그인이 진행된다. 단, 한 번에 총 5번의 로그인 시도가 가능하고, 그런데도 실패한다면 30분의 로그인 금지 서비스가 제공된다.

  1. 클라우드 스토리지 계정 추가/삭제 이 서비스의 핵심 목표는 클라우드 스토리지 통합 관리이다. 기업들이 제공하는 스토리지 서비스를 연결하여 고용량, 작업효율을 추구한다. 따라서 Oberspace의 하나의 계정에 여러 개의 클라우드 스토리지 계정을 연결하여 사용한다. 이번 프로젝트에서는 Google과 MEGA, 두 기업의 스토리지 제공에 대해서만 다룬다. 기업들에서 제공하는 REST API를 사용하여 로그인 시, Google은 Token.pickle, MEGA의 경우 MEGA_PASSWORD를 생성한다. (이하 토큰) 생성된 토큰은 사용자의 쿠키에 저장되며 이를 이용해 스토리지에 접근할 수 있다. 또한, Oberspace에 연동된 Google, MEGA계정을 해지할 경우, 브라우저에 저장된 사용자의 쿠키, 웹 서버 내 저장된 클라우드 계정정보를 경고 이후 삭제한다.

  2. 메타데이터 Oberspace 내의 통합되어 있지 않은 각 클라우드 드라이브의 API 내 라이브러리를 이용하여 흩어져있는 메타데이터를 Oberspace의 UI에 적합하게 가공한 뒤 일원화 시켜 통합된 사용자 환경을 구성하였다.

Ⅳ. 실험 결과 및 분석

제안한 시스템은 프론트는 React, 백 엔드로는 Node.js로 서버를 구성하였고, Access 및 Refresh JWT를 사용하여 ID/PW 보안성을 높였으며, AWS RDS를 사용하여 DB를 구현하였다. 이렇게 개발된 시스템은 미리 정해둔 아래의 여러 실험 및 테스터의 의견으로 분석되었다.

  1. 파일 업로드/다운로드 시간 이는 사용자가 수신 창 자동 조정 수준을 어떻게 설정해 두었는지와 네트워크 상황에 따라 크게 달라졌다. 실험을 진행한 저자의 환경은, normal로 설정해 두었고, 다운로드/업로드 속도는 479.29/467.56(Mbps), 지연 시간은 1.23ms의 환경에서 Google Drive 클라우드를 바탕으로 실험을 진행하였다. 실험은 10mb 파일과 500mb 크기의 임의로 생성한 파일로 10번씩 테스트를 진행하였다. 실험 결과는 아래와 같다.
image
  1. 클라우드 간 데이터 이동에 걸리는 시간 클라우드 간 데이터 이동에 걸리는 시간은 단순하게 계산이 된다. 클라우드 A에서 클라우드 B로 이동한다고 가정한다면, 클라우드 A에서의 다운로드 시간, 클라우드 B에서의 업로드 시간, 그리고 딜레이 시간이 합쳐졌다.

  2. 시스템 로그인에 걸리는 시간 시스템 로그인은 로그인 버튼을 누르고, 메인 화면까지 들어가는데 걸리는 응답 시간으로 측정하였다. 응답 시간은 약 218ms 가 걸렸다. 시스템 로그인을 하며 각 클라우드 로그인 시간까지 모두 거쳐야 하는 바람에 시간이 늘어난 것으로 보인다. 이후 이 부분은 해결해야 하는 부분 중 하나로 인식된다.

  3. 추가한 기능의 반응 저자를 제외한 테스터의 의견을 받아 정리하였다. 4.1 Oberspace의 클라우드 통합 UI 분명히 여러 클라우드 스토리지들을 사용하는 사람들에게는 충분히 매력적인 UI 제공이었다는 반응이 대부분이었다. 다만, 클라우드 3개 이상이 되어버리면, 장점이 조금 퇴색된다는 의견이 있었다. 4.2 클라우드 통합검색 통합 검색시스템은 사용하기에 매우 좋았다는 평이었다. 다만 검색에 따라 어느 클라우드에서 어떤 폴더 내에 있는 어떤 파일인지를 구분하는 방식이 조금 더 개선되어 구분하기 쉬우면 좋을 것 같다는 의견이 있었다. 4.3 특정 파일의 API 호환 기존 크롬에서 지원되는 구글 문서들과 pdf의 경우, 크롬을 사용할 때 웹페이지에서 열 수 있어 편했으나, Hwp의 경우 따로 프로그램을 이용하여 열어야 했었기에 그 부분은 편해졌다는 의견이다. 다만, 프로그램이 설치되어있는 PC의 경우, 뷰어로써의 기능만이 돋보였다는 아쉬움이 있었다. 4.4 ID/PW 통합 관리 여러 클라우드를 사용할수록 더욱 이에 대한 평가가 높았다. 많은 아이디를 사용할수록 통합으로 관리할 수 있다면 사용자 관점에서 편하다는 의견이 많았다. 다만, 보안 측면에서는 조금 걱정된다는 의견이 있었다. 이는 웹 서버를 운영하는 입장에서 끊임없이 생각해야 할 문제로 생각된다.

Ⅴ. 결 론

오늘날 클라우드 컴퓨팅 기술은 일상생활에서부터 기업까지 널리 사용되면서 큰 영향력을 미치고 있다. 세계 기업을 비롯한 국내 기업까지 다양한 클라우드 스토리지들을 제공하면서 아이디와 패스워드 관리, 클라우드 간의 트래픽 제한 등의 불편함이 발생하고 있다. 이 논문에서는 다수의 클라우드 컴퓨팅 서비스를 사용할 때, 통합 관리를 위한 서비스를 제공하는 클라우드 통합 클라우드 서비스 Oberspace 의 개발에 관해 기술하였다. 이를 통해 개발된 Oberspace는 클라우드 컴퓨팅의 발전에 기여하는 서비스를 제공하고 더 나아가 사용자 친화적인 웹 서비스로 발전할 수 있도록 할 것이다.