스토리 홈

인터뷰

피드

뉴스

조회수 588

고객에서 팬으로...

최근 중국발 미세먼지를 해결할 수 있는 기발한 아이디어가 등장했다.중국발 미세먼지로 인해 한국의 아이돌 그룹 EXO의 건강에 위협을 주고 있다는 이야기를 중국 EXO 팬들에게 알려주면, 대한민국 정부도 해결하지 못하는 이 문제를 중국 EXO 팬들이 해결할 것이라는 기막힌 발상이다.웃자고 하는 얘기지만,이미 우리들은 시장에서 '팬'들의 열정과 영향력을 충분히 알고 있다.팬은 상품의 일부이다그들은 단순히 상품 또는 서비스를 소비하는 고객이 아니다.그들은 상품의 일부가 되어 유기체적 역할을 하게 된다.스스로 광고 매체가 되고스스로 차기 아이디어의 원천이 되기도 하고상품의 존속을 결정짓는 핵심 의사결정자가 되기도 한다.하지만, 고객을 아무리 '왕'으로 섬긴다고 '팬'이 되지는 않는다.고객은 '만족'을 취하지만, 팬은 '감동'으로 움직인다.고객은 '만족', 팬은 '감동'필요나 기대를 멋지게 충족해준다면, 고객은 '만족' 할 수 있다. 문제는 모든 경쟁자가 '뻔~한 기대'만을 바라보고 유사한 수준의 만족을 제공하기 위해 혈투를 벌이고 있다는 것이다.남들과 같은 수준으로는 팬덤을 형성할 수 없다.말은 쉽지만, 기업들은 '고객 만족'조차 달성하기 녹녹치 않은게 현실이다.기업들이 '소비자 조사, User Friendly, 사용자 중심, 고객 최우선' 등의 모토를 내세우며 고객 만족도를 높이기 위해 고군분투 하고 있지만, 고객을 들여다보면 볼수록 아이러니하게도 '감동'은 멀어져가게 된다.만족의 연장선상에 감동이 위치하고 있지 않기 때문이다.고객의 기대치를 200% 달성한다면, 만족이 '대만족'은 될 수 있을지 몰라도, 그것이 '감동'이 될 수는 없다. 더 만족한다고 팬이 만들어지지 않는다는 얘기다.대만족과 감동은 다르다그렇다면 '감동'은 어떻게 만들어질 수 있는가?감동을 만드는 레시피가 있다면 좋겠지만, 사실 어려운 얘기다.다만, 팁이 있다면,고객이 전혀 예측하지 않았던 부분에서 뜻밖의 행복감을 줘야한다는 것이다. 감동은 만족의 강도뿐만 아니라, 전혀 기대하지 않았던 부분에서의 뜻밖의 만족감에서 발현된다.그리고, 그것을 지속적으로 보여줄 수 있어야 한다.애플이 오랫동안 그러했고,마이클잭슨이 그러했고,나이키 에어조던이 그러했다.최근 '윤식당'의 나영석 PD가 그러하고,또 다시 기대되는 '응답하라'시리즈가 그러하다.모두 자기 칼라가 분명했고, 지속적이었고, 최고였다.남들과 다르게 최고를 만들기이미 경쟁자가 있었지만,누구도 시도하지 않았던 자신만의 방식으로기대치 않았던 행복감을 주었다면 나는 기꺼이 그들의 팬이 될 의향이 있다.현재 고객의 만족을 염두에 두고 고심하고 있다면,한편으로 어떻게 고객을 팬으로 만들 수 있을지 고민해 볼 필요가 있다.남들과 다른 관점으로,남들이 미처 생각하지 못했던 방식으로,Originality를 찾아야 한다.'Good to Great' 만으로는 이제 어렵다.'Universal to Unique'가 되어야 한다.Universal to Unique만일 지금 누군가의 팬이거나,어떤 브랜드 또는 상품의 팬이라면,자신이 무엇때문에 팬이 되었는지 생각해보고팬덤을 만들기 위한 자신만의 레시피를 고민해보자.전혀 다른 접근방식이 떠오를 것이다.팬들이 하나둘 생길 것이다.고객에서 팬으로...
조회수 1907

[현대글로비스 사람들] 글로비스의 기업문화를 이끌어 나가다

 2018년 3월 21일 출범한 조직문화협의체는 현대글로비스가 추구하는 기업문화의 지향점인 ‘신뢰 속에 함께 성장하는 글로비스, 글로비스人’을 바탕으로 조직문화의 변화를 선도하는 막중한 역할을 맡았습니다. 각 부서 대표로 선발된 24명의 구성원들은 상호 신뢰, 소통과 협업, 워크스마트, 일과 삶의 균형 등을 목표로 캠페인을 진행하는 등 조직문화 개선을 위한 다양한 시도를 행하고 있습니다.Q. 조직문화협의체 출범 배경이 궁금합니다.국제SCM2팀 김용국 대리 2014년 6월 2일, 우리 현대글로비스는 이날을 ‘윤리의 날’로 지정하며 건전한 기업 문화 조성의 초석을 마련했어요. 이러한 활동은 2016년 한국윤리경영 대상 수상으로 이어졌고, 올해에는 반부패 국제인증인 ISO37001를 취득하며 윤리경영의 성과를 인정받았죠. 우리 회사는 이것에 그치지 않고 새로운 목표를 세웠어요. 그동안 구축해온 윤리의식을 바탕으로 자발적이고 창의적인 업무 수행 분위기를 조성하고, 궁극적으로는 신바람나는 일터를 만들어 가자는 것이죠. 그래서 윤리의 날을 ‘기업문화의 날’로 변경했으며, 기존의 윤리경영팀 또한 신뢰와 성장, 조직 활성화 등 조직문화적 관점을 더해 ‘기업문화팀’으로 거듭났습니다. 그리고 올해 3월 21일, ‘현대글로비스의 다양한 목소리를 청취하고 이를 본격적으로 실행해 나가자’는 취지로 각 실의 오피니언 리더 24명을 추천 받아 조직 문화 변화를 선도할 ‘조직문화협의체’를 출범했습니다.Q 조직문화협의체의 지향점과 구체적인 역할은 무엇인가요?벌크선1팀 이예원 과장 협의체 출범 전에도 조직문화 변화를 주제로 한 프로그램들이 시행되었지만 담당 부서가 명확하지 않거나 직원들의 목소리가 잘 반영되지 않는 등의 문제가 종종 있었어요. 그런 의미에서 온전히 조직문화의 긍정적인 방향을 고민하고, 의견을 제시할 수 있는 조직이 생겼다는 것은 큰 의미를 지녀요. 조직문화협의체는 현대글로비스가 추구하는 기업 문화의 지향점인 ‘신뢰 속에 함께 성장하는 글로비스, 글로비스人’을 정착시키는 것을 가장 큰 목표로 삼고 있어요. 목표 달성을 위해 추진 방향이자 전략인 ‘상호 신뢰’, ‘소통과 협업’, ‘워크스마트’, ‘일과 삶의 균형’을 녹인 조직문화 프로그램을 기획·실행하고 있습니다.국내TPL영업1팀 원종훈 과장 지난 4월 26일에는 조직문화협의체 워크숍을진행했어요. 경영진이 참석한 자리에서 앞으로의 활동 방향을 알리고, 공감대를 형성했죠. 조직문화협의체 구성원들은 각 실의 목소리를 대변한다는 자세로 한 달에 한 번 진행하는 정기회의 때마다 다양한 제안을 내고 있어요. 회의때 나온 안건들을 발전시켜 현재 조직문화 프로그램을 시행 중이고요.Q. 현재 추진 중인 조직문화 프로그램을 소개해주세요.구매1팀 서성관 과장매주 금요일마다 ‘캐주얼데이’를 시행하고 있는데요, 그동안 ‘비즈니스 캐주얼’이라는 한정된 스타일 때문에 옷 입는 데 제약이 많았어요. 그러다 조직문화협의체에서 ‘캐주얼데이라는 명칭에 맞게 청바지, 운동화, 라운드 티셔츠 등 입을 수 있는 옷의 범위를 넓혔으면 좋겠다’고 제안했고, 그 의견이 통과돼 지금은 더욱 편안한 복장으로 출근하게 되었답니다. 옷이 바뀌니 직원들이나 관리자들의 마음이 열리는 긍정적인 효과를 보았고, 직위고하를 막론하고 보다 가깝게 소통할 수 있었어요. 서로를 바라보는 시선에도 여유가 생겼고요. 조직문화라는 것이 한순간에 바뀌지 않기 때문에 점진적으로 변화시키려는 노력이 중요하다고 생각해요.대외협력팀 김병윤 차장금요일 낮 1시, 사내방송 시간에 ‘칭찬릴레이’를 실시하고 있어요. 칭찬자가 직접 방송에 나와 사연을 읽어주는 형태인데요, ‘얼굴 한 번 본 적 없는데 업무할 때 도움을 많이 받았다’, ‘신입사원 시절 멘토였던 선배에게 고마움을 전하고 싶다’, ‘마라톤 동호회 활동을 하며 꾸준히 자기관리 하는 동료가 멋지다’ 등의 다양한 사연이 전해졌어요. 칭찬릴레이를 통해 칭찬 문화를 자연스럽게 조성하고, 직원 간 신뢰와 소통, 협업이 증대되길 기대하고 있어요.KD사업1팀 윤영실 대리 기업문화팀은 조직문화협의체와 함께 같은 발음을 가진 3개의 동사 ‘잇다, 잊다, 있다’를 활용해 Behavior Rule ‘[읻:따] 조직 문화 캠페인’을 전개하고 있어요. 생활문화, 업무문화, 회식문화, 회의문화 등 네 가지 영역에서 직장 생활의 행동양식과 기준이 될 조직문화를 전파 중 입니다. 이밖에도 회사의 발전을 위한 제보 및 건의사항을 익명 또는 기명으로 제안할 수 있는 현대글로비스인들만의 의견 수렴 창구, ‘TalkTalk 채널’도 운영 중이에요.Q. 조직문화협의체 활동이 미치는 긍정적 영향이 있다면?국내TPL영업1팀 원종훈 과장 현대글로비스의 각 실 대표들이 모여 있는 조직이다 보니 다양한 구성원들과 소통할 수 있다는 점이 매력적이에요. 같은 주제를 가지고 함께 고민하고 아이디어를 도출해 실행하는 과정 또한 업무와는 다른 재미가 있고요. 지금 당장 모든 문제를 해결할 수는 없지만, 조직문화협의체가 회사의 다양한 문제 해결을 위한 첫걸음을 떼는 역할을 하는 것 같아 구성원으로서 자부심을 느껴요.Q. 조직문화협의체 구성원으로서 바람이 있다면?벌크선1팀 이예원 과장 출범 초반 ‘반짝’ 활동하다 사라지는 조직이 되지 않으려면 구성원 한 명 한 명이 구심점이 되어 임직원들의 다양한 의견을 수렴해 적극적으로 개진하고, 실행 가능한 과제를 선별해 조직문화를 확실하게 바꿔 나가려는 노력이 필요해요. 1년에 실행 과제 2개씩만 바꿔 나가도 10년이면 20개의 변화가 생기고, 나중에는 현대글로비스 고유의 조직문화로 자리 잡을 수 있을 거라고 생각해요.사업관리팀 이길수 과장 ‘조직문화’에 초점을 둔 조직인 만큼 시대의 변화를 받아들이는 열린 자세를 가지고 직원 간 소통의 가교 역할을 해 현대글로비스의 성장과 발전을 도모할 수 있었으면 좋겠어요. 임직원 여러분 또한 적극적으로 조직문화협의체에 좋은 의견, 건의사항 등을 내어 주셔서 현대글로비스의 좋은 조직문화를 구축하는 데 동참해주셨으면 해요.현대글로비스의 조직문화를 이끌어나갈 조직문화협의체의 활약을 기대합니다!#현대 #현대그룹 #현대글로비스 #조직문화 #기업문화 #기업문화팀 #직무정보 #구성원인터뷰 #공채정보
조회수 262

최악의 상황을 상상해보자

