More Related Content Similar to Curie: Deep-linking & App-indexing based mobile search engine (20) Curie: Deep-linking & App-indexing based mobile search engine1. Curie / Musicurie
Deep-Linking๊ณผ App-Indexing์ ์ด์ฉํ
๋ชจ๋ฐ์ผ ์ดํ๋ฆฌ์ผ์ด์
๊ฒ์ ์์ง
SW Maestro ๊ณผ์
Team Tehran Slippers
๋ฅ์๊ฒฝ ๋จ์ฑํ ์๋์ฑ ์ ํ์ฌ
2. ๋ชฉ์ฐจ
โข ํ ์๊ฐ
โข ์์ฅ ๋ฐฐ๊ฒฝ - ๋ฌธ์ ์
โข ์๋น์ค ๊ฐ์
โข Deep-Linking? App-Indexing?
โข ์ฃผ์ ๊ฒฝ์์ฌ ๋ถ์
โข ๋น์ง๋์ค ๋ชจ๋ธ
โข ๋ชฉ์
(๊ฐ์)
โข Musicurie
โข Software Overall Structure
โข Front-End Develop
โข Back-End Develop
4. ์์ฅ ๋ฐฐ๊ฒฝ - ๋ฌธ์ ์
โข ์ค๋๋ ์ ๊ฒ์์์ง์ ์น ์์ ๋ฐ์ดํฐ๋ง ๋ณด์ฌ ์ค ์ ์์
โข ๊ทธ๋ฌ๋, ์ ์ธ๊ณ์ ์ผ๋ก ์น ์ปจํ
์ธ ์์ฐ๋์ ๊ฐ์ํ๋ ๋ฐ๋ฉด,
๋ชจ๋ฐ์ผ ์ปจํ
์ธ ์์ฐ๋์ ์ฆ๊ฐํ๋ ์ถ์ธ
5. ์์ฅ ๋ฐฐ๊ฒฝ - ๋ฌธ์ ์
โข ๋ฐ๋ผ์ ๊ฒ์์์ง ์ฌ์ฉ์๋ ์ฌ์ฉ์ ๊ฒฝํ๊ณผ ์ ์ต์ด ๊ฐ์
โข ๊ฒ์์์ง์ ์
์ฅ์์๋ ์ปจํ
์ธ ๊ฐ์์ ๋ฐ๋ฅธ ๊ด๊ณ ์์ต ๊ฒฝ๊ฐ
๋ฌธ์ ๋ฐ์
โข ์ฑ ์์ ์ฃผ(๊ด๊ณ ์ฃผ)๋ ์๋ก์ด ์ ์ ์ ์
์ ์ํด ๋งค์ฐ ๋นํจ์จ
์ ์ธ ๋ง์ผํ
์์ ์๋น
6. ์๋น์ค ๊ฐ์
โข ํ๋ฆฌ(Curie)๋ ์ฑ ์ธ๋ฑ์ฑ(App Indexing)๊ณผ ๋ฅ ๋งํน(Deep
Linking) ๊ธฐ์ ์ ์ด์ฉํด ๋ชจ๋ฐ์ผ ์ฑ ๋ด๋ถ์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉ์
๋ค์ด ๊ฒ์ํ ์ ์๊ณ , ๋ํ ๋ฐ๋ก ์คํํ ์ ์๋๋ก ํด์ฃผ๋ ์
๊ฐ๋
๊ฒ์์์ง
7. Deep-Linking? App-Indexing?
โข Deep-Linking: ์ฑ ๋ด๋ถ์ ๊ณ ์ ์ปจํ
์ธ ์์์ ๋ํ ๋งํฌโจ
(http://en.wikipedia.org/wiki/Mobile_deep_linking)
โข ๊ฐ๋ น, Facebook ์ฑ์ ๊ฒฝ์ฐ โfb://' ํ๋กํ ์ฝ๋ก ์์๋์ด โfb://
profile/1781740177' ๋ฑ๊ณผ ๊ฐ์ด ํน์ ์์์ ๋ฐ๋ก ์ ๊ทผํ ์
์๊ฒ ๋จ
9. How to find Deep-Link URL?
- ์น ์๋น์ค(ํฌ๋กฌ ๊ฐ๋ฐ์ ๋๊ตฌ์
์ ๋ชจ๋ฐ์ผ ๋ฒ์ ์ผ๋ก ์ ์)์
๋ค์ด๊ฐ์, ๋
ธ๋ ์ฌ์ ๋ฒํผ์
๋๋ ์ ๋ ๋ชจ๋ฐ์ผ ์ดํ๋ฆฌ์ผ์ด
์
์ผ๋ก ๋์ด๊ฐ๋์ง ํ์ธํ๋ค.
- ๋ง์ฝ ์ดํ๋ฆฌ์ผ์ด์
์ผ๋ก ๋์ด
๊ฐ์ ์ ์์ ์ผ๋ก ๋
ธ๋๊ฐ ์ฌ์
๋๋ฉด, ์ดํ๋ฆฌ์ผ์ด์
์ deep
link๊ฐ ๊ตฌํ๋์ด ์๋ ๊ฒ์ด๋ฏ
๋ก, Deep link URL์ ์ฐพ์
์ ์์ ๊ฑฐ๋ผ ๊ธฐ๋ํด๋ ์ข๋ค.
10. How to find Deep-Link URL?
- ํฌ๋กฌ ๊ฐ๋ฐ์ ๋๊ตฌ๋ฅผ ์ด์ฉํ์ฌ, ์ฌ์๋ฒํผ์ ๋๋ ์ ๋ ์ด๋ค ํจ์๊ฐ ์คํ๋๋์ง ํ์ธํด๋ณด๋ฉด,
์ต์ข
์ ์ผ๋ก ์์ ๊ฐ์ด deep link url์ ํฌํจํ๊ณ ์๋ ํจ์๋ฅผ ๋ฐ๊ฒฌํ ์ ์๋ค.
11. ์ฃผ์ ๊ฒฝ์์ฌ ๋ถ์
๋ฒํธ ์ด๋ฆ ์ฃผ์ ์๋น์ค ์ค๋ช
ํฌ์ ๊ธ์ก ๋ฐ
๋งค์ถ์ก
1
Quixey
(http://www.crunchbase.com/
organization/quixey)
์ฑ ๊ฒ์ API๋ฅผ ๊ฐ๋ฐํ๊ณ ์๋ ๊ธฐ์
์ผ๋ก ํ์ฌ
Quixey ์๋๋ก์ด๋ ์ดํ์ ๋ถ๋ฏธ ์์ฅ์ ์ถ์
ํ ์ํ์ด๋ค. ์ด ์ดํ์ ๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ ๋ด๋ถ์ ์ด
ํ๋ค์ ๊ธฐ๋ฅ๋ค์ ์ฝ๊ฒ ๊ฒ์ํด์ ์ฌ์ฉํ ์ ์
๋๋ก ํด์ค๋ค.
์ด 10๊ฐ์ ํฌ์์ฌ๋ก๋ถํฐ
5๋ฒ์ ๋ผ์ด๋๋ฅผ ํตํด ์ฝ
760์ต ์($750M) ์ ์น
2
URX
(http://www.crunchbase.com/
organization/urx)
์ฑ ๊ฒ์ API๋ฅผ ๊ฐ๋ฐํ๊ณ ์๋ ๊ธฐ์
์ผ๋ก, ์์ฐ
๊ฒ์, ์์
๋ฏธ๋์ด, ์ด๋ฉ์ผ, ํธ์๋ฉ์์ง, ๊ด๊ณ
๋ฆฌํ๊ฒํ
๋ฑ ๋ค์ํ ๋ถ์ผ์ ๋น์ฌ์ ๊ฒ์ API
๋ฅผ ์์ฉํ๊ณ ์๋ค.
์ด 34๊ฐ์ ํฌ์์ฌ๋ก๋ถํฐ
3๋ฒ์ ๋ผ์ด๋๋ฅผ ํตํด ์ฝ
160์ต ์($15M) ์ ์น
3
Branch Metrics
(http://www.crunchbase.com/
organization/branch-metrics)
ํน์ ๋ฅ๋งํฌ๋ฅผ ํตํ ์ฑ ์ค์น ์, ํ๊ฑฐํ๋ฆฐํ
๊ธฐ
์ ์ ํตํด ์ฑ ์ค์น ์ดํ์ ํ์๊ฐ์
์ดํ์๋
๋ฐ๋ก ๋งฅ๋ฝ์ ๋ง๋ ๋๋ฉํ์ด์ง๋ก ์ด๋์์ผ์ฃผ๋
๊ธฐ์ .
์ด 3๊ฐ์ ํฌ์์ฌ๋ก๋ถํฐ 1
๋ฒ์ ๋ผ์ด๋๋ฅผ ํตํด ์ฝ
30์ต ์($3M) ์ ์น
12. ๋น์ฆ๋์ค ๋ชจ๋ธ
โข ๊ธฐ์ ์ ํ์ฉํ ์๋ํฌ์ธํธ ์๋น์ค๋ฅผ ํตํด ์์ต ์ฐฝ์ถโจ
โจ
๊ธฐ์กด ์น ๊ฒ์์์ง๊ณผ ์ ์ฌํ, ๊ฒ์ ๊ฒฐ๊ณผ์ ๋ํ ํน์ ๋ชจ๋ฐ์ผ ์ดํ
๋ฆฌ์ผ์ด์
์ผ๋ก์ ํธ๋ํฝ ์ ๋ฌ์ ๋ํ ๊ด๊ณ ์์ต ๋ชจ๋ธ
โข DB ์ถ์ ๋ฐ ์์ง ๊ฐ๋์ ํตํ ์์ฐ ํ๋ณด โจ
โจ
์ถํ App-Indexing ๋งฅ๋ฝ๊ณผ ์ฌ์ฉ์ ํ๋ฆ์ ๋ฐ๋ผ ๋ง์ถคํ ๊ด๊ณ ๋
ธ
์ถ๋ก CTR, ์ ํ์จ, ์๋น์ค ์ฒด๋ฅ ๊ธฐ๊ฐ์ ํ๊ธฐ์ ์ผ๋ก ์ฆ๊ฐ์ํค๋
๋ก ํจ. ๋ ๋์๊ฐ ์์ฐ์ด ๊ฒ์, ์์
๋ฏธ๋์ด, ์ด๋ฉ์ผ, ํธ์ ๋ฉ์์ง,
๊ด๊ณ ๋ฆฌํ๊ฒํ
๋ฑ์ ํตํด ๊ด๊ณ ์ฑ๋์ ๋ ํ๋ถํ๊ฒ ํ๋ ๊ฒ์ด ๋ชฉ
์ .
19. Front-End Develop
1. ๊ฐ๋ฐํ๊ฒฝ
โข MAC OSX
2. ์ฌ์ฉ๊ธฐ์
โข Build Tool โ Yeoman, Bower, Grunt
โข MVC Framework โ Angular.js โv 1.3.0 (animate, aria, โจ
material, route)
โข jQuery โv 2.1.3
3. ๊ฐ๋ฐ๋๊ตฌ
โข SublimeText
4. ์ ์ฅ์
โข Github : https://github.com/teheranslippers/curie-front-angular
20. Yeoman + Grunt + Bower
โข Yeoman: AngularJS, ์น์ฑ ๊ฐ๋ฐ์ ํ์ํ ์ฌ๋ฌ ๊ตฌ์ฑ์
์๋ค์ ์ด๋ฐ์ ๋จ ํ๋์ ์ปค๋งจ๋๋ก ์ธํ
ํด์ฃผ๋ฉฐ, ๋ถํธ์คํธ
๋ํ์ ๋์์ฃผ๋ ๋๊ตฌ.
โข Grunt: SCSS ์ปดํ์ผ, Minify, Auto loading ๋ฑ ๋ค์ํ
์์
๋ค์ ์๋ํ์์ผ์ค์ ๊ฐ๋ฐ ๋ฐ ๋ฐฐํฌ ์ ๋น ๋ฅธ ์๊ฐ์์
ํน์ ํ์คํฌ๋ฅผ ์ํํ ์ ์๋๋ก ํด์ฃผ๋ ๋๊ตฌ.
โข Bower: ๊ฐ๋ฐ ์ ์ฌ์ฉํ๋ ๋ค์ํ ์จ๋ํํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค
์ ๋ฒ์ ๋ฐ ์ํธ์์กด์ฑ์ ๊ด๋ฆฌํด์ฃผ๊ณ , ์ฝ๊ฒ ์ค์นํ ์ ์
๋๋ก ํด์ฃผ๋ ๋๊ตฌ.
21. Yeoman ํ์ฉ ์์
1. yo angular๋ก angular ์ธํ
2. bower install๋ก ์จ๋ํํฐ ์์กด์ฑ ์ฒดํฌ
3. grunt serve ๊ฐ๋ฐ ์ ๋ช
๋ น์ด ์คํโจ
(Chrome LiveReload extension ์ค์น)
4. grunt test๋ก ํ
์คํธ ๋ฐ ๋ฐฐํฌ ์ grunt ๋ช
๋ น์ด ์คํ
25. Back-End Develop
1. ๊ฐ๋ฐํ๊ฒฝ
โข MAC OSX
2. ์๋ฒ ํ๊ฒฝ
โข Digital Ocean
3. ์ฌ์ฉ๊ธฐ์
โข Framework โ Flask (Python 3.4)
โข Main DataBase โ MariaDB (10.0.15)
โข Sub DataBase(1) - ElasticSearch (+ elasticsearch-analysis-korean)
โข Sub DataBase(2) - Memcache
โข Crawler โ Python (Beautiful Soup 4.0)
4. ์ ์ฅ์
โข Github : https://github.com/teheranslippers/curie-front
26. Back-End Develop - Crawler
1. Github: https://github.com/teheranslippers/Curie-Crawler
2. Python (Beautiful Soup 4.0)์ผ๋ก ์ ์
3. ํฌ๋กค๋ฌ๋ ํฌ๊ฒ ์๋์ 2๊ฐ์ง ์ญํ ์ ๋ด๋น
1. getBeatMusicInfo.py: ์์
์ ๋ณด ์์ง
โข ์์
์ ๋ณด(๊ฐ์, ๋
ธ๋ ์ ๋ชฉ, ์จ๋ฒ๋ช
, ์จ๋ฒ ์ด๋ฏธ์ง URL)์ ๊ฐ์ง๊ณ ์๋ ํน์ ์ฌ์ด
ํธ(Beat)์์ ํด๋น ์ ๋ณด๋ค์ ํฌ๋กค๋ง ํด์จ๋ค. ์ต์ข
๊ฒฐ๊ณผ๋ฌผ๋ก CSV ํ์ผ์ด ์์ฑ
๋๋ค.
2. getTrackIDs.py: ๊ฐ ์ดํ๋ฆฌ์ผ์ด์
๋ณ Track ID ์์ง
โข ์์
์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ CSV ํ์ผ์ ๊ธฐ๋ฐ์ผ๋ก, ํฌ๋กค๋ฌ์๊ฒ ๊ฐ์/๋
ธ๋ ์ ๋ชฉ/์จ๋ฒ
๋ช
์ ์
๋ ฅ์ผ๋ก ์ฃผ๋ฉด ์์
์ดํ๋ฆฌ์ผ์ด์
๋ณ (๋ฉ๋ก , ๋ฒ
์ค, ์ ํ๋ธ ๋ฑ) Track ID๋ฅผ
์์งํ๋ค. ์์ง๋ Track ID๋ ๋ฐ๋ก Database(MySQL)๋ก Insert ๋์ด, ์์ง
๋์๋ง์ ์๋น์ค์์ ์ด์ฉ ๊ฐ๋ฅํ๋ค.
27. Back-End Develop โ Flask Framework Structure
1. Micro framework์ด๊ธฐ ๋๋ฌธ์ ์ ์ฒด๊ตฌ์กฐ๋ฅผ ์ง์ ์ ์ํด์ผ ํ๋ ์ด์
โข Degital Ocean์์ ์์ฑํ Article์ ์ฐธ์กฐํ์ฌ ๊ตฌ์กฐ ์ ์
โข https://www.digitalocean.com/community/tutorials/how-to-structure-
large-flask-applications
2. ๋์ผ ์ถ์ฒ ์ ์ฑ
๊ณผ ๊ด๋ จ๋ ์ด์.
โข CORS ์ ์ฉ : http://flask-cors.readthedocs.org/en/latest/
28. Back-End Develop - ElasticSearch
1. RESTful ๋ถ์ฐ ๊ฒ์์์ง http://www.elasticsearch.org/
2. Elastic Search Plug-in
โข Head: http://mobz.github.io/elasticsearch-head/
โข Elasticsearch-analysis-korean
โข JDBC River Plugin: https://github.com/jprante/elasticsearch-river-
jdbcโจ
3. ์ฐธ๊ณ : elasticsearh๋ก ๋ก๊ทธ ๊ฒ์ ์์คํ
๋ง๋ค๊ธฐโจ
http://helloworld.naver.com/helloworld/textyle/273788
30. Back-End Develop - MariaDB
- Data retrieving procedureโจ
โจ
CREATE PROCEDURE `proc_get_app_links`(IN songid INT)
BEGIN
SELECT app.name,CONCAT(app.android_prefix, link.link_id, app.android_appendix)
AS android_deeplink, app.googleplay_url, CONCAT(app.ios_prefix, link.link_id,
app.ios_appendix) AS ios_deeplink, app.iTunes_url
FROM curie_finish.app_info AS app
INNER JOIN curie_finish.link_ids AS link
ON app.id = link.app_id
WHERE link.song_id = songid;
END
31. Back-End Develop - Memcached
1. http://memcached.org/โจ
โจ
DB ๋ ๋ฒจ๊น์ง ๋ด๋ ค๊ฐ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๊ฒ์ด ๋งค์ฐ ํฐ ๋น์ฉ์ ์๋ชจํ๊ธฐ ๋๋ฌธ์,โจ
์์ฃผ ๊ฒ์๋๋(HIT) ๊ฒฐ๊ณผ์ ๋ํด Memcached๋ฅผ ์ด์ฉํ์ฌ ์บ์ฑ์ ์งํํจโจ
2. Memcached Python3 Plug-inโจ
โจ
https://github.com/eguven/python3-memcached/