앱 클라우드 서비스 개발

93
클라우드에서 앱 서비스 개발 VERSION 1.3 Release Date : 2012.8 Android OS Programming <고 강 태> / [email protected] 010-8269-3535 @gtko http://www.slideshare.net/gtko http://goo.gl/9V3H6 http://www.facebook.com/gangtai.goh

Upload: -

Post on 20-Dec-2014

1.673 views

Category:

Documents


3 download

DESCRIPTION

앱을 위한 서버 서비스를 개발하는데 node.js, cloudfoundry, baas.io 를 이용해서 개발하는 방법을 이야기하고 있다.

TRANSCRIPT

• ����������� ������������������  클라우드에서����������� ������������������  앱����������� ������������������  서비스����������� ������������������  개발����������� ������������������  

• ����������� ������������������  VERSION����������� ������������������  1.3����������� ������������������  • ����������� ������������������  Release����������� ������������������  Date����������� ������������������  :����������� ������������������  2012.8����������� ������������������  

����������� ������������������  ����������� ������������������  Android����������� ������������������  OS����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  Programming����������� ������������������  

<고����������� ������������������  강����������� ������������������  태>����������� ������������������  /����������� ������������������  [email protected]

010-8269-3535����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  @gtko����������� ������������������  

http://www.slideshare.net/gtko

http://goo.gl/9V3H6

http://www.facebook.com/gangtai.goh

• 2

목차����������� ������������������  

0.����������� ������������������  Me����������� ������������������  

1. ����������� ������������������  Cloud����������� ������������������  

2. ����������� ������������������  node.js����������� ������������������  

3. ����������� ������������������  baas.io����������� ������������������  

• 3

0.Me����������� ������������������  

01.����������� ������������������  강사����������� ������������������  약력����������� ������������������  

02.����������� ������������������  강의����������� ������������������  

• 4

현����������� ������������������  Thinkbee����������� ������������������  대표����������� ������������������  ����������� ������������������  -����������� ������������������  스마트디바이스����������� ������������������  분야����������� ������������������  저술,����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  강의����������� ������������������  및����������� ������������������  개발����������� ������������������  

����������� ������������������  -����������� ������������������  안드로이드����������� ������������������  /����������� ������������������  스마트TV����������� ������������������  /����������� ������������������  HTML5����������� ������������������  /����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  Node.js����������� ������������������  전문����������� ������������������  강사����������� ������������������  

전����������� ������������������  미주제강����������� ������������������  전산팀장����������� ������������������  

����������� ������������������  -����������� ������������������  ERP����������� ������������������  /����������� ������������������  Groupware����������� ������������������  

전����������� ������������������  LG전자����������� ������������������  연구소����������� ������������������  ����������� ������������������  -����������� ������������������  Web����������� ������������������  application����������� ������������������  /����������� ������������������  Network����������� ������������������  engineer����������� ������������������  /����������� ������������������  Unix����������� ������������������  system����������� ������������������  Admin.����������� ������������������  

주요����������� ������������������  개발����������� ������������������  경력����������� ������������������  ����������� ������������������  -����������� ������������������  Android:����������� ������������������  신한카드����������� ������������������  /����������� ������������������  KT향����������� ������������������  4종����������� ������������������  앱����������� ������������������  /����������� ������������������  메트로놈����������� ������������������  /����������� ������������������  트윗메모����������� ������������������  

����������� ������������������  -����������� ������������������  웹����������� ������������������  메일����������� ������������������  서버,����������� ������������������  그룹웨어,����������� ������������������  도서/자산/바코드����������� ������������������  관리,����������� ������������������  채팅,����������� ������������������  8좌화상회의용����������� ������������������  서버����������� ������������������  

강사����������� ������������������  약력����������� ������������������  

• 5

한빛미디어,����������� ������������������  ‘태블릿����������� ������������������  호환����������� ������������������  안드로이드����������� ������������������  앱����������� ������������������  프로그래밍’����������� ������������������  

����������� ������������������  -����������� ������������������  http://goo.gl/NUZEk����������� ������������������  

����������� ������������������  

마이크로소프트웨어����������� ������������������  ����������� ������������������  -����������� ������������������  마이크로소프트웨어����������� ������������������  Google����������� ������������������  TV����������� ������������������  플랫폼(2012/6)����������� ������������������  

����������� ������������������  -����������� ������������������  마이크로소프트웨어����������� ������������������  LG전자����������� ������������������  스마트TV����������� ������������������  프로그래밍����������� ������������������  

����������� ������������������  -����������� ������������������  ICS����������� ������������������  vs.����������� ������������������  iOS5����������� ������������������  

����������� ������������������  

삼성전자����������� ������������������  ����������� ������������������  -����������� ������������������  삼성전자����������� ������������������  안드로이드����������� ������������������  기반����������� ������������������  S����������� ������������������  Pen����������� ������������������  SDK����������� ������������������  응용과정����������� ������������������  교재����������� ������������������  

����������� ������������������  -����������� ������������������  안드로이드����������� ������������������  개발자를����������� ������������������  위한����������� ������������������  bada����������� ������������������  포팅����������� ������������������  가이드,����������� ������������������  2011,����������� ������������������  삼성전자����������� ������������������  

주요����������� ������������������  저술����������� ������������������  

• 6

주요����������� ������������������  강의����������� ������������������  

•  Android����������� ������������������  기본,����������� ������������������  심화,����������� ������������������  전문����������� ������������������  과정����������� ������������������  •  삼성����������� ������������������  개발자센터����������� ������������������  /����������� ������������������  인하대학교����������� ������������������  /����������� ������������������  원광대학교����������� ������������������  ����������� ������������������  •  안양지식산업진흥원����������� ������������������  /����������� ������������������  대구대학교����������� ������������������  /����������� ������������������  청강대학교����������� ������������������  

•  HTML5����������� ������������������  /����������� ������������������  Smart����������� ������������������  TV����������� ������������������  과정����������� ������������������  •  K����������� ������������������  모바일����������� ������������������  /����������� ������������������  대구디지털산업진흥원����������� ������������������  

•  대외����������� ������������������  활동����������� ������������������  •  삼성전자����������� ������������������  Android����������� ������������������  Developer����������� ������������������  Guide����������� ������������������  to����������� ������������������  bada����������� ������������������  저술����������� ������������������  •  경희대학교����������� ������������������  bada����������� ������������������  교재����������� ������������������  감수����������� ������������������  •  구글코리아����������� ������������������  2011����������� ������������������  개발자랩����������� ������������������  튜터����������� ������������������  참여����������� ������������������  •  NIPA����������� ������������������  한국공개소프트웨어협회����������� ������������������  멘토����������� ������������������  참여����������� ������������������  •  OSS����������� ������������������  OpenTech����������� ������������������  Day����������� ������������������  다수����������� ������������������  강연����������� ������������������  

• 7

1.cloud����������� ������������������  

01.����������� ������������������  Don’t����������� ������������������  buy,����������� ������������������  be����������� ������������������  use!����������� ������������������  

02.����������� ������������������  Beyond����������� ������������������  the����������� ������������������  cloud.����������� ������������������  

03.����������� ������������������  Don’t����������� ������������������  stack����������� ������������������  up����������� ������������������  the����������� ������������������  server!����������� ������������������  

����������� ������������������  

• 8

Don’t����������� ������������������  buy,����������� ������������������  be����������� ������������������  use!����������� ������������������  

• 9

Cloud����������� ������������������  

• 10

눈에����������� ������������������  보이는게����������� ������������������  다가����������� ������������������  아니다����������� ������������������  

http://sam9040.tistory.com/entry/구름에-관하여����������� ������������������  

• 11

클라우드����������� ������������������  컴퓨팅����������� ������������������  

Storage����������� ������������������  

Server����������� ������������������  

Database����������� ������������������  

Everything����������� ������������������  as����������� ������������������  a����������� ������������������  Service����������� ������������������  Through����������� ������������������  Internet����������� ������������������  

