"틴더"의 두 판 사이의 차이
(→기술) |
잔글 |
||
(사용자 3명의 중간 판 8개는 보이지 않습니다) | |||
1번째 줄: | 1번째 줄: | ||
+ | [[파일:틴더 로고.png|썸네일|200픽셀|'''틴더'''(Tinder)]] | ||
+ | [[파일:틴더 글자.png|썸네일|300픽셀|'''틴더'''(Tinder)]] | ||
+ | |||
'''틴더'''(Tinder)는 2012년에 개발된 미국의 소셜 데이팅 앱이다. 뉴니스(Newness)란 영화가 있다. 데이팅 앱을 이용해 만난 남녀가 사랑에 빠지고, 관계가 발전하는 그 과정을 그렸다. 많은 남녀가 데이팅 앱을 이용해 만나고 헤어진다. 마치 영화처럼 실제 온라인 만남의 장을 열어준 미국의 데이팅 앱이 틴더(Tinder)이다. | '''틴더'''(Tinder)는 2012년에 개발된 미국의 소셜 데이팅 앱이다. 뉴니스(Newness)란 영화가 있다. 데이팅 앱을 이용해 만난 남녀가 사랑에 빠지고, 관계가 발전하는 그 과정을 그렸다. 많은 남녀가 데이팅 앱을 이용해 만나고 헤어진다. 마치 영화처럼 실제 온라인 만남의 장을 열어준 미국의 데이팅 앱이 틴더(Tinder)이다. | ||
== 개요 == | == 개요 == | ||
− | 틴더(Tinder)는 2012년에 개발됐다. 다른 이용들의 사진을 보고 호감을 나타낼수도 있고 다른 사진으로 이동할 수 있는 스와이프라는 기능을 이용한다. 2014년부터 하루 10억 건의 스와이프를 기록하였으며, 현재는 20억건의 스와이프를 기록 중이다. 매일 약 2600만건, 누적 200억건 이상 매칭을 달성했다. 매주 15억건 이상 만남이 틴더를 통해 발생하고 있다. 미국에서 틴더 스와이프가 문화현상으로 확산해 새로둔 동사로 자리 잡기도 했다. 매년 매출이 2배 이상 증가하여 2018년 글로벌 매출액 9000억원을 기록햇다. 한국어를 포함해 40개 이상의 언어를 지원한다. 110개 국 이상의 앱스토어에서 라이프스타일 앱 순위 10위권 내 자리하고 있다. 사이드먼 CEO는 틴더의 성공요인으로 밀레니얼 세대, 여성, 직관적이고 혁신적인 기능을 꼽았다. 사진을 넘기는 스와이프 기능 등이 이용자에게 인기를 끈 것으로 분석하고 있다. 틴더는 한국 시장에서 데이팅 앱보다는 새로운 사람을 발견하는 소셜디스커버리 앱으로 자리매김하겠다는 계획이다. 새로운 사람과 경험을 발국할 수 있도록 한다. 위치기반서비스를 바탕으로 최소 2Km 내 있는 타 이용자를 알 수 있는 만큼 틴더로 동네친구를 사귀거나 주변에 있는 새로운 사람을 만날 수 있다.<ref>테크플러스, 〈[https://blog.naver.com/tech-plus/221448377109 한국 공략 틴더(Tinder), 틴더는 무엇?]〉, 《네이버 블로그》, 2019-01-22</ref> | + | [[틴더]](Tinder)는 2012년에 개발됐다. 다른 이용들의 사진을 보고 호감을 나타낼수도 있고 다른 사진으로 이동할 수 있는 스와이프라는 기능을 이용한다. 2014년부터 하루 10억 건의 스와이프를 기록하였으며, 현재는 20억건의 스와이프를 기록 중이다. 매일 약 2600만건, 누적 200억건 이상 매칭을 달성했다. 매주 15억건 이상 만남이 틴더를 통해 발생하고 있다. 미국에서 틴더 스와이프가 문화현상으로 확산해 새로둔 동사로 자리 잡기도 했다. 매년 매출이 2배 이상 증가하여 2018년 글로벌 매출액 9000억원을 기록햇다. 한국어를 포함해 40개 이상의 언어를 지원한다. 110개 국 이상의 앱스토어에서 라이프스타일 앱 순위 10위권 내 자리하고 있다. 사이드먼 CEO는 틴더의 성공요인으로 밀레니얼 세대, 여성, 직관적이고 혁신적인 기능을 꼽았다. 사진을 넘기는 스와이프 기능 등이 이용자에게 인기를 끈 것으로 분석하고 있다. 틴더는 한국 시장에서 데이팅 앱보다는 새로운 사람을 발견하는 소셜디스커버리 앱으로 자리매김하겠다는 계획이다. 새로운 사람과 경험을 발국할 수 있도록 한다. 위치기반서비스를 바탕으로 최소 2Km 내 있는 타 이용자를 알 수 있는 만큼 틴더로 동네친구를 사귀거나 주변에 있는 새로운 사람을 만날 수 있다.<ref>테크플러스, 〈[https://blog.naver.com/tech-plus/221448377109 한국 공략 틴더(Tinder), 틴더는 무엇?]〉, 《네이버 블로그》, 2019-01-22</ref> |
== 특징 == | == 특징 == | ||
15번째 줄: | 18번째 줄: | ||
=== 더 이어 인 스와이프 === | === 더 이어 인 스와이프 === | ||
− | 더 이어 인 스와이프(The Year in Swipe®)는 최고 인기 베스트송과 가장 좋아하는 | + | 더 이어 인 스와이프(The Year in Swipe®)는 최고 인기 베스트송과 가장 좋아하는 음식부터 스타들의 연인, 가장 많이 언급된 TV 프로그램, 스와이프를 받을 자격이 충분한 이벤트와 가장 인기 있는 유행어까지, 전 세계의 틴더 트렌드를 알려준다. 전 세계의 데이터를 공개함으로써 모두 하나의 지구에 살고 있지만, 서로 공통점뿐만 아니라 차이점을 지닌 특별한 개개인임을 깨닫게 해준다.<ref name=“홈페이지”></ref> |
== 기술 == | == 기술 == | ||
=== 스칼렛 === | === 스칼렛 === | ||
− | 웹소켓(WebSocket)은 채팅, 온라인 멀티플레이어 게임과 실시간 피드 등 실시간 앱 구축에 있어 아주 강력한 도구이다. 클라이언트와 서버 사이에 양방향적인 연결을 설정한다. 커넥션이 열린 상태에서 웹소켓은 낮은 오버헤드로 텍스트와 양방향 메시지를 앞뒤로 주고받는다. 틴더는 | + | 웹소켓(WebSocket)은 채팅, 온라인 멀티플레이어 게임과 실시간 피드 등 실시간 앱 구축에 있어 아주 강력한 도구이다. 클라이언트와 서버 사이에 양방향적인 연결을 설정한다. 커넥션이 열린 상태에서 웹소켓은 낮은 오버헤드로 텍스트와 양방향 메시지를 앞뒤로 주고받는다. 틴더는 웹소켓[[API]] 통합 시 이를 유지하는 것이 골칫거리였다. 안드로이드에서 더욱 원활한 웹소켓 통합을 위해 저희는 선언적인 코틀린 라이브러리인 스칼렛을 개발했다. <ref name=“홈페이지”></ref> |
=== 매칭 알고리즘 === | === 매칭 알고리즘 === | ||
− | 틴더는 프리미엄 사용자를 위한 매칭 | + | 틴더는 프리미엄 사용자를 위한 [[매칭 알고리즘]]을 강화했다. 사용된 기술은 AWS(Amazon Web Services)의 이미지 인식 기술이다. 틴더는 매일 40TB 크기의 데이터를 수집한 후 애널리틱스와 머신러닝 시스템에 입력해 매칭 작업을 개선했다. 이 기반 작업을 AWS 클라우드 서비스에서 처리한다. 사용자가 늘어남에 따라 소개글이 없는 경우가 발생하였고, 틴더는 AWS 레커그니션을 이용해 자동으로 수십억 장의 사진을 태그한다. 레커그니션은 수십억 장의 사진을 처리할 수 있는 [[클라우드]] 확장성 외에도 전문 직원과 데이터 사이언티스트가 복잡한 문제를 해결하는 정교한 모델을 만드는 데도 큰 도움이 된다. 특히 프라이버시는 매우 중요 요소이다. 레커그니션은 필요로 하는 기능에만 접근할 수 있도록 관리하는 별도의 [[API]]를 제공하므로 사용하기에 적합하다. 이런 기능을 레커그니션 기반으로 개발해 태그 커버지르를 2배 이상 늘릴 수 있었다.<ref>Scott Carey , 〈[http://www.ciokorea.com/news/112770 데이팅 앱 '틴더'의 매칭 개선 비결, 'AWS 이미지 인식 기술']〉, 《CIO코리아》, 2018-12-10</ref> |
=== 지오샤드 === | === 지오샤드 === | ||
− | 지오샤드(Geoshard)는 기본적인 | + | 지오샤드(Geoshard)는 기본적인 [[샤드]]에 추가적으로 샤딩을 하는 방법이다. 지오샤드를 통해서 대규모의 균형 잡힌 인덱스 클러스터를 보유하고 있다. 측정에 따르면, 지오샤드는 이전 설정에 비해 20배 증가된 연산을 처리한다. 일단 사용자의 위치가 변경되면, 사용자의 프로필을 거쳐 위치 서비스에 도달하여 위치 변경으로 인해 샤드 이동이 발생했는지 여부를 파악한다. 그 후, 특정 경로 정보가 있는 데이터 노드를 눌러 샤드 이동을 수행한다. 사용자가 권장 사항을 얻을 때, 당사의 권장 엔진은 로직 레이어를 사용하여 조회할 샤드의 수를 파악한 다음 그 정보를 쿼리에 표시한다. 이 결과는 샤드에 걸쳐 수집되고 취합되어 클라이언트에게 다시 전송된다. 틴더는 대규모의 균형 잡힌 [[인덱스]] [[클러스터]]를 보유하고 있다. 생산량의 측정에 따르면, 지오샤드 인덱스를 통해 이전 설정에 비해 20배 더 많은 연산을 처리한다.<ref name=“홈페이지”></ref> |
==== 멀티 인덱스 ==== | ==== 멀티 인덱스 ==== | ||
− | 지금까지 | + | 지금까지 [[샤드]] 라는 단어는 사용자의 지리적 위치에 기초한 인덱스 분리를 나타내는 논리적 용어일 뿐이지만, 엔지니어링 팀에서 적용할 내용을 결정하지 못 했습니다. [[엘라스틱서치]]의 세계에서는 각 샤드에 대해 하나의 인덱스를 가지고 있지만, 모든 인덱스는 하나의 클러스터에 속하거나, 하나의 샤드를 나타내는 멀티클러스터를 가질 수 있다. 다음은 각 시나리오의 장단점입니다.<ref name=“홈페이지”></ref> |
− | + | 멀티 [[인덱스]]은 [[엘라스틱서치]](Elasticsearch)은 즉시 실행 가능한 다중 인덱스 검색을 지원하며, 운영상의 관점에서 유지하기가 더 쉽다는 장점이 있다. 하지만 과부하가 되면 [[샤드]]의 크기를 변동하는데 어렵고, 다른 샤드에 영향을 줄 수 있다는 단점이 있다. 다중 클러스터의 경우, 클러스터를 쉽게 확장 가능하고 분리도 쉽다. 그러나 병렬로 진행을 해야 하는 상황임에도, 아직 지원되는 멀티 클러스터 쿼리가 존재하지 않는다. <ref name=“홈페이지”></ref> | |
− | 각기 장, 단점을 비교하여, 멀티 인덱스 | + | 각기 장, 단점을 비교하여, 멀티 [[인덱스]] [[시나리오]]를 선택했다. 그 이유는 운영비용과 더불어 서버측의 논리를 대폭 간소화했기 때문이다. 그러나 이 시나리오의 단점을 극복하기 위해 추가적으로 부하분산 전략을 개발했다. [[부하분산]]이란 병렬로 운영되는 기기 사이에서 부하가 균등하게 되도록 하는 것을 말한다. 또한 언제든지 복제 본을 더 추가하여 샤드를 확장할 수 있다.<ref name=“홈페이지”></ref> |
==== 적합한 크기 ==== | ==== 적합한 크기 ==== | ||
− | 올바른 클러스터 크기를 선택하는 것은 중요하다. 특히 조정할 수 있는 변수가 너무 많은 경우에는 더욱 그렇다. 고려해야 하는 변수들은 서로에게 영향을 준다는 점은 신중함을 더 증폭시킨다. 여러 면을 생각해 보았을 때 모든 가능한 조합을 시험하는 대신에, 사용자 수와 지역 면적의 측면에 그것들을 하나씩 결정한다. 사용자 위치를 취합하고 그것을 지도화하여 틴더의 가장 밀집된 지역을 찾아 시뮬레이션을 시행한다. 적은 양의 트래픽에서 시작하여 쿼리 노드나 데이터 노드가 CPU나 메모리를 최대로 사용할 수 있는 지점까지 확장하여 지오샤드 클러스터의 최적의 설정을 찾아낸다.<ref name=“홈페이지”></ref> | + | 올바른 [[클러스터]] 크기를 선택하는 것은 중요하다. 특히 조정할 수 있는 변수가 너무 많은 경우에는 더욱 그렇다. 고려해야 하는 변수들은 서로에게 영향을 준다는 점은 신중함을 더 증폭시킨다. 여러 면을 생각해 보았을 때 모든 가능한 조합을 시험하는 대신에, 사용자 수와 지역 면적의 측면에 그것들을 하나씩 결정한다. 사용자 위치를 취합하고 그것을 지도화하여 틴더의 가장 밀집된 지역을 찾아 시뮬레이션을 시행한다. 적은 양의 트래픽에서 시작하여 쿼리 노드나 데이터 노드가 CPU나 메모리를 최대로 사용할 수 있는 지점까지 확장하여 지오샤드 클러스터의 최적의 설정을 찾아낸다.<ref name=“홈페이지”></ref> |
==== 시간대 처리 ==== | ==== 시간대 처리 ==== | ||
− | 동일한 지리적 범위 내의 사용자는 지리적으로 인접해 있기 때문에 일반적으로 동일하거나 인접한 시간대에 있다. 이 특성은 시간대 및 지리 위치별 사용자의 사용 패턴이 서로 다르기 때문에 불균형 | + | 동일한 지리적 범위 내의 사용자는 지리적으로 인접해 있기 때문에 일반적으로 동일하거나 인접한 시간대에 있다. 이 특성은 시간대 및 지리 위치별 사용자의 사용 패턴이 서로 다르기 때문에 불균형 [[트래픽]]을 나타낸다. 하나의 물리적 공간에 하나의 샤드만 부여한다면 작업 양이 다른 [[노드]]와 불균형을 이루게 된다. 초당 요청 건수 차이가 다른 샤드와 비교하여 10배 이상이 될 수도 있다.<ref name=“홈페이지”></ref> |
목표는 글로벌한 사용자들이 어떤 지오샤드에 있든지 상관없이 균형적인 클러스터를 구축하여 동일한 서비스를 제공하는 것이다. 이것을 달성하기 위해 여러 개의 샤드를 동일한 노드에 수동으로 할당하여 하루 중 지정된 시간에 작업량이 서로 유사하도록 하는 것이 한 방법이다. 하지만 활발한 클러스터를 유지하기 위해서는 많은 수동적인 개입이 필요하며 이것은 또 다른 문제를 야기한다. 또한 사용자 기반 증가로 인해 공유가 필요한 경우 이 문제를 다시 계산해야 한다. 이 모든 것을 처리하기 위해 임의성의 힘을 활용하기로 결정했다. 전형적인 통계 문제로 단순하게 모델링함으로써 문제를 해결한다.<ref name=“홈페이지”></ref> | 목표는 글로벌한 사용자들이 어떤 지오샤드에 있든지 상관없이 균형적인 클러스터를 구축하여 동일한 서비스를 제공하는 것이다. 이것을 달성하기 위해 여러 개의 샤드를 동일한 노드에 수동으로 할당하여 하루 중 지정된 시간에 작업량이 서로 유사하도록 하는 것이 한 방법이다. 하지만 활발한 클러스터를 유지하기 위해서는 많은 수동적인 개입이 필요하며 이것은 또 다른 문제를 야기한다. 또한 사용자 기반 증가로 인해 공유가 필요한 경우 이 문제를 다시 계산해야 한다. 이 모든 것을 처리하기 위해 임의성의 힘을 활용하기로 결정했다. 전형적인 통계 문제로 단순하게 모델링함으로써 문제를 해결한다.<ref name=“홈페이지”></ref> | ||
==== 파이널 스테이지 ==== | ==== 파이널 스테이지 ==== | ||
− | 3개의 마스터 노드 아래에 ASG가 2개 있는데, 하나는 조정 노드만 포함하고 다른 하나는 모든 데이터 노드를 포함한다. 각 데이터 노드는 네개의 인덱스를 임의로 배포하며, 그 중 일부는 특정 샤드의 기본 인덱스이고, 다른 일부는 다른 샤드의 복제본이다. 쿼리에 의해 조정 노드는 목표물인 지오샤드를 포함한 데이터 노드로 요청을 분배한다. 이렇게 하면 한 클러스터에 모든 지오샤드 인덱스들을 호스트하고 부하의 균형을 조정할 수 있다.<ref name=“홈페이지”></ref> | + | 3개의 [[마스터 노드]] 아래에 ASG가 2개 있는데, 하나는 조정 노드만 포함하고 다른 하나는 모든 데이터 노드를 포함한다. 각 데이터 노드는 네개의 인덱스를 임의로 배포하며, 그 중 일부는 특정 샤드의 기본 인덱스이고, 다른 일부는 다른 샤드의 복제본이다. 쿼리에 의해 조정 노드는 목표물인 지오샤드를 포함한 데이터 노드로 요청을 분배한다. 이렇게 하면 한 클러스터에 모든 지오샤드 인덱스들을 호스트하고 부하의 균형을 조정할 수 있다.<ref name=“홈페이지”></ref> |
== 사용법 == | == 사용법 == | ||
63번째 줄: | 66번째 줄: | ||
*테크플러스, 〈[https://blog.naver.com/tech-plus/221448377109 한국 공략 틴더(Tinder), 틴더는 무엇?]〉, 《네이버 블로그》, 2019-01-22 | *테크플러스, 〈[https://blog.naver.com/tech-plus/221448377109 한국 공략 틴더(Tinder), 틴더는 무엇?]〉, 《네이버 블로그》, 2019-01-22 | ||
*코코민트, 〈[https://blog.naver.com/coco_mint1/221232443368 요즘 핫한 소셜 데이팅 앱 틴더 후기]〉, 《네이버 블로그》, 2019-01-22 | *코코민트, 〈[https://blog.naver.com/coco_mint1/221232443368 요즘 핫한 소셜 데이팅 앱 틴더 후기]〉, 《네이버 블로그》, 2019-01-22 | ||
+ | *Scott Carey , 〈[http://www.ciokorea.com/news/112770 데이팅 앱 '틴더'의 매칭 개선 비결, 'AWS 이미지 인식 기술']〉, 《CIO코리아》, 2018-12-10 | ||
== 같이 보기 == | == 같이 보기 == |
2021년 5월 31일 (월) 17:11 기준 최신판
틴더(Tinder)는 2012년에 개발된 미국의 소셜 데이팅 앱이다. 뉴니스(Newness)란 영화가 있다. 데이팅 앱을 이용해 만난 남녀가 사랑에 빠지고, 관계가 발전하는 그 과정을 그렸다. 많은 남녀가 데이팅 앱을 이용해 만나고 헤어진다. 마치 영화처럼 실제 온라인 만남의 장을 열어준 미국의 데이팅 앱이 틴더(Tinder)이다.
목차
개요[편집]
틴더(Tinder)는 2012년에 개발됐다. 다른 이용들의 사진을 보고 호감을 나타낼수도 있고 다른 사진으로 이동할 수 있는 스와이프라는 기능을 이용한다. 2014년부터 하루 10억 건의 스와이프를 기록하였으며, 현재는 20억건의 스와이프를 기록 중이다. 매일 약 2600만건, 누적 200억건 이상 매칭을 달성했다. 매주 15억건 이상 만남이 틴더를 통해 발생하고 있다. 미국에서 틴더 스와이프가 문화현상으로 확산해 새로둔 동사로 자리 잡기도 했다. 매년 매출이 2배 이상 증가하여 2018년 글로벌 매출액 9000억원을 기록햇다. 한국어를 포함해 40개 이상의 언어를 지원한다. 110개 국 이상의 앱스토어에서 라이프스타일 앱 순위 10위권 내 자리하고 있다. 사이드먼 CEO는 틴더의 성공요인으로 밀레니얼 세대, 여성, 직관적이고 혁신적인 기능을 꼽았다. 사진을 넘기는 스와이프 기능 등이 이용자에게 인기를 끈 것으로 분석하고 있다. 틴더는 한국 시장에서 데이팅 앱보다는 새로운 사람을 발견하는 소셜디스커버리 앱으로 자리매김하겠다는 계획이다. 새로운 사람과 경험을 발국할 수 있도록 한다. 위치기반서비스를 바탕으로 최소 2Km 내 있는 타 이용자를 알 수 있는 만큼 틴더로 동네친구를 사귀거나 주변에 있는 새로운 사람을 만날 수 있다.[1]
특징[편집]
성별[편집]
틴더는 성별의 표시 여부 뿐만 아니라 그들의 성 정체성까지도 나타낼 수 있다. 포용과 수용이라는 생각은 이분법적인 성별로 회원들을 정의하는 것이 아닌 더 넓은 의미에 성 정체성을 포함한다. 틴더의 이 기능은 1994년부터 인도의 가장 오래된 LGBTQ 기구인 The Humsafar Trust와 LGBTQ 작가이자 포괄적인 지지자인 Parmesh Shahani를 포함하여 트랜스젠더와 비관행적인 성 커뮤니티의 회원들 및 자문가들의 도움으로 탄생했다. 뿐만 아니라 클리닉 및 카운셀링 팀과 연결하여 커밍아웃, 수용, 불안, 우울감, 인간관계와 성전환 등에 관한 고민을 카운슬러 및 의사와 상담할 수 있는 서비스를 지원한다. [2]
틴더 유[편집]
틴더 유(Tinder U)는 회언의 학교와 주위의 다른 학생들을 확인할 수 있는 기능이다. 틴더는 이 기능을 통해 Rivalry Week라는 이벤트를 진행했다. 1중일 동안 틴더에서는 등록된 틴더 유 학생 회원들에게 경쟁 상대를 파악할 수 있는 기회를 선사하여 대학 미식축구의 가장 열띤 순간을 더욱 빛나게 만드는 이벤트가 열렸다. 틴더 유 라이벌리 위크(Tinder U Rivalry Week) 기간 동안 미국의 4년제 학위 수여 칼리지 및 대학 학생들에게 역사적으로 라이벌 관계를 유지한 학교들을 소개한다. 이 기간 동안에는 틴더 유 검색망이 확장되어 거리에 상관없이 라이벌 학교의 학생들까지 포함된다. 거리를 뛰어넘는 상대편과의 매칭을 통해서 경쟁자의 마스코트와 전략을 손에 넣을 수 있는 기회를 제공한다.[2]
스와이프 서지[편집]
스와이프 서지(Swipe Surge)는 틴더에서 회원 활동이 증가하는 때를 이야기 한다. 쉽게 표현한다면 스와이프 피크타임이라고 할 수 있다. 이 피크타임 동안 회원들의 활동이 최대 15배 더 활발해 지며 그 순간의 매칭 확률은 250%만큼 증가하게 된다. 순간이라는 일회적이고 예측할 수 없는 시간인 만큼 틴더에 실시간 업데이트가 전달되도록 푸시 알림을 활성화하고 그 혜택을 누리면 된다. 이 혜택은 스와이프 피크타임에 이미 가입한 사람들에게 우선 제공되며 일부 도시의 IOS기기에서 이용할 수 있다. [2]
더 이어 인 스와이프[편집]
더 이어 인 스와이프(The Year in Swipe®)는 최고 인기 베스트송과 가장 좋아하는 음식부터 스타들의 연인, 가장 많이 언급된 TV 프로그램, 스와이프를 받을 자격이 충분한 이벤트와 가장 인기 있는 유행어까지, 전 세계의 틴더 트렌드를 알려준다. 전 세계의 데이터를 공개함으로써 모두 하나의 지구에 살고 있지만, 서로 공통점뿐만 아니라 차이점을 지닌 특별한 개개인임을 깨닫게 해준다.[2]
기술[편집]
스칼렛[편집]
웹소켓(WebSocket)은 채팅, 온라인 멀티플레이어 게임과 실시간 피드 등 실시간 앱 구축에 있어 아주 강력한 도구이다. 클라이언트와 서버 사이에 양방향적인 연결을 설정한다. 커넥션이 열린 상태에서 웹소켓은 낮은 오버헤드로 텍스트와 양방향 메시지를 앞뒤로 주고받는다. 틴더는 웹소켓API 통합 시 이를 유지하는 것이 골칫거리였다. 안드로이드에서 더욱 원활한 웹소켓 통합을 위해 저희는 선언적인 코틀린 라이브러리인 스칼렛을 개발했다. [2]
매칭 알고리즘[편집]
틴더는 프리미엄 사용자를 위한 매칭 알고리즘을 강화했다. 사용된 기술은 AWS(Amazon Web Services)의 이미지 인식 기술이다. 틴더는 매일 40TB 크기의 데이터를 수집한 후 애널리틱스와 머신러닝 시스템에 입력해 매칭 작업을 개선했다. 이 기반 작업을 AWS 클라우드 서비스에서 처리한다. 사용자가 늘어남에 따라 소개글이 없는 경우가 발생하였고, 틴더는 AWS 레커그니션을 이용해 자동으로 수십억 장의 사진을 태그한다. 레커그니션은 수십억 장의 사진을 처리할 수 있는 클라우드 확장성 외에도 전문 직원과 데이터 사이언티스트가 복잡한 문제를 해결하는 정교한 모델을 만드는 데도 큰 도움이 된다. 특히 프라이버시는 매우 중요 요소이다. 레커그니션은 필요로 하는 기능에만 접근할 수 있도록 관리하는 별도의 API를 제공하므로 사용하기에 적합하다. 이런 기능을 레커그니션 기반으로 개발해 태그 커버지르를 2배 이상 늘릴 수 있었다.[3]
지오샤드[편집]
지오샤드(Geoshard)는 기본적인 샤드에 추가적으로 샤딩을 하는 방법이다. 지오샤드를 통해서 대규모의 균형 잡힌 인덱스 클러스터를 보유하고 있다. 측정에 따르면, 지오샤드는 이전 설정에 비해 20배 증가된 연산을 처리한다. 일단 사용자의 위치가 변경되면, 사용자의 프로필을 거쳐 위치 서비스에 도달하여 위치 변경으로 인해 샤드 이동이 발생했는지 여부를 파악한다. 그 후, 특정 경로 정보가 있는 데이터 노드를 눌러 샤드 이동을 수행한다. 사용자가 권장 사항을 얻을 때, 당사의 권장 엔진은 로직 레이어를 사용하여 조회할 샤드의 수를 파악한 다음 그 정보를 쿼리에 표시한다. 이 결과는 샤드에 걸쳐 수집되고 취합되어 클라이언트에게 다시 전송된다. 틴더는 대규모의 균형 잡힌 인덱스 클러스터를 보유하고 있다. 생산량의 측정에 따르면, 지오샤드 인덱스를 통해 이전 설정에 비해 20배 더 많은 연산을 처리한다.[2]
멀티 인덱스[편집]
지금까지 샤드 라는 단어는 사용자의 지리적 위치에 기초한 인덱스 분리를 나타내는 논리적 용어일 뿐이지만, 엔지니어링 팀에서 적용할 내용을 결정하지 못 했습니다. 엘라스틱서치의 세계에서는 각 샤드에 대해 하나의 인덱스를 가지고 있지만, 모든 인덱스는 하나의 클러스터에 속하거나, 하나의 샤드를 나타내는 멀티클러스터를 가질 수 있다. 다음은 각 시나리오의 장단점입니다.[2]
멀티 인덱스은 엘라스틱서치(Elasticsearch)은 즉시 실행 가능한 다중 인덱스 검색을 지원하며, 운영상의 관점에서 유지하기가 더 쉽다는 장점이 있다. 하지만 과부하가 되면 샤드의 크기를 변동하는데 어렵고, 다른 샤드에 영향을 줄 수 있다는 단점이 있다. 다중 클러스터의 경우, 클러스터를 쉽게 확장 가능하고 분리도 쉽다. 그러나 병렬로 진행을 해야 하는 상황임에도, 아직 지원되는 멀티 클러스터 쿼리가 존재하지 않는다. [2]
각기 장, 단점을 비교하여, 멀티 인덱스 시나리오를 선택했다. 그 이유는 운영비용과 더불어 서버측의 논리를 대폭 간소화했기 때문이다. 그러나 이 시나리오의 단점을 극복하기 위해 추가적으로 부하분산 전략을 개발했다. 부하분산이란 병렬로 운영되는 기기 사이에서 부하가 균등하게 되도록 하는 것을 말한다. 또한 언제든지 복제 본을 더 추가하여 샤드를 확장할 수 있다.[2]
적합한 크기[편집]
올바른 클러스터 크기를 선택하는 것은 중요하다. 특히 조정할 수 있는 변수가 너무 많은 경우에는 더욱 그렇다. 고려해야 하는 변수들은 서로에게 영향을 준다는 점은 신중함을 더 증폭시킨다. 여러 면을 생각해 보았을 때 모든 가능한 조합을 시험하는 대신에, 사용자 수와 지역 면적의 측면에 그것들을 하나씩 결정한다. 사용자 위치를 취합하고 그것을 지도화하여 틴더의 가장 밀집된 지역을 찾아 시뮬레이션을 시행한다. 적은 양의 트래픽에서 시작하여 쿼리 노드나 데이터 노드가 CPU나 메모리를 최대로 사용할 수 있는 지점까지 확장하여 지오샤드 클러스터의 최적의 설정을 찾아낸다.[2]
시간대 처리[편집]
동일한 지리적 범위 내의 사용자는 지리적으로 인접해 있기 때문에 일반적으로 동일하거나 인접한 시간대에 있다. 이 특성은 시간대 및 지리 위치별 사용자의 사용 패턴이 서로 다르기 때문에 불균형 트래픽을 나타낸다. 하나의 물리적 공간에 하나의 샤드만 부여한다면 작업 양이 다른 노드와 불균형을 이루게 된다. 초당 요청 건수 차이가 다른 샤드와 비교하여 10배 이상이 될 수도 있다.[2]
목표는 글로벌한 사용자들이 어떤 지오샤드에 있든지 상관없이 균형적인 클러스터를 구축하여 동일한 서비스를 제공하는 것이다. 이것을 달성하기 위해 여러 개의 샤드를 동일한 노드에 수동으로 할당하여 하루 중 지정된 시간에 작업량이 서로 유사하도록 하는 것이 한 방법이다. 하지만 활발한 클러스터를 유지하기 위해서는 많은 수동적인 개입이 필요하며 이것은 또 다른 문제를 야기한다. 또한 사용자 기반 증가로 인해 공유가 필요한 경우 이 문제를 다시 계산해야 한다. 이 모든 것을 처리하기 위해 임의성의 힘을 활용하기로 결정했다. 전형적인 통계 문제로 단순하게 모델링함으로써 문제를 해결한다.[2]
파이널 스테이지[편집]
3개의 마스터 노드 아래에 ASG가 2개 있는데, 하나는 조정 노드만 포함하고 다른 하나는 모든 데이터 노드를 포함한다. 각 데이터 노드는 네개의 인덱스를 임의로 배포하며, 그 중 일부는 특정 샤드의 기본 인덱스이고, 다른 일부는 다른 샤드의 복제본이다. 쿼리에 의해 조정 노드는 목표물인 지오샤드를 포함한 데이터 노드로 요청을 분배한다. 이렇게 하면 한 클러스터에 모든 지오샤드 인덱스들을 호스트하고 부하의 균형을 조정할 수 있다.[2]
사용법[편집]
1. 앱을 다운로드 한다.
2. 로그인을 한 후 프로필을 등록한다.
3. 설정에서 관심사와 연령대, 최대 거리 등을 조절할 수 있다.
4. 동작
- 위로 스와이프 : 슈퍼 라이크(Super Like)로 매우 마음에 듦을 표현한다.
- 왼쪽으로 스와이프: 노프(Nope)로 마음에 들지 않음을 뜻한다.
- 오른쪽으로 스와이프 : 라이크(Like)로 마음에 든다는 의미를 나타낸다. [4]
각주[편집]
- ↑ 테크플러스, 〈한국 공략 틴더(Tinder), 틴더는 무엇?〉, 《네이버 블로그》, 2019-01-22
- ↑ 2.00 2.01 2.02 2.03 2.04 2.05 2.06 2.07 2.08 2.09 2.10 2.11 2.12 틴더 공식홈페이지- https://tinder.com/
- ↑ Scott Carey , 〈데이팅 앱 '틴더'의 매칭 개선 비결, 'AWS 이미지 인식 기술'〉, 《CIO코리아》, 2018-12-10
- ↑ 코코민트, 〈요즘 핫한 소셜 데이팅 앱 틴더 후기〉, 《네이버 블로그》, 2019-01-22
참고 자료[편집]
- 틴더 공식홈페이지- https://tinder.com/
- 테크플러스, 〈한국 공략 틴더(Tinder), 틴더는 무엇?〉, 《네이버 블로그》, 2019-01-22
- 코코민트, 〈요즘 핫한 소셜 데이팅 앱 틴더 후기〉, 《네이버 블로그》, 2019-01-22
- Scott Carey , 〈데이팅 앱 '틴더'의 매칭 개선 비결, 'AWS 이미지 인식 기술'〉, 《CIO코리아》, 2018-12-10
같이 보기[편집]
|