저는 얼마 전에 제주로 독립 책방 투어 겸 휴가를 짧게나마 다녀왔습니다. 사실 투어라고 하기에는 부끄럽게 세 군데밖에 못 돌았지만, 그럼에도 생각지도 못했던 새로운 인연을 만들 수 있어서 즐거웠답니다.그런데 제가 떠나기로 한날은 제 7호 태풍 쁘라삐룬이 제주도에 상륙한다는 바로 그 날이었어요. 3주 전부터 이른 휴가를 가겠다고 비행기를 예약해뒀는데, 아니 바로 그때 태풍이 온다잖아요... 왜죠. 왜 하필..ㅜ ㅜ 그래서 저는 날짜가 다가올수록 계속 전전긍긍이었죠. "과연 제주에 갈 수 있는 걸까? 내내 비가 오면 어쩌지? 비행기 안 뜨는 거 아냐?" 라며 걱정에 걱정을 거듭하며 항공사 사이트에 들어가서 비행기가 떴는지를 확인하고 결항된 비행기가 없는지 확인하고 또 확인했습니다. 그렇게 어쩔 줄 몰라하며 안달복달하다가, 불안한 클릭질을 잠시 멈추고 가만히 앉아서 제 마음속을 들여다보기로 했습니다.나는 무엇이 두려워서비행기가 안 뜨는 것을 걱정하고 있는 것인가...?사실 날씨란 건 보잘것없는 인간인 제가 어쩔 수 있는 부분이 아닙니다. 그래서 날씨에 의해 좌우되는 비행기의 출발 여부 또한 그냥 받아들여야 하는 것이죠. 그래서 제가 제일 걱정하는 것이 일어난 상황을 가정해보기로 했습니다. 정말 폭풍우가 몰려와서 비행기가 안 뜬다면, 그럼 제겐 어떤 일이 벌어질까요? 그럼 저는 제주를 못 가고, 예약해둔 게스트하우스를 못 가고, 예약해둔 렌터카를 못 타겠지요. 그리고!!!!다다다다다다......음.... 생각해보니 그게 전부네요. 하루 뒤로 비행기랑 게스트하우스랑 렌터카만 옮기면 되는 일이었어요. (사실 그것이 가장 귀찮아서 그랬던 것 같기도...;;) 만에 하나 다행히 비행기는 떴지만, 휴가 내내 비가 온다면?!! 그럼 뭐 우산을 가져가면 되는 거죠. 비 오는 제주도 운치 있으니까요~아.. 이러면 될걸 저는 왜 무슨 걱정을 이렇게 한거죠...;; 또르르. 그래서 예약해둔 게스트하우스 사장님께 연락을 드렸습니다. 그래서 사장님께 "비행기가 안 뜨면 어쩌죠? 그럼 다른 날 가도 되나요?? 지금 날씨는 어떤가요???"라고 물었더니, 친절하신 사장님께서는 지금 제주에는 비가 한 방울도 오지 않았으며, 혹시라도 비가 오면 다른 날 와도 되니 걱정 말라고 하시더라고요. 그제야 안심이 되더라고요. 다행히도 비가 오지 않았고 비행기는 예정대로 떴답니다!! 그래서 저는 신나게 서울을 떠날 수 있었습니다. 야호.서울 안녕~ 무지개가 떴어요! 와! 와!그렇게 무사히 서울을 떠나 제주에 도착했습니다. 이번 여행은 아무 계획 없이 혼자 돌아다니는 것이 저의 계획이었기 때문에 첫날 묵었던 숙소와 가장 가까운 독립 책방을 검색해서 가보기로 했지요. 그렇게 도착한 첫 번째 서점은 바로~ 예쁜 의자들이 저를 반겨줬던 '이듬해 봄' 책방이었어요. 언제 태풍이 왔냐는 듯 쨍쨍한 날씨가 사진에서도 느껴지시나요? 저는 왜 고민을 했던 걸까요.... 하하하;;예쁜 마당을 지나 문을 열고 안으로 들어가니 친근한 마루와 책들, 그리고 사장님께서 저를 반겨주시더라고요. 게다가 친절한 사장님께서는 음료를 파는 곳이 아닌데도 불구하고, 더운 날씨에 시원하게 마시면서 천천히 둘러보라고 차가운 녹차를 주셨는데요. 정말 감사했어요. :-) 덕분에 저는 자리를 잡고 앉아서 책들을 읽어보기 시작했습니다.공간이 참 예쁘죠?그러다 제 손에 잡힌 책이 있었습니다. 역시 직업이 직업인지라 어딜 가나 심리학 책들이 가장 먼저 눈에 띄더라고요. >_<  책을 고른 저는 조용히 앉아서 천천히 읽기 시작했습니다. '불안이라는 자극'이라는 책은 30년간 6만 시간 이상 심리치료에 종사한 크리스 코트먼과 4만 시간 넘게 심리치료를 수행한 해롤드 시니츠키의 책으로 불안은 내 삶을 더 나은 것으로 만드는 에너지라고 정의하며 불안을 극복하는 방법을 사례와 함께 보여주는 책인데요. 제가 스트레스를 원동력으로 삼아 자신을 변화시킬 수 있다고 믿는 것과 같은 선상에 있는 책이라 무한 공감하며 책에 빠져들어갔습니다. (제가 돈주고 사서 적는 리뷰랍니다~)이 책의 126페이지를 펼치면 이와 같은 질문이 나옵니다.--------------------------------------일어날 수 있는 최악의 상황이 뭐죠?--------------------------------------막연하게 걱정을 하건 구체적으로 두려워하건 불안에 쉽게 빠지는 성향이 있는 사람은 이 질문에 대답하는 것이 중요하다고 하는데요. 왠지 그 질문을 보자마자 제주를 떠나기 전의 저에게 던지는 질문처럼 느껴지는 건 저의 착각이었을까요. 하하;;불안이 온다.한 단계 더 성장하라는 신호다!사실 우린 일어나지도 않을 일들을 걱정하고 또 걱정하느라 소중한 시간을 허비하는 경우가 참 많습니다. 그렇지만 걱정스러운 마음이 드는데, 왜 바보같이 걱정을 하냐고 다그친다고 해서 걱정이 사라지는 것이 아니라는 것도 잘 알고 있습니다. 그럴 땐 말이죠. 왜 불안해하냐고 바보 같다고 자책하지 말고, 나는 불안하지 않다고 회피하거나 무시하지 말고, 불안해하는 마음을 인정해주세요. 내 마음이 불안한 데에는 다 이유가 있으니까요.내가 중요하게 생각하는 것을 거부당했을 때 화가 나듯, 내가 중요하게 생각하는 것이 위협당하는 순간 불안이 옵니다. 즉, 내가 마음을 쓰지 않는다면, 불안 또한 생기지 않는다는 것입니다. 이 책의 저자는 불안이 중요한 이유를 이렇게 설명합니다. 불안을 역추적해서 자신이 마음을 썼던 투자와 불안하게 만드는 위협을 발견할 수 있으면 평소 불안을 유발하는 상황과 관계에 대해 다르게 생각하고 대처하는 법을 배울 수 있기 때문이라고 말입니다. 어렵게 썼지만, 불안이나 분노와 같이 나를 힘들게 하는 감정들을 따라가다 보면 내가 중요하게 생각하는 것을 찾을 수 있다는 이야기입니다.불안이라는 감정이 내게 올 땐, 왜 왔느냐고 다그치지말고, 얼른 가버리라고 몰아치지말고, 어떤 이야기를 하려고 나에게 온 것인지 불안이 하는 말에 귀 기울여 보세요. 그럼 불안은 분명 당신에게 답을 줄 것입니다.아.. 지금 내가 불안해하고 있구나..괜찮아. 불안할 수도 있지. 그럼 그렇고 말고.그런데 왜 불안한 마음이 들었을까.무엇이 나를 두렵게 만들었을까.  내가 지금 생각하는 불안한 일들이 실제로 일어난다면 어떻게 될까.내게 일어날 수 있는 최악의 상황은 무엇일까.무엇을 채워야 이 불안이 사라질 수 있을까.지금 나에게 필요한 것은 무엇일까.사실 삶에서 겪는 문제들은 대부분 바꿀 수 있는 일과 불가피하게 받아들여야 하는 일들의 조합입니다. 바꿀 수 없고, 고칠 수 없고, 내 뜻대로 할 수 없는 일들은 깨끗이 내려놓아야 합니다. 그러나 역시 말이 쉽지, 실제로 실천하기는 너무나 어려운 일이죠.. 그래서 저는 매달 사람들과 분노캔들을 태우며 마음을 나누는 모임을 진행합니다.더운 여름 마음 속까지 시원해지는 분노캔들 모임자신의 분노를 가득 담아서 분노캔들을 만들고 태우기 전에, 자신의 스트레스를 스트레스 포스트잇에 전부 적은 후, 내가 해결할 수 있는 스트레스와 해결할 수 없는 스트레스로 구분하는 시간을 갖는데요. 머릿속에서만 맴돌던 고민들을 시각화하는 과정을 통해서 죽을 것 같이 힘들었던 일들이 사실은 그렇게 심각한 것이 아니었구나라는 사실을 깨닫게 되는 등 자신에 대해서 미처 알지 못했던 새로운 것들을 발견하게 됩니다.  그렇게 자신의 스트레스를 인지하고 나면, 내가 해결할 수 있는 스트레스들 중에서 다음 일주일 동안 해결하고 싶은 스트레스를 고릅니다. 그리고 불을 끄고 분노캔들만 켠 뒤 이야기를 나누며 내 일처럼 고민하며 해결책을 함께 나누지요. 그러다보니 분노캔들 모임을 할 때는 유난히 눈물을 흘리며 자신의 감정을 드러내는 분들을 많이 만나게 됩니다. 함께 울고 함께 토닥거리는 시간이 얼마나 큰 위로가 되는지는 모릅니다. 그래서 저도 모임날이 항상 기다려진답니다.지금 당신의 마음속에 불안이 자리 잡고 있다면그 답 또한 당신 마음속에 있습니다. 지금의 불안으로 인해 일어날 수 있는 최악의 상황을 상상해보세요. 그리고 지금 내가 생각하는 불안한 일들이 실제로 일어난다면 어떻게 될지 하나하나 적어보세요. 어떤 일을 상상하던 그것은 그대로 이루어지지 않을거랍니다. 내 상상이 틀렸다는 것을 직접 경험해보세요. 그리고 어떤 상황이 오더라도 당신이 헤쳐나갈 수 있는 힘이 있다는 것을 믿으세요. 당신은 당신이 생각하는 것보다 더 강한 사람입니다.저는 한강에 가서 강물이 흐르는 걸 보는 걸 참 좋아합니다. 흘러가는 물을 하염없이 보다 보면 내 고민도 저렇게 흘러가겠지 싶어서 마음이 편안해지거든요. 요즘은 자주 가지 못해서 안타까운 마음에, 제주에 갔을 때 바다를 담아왔는데요. 당신 마음에도 평안이 깃들기를 바라며 제주 바다를 선물합니다. 당신의 고민도 제 고민도 모두 다 흘러갈 거예요. PEACE!스트레스컴퍼니의 모든 상품은 스트레스컴퍼니샵에서 구매 가능합니다.매달 마음을 나누는 모임을 진행합니다. 8월 모임 안내 링크 ⓒ스트레스컴퍼니 - 무단 전재-재배포 금지 #스트레스컴퍼니 #심리스타트업 #스트레스관리 #서비스소개 #제품소개
조회수 2996

14. 어니스트펀드 로고 제작 스토리