Ram����������� ������������������  

• 12

SaaS����������� ������������������  =����������� ������������������  AaaS����������� ������������������  +����������� ������������������  PaaS����������� ������������������  

• 13

Don’t����������� ������������������  stack����������� ������������������  up����������� ������������������  the����������� ������������������  server,����������� ������������������  

Only����������� ������������������  write����������� ������������������  a����������� ������������������  code!����������� ������������������  

Software����������� ������������������  as����������� ������������������  a����������� ������������������  Service����������� ������������������  

• 14

WoW����������� ������������������  

http://www.slideshare.net/CiscoSP360/vmworld-2009-vmworld-data-center����������� ������������������  

• 15

Easy����������� ������������������  

• 16

2.����������� ������������������  Node.js����������� ������������������  

01.����������� ������������������  install����������� ������������������  node.js����������� ������������������  

02.����������� ������������������  node����������� ������������������  application����������� ������������������  

03.����������� ������������������  mongodb����������� ������������������  

• 17

01.����������� ������������������  install����������� ������������������  node.js����������� ������������������  

install����������� ������������������  node.js����������� ������������������  

REPL����������� ������������������  

npm����������� ������������������  

node����������� ������������������  version����������� ������������������  manager����������� ������������������  

nave����������� ������������������  

• 18

node.js����������� ������������������  설치����������� ������������������  

nodejs.org����������� ������������������  에서����������� ������������������  원하는����������� ������������������  OS로����������� ������������������  다운로드후����������� ������������������  설치����������� ������������������  

����������� ������������������  

����������� ������������������  

����������� ������������������  

����������� ������������������  

����������� ������������������  

����������� ������������������  

����������� ������������������  

����������� ������������������  

*����������� ������������������  Windows����������� ������������������  설치:����������� ������������������  forum.falinux.com/zbxe/index.php?document_srl=572233����������� ������������������  

����������� ������������������  

설치����������� ������������������  

• 19

REPL����������� ������������������  ����������� ������������������  

REPL����������� ������������������  Read����������� ������������������  Eval����������� ������������������  Print����������� ������������������  Loop����������� ������������������  라는����������� ������������������  Node의����������� ������������������  입력����������� ������������������  환경이����������� ������������������  나타난다.����������� ������������������  이����������� ������������������  환경에서����������� ������������������  자바스크립트����������� ������������������  코드를����������� ������������������  한����������� ������������������  줄씩����������� ������������������  입력해서����������� ������������������  실행해����������� ������������������  볼����������� ������������������  수����������� ������������������  있다.����������� ������������������  ����������� ������������������  

설치����������� ������������������  

$ node > console.log("Hello, World!"); Hello, World! undefined >

• 20

npm����������� ������������������  ����������� ������������������  

node.js����������� ������������������  관련����������� ������������������  라이브러리들을����������� ������������������  관리하게����������� ������������������  편하도록����������� ������������������  Isaac����������� ������������������  Z.����������� ������������������  Schlueter����������� ������������������  이����������� ������������������  만든����������� ������������������  npm����������� ������������������  이����������� ������������������  포함되어����������� ������������������  있다.����������� ������������������  ����������� ������������������  

레드헷의����������� ������������������  rpm(Redhat����������� ������������������  Package����������� ������������������  Manager)과����������� ������������������  같이����������� ������������������  ����������� ������������������  npm����������� ������������������  을����������� ������������������  통해서����������� ������������������  node.js����������� ������������������  라이브러리들을����������� ������������������  관리해주는����������� ������������������  역할을����������� ������������������  하고����������� ������������������  있다.����������� ������������������  

설치����������� ������������������  

npm install [package_name] npm install [[email protected]] npm ls npm find [name] npm search [name] npm view [name] npm config get userconfig npm config get globalconfig

• 21

npm-Global����������� ������������������  설치와����������� ������������������  Local����������� ������������������  설치����������� ������������������  ����������� ������������������  

npm으로����������� ������������������  모듈을����������� ������������������  설치할����������� ������������������  때����������� ������������������  글로벌����������� ������������������  설치와����������� ������������������  ����������� ������������������  로컬����������� ������������������  설치로����������� ������������������  나누어����������� ������������������  진다는����������� ������������������  것입니다.����������� ������������������  글로벌����������� ������������������  설치와����������� ������������������  로컬설치를����������� ������������������  구분하는����������� ������������������  것은����������� ������������������  아래와����������� ������������������  같습니다����������� ������������������  

설치����������� ������������������  

Global 설치: 터미널에서����������� ������������������  모듈의����������� ������������������  명령어를����������� ������������������  사용할����������� ������������������  일이����������� ������������������  있다면����������� ������������������  Global로����������� ������������������  설치합니다. Local 설치����������� ������������������  : 소스내에서����������� ������������������  require()로����������� ������������������  불러들이는����������� ������������������  모듈들은����������� ������������������  Local로����������� ������������������  설치합니다.

• 22

npm����������� ������������������  package����������� ������������������  

Node.js����������� ������������������  ����������� ������������������  를����������� ������������������  실행하는����������� ������������������  것으로����������� ������������������  웹����������� ������������������  프로그래밍이����������� ������������������  가능합니다.����������� ������������������  그렇지만����������� ������������������  하나의����������� ������������������  프로그램����������� ������������������  파일만����������� ������������������  있지����������� ������������������  않고����������� ������������������  여러개의����������� ������������������  파일이����������� ������������������  관련되어����������� ������������������  있습니다.����������� ������������������  그래서����������� ������������������  배포����������� ������������������  가능한����������� ������������������  패키지로서����������� ������������������  모듈을����������� ������������������  개발하신다면,����������� ������������������  Node.js����������� ������������������  프로그램을����������� ������������������  npm기반의����������� ������������������  패키징����������� ������������������  구조인����������� ������������������  아래와����������� ������������������  같은����������� ������������������  파일����������� ������������������  구조를����������� ������������������  권장합니다.����������� ������������������  

����������� ������������������  

����������� ������������������  

����������� ������������������  

����������� ������������������  

•  package.json����������� ������������������  npm����������� ������������������  용����������� ������������������  패키지����������� ������������������  명세서����������� ������������������  파일����������� ������������������  

•  lib����������� ������������������  프로그램����������� ������������������  관련한����������� ������������������  사용자����������� ������������������  모듈����������� ������������������  

•  www����������� ������������������  주로����������� ������������������  HTML,����������� ������������������  image����������� ������������������  등의����������� ������������������  자료����������� ������������������  

•  node_modules����������� ������������������  npm����������� ������������������  에서����������� ������������������  설치해서����������� ������������������  관리하는����������� ������������������  로칼����������� ������������������  모듈����������� ������������������  

설치����������� ������������������  

• 23

Node����������� ������������������  Version����������� ������������������  Manager ����������� ������������������  ����������� ������������������  

노드는����������� ������������������  자주����������� ������������������  업그레이드가����������� ������������������  된다.����������� ������������������  그에����������� ������������������  따라����������� ������������������  실제����������� ������������������  개발시,����������� ������������������  실행시����������� ������������������  노드����������� ������������������  버전의����������� ������������������  변경에����������� ������������������  고민스럽기도����������� ������������������  하다.����������� ������������������  ����������� ������������������  

다른����������� ������������������  버전의����������� ������������������  노드����������� ������������������  사이의����������� ������������������  스위칭을����������� ������������������  할����������� ������������������  수����������� ������������������  있는����������� ������������������  툴이����������� ������������������  nave,����������� ������������������  nvm이다.����������� ������������������  여러개의����������� ������������������  설치된����������� ������������������  노드����������� ������������������  버전을����������� ������������������  관리할����������� ������������������  수����������� ������������������  있다.����������� ������������������  

설치����������� ������������������  

npm install –g nave

