출처 http://swiftlab.kr/archives/402
최근 Swift언어를 기반으로 iOS앱을 Parse를 이용해서 만들어 보니, 생각했던 것보다 사용하는 것이 좋았습니다. 사용자등록을 위해 서버에 데이터를 저장하는 다양한 유형의 앱을 통해 매우 편리하게 이용했습니다. 그래서 새 앱을 구현하는데 도움이 될 것 같아 개인적으로 느낀 Parse사용시 장단점을 정리해 보았습니다.
Parse란?
Parse는 MBaaS(Mobile Backend as a Services)에서 가장 유명한 서비스중 하나입니다. 2013년도에 facebook에 인수되었습니다.
관련 사이트: http://www.parse.com
MBaaS
BaaS(Backend as a Service) 또는 MBaaS(Mobile Backend as a Service)는 스마트폰의 웹앱이 필요로 하는 서버측의 다양한 기능을 인터넷을 통해 서비스로 제공하는 클라우드 서비스의 일종을 말합니다.
제공되는 기능은 서비스에 따라 다양하지만, 이용자 정보의 등록, 관리 및 인증, 데이터 저장, 푸시알림, 과금결제, 소셜미디어 연동등이 구현되어 있는 경우가 많습니다. 앱 개발자는 이런 기능의 API를 호출하여 자신의 앱에 통합하여 서비스하게 됩니다.
Parse사용시, 장점
한마디로 ‘필요할 것 같은 기능은 미리 갖춰져 있어 일일히 찾지 않아도 된다’, ‘앱 기능에 집중해서 개발속도를 높일 수 있다’라고 이야기할 수 있습니다. 다음은 인프라, 서버, 클라이언트의 관점에서 정리해보았습니다. 다른 MBaaS서비스와 공통된 내용도 있지만 Parse만의 공유 내용도 포함하고 있습니다. 또한, 클라이언트에 대해서는 iOS를 기준으로 작성하다보니, 다른 플랫폼에서는 맞지 않을 수 있습니다.
인프라
1. 데이터베이스를 준비할 필요가 없다.
데이터베이스는 당연히 준비되어 있어야 합니다. MongoDB와 같은 NoSQL에서 테이블 컬럼을 정의하지 않아도록 원하는 데이터를 저장할 수 있습니다.
2. 데이터베이스에 인덱스를 붙일 필요가 없다.
스마트 인덱스라는 기능이 들어가 있어, 아무래도 클라이언트에서 실행되는 쿼리를 분석하고 알맞게 인덱스를 처리해주는 것 같습니다. 실제 데이터베이스에 인덱스를 설정하는 장소가 존재하지 않습니다.
http://blog.parse.com/2014/04/01/smart-indexing-at-parse/
3. 정적인 파일 스토리지를 준비할 필요가 없다.
파일 저장은 미리 준비되어 있습니다. 예로 사용자가 게시한 사진을 그곳에 저장합니다. 일부러 S3등에 파일을 업로드할 필요가 없습니다.
4. 스케일까지 돈을 지불할 필요가 없다.
2014년 상반기에 비용체계가 변경되고 종량 과금되는 부분에 무료 부분이 늘어났습니다.
응용프로그램별 무료 범위는 다음과 같습니다.
- 요청: 30req/s
- 파일스토리지: 20GB
- 데이터베이스 스토리지: 20GB
- 파일전송용량: 2TB
- 관련 정보: https://parse.com/plans
5. 확장에 대해 고민할 필요가 없다.
사용자가 늘고 접속이 증가했을 때 돈을 지불하면 상관없습니다. 더 많은 요청을 처리해주게 됩니다. 처음에는 사용자가 증가했을 때의 일을 걱정하지 않고 서비스를 집중해서 만들 수 있습니다.
서버
6. 사용자 등록 및 로그인을 구현할 필요가 없다.
사용자 모델은 처음부터 준비되어 있고, Twitter, Facebook에 연동한 로그인 기능도 있습니다. 또한 익명 사용자로 이용할 수 있도록 할수도 있습니다. 이런 경우, 기종변경이나 여러가지 기기에서 사용할 때 사용자명과 암호를 설정하여 데이터를연동하는 방법도 가능합니다.
7. 서버측 API를 구현할 필요가 없다.
최소 CRUD의 경으, 클라이언트에서 직접 데이터베이스에 쿼리를 던지는 형태로 실행할 수 있습니다. 그렇다고 해서 서버에 로직을 넣어서 처리하는 것이 아니라, 데이터베이스작업중에 특정 작업을 실행할 수 있도록 하고 특정 기능을 가진 새로운 API를 만들수도 있습니다.
8. Push알림을 구현할 필요가 없다.
Push 알림 서버측 구현은 이미 완성되어 있어 각종 키를 설정해주기만 하면 됩니다. 사용자의 기기마다 채널설정을 해주면 특정채널에 속해 있는 장치에만 알림을 보내는 것도 가능합니다. 특정 시간에 Push알림을 보내는 예약기능도 가능합니다.
https://parse.com/products/push
9. 이미지(파일) 게시물을 따로 구현할 필요가 없다.
일반적인 데이터베이스 작업 외에 이미지등의 대용량 데이터도 쉽게 파일 스토리지에 업로드할 수 있습니다.
10. 관리화면을 준비할 필요가 없다.
기존 관리화면에서 데이터베이스 조작이나 Push알림 설정등을 할 수 있어 일부러 별도로 만들 필요가 없습니다.
11. 접속 내용에 대한 분석을 준비할 필요가 없다.
간단한 접속내용 분석은 준비되어 있어 하루당 사용자수,쿼리수등을 확인할 수 있습니다. 이전까지는 유료기능이었지만 2014년도부터 접속 분석 기능이 무료화가 되었습니다.
클라이언트
12. 비동기 처리를 구현할 필요가 없다.
데이터베이스 작업 및 파일 검색에 대해서는 네트워크를 경유하기 때문에 비동기 작업이 필요하지만, 필요한 구현은 이미 준비되어 있습니다.
13. 캐싱 메커니즘을 구현할 필요가 없다.
이미지 등의 파일은 한번읽고 담는 경우, 자동으로 캐시해줍니다. 데이터베이스의 데이터에 대해서도 쿼리마다 캐시하고 있습니다.
14. 목록뷰를 구현할 필요가 없다.
목록뷰 클래스가 준비되어 있어, 일반적으로 더 적은 기술로 데이터베이스의 데이터를 나열할 수 있습니다. 또는 Pull to Refresh기능도 준비되어 있습니다.
15. 통신 실패시 다시 요청을 구현할 필요가 없다.
서버와의 통신에 실패시, 몇초마다 시간을 체크해서 5회까지는 다시 요청을 보내줍니다.
Parse 사용시 단점
다양한 기능이 준비되어 있지만, 너무 복잡한 것을 만들려고 생각하면 역시 귀차니즘이 발동하게 됩니다.
서버 내용은 볼 수 없다.
MBaaS은 거의 같다고 생각되지만, 서버에 직접 SSH로 로그인하는등의 작업은 할 수 없습니다.
관계형 데이터베이스는 사용할 수 없다.
앱에서 이용하고 싶은 생각을 가질 수 있지만, 관계형 데이터베이스는 준비되어 있지 않습니다.
접속 내용 분석은 사용자 지정을 할 수 없다.
기존 접속내용 분석은 일자별 데이터를 취할 수 있지만, 항목이 정해져 있습니다. 그래서 예로 특정기능에 대한 접근수를 잡고 싶어도 불가능합니다. 이런 경우, Google analytics와 같은 다른 서비스를 도입하면 좋습니다.
문자열 부분 일치 검색등을 할 수 없다.
부분적인 일치되는 검색은 없어서 검색 기능을 만드는 경우, 독자적인 방법을 강구해야 합니다.
Parse를 본격적으로 사용한 것은 최근 몇개월정도이지만, 사용자등록, 로그인이 처음부터 준비되어 있어 상당히 편리했습니다. 또한 놀란 것은 데이터베이스의 스마트 인덱스 기능입니다. 인덱스를 자동으로 만들어 주는 것을 생각하지 않으면 안되는 것이 너무 좋았습니다.
개인이나 소그룹으로 만드는 앱이라면, 처음부터 대부분은 경우 무료 범위내에서 사용할 수 있다고 생각됩니다. 복잡한 것을 구현할 필요가 없는 이상 서버측 구현이 거의 필요가 없어 상당히 개발속도를 높일 수 있습니다. 실제로 Parse를 사용하여 개인 앱을 만들때 사용하기 전에 예상하 것보다 코드량이 줄어 스트레스도 줄게 됩니다.
'Program > Android' 카테고리의 다른 글
Android 1일차 - 안드로이드 프로그래밍 시작하기 (0) | 2015.08.01 |
---|---|
Android 1일차 - 안드로이드 생명주기 (0) | 2015.08.01 |
Android Layout (0) | 2014.09.12 |
GoogleMap-API-v2 (0) | 2014.08.23 |
안드로이드/Android Cursor를 이용한 DB 데이터 사용 하기 (0) | 2014.08.18 |