얼마 전 ‘어.바.시’에서 어니스트 팀에게 어니스트펀드 로고 제작 스토리와 디자이너의 프로젝트 진행과정에 대해서 들려드렸다. 디자인에 관심이 많은 몇몇 팀원에게는 어니스트펀드 로고의 의미에 대해서 알려드린 적이 있지만, 팀 전체에게 설명할 기회가 없었다. 그래서 이번 어.바.시를 통해 로고의 정확한 의미를 설명하고 우리의 본질이 무엇인지 한 번 더 되짚어보는 시간을 가졌다.‘어.바.시’는 한국형 TED라고 불리는 ‘세.바.시(세상을 바꾸는 시간)’에서 따온 이름이다. 하지만 나는 어.바.시를 ‘어니스트하게 바뀌는 시간’으로 새롭게 풀어내고 나의 생각을 정직하게 이야기할 수 있는 자리로 만들었다. 어.바.시에 대한 설명을 간단하게 덧붙이자면 ‘개인과 팀의 성장을 위해 개인이 알고 있는 지식을 공유하는 자리’로, 짧게는 매주에 한 번 씩 팀원들이 돌아가며 어.바.시를 빛내주고 있다.<어니스트펀드의 가장 핫한 공간 agora에서 열린 어.바.시>어니스트펀드가 세상에 나타나기 전, 우리는 무수히 많은 고민을 하고 또 했다.“우리가 만들고 싶은 브랜드는 어떤 모습일까?”“우리가 가장 잘할 수 있는 본질에 집중하자!”그렇게 브랜드의 본질이 되는 ‘정직’이라는 키워드가 수면 위로 올라왔고, 우리는 ‘어니스트펀드’라는 본질에 집중하지 않을래야 않을 수 없는 브랜드 네이밍으로 출발선 너머에 발을 내딛었다.내딛은 첫 발이 브랜드 네이밍이라면 다음으로 내딛을 발은 브랜드의 얼굴인 로고 디자인일 터.<루피가 염원하는 프라다(좌)와 우버(우)의 이미지>“프라다같이 고급스럽고 세련된 느낌이면서 동시에 우버처럼 모던하고 간결한 이미지가 좋겠다!” 루피(서상훈 대표 영어 이름)는 정직(Honest)이라는 키워드 하나만으로 로고 디자인이 어려울까 봐 어마어마한 도움(?)말을 건네 왔다.바를 정(正)자를 고급스럽고 세련되게 획을 그어 모던하고 간결한 이미지의 로고를 디자인하려다가 참았다.난감했다. 정직이라는 추상의 끝판 키워드와 어니스트펀드(HonestFund)의 짧지 않은 브랜드명을 어떻게 하면 잘 풀어낼 수 있을까…1. 활용도를 고려하다멋진 로고를 기대하며 나를 바라보던 팀원들의 눈빛이 아직도 선하다. 그 눈빛들을 저버릴 수 없기에 나는 고민하고 또 고민했다.우선 어니스트펀드라는 브랜드가 어떻게 운영될지 생각해보았다. P2P금융의 핵심은 ‘온라인 플랫폼’이다. 거품 없는 효율적인 금융시스템을 만들기 위해서는 온라인 플랫폼이 정답이다. 그렇다면 고객들과의 소통이 대부분 온라인상에서 이뤄질 텐데, 각기 다른 온라인 환경(ex. 브런치, 페이스북, 자사 웹사이트 등)에 적용할 수 있는 로고가 필요하겠다는 생각이 들었다.그리고 어니스트펀드는  두세 글자의 간편한 브랜드명이 아니기에 한눈에 어니스트펀드를 전달할 수 있는 상징적인 무언가가 필요했다. 그래서 시의적절하게 사용 가능함과 동시에 상징적인 의미를 담을 수 있는 심볼을 가진 시그니처 타입(Signature Type)을 선택했다.<심볼과 로고타입, 시그니처 타입에 대한 설명>2. 심볼(Symbol)에 의미를 담다HonestFund의 약자인 HF를 활용해 심볼을 디자인했다. 앞서 말했던 것처럼 우리의 본질이 너무 추상적이어서 이미지화시키기 쉽지 않을뿐더러, 비교적 긴 브랜드명(대부분의 게임에서도 여섯 글자까지 ID길이를 제한하지 않던가…!)이기에 줄여서 표현할 수 있는 약자가 필요했다. HF도 H와 F의 대소문자 조합을 어떻게 하느냐에 따라 각기 다른 스토리로 심볼을 풀어낼 수 있다.<핀터레스트에 HF logo를 검색했을 뿐인데… 이렇게 다양한 로고가 존재하다니…!>HF, hf, Hf 정도로 추려내고 어떤 스토리를 심볼에 담을까 고민했다. 우리가 하고 싶은 이야기는 무궁무진했지만 간결하고 직관적인 스토리로 압축해야 했다. 가령 우리가 무슨 일을 하려는 지 1분 내의 짧고 굵은 설명이 필요한 것처럼 말이다. 새로운 중・저금리 시장, 대출자와 투자자의 효과적인 연결, 혁신적인 기술 바탕의 플랫폼… 이것들을 정직이라는 본질로 이뤄내는 것이 우리 스토리 핵심이다.2-1. 크리에이티브한 여정HF, hf, Hf를 그리고 또 그렸다. 스케치를 보자니 이것들이 알파벳인지 외계어인지 알아볼 수 없을 정도로 춤을 추고 있었다.필자는 극심한 창조활동을 하거나 철야를 하면 방언이 터지는 버릇이 있다. 이 상황을 즐기지 않으면 답이 없다는 것을 본능적으로 느끼는 것인지, 체력적으로는 고되지만 이 순간을 즐기려고 노력하는 아우성인 듯하다. 마치 어린아이들에게 그림을 그리며 설명하듯 hf를 그리며 우리의 브랜드 스토리를 중얼거렸다.< 아 지난 날 의식의 흐름이여… Adios…!>그러다가 거짓말처럼 뇌리에 스쳐 지나간 스케치가 있었는데 그게 바로 지금 로고의 초안이 되리라고 상상이나 했겠는가…2-2. Story Visualizationhf에 새로운 중저금리 시장에 혁신적인 기술을 바탕으로 대출자와 투자자를 효과적으로 연결해준다는 스토리가 담긴다면 어떨 것 같은가? 저 가늘고 작은 소문자 2개에 묵직한 스토리를 담아낸 다는 자체가 과해 보일 수 있지만, 너무나 완벽하고 깔끔하게 맞아떨어졌다. 중얼거리며 한 낙서(?)가 로고의 결정적인 키 비주얼(Key visual)을 안겨준 셈이다.2-3. hf심볼에 담긴 의미h의 세로획은 대출시장 범위를 상징한다. 위로 올라갈수록 고금리 시장을 의미하며 밑으로 내려올수록 저금리 시장을 의미한다. 어니스트펀드는 대출시장의 거품을 제거하여 중・저금리시장을 선도하기 위한 서비스이기에 비교적 밑에 포지셔닝된다.정직한 중・저금리시장을 만들기 위해서는 우량 대출자 모집부터가 시작이다. 대출자를 의미하는 ‘하단의 점’은 곧 어니스트펀드 서비스의 출발점을 의미한다. ‘상단의 점’은 투자자를 의미하는데, 하단의 점이 상단의 점까지 이어지면서 ‘대출자에게는 더 낮은 금리(Low point)를, 투자자에게는 더 높은 수익률(High point)을 제공’한다는 스토리를 그려낸다.f의 가로획은 대출자와 투자자가 연결되는 스토리 위에 위치하는데 이것이 바로 ‘어니스트펀드 플랫폼’을 의미한다.대출자와 투자자를 연결하고 금리의 거품을 제거하기 위해서는 비즈니스 모델이 필요하다. 어니스트펀드는 혁신적인 기술력을 바탕으로 금융시스템을 변화시켜 나갈 금융 플랫폼이다.3. 보도니(Bodoni)로 쓴 HonestFund< 보도니 서체는 ‘보그(VOGUE)’ 잡지 타이틀 서체로도 유명하다. >보도니 서체는 학부시절 디자인사 수업시간에 처음 알게 됐다. 보도니는 대표적인 모던 스타일 서체로 ‘가로 획과 세로획의 대비가 뚜렷한 매력적인 서체’라는 정도만 기억하고 있었다. (‘보도니’는 영어 서체의 이름이다. 흔히 알고 있는 맑은고딕, 나눔고딕처럼 ‘맑은’, ‘나눔’과 같은 서체의 이름이다.)< 수직선과 수평선의 조화가 아름다운 보도니로 쓴 어니스트펀드 >HonestFund 로고타입(위 그림에서 설명했듯이 로고 구성에 있어서 hf가 심볼이라 한다면, HonestFund는 로고타입이라고 한다.)에 쓰일 서체는 어떤 것이 좋을까 고민하다가, 수평・수직의 조화가 어니스트펀드의 ‘정직함’을 함의할 수 있지 않을까 하여 보도니 서체에 대해 조금 더 자세히 알아보았다.3-1. 보도니와 디돈양식(Didone Style)보도니 서체에 대해 설명할 때 크게 강조되는 부분이 두 가지가 있다. 하나는 앞에서 간단하게 언급한 ‘모던스타일’, 그리고 다른 하나는 ‘디돈양식’이다. 모던스타일(Modern Style)은 가로・세로 획의 선 굵기가 강한 대비를 이루고, 기존의 펜글씨와 명확한 차이점을 나타내는 현대적 서체 양식을 말한다.< 보도니와 흡사한 디도(Didot) 서체(좌), 그리고 활자를 찍어내는 모습(우) >디돈양식(Didone Style)은 대표 서체인 디도(Didot)와 보도니를 결합한 이름이다. 18세기 수학적 형태와 비례미를 반영하여 완성한 ‘킹스로만체(King’s Roman)’를 기본으로 삼은 양식으로, 기존의 서체들보다 기하학적이고 수학적 원리를 훨씬 더 끌어낸 서체가 바로 보도니다. 이것이 가능했던 이유는 질 좋은 종이 개발과 활자 조각기의 정교화, 인쇄용 잉크의 고급화 등 인쇄술 발달로 얻어낸 결과이기 때문이다.3-2. 보도니가 가진 역사와 정신을 취하다< 글자 획 끝의 유무를 가지고 산 세리프체(위)와 세리프체(아래)를 구분한다. >보도니 서체를 알아가면서 우리가 추구하는 브랜드 방향성과 맞닿아있는 부분이 많다는 것을 느낄 수 있었다.세리프체(명조체)의 클래식한 아름다움과 산세리프체(고딕체)의 군더더기 없는 깔끔함이 동시에 느껴지는 서체로 유명한 보도니는 기존 금융권들이 가지고 있는 묵직함과 핀테크 기업의 심플한 매력을 동시에 담기에 충분한 서체다. 수학적 원리로 그려지는 보도니가 보여주는 정교한 이미지 또한 우리가 취해야 하는 정직과 맞닿아 있었다.< 수학적 원리를 바탕으로 그려지는 보도니 서체와 나란히 쓰일 수 있도록 심볼 디자인 역시 논리적으로 그려내기 위해 좋은 비율을 철저하게 구상했다. >보도니는 발전시킨 인쇄술로 타이포그래피 역사의 큰 획을 그었고, 어니스트펀드는 혁신적인 기술력을 바탕으로 금융시스템을 변화시킬 것이다. 어니스트펀드도 보도니처럼 혁신적인 기술로 금융계에 큰 획을 그을 것이다.4. 맺으며어니스트펀드는 혁신적인 플랫폼을 지향하기에 급변하는 ‘대 온라인시대’의 물살을 잘 타야 한다. 구글이 아이덴티티를 리뉴얼하여 발전시키 듯, 우리도 시의적절하게 브랜드를 조금씩 발전시켜 나갈 것이다. 훗날 로고의 형태에서는 초심으로 머릿속에 그려낸 어니스트펀드의 큰 그림이 보이지 않을지도 모르겠다.브랜드를 반으로 나눈다면  ‘변해도 되는 것’과 ‘변하지 말아야 할 것’으로 나눌 수 있다. 로고 디자인은 그 시대 사정에 맞게 변할 순 있지만, 우리가 만들고자 했던 새로운 중・저금리 시장, 그것을 혁신적인 기술로 선도하는 모습, 그리고 누구나 정직하고 싶지만 아무나 정직할 수 없다는 것을 알기에  우리가 직접 만들고자 한 ‘정직한 금융’은 변하지 말아야 할 모습이다.금융과 IT를 결합하여 기존의 대출·투자 경험을 혁신하는 P2P금융 스타트업, 어니스트펀드의 이야기가 연재될 팀 브런치에 많은 관심 부탁드립니다.어니스트펀드에 대해 더 알고 싶으시다면, 어니스트펀드 홈페이지를 방문해보세요.#어니스트펀드 #디자인 #로고 #로고디자인 #인사이트 #디자이너 #CI #CI제작 #성장 #후기
조회수 1291

"가만히 기다리고 있으면 아무 기회도 오지 않더라고요"

패스트파이브에서는 8천 명에 가까운 멤버가 일하고 있습니다. 멤버 중 많은 수가 기존에 없던 새로운 일을 만들어내는 스타트업에서 일하죠. 이미 만들어진 단단한 구조도, 머리 위를 가로막는 유리천장도 없는 스타트업 업계에는 자유롭게 자신의 꿈을 펼쳐나가는 여성 대표들이 많습니다. 오늘부터 Humans in FASTFIVE에서 시리즈물 연재를 시작합니다. 패스트파이브에서 열심히 일하는 여성 대표님들을 만나고 그들의 이야기를 들어보려고 합니다. 어떤 분들에게는 더욱 힘내라는 조언이 될 수도, 어떤 분들에게는 처음 만나는 롤모델이 될 수도 있을 다양한 이야기를 전하겠습니다. 첫 번째 인터뷰이는 ‘ARcomm’의 고시나 대표님입니다. 한국 IT 업계의 초창기부터 지금까지 꾸준히 일해오신 대표님은 담담하게 꾸준함의 힘을 보여주셨는데요, “우리는 오래 일할 사람들이니까” 지치지 않아야 한다는 대표님의 인터뷰를 함께 보시죠.  언젠가 ‘여성’ 대표의 이야기가 더는 특별하게 다가오지 않는 날까지, Humans of FASTFIVE를 응원해주세요!Q. 대표님 안녕하세요, ARcomm(이하 에이알컴)에 대해 간단한 소개 부탁드립니다. 에이알컴은 작년에 법인을 만들어 시작한 신생 기업입니다. 이름에서 짐작하셨을지 모르겠지만 AR, 즉 증강현실과 광고, 쇼핑을 접목해보자는 의도로 만든 회사입니다. 현재 데모가 나와서 영업과 동시에 IR을 준비하고 있습니다.예를 들어 설명하는 게 더 쉽겠네요. 네이버 메인에서 선글라스 광고를 누릅니다. 그리고 스마트폰 카메라에 접근을 허용해주면, 3D로 구현된 선글라스를 직접 착용한 듯한 화면이 나오죠. 여러 상품 옵션을 살펴볼 수 있고 얼굴형에 맞는 제품을 추천 받을 수도 있습니다. SNS에 공유해서 친구들에게 둘 중 뭘 살지 골라달라고 할 수도 있겠죠. 선글라스, 안경, 귀걸이, 목걸이, 시계 같은 액세서리의 경우 피팅을 해보고 가구나 인테리어 소품의 경우 공간에 직접 배치해볼 수 있어요. 소파를 배치해보거나 벽면에 액자를 걸어볼 수도 있을 거고요. 직접 오프라인 매장에 가지 않아도 모바일 기기만 있으면 온라인 상에서 더 나은 쇼핑 경험을 할 수 있게 될 겁니다.Q. 증강현실과 광고를 접목시킨 이유가 궁금합니다. 저는 원래 온라인 광고 분야에서 일을 계속해 왔는데, 한계가 느껴져서 앞으로 어떤 방향으로 가야 할 지 많이 생각해봤어요. 그 답이 증강현실이 될 수 있겠더라고요.  늘 마케팅에서 화두가 되는 고객의 경험을 얼마나 잘 브랜드, 상품과 연결시킬 수 있을 지에 대한 기술적인 답도 될 수 있을 것 같았고요.보통 증강현실이라고 하면 포켓몬고 같은 것을 많이들 생각하시는데요, 그보다 쉽고 보편적으로 많이 사용할 수 있는 서비스를 떠올려봤습니다. 에이알컴의 서비스는 웹(HTML5)으로 만들어져서 스마트폰만 있으면 별도의 앱 제작이나 다운로드 등을 거치지 않아도 누구나 쉽게 이용할 수 있죠. 또 패션 업계에서는 IT 기술이나 새로운 콘텐츠 등 새로운 것을 많이 시도해보는 편이에요. 모바일 쪽에서 워낙 잘 되는 분야이기도 하고요. 그래서 이 둘을 접목시키게 되었습니다.증강현실을 활용해 선글라스를 피팅해본 모습Q. 대표님께서는 야후코리아와 오버추어코리아, 크리테오코리아 등에서 일하신 것으로 알고 있습니다. 특히 크리테오 코리아에서는 대표를 역임하셨는데, 익숙한 곳을 떠나 창업을 결심하신 계기가 있나요? 제가 97년에 야후코리아 창업 멤버로 이 업계에서 일을 시작했으니까 한국의 포털 서비스와 온라인 광고 시장을 시작부터 봐온 셈이죠. 또 그때부터 늘 한국에 새로운 기술 기반의 서비스와 비지니스를 처음 소개하는 역할을 맡아왔어요. 새로운 기술 기반 사업을 소개하고, 시장을 만들고, 그 시장을 키우는 일에서 재미를 느끼며 계속 해왔고요.지금까지는 외국계 회사에서 일하면서 좋은 기술을 가진 업체와 한국 시장을 연결해왔다면 이제는 직접 해보고 싶다, 해보면 재미있겠다는 생각이 들어서 창업을 결심하게 되었죠.Q. 창업의 어려움이라면 어떤 게 있을까요?  사업하는 분이라면 다 느끼고 있겠지만 좋은 사람을 채용하고 유지하는 것이 가장 어려운 일이에요. 기존의 사업을 잘하고 있는 큰 기업은 직원을 뽑고 유지하는 게 비교적 쉬워요. 새로 창업을 하니까 사람 뽑는 게 훨씬 어렵더라고요. 업무에 맞는 능력있고 좋은 사람을 채용하고 그 사람들이 즐겁게 일할 수 있도록 해주어야 하니까요. 더구나 스타트업은 직원 개개인의 동기부여가 참 중요하잖아요. 그런 동기를 유지할 수 있도록 계속해서 회사의 비전을 보여주는 게 어렵죠. 현재 에이알컴에서는 저까지 포함해서 다섯 명이 함께 하고 있는데요, 개발, 기획, 디자인팀으로 구성되어 있습니다.  Q. 첫 창업을 하면서 여러모로 고민이 많으셨을 텐데요, 첫 사무실로 이곳 패스트파이브를 선택하신 이유가 있나요? 일단 스타트업의 입장에서는 고정 비용을 줄이는 게 중요하다고 생각했습니다. 또 패스트파이브는 위치가 굉장히 좋았고, 커뮤니티 매니저님들이 잘해주시는 점도 크게 작용했죠. 이곳에 들어오기 전에 바로 옆에 있는 다른 공유오피스도 둘러봤었는데 요청 사항이 있을 때마다 온라인으로 신청하고 피드백을 거치는 과정이 불편할 것 같더라고요. 반면 패스트파이브는 커뮤니티 매니저에게 바로 말할 수 있어서 훨씬 편하죠. Q. 에이알컴의 목표는 무엇인가요? 일단, 지금 개발하고 있는 서비스를 성공적으로 상품화하는 거죠. 그래서 우리 서비스를 이용하는 기업들에게 도움이 되고 싶습니다. 국내의 쇼핑, 커머스 광고 분야는 서비스 변화가 많은 곳입니다. 새로운 것을 시도하고 싶어도 인력, 기술력, 비용 등이 부담되죠. 바로 그런 부분을 저희가 도울 수 있다면 좋겠다고 생각합니다. 또 사용자들에게는 재미있고 즐거운 경험이 되었으면 하는 바람이 있어요. 이러한 과정에서 좋은 직원들을 더 채용해서 회사를 키워나가고 싶고요. 더 길게는 글로벌 기업으로 성장하고 싶네요.Q. 자신감이 대단하신데요, 이렇게 큰 목표를 세우신 근거로는 어떤 것들이 있을까요?AR은 현재 구글, 애플, 아마존 같은 기업들이 자원을 투자하고 있는 핵심 기술이거든요. 관련한 기술적 지원과 업데이트가 늘어나고 있으니 앞으로 훨씬 커질 수 있는 시장이라고 생각해요. 2020년까지 100조 정도로 시장 규모가 커질 거라는 예측도 있고요. 아직 AR 마켓 자체가 많이 알려지지 않았기 때문에 그러한 테크-자이언트들이 시장을 키우게 되면 관련 업체가 늘어나고 시장이 커질 겁니다. 더 많은 사람들이 써보고 피드백을 주고받다 보면 자연히 저희 회사도 발전할 거라고 봐요. 그리고 사실 저는 저희가 만들고 있는 이 서비스가 너무 재미있거든요. 일반 사용자 분들도 재미있게 쇼핑을 즐기실 수 있기를 바라고 있습니다.Q. 근 20년 동안 IT 업계에서 일해오셨는데, 여성이 적은 업계에서 일하면서 힘든 점은 없으셨나요? 또 그 어려움을 어떻게 극복하셨나요?IT 업계는 늘 기술이나 시장 변화가 많은 곳입니다. 그러니 늘 그러한 변화의 추세에 따라가는 게 힘들었죠. 하지만 저는 오히려 이러한 부분들이 여성에게 더 많은 기회를 준다고 생각합니다. 저는 그 동안 저만의 전문 지식을 쌓기 위해 부단히 노력했던 거 같아요. 늘 업계를 리딩하는 업체에서 일하면서 배운 것도 많이 있지만 더불어 해외 IT 신기술 동향이나 서비스 등을 늘 살펴보고, 새로운 분야의 분들도 꾸준히 만나 해당 분야의 인사이트를 들으며 나름의 경쟁력을 확보했던 것 같습니다. 사무실에서 포즈를 취한 고시나 대표Q. 대표님의 하루 일과가 궁금합니다.대개 오전에 팀과 미팅을 하면서 개발 진행 상황 등을 업데이트 하고, 오후에는 고객사나 업계 분들과 미팅을 하죠. 저희 직원들은 네트워킹 런치에 참여해서 다른 멤버들에게 개발 중인 서비스를 시연해보고 피드백을 받는 경우도 있더라고요. 이런 네트워킹 기회도 패스트파이브의 장점이겠네요.Q. 지치지 않고 오래 일하기 위한 다른 비결도 있으신가요? IT업계는 돌아가는 속도가 빨라서 힘들기도 하지만 훨씬 빠르게 성장하면서 많은 것을 배울 수 있고 이직 주기도 빠른 편이에요. 그래서 저는 책을 읽거나 여행을 자주 다니면서 개인적으로 충전을 했어요. 그 충전한 힘으로 다시 새로운 일을 시작했죠. 아무것도 하지 않고 고민만 하는 것보다는 뭐라도 하면서 고민하는 게 훨씬 나은 것 같아요. 모두 조금씩 도움이 되는 경험으로 남았거든요.Q. 마지막으로 업계 후배들에게 해주고 싶은 말이 있으신가요?본인이 하고 싶은 일을 하는 게 오래 일할 수 있는 길인 것 같아요. 100퍼센트 마음에 드는 일이 아니더라도 조금이라도 원하는 일에 가까운 것을 선택해보세요. 그 과정에서 성취를 쌓아올리다보면 도움이 될 겁니다. 본인이 정확하게 뭘 잘하는지, 뭘 하고 싶은지 모르는 경우도 많으니까 그 과정에서 자신의 장점을 찾을 수도 있고요. 자신이 원하는 곳으로 바로 갈 수도 있겠지만 여러 과정을 거쳐 가는 길도 있어요. 가만히 기다리고 있으면 아무 기회도 오지 않더라고요.때로는 적극적인 조언과 도움을 주지 않아도 존재 자체로 든든한 이들이 있습니다. 누군가에 비추어 나의 미래를 상상해볼 수 있다는 건 생각보다 큰 행운이죠. 자신의 자리에서 묵묵히, 그리고 열심히 일하고 계시는 고시나 대표님도 누군가에게 든든한 롤모델이 되어주실 것 같습니다. 그럼 저희는 다음 인터뷰로 돌아오겠습니다. 읽어주셔서 감사합니다! =) - 패스트파이브 마케팅팀 드림
조회수 1033