nave����������� ������������������  ls����������� ������������������  nave����������� ������������������  ls-remote����������� ������������������  nave����������� ������������������  install����������� ������������������  <version>����������� ������������������  nave����������� ������������������  use����������� ������������������  <version>����������� ������������������  

• 24

nave����������� ������������������  

nave를����������� ������������������  이용해����������� ������������������  node����������� ������������������  설치를����������� ������������������  관리한다.����������� ������������������  

설치����������� ������������������  

$ nave ls-remote remote: … 0.8.14 0.8.15 0.8.16 0.8.17 0.8.18 0.8.19 0.8.20 0.8.21 0.8.22 0.9.0 0.9.1 0.9.2 0.9.3 0.9.4 0.9.5 0.9.6 0.9.7 0.9.8 0.9.9 0.9.10 0.9.11 0.9.12 $ nave install 0.8.22 $ nave install 0.9.12 $ nave ls src: 0.8.22 0.9.12 installed: 0.8.22 0.9.12 named:

• 25

02.����������� ������������������  Node����������� ������������������  application����������� ������������������  

structure����������� ������������������  of����������� ������������������  node����������� ������������������  app.����������� ������������������  

Subscibing����������� ������������������  form����������� ������������������  

Android����������� ������������������  MainActivity����������� ������������������  

Node����������� ������������������  ­–����������� ������������������  app1.js����������� ������������������  

• 26

Node����������� ������������������  app.����������� ������������������  ����������� ������������������  

app용����������� ������������������  폴더를����������� ������������������  하나����������� ������������������  만들고����������� ������������������  app.js����������� ������������������  시작����������� ������������������  파일을����������� ������������������  작성한다.����������� ������������������  

모듈을����������� ������������������  통해����������� ������������������  다양한����������� ������������������  객체를����������� ������������������  이용할����������� ������������������  수����������� ������������������  있고,����������� ������������������  크게����������� ������������������  아래의����������� ������������������  구조����������� ������������������  

//// app.js//var http = require('http'),url = require('url'),fs = require('fs'),server,PORT = 8080;server = http.createServer( function(req, res) { ����������� ������������������  ����������� ������������������  ����������� ������������������  … }����������� ������������������  );server.listen(PORT, function() { console.log('Server running at :'+PORT);});

Node����������� ������������������  App.����������� ������������������  

모듈����������� ������������������  객체를����������� ������������������  정의.����������� ������������������  변수����������� ������������������  정의����������� ������������������  

로직����������� ������������������  본문����������� ������������������  

서버����������� ������������������  객체����������� ������������������  리스닝����������� ������������������  

• 27

Subscribing����������� ������������������  form����������� ������������������  

아이디와����������� ������������������  이름으로����������� ������������������  가입����������� ������������������  처리����������� ������������������  

Node����������� ������������������  App.����������� ������������������  

• 28

MainActivity����������� ������������������  

안드로이드����������� ������������������  단말에서����������� ������������������  사용자����������� ������������������  아이디,����������� ������������������  이름을����������� ������������������  입력받는다.����������� ������������������  

String result = null;EditText editId = (EditText) findViewById(R.id.editText1);EditText editName = (EditText) findViewById(R.id.editText2);RadioGroup rg = (RadioGroup)findViewById(R.id.radioGroup1);if( rg.getCheckedRadioButtonId() == R.id.radio0 ) { // Node.js User user = new User(editId.getText().toString(), editName.getText().toString()); try {

result = new HttpPostTask().execute(user).get(); } catch (InterruptedException e) {

e.printStackTrace(); } catch (ExecutionException e) {

e.printStackTrace(); }

txtOut.setText(result);}

Node����������� ������������������  App.����������� ������������������  

• 29

MainActivity-2����������� ������������������  

안드로이드����������� ������������������  단말에서����������� ������������������  사용자����������� ������������������  아이디,����������� ������������������  이름을����������� ������������������  입력받는다.����������� ������������������  