철학적으로 세상보기

사람은 기본적으로 선하니까자유롭게 두면 합리적인 판단과 이성적인 선택을 도출할 것이다라는 가정은 자본주의의 근간이 되었다고 생각한다.역으로,사람은 기본적으로 악하니까통제하지 않으면 욕심으로 인한 무질서와 이기적인 행동으로 흘러갈 것이다란 가정은 사회주의의 근간이 되었다고 본다.이건 내 개인적인 의견이니 귀담아듣지 말고 그냥 가벼이 읽길 권한다.물론 자본주의는 상업과 부의 집중에 의한 역사 흐름에서 탄생하였다.그리고 그에 반발하여 국가가 강력하게 개입하여 자원과 부를 분배를 주장하며 사회주의가 시작되었다.그 근간이 되는 철학이 성선설과 성악설이 아닐까?이렇듯이 사상이라던가,철학이라는 것은 학창 시절에는 이러한 학문이 왜 필요한지 의문이었는데머리가 굵어질수록세상에 끼치는 영향력이 크다는 점을새삼 느끼게 된다.어떠한 가치관과사상을 근간으로 세상을 보는가.철학적인 주관이 어디를 향하고 있느냐가선택의 기로에서 결정을 이끄는 기준을 만들어 준다.생명공학을 전공하면서,선천적으로 타고난 특질, 다시 말해유전자의 영향력이 꽤 크다는 점,반면에 환경에 의한 조정/개선/변화의 영향도 크다는 점을지겹도록 들어왔다.(쌍둥이 실험이라던가, 세대 유전 실험 등)여전히 논란이 많지만,태어나자마자 사람이 선하다, 악하다를 규정짓는 것은때로는 위험한 발상이다.사실 나는 선악설과 성선설에 동의하지 못한다.오히려, 성무 선악설(태어날 때는, 선과 악의 특질이 없다)에가깝다고 해야 하나?이러한 관점에서 나는 스타트업계에떠도는 몇 가지 주장에 대하여다른 의견을 제시하고자 한다.1. 창업가의 순혈주의를 경계하다.창업자에게는 그 고유의 피가 흐른다는 혈통적인 당위성을주장하는 몇몇 대표님들에게는 나의 경우, 반대 측에 속한 부류이다.리더의 자질은 타고난다기보다는 만들어지는 것이고,유전적이지 않다.세계사를 되짚어보면,왕족의 혈통이 계승하는 형태의 국가 사례를 들어타고난 왕의 자질, 혈통에 의한 능력 계승이라고표면적으로는 주장할 수도 있겠지만그 이전으로 거슬러 올라가면,개국이라는 것은 혈통에 의한 정통성이 아니라상황과 환경, 시대적 배경에 의하여정통성이 없는 사람들이정통성을 만들어가는 과정이 항상 있었다.조선 건국의 이성계가 왕족이 아니었고,신라의 초창기 왕들은 성이 달랐으며,후백제의 견훤이 그랬고,고려의 왕건이 그랬다.중국의 한나라 유방이 그랬고,삼국지에서는 유비를 제외한 손권, 조조가 그랬다.나라의 흥망성쇠를 보면,더욱 뚜렷하게 알 수 있다.그렇게 타고난 리더십이 있는 사람들이나라를 망쳐 놓고, 망국의 길을 걷는 걸 과연 유전적인 능력이라고 볼 수 있을까?오히려 생물학적인 유전의 영향이라기보다는부, 권력의 유전에 의한 영향이 더 크게 작용하였다고 본다."창업가는 다른 사람과 다른 피가 흘러요. 그래서 남들과 다를 수 있죠"헛소리다.다른 피가 흐르면 병원 가서 검사받아야지.창업가가 뭐라고 자기들만의 성을 쌓으면서마치 특권층인 마냥 차별화를 하는 걸까.태생적으로 리더라고 주장하고 싶은 건어떤 의도일까?오히려 창업가들은후천적으로 만들어지는 혁명가이고, 파괴자가 더 어울린다.이전의 것들을바꾸고, 없애고, 새롭게 만들고...그런 사람들이 원래부터 창업자라는 말에휘둘린다면 아이러니컬한 상황 아닌가.든든한 Back up의 힘보다대부분은 자수성가형으로 꿈을 갖는부류의 사람들이다.창업가는 절대로 태어나는 게 아니라 만들어진다.창업가는 그냥 어제 도서관에서 일상적으로 마주쳤던 우리 주변에 있었던 사람들이다.직장에서 평범하게 월급 받던 사람이기도 하고,학교에서 아등바등 조별과제에 스트레스받던 사람이기도 하다.더러는뭐에 푹 빠져있는 덕후였을 수도 있고,학창 시절에 빵셔틀 당하면서 존재감이 없었을 수도 있다.누구나 살아가면서 아이디어 하나 둘 이상은 가지고 있다.굳이 창업가가 아니더라도일상에서 혹은 잠자리에 들면서이런저런 미래를 그리다가"이거 하면 대박일 거 같아.""이런 거 누가 안 만드나?"하는 정도의 아이디어는 혈통 하고는 전혀 상관없이보통은 다 가지고 있는 상상이다.다만, 그것을 실현시킬 계획을 만들고,의지와 행동을 뒤따르게 하는 것의 차이가 있을 뿐.피가 다르거나 유전적인 리더 따위는 존재하지 않는다.2. 이분법을 경계하다.1) 두 사이에 많은 것이 있다.우리는 이분법이라는 교육의 틀에 익숙하다.민주주의와 공산주의,파란색과 빨간색,선과 악.그러나 세상은 두 가지로 나누어지지 않는다.그 사이에는 무수히 많은 다른 것들이 있다.민주주의와 공산주의 외에도 많은 세상,절대왕권의 왕조가 있기도 하고,허울만 존재하는 왕가와 실질적인 의회가 있는 형태도 있다.민주주의 안에도 여러 가지 형태의 민주주의가 존재한다.공산주의도 대를 이은 세습 공산주의가 있고, 공산당이 전권을 가지는 다른 형태도 존재한다.빛을 프리즘을 통해 바라보면,파란색과 빨간색 사이에는 무수히 많은 색이 나타난다.빨주노초파남보뿐만 아니라 그 사이사이에는 혼합된 여러 색상이 더 숨겨져 있다.선과 악도 마찬가지로기준에 따라서, 통념에 따라서,구분이 모호하거나 다양한 선악의 개념이 얽히고설킨다.식인 풍습을 악하다고 보는 관점과용사의 혼을 이어간다는 전통의 관점에서무엇이 선이고 악이라는 걸 규정할 수 있을까.(물론 나는 식인 풍습을 옹호하는 건 아니다. 관점의 상대성에 대한 예일뿐)2) 사실은 둘이 아니라 하나의 부재일 수 있다.어둠이라는 것이 존재할까?어둠은 빛의 부재 상황이지 어둠이라는 것 자체가 존재하는 것은 아니다.공포라는 것은 존재할까?자신감, 대응방안, 대담함의 부재 상황이지 공포라는 것 자체가 존재하는 것은 아니다.절대온도로 최저온은 -273도이다. 그 이하로는 떨어질 수 없다.왜냐면 냉(차가움)은 그 자체로 존재하지 않는 것이니까.열의 부재 상태가 차가움이다.열이 없기 때문에 차가움이라는 현상이 나타나는 것이지차가움이라는 것이 존재하는 것은 아니다.반면에 열이 더해지는 상황은 한계가 없다.섭씨 2000~3000도 이상으로 1억 도 플라스마 상태까지열은 더 해질수록 더 강렬해지고, 강도가 세진다.악도 마찬가지다.악이라는 것은 선의 부재이다.악이 존재하는 것이 아니라 선이 없기에 악이라는 현상이 나타나는 것이다.이처럼 세상은 이분법이 아닌데도우리가 바라보는 눈이 이분법으로 인지하거나생각의 패턴/프레임이 이분법인 경우가 많다.3) 스타트업의 이분법성공한 대표와 실패한 대표라는 타이틀이가장 흔한 오류이다.누구도 성공했다고 단정 할 수없고,누구도 실패했다고 예단할 수 없다.중간에 고군분투하고 있는 과정일 뿐!재창업/재기하여 이전보다더 빠르게, 더 크게 사업을 이끄는 대표도 있다.처음에 화려하게 등장했지만,어느새 소리 소문 없이 퇴장한 대표도 있다.그리고 그 사이에는 더 다양한 스펙트럼의 대표들이 존재하고 있다.6개월 전이었나?후배 녀석이 창업 아이템이 있다고 하더라.그래서 만났는데...유아용 제품인데, 비록 내가 그쪽 전문가도 아니지만,애 아빠 입장에서는 하나쯤은 사고 싶을 것 같더라.그리고 바빠서 잊고 지냈는데오래간만에 안부 연락이 와서 물어보니지금은 중단하였다고 하더라.이유를 물어보니,그 아이디어를 스케치하고,계획서를 만들어 들고 다녔는데"그거는 금형이 필요해서 돈이 많이 들어요""일회용으로 쓸 수 있는 제품이 있는데 굳이...""그쪽으로 경력도 없고, 기술도 없는데...."이런 의견들을 자주 들었고,아니다 싶어서 중단하였다.틀린 이야기라기보다는...일부는 공감되는 이야기이다.그렇다고 형편없는 아이템이라고 단정 지을 수 없다.시제품이나 아이디어 수준의아이템에 대해서도 왈가왈부가 많은데'이건 될 것 같아','영 아닌데...'라는 평가에 대해 너무 빠지지 마라.특히, 무슨 오디션처럼 심사받는 자리라던가,멘토를 받는 자리에서 일희일비하지 말라는 거다. 진짜 검증은고객이 가치에 대한 지불 행위가발생할 때 검증이 되는 것이다.아직 판매할 수준에 이르지 못 한 아이템을 가지고탁상공론해 봤자 시간만 흐르고 있는 꼴이다.단지 없는 것은 고객의 실제 반응이다.그것이 없기에 자문받고, 멘토링 받는다.전문가 또는 타인의 의견을 듣는 것이나쁘다는 것은 아니다.거기에만 매몰되어 방황하고, 헤맬까 봐하는 소리다.근데 그보다 더 효과적인 방법은실제로 구매는 아니더라도 많은 고객을 만나보는 것이다.심사역/자문/멘토를 만나는 횟수보다차라리 실고객이 될 사람들에게의견을 묻고, 피드백을 받는 게 더 낫다.그 후배의 경우도,먼저 찾아갔어야 하는 사람은멘토나 전문가가 아니라나와 같은 애아빠/애엄마들이고,실구매자가 될 수 있는 예비 고객들이었다.3. 창업가의 윤리/도덕적 책임자리가 사람을 만든다라는 말과원래 그런 사람이었다는 말!없었을 때는 참 멋져 보였는데어느 정도 인정을 받는 자리에 올라가더니추태와 일탈과 배신감을 주는 사람들이 있다.그 자리에 올라가서 사람이 변한 걸까?아니면,그 자리에 올라가니 숨겨졌던 본성이 나온 걸까?나는 그 사람의 가치 기준이 딱 거기까지였다고 본다.그 정도의 자리에 위치했을 때, 유혹과 욕심에 흔들리는 정도 수준의 가치를 가지고 있었던 사람이었다.만약 내가 사업하는 목적과 가치관이더 크고, 더 높은 뜻에 있었다면...더 스스로를 돌아보고, 절제하고, 겸손했을 텐데이미 자신의 그릇을 넘은 그 이상을 가져버려 그랬을 수도 있다.본성이 드러난 거든,유혹에 넘어간 거든...중요한 것은 그러한 행동들이많은 사람들을 실망시키고,배신감을 준다는 사실이고.도덕적 해이, 윤리의식 부족,황금만능주의에 아이콘이 되어버려전체 창업자들에 대한 인식에영향을 준다는 점이다.올바른 사람들이다수가 되는 세상이올곧은 세상이고,상식적인 사람들이주류를 이루는 세상이정상적인 세상이다.창업자들의 세계에도세상을 바꿀 의지와,정의를 추구하는 정신,투명한 윤리의식을 갖춘 분들이모범사례로 자주 등장하길 바란다.나 역시 부족하지만 하루에 조금씩이나마 더 나은 사람이 되도록 나 자신을 더 검증하고,더 노력하겠다. 사실 나는 철학이 정확하게 어떤 건지,무엇인지는 알지 못한다.그냥 어렴풋이 삶 속에서느낀 그대로 말하자면,기준이고,시각이고,고뇌가 아닐까?멀리서 소크라테스를 찾거나스피노자, 데카르트, 니체, 쇼펜하우어,노자, 장자, 루소처럼 기라성 같은 위대한 철학자들의사상을 연구하지 않더라도우리는 우리의 회사 안에서우리만의 철학을 만들어가는늘 철학자이다.
조회수 790

아마존이 판매자인 당신에게 선사한 '황금같은 기회'

안녕하세요 대한민국 셀러들의 성공적인 아마존 진출을 도와주는 컨설팅 회사이자 대행사인 컨택틱의 이이삭 대표입니다.해외 진출을 꿈꾸는 이들은 아마존이라는 시장을 가장 먼저 떠올릴 것입니다. 이미 수년 전부터 기하급수적으로 성장을 하여 전 세계적으로 가장 큰 전자상거래 플랫폼이 된 아마존은 모든 글로벌셀러들이 입점하고 싶어 하는 플랫폼이 되었습니다. 이 글을 읽고 있는 여러분 또한 아마존에 입점할 의사가 있거나 이미 아마존에 입점하여 판매를 진행하고 있는 분들일 가능성이 높다고 생각합니다. 하지만 아마존의 진정한 의미와 가치를 알고 계십니까? 아마존이 있기 때문에, 달리 말해 아마존이 만약 없었다면 저희 글로벌 셀러들은 어떤 어렵고 험난한 방식으로 해외 진출을 해야 했을지 참 많은 분들이 간과하고 있는 것 같습니다. 이번 글은 아마존에 대한 실전 팁 또는 노하우가 아닌, 아마존이라는 시장이 글로벌 셀러인 우리에게 얼마나 귀한 ‘황금 같은 기회’를 제공한 것인지 하나씩 언급하며 설명드리고자 합니다.첫 번째로, 아마존이 없었다면 내 상품이 속한 시장이 과연 어떤 시장인지 조사하는 것이 매우 어려웠을 겁니다. 아마존은 이미 거의 전 세계에 존재하는 그 어떤 상품이라고 하더라도 판매 중입니다. 여러분들이 팔고자 하는 상품 또한 아마존에 이미 형성되어있을 가능성이 매우 높습니다. 아마존을 통해 이미 형성된 특정 세부 시장을 조사함으로써 여러분들은 ‘도박’이 아닌 ‘확신’을 가지고 해외 진출을 할 수 있게 된 것입니다. 아마존상에서 해당 특정 시장에 대한 조사를 통해 여러분들의 상품에 대한 ‘수요’와 ‘공급’을 알 수 있습니다. 아마존이 없었다면 어떻게 내 상품에 대한 시장성 및 경쟁력을 파악할 수 있었을까요? 통계? 오프라인 전시회? 페이스북? 오프라인으로는 제한과 제약이 너무 많습니다. 내 상품에 대한 소비자들의 관심도 (수요), 나와 직접적으로 경쟁하고 있는 브랜드 및 상품들 (공급), 그리고 그런 경쟁사들이 현재 공급하고 있는 현재 상황에서 고객들의 만족도 (틈새) 등을 전문 시장 조사 기업에게 의뢰하지 않는 이상 쉽게 얻을 수 있는 자료가 아닙니다. 그럼 오프라인이 아니라 온라인으로 조사를 한다고 해서 다르다고 생각하면 큰 오산입니다. 페이스북 구글 등을 통해서 시장 조사를 한다고 해서 과연 의미가 있을까요? 페이스북은 본래 SNS 플랫폼입니다. 시장 조사를 한다고 하면 어느 정도 할 수 있겠지만 애초에 만족할만한 조사 결과가 나오는 것 자체가 무리입니다. 구글도 구매 베이스의 검색 엔진이 아니라 순수 정보성 플랫폼입니다. 이런 수단을 통해 시장을 조사하는 것은 잘못된 추론을 할 수 있는 가능성을 가지고 있습니다. 그렇다면 아마존은 어떤가요? 아마존이야말로 사람들이 애초에 사이트에 접속한 순간부터 ‘구매’를 하겠다는 의지를 가지고 오는 사람들의 집합소입니다. 그런 사이트에서 내 상품 및 내 상품이 속한 시장에 대한 데이터를 수집할 수 있다면 그것보다 정확한 결과가 따로 없다는 것은 당연한 사실입니다.두 번째로, 아마존이 없었다면 내 상품에 관심 가질 만한 사람들을 직접 발 벗고 찾아야 했을 겁니다. 아마존은 모든 포커스를 전 세계 고객들을 아마존이라는 플랫폼으로 집중시켰습니다. 고객은 아마존이라는 사이트에 접속하면 본인이 원하는 상품을 손쉽게 구할 수 있고, FBA라는 수단을 통해 심지어 집 앞까지 수월하게 배송을 요청할 수 있습니다. 아마존의 시장 특성상 고객에게 ‘최저가’의 상품을 제공할 뿐만 아니라, 뛰어난 알고리즘과 카탈로그 정리 방식으로, 같은 상품은 1개의 리스팅만 존재하게끔 파격적이고 혁신적인 시스템을 만들었습니다. 이러한 특성을 고려하면 전 세계의 소비자들이 아마존으로 몰리는 것은 어찌 보면 당연한 것입니다. 이런 상황 속에서, 셀러는 단지 소정의 판매수수료를 지불함으로써 이렇게 지상 최고의 플랫폼에 판매할 권한이 생기게 됩니다. 불특정 다수에게 내 상품을 홍보하거나, 인터넷상으로 마케팅 비용을 막대하게 쏟아붓지 않아도, 아마존이라는 플랫폼 자체가 ‘고객을 모아놓았기’ 때문에 단순히 입점하는 것만으로도 판매자는 엄청난 판매 기회를 얻게 되는 것이나 다름없습니다.세 번째로, 아마존은 기업이 브랜딩 할 기회를 제공했습니다. 아마존은 단순히 상품을 판매하는 플랫폼을 넘어, ‘브랜드 자체가 성장할 수 있도록’ 기반을 마련했습니다. 다른 오픈마켓 사이트들과 달리, 아마존은 브랜드 오너들에게 큰 혜택을 제공합니다. 상세 설명을 부각시키게 해주기도 하며, 동영상을 첨부할 수 있게도 해주며, 아마존 안에 브랜드 스토어 (미니 홈페이지)를 만들 수 있게 하는 등, 단순히 많은 제품을 판매하는 것에만 포커스를 두는 게 아니라, 각 브랜드가 성장할 수 있게 하는 일에도 일조하고 있습니다. 실제로 완전히 신생 브랜드임에도 불구하고, 아마존에서 제품에 대한 반응이 좋아 대규모 브랜드로 성장한 사례들이 굉장히 많습니다. 아마존을 통한 브랜딩은 즉, ‘거품 없는, 정말 메리트 있는, 좋은 상품을 취급하는 브랜드들이 아마존 소비자들의 실질적인 구매 경험과 상품 사용 검증을 통해 성장하는 것’이라고 할 수 있습니다. 아마존 소비자들은 ‘좋은 상품’을 구매하고 싶어 합니다. 좋은 상품을 제공할 수 있다면, 그게 비록 신생 브랜드라고 하더라도 아마존은 그들에게 성장할 기회를 제공하는 플랫폼입니다.아마존이 판매자들에게 주는 황금 같은 기회는 위에 언급한 세 가지 외에도 셀 수도 없이 많습니다. 아마존은 완벽한 중개인으로서, 소비자들에게는 최고의 쇼핑 경험을, 판매자들에게는 최대의 판매 기회를 제공하는 플랫폼입니다. 이런 특성을 제대로 이해한 자들만이 아마존에 대한 감사함을 진심으로 느낄 것이며, 아마존이 제공하는 기회를 십분 활용하여 사업을 확장할 수 있을 것입니다. 컨택틱의 모든 교육은 파트너인 글로벌셀러창업연구소와 접수하고 진행합니다. 교육 신청은 아래 링크나 글로벌셀러창업연구소의 홈페이지를 통해 접수 가능합니다.컨택틱의 모든 교육은 파트너인 글로벌셀러창업연구소와 접수하고 진행합니다. 교육 신청은 아래 링크나 글로벌셀러창업연구소의 홈페이지를 통해 접수 가능합니다.오프라인 아마존 입문 과정오프라인 아마존 기초/심화 과정온라인 아마존 입문 과정그럼 오늘도 즐거운 글로벌 셀링 되세요!감사합니다.컨택틱서울특별시 서초구 서초대로 356, 606호(서초동, 서초지웰타워)대표 전화: 02-538-3939이메일: [email protected]홈페이지: https://www.kontactic.com네이버 블로그: https://blog.naver.com/kontactic카카오 브런치: https://brunch.co.kr/@allaboutamazon유튜브 채널: https://www.youtube.com/c/kontactic
조회수 1125

안드로이드 클라이언트 Reflection 극복기