class HttpPostTask extends AsyncTask<User, Void, String> { protected String doInBackground(User... param) { HttpResponse resp = null; UrlEncodedFormEntity entity = null; List<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair("user_id", param[0].id)); params.add(new BasicNameValuePair("user_name", param[0].name)); HttpPost post = new HttpPost(); try { entity = new UrlEncodedFormEntity(params); post.setEntity(entity); post.setURI(new URI(HOST_IP)); resp = client.execute(post); } catch (URISyntaxException e1) { // …} String result = getHttpResponse(resp); return result; } }

Node����������� ������������������  App.����������� ������������������  

• 30

app1.js����������� ������������������  

안드로이드����������� ������������������  단말에서����������� ������������������  사용자����������� ������������������  아이디,����������� ������������������  이름을����������� ������������������  받아����������� ������������������  처리합니다.����������� ������������������  

server = http.createServer( function(req, res) { ����������� ������������������  ����������� ������������������  if( req.method == 'POST') { var body = ''; req.on('data', function (data) { body += data; }); req.on('end', function() { var queryData = qs.parse(body); console.log(queryData); res.writeHead(200, { 'Content-Type': 'text/html' }); res.end('<ul><li>' + queryData.user_id + '<li>' + queryData.user_name + '</ul>'); }); }});

Node����������� ������������������  App.����������� ������������������  

POST����������� ������������������  수신����������� ������������������  

• 31

03.����������� ������������������  mongodb����������� ������������������  

install����������� ������������������  mongodb����������� ������������������  

start/stop����������� ������������������  mongodb����������� ������������������  

node-mongodb-native����������� ������������������  

sample����������� ������������������  app����������� ������������������  ­–����������� ������������������  app2.js����������� ������������������  

����������� ������������������  ����������� ������������������  

• 32

install����������� ������������������  mongodb����������� ������������������  

http://www.mongodb.org/downloads����������� ������������������  에서����������� ������������������  다운����������� ������������������  받는다.����������� ������������������  

����������� ������������������  

Mac����������� ������������������  OS����������� ������������������  binary����������� ������������������  설치:����������� ������������������  

����������� ������������������  

����������� ������������������  

����������� ������������������  

����������� ������������������  

����������� ������������������  

Data����������� ������������������  directory:����������� ������������������  

$ curl http://fastdl.mongodb.org/osx/mongodb-osx-x86_64-2.0.5.tgz> mongo.tgz$ tar xzf mongo.tgz$ mv mongodb-osx-x86_64-2.0.5/ ~/MyDEV/$

mongodb����������� ������������������  

$sudo mkdir -p ~/MyDEV/mongodb/$sudo chown `id -u` ~/MyDEV/mongodb/

• 33

start/stop����������� ������������������  mongodb����������� ������������������  

mongo����������� ������������������  는����������� ������������������  1Tier����������� ������������������  엔진,����������� ������������������  클라이언트,����������� ������������������  미들웨어.����������� ������������������  

����������� ������������������  

mongod����������� ������������������  실행:����������� ������������������  dbms����������� ������������������  실행.����������� ������������������  

����������� ������������������  

����������� ������������������  

����������� ������������������  

����������� ������������������  

����������� ������������������  

mongod����������� ������������������  종료:����������� ������������������  

$ mongod –-dbpath ~/MyDEV/mongodb

mongodb����������� ������������������  

$mongo>use admin>db.shutdownServer()

javascript����������� ������������������  shell����������� ������������������  

$ mongod --fork --dbpath ~/MyDEV/mongodb --logpath ~/MyDEV/mongodb.logforked process: 8287gogangtaeui-MacBook-Air:bin androidbee$ all output going to: /Users/androidbee/MyDEV/mongodb.log

• 34

node-mongodb-native����������� ������������������  

a����������� ������������������  node.js����������� ������������������  driver����������� ������������������  for����������� ������������������  MongoDB����������� ������������������  

https://github.com/mongodb/node-mongodb-native����������� ������������������  ����������� ������������������  

����������� ������������������  

Install����������� ������������������  node-mongodb-native����������� ������������������  driver.����������� ������������������  

����������� ������������������  

����������� ������������������  

����������� ������������������  

To����������� ������������������  install����������� ������������������  the����������� ������������������  latest����������� ������������������  from����������� ������������������  the����������� ������������������  repository,����������� ������������������  

mongodb����������� ������������������  

npm����������� ������������������  config����������� ������������������  set����������� ������������������  loglevel����������� ������������������  info����������� ������������������  npm����������� ������������������  install����������� ������������������  mongodb����������� ������������������  

npm����������� ������������������  install����������� ������������������  path/to/node-mongodb-native����������� ������������������  

• 35

app2.js����������� ������������������  

require����������� ������������������  mongodb����������� ������������������  driver.����������� ������������������  

var http = require('http'),fs = require('fs'),qs = require('querystring'),url = require('url'),Db = require('mongodb').Db,Connection = require('mongodb').Connection,DbServer = require('mongodb').Server,PORT = 12345;server = http.createServer( function(req, res) { ����������� ������������������  ����������� ������������������  if( req.method == 'POST') { … }});

Node����������� ������������������  App.����������� ������������������  

mongodb����������� ������������������  driver����������� ������������������  

• 36

app2.js����������� ������������������  -����������� ������������������  2����������� ������������������  

process����������� ������������������  on����������� ������������������  POST����������� ������������������  User����������� ������������������  data����������� ������������������  to����������� ������������������  store����������� ������������������  into����������� ������������������  mongodb.����������� ������������������  

req.on('end', function() { var queryString = qs.parse(body); new Db('usertable_tutorial', new DbServer("127.0.0.1", 27017), {safe:false}) .open(function(err, db) { db.collection('documents', function(err, collection) {

collection.insert(queryString, function(err, document) { res.writeHead(200, { 'Content-Type': 'text/plain' }); res.end(JSON.stringify(document)); });

}); });});

Node����������� ������������������  App.����������� ������������������  

end����������� ������������������  of����������� ������������������  POST����������� ������������������  

• 37

app2.js����������� ������������������  -����������� ������������������  3����������� ������������������  

process����������� ������������������  on����������� ������������������  GET,����������� ������������������  fetching����������� ������������������  users����������� ������������������  from����������� ������������������  mongodb.����������� ������������������  

Db('usertable_tutorial', new DbServer("127.0.0.1", 27017), {safe:false} ) .open(function(err, db) { var result; db.collection('documents', function(err, collection) { collection.find().toArray(function(err, result) {

if (err) throw err; res.writeHead(200, { 'Content-Type': 'text/plain' }); res.end(JSON.stringify(result));

db.close(); }); });});

Node����������� ������������������  App.����������� ������������������  

• 38

navigate����������� ������������������  mongodb����������� ������������������  

fetching����������� ������������������  users����������� ������������������  from����������� ������������������  mongod.����������� ������������������  

$ mongoMongoDB shell version: 2.0.5connecting to: test> show dbsfirst 0.203125GBlocal (empty)test 0.203125GBusertable_tutorial 0.203125GB> use usertable_tutorialswitched to db usertable_tutorial> show collectionsdocumentssystem.indexes> db.documents.find(){ "user_id" : "gtko", "user_name" : "???", "_id" : ObjectId("5139d3b73345197320000001") }{ "user_id" : "hhhhh", "user_name" : "????", "_id" : ObjectId("5139db9c3964af8e20000001") }{ "user_id" : "hhhhhh", "user_name" : "???", "_id" : ObjectId("5139dc32f400f29120000001") }{ "user_id" : "aaaaa", "user_name" : "ccccc", "_id" : ObjectId("513a148a78d2ed2b21000001") }

Node����������� ������������������  App.����������� ������������������  

• 39

04.cloudfoundry����������� ������������������  

install����������� ������������������  vmc����������� ������������������  

vmc����������� ������������������  publish����������� ������������������  

• 40

install����������� ������������������  vmc����������� ������������������  

http://cloudfoundry.com/����������� ������������������  

����������� ������������������  

sign����������� ������������������  in����������� ������������������  후����������� ������������������  invite����������� ������������������  메일을����������� ������������������  받는다.����������� ������������������  이����������� ������������������  메일에는����������� ������������������  임시����������� ������������������  패스워드를����������� ������������������  포함하고����������� ������������������  있다.����������� ������������������  ����������� ������������������  

vmc를����������� ������������������  이용해서����������� ������������������  호스팅����������� ������������������  관리를����������� ������������������  한다.����������� ������������������  

vmc����������� ������������������  명령어����������� ������������������  설치����������� ������������������  http://docs.cloudfoundry.com/tools/vmc/installing-vmc.html����������� ������������������  

����������� ������������������  

아래����������� ������������������  vmc����������� ������������������  명령을����������� ������������������  실행해서����������� ������������������  새로운����������� ������������������  패스워드를����������� ������������������  발급해야����������� ������������������  한다.����������� ������������������  

vmc target https://api.cloudfoundry.comvmc loginvmc infovmc passwd

cloudfoundry����������� ������������������  

• 41

publish����������� ������������������  node����������� ������������������  app.����������� ������������������  

계정의����������� ������������������  app����������� ������������������  확인����������� ������������������  

����������� ������������������  

����������� ������������������  

����������� ������������������  

����������� ������������������  

����������� ������������������  

����������� ������������������  

cloudfoundry에����������� ������������������  올릴����������� ������������������  node����������� ������������������  app을����������� ������������������  작성한다.����������� ������������������  ����������� ������������������  

����������� ������������������  

vmc infovmc apps…name status usage runtime url quizquiz running 1 x 64M node08 quizquiz.cloudfoundry.com spen-server stopped 1 x 64M node spen-server.cloudfoundry.com

cloudfoundry����������� ������������������  

• 42

publish����������� ������������������  node����������� ������������������  app����������� ������������������  -����������� ������������������  2����������� ������������������  

package.js����������� ������������������  를����������� ������������������  작성����������� ������������������  

����������� ������������������  

����������� ������������������  

����������� ������������������  

����������� ������������������  

����������� ������������������  

����������� ������������������  

����������� ������������������  

vi…{ "name":"subscribe-users", "version":"0.0.1", "scripts":{ "start":"node app1.js" }}

cloudfoundry����������� ������������������  

app.����������� ������������������  name����������� ������������������  

startup����������� ������������������  script����������� ������������������  name����������� ������������������  

• 43

publish����������� ������������������  node����������� ������������������  app����������� ������������������  -����������� ������������������  3����������� ������������������  

package.js����������� ������������������  에����������� ������������������  맞춰����������� ������������������  cloudfound����������� ������������������  계정으로����������� ������������������  push����������� ������������������  

����������� ������������������  

����������� ������������������  

����������� ������������������  

����������� ������������������  

����������� ������������������  

����������� ������������������  

$ vmc pushName> subscribe-usersInstances> 11: node2: otherFramework> node1: node2: node063: node084: otherRuntime> 31: 64M2: 128M3: 256M4: 512M5: 1GMemory Limit> 64M...

cloudfoundry����������� ������������������  

app.����������� ������������������  name����������� ������������������  

node.js����������� ������������������  version����������� ������������������  

• 44

publish����������� ������������������  node����������� ������������������  app����������� ������������������  -����������� ������������������  4����������� ������������������  

최종����������� ������������������  manifest.yml����������� ������������������  에����������� ������������������  설정����������� ������������������  저장����������� ������������������  ­–����������� ������������������  업그레이드����������� ������������������  등에����������� ������������������  이용.����������� ������������������  

����������� ������������������  

����������� ������������������  

����������� ������������������  

����������� ������������������  

Creating subscribe-users... OK1: subscribe-users.cloudfoundry.com2: noneURL> subscribe-users.cloudfoundry.comUpdating subscribe-users... OKCreate services for application?> nSave configuration?> ySaving to manifest.yml... OKUploading subscribe-users... OKUsing manifest file manifest.ymlStarting subscribe-users... OKChecking subscribe-users... OK

cloudfoundry����������� ������������������  

URL����������� ������������������  

application����������� ������������������  manifest����������� ������������������  

• ����������� ������������������  VERSION����������� ������������������  1.3����������� ������������������  • ����������� ������������������  Release����������� ������������������  Date����������� ������������������  :����������� ������������������  2012.8����������� ������������������  

����������� ������������������  ����������� ������������������  3.����������� ������������������  baas.io����������� ������������������  

<고����������� ������������������  강����������� ������������������  태>����������� ������������������  /����������� ������������������  [email protected]

010-8269-3535����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  @gtko����������� ������������������  

http://www.slideshare.net/gtko

http://goo.gl/9V3H6

http://www.facebook.com/gangtai.goh

• 46

3.����������� ������������������  baas.io����������� ������������������  

01.baas.io����������� ������������������  서비스����������� ������������������  

02.����������� ������������������  baas.io����������� ������������������  이용����������� ������������������  

03.����������� ������������������  baas.io����������� ������������������  SDK����������� ������������������  이용����������� ������������������  

05.����������� ������������������  Back����������� ������������������  End����������� ������������������  이용����������� ������������������  

• 47 47

클라우드����������� ������������������  서버에서����������� ������������������  앱����������� ������������������  서비스를����������� ������������������  위한����������� ������������������  공간을����������� ������������������  제공하고����������� ������������������  여러����������� ������������������  기능을����������� ������������������  이용할����������� ������������������  수����������� ������������������  있는����������� ������������������  Open����������� ������������������  API를����������� ������������������  준비해준다.����������� ������������������  ����������� ������������������  개발자는����������� ������������������  RestFull����������� ������������������  기반의����������� ������������������  Open����������� ������������������  API����������� ������������������  를����������� ������������������  호출하기만����������� ������������������  하면����������� ������������������  서버����������� ������������������  공간에����������� ������������������  자신만의����������� ������������������  백엔드����������� ������������������  서비스를����������� ������������������  손쉽게����������� ������������������  구축할����������� ������������������  수����������� ������������������  있다.����������� ������������������  

baas.io����������� ������������������  서비스����������� ������������������  Baasio����������� ������������������  서비스����������� ������������������  

https://api.baas.io/<user_id>/<app_name>����������� ������������������  

• 48 48

����������� ������������������  모바일����������� ������������������  앱����������� ������������������  개발자의����������� ������������������  서버측����������� ������������������  기능을����������� ������������������  제공,����������� ������������������  백엔드����������� ������������������  기능.����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  -����������� ������������������  사용자����������� ������������������  관리����������� ������������������  

����������� ������������������  -����������� ������������������  파일����������� ������������������  업/다운로드����������� ������������������  ����������� ������������������  -����������� ������������������  위치����������� ������������������  기반����������� ������������������  로그����������� ������������������  

����������� ������������������  -����������� ������������������  Push����������� ������������������  메시지����������� ������������������  송/수신����������� ������������������  

����������� ������������������  -����������� ������������������  고객센터����������� ������������������  등의����������� ������������������  기능����������� ������������������  

����������� ������������������  ����������� ������������������  

백엔드����������� ������������������  서비스����������� ������������������  Baasio����������� ������������������  서비스����������� ������������������  

• 49

02.����������� ������������������  baas.io����������� ������������������  이용����������� ������������������  

01.baas.io����������� ������������������  서비스����������� ������������������  가입����������� ������������������  

02.����������� ������������������  My����������� ������������������  Page����������� ������������������  

03.����������� ������������������  백엔드����������� ������������������  앱����������� ������������������  목록����������� ������������������  

04.����������� ������������������  백엔드����������� ������������������  앱����������� ������������������  추가����������� ������������������  

• 50 50

앱을����������� ������������������  개발하기����������� ������������������  전에����������� ������������������  baas.io����������� ������������������  에서����������� ������������������  가입����������� ������������������  후����������� ������������������  개발에����������� ������������������  필요한����������� ������������������  SDK����������� ������������������  를����������� ������������������  다운받으셔야����������� ������������������  합니다.����������� ������������������  ����������� ������������������  MyPage����������� ������������������  에서����������� ������������������  앱을����������� ������������������  위한����������� ������������������  Data����������� ������������������  저장소와����������� ������������������  초기����������� ������������������  데이터를����������� ������������������  저장할����������� ������������������  수����������� ������������������  있습니다.����������� ������������������  ����������� ������������������  

baas.io����������� ������������������  서비스����������� ������������������  가입����������� ������������������  baas.io����������� ������������������  이용����������� ������������������  

• 51 51

백엔드����������� ������������������  앱을����������� ������������������  관리하고����������� ������������������  상태를����������� ������������������  살펴����������� ������������������  볼����������� ������������������  수����������� ������������������  있다.����������� ������������������  ����������� ������������������  

My����������� ������������������  Page����������� ������������������  baas.io����������� ������������������  이용����������� ������������������  

• 52 52

백엔드����������� ������������������  앱����������� ������������������  목록에����������� ������������������  두����������� ������������������  가지����������� ������������������  샘플����������� ������������������  앱이����������� ������������������  있다.����������� ������������������  ����������� ������������������  -����������� ������������������  SandBox����������� ������������������  ����������� ������������������  -����������� ������������������  HelloWorld����������� ������������������  

백엔드����������� ������������������  앱����������� ������������������  목록����������� ������������������  baas.io����������� ������������������  이용����������� ������������������  

• 53 53

백엔드����������� ������������������  앱����������� ������������������  목록에����������� ������������������  두����������� ������������������  가지����������� ������������������  샘플����������� ������������������  앱이����������� ������������������  있다.����������� ������������������  

백엔드����������� ������������������  앱����������� ������������������  추가����������� ������������������  baas.io����������� ������������������  이용����������� ������������������  

• 54

03.����������� ������������������  baas.io����������� ������������������  SDK����������� ������������������  이용����������� ������������������  

baas.io����������� ������������������  Android����������� ������������������  SDK����������� ������������������  

SDK����������� ������������������  다운로드와����������� ������������������  설치����������� ������������������  

• 55

baas.io����������� ������������������  Android����������� ������������������  SDK����������� ������������������  

baas.io����������� ������������������  Android����������� ������������������  SDK����������� ������������������  

SDK����������� ������������������  구성����������� ������������������  

SDK����������� ������������������  for����������� ������������������  Android����������� ������������������  

• 56 56

baas.io����������� ������������������  Android����������� ������������������  client����������� ������������������  SDK����������� ������������������  는����������� ������������������  다음과����������� ������������������  같이����������� ������������������  구성되어����������� ������������������  있다.����������� ������������������  ����������� ������������������  -����������� ������������������  git����������� ������������������  을����������� ������������������  이용해����������� ������������������  체크아웃����������� ������������������  ����������� ������������������  ����������� ������������������  

• Sample����������� ������������������  Project����������� ������������������  • https://github.com/baasio/baas.io-sample-android����������� ������������������  

• StartUp����������� ������������������  Project����������� ������������������  • https://github.com/baasio/baas.io-startup-android����������� ������������������  

• SDK����������� ������������������  Project����������� ������������������  • https://github.com/baasio/baas.io-sdk-android����������� ������������������  

• Help����������� ������������������  Center����������� ������������������  UI����������� ������������������  Library����������� ������������������  Project����������� ������������������  &����������� ������������������  Sample����������� ������������������  • https://github.com/baasio/baas.io-helpcenter-android����������� ������������������  

baas.io����������� ������������������  Android����������� ������������������  SDK����������� ������������������  baas.io����������� ������������������  SDK����������� ������������������  

• 57 57

baas.io����������� ������������������  Client����������� ������������������  SDK����������� ������������������  for����������� ������������������  Android는����������� ������������������  Android����������� ������������������  OS����������� ������������������  2.2����������� ������������������  이상,����������� ������������������  4.2.x����������� ������������������  이하를����������� ������������������  지원합니다.����������� ������������������  ����������� ������������������  ����������� ������������������  1)����������� ������������������  주����������� ������������������  라이브러리����������� ������������������  baasio용����������� ������������������  API����������� ������������������  라이브러리����������� ������������������  프로젝트����������� ������������������  2)����������� ������������������  다양한����������� ������������������  외부����������� ������������������  라이브러리로����������� ������������������  구성되어����������� ������������������  함께����������� ������������������  사용하고����������� ������������������  있습니다.����������� ������������������  

• gcm.jar����������� ������������������  • spring-android-core-1.0.0.RELEASE.jar����������� ������������������  • spring-android-rest-template-1.0.0.RELEASE.jar����������� ������������������  • jackson-core-asl-1.9.1.jar����������� ������������������  • jackson-mapper-asl-1.9.1.jar����������� ������������������  • slf4j-android-1.6.1-RC1.jar����������� ������������������  

����������� ������������������  ����������� ������������������  

baas.io����������� ������������������  Android����������� ������������������  SDK����������� ������������������  baas.io����������� ������������������  SDK����������� ������������������  

• 58 58

baas.io����������� ������������������  Client����������� ������������������  SDK����������� ������������������  for����������� ������������������  Android����������� ������������������  라이브러리는����������� ������������������  아래����������� ������������������  github에서����������� ������������������  체크아웃����������� ������������������  할����������� ������������������  수����������� ������������������  있다.����������� ������������������  https://github.com/baasio/baas.io-sdk-android����������� ������������������  에서����������� ������������������  git����������� ������������������  주소를����������� ������������������  복사한다.����������� ������������������  

SDK����������� ������������������  git����������� ������������������  주소����������� ������������������  baas.io����������� ������������������  SDK����������� ������������������  

• 59 59

git����������� ������������������  repositories����������� ������������������  view����������� ������������������  에서����������� ������������������  Clone����������� ������������������  a����������� ������������������  Git����������� ������������������  repository����������� ������������������  를����������� ������������������  선택하면����������� ������������������  복사한����������� ������������������  git����������� ������������������  주소가����������� ������������������  입력된다.����������� ������������������  

baasio����������� ������������������  git����������� ������������������  주소����������� ������������������  baas.io����������� ������������������  SDK����������� ������������������  

• 60 60

다운받은����������� ������������������  소스는����������� ������������������  로컬����������� ������������������  git����������� ������������������  저장소에����������� ������������������  위치하는데,����������� ������������������  여기에는����������� ������������������  Baasio����������� ������������������  안드로이드����������� ������������������  프로젝트가����������� ������������������  구성되어����������� ������������������  있다.����������� ������������������  이클립스에서����������� ������������������  import����������� ������������������  해온다.����������� ������������������  ����������� ������������������  ����������� ������������������  *����������� ������������������  단,����������� ������������������  library����������� ������������������  project이니����������� ������������������  copy����������� ������������������  하지����������� ������������������  않는다.����������� ������������������  

import����������� ������������������  library����������� ������������������  project����������� ������������������  baas.io����������� ������������������  SDK����������� ������������������  

• 61

import한����������� ������������������  프로젝트는����������� ������������������  안드로이드����������� ������������������  라이브러리����������� ������������������  프로젝트로����������� ������������������  구성되어����������� ������������������  있다.����������� ������������������  속성에서����������� ������������������  is����������� ������������������  Library����������� ������������������  속성을����������� ������������������  확인한다.����������� ������������������  ����������� ������������������  

BaasioAndroid����������� ������������������  library����������� ������������������  project����������� ������������������  baas.io����������� ������������������  SDK����������� ������������������  

• 62

04.Back����������� ������������������  end����������� ������������������  이용����������� ������������������  

백엔드����������� ������������������  ­–����������� ������������������  sandbox����������� ������������������  

샘플����������� ������������������  Startup����������� ������������������  project����������� ������������������  소개����������� ������������������  

데이터엔터티����������� ������������������  BassioEntity����������� ������������������  

GCM����������� ������������������  Push����������� ������������������  이용����������� ������������������  

• 63

01.백엔드-sandbox����������� ������������������  

백엔드����������� ������������������  목록����������� ������������������  사용����������� ������������������  

sandbox����������� ������������������  상세����������� ������������������  정보����������� ������������������  

• 64 64

백엔드����������� ������������������  앱����������� ������������������  목록에는����������� ������������������  사용중인����������� ������������������  baasio����������� ������������������  앱을����������� ������������������  볼����������� ������������������  수����������� ������������������  있다.����������� ������������������  그리고����������� ������������������  새로운����������� ������������������  앱을����������� ������������������  생성할����������� ������������������  수����������� ������������������  있다.����������� ������������������  여기서는����������� ������������������  샘플����������� ������������������  앱인����������� ������������������  sandbox����������� ������������������  를����������� ������������������  사용해서����������� ������������������  샘플을����������� ������������������  이용해����������� ������������������  보겠다.����������� ������������������  

백엔드����������� ������������������  목록����������� ������������������  사용����������� ������������������  sandbox����������� ������������������  

• 65

백엔드����������� ������������������  앱����������� ������������������  설정����������� ������������������  항목����������� ������������������  

65

앱����������� ������������������  이름과����������� ������������������  아이콘����������� ������������������  ����������� ������������������  기본����������� ������������������  정보,����������� ������������������  API����������� ������������������  상태����������� ������������������  현황����������� ������������������  ����������� ������������������  데이터����������� ������������������  사용����������� ������������������  정의����������� ������������������  ����������� ������������������  PUSH����������� ������������������  서비스(GCM)����������� ������������������  사용����������� ������������������  등록����������� ������������������  ����������� ������������������  API����������� ������������������  console����������� ������������������  

sandbox����������� ������������������  

• 66 66

앱의����������� ������������������  기본정보와����������� ������������������  데이터브라우저,����������� ������������������  콘솔,����������� ������������������  푸시����������� ������������������  관리등����������� ������������������  제공.����������� ������������������  

sandbox����������� ������������������  앱����������� ������������������  상세����������� ������������������  정보����������� ������������������  sandbox����������� ������������������  

baas.io����������� ������������������  ID와����������� ������������������  Application����������� ������������������  ID를����������� ������������������  사용하게����������� ������������������  된다.����������� ������������������  

• 67 67

key-value����������� ������������������  형태의����������� ������������������  데이터를����������� ������������������  추가하고����������� ������������������  사용할����������� ������������������  수����������� ������������������  있다.����������� ������������������  ����������� ������������������  -����������� ������������������  사용자,����������� ������������������  롤,����������� ������������������  그룹,����������� ������������������  파일,����������� ������������������  장치����������� ������������������  등����������� ������������������  실제����������� ������������������  데이터����������� ������������������  관리.����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  이어서����������� ������������������  안드로이드����������� ������������������  baasio����������� ������������������  Startup����������� ������������������  project����������� ������������������  를����������� ������������������  통해����������� ������������������  사용해����������� ������������������  보자.����������� ������������������  

데이터브라우저����������� ������������������  sandbox����������� ������������������  

• 68

02.baas.io����������� ������������������  Startup����������� ������������������  App����������� ������������������  

startup����������� ������������������  프로젝트����������� ������������������  import����������� ������������������  하기����������� ������������������  

startup����������� ������������������  프로젝트����������� ������������������  제공����������� ������������������  

AndroidManifest����������� ������������������  살펴보기����������� ������������������  

백엔드-sandbox����������� ������������������  정보����������� ������������������  확인����������� ������������������  

BaasioConfig.java����������� ������������������  

데이터엔터티����������� ������������������  BaasioEntity����������� ������������������  class����������� ������������������  

• 69 69

github로����������� ������������������  제공하는����������� ������������������  baasio����������� ������������������  샘플����������� ������������������  프로젝트로,����������� ������������������  새로운����������� ������������������  baasio����������� ������������������  앱을����������� ������������������  만드는데����������� ������������������  필요한����������� ������������������  기본����������� ������������������  앱����������� ������������������  프로젝트����������� ������������������  파일����������� ������������������  제공.����������� ������������������  ����������� ������������������  ����������� ������������������  -����������� ������������������  https://github.com/baasio/baas.io-startup-android����������� ������������������  ����������� ������������������  

baas.io����������� ������������������  startup����������� ������������������  project����������� ������������������  Startup����������� ������������������  App.����������� ������������������  

BaasioStartupProject로����������� ������������������  copy����������� ������������������  해서����������� ������������������  ����������� ������������������  import����������� ������������������  ����������� ������������������  

BaasioAndrodi����������� ������������������  library����������� ������������������  프로젝트를����������� ������������������  추가한다.����������� ������������������  

• 70 70

제공되는����������� ������������������  Startup����������� ������������������  프로젝트는����������� ������������������  ����������� ������������������  ����������� ������������������  -����������� ������������������  AndroidMenifest.xml����������� ������������������  설정����������� ������������������  

����������� ������������������  -����������� ������������������  Push����������� ������������������  서비스를����������� ������������������  위한����������� ������������������  GCM����������� ������������������  모듈이����������� ������������������  이미����������� ������������������  구현되어����������� ������������������  적용.����������� ������������������  ����������� ������������������  -����������� ������������������  baas.io에����������� ������������������  가입된����������� ������������������  정보����������� ������������������  (BaasioConfig.java)����������� ������������������  ����������� ������������������  -����������� ������������������  관련����������� ������������������  라이브러리����������� ������������������  ����������� ������������������  등을����������� ������������������  포함해서����������� ������������������  개발자가����������� ������������������  손쉽게����������� ������������������  baasio����������� ������������������  백엔드를����������� ������������������  이용한����������� ������������������  앱����������� ������������������  개발을����������� ������������������  할����������� ������������������  수����������� ������������������  있다.����������� ������������������  

startup����������� ������������������  프로젝트����������� ������������������  제공����������� ������������������  Startup����������� ������������������  App.����������� ������������������  

• 71 71

manifest����������� ������������������  에����������� ������������������  GCM����������� ������������������  관련����������� ������������������  퍼미션����������� ������������������  

AndroidManifest����������� ������������������  살펴보기����������� ������������������  Startup����������� ������������������  App.����������� ������������������  

<manifest xmlns:android="http://schemas.android.com/apk/res/android" … <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" /> <uses-permission android:name="android.permission.INTERNET" /> <permission android:name="com.kth.baasio.startup.permission.C2D_MESSAGE" android:protectionLevel="signature" /> <uses-permission android:name="com.kth.baasio.startup.permission.C2D_MESSAGE" /> <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  <uses-permission android:name="android.permission.GET_ACCOUNTS" />����������� ������������������   <uses-permission android:name="android.permission.WAKE_LOCK" />����������� ������������������   <uses-permission android:name="android.permission.USE_CREDENTIALS" />����������� ������������������   …

• 72 72

baas.io에����������� ������������������  생성된����������� ������������������  앱����������� ������������������  정보를����������� ������������������  확인해서����������� ������������������  BaasioConfig.java에����������� ������������������  입력해����������� ������������������  주어야����������� ������������������  합니다.����������� ������������������  ����������� ������������������  백엔드목록에서����������� ������������������  sandbox의����������� ������������������  기본정보����������� ������������������  화면에����������� ������������������  ID를����������� ������������������  확인합니다.����������� ������������������  

백엔드-sandbox����������� ������������������  정보����������� ������������������  확인����������� ������������������  Startup����������� ������������������  App.����������� ������������������  

baas.io����������� ������������������  ID����������� ������������������  Application����������� ������������������  ID����������� ������������������  

• 73 73

"com.kth.baasio.startup"����������� ������������������  위치에����������� ������������������  있는����������� ������������������  BaasioConfig.java을����������� ������������������  열어,����������� ������������������  BAASIO_URL,����������� ������������������  BAASIO_ID,����������� ������������������  APPLICATION_ID에����������� ������������������  백엔드의����������� ������������������  sandbox����������� ������������������  기본정보에����������� ������������������  있는����������� ������������������  ID를����������� ������������������  입력한다.����������� ������������������  ����������� ������������������  

BaasioConfig����������� ������������������  Startup����������� ������������������  App.����������� ������������������  

public class BaasioConfig {����������� ������������������   public static final String BAASIO_URL = "https://api.baas.io";����������� ������������������   // baas.io member ID����������� ������������������   public static final String BAASIO_ID = "779460bb-2437-SDFSFD...";����������� ������������������   // baas.io application ID����������� ������������������   public static final String APPLICATION_ID = "779460bb-2437-1...";����������� ������������������   // GCM(google cloud messaging service) sender ID����������� ������������������   public static final String GCM_SENDER_ID = null; ����������� ������������������  }

샘플����������� ������������������  백엔드����������� ������������������  sandbox에����������� ������������������  정의한����������� ������������������  ID����������� ������������������  

• 74 74

"com.kth.baasio.startup"����������� ������������������  위치에����������� ������������������  있는����������� ������������������  BaasioApplication.java은����������� ������������������  BaasioConfig에서����������� ������������������  정의한����������� ������������������  BAASIO_URL,����������� ������������������  BAASIO_ID,����������� ������������������  APPLICATION_ID를����������� ������������������  이용해����������� ������������������  초기화����������� ������������������  한다.����������� ������������������  

Baasio����������� ������������������  initialize����������� ������������������  Startup����������� ������������������  App.����������� ������������������  

public class BaasioApplication extends Application { AsyncTask mGCMRegisterTask; @Override public void onCreate() { super.onCreate(); Baas.io().init(this, BaasioConfig.BAASIO_URL, BaasioConfig.BAASIO_ID, BaasioConfig.APPLICATION_ID); mGCMRegisterTask = Baas.io().setGcmEnabled(this, null, new BaasioDeviceCallback() { .. } ); }

Push를����������� ������������������  위한����������� ������������������  GCM����������� ������������������  

• 75 75

액티비티����������� ������������������  종료시����������� ������������������  연결을����������� ������������������  해제해����������� ������������������  준다.����������� ������������������  

Baasio����������� ������������������  terminate����������� ������������������  Startup����������� ������������������  App.����������� ������������������  

public class BaasioApplication extends Application { ... @Override public void onTerminate() { if (mGCMRegisterTask != null) { mGCMRegisterTask.cancel(true); } Baas.io().uninit(this); super.onTerminate(); }}

• 76

03.데이터엔터티����������� ������������������  BassioEntity����������� ������������������  

데이터엔터티란?����������� ������������������  

BaasioEntity����������� ������������������  class����������� ������������������  

MainActivity����������� ������������������  적용����������� ������������������  

• 77

데이터엔터티란?����������� ������������������  

77

BassioEntity����������� ������������������  

엔터티란����������� ������������������  baas.io에����������� ������������������  저장되는����������� ������������������  모든����������� ������������������  데이터.����������� ������������������  기본����������� ������������������  속성����������� ������������������  두가지.����������� ������������������  ����������� ������������������  -����������� ������������������  uuid:����������� ������������������  엔터티에서����������� ������������������  유일한����������� ������������������  식별����������� ������������������  값.����������� ������������������  ����������� ������������������  -����������� ������������������  Entity����������� ������������������  type:����������� ������������������  users,����������� ������������������  roles,����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  groups,����������� ������������������  files,����������� ������������������  devices����������� ������������������  ...����������� ������������������  ����������� ������������������  ����������� ������������������  

• 78 78

BaasioEntity����������� ������������������  class����������� ������������������  에서����������� ������������������  데이터����������� ������������������  엔터티����������� ������������������  제공.����������� ������������������  ����������� ������������������  -����������� ������������������  baasio에����������� ������������������  새로운����������� ������������������  엔터티(데이터)를����������� ������������������  추가하고����������� ������������������  

데이터����������� ������������������  엔터티����������� ������������������  BassioEntity����������� ������������������  

• 79 79

BaasioEntity����������� ������������������  ����������� ������������������  생성����������� ������������������  

엔터티����������� ������������������  생성����������� ������������������  Startup����������� ������������������  App.����������� ������������������  

BaasioEntity entity = new BaasioEntity("usertable_tutorial");entity.setProperty("user_id", user.id);entity.setProperty("user_name", user.name);entity.setProperty("reg_date", System.currentTimeMillis());entity.saveInBackground(new BaasioCallback<BaasioEntity>() { @Override public void onResponse(BaasioEntity response) { if (response != null) { savedUuid = response.getUuid(); String result = response.getProperty("usertable_tutorial").getTextValue(); txtOut.setText(result); } } @Override public void onException(BaasioException e) { Log.e("baas.io", e.toString()); }});

• 80

04.baas.io����������� ������������������  Push����������� ������������������  

GCM����������� ������������������  소개����������� ������������������  

• 81 81

GCM에서����������� ������������������  발급받은����������� ������������������  API����������� ������������������  Key를����������� ������������������  입력해����������� ������������������  준다.����������� ������������������  - ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  https://code.google.com/apis/console/����������� ������������������  

새로운����������� ������������������  프로젝트를����������� ������������������  추가한다.����������� ������������������  

GCM����������� ������������������  소개����������� ������������������  GCM����������� ������������������  Push����������� ������������������  

• 82 82

1) 새로운����������� ������������������  Google����������� ������������������  API����������� ������������������  project����������� ������������������  생����������� ������������������  

����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  Google����������� ������������������  API����������� ������������������  console����������� ������������������  페이지에서Services����������� ������������������  ����������� ������������������  선택����������� ������������������  

2)����������� ������������������  Google����������� ������������������  Cloud����������� ������������������  Messaging����������� ������������������  을����������� ������������������  ‘On’����������� ������������������  3)����������� ������������������  API����������� ������������������  Access에서����������� ������������������  API����������� ������������������  Key����������� ������������������  얻기����������� ������������������  

서비스����������� ������������������  약관����������� ������������������  동의����������� ������������������  

GCM����������� ������������������  활성화����������� ������������������  GCM����������� ������������������  Push����������� ������������������  

https://code.google.com/apis/console/#project:4815162342����������� ������������������  

• 83 83

1.새로운����������� ������������������  프로젝트를����������� ������������������  추가한다.����������� ������������������  ����������� ������������������  

GCM����������� ������������������  새����������� ������������������  프로젝트����������� ������������������  GCM����������� ������������������  Push����������� ������������������  

• 84 84

2.����������� ������������������  새로����������� ������������������  추가된����������� ������������������  프로젝트의����������� ������������������  주소의����������� ������������������  맨����������� ������������������  뒷자리����������� ������������������  숫자가����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  sender����������� ������������������  ID����������� ������������������  이다.����������� ������������������  이����������� ������������������  ID를����������� ������������������  BaasisConfig.java����������� ������������������  에����������� ������������������  입력한다.����������� ������������������  

Sender����������� ������������������  ID����������� ������������������  GCM����������� ������������������  Push����������� ������������������  

• 85 85

GCM����������� ������������������  Sendter����������� ������������������  ID를����������� ������������������  BaasioConfig����������� ������������������  에����������� ������������������  등록한다.����������� ������������������  

BaasioConfig����������� ������������������  Startup����������� ������������������  App.����������� ������������������  

public class BaasioConfig { public static final String BAASIO_URL = "https://api.baas.io"; // baas.io member ID public static final String BAASIO_ID = "779460bb-2437-SDFSFD..."; // baas.io application ID public static final String APPLICATION_ID = "779460bb-2437-1..."; // GCM(google cloud messaging service) sender ID public static final String GCM_SENDER_ID = “234456778...”; }

GCM����������� ������������������  Sender����������� ������������������  ID����������� ������������������  

• 86 86

manifest����������� ������������������  에����������� ������������������  GCM����������� ������������������  리시버����������� ������������������  추가����������� ������������������  

AndroidManifest����������� ������������������  Startup����������� ������������������  App.����������� ������������������  

<manifest xmlns:android="http://schemas.android.com/apk/res/android"����������� ������������������   …����������� ������������������   <receiver����������� ������������������   android:name=".gcm.GCMRedirectedBroadcastReceiver"����������� ������������������   android:permission="com.google.android.c2dm.permission.SEND" >����������� ������������������   <intent-filter>����������� ������������������   <!-- Receives the actual messages. -->����������� ������������������   <action android:name="com.google.android.c2dm.intent.RECEIVE" />����������� ������������������   <!-- Receives the registration id. -->����������� ������������������   <action android:name="com.google.android.c2dm.intent.REGISTRATION" />����������� ������������������   <category android:name="com.kth.baasio.sample" />����������� ������������������   </intent-filter>����������� ������������������   </receiver����������� ������������������   …

• 87 87

manifest����������� ������������������  에����������� ������������������  GCM����������� ������������������  서비스����������� ������������������  추가����������� ������������������  

AndroidManifest����������� ������������������  Startup����������� ������������������  App.����������� ������������������  

<manifest xmlns:android="http://schemas.android.com/apk/res/android"����������� ������������������   …����������� ������������������   ����������� ������������������   <service android:name=".gcm.GCMIntentService" />����������� ������������������   …

• 88 88

Services����������� ������������������  목록중����������� ������������������  Google����������� ������������������  Cloud����������� ������������������  Message����������� ������������������  for����������� ������������������  Android����������� ������������������  ����������� ������������������  스의치를����������� ������������������  'on'����������� ������������������  으로����������� ������������������  한다.����������� ������������������  

GCM����������� ������������������  for����������� ������������������  android����������� ������������������  'ON'����������� ������������������  GCM����������� ������������������  Push����������� ������������������  

• 89 89

API����������� ������������������  key����������� ������������������  얻기����������� ������������������  

����������� ������������������  -����������� ������������������  Google����������� ������������������  API����������� ������������������  console����������� ������������������  페이지에서����������� ������������������  API����������� ������������������  Access����������� ������������������  를����������� ������������������  선택����������� ������������������  하고����������� ������������������  'Create����������� ������������������  New����������� ������������������  Server����������� ������������������  key…⋯'����������� ������������������  를����������� ������������������  실행한다.����������� ������������������  

New����������� ������������������  Key����������� ������������������  GCM����������� ������������������  Push����������� ������������������  

• 90 90

API����������� ������������������  key����������� ������������������  얻기����������� ������������������  

����������� ������������������  -����������� ������������������  create����������� ������������������  버튼을����������� ������������������  실행한다.����������� ������������������  

API����������� ������������������  Key����������� ������������������  GCM����������� ������������������  Push����������� ������������������  

• 91 91

백엔드����������� ������������������  설정에서����������� ������������������  Google����������� ������������������  API����������� ������������������  Key를����������� ������������������  등록한다.����������� ������������������  

백엔드����������� ������������������  설정����������� ������������������  푸시����������� ������������������  관리����������� ������������������  GCM����������� ������������������  Push����������� ������������������  

• 92 92

메시지를����������� ������������������  작성해서����������� ������������������  발송해����������� ������������������  본다.����������� ������������������  

백엔드����������� ������������������  설정����������� ������������������  푸시����������� ������������������  발송����������� ������������������  GCM����������� ������������������  Push����������� ������������������  

감사합니다.����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  클라우드����������� ������������������  서비스����������� ������������������  활용에����������� ������������������  대해����������� ������������������  질문을����������� ������������������  해주십시요.����������� ������������������  ����������� ������������������  ����������� ������������������  

Q&A����������� ������������������