비트윈 팀은 비트윈 안드로이드 클라이언트(이하 안드로이드 클라이언트)를 가볍고 반응성 좋은 애플리케이션으로 만들기 위해 노력하고 있습니다. 이 글에서는 간결하고 유지보수하기 쉬운 코드를 작성하기 위해 Reflection을 사용했었고 그로 인해 성능 이슈가 발생했던 것을 소개합니다. 또한 그 과정에서 발생한 Reflection 성능저하를 해결하기 위해 시도했던 여러 방법을 공유하도록 하겠습니다.다양한 형태의 데이터¶Java를 이용해 서비스를 개발하는 경우 POJO로 서비스에 필요한 다양한 모델 클래스들을 만들어 사용하곤 합니다. 안드로이드 클라이언트 역시 모델을 클래스 정의해 사용하고 있습니다. 하지만 서비스 내에서 데이터는 정의된 클래스 이외에도 다양한 형태로 존재합니다. 안드로이드 클라이언트에서 하나의 데이터는 아래와 같은 형태로 존재합니다.JSON: 비트윈 서비스에서 HTTP API는 JSON 형태로 요청과 응답을 주고 받고 있습니다.Thrift: TCP를 이용한 채팅 API는 Thrift를 이용하여 프로토콜을 정의해 서버와 통신을 합니다.ContentValues: 안드로이드에서는 Database 에 데이터를 저장할 때, 해당 정보는 ContentValues 형태로 변환돼야 합니다.Cursor: Database에 저장된 정보는 Cursor 형태로 접근가능 합니다.POJO: 변수와 Getter/Setter로 구성된 클래스 입니다. 비지니스 로직에서 사용됩니다.코드 전반에서 다양한 형태의 데이터가 주는 혼란을 줄이기 위해 항상 POJO로 변환한 뒤 코드를 작성하기로 했습니다.다양한 데이터를 어떻게 상호 변환할 것 인가?¶JSON 같은 경우는 Parsing 후 Object로 변환해 주는 라이브러리(Gson, Jackson JSON)가 존재하지만 다른 형태(Thrift, Cursor..)들은 만족스러운 라이브러리가 존재하지 않았습니다. 그렇다고 모든 형태에 대해 변환하는 코드를 직접 작성하면 필요한 경우 아래와 같은 코드를 매번 작성해줘야 합니다. 이와 같이 작성하는 경우 Cursor에서 원하는 데이터를 일일이 가져와야 합니다.@Overridepublic void bindView(View view, Context context, Cursor cursor) { final ViewHolder holder = getViewHolder(view); final String author = cursor.getString("author"); final String content = cursor.getString("content"); final Long timeMills = cursor.getLong("time"); final ReadStatus readStatus = ReadStatus.fromValue(cursor.getString("readStatus")); final CAttachment attachment = JSONUtils.parseAttachment(cursor.getLong("createdTime")); holder.authorTextView.setText(author); holder.contentTextView.setText(content); holder.readStatusView.setReadStatus(readStatus); ...}하지만 각 형태의 필드명(Key)이 서로 같도록 맞춰주면 각각의 Getter와 Setter를 호출해 형태를 변환해주는 Utility Class를 제작할 수 있습니다.@Overridepublic void bindView(View view, Context context, Cursor cursor) { final ViewHolder holder = getViewHolder(view); Message message = ReflectionUtils.fromCursor(cursor, Message.class); holder.authorTextView.setText(message.getAuthor()); holder.contentTextView.setText(message.getContent()); holder.readStatusView.setReadStatus(message.getReadStatus()); ...}이런 식으로 코드를 작성하면 이해하기 쉽고, 모델이 변경되는 경우에도 유지보수가 비교적 편하다는 장점이 있습니다. 따라서 필요한 데이터를 POJO로 작성하고 다양한 형태의 데이터를 POJO로 변환하기로 했습니다. 서버로부터 받은 JSON 혹은 Thrift객체는 자동으로 POJO로 변환되고 POJO는 다시 ContentValues 형태로 DB에 저장됩니다. DB에 있는 데이터를 화면에 보여줄때는 Cursor로부터 데이터를 가져와서 POJO로 변환 후 적절한 가공을 하여 View에 보여주게 됩니다.POJO 형태로 여러 데이터 변환필요Reflection 사용과 성능저하¶처음에는 Reflection을 이용해 여러 데이터를 POJO로 만들거나 POJO를 다른 형태로 변환하도록 구현했습니다. 대상 Class의 newInstance/getMethod/invoke 함수를 이용해 객체 인스턴스를 생성하고 Getter/Setter를 호출하여 값을 세팅하거나 가져오도록 했습니다. 앞서 설명한 ReflectionUtils.fromCursor(cursor, Message.class)를 예를 들면 아래와 같습니다.public T fromCursor(Cursor cursor, Class clazz) { T instance = (T) clazz.newInstance(); for (int i=0; i final String columnName = cursor.getColumnName(i); final Class<?> type = clazz.getField(columnName).getType(); final Object value = getValueFromCursor(cursor, type); final Class<?>[] parameterType = { type }; final Object[] parameter = { value }; Method m = clazz.getMethod(toSetterName(columnName), parameterType); m.invoke(instance, value); } return instance;}Reflection을 이용하면 동적으로 Class의 정보(필드, 메서드)를 조회하고 호출할 수 있기 때문에 코드를 손쉽게 작성할 수 있습니다. 하지만 Reflection은 튜토리얼 문서에서 설명된 것처럼 성능저하 문제가 있습니다. 한두 번의 Relfection 호출로 인한 성능저하는 무시할 수 있다고 해도, 필드가 많거나 필드로 Collection을 가진 클래스의 경우에는 수십 번이 넘는 Reflection이 호출될 수 있습니다. 실제로 이 때문에 안드로이드 클라이언트에서 종종 반응성이 떨어지는 경우가 발생했습니다. 특히 CursorAdapter에서 Cursor를 POJO로 변환하는 코드 때문에 ListView에서의 스크롤이 버벅이기도 했습니다.Bytecode 생성¶Reflection 성능저하를 해결하려고 처음으로 선택한 방식은 Bytecode 생성입니다. Google Guice 등의 다양한 자바 프로젝트에서도 Bytecode를 생성하는 방식으로 성능 문제를 해결합니다. 다만 안드로이드의 Dalvik VM의 경우 일반적인 JVM의 Bytecode와는 스펙이 다릅니다. 이 때문에 기존의 자바 프로젝트에서 Bytecode 생성에 사용되는 CGLib 같은 라이브러리 대신 Dexmaker를 이용하여야 했습니다.CGLib¶CGLib는 Bytecode를 직접 생성하는 대신 FastClass, FastMethod 등 펀리한 클래스를 이용할 수 있습니다. FastClass나 FastMethod를 이용하면 내부적으로 알맞게 Bytecode를 만들거나 이미 생성된 Bytecode를 이용해 비교적 빠른 속도로 객체를 만들거나 함수를 호출 할 수 있습니다.public T create() { return (T) fastClazz.newInstance();} public Object get(Object target) { result = fastMethod.invoke(target, (Object[]) null);} public void set(Object target, Object value) { Object[] params = { value }; fastMethod.invoke(target, params);}Dexmaker¶하지만 Dexmaker는 Bytecode 생성 자체에 초점이 맞춰진 라이브러리라서 FastClass나 FastMethod 같은 편리한 클래스가 존재하지 않습니다. 결국, 다음과 같이 Bytecode 생성하는 코드를 직접 한땀 한땀 작성해야 합니다.public DexMethod generateClasses(Class<?> clazz, String clazzName){ dexMaker.declare(declaringType, ..., Modifier.PUBLIC, TypeId.OBJECT, ...); TypeId<?> targetClassTypeId = TypeId.get(clazz); MethodId invokeId = declaringType.getMethod(TypeId.OBJECT, "invoke", TypeId.OBJECT, TypeId.OBJECT); Code code = dexMaker.declare(invokeId, Modifier.PUBLIC); if (isGetter == true) { Local<Object> insertedInstance = code.getParameter(0, TypeId.OBJECT); Local instance = code.newLocal(targetClassTypeId); Local returnValue = code.newLocal(TypeId.get(method.getReturnType())); Local value = code.newLocal(TypeId.OBJECT); code.cast(instance, insertedInstance); MethodId executeId = ... code.invokeVirtual(executeId, returnValue, instance); code.cast(value, returnValue); code.returnValue(value); } else { ... } // constructor Code constructor = dexMaker.declare(declaringType.getConstructor(), Modifier.PUBLIC); Local<?> thisRef = constructor.getThis(declaringType); constructor.invokeDirect(TypeId.OBJECT.getConstructor(), null, thisRef); constructor.returnVoid();}Dexmaker를 이용한 방식을 구현하여 동작까지 확인했으나, 다음과 같은 이유로 실제 적용은 하지 못했습니다.Bytecode를 메모리에 저장하는 경우, 프로세스가 종료된 이후 실행 시 Bytecode를 다시 생성해 애플리케이션의 처음 실행성능이 떨어진다.Bytecode를 스토리지에 저장하는 경우, 원본 클래스가 변경됐는지를 매번 검사하거나 업데이트마다 해당 스토리지를 지워야 한다.더 좋은 방법이 생각났다.Annotation Processor¶최종적으로 저희가 선택한 방식은 컴파일 시점에 형태변환 코드를 자동으로 생성하는 것입니다. Reflection으로 접근하지 않아 속도도 빠르고, Java코드가 미리 작성돼 관리하기도 편하기 때문입니다. POJO 클래스에 알맞은 Annotation을 달아두고, APT를 이용해 Annotation이 달린 모델 클래스에 대해 형태변환 코드를 자동으로 생성했습니다.형태 변환이 필요한 클래스에 Annotation(@GenerateAccessor)을 표시합니다.@GenerateAccessorpublic class Message { private Integer id; private String content; public Integer getId() { return id; } ...}javac에서 APT 사용 옵션과 Processor를 지정합니다. 그러면 Annotation이 표시된 클래스에 대해 Processor의 작업이 수행됩니다. Processor에서 코드를 생성할 때에는 StringBuilder 등으로 실제 코드를 일일이 작성하는 것이 아니라 Velocity라는 template 라이브러리를 이용합니다. Processor는 아래와 같은 소스코드를 생성합니다.public class Message$$Accessor implements Accessor { public kr.co.vcnc.binding.performance.Message create() { return new kr.co.vcnc.binding.performance.Message(); } public Object get(Object target, String fieldName) throws IllegalArgumentException { kr.co.vcnc.binding.performance.Message source = (kr.co.vcnc.binding.performance.Message) target; switch(fieldName.hashCode()) { case 3355: { return source.getId(); } case -1724546052: { return source.getContent(); } ... default: throw new IllegalArgumentException(...); } } public void set(Object target, String fieldName, Object value) throws IllegalArgumentException { kr.co.vcnc.binding.performance.Message source = (kr.co.vcnc.binding.performance.Message) target; switch(fieldName.hashCode()) { case 3355: { source.setId( (java.lang.Integer) value); return; } case -1724546052: { source.setContent( (java.lang.String) value); return; } ... default: throw new IllegalArgumentException(...); } }}여기서 저희가 정의한 Accessor는 객체를 만들거나 특정 필드의 값을 가져오거나 세팅하는 인터페이스로, 객체의 형태를 변환할 때 이용됩니다. get,set 메서드는 필드 이름의 hashCode 값을 이용해 해당하는 getter,setter를 호출합니다. hashCode를 이용해 switch-case문을 사용한 이유는 Map을 이용하는 것보다 성능상 이득이 있기 때문입니다. 단순 메모리 접근이 Java에서 제공하는 HashMap과 같은 자료구조 사용보다 훨씬 빠릅니다. APT를 이용해 변환코드를 자동으로 생성하면 여러 장점이 있습니다.Reflection을 사용하지 않고 Method를 직접 수행해서 빠르다.Bytecode 생성과 달리 애플리케이션 처음 실행될 때 코드 생성이 필요 없고 만들어진 코드가 APK에 포함된다.Compile 시점에 코드가 생성돼서 Model 변화가 바로 반영된다.APT를 이용한 Code생성으로 Reflection 속도저하를 해결할 수 있습니다. 이 방식은 애플리케이션 반응성이 중요하고 상대적으로 Reflection 속도저하가 큰 안드로이드 라이브러리에서 최근 많이 사용하고 있습니다. (AndroidAnnotations, ButterKnife, Dagger)성능 비교¶다음은 Reflection, Dexmaker, Code Generating(APT)를 이용해 JSONObject를 Object로 변환하는 작업을 50번 수행한 결과입니다.성능 비교 결과이처럼 최신 OS 버전일수록 Reflection의 성능저하가 다른 방법에 비해 상대적으로 더 큽니다. 반대로 Dexmaker의 생성 속도는 빨라져 APT 방식과의 성능격차는 점점 작아집니다. 하지만 역시 APT를 통한 Code 생성이 모든 환경에서 가장 좋은 성능을 보입니다.마치며¶서비스 모델을 반복적으로 정의하지 않으면서 변환하는 방법을 알아봤습니다. 그 과정에서 Reflection 의 속도저하, Dexmaker 의 단점도 설명해 드렸고 결국 APT가 좋은 해결책이라고 판단했습니다. 저희는 이 글에서 설명해 드린 방식을 추상화해 Binding이라는 라이브러리를 만들어 사용하고 있습니다. Binding은 POJO를 다양한 JSON, Cursor, ContentValues등 다양한 형태로 변환해주는 라이브러리입니다. 뛰어난 확장성으로 다양한 형태의 데이터로 변경하는 플러그인을 만들어서 사용할 수 있습니다.Message message = Bindings.for(Message.class).bind().from(AndroidSources.cursor(cursor));Message message = Bindings.for(Message.class).bind().from(JSONSources.jsonString(jsonString));String jsonString = Bindings.for(Message.class).bind(message).to(JSONTargets.jsonString());위와 같이 Java상에 존재할 수 있는 다양한 타입의 객체에 대해 일종의 데이터 Binding 기능을 수행합니다. Binding 라이브러리도 기회가 되면 소개해드리겠습니다. 윗글에서 궁금하신 점이 있으시거나 잘못된 부분이 있으면 답글을 달아주시기 바랍니다. 감사합니다.저희는 언제나 타다 및 비트윈 서비스를 함께 만들며 기술적인 문제를 함께 풀어나갈 능력있는 개발자를 모시고 있습니다. 언제든 부담없이 [email protected]로 이메일을 주시기 바랍니다!
조회수 857

아마존 판매의 최적화된 운영

안녕하세요 대한민국 셀러들의 성공적인 아마존 진출을 도와주는 컨설팅 회사이자 대행사인 컨택틱의 이이삭 대표입니다.아마존에 진출한다는 것은 실로 많은 업무들이 연관되어 있습니다. 컨택틱의 대표적인 서비스인 ‘운영대행’은 쉽게 말해 ‘인큐베이팅 또는 멘토링’ 서비스인데, 이 서비스를 받고 있는 고객사들의 경험을 살려서 말씀드리자면, 아마존 운영은 절대로 1명이 전담해서 관리하기에는 버겁습니다. 따라서 컨택틱은 ‘최적화된 아마존 운영’을 하기 위해서는 2명의 전담 인력이 필요하다고 여기고 있습니다. 이번 글에서는 이 중추적인 2명의 역할이 무엇인지를 말씀드리고자 합니다.첫 번째 역할은 실무 전담입니다 (Operations Specialist). 이 역할을 가진 사람은, 해당 기업이 아마존에 진출하는 것에서부터 아마존을 원활하게 운영하는 것까지 총괄적으로 관리한다고 보면 됩니다. ‘아마존 진출’이라 함은, 대표적으로 다음의 순서를 따릅니다: (1) 시장조사 및 상품 선정 (2) 아마존 입점 (3) 상품 등록 및 최적화 (4) FBA 입고 (5) 시장 반응 검증 (6) 마케팅 (7) 세일즈 모니터링. 그 뒤로부터는 3번부터 7번을 무한 반복하는 것입니다. 이 과정들을 한 번 겪어보신 분들은 아시겠지만, 대충 하려면 대충 할 수도 있습니다. 하지만 이걸 ‘완벽’하게 하는 것은 굉장히 많은 인력과 심력이 들어간다는 것 또한 알 것입니다. 완벽의 기준은 따로 없지만, 리스팅 하나만 놓고 본다고 하더라도 키워드 하나하나를 곰곰이 생각하면서 심사숙고 끝에 결정 및 적용하는 것을 말하며, FBA 입고 또한 어느 상품을 언제 어떻게 준비하여 FBA 창고에 입고할 것인지 계획할 뿐만 아니라 행동으로 옮기는 것 또한 굉장한 multi-tasking 능력을 요구합니다. 그렇게 진출시킨 상품의 실제 판매 실적이 어떠한지 모니터링하고 분석하는 것까지 고려한다면 심지어 1개의 SKU (상품)에 대해서조차 눈코 뜰 새 없이 바쁠 거라는 것을 짐작할 수 있습니다. 허나 이런 과정들을 단 1개의 SKU에 대해서 하는 게 아니라 기업 규모에 따라 10개, 100개, 심지어 1000개까지도 해야 할 수도 있습니다. 실무 전담 담당자는 그만큼 multi-tasking 재능이 뛰어나고, 매사에 세심하고 철저하고 꼼꼼한 성격인 사람이 제격입니다.두 번째 역할은 마케팅 전담입니다 (Marketing Specialist). 이 역할을 가진 사람은, 아마존에 출시한 제품들의 시장 반응이 최대한 잘 올 수 있도록 온갖 신경을 쓰는 것입니다. 실무 전담 담당자가 만약 아마존에 최대한 많은 상품을 출시하고, 관리하는 것에 목적이 있다면, 마케팅 전담 담당자는, 그 출시하는 상품들이 하나같이 전부 대박이 터질 수 있도록 할 수 있는 일을 최대한 하는 것에 포커스를 둡니다. 이 역할을 담당할 사람은 대표적으로 ‘센스’가 필요합니다. 여기서 말하는 센스는 디자인 센스뿐만 아니라, 고객들의 마음과 갈망을 파악할 수 있는 센스도 얘기하며, UI (user interface)와 UX (user experience)에 걸쳐서 고객들의 쇼핑 경험을 전문적으로 케어할 수 있는 재능을 종합적으로 얘기합니다. 실무 전담 담당자가 아무리 상품들을 원활하게 아마존에 진출시켰다고 해도, 마케팅 전담 담당자의 기여가 없으면 삭막하고, 건조하고, 감흥이 없는 리스팅들만 잔뜩 올라가게 될 것입니다. 제품이 아무리 좋아도, 구매의 욕구를 불러일으키지 않는 리스팅들만 잔뜩 있다면 시장 반응 검증조차도 의미가 없게 됩니다. 그러면 당연히 베스트셀러가 탄생하지도 않을 것입니다. 그런 의미에서 마케팅 전담자는 리스팅의 가장 중요한 (1) 이미지 (2) 강조 포인트 (3) 상세 설명 부분들을 특유의 ‘구매 욕구 불러일으키는 센스’로 장식하도록 재능을 기여해야 합니다. 실무 전담자는 키워드 인덱싱을 고려하면서 ‘이론’ 기반의 리스팅을 만드는 ‘뼈대’에 집중했다면, 마케팅 전담자는 그 내용에 ‘감성’ 기반의 요소인 ‘살’을 붙여줌으로써 비로소 리스팅이 완성되는 것이라고 볼 수 있습니다. 그 외에도, 시장 반응 검증을 통해 유력한 상품들이 걸러졌다면, 그 상품들은 마케팅 전담자의 역할로써 본격적인 홍보 활동과 판매촉진 작업을 해야 하는 것입니다. 역시, 그런 홍보 활동과 판매촉진 작업을 진행하면서 실적을 모니터링하고 분석하는 것은 다시 실무 전담자의 역할이 됩니다.이렇듯이, 아마존 운영은 중추적인 2개의 기둥을 통해서 운영하는 것이 가장 효과적입니다. 이 두 개의 역할을 한 사람이 전부 다 하는 것은 현실적으로 많이 버겁습니다. 따라서 1인 기업이나 스타트업이나, 초기 단계의 기업은 1명의 담당자가 최소한의 input으로 두 개의 역할을 소화할지언정, 나중에 아마존을 본격적으로 발전시키겠다고 결정한다면 반드시 역할을 분담해서 ‘이론’에 강한 논리적인 실무 담당자 최소한 1명과, ‘감성’에 강한 감각적인 마케팅 담당자 최소한 1명이 팀을 이루어서 아마존을 운영할 것을 권장합니다.컨택틱의 모든 교육은 파트너인 글로벌셀러 창업연구소와 접수하고 진행합니다. 교육 신청은 아래 링크나 글로벌셀러 창업연구소의 홈페이지를 통해 접수 가능합니다.오프라인 아마존 입문 과정오프라인 아마존 기초/심화 과정온라인 아마존 입문 과정그럼 오늘도 즐거운 글로벌 셀링 되세요!감사합니다.컨택틱서울특별시 서초구 서초대로 356, 606호(서초동, 서초지웰타워)대표 전화: 02-538-3939이메일: [email protected]홈페이지: https://www.kontactic.com네이버 블로그: https://blog.naver.com/kontactic카카오 브런치: https://brunch.co.kr/@allaboutamazon유튜브 채널: https://www.youtube.com/c/kontactic
조회수 1631

피키캐스트의 자타공인 패셔니스타, 핏터팬 루이

안녕하세요, 매력 넘치는 옐로피플을 발굴해 소개하는 Y의 옐플 인터뷰, 그 19번째 이야기! 이번 주인공은 바로 오늘로 피키캐스트 입사 2주년을 맞은 ‘핏터팬’, 루이입니다:) 꼬꼬마 인턴시절 겪었던 이불킥 흑역사부터 잊을 수 없는 라이브 방송사고까지! 루이의 솔직 담백한 이야기, 지금 시작합니다:)안녕하세요! 옐블 독자들을 위해 간략한 자기소개 부탁 드립니다:)안녕하세요, 여러분! 저는 핏터팬 계정을 운영하고 있는 ‘루이’라고 합니다! 요즘에는 v커머스셀에서 라이브 콘텐츠를 담당하고 있어요:) V커머스셀이라! 정확히 어떤 일을 하는 건가요?V커머스는, 2017년 소비트렌드중 하나인 신조어인데요, Video와 Commerce를 결합한 것이라고 보시면 됩니다. 홈쇼핑과 비슷하긴 한데, 홈쇼핑에 비해 짧게 제작이 되고 TV가 아닌 SNS채널을 통해 유통된다는 점이 다르죠. 저는 V커머스셀에서 라이브커머스 콘텐츠 기획과 제작을 담당하고 있습니다. 피키와는 어떻게 인연이 닿게 되었나요? 제가 오늘로 딱!! 2주년이 됩니다:) 제작년 7월 20일에 썸머인턴으로 입사 했으니까요. 입사하고 나서 알게 된 거지만 당시 경쟁력이 360대 1로 엄청났더라고요. 피키캐스트가 다들 꿈의 직장이라고 하잖아요. 저도 졸업 후 즐겁고 재미있게 일할 수 있는 직장을 찾다가 뭔가에 홀린 듯 피키캐스트 썸머인턴으로 지원하게 됐습니다:) 와! 2주년 축하드려요!! 사실 이게 2주년 기념 인터뷰입니다(몰랐음)입사 후에는 어땠나요? 정말 꿈의 직장인가요? 사실 이상과 현실이 정확히 일치할 수는 없죠. 여기도 성과를 내야하는 직장이니까요. 그래도 정말 직원들끼리 친구처럼 친하게 지내고 있어서 회사 오는게 즐거울 때가 더 많아요. 또 개방적이고 수평적인 구조이다 보니 아이디어가 더 쉽게 나오고 의견 어필할 때도 눈치보지 않죠. 이런 환경에서 2년을 일하다 보니, 저희들끼리는 농담으로 그 어떤 회사로 이직을 하더라도 이런 분위기를 다시 만나기는 쉽지 않을 거라 얘기해요.피키캐스트 입사 이후 가장 기억에 남는 에피소드는 무엇인가요? 정말 잊지못할 흑역사가 있죠… 갓 입사했을 때 피키 전체 임직원들이 일주일에 한번씩 모이는 ‘피키홀’이 있었어요. 신입은 첫 피키홀에서 장기자랑을 해야한다고 하길래, 정말 열심히 준비해서 혼신을 다해 백여명 앞에서 춤을 췄어요. 알고 보니 그게 몰카였더라고요…(주륵)ㅋㅋㅋㅋㅋ그럼 당하신거네요? 동기들도 함께 당한건가요? 아뇨… 썸머인턴 동기가 뷰신, 알리, 저 이렇게 세명인데, 저 혼자만 당했어요. 아직도 그때를 생각하면 자다가도 이불킥을 한답니다.이불킥 흑역사ㅋㅋ라이브 방송을 진행하다 보면 재미있는 일들이 많이 일어날 것 같아요! 정말 많은 일들이 일어나죠… 그냥 영상 콘텐츠면 컷과 편집이 가능한데, 라이브는 순간순간이 그대로 방송으로 나가게 되잖아요. 실수를 하면 바로 방송사고로 이어지는 거죠. 방송사고도 나름의 재미일 것 같아요! 어떤 방송이 기억에 남으세요?  얼마전에 춘리와 달심이 나와서 최근 핫한 피젯스피너를 판매한 적이 있습니다. 동네형답게 휘몰아 치면서 꿀잼 방송을 이어갔는데요, 그 피젯스피너가 ‘국산’임을 강조했죠. 근데 알고 보니 그 제품이 ‘메이드인 차이나’였던 거예요. 진짜 그때는 등줄기에 식은땀이 다 나더라고요ㅠㅠ 결국 춘리와 달심이 몽둥이로 엉덩이 한대 씩 맞고 ‘대핔플 사과’를 하며 마무리했어요. 당시에는 아찔했지만 지금 돌이켜보면 나름 재미있는 추억인 것 같아요. 가끔 라이브 콘텐츠에 직접 출연도 하시던데, 주위 반응은 어떤가요? 저는 보통 커머스 라이브 콘텐츠에 나가서 자잘한 도움을 드리고 있어요:) 세수를 해야 하면 대야에 물을 받아 주고, 제모크림 판매를 위해 실험대상이 되어 주기도 합니다. 제가 너무 당한다고(?) 생각하셔서 그런지 많이들 안쓰러워 하시더라고요. 저… 저는 괜찮습니다, 여러분(ㅠㅠ) 특별한 취미가 있나요? 라이브콘텐츠를 담당하기 전에 ‘핏터팬’이라는 패션 관련 계정을 운영했습니다. 그만큼 패션에 대한 관심이 많아요. 지난 3월에는 뷰신을 제가 직접 스타일링해서 서울 패션 위크에 참여해서 콘텐츠로도 만들었어요. 정말 많은 사람들의 관심을 받았고 취재진들이 사진도 많이 찍어주셔서 뿌듯했어요:)루이의 금손을 거친 뷰신의 패션이날 패션위크에 참여한 또 다른 에디터가 있다고 들었어요ㅋㅋㅋ달심도 함께 갔죠. 핔플들이 말하는 대로 입고 패션위크에 가겠다는 이벤트 무리수를 던졌는데…  정말 달심 외엔 그 누구도 소화할 수 없는 미션이었습니다. 설명은 생략하고 사진으로 보시죠. 안본 눈 삽니다달심이라서 가능했던 미션!피키와 함께 하며 좋은 점은 무엇인가요? 우선 편하게 아이디어를 낼 수 있는 회사입니다. 콘텐츠를 만들어 내는 업이다 보니 ‘새로운 것, 재미있는 것’을 만들어야 한다는 부담감을 가지고 있는데, 거기에 다른 제약이 들어온다면 정말 힘들 것 같아요. 피키캐스트는 누구의 눈치도 보지 않고 제 의견을 자유롭게 얘기할 수 있어서 정말 좋습니다! 또 돌+I들이 모여 있다 보니 생각없이 던진 아이디어도 재미있는 콘텐츠로 탄생하기도 해요.지금까지 만들었던 콘텐츠 중 가장 기억에 남는 콘텐츠가 있다면? 꼬꼬마 인턴시절에 앤 해서웨이가 나온 ‘인턴’이라는 영화가 개봉했어요. 영화팀에서 ‘인턴’ 영화 홍보를 저희 인턴 세명이 진행했으면 좋겠다는 의견을 주셔서 저희 셋이 홍보 콘텐츠에 출연하게 됐죠. 무려 워너브라더스 코리아를 방문하고 오기도 했어요. 이때만 해도 에디터들이 얼굴을 공개 하지 않던 시절이라, 영상 보시면 얼굴은 다 편집되어 있어요ㅋㅋㅋ 당시 피키 베이비들이 콘텐츠가 특별한 이유가 있나요? 이게 피키캐스트의 첫!! 광고 콘텐츠예요. 그래서 더 저에게 의미가 있는 것 같아요. 또 인턴십이 거의 끝날 무렵 제의가 들어왔는데 정말 타이밍도 잘 맞았었던 것 같아요:)벌써 2017년 상반기가 지나갔어요! 올해 안에 이루고 싶은 것이 있나요? 아마 전국 직장인들의 고민거리일 텐데요, 피키에서 2년 동안 컴퓨터 앞에만 앉아 있다 보니 살이 입사 전에 비해 5~6kg이나 쪘어요ㅠㅠ 앞으로 남은 6개월동안 열심히 다이어트를 해서 입사 전 모습으로 돌아가려 합니다! 피키 여러분 저 살 좀 빼게 도와주세요ㅠㅠ!마지막으로 앞으로 어떤 일을 해보고 싶으세요? 원래 패션 쪽이 제 분야였는데, 지금은 집중해야 할 방향이 살짝 달라져서 라이브를 맡고 있습니다. 우선은 라이브를 안정화 시킨 후에 다시 패션 쪽 콘텐츠를 만들어 보고 싶어요. 피키캐스트에 패션 콘텐츠를 꾸준히 내보내는 것이 제 목표입니다! 그러기 위해 앞으로도 꾸준히 노력하는 루이 되겠습니다:) 피키 사랑합니다!
조회수 2743

리디북스 웹뷰어의 이어보기를 개발하며

최근 리디북스에서는 판타지 연재물을 웹에서 바로 볼 수 있는 기능을 새롭게 선보였습니다.기존에는 별도의 앱을 설치하고 다운로드하는 과정을 거쳐야 했기에 연재물을 보는 사용성이 좋지 않았습니다만, 브라우저에서 바로 볼 수 있는 “웹뷰어” 기능을 제공함으로써 사용성을 높일 수 있었습니다.그리고 여기에 사용성을 더하기 위해 추가된 것이 이어보기 기능입니다. 짧아도 100화 이상, 길게는 1000화가 넘는 연재물에서 다음 화로의 매끄러운 연결은 매우 중요합니다. 혹은 잠시 읽기를 중단했다가 다시 돌아왔을 때, 어디까지 보고 있었는지를 빠르게 알려준다면 호흡을 이어서 작품에 더욱 몰입할 수 있을 것입니다.이어보기가 구현된 모습리디북스에 로그인되어 있다면, 이곳에서 확인하실 수 있습니다.이번 글은 이어보기 기능에 대한 개발 후기입니다. 요구 사항에 따라 여러 저장소 솔루션을 비교해 보았으며 최종적으로 Couchbase를 선택한 이유와 간단한 벤치마크 결과, 그리고 겪었던 문제를 공유합니다.요구 사항기획된 내용을 요약하니 아래와 같습니다.연재물의 가장 마지막에 읽은 화를 알 수 있다.보았던 모든 연재물에서 가장 마지막에 읽은 연재물을 알 수 있다.사용자가 본 모든 연재물 목록을 확인할 수 있다.이를 개발자 용어로 다시 풀어보면 아래와 같습니다.연재물을 읽을 때마다 연재물 ID와 화(episode) 정보를 기록한다.보았던 연재물을 최신순으로 정렬하여 가져온다.선택된 연재물의 마지막으로 읽은 화를 가져온다.목록에서 특정 연재물을 삭제한다.이어보기는 가장 마지막에 읽은 연재물을 기억하기 위해 작품을 열 때마다 해당 정보를 기록해야 합니다. 그런데 수십 화를 연달아서 보는 연재물의 특성상 내가 어디까지 읽었는지를 조회하는 것(read)보다 내가 읽은 연재물을 기록하는 것(write)이 더 많을 것으로 판단했습니다. 즉, 읽기보다 쓰기가 더 많을 것으로 예상했습니다.NoSQL을 쓰자대부분의 연산이 쓰기(write)와 관련된 이상, 어떤 저장공간을 사용할 것인지가 주된 관심사였습니다.특히 RDBMS와 NoSQL 사이에서 어떤 것을 사용할지 많은 고민과 테스트를 했고, 결국 아래와 같은 이유로 NoSQL을 사용하는 것이 적합하다고 판단했습니다.현재 사용 중인 MariaDB를 그대로 사용한다면 마스터에 부담을 줄 수 있다.별도로 MariaDB를 구성하더라도 운영 및 쓰기 분산하기가 여전히 어렵다.반면 NoSQL은 RDBMS 대비 확장(Scale out)이 간편하므로 운영에 대한 부담이 적다.단순 Key-Value 보관 용도면 충분하다.이어보기 데이터는 독립적인 성격을 가지고 있어서 다른 사용자 데이터와 JOIN을 할 필요가 없다.이어보기 데이터는 크리티컬한 트랜잭션이 필요하지 않다.MongoDB vs. Couchbase데이터를 영속적으로 유지해야 한다는 요구 사항을 충족하기 위해, Redis 등의 메모리만 사용하는 NoSQL은 제외했습니다. 물론 디스크에 기록할 수 있지만, 성능이 급감하기 때문에 실용적이지 못 합니다. 또한, 메모리 사이즈에 기반을 두기 때문에 Scale up 비용이 크고, 서비스 확장시 Scale out 빈도가 높습니다.그래서 MongoDB와 Couchbase를 비교 대상으로 했습니다. 둘 다 도큐먼트 기반의 NoSQL이고 확장이 용이합니다. 과거에는 MongoDB가 Write lock 사용에 있어서 문제점이 있었지만, 최근 버전에서는 문제가 되지 않습니다.[1] 둘 다 기업용 서비스 및 충분한 부가 기능들을 제공하므로 선택하기 어려웠지만, 최종적으로 아래와 같은 이유로 Couchbase(CE)를 선택했습니다.1. 이미 사내에서 다른 서비스에 사용되고 있습니다.가장 중요한 요인이었습니다. 더 좋은 솔루션이 있더라도 어디까지나 서버 스택을 늘리는 것 이상의 효용이 있는지를 따져보아야 합니다. 이미 사용하고 있는 솔루션이 있다면, 검증이 되었을 뿐만 아니라 개발 및 운영 경험도 활용할 수 있습니다.2. 이어보기는 복잡한 쿼리(Query)가 필요 없습니다.이어보기에서 사용할 쿼리는 간단하기 때문에 Couchbase의 뷰(View)만으로 충분했습니다.Couchbase, 실제 성능은 어떨까?테스트를 하기 전 우리가 어떤 식으로 사용할 것인지 정리해야 합니다. 애플리케이션 액세스 패턴이나 동시성 문제, 데이터 구조화 등을 파악하고 그에 맞는 테스트를 진행해야 합니다. 이번 이어보기는 쓰기 연산이 보다 많기 때문에 이로 인한 뷰의 인덱싱(Indexing)에 초점을 맞추고 테스트를 진행했습니다.성능을 위협하는 요소들View IndexingCouchbase는 MapReduce를 이용하여 뷰를 제공합니다. MapReduce는 일반적으로 리소스를 많이 소모하는 동작입니다. 그래서 Couchbase는 버킷의 새로 갱신된 데이터만 인덱싱하는 Incremental MapReduce라는 기법을 적용해서 리소스 소모를 줄였다고 합니다.[2] 하지만 해당 작업으로 인한 부하는 여전히 발생합니다.Auto CompactionCouchbase는 데이터와 인덱스를 디스크에 데이터를 저장할 때 파일에 추가하기(Append) 모드로만 쓰기를 수행합니다.[3] 그리고 오래되고 불필요한 데이터들은 추후 한꺼번에 정리하는데, 이는 디스크 쓰기 성능을 최대화하기 위함입니다.그런데 이렇게 추가만 하게 되면 오래된 정보들은 파일의 앞에 쌓이게 됩니다. 그리고 사용하지 않게 된 데이터도 남아있습니다. 이를 주기적으로 정리해서 최적화하는 작업을 Auto Compaction이라고 합니다. 뷰의 인덱스는 디스크에 존재하기 때문에 디스크 작업이 있으면 인덱싱에 영향을 미치게 됩니다.성능 테스트Couchbase는 기본적으로 5,000ms마다 Index를 업데이트합니다.[2] 그리고 데이터를 비동기적으로 응답합니다. 비동기는 응답속도를 빠르게 하지만, 데이터 불일치가 발생할 수 있습니다. 데이터 불일치가 신경 쓰이고 이 시간이 길다고 생각되면, stale 옵션을 지정해서 뷰의 인덱스를 업데이트할 수 있습니다.이어보기는 뷰가 간단하기 때문에 응답시간에 큰 문제가 없을 것으로 예상하고 stale 옵션을 꺼두었습니다. 이 옵션은 뷰를 조회했을 때 버킷의 변경사항에 따라 뷰를 인덱싱하고 데이터를 응답합니다. 하지만 예상한 것과 같이 실제로도 응답시간이 짧은지 확인할 필요가 있습니다. 그래서 다음과 같이 테스트를 진행했습니다.테스트 환경은 아래와 같이 2-tier로 준비하고 요청을 늘려가면서 RPS를 측정했습니다.서버 구성OS: Ubuntu 14.04Application: Couchbase Server (CE) 3.1.3클라이언트 구성클라이언트 1개에서 50개의 세션으로 요청10만 사용자 가정책은 1만개의 책중 랜덤으로 선택됨요청의 70%는 책 읽기(Bucket Write)요청의 30%는 연재물의 마지막에 읽은 책 가져오기(View Read)그래프 분석성능 테스트 주요 지표RPS : Response Per SecondSP : Saturation PointBuckle zone : 시스템 과부하로 인해 내부 자원이 서로 경쟁상태나 적체 상태가 심해지기 때문에 최대 처리량보다 더 떨어지는 경우가 발생함성능테스트 결과그래프를 보면 요청이 늘어남에 따라 RPS가 선형으로 증가하지만, SP인 8,000 RPS에 도달하고 나서 Buckle zone에서 7,000 RPS로 수렴하고 있습니다. 물론 1개의 클라이언트에서 세션을 생성해서 테스트를 진행했기 때문에 서버의 성능 부족이 아닌 클라이언트의 병목 현상이 원인일 수 있습니다. 또한 JMeter나 다른 부하 테스트 툴을 사용하지 않고 간략하게 만든 테스트 툴을 사용하였기 때문에 수치가 부정확할 수 있습니다. 그러나 어디에서 병목이 있었든 현재 이 이상의 성능이 필요하지 않기 때문에 테스트 결과에 만족할 수 있었습니다.이어보기 배포 후모바일 브라우저 캐시 문제이어보기 기능을 배포하자마자 당일 저녁 이슈 하나를 접수했습니다. 아이패드와 PC를 번갈아 이용할 경우 이어보기 데이터가 맞지 않다는 것이었습니다.데이터를 쌓을 때 모든 이력을 기록하지는 않았지만, 다행히도 Couchbase에 이용기기와 시간은 기록하였기 때문에 이를 바탕으로 디버깅을 할 수 있었습니다. (서비스 초기라 할지라도 최대한 많은 이력을 남기는 것이 중요함을 다시 느꼈습니다)원인은 아이패드의 멀티태스킹으로 인한 캐시 소멸이었습니다. 아이패드 브라우저의 캐시가 소멸되면서 마지막으로 열어두었던 페이지가 강제적으로 리로딩되었고, 이때 의도치 않게 마지막 위치 정보가 덮어씌워진 것입니다.이 문제는 기술적으로 해결이 쉽지 않아 결국 기획을 수정하게 되었습니다. 사용자가 해당 책을 읽었다고 판단하는 기준이 “페이지를 열어본 즉시”였다면, 이를 “페이지를 열고 수 초 이상을 유지”하는 것으로 기준을 변경하였습니다. 물론 근본적인 해결책은 아니었지만, 실제 사용에는 지장이 없는 합리적인 해결책이라고 생각합니다.Key 구조의 변경 및 동시성 문제Couchbase는 높은 성능을 위해 메타데이터(Key + @)를 모두 메모리에 적재하는 특징이 있어서, Document 하나가 평균 350Byte를 차지하고 있었습니다. 따라서 현재 상태로 1000만개의 데이터를 저장할 경우 최소 3.5G의 메모리를, 2개의 사본(Replica)를 유지할 경우 약 10.5G의 메모리를 사용하게 될 것으로 예상되었고 이는 큰 부담으로 다가왔습니다.처음에는 단순히 “사용자ID_연재물ID” 형태의 Key를 사용하였지만, 보다 빠르게 증가할 것으로 예상되는 것은 사용자보다 연재물 이었으므로 아래와 같이 Key값을 변경하여 메모리 사용량을 크게 줄였습니다.// U_id : S_id 조합을 사용하면 Key가 엄청 많아진다. // 그래서 사용자당 Key를 100개로 제한하도록 한다. Count = 100 Key = '사용자ID' + ('연재물ID' % Count) 그런데 이렇게 Key 구조를 변경하였더니, 간단한 업데이트 동작임에도 불구하고 정상적으로 수행되지 않는 경우가 빈번하게 발생하였습니다. 이유는 낙관적 동시성(Optimistic concurrency) 모델의 특징 때문이었는데, Couchbase는 명시적인 잠금 이외에도 “Check and Set(CAS)”이라는 기능을 제공하고 있었습니다.공식 문서의 예제를 참고하여 아래와 같이 로직을 수정한 뒤로는 다행히도 동시성 문제가 아직까지 발생하지 않고 있습니다.boolean updateUsingCas(key, value) {  for (tryCount = 0; tryCount < MAX>    orgValue, cas = getValueAndCas(key)           // Update the original value.     // newValue = ... if setValueWithCas(key, newValue, cas)      return SUCCESS sleep(0.1) // 부하를 줄이기 위해  }  return FAIL } 맺으며동작하는 서비스에 새로운 기능을 추가한다는 것은 어려운 일입니다. 특히 새로운 데이터 스토리지를 필요로 하는 일이라면 더더욱 어렵다고 생각합니다. 그리고 그럴 때일수록 설계에 많은 시간을 들여야 한다는 것을 느꼈습니다. 설계 초기에는 RDBMS의 샤딩까지 고려하였지만, 요구 사항을 구체화할수록 단순 Key-Value로도 같은 문제를 해결할 수 있음을 깨달았기 때문입니다.또한, 서비스 개발에 있어서 어려운 문제를 마주했을 때 기술적으로만 접근할 것이 아니라 고객이 정말 원하는 것이 무엇인지를 고민하여 기획적으로 해결하는 능력도 중요하다는 것을 실감하였습니다.마지막으로 Couchbase는 현재로서도 꽤 좋고 앞으로도 많은 발전이 기대되는 NoSQL입니다. 도입을 고민하시던 분들께 조금이라도 도움이 되었기를 바랍니다.참고자료[1] MongoDB - Concurrency[2] Couchbase - Views Operations[3] Couchbase - File write#리디북스 #개발 #개발자 #서버개발 #서비스개발 #고객중심 #기능개발 #Couchbase #인사이트 #개발후기

기업문화 엿볼 때, 더팀스

로그인

/