스토리 홈

인터뷰

피드

뉴스

조회수 17569

Nodejs 기반의 개발 환경 클린하게 재 구성하기

다양한 언어 기반으로 개발 환경을 구축하여 만들다보면, 소프트웨어 버전관리 해야할 일이 흔히 생기곤 한다. 특히, 종종 대격변이 있는 버전의 판올림으로인해 충돌이 나거나 심볼릭 링크가 유실되는 경우들이 간혹 있는데 이번에도 그런 케이스였다.최근 node.js 기반으로 다양한 프로젝트 (vue.js, react.js등)를 진행하다가 이것저것 환경을 만지고 고치다보니 결국 node.js 를 완전히 클린하게 삭제해야 할 일이 생겼다.아마 이 환경에 결정타를 먹인 것이 OSX 환경에서 El Capitan에서 작업하던 Node.js를 그대로 high sierra로 OSX를 판올림 하면서 퍼미션 권한의 문제가 생긴건지, 노드 패키지 관리나 npm이 정상적으로 동작하지 않으면서 개발환경을 재 설정 할 수 밖에 없게 되었는데, 그 과정에 기름을 부어버리듯 당시에 brew로 설치한 노드가 brew로 삭제가 되지 않는 문제가 발생해버렸다.결국 환경을 처음부터 재 설치 해야하는 과정을 겪어야했는데 기존에 설치된 다양한 패키지 모듈의 찌꺼기들이 남아서 한방에 클린 설치를 할 수 있는 방법이 없을까 싶어 구글링을 해본 결과 앞서서 수많은 시행착오를 겪은 선배님들의 아주 좋은 작업 방식이 있어서 아래에 방법을 공유해본다.요세미티에서 nodejs 정리하는 법 [1]Uninstall nodejs from OSX Yosemite# 첫번째:lsbom -f -l -s -pf /var/db/receipts/org.nodejs.pkg.bom | while read f; do  sudo rm /usr/local/${f}; donesudo rm -rf /usr/local/lib/node /usr/local/lib/node_modules /var/db/receipts/org.nodejs.*# 완전히 nodejs + npm 을 날려버리는 방법 :# /usr/local/lib 경로로 가서 node 와 관련된 노드 모듈을 전부 삭제cd /usr/local/libsudo rm -rf node*# /usr/local/include 경로로 가서 node 와 관련된 노드 모듈 전부 삭제cd /usr/local/includesudo rm -rf node*# 만약 brew 로 인스톨을 했다면 아래와 같은 방법으로 삭제도 가능함. (저는 아래는 brew자체가 망가졌었는지 판올림으로 인한 권한 문제인지 brew로는 삭제 불가능했음.)brew uninstall node# home 디렉토리나 local, lib, include등의 폴더와 관련된 모든 파일은 아래의 경로에 있으니 찾아 들어가서 삭제cd /usr/local/binsudo rm -rf /usr/local/bin/npmsudo rm -rf /usr/local/bin/nodels -las# 아마 혹시 모르니까 클린하게 아래의 명령어도 한번 돌려주자sudo rm -rf /usr/local/share/man/man1/node.1sudo rm -rf /usr/local/lib/dtrace/node.dsudo rm -rf ~/.npmhomebrew를 사용하는 유저들 중에 npm이 제대로 동작하지 않으면 아래와 같은 방법으로도 처방이 가능하다. [2]rm -rf /usr/local/lib/node_modulesbrew uninstall nodebrew install node --without-npmecho prefix=~/.npm-packages >> ~/.npmrccurl -L https://www.npmjs.com/install.sh | sh클린하게 설치를 끝나고 react-native를 컴파일하는 과정에서 깃에 관련된 오류가 발생한다면 아래의 방법을 사용해보자. [3]오류메세지 :xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun솔루션 :xcode-select --install엘케피탄에서 하이시에라로 osx를 업데이트 하면서 homebrew의 링크가 깨졌다면 아래의 방법으로 다시 붙여준다. [4]sudo chown -R "$USER":admin /usr/localsudo chown -R "$USER":admin /Library/Caches/Homebrewbrew link libpng참고 출처 :[1] : https://gist.github.com/TonyMtz/d75101d9bdf764c890ef[2] : https://stackoverflow.com/questions/32893412/command-line-tools-not-working-os-x-el-capitan-macos-sierra-macos-high-sierra[3] : https://stackoverflow.com/questions/39778607/error-running-react-native-app-from-terminal-ios[4] : https://github.com/mikepurvis/ros-install-osx/issues/28 #더팀스 #THETEAMS #풀스택개발자 #Node.js #백엔드 #인사이트 #꿀팁
조회수 2299

[어반베이스 피플] 알고리즘으로 전 세계 도면을 변환하다_CV 개발자 인터뷰

최근의 가장 핫한 연구분야인 '자율주행'의 바탕에는 '컴퓨터 비전'이 필요하다는 사실을 아셨나요? 홍채인식, 스노우 어플도 '컴퓨터 비전'을 사용한 사례입니다. 우리의 가까이 다가와 있지만, 기술 자체에 대해서는 어딘가 생소합니다. 어반베이스의 CV개발자 대희님이 멀고도 가까운 컴퓨터 비전의 모든 것을 알려드립니다!멀고도 가까운 컴퓨터비전(CV)의 모든 것Q. 간단한 자기소개를 해주세요.네, 안녕하세요. 어반베이스에서 컴퓨터 비전(CV) 개발자 윤대희라고 합니다.Q. CV가 생소한 분들이 많을 것 같아요. CV에 대해 쉽게 설명 부탁드려요.CV는 컴퓨터비전(Computer Vision)의 약자에요. 쉽게 말해 컴퓨터가 인체라면 '눈'역할을 담당해요. 카메라를 사용해 입력받은 이미지나 영상을 프로세싱하면 '컴퓨터 비전 처리했다'고 말해요. 예를 들면, 카메라 어플 내에서 얼굴을 인식한 후에 안경을 달아준다거나, 눈을 크게 해준다거나 그런 것들을 컴퓨터 비전에서 처리할 수 있는 거죠. Q. 그렇다면 컴퓨터 비전의 시작은 언제부터인가요? 최근에 생긴 기술 같은데요. 그렇지 않아요. CV의 시작은 60년대부터 있었어요. (60년대요?) 네. 달 표면을 찍은 위성 사진의 화질을 개선하기 위해 디지털 이미지 프로세싱 분야가 탄생했어요. 그동안 기술력이 뒷받침되지 않아서 무언가를 할 수 없었을 뿐이에요. 하드웨어, 즉 카메라 장비나 처리 기술이 발전하면서 이제서야 붐이 일어난 거죠. Q. CV 개발이 활발히 이루어지는 분야가 있을까요?핸드폰 카메라 어플, 자율주행, 홍채인식 등에도 모두 CV가 필요해요.특히 요즘 떠오르고 있는 분야가 자율 주행이에요. 자율주행을 하려면 주행 시 주위 환경을 모두 살펴해야 해요. 차선이나 신호, 보행자와 차량도 봐야 하죠. 실시간으로 영상을 인식하고 처리하는 분야이니 CV 개발이 활발해요.의학 쪽에서도 많이 써요. MRI 사진을 찍은 후 세포의 영역을 볼 때, 의사가 그 모든 세포를 볼 수가 없으니까 CV 처리를 한 후 이상이 있는 세포의 특징만 뽑아내는 거죠. 아까 말씀드렸듯이 항공 쪽에서는 옛날부터 많이 썼어요. 최근에는 무인 우주선의 이미지 분석에 사용돼요. 무인 우주선에서 여러 가지 이미지 데이터를 보내오는데, 기상상황에 의해 이미지를 제대로 판단하지 못하는 경우가 있어요. 그래서 이런 이미지들을 보정하거나 특징을 뽑아내는, 전처리 과정을 CV 통해 해야 해요. 자율주행의 차량인식스노우 어플 (출처 : 스노우 앱 페이지)홍채인식 (출처 : 삼성전자 블로그)Q. 컴퓨터 비전에 대해 조금 더 자세히 알 수 있을까요?최근에 나온 명함인식 어플도 컴퓨터 비전을 사용해요. 명함에 사람의 사진이 붙어 있는 경우도 CV를 통해서 인식하게 될 거예요. 컴퓨터의 입장에서 사람의 얼굴은 공통적인 특징이 있어요. 눈 밑, 코 밑은 어두울 것이고 광대 이마 등은 밝을 거예요. 이런 패턴을 분석해서 명함 내의 얼굴을 인식하게 만드는 것이 CV에요.Q. 제가 알기론 머신러닝도 이미지를 인식하고 분류해주는 역할이라고 알고 있어요. 컴퓨터 비전과 머신러닝은 어떻게 다른 건가요?간단히 말해 컴퓨터 비전은 '눈', 머신러닝은 '뇌' 역할이죠.CV는 머신러닝에 앞선 전처리를 해주는 역할이에요. 앞서 말했듯 CV를 통해 사람 얼굴을 인식할 수 있어요. 우리 모두 눈 밑, 코 밑은 어둡고 광대 이마는 밝게 인식되겠죠. 하지만 사람마다 패턴이 미묘하게 다를 거예요. 또한 같은 사람이라도 각도나 조명에 의해 패턴이 달라질 거고요. 그래서 이런 패턴을 분석해주는 게 머신러닝이에요.'사람'을 분류해주는 건 CV로, 그 사람들 중 '홍길동'을 인식하는 것은 머신러닝인거죠.사람을 분류해주는 건 CV, '홍길동'을 인식하는 건 머신러닝CV 개발자, 어떻게 시작했나요?Q. 개발자가 되기까지의 과정이 궁금해요. 원래 컴퓨터공학을 전공하셨나요?아뇨, 기계설계를 전공했어요. 요즘은 기계 쪽에서도 공장 자동화를 기본 베이스로 하고 있어서 물건의 바코드 인식이나 라벨 색상 처리도 모두 CV의 영역이에요. Q.기계설계 중에서도 다양한 분야가 있는데, CV를 선택하신 이유가 있나요?저는 처음부터 CV를 생각했어요. 과 특성상 하드웨어 설계와 소프트웨어 설계를 동시에 하는데 저는 소프트웨어 쪽에서도 CV를 많이 했어요. CV는 다른 것에 비해서 확실히 재밌어요. 카메라로부터 받은 데이터들을 처리하는 과정이 눈으로 확실히 보이니까 훨씬 재미있게 느껴져요.Q. 운영하고 계신 블로그를 구경한 적이 있는데, 굉장히 정리가 잘 되어 있더라고요. 블로그 사이트는 어떻게 시작하게 된 거예요? 저는 누군가에게 무언가를 알려주고, 지식을 공유하는 걸 좋아해요. 제가 알고 있는 것을 함께 공유하고 공부하기 위해 블로그를 시작했어요. 어떤 것을 설명하는 방법이 그것에 대한 가장 좋은 공부법이라는 말도 있잖아요? 정보를 함께 공유하고 피드백도 받으면서 굉장히 도움이 많이 됐어요. 그래서 지금도 계속 쓰고 있어요.대희님의 블로그블로그의 강좌 목록Open CV 강좌많은 러브콜을 뒤로하고, 어반베이스에 합류하게 된 이유Q. 어반베이스의 합류 과정이 남달랐던 것으로 알고 있어요. 일종의 '스카웃 당했다'고 말할 수 있을 것 같은데요. 합류 과정을 알려주실 수 있을까요?제가 CV 온라인 강의를 진행하고 있었는데, 그때 저를 보시고 연락을 주셨어요. 강의하는 홈페이지에는 개인적인 연락처를 적어 놓지 않고 제 블로그 링크만 달아놨었어요. 그런데 제 블로그에 있는 메일 주소를 찾으셔서 연락을 주셨어요. Q. 어반베이스의 제안을 받고 어땠어요?좋았어요. 말씀해주신 업무를 제가 할 수 있을 것 같았고, 또 면접을 함께한 현우님에게 굉장히 좋은 인상을 받았어요. 부담을 안 가지고 편하게 얘기했는데 좋게 봐주셨던 것 같아요.Q. 여러 산업분야에서 CV로 할 수 있는 것들이 굉장히 많은데 어반베이스를 선택한 이유가 있을까요?확실하게 ‘사람’의 이유가 가장 컸던 것 같아요. 어반베이스에서 저를 믿고 먼저 연락을 주셨고, 함께 이야기를 나누다 보니 좋으신 분이라는 게 확실히 느껴졌어요. 사실 다른 곳에서도 연락이 많이 왔지만 일단 제 능력을 믿어주는 사람과 같이 일하고 싶었어요. 제 능력을 펼치고 싶어도 그렇게 할 수 없는 경우가 있잖아요. 하지만 어반베이스는 확실하게 제 의견을 반영해주시고 제가 하고 싶은 일을 할 수 있는 환경이라는 생각이 들었어요. 결국은 ‘사람’이 좋아서 선택한 거죠. 그게 가장 큰 이유에요. Q. 어반베이스는 VR, AR을 활용해서 공간데이터 사업을 하는 곳이잖아요. 어반베이스 비즈니스에 대한 첫인상은 어땠어요?저는 되게 좋았어요. 자동화한다는 것 자체에 메리트가 느껴졌어요.기계공학을 전공했지만 기계공학에서 건축과 닮은 부분이 있어요. 기계 도면 역시 2D로 그린 후 3D 파일을 또 만들고, 그 이후 텍스처를 설정하는 과정을 거쳐요. 분야만 다를 뿐 일련의 과정들이 건축과 굉장히 비슷해요. 그래서 막연히 '2D 도면을 3D로 바꿔주는 과정을 CV로 자동화 처리하면 괜찮지 않을까?'라는 생각을 했었어요. 분야가 기계에서 건축으로 바뀌었을 뿐, 제가 가지고 있었던 생각이랑 어느 정도 맞아떨어지더라고요. 그래서 어반베이스 비즈니스에 대한 생각이 굉장히 좋았어요. Q. 그렇다면 입사하신 이후 느꼈던 어반베이스의 개발 환경은 어때요? 굉장히 좋아요. 사람에 대한 믿음이 확실히 느껴져요. 맡은 일에 대해 믿어준다는 느낌이 있어요. 그리고 다른 분들에게 질문을 해도 항상 본인 일을 멈추고 먼저 알려주려고 하세요. 그런 모습을 보며 억압하는 분위기가 없고, 협업을 중시하고 사람을 중시한다는 걸 많이 느꼈어요. 물리적인 환경도 좋아요. 사양 좋은 맥북을 새로 사주셨거든요. 하하사양 좋은 맥북과 함께 일하는 대희님어반베이스 기술의 핵심, 도면 변환 알고리즘을 개발하다Q. 대희님이 하고 있는 일을 소개해주세요. 건축도면 이미지(2D)를 읽어서 3D 모델로 만들어주는 알고리즘을 개발하고 있어요.도면 변환에 가장 중요한 것은 좌표에요. 꼭짓점만 알면 벽을 그릴 수 있잖아요? 2D 도면상 좌표의 위치를 알아내서 벽, 문, 창문의 위치를 만들어내는 역할이에요. 좌표의 위치를 안다면 그 도면에 대해서 3D로 만들 수 있는 거죠. 3D로 만드는 과정까지 제가 담당하고 그 후의 렌더링은 3D 파트에서 담당하고 계세요. 대희님의 작업 과정Q. 업무 일과나 업무 스타일은 어때요?하루 종일 개발밖에 안 해요. 알고리즘 만든 후에 도면을 대입해서 처리가 되는지 확인하고, 오류가 있으면 수정하는 이런 패턴의 반복이죠. 어느 정도 완성이 됐다면 다음 단계로 넘어가는 거죠.제 업무 스타일은 목표한 게 있으면 끝까지 하는 스타일이에요. 해야 할 일을 정해놓고 그 일을 모두 마쳐야 퇴근해요. (막히는 경우가 생길 수도 있지 않나요?) 그러면 쉬지 않고 계속 개발하면 돼요. (웃음)Q.대희님은 어떤 분들과 협업을 많이 하나요? 2D에서 3D로 바꿔주는 도면 변환 부분, 즉 가장 베이스가 되는 부분을 만들고 있다 보니 개발 부문 대부분과 협업을 하고 있어요. 제가 만든 것을 사람들에게 보여줘야 하니까 UI/UX팀과 협업을 많이 해요. 제가 만든 API에 대해서도 이야기해야 하기 때문에 API, 백엔드팀과도 협업을 많이 하고요.Q. CV 개발자로 입사 후 가장 기뻤을 때는 언젠가요?제가 입사한 후 CV 코드 리뷰를 하고 코드를 개선해서 확실하게 좋아진 것이 보일 때 정말 좋았어요. 제 의견이 반영이 되어 바뀔 수 있었고, 결과적으로 결과도 좋았으니까요. 그 부분이 가장 좋았어요.제가 만든 알고리즘이 도면 인식을 잘 할 때도 기분이 좋죠. 도면을 넣었을 때 내가 생각한 대로 처리가 잘 되고 생각한 대로 오류가 잘 날 때 뿌듯해요.Q. 앞으로 어반베이스 내에서 개발 계획은 어떻게 되나요?이번 해에는 도면 변환 알고리즘이 구동될 수 있게끔 만들고, 내년 초부터 코드를 수정하면서 알고리즘의 정확도를 높이는 작업을 계속하려고 해요. 그다음엔 해외 도면을 처리하는 과정을 생각하고 있어요. 데드라인이 정해져있는 프로젝트는 아니지만 최대한 빨리 진행하려고 해요. 2D에서 3D로 도면을 변환하는 개발을 저 혼자 하고 있어서 제가 일을 쉬면 프로젝트 자체가 아예 멈춰 버리니까, 되도록 빨리해야죠. 그렇게 해야 수정하고, 피드백을 받고, 출시하는 모든 과정들이 빠르게 진행될 수 있으니까요.CV 개발자에게 가장 필요한 역량은 코딩 능력이 아니다.Q. 여러 분야의 개발자가 있지만 '컴퓨터 비전(CV) 개발자'는 많이 들어보지 못했는데 최근 들어 '컴퓨터 비전 개발자'의 채용이 굉장히 늘고 있는 것 같아요. 앞으로의 CV 시장을 어떻게 예측하세요?사실 이전까지는 기술력 부족으로 할 수 있는 것이 많이 없었어요. 카메라로 찍었을 때 화질이 안 좋으면 CV 처리하기가 굉장히 힘든데 최근에 카메라 성능이 최근에 굉장히 좋아져서 처리 과정이 수월해진 거죠. 그래서 'CV 개발자'에 대한 수요도 늘고 있어요. 이미지로 무언가를 한다면 무조건 CV 개발자가 필요해요. 요즘은 손쉽게 카메라를 설치하고 이미지/영상 데이터들을 얻을 수 있으니까, 더욱 많이 필요할 거예요. 모든 산업분야에서 CV와 관련된 더 많은 개발자, 더 많은 기술이 필요할 것이라고 생각해요.Q. CV 개발자에게 가장 필요한 역량은 뭘까요? 코드를 잘 짜는 것보다 수학을 잘 하는 게 중요해요. 대부분의 이미지 인식 과정에서 수학공식이 사용되기 때문에 후처리를 하려면 수학을 잘 해야 해요. CV는 공업수학, ML은 통계학이 많이 관련되어 있어요.Q. 그러면 코드를 짤 때 코드에서 막히기보다 수학 공식에서 막힐 때가 있잖아요. 그럴 땐 어떻게 해요?늘 거기서 막혀요. 학교를 최근에 졸업했으니 아직 공식이 머릿속에 많이 남아있어서, 막힐 때가 있으면 이런저런 다른 공식 적용을 시도하죠. 어반베이스의 알고리즘으로 전 세계 도면을 변환하다Q. 좋아하거나 롤모델로 삼고 있는 사람이 있나요?루카스 카나데 교수님이요. CV 분야의 세계적인 권위자이신 분이에요. 교수님의 이름을 딴 함수가 있을 정도로요. 그 정도의 명예와 재력이 있는데도 불구하고 꾸준히 공부하고 논문을 발표하시는 모습도 정말 멋있다고 생각해요.Q. 혹시 CV 외에 어반베이스 내에서 욕심나는 분야가 있어요?머신러닝이요. CV에서 전처리를 하고 머신러닝 후에 후처리에 또 CV가 필요해요. 그래서 중간 영역인 머신러닝을 배우면 모든 프로세스를 혼자서 처리할 수 있으니까 머신러닝을 공부해보고 싶어요.   Q. 어반베이스가 혁신적인 기술을 통해서 많이 이슈가 되고 있고, 많은 컨택이 오고 있잖아요. 스스로 어반베이스의 개발자로서 어반베이스의 가능성은 어떻다고 생각해요?확실히 굉장히 높다고 생각해요. CV로 처리해서 자동화한다는 것 자체가 굉장히 뜨고 있는 기술이고 앞으로 계속 발전할 기술이기 때문에 가능성도 굉장히 크다고 생각해요. Q. 대희님의 포부는 뭐예요?전 세계의 2D 도면을 어반베이스의 알고리즘을 통해 3D로 변환할 수 있게끔 만드는 거죠. 단기간은 국내, 중장기적으로는 해외 도면까지요.컴퓨터 비전. 그저 어렵게만 느껴졌던 단어인데, 이번 인터뷰를 통해 컴퓨터 비전과 많이 가까워진 느낌이 듭니다. 어반베이스의 핵심기술을 담당하고 있는 CV 개발자 대희님! 대희님이 만든 알고리즘으로 전 세계 도면이 3D로 변환될 날이 왔으면 좋겠습니다 :)출처: https://blog.naver.com/urbanbaseinc 
조회수 850

공간 디자인의 중요성

2009년 가을, 독일 함부르크에 위치한 하겐베크 동물원(Tierpark Hagenbeck)에 방문하고나서 공간을 이해하는 관점이 완전히 달라졌다.100년이 넘은 역사를 자랑하는 하겐베크 동물원은 철장이 없는 방사식 동물원으로 유명하다. 같은 대륙의 동물들이 같은 장소에서 생활하게 하되 각 서식지 사이에 해자(성 주변에 둘러 판 도랑)를 만들어 서로 해치지 못하게 하는 방식을 세계 최초로 도입한 것이다. 사람의 시선에서는 해자가 보이지 않기 때문에 마치 광활한 평지에 여러 동물들이 자연에서 함께 어울려 사는 것처럼 보인다. 또한 습성에 따라 함께 지내는 것이 긍정적인 효과를 불러오는 동물들은 함께 서식하고, 많은 동물들이 인도에 자유롭게 활보하는 것으로도 유명하다.세계 최초의 방사식 동물원. 출처 : 하겐베크 동물원 페이스북 페이지 하겐베크 동물원은 우리 안에 갇힌 동물들을 "관찰"하는 공간이 아니었다. 동물들의 자연 서식지에 인간이 "방문"하는 공간으로 느껴졌다. 사람 중심의 공간이 아니라 그곳에 서식하는 동물 중심의 공간이었다. 이 경험이 신선한 충격이었던 가장 큰 이유는 아이들과 함께 동물원을 방문한 가족들의 모습 때문이었다. 동물원의 중요한 역할은 교육에 있다고 보는데, 이러한 방사식 공간 구성은 동물들의 자연 서식을 조금이나마 더 현실적으로 보여주고 생명 존중의 가치관을 훨씬 더 효과적으로 전달할 수 있다고 생각했다. 이때부터 공간을 연구하고 디자인하는 것에 큰 관심을 갖게 되었다. 호기심이 많다보니 궁금증이 생기면 끝없이 구글 검색을 하는 편인데, 공간의 효율성이 치명적인 역할을 하는 병원의 공간 연구, 창의성을 극대화하는 사무 공간 연구에 대해서 많은 논문을 뒤져보았다. 사실 당시 대학원 유학 준비를 시작할 때였는데 디자인씽킹(Design Thinking)의 근원지인 스탠포드 디자인 프로그램이 유일한 목표였던 나에게 새로운 호기심을 불러일으켰고, 마침내는 코넬 대학의 공간 디자인 연구 박사 과정에 동시 지원하기도 했다. (스탠포드에 진학하지 않았다면 지금 어떤 일을 하고 있을지 궁금하기도 하다.)공간에 대한 전문가는 아니지만 사무 공간 역시 공간을 사용하는 사람들에 대한 많은 배려가 필요하다고 생각한다. 단순히 넓은 공간에 좋은 책상과 의자를 배치하고, 회의실을 여러개 만들어두고, 비싼 인테리어 마감을 하는 것이 다가 아니다. 다양한 사람들과 하루동안 가장 많은 시간을 쓰는 사무 공간이야말로 과학적인 배려가 필수적이다. 디즈니, 3M, 페이스북과 같이 창의적이고 혁신적인 기업들이 공간 연구에 많은 리소스를 투자하여 홀로 집중할 수 있는 공간, 협업을 유도하는 공간 등의 다양한 조화를 만들어내는 이유가 여기에 있다.미흡하지만 개방과 폐쇄의 조화를 이루기 위해 직접 디자인한 렌딧의 사무 공간. 렌딧 민트가 포인트인 Lendit Wall 열린 커뮤니케이션을 위한 개방 공간 Creative Hall1:1 회의 공간. 답답함을 줄이기 위해 천장 개방전체적으로 개방된 공간에 각자의 자리가 있기 때문에 가끔씩 필요한 1인 집중 공간 Burning Man좀 더 편안한 분위기의 공용 휴식 공간
조회수 991

역할 중심 문화의 탄생

"역할 중심 문화는 스타트업이라고 하기엔 나이가 많고 대기업이라고 하기엔 규모가 작은 에이스프로젝트를 위해 커스터마이징한 조직구조다"창립 5년 차 에이스프로젝트는 기존의 팀장 문화를 보완할 새로운 문화가 필요했다. 팀장 문화의 문제점을 해결하고 더 발전한 에이스프로젝트만의 조직문화를 만들기 위해 여러 사람이 고민했고 그래서 나온 것이 지금의 "역할 중심 문화"다. '팀장'은 없고 '역할'은 있는 구조로, 팀장이 가지고 있던 역할을 세분화한 뒤 세분화된 역할에 따라 권한과 책임을 부여한 일종의 '직책'문화다. 리더에게 시간을 주자맡은 역할에만 집중할 수 있는 조직구조한국 사회는 여유 있는 것보다 바쁜 것을 미덕으로 생각하는 경향이 있다. 팀장이 팀을 위해 열심히 일하는 것을 나쁘다고 할 수는 없지만 팀장이 지나치게 바쁘면 오히려 역효과가 생기기도 한다. 앞서 말했듯이 팀장이 바쁘면 팀원은 제 때 피드백을 받지 못하거나 받더라도 충분히 도움이 될 만큼 받지 못하는 일이 생긴다. 시간이 부족한 팀장이 어느 한 부분을 아예 포기해버리게 되기도 하는데 이런 일이 반복되면 부족한 부분을 견디지 못하고 이탈자가 나오기도 한다. '지나친 바쁨'의 문제를 해결하기 위해 하나로 뭉뚱그려져 있던 팀장의 역할을 쪼갠 것이 '역할' 중심 문화다. 기존의 팀장이 하던 여러 가지 역할 중 '특정한' 역할만을 맡은 직책자를 두는 것이다. 예를 들어 전에는 팀장 한 사람이 퀄리티 체크, 스케줄 관리, 팀원 면담 등 오만가지 일을 다 하고 있었다면 역할 중심 문화에서는 '퀄리티 체크'만을 중점적으로 하는 역할을 맡은 사람이 생기는 것이다. 이렇게 업무를 쪼개 자신이 맡은 부분만을 깊이 있게 관리하면 직책자는 과도한 업무 부담에서 벗어날 수 있고 팀원들은 조금 더 전문적이고 자세한 피드백을 받을 수 있다. 퀄리티 체크 이외의 부분은 다른 사람이 맡으면 된다.역할 중심 문화는 과도한 업무를 효율화해 리더가 팀원과 소통할 수 있는 시간을 마련할 수 있게 한다는 점에서도 의미를 갖는다. 팀장이 할 일과 고민이 지나치게 많으면 팀원에게 고민을 공유하는 일도 줄어든다. 이미 머릿속이 복잡한 데다 공유할 시간도 없기 때문이다. 팀원은 자신이 뭘 모르는지조차 모르기 때문에 알아야 하는 것을 몰라도 질문을 할 수가 없다. '바쁨'에서 시작된 정보의 불균형은 구성원들 간의 위계를 더 공고하게 한다. 잘할 수 있는 것을 잘하자리더도 장점을 살릴 수 있는 조직문화 에이스프로젝트는 개개인의 전문화를 중요하게 생각한다. 자기 분야의 스페셜리스트가 되는 것을 장려하고 관련된 교육도 아낌없이 지원한다. 기존의 팀장 문화에서도 팀원들에게는 이러한 가치관이 반영된 인사가 시행되었다. 하지만 정작 팀장은 팀장이기 때문에 장점, 단점과 상관없이 모든 일에서 성과를 내는 히어로가 되어야 했다. 뭐든지 다 잘하는 사람이 아주 간혹 있을 수도 있지만 리더도 사람이고 분명 적성과 재능에 더 맞는 영역과 그렇지 않은 영역이 있다. 역할 중심 문화는 리더도 각자의 장점을 극대화하고 역량을 전문화할 수 있게 했다. 스케줄 관리를 하는 역할, 작업물의 퀄리티를 높이는 역할, 팀원의 성장에 도움을 주는 역할, 회사의 조직문화에 적응할 수 있도록 이끌어주는 역할 등 자신에게 맞는 '역할'을 찾아 집중적으로 그 부분을 개발하는 것이다. 모두가 적극적으로 소통하는 문화자기 의견을 표현할 수 있는 회사 한국 교육환경은 모르는 것을 질문하거나 새로운 시각을 제시하기보다 주어진 것을 제대로 암기하는 데에 초점 이 가있다. 특히 윗사람에게 시시때때로 질문하거나 반론을 제기하는 것은 '말대답'으로 치부되는 경우가 많기 때문에 다른 생각을 갖고 있어도 쉽게 입 밖으로 꺼내지 않는다. 에이스프로젝트 구성원들 역시 비슷한 환경에서 자라왔고 대부분 '팀장=윗사람', '윗사람=반론 금지'인 가치관에 익숙해져 있던 터라 쉽게 의사소통을 하기가 어려웠다. 우리는 주니어도 적극적으로 의견을 내길 권장하고 무엇이든지 함께 고민하는 문화를 추구해왔지만 기존의 팀장 문화로는 한계가 있었다.커뮤니케이션 상의 위계와 소통 불능의 문제를 해결하기 위해서는 '익숙한' 문화가 아닌 우리에게 '맞는'문화를 찾아야 했다. 특히 에이스프로젝트가 원하는 방향의 문화를 만들어나가려면 조직의 '구조' 자체가 '문화'를 담을 수 있어야 했다. 역할 중심 문화는 이런 가치관을 반영해 입체적으로 만든 조직문화다. 권한과 책임을 분산시킴으로써 직책자의 발언에서 권위를 제거해 구성원들이 보다 솔직하게 피드백하고 토론할 수 있게 한 것이다. 역할 중심 문화에서는 리딩하는 역할과 실무자 간의 업무적 차등은 있더라도 생활과 커뮤니케이션 면에서는 모든 구성원의 발언이 평등할 수 있다.역할 중심 문화, 실제로는 어떻게 운영됐을까?3편에 계속.
조회수 2206

Android Gradle Tips

안드로이드와 GradleAndroid 가 Gradle 을 이용하기 시작한 것도 3년이 다 되어 갑니다. 이제는 많은 유저가 당연히 Gradle 을 Android 기본 개발 환경으로 사용하고 있습니다.하지만 기본 설정으로만 Gradle 을 사용하는 사용자들이 많습니다. 게다가 구글에서 Android Gradle Build DSL 을 끊임없이 변경했기 때문에 많은 사용자들이 이를 이해하기도 전에 변경이 되는 경우가 매우 빈번했습니다.Gradle Dependency 분리하기안드로이드 자동화 툴위 두번의 포스팅을 통해서 TossLab 에서 사용하고 있는 Gradle 에 대해서 소개를 해드렸습니다.오늘은 Android 팀이 사용하는 Custom 설정들에 대해서 정리하도록 하겠습니다.1. 초기화 값 검증 및 설정하기개발자들이나 CI 에서 관리해야하는 속성 값에 대해서는 각각 다르게 설정할 필요가 있습니다.안드로이드 팀은 3개의 추가적인 속성값을 추가하여 사용하고 있습니다.# gradle.properties inhouse_version=2 # 배포/qa 버전의 hofix version 을 관리학 ㅣ위함 report_coverage=false # coverage 측정에 대한 on/off 기능 dev_min_sdk=21 # minSDK 의 개별적인 관리를 위함 위의 3개의 값은 존재 하지 않으면 빌드가 되지 않도록 하는 강제사항으로 만들었으나 새로운 개발자가 입사하게 되었을 때 또는 CI 서버에 실수로 기입하지 못하게 되었을 때 Project Import 나 빌드가 아예 되지 않는 현상이 발생하였기에 초기 값을 설정할 수 있도록 하였습니다.report_coverage 는 5. Android Gradle DSL 에서 buildTypes.debug.testCoverageEnabled 에서 사용되며 이 값은 설정에 따라서 디버그 과정에서 변수값들이 제대로 노출되지 않게 됩니다. report 가 필요한 CI 서버 용으로 만들어진 값입니다.// valid.gradle def checkValidProperties() { println "Properties Valid Checking.........." if (!project.hasProperty("inhouse_version")) { println "set up to gradle.propeties --> inhouse_version = 1 (default)" project.ext.inhouse_version = 1 } if (!project.hasProperty("report_coverage")) { println "set up to gradle.propeties --> report_coverage = false (default)" project.ext.report_coverage = false } if (!project.hasProperty("dev_min_sdk")) { println "set up to gradle.propeties --> dev_min_sdk = 19 (default)" project.ext.dev_min_sdk = 19 } println "Properties Valid Check OK" } checkValidProperties() // ------------------------------- // build.gradle apply from: 'valid.gradle' 위와 같이 설정한 뒤 gradle.properties 에 아무런 값을 설정하지 않고 빌드를 하게 되면 빌드 최초에 다음과 같은 log 를 보실 수 있습니다.================================================================================ Properties Valid Checking.......... set up to gradle.propeties --> inhouse_version = 1 (default) set up to gradle.propeties --> report_coverage = false (default) set up to gradle.propeties --> dev_min_sdk = 19 (default) Properties Valid Check OK ================================================================================ 2. APK Copy 하기QA 팀 전달 또는 스토어 배포시에 Android Studio 의 기본 기능을 이용하지 않고 Gradle Task 를 사용하여 빌드를 하게 되면 /app/build/outputs/apk 에 있는 패키지를 복사하는 것이 여간 귀찮은 작업이 아닐 수 없습니다.그래서 Gradle 에서 기본적으로 제공되는 Copy Task 를 이용하여 APK Copy Task 를 만들었습니다.// apk-copy.gradle android.applicationVariants.all { variant -> // 1. Copy Task 생성 def task = project.tasks.create("copy${variant.name}Apk", Copy) task.from(variant.outputs[0].outputFile) // 2. 바탕화면 Task 로 복사 task.into("${System.properties['user.home']}/Desktop/") // 3. 복사하는 과정에서 APK 이름 변경 def targetName = "jandi-${variant.baseName}-${variant.versionName}.apk" task.rename ".*", targetName task.doFirst { println "copy from ${source.singleFile.name} to $destinationDir" } task.doLast { value -> println "completed to copy : $targetName" } } // --------------- // build.gradle apply from: 'apk-copy.gradle' 위의 Task 는 총 3개의 단계로 구분할 수 있습니다.Copy Task 생성~/Desktop 으로 복사복사 할 때 APK 이름 변경Task 를 정의하는 과정에서 application 의 flavor, build-type, version 을 기반으로 복사하도록 한 것입니다.위와 같이 설정하면 다음과 같이 사용할 수 있습니다.# flavor : qa , build-type : Debug $> ./gradlew assembleQaDebug copyqaDebugApk # 또는 줄여서 아래와 같이 쓸 수 있습니다. $> ./gradlew aQD copyQDA Application Variant 에 대한 변수는 링크에서 확인하실 수 있습니다.3. CI TasksCI 용으로 CheckStyle 과 PMD 를 사용하기 때문에 관련 설정 또한 별도로 처리하였습니다.task pmd(type: Pmd) { source 'src/main' include '**/*.java' ruleSetFiles = files('../pmd.xml') ignoreFailures = true } task checkstyles(type: Checkstyle) { configFile file('../checkstyle.xml') source('src/main') include '**/*.java' classpath = files() showViolations = true ignoreFailures = true } // --------------- // build.gradle apply from: 'ci-tasks.gradle' CheckStyle 과 PMD 설정에 필요한 정보 또한 별도의 script 로 설정하였습니다.4. Gradle Properties빠른 빌드를 위해 추가적인 설정을 하고 있습니다.# gradle.properties # 백그라운드 빌드 org.gradle.daemon=true # 동시 빌드 org.gradle.parallel=true # jvm heap size org.gradle.jvmargs=-Xmx4346m # build jdk org.gradle.java.home=/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home 위의 설정 중에서 제일 보셔야 할 것이 org.gradle.jvmargs 입니다. Android Gradle 설정 중에서 위의 값이 적으면 빌드속도가 현저히 느려집니다.빌드 할 때 console log 를 확인하시고 값을 적절하게 맞춰주실 것을 권장합니다.5. Android Gradle DSL 추가 정의하기 // build.gradle // ...중략 android { // 특정 Flavor에서 Release Build 막기 android.variantFilter { variant -> if (variant.buildType.name.equals('release') && (variant.getFlavors().get(0).name.equals('qa') || variant.getFlavors().get(0).name.equals('dev'))) { variant.setIgnore(true); } } buildTypes { debug { debuggable true testCoverageEnabled = project.hasProperty("report_coverage") && report_coverage.toBoolean() } // ..중략... } productFlavors { dev { // demo version applicationId 'com.tosslab.jandi.app.dev' versionName(defaultConfig.versionName + ".dev." + inhouse_version) minSdkVersion project.hasProperty("dev_min_sdk") ? dev_min_sdk : 19 } // ..중략.. } // 빌드 과정에서 CPU 와 Ram 최적화 하기 dexOptions { javaMaxHeapSize "2g" maxProcessCount Math.max(1, ((int) (Runtime.getRuntime().availableProcessors() / 2))) } } variant-filter 를 이용해서 qa 나 dev 용 빌드는 release 버전이 빌드되지 않도록 하였습니다.buildTypes 와 productFlavors 에서는 앞서 설정한 gradle-properties 에 대해서 설정에 따라 기본값이 지정되도록 하였습니다.dexOptions 설정은 개발하는 기기의 PC 환경에 따라 다를 수 있습니다.Android DSL 에 의하면 Dex 빌드 과정에서 최종적으로 사용하는 메모리는 heapsize * process-count 라고 합니다.heapsize 기본값 : 2048MBprocess-count 기본값 : 4참고문서6. Android Resource Image 의 EXIF 정보 삭제하기보통 디자이너가 Photoshop 과 같은 툴을 이용하여 이미지를 만들게 되면 자동으로 adobe 와 관련된 exif 정보가 붙게 됩니다. 그래서 빌드 할 때 libpng warning : iCCP ... 와 같은 warning 메세지를 보실 수 있습니다. 이는 Android Build 과정에서 aapt 가 이미지 최적화 하는 과정에서 불필요한 exif 정보로 인해서 오류를 내게 됩니다.따라서 exif 정보를 초기화 해주는 작업이 필요합니다.맥 사용자에 한해서 지원됩니다.HomeBrew 를 이용해서 exiftool 을 설치하셔야 합니다. exiftool 설명find . -path '*src/main/res/*' -name '*.png' -exec exiftool -overwrite_original -all= {} \; 저는 별도로 쉘 스크립트를 만들어서 실행합니다.아래를 복사해서 붙여넣기로 실행하시면 됩니다.echo "find . -path '*src/main/res/*' -name '*.png' -exec exiftool -overwrite_original -all= {} \;" > exif_clean.sh chmod 744 exif_clean.sh 관련 정보 : adt-dev google group 에서 제시된 해결책Wrap up안드로이드 팀은 Gradle 을 이용하여 반복적일 수 있는 작업을 자동화 하고 다양한 초기화 설정과 편의를 가지고자 하였습니다.초기화 값 검증 및 설정Apk 복사 자동화CI Task 정의Gradle Properties 지정Android Gradle DSL 정의Android Resource Image EXIF 삭제Gradle 을 얼마나 잘 활용하냐에 따라서 조직에 필요한 Task 를 금방 만드실 수 있습니다. 이번 포스팅이 도움이 되었기를 바라며 활용해보실 것을 권장합니다.#토스랩 #잔디 #JANDI #개발자 #개발팀 #앱개발 #안드로이드 #인사이트
조회수 1409

[아마존 성공 사례] 1. 아마존 판매는 장기전이다

안녕하세요 대한민국 셀러들의 성공적인 아마존 진출을 도와주는 컨설팅 회사이자 대행사인 컨택틱의 이이삭 대표입니다.인사말드디어 무더운 여름이 지나갔습니다. 7~8월은 많은 분들이 휴가를 다녀오는 시즌인데, 저희 컨택틱에서도 한동안 칼럼이 뜸했던 것도 잠시 쉬어가는 타이밍으로 여기고 있었습니다. 혹시 저희 칼럼을 기다리고 계셨던 분들이 있었다면, 늦었지만 지금이라도 양해를 구합니다.소개말다시 칼럼 활동을 열심히 시작하게 될 텐데, 기존에 유익한 내용으로 칼럼을 작성하는 것은 여전히 하되, 새로운 주제로 신규 칼럼을 정기적으로 포스팅할 예정입니다. 이 신규 칼럼의 주제는, 저희 고객사들의 사례를 기반으로 한 “실제 사례 시리즈”입니다. 컨택틱에서 직접적으로 또는 간접적으로 경험한 여러 아마존 판매 여정들과 다양한 마케팅 캠페인 및 성과를 여러분들께 공유를 해드릴 생각입니다.아무래도 강의나 칼럼을 통해서 이론에 대해서는 잘 숙지를 할 수 있더라도 실제 사례들을 접할 수 있다면 식어버린 열정도 다시 불태울 수 있고, 성공 사례를 통해서는 ‘나도 할 수 있다’는 희망이 생겼으면 하는 바람입니다.마지막으로, 이 시리즈의 주인공이 될 분들은 저희의 실제 고객사들이기 때문에 가명으로 칭하는 것과 민감할 수 있는 정보는 블러 처리가 되어 공개되는 점 미리 양해를 구합니다.본문- 시작 -때는 2016년 8월이었습니다. R사의 신사업개발부의 부장님과 과장님과 대리님은 우연한 기회로 컨택틱을 알게 되어 미팅을 요청했고, 이윽고 만나게 되었습니다. 상품은 전자제품이었고 특별한 기능도 탑재된 상품이라 한눈에도 관심이 갔습니다. 전자제품은 대체적으로 전 세계 어디에서나 환영받는 상품군이라 컨택틱도 긍정적으로 검토했었습니다.컨택틱의 업무대행은 체계화된 틀이 있기 때문에 입점에서부터 상품 등록과 FBA 입고는 정해진 틀에 따라 금방 이루어졌습니다. 물론 수많은 경쟁 리스팅들과 결국 경쟁을 하는 것이기 때문에 상품 등록 시에는 당연히 키워드 인덱싱을 통해 검색엔진 최적화도 하였으며 hypnotic copy를 통해 상품의 특장점이 잘 어필 되도록 신경을 써야 했습니다. 그렇게 판매를 위한 초석을 다진 후 첫 번째 FBA 입고 때 이 상품의 반응이 과연 어떨까 긴장하며 지켜봤던 기억이 납니다.여담이지만, 컨택틱에서 가장 강조하는 것은 그 어떤 마케팅 전략보다, 그 어떤 홍보 수단보다 ‘수요가 많지만 공급이 적은 시장, 그리고 그 적은 공급 안에서도 현재 고객들이 불만을 가지고 있는 시장’을 황금 틈새시장이라고 표현하며, 그런 상품을 소싱 해서 판매할 수 있다면 큰 마케팅 투자 없이도 나름의 매출 성과를 낼 수 있고 마케팅 투자와 병행할 경우 극적인 성공을 낼 수 있다고 경험하였으며 많은 분들에게 알려주고 있습니다. 어찌 보면 당연한 얘기임에도 불구하고 이것을 간과하는 분들이 상당히 많다는 것을 매번 느낍니다.처음에는 반응이 미지근했습니다. 황금 틈새시장이 아닌 이상 모든 상품들이 그렇듯이, 숙성의 시간이 필요하며, R사의 제품도 예외는 아니었습니다. 처음에는 하루에 하나 팔릴까 말까 했었습니다. 실제로 2016년 9월에 첫 FBA 입고를 하여 해당 월의 매출은 고작 $210이었습니다.- 문제 -아무런 마케팅을 하지도 않고도 첫 달의 매출이 $210이 발생했다는 것은 아마존 사업을 오래 지켜봐온 제 입장에서는 상당히 잠재력이 높은 상품이라고 여길 수밖에 없었으나, 이 잠재력을 어쨌거나 끌어내기 위해서는 투자가 필요하기 마련입니다. 하지만 그런 맥락에서 R사의 신사업개발부는 상당히 악조건에 처해있었습니다. 그 이유는, R사는 회사 규모가 컸음에도 불구하고 신사업개발부에 아마존에 할애할 마케팅 예산을 한 푼도 배정해주지 않는다는 것이었습니다. 왜 그랬는지는 저도 자세히 물어보지는 않았습니다. 모든 기업마다 모든 사업자마다 나름의 사정이 있다고 생각합니다.R사의 상품은 상품 자체는 좋으나, 황금 틈새시장이라고 할 정도로 좋은 상품은 아니었고, 특색은 있지만 가격대가 굉장히 저렴한 것도 아니라서 시장 안에서의 위치가 다소 애매한 상품이라고 표현하는 게 적합했습니다. 그런 상품은 더더욱 마케팅이 반드시 동행해야 많은 성과를 거둘 수가 있습니다. 하지만 상부에서는 마케팅 예산을 단 1원도 허락하지 않았으니, 매출을 끌어올릴 다른 방법을 모색해야 했습니다. 하나의 방법이 막혔다고 해서 포기했다면 컨택틱이 아니죠.- 해결책 -고심 끝에 매출을 끌어올리기 위해 생각해낸 것은 바로 ‘자사 어플을 통한 홍보’였습니다. 당연히 자사 어플을 통해 홍보하는 것이기 때문에 비용은 전혀 들지 않았으며, 다행인 것은 자사 어플의 인기가 상당했다는 것입니다. 자사 어플의 적합한 곳에 이미지 배너를 걸고, 링크를 아마존 리스팅으로 넘어가게 설정했습니다.그렇게 설정한 뒤로는, 점차적으로 매출이 오르는 것이 눈에 보였습니다. 물론 엄청난 변화는 아니었지만, 유입 자체가 올라가면서, 그 유입된 유저들 중에 몇 명이 구매를 하고, 그 구매로 인해 인덱싱이 되는 키워드들이 늘어나면서 아마존이 보유하고 있는 organic traffic도 추가로 유입되면서 선순환 구조가 생겨난 것입니다. 그것 외에도, 이미 인덱싱 되고 있던 키워드들에 대해서는 순위가 올라가면서 (상위 노출이 되면서) 점점 매출은 늘어났습니다.이렇게 외부 트래픽을 아마존으로 유입하여 마케팅하는 것을 off-amazon marketing이라고 많은 사람들이 칭하고 있습니다. Off-amazon marketing을 통해 추가적으로 유입수를 늘리고, 매출이 올라가는 것은 좋은 일이기는 하나, 그 효과를 극대화하기 위해서는 아마존 마켓 플레이스의 알고리즘을 정확하게 알고 있는 컨택틱 같은 컨설팅 회사가 중간 매개체로 전략을 구축하는 것이 굉장히 중요합니다. 이 중요성에 대해 쉽게 이해를 도와드리자면 아래의 두 가지 예시를 들 수가 있습니다: 1) 고객이 혼자서 단순히 아마존으로 추가 유입시키면 추가 유입 시킨 것에 대한 추가 매출만 발생 2) 컨택틱이 전략을 구축하면, 핵심 키워드를 미리 산출하여, 추가 유입이 클릭 또는 구매로 전환되었을 경우 아마존 알고리즘이 해당 리스팅에 대한 그리고 해당 핵심 키워드에 대한 가중치를 더하여, 단순히 외부에서 유입한 추가 트래픽뿐만 아니라, 거기에 더해 아마존 내부의 트래픽까지 병행 수혜를 받게 되는 개념입니다. 결론적으로, 컨택틱이 구축하는 전략은 아마존의 내부 트래픽까지 고려한 ‘선순환’ 구조를 만들어내는 것입니다.- 현재 -R사의 아마존 판매 여정을 전체 그래프로 놓고 봐도 상승세를 타고 있습니다. 2년이 지난 현재 시점에도 매출은 매월 늘어나고 있습니다 (아까 언급했던 선순환 구조의 실질적인 결과). 하지만 아쉽게도 R사에서는 조금만 투자를 한다면 더욱 많은 매출을 이끌어낼 수 있음에도 불구하고 아마존 시장을 적극적으로 키워내려고 하지 않는 게 참 안타깝습니다. 물론 R사는 본사의 기타 priority 사안들이 있을 수도 있으니, 섣부른 판단을 해선 안된다고 생각합니다. 하지만 가장 놀라운 것은 아래에 보여드릴 R사의 아마존 여정은 2년에 걸쳐 “단 하나의 상품만으로 만들어낸 결과”라는 사실입니다. 만약 이 리듬을 키워서 10개 상품, 20개 상품을 추가적으로 출시하고 증폭했다면? 현재는 월 매출이 10만 달러 (대략 1억)은 넘었을 거라고 확신합니다. 위의 그래프를 보시면 이 하나의 상품이 얼마나 꾸준하게 성장을 했는지 보실 수 있습니다.- 결론 -R사의 사례를 통해 제가 여러분들께 알려드리고 싶은 것은 굉장히 많고 다양하지만, 그중에서 가장 강조하고 싶은 것은 바로 “아마존 판매는 장기전이다”라는 것입니다. 위 그래프를 보시면 첫 일 년은 거의 변화가 없을 정도의 아쉬운 판매율을 보이고 있으니, 당시에 똑같은 그래프를 봤더라면 ‘우리 상품은 도대체 언제 빛을 볼까’라는 걱정을 할 수 있었을 겁니다. 하지만 2018년이 되면서 매출을 꾸준히 상승하였고, 만약 위 그래프를 2020년에 다시 본다면? 지금이야 월 매출이 $8,000 선에서 고정적으로 나오고 있지만, 그때에는 이 하나의 상품만으로도 월 매출이 $20,000이 발생되고 있을 거라고 생각합니다. 아마존에 성공적인 상품 하나만 탄생하면, 그것은 여러분의 주머니를 1년, 3년, 5년, 10년 동안 든든하게 채워줄 일종의 ‘적금’ 상품과도 같다고 봅니다. 물론 모든 상품이 이렇게 양호한 성적을 내는 것은 아니며, 폭발적인 반응이 있는 상품도 있을 거고, 마케팅 투자를 했음에도 불구하고 반응이 하나도 없는 상품이 있을 수도 있습니다. 하지만 그런 모든 경우를 떠나서, 만약 조금의 반응이 있다면 그 상품은 장기전으로 바라보고 꾸준히 지켜볼 가치가 있다고 말씀드리고 싶습니다.감사합니다.컨택틱  서울특별시 강남구 강남대로 62길 11, 8층 (역삼동, 유타워)   대표 전화: 02-538-3939   이메일: [email protected]   홈페이지: https://www.kontactic.com 네이버블로그: https://blog.naver.com/kontactic  카카오브런치: https://brunch.co.kr/@allaboutamazon
조회수 1100

[인터뷰] 내 입맛에 맞게, 내가 차린 회사! 미미박스 CEO 디노의 인터뷰 by Sellev

안녕하세요!미미박스의 소식을 전해주는 Ava입니다!오늘은 미미박스의 CEO인 디노(하형석)의 인터뷰를 여러분께 소개해드리려고 합니다. 바로 며칠 전 영감을 주는 인터뷰가 가득한 SELLEV에 디노의 인터뷰가 올라왔는데요.매일매일(출장이 있으실 때 빼고) 만나는 디노이지만이렇게 또 CEO의 생각을 접하게 되니어떻게 오늘 하루를 보내야 할지 다짐을 한 번 더 하게 되네요!그럼 디노가 영상에서 어떤 이야기를 나눴는지 간단히소개 드리겠습니다! #동기부여흔히 실리콘밸리에 있는 기업들을 떠올리면 '복지', '자유' 등을 떠올리는데요.디노가 느낀 실리콘밸리는 자기 동기부여를 통해 일하는 사람들로 꽉 찬 곳이었다고 합니다.이를 보고 위기의식을 느낀 디노는 '우리도 자기 동기부여를 통해 일할 수 있는 회사'를 만들자고 하게 된 것이죠.#창업 계기 '오직 일에만 집중할 수 있는 회사'국내 회사의 문화들을 보면서 디노는 '일에만 집중할 수 있는 회사'를 가고 싶었다고 합니다.하지만 국내에는 그런 회사가 없지 않을까? 하는 생각을 했고, 결국 자신이 꿈꾸는 회사를 직접 창업하게 된 것이죠!#리더십리더십은 경력, 직급, 직책에서 나오는 것일까요?디노는 '오늘 입사한 인턴도 미미박스에 새로운 비전을 제시할 수 있다'고 얘기합니다.그렇게 미미박스는 '반란을 꿈꾸는 사람들'이 모이게 된 것이죠!리더십에 가장 중요한 것은 확고한 철학 아닐까요? #당장 실행하세요'당장 실행하세요'미국에 진출하게 된 것도, 이렇게 미미박스가 성장하게 된 것도 이런 디노의 철학을 바탕으로 나온 결과물이라는 생각이 들어요. 실제로 디노는 만나고 싶은 사람이 있으면 SNS를 통해 물어보고 연락한다고 합니다.고민하고 정의하는 것보다 먼저 실행하는 것! 그것이 영감이 되고 경쟁력이 되지 않을까요?이렇게 디노의 이야기를 만나보았습니다. 여러분은 어떤 생각이 드시나요!?여러분도 오늘 만나고 싶었던 사람이 있다면,혹은 해보고 싶었던 일이 있었다면 작은 것이라도 한번 실행해 보는 건 어떨까요. 
조회수 1220

잘 나가던 Wearable device는 왜 위기를 맞이 했을까? :: 바이오/헬스케어 사업화에서 고려해 볼 부분

열흘전 국내 탑대학 모학과 수업에서 3billion의 서비스 체험을 포함해 수업을 진행했다.학과 교수님께선 학생들에게 최신 헬스케어 제품을 직접 활용해 보며, insight를 얻기를 바라시는 마음으로 서비스 의뢰를 했었고, 14명의 학생들에게 모두 체험 기회를 주기 위해 불완전 하지만 예산 안에서 최선의 seq 방식인 Genotyping chip을 활용해 sequencing을 진행하고, 지난해 미국 희귀질환 환자들에게 베타테스트를 진행했던 3billion의 B2C 웹기반 제품을 제공했다.열흘이 지난 현재 서버를 확인해 보니, 14명 중 자신의 account에 로그인 해 결과를 확인해 본 학생들은 딱 절반인 7명. 나머지 7명은 아예 로그인을 시도한 적도 없다.사실, '건강한 일반인'은 질병에 별로 관심이 없다. Risk가 직접적으로 와닿지 않기 때문이다. 담배가 안 좋다고 해도, 당장 나는 건강하기에, 폐암의 위험에는 관심이 없는 것 처럼.건강한 여성은 생애 유방암 발병 확률이 12%나 된다. 하지만, 건강한 여성이라면 유방암을 크게 걱정하지 않는다. 그러나, 유방암 가족력이 있는 여성이라면 한발 더 나아가, 좀 더 직접적으로 위험을 관리할 필요성을 느끼게 된다. 안젤리나 졸리도 이런 여성 이었기에, BRCA test를 받게 된 것.즉, 위험이 개인화 되기 전엔 건강한 일반인에게 질병의 위험도를 관리하게 하는 것은 무진장 어려운 일이다.건강한 일반인을 대상으로 하는 Healthcare 사업( wearable device 나 일반인 대상 질병 위험도 유전자 검사)는 그래서 쉽지 않다. 관심도 없는데 거기에 적지 않은 돈까지 지불해야 하는 서비스라면. 그런 서비스를 통해 불편하게 내 생활을 관리까지 해야 한다면? 그래서 대부분의 건강한 일반인 대상 서비스 구매자들이 대부분 짧은 시간 내에 사용을 중지하게 된다.DTC 규제 완화로 '질병 위험도 검사'를 풀어달라는 업계의 요청이 많지만, 사실 이 영역은 사업성이 그리 크지 않다. 미국의 DTC 검사도 '조상분석'을 하는 AncestryDNA가 질병을 조금 포함한 23andme와는 비교도 안 되는 성공을 거두고 있다. 심지어 23andme 를 구매하는 고객들도 대부분 조상분석을 위해 구매를 한다. ( FDA 규제로 질병 검사가 빠졌을 때의 판매량과 규제 개선 후 질병 포함한 제품의 판매량의 차이가 전혀 없었다 )그럼 질병은 누가 관심이 있을까? 당연하게 환자다. 적어도 증상이 있거나, 혹은 진단을 받은 환자가 관심이 있다. 혹은 진단을 위해 이런 제품이 필요한 병원/의사가 필요로 한다. 건강한 일반인이라면, 가족력이 있거나 질병 위험 인자(비만, 만성 증상)를 가지고 있는 사람들이 될 것이다.3billion의 시작엔 이런 고민이 있었다. '문제'를 풀고자 하는 고객에게 '솔루션'을 제공해야만 가치를 전달할 수 있고, 사업도 성장할 수 있다. '문제가 없는 고객'에게 솔루션은 의미가 없다. 문제를 풀기위해 소비자들은 비용을 지불한다.가격이 아무리 싸지더라도, 필요없는 제품을 소비자는 구매하지 않는다.지금은 여러 hype가 시장을, 자금을 움직이고 있지만, 사업의 핵심은 변하지 않는다.#3billion #헬스케어 #기술기업 #기술중심 #인사이트 #시장분석
조회수 1519

왕에게서 배우는 스타트업(1)

초심을 가진 자 나라를 세우고,초심을 잃은 자 나라를 잃는다.(태조 이성계)조선의 개국을 생각하면우리는 태조 이성계를 떠올린다.위화도 회군을 하여 고려를 무너뜨리고,조선을 세웠던 군사적 쿠데타 또는 혁명에 대하여굳이 역사를 잘 모르더라도드라마, 영화, 소설을 통해 자주 접했을 것이다.이성계를 타고난 창업가라고 보기에는 조금 무리가 있다.무장으로서는 이름을 날렸지만,처음부터 조선 건국을 생각했던 인물은 아니다.오히려 왕으로 만들어진,왕으로 세워진 느낌이 좀 있다.사실 여러 전투에서 승승장구하고,장군으로써 입지는 다졌지만,그에게 부족한 점도 많았다.그를 왕으로 이끈핵심 조력자 둘이 있었으니그들은....1. 혼자서는 리더가 될 수 없다!    태조 이성계 : 적재적소에서 활약하는 팀원들정도전은 뛰어난 기획자였다.어떤 국가를 만들 것인가에 대한 계획과 목표가 확실했고, 구체적이며 실행력이 뛰어났다.스타트업의 모든 업무의 시작은 기획이듯,그의 조선 개국 시나리오는 상당히 세련된 형태더라.리더를 부추겨서 군왕의 길을 걷게 하는 설득력과고려왕조가 아닌 조선 건국이 필요한 논리와 근거,타이밍을 정확하게 캐치하는 순발력은 이성계로 하여금 왕이 될 환경을 만들어 주었다.그의 국가관은 민본(고객중심)이었고, 고려의 말기에 부조리와 불합리로 고통받는 백성들의 목소리에 피드백으로 국가 판을 흔들게 되었다.또한 그는 어찌 보면 스펙 버프가 없는 사람이었다.정도전은 서얼이었고, 능력보다 출신성분과 가문의 후광이 중시되는 사회에서강한 동기를 가졌다고 보인다.그래서인지 그의 정책은 음서 폐지(연고 차별 없는 인재 등용)를 시행하였는데...쉽게 말하면, 흙수저에서 공명정대, 정정당당의 기회 제공을 하는 제도이다.더불어서 그는 리더에 대한 견제이자 교육을 신경 썼다.그의 컨설팅 시스템은 "경연"이라 불리는데...수시로 민심을 파악하는 피드백이자, 임금을 교육하고, 시스템으로 후임 양성을 계속 가능하도록 하는 제도이다.현대식으로 말하자면,- 하루 3번 2시간씩 신하에게서 교육을 받는 왕 -> 직원에게서 배운다- 잠들기 전에 상소문을 확인(악플 확인) -> 고객에게서 배운다.그리고 뛰어난 마케터가 있었다.무학(천민 출신의 스님)조선은 숭유억불 정책으로유학(유교)을 숭상하고,불교를 억누르는 방식을 지향하였다.그런데... 스님께서 어인일로??그는고려 말기 불가의 잘못된 것을 직설하고,폐해로 인해 고통받는 백성을 일찌감치 알았다. 어찌 보면 불가 입장에서는 배신자이겠지만,어찌 보면 진심으로 불가를 사랑했기에조선 건국에 앞장섰을 테다. 자신이 속한 조직의 불합리와 부패에 대하여바꾸려고 노력하였으나 쉽지 않았고,때마침 새나라를 만드는데 새로운 규율과 새로운 변화로 개혁하고자 했다.더군다나 민간에 조선 건국의 타당성을적극적으로 홍보 한 인물이다.특히 당시 개성에서 한양으로 조선의 수도를 옮기는데 지대한 영향을 끼쳤는데..."풍수지리"를 이용하여 태조 이성계와 백성들에게한양 천도의 당위성에 대하여 설파하였고,조선의 개국을 백성들에게제대로 알릴 수 있었다.더불어, 기존에 개성 주변에 있었던개성의 인프라와 귀족들과 거리를 두며한양에서 신진사대부들을 중심으로 제도를 재편성할 수 있었다.태조 이성계와 Co-founder들을 볼 때면, 얼마나 팀원과 조직의 힘이 중요한지 엿볼 수 있다.2. 탁월한 통찰력의 세종대왕 님대한민국 국민이라면,너무나 좋아하고, 유명한 왕!세종대왕!물론 세종대왕은 창업자라기보단조선을 발전시키고,기틀을 단디 하였던 왕이다.그의 경영능력을 한 번 돌아보면,1) 외국 문물을 도입: 시장조사 및 네트워킹 구축특히 중국과의 외부 교류와 문물 도입을 추진하면서, 네트워킹도 강화하고, 트렌드에 민감해졌다.북방민족의 상황을 주시하면서,군사력과 외교력으로 4군 6진을 개척하기 이른다.2) 과학/기술: 핵심기술, 모방, 인재양성외국 문물 중에서 우리에게 적용 가능한 기술들을모방하고 더 나아가 자체적인 기술력을 확보하기 애썼다.더군다나 기술인력을 중시하여 장영실과 같은 인재를 발탁하였고,자격루를 비롯한 다양한 과학기술을 보유하게 되었다.인재를 양성함에 있어 출신성분보다능력에 비중을 둔 점에서 당시 시대상황을 비추어파격적이라고 할 수 있다.3) 한글 창제(훈민정음) : 고객과 커뮤니케이션 채널을 구축백성들과의 커뮤니케이션에 장애가 되는 채널을새로 구축하면서 고객의 목소리에 쉽게 귀 기울일 수 있었다.상소문은 보통 유생들과 지방관리들을 통해전달되는데 중간에 정보의 왜곡이 발생할 수 있다는 점에서직접 소통을 통한 의견 반영을 위해훈민정음을 창제하였다.CEO일수록 더 고객의 목소리에귀 기울여 야한다는 가르침을 준다.4) 집요한 내부인력 관리황희 정승을 퇴직하지 못하게 하고계속 부려먹었다는 일화는 유명하다.(조말생, 최윤덕, 유의손, 박안신, 이직 등유능한 신하들이 사직하고자 했을 때,계속 사직을 허가하지 않고 부려먹었다고 한다)황희 정승을 비롯하여 너무나 고생한 신하들이 자리에서 물러나고자 할 때마다,"윤허하지 아니 하였다"라는 기록이 있다.사람들은 그렇게 세종대왕이 동료들(신하)을 가혹하게 부려먹은 것 아니냐고 하는데....그 비하인드 스토리는 알고 있는지...세종 19년 ~ 24년까지 기록에 따르면,세자(후계자)에게 업무를 좀 나누려고 할 때마다황희 정승을 비롯한 신하들은 반대를 한다.심지어 왕이 눈병이 심해서 업무를 보기 어려워서서류 업무는 좀 세자에게 넘기자고 하니그것도 반대하고 세종대왕은 계속 일을 한다.신하들을 붙잡아 놓은 이유와 동일한 기준으로자신도 업무에서 벗어나지 않는다.이러한 의사소통도 특이점이지만,자신도 그 기분 안에서 모범이 되도록행동하고 있다는 사실에서내부 고객들과의 수평적인 관계를 추론날 수 있다.(왕이라는 이유로 예외가 되지 않는 모습 멋져요)사실 능력 있는 인재를 붙잡아두기 위해부단히 노력했다고 평가한다면...나는 세종대왕님 "빠"일까?그리고 집헌전 학자들과 많은 논쟁과설득의 작업이 있었다는 점에서고단한 인력관리를 이끌어갔음을 느낄 수 있다.신하들 입장에서는 피곤한 왕이기도 하다.강한 업무강도와 고압적인 리더십으로 끌고 갔다면,어쩔 수 없이 리더를 따라 갔겠지만,뒷 탈이 많이 있었을테다.못 이기는 척하면서 세종대왕을 따른 신하들!정인지, 최윤덕, 이순지, 이조우, 박연, 성삼문, 김종서 등그들은 세종대왕의 목적이 왕실의 번영이 아니라백성을 애민하는데 있음을 알기에고단한 길을 함께 걸었다.그리고 사실 세종대왕의 리더십은"안 하면 죽는다"가 아니라"안 하면 더 귀찮게 한다"이다.공포로 리드하는 것이 아니라필요로 리드하는 스타일이랄까?거기에 백성이라는 명분을 얹어서할 수 밖에 없는 상황으로 끌고 가는 지독한 CEO라고 볼 수 있다.잠시 이야기를 새자면,세종대왕님은 즉위 첫 해부터 7년간 매우 힘들었다.가뭄이 끊이지 않았고, 백성들은 초반에 나랏님을 원망하곤 했다.거기에 몸이 그리 튼튼하지도 않았다.실록에는 세종대왕님이 잔병치레가 많았다고 기록 되어 있다.이러한 조건을 감안할 때, 그분의 리더십에 경외심이 안 생길 수 없더라.3. 시스템을 완성하다! 성종세종대왕님의 경영능력을 살펴보았으니...이번에는 조선 전기의 또 한 분의 뛰어난 왕이었던성종 이야기를 하고자 한다.성종의 가장 큰 업적은경국대전의 편찬이다.쉽게 말해서 법전인데회사로 치면,회사 내규 확립, 시스템의 완성이랄까?비로소 윗대들의 고생과 노력을 시스템으로 완성하였다고 볼 수 있다.리더의 의지만으로 시스템이 구축되지는 않는다.게다가 나라의 법률의 총 집약과 이에 대한 부수적인 세칙들을 모두 정리하는 것은 담당 실무자들이어마어마하게 고생했다는 뒷 이야기가 숨어있다.특히 시스템을 구축하는 업무는 눈에 띄지 않는다.매출이나 투자 등의 퍼포먼스가 있는 결과물이 아니기에주목 받기는 어렵다.하지만 내실이 든든한 회사는바로 이러한 업무들이 켜켜히 쌓여가는 회사다.지루하고 반복적인 확인 작업과과정 하나 하나를 되돌아보면서문제점을 수정해나가는 업무가 태반인시스템 구축은 회사가 더 크게 성장하기 위한 기초작업이자 필수작업이다.그리고 성종은 특히 학구자적인 왕으로 유명하다.배우고, 책 읽기를 매우 좋아하였고,경연을 가장 잘 활용하고, 즐겼던 왕이기도 하다.배움만으로 그치는 것이 아니라실제 현실에서 잘 활용되고 있는지확인 및 검토를 자주 하였다.경국대전의 경우,법전으로 편찬되었지만실제로 백성들에게 활용되고 있는지성종 본인이 수시로 확인했다고 실록에는 기록되어 있다.우리는 회사의 정책과 방향에 대하여구호만 외치는 것이 아니라 제대로시행되고 있는지,시스템에 보완할 사항은 없는지 꾸준히 살펴보아야 한다.더불어 영업이나 경영 자체도 중요하지만,더 큰 성장을 위한 배움을 가까이하여야 한다.4. 관리를 잘못하면 한 순간에 폭망!   : 연산군이번엔 분위기를 좀 바꿔서...연산군....창업을 잘 해도,잘 관리 못하면 망한다는 전형적인 경고를 주는 인물이다.연산군의 집권 초기 10년간은조선시대 역사상 가장 태평성대의 시대였다.그도 그럴 것이 선대들로부터 받은 조선이라는 유산이 빛을 발할 때였거든.문제는 연산군이 말아먹었다는 거다.흥청망청 이란 말은경청하지 않고 좋은 것만 듣고, 망할 것만 듣는다란 뜻이다.바로 연산군을 빗대어 딱 맞는 말이다.오죽 듣기 싫은 말을 입 밖으로 꺼내지 말라고신원패라는 제도를 만들었는데경고장을 모든 신하와 주변인들의 목에 달아서 말을 못 하게 하였다.그리고 소통의 부재!강력한 왕권을 가지길 원한 이유는 설이 분분하지만...일단 어릴 적부터 엄마에 대한 콤플렉스도 있었고,(울 엄마 억울하게 돌아가심! 꼭 복수할 거임)아빠에 대한 불만도 있었다.(아빠가 공부를 좋아하는데 나는 싫어!)(아빠가 왕인데 피곤하게... 귀찮은 일이 많아!)뭐 이런 추측성 이야기들이 있는데...어쨌든 왕이잖아.개인적인 사정이나,사적인 원한도 있겠지만...나라를 이끌고,백성을 보살펴야 하는 자리잖아.근데...스스로를 컨트롤 못 하더니결국은 국밥 말아먹듯다 말아드셨다.창업을 하고,발전을 하고,시스템을 만들고 배울 점이 많으나한편으로는 제대로 된 후계로 이어지지 않으면,공염불이 되어버리는 것이 바로 경영이다.왕의 리더십과합이 잘 맞는 조력자들, 백성들의 피드백,운영 철학과 실천...비록 오래전,역사 속의 이야기들이지만,오늘을 살아가는 우리 창업자들에게,그리고 여러 리더들과동료들에게 교훈을 준다.다음번 브런치에서는 조선 후기의 왕들을 살펴볼까 한다.#클린그린 #스타트업 #창업자 #창업가 #마인드셋 #조언
조회수 3239

eventlet을 활용한 비동기 I/O 프로그래밍

안녕하세요. 스포카 크리에이터팀 문성원입니다. 현대적인 프로그래밍 환경에서 네트워크는 더는 특정 직군의 개발자만 접하는 분야가 아닙니다. 그런 만큼 대량의 요청을 네트워크를 통해 송수신하는 프로그램이 생각보다 성능이 나오지 않는 경우를 경험하신 분들도 많으실 겁니다. 물론 스포카 개발팀도 예외는 아니었습니다. 그래서 오늘은 저희의 이러한 경험과 그 해결책-eventlet을 통한 비동기 I/O(Asynchronous I/O)-에 대해 소개합니다.Why우선 스포카 개발팀에서 겪었던 문제부터 시작하죠. 얼마 전 페이스북(facebook)의 FQL(Facebook Query Language)를 통해 정보를 수집해서 이를 활용하는 기능을 작성해야 했습니다. 기존의 함수들은 필요할 때마다 FQL을 요청하는 방식이었고 당연히 이건 너무 느렸죠. 그래서 생각한 것이 “하루의 일정 시간마다 대량의 FQL 요청을 보내서 필요한 정보를 미리 갱신시켜놓자.”였습니다. 여기까진 좋았죠. 이때 제가 작성한 코드의 얼개를 살펴보면 대강 이렇습니다.# 페이스북 계정들을 가져와서 반복하면서for account in FacebookAccount.query:    account.update() #FQL을 보내자.view rawgistfile1.py hosted with ❤ by GitHub그런데 문제가 있었습니다. 기존의 FQL을 보내는 FacebookAccount.update()는 FQL요청이 완료될때까지 멈추고 기다립니다. 대부분의 FQL요청이 2, 3초 정도 걸린다고 했을 때 이러한 지연은 매우 치명적입니다. 대안이 필요했고 자연스레 떠오른 것이 서두에 소개한 비동기 I/O(Asynchronous I/O)였습니다.Asynchronous과거 일부 고급 서버 개발자만 알고 있는(혹은 알아야 하는) 기술로 치부되던 ‘비동기(Asynchronous)’란 개념은 2000년대 들어 등장한 Ajax(Asynchronous JavaScript and XML)의 성공 이후 많은 개발자에게 강한 인상을 줬습니다. 사용자는 HTTP 요청이 끝날 때까지 멈추어 있는 하얀 화면으로부터 해방되었고, 다양하고 많은 요청과 응답들이 자연스럽게 서버로 흘러들어 가서 나왔습니다. 개발자들의 이러한 경험과 통찰은 이후 node.js와 같은 플랫폼의 등장에도 많은 영향을 끼쳤습니다.다시 문제로 돌아가죠. 그렇다면 이러한 비동기에 관한 개념은 위의 상황을 어떻게 해결할 수 있을까요? 문제의 원인부터 다시 살펴봅시다. 2, 3초 정도씩 걸리는 FQL 요청이 문제일까요? 물론 요청이 매우 빨리 처리된다면 별도의 처리 없이도 저 코드는 문제없이 동작합니다. 하지만 현실적으로 이런 I/O의 속도를 빠르게 하는데에는 물리적으로 한계가 있습니다. 오히려 여기에서 주목해야 할 점은 ‘2, 3초’ 보다 ‘기다린다’라는 점입니다. FacebookAccount.update() 같은 경우, I/O가 처리되는 동안 CPU는 하던 일을 멈추고 문자 그대로 기다리게 됩니다. 만약 CPU가 멈추지 않고 다른 요청을 보낸다면 어떨까요? 이렇게 말이죠.비동기만으로는 부족하다?이러한 아이디어는 그동안 많은 개발자가 대량의 I/O를 다루는 올바른 방식으로 여겨왔습니다. 하지만 보통 이러한 비동기 I/O를 통한 구현은 동기식 I/O와는 좀 다른 형태를 띠게 됩니다. 이렇게 말이죠.# http://docs.python.org/library/asyncore.html#asyncore-example-basic-http-clientimport asyncore, socketclass HTTPClient(asyncore.dispatcher):    def __init__(self, host, path):        asyncore.dispatcher.__init__(self)        self.create_socket(socket.AF_INET, socket.SOCK_STREAM)        self.connect( (host, 80) )        self.buffer = 'GET %s HTTP/1.0\r\n\r\n' % path    def handle_connect(self):        pass    def handle_close(self):        self.close()    def handle_read(self):        print self.recv(8192)    def writable(self):        return (len(self.buffer) > 0)    def handle_write(self):        sent = self.send(self.buffer)        self.buffer = self.buffer[sent:]client = HTTPClient('www.python.org', '/')asyncore.loop()view rawgistfile1.py hosted with ❤ by GitHub불행하게도, 이 경우 기존에 사용하던 urllib2대신 HTTP 요청을 처리하는 핸들러를 이처럼 재작성 해야합니다. 거기에 FacebookAccount.update()의 호출 방식마저 바뀔 수 있죠. 더군다나 콜백(Callback) 투성이의 코드는 유지보수가 쉬어 보이지도 않습니다. 여러모로 손이 많이 가는 상황이죠.결국, 기존 코드를 최대한 수정하지 않으면서도, 어느 정도 성능은 보장되는 그런 해결책이 필요했습니다. 그런 해결책이 있을까요? 다행히도 그렇습니다.What저희가 해결책으로 택한 eventlet은 Python(정확히는 CPython)에서 코루틴(Coroutine)을 지원하기 위해 만들어진 greenlet을 이용해 작성된 네트워크 관련 라이브러리입니다. 생소한 용어가 갑자기 튀어나와서 놀라셨을지도 모르니 우선 eventlet에 대해 설명하기 전에 앞에 나온 용어들을 찬찬히 한번 살펴보죠.코루틴과 greenlet먼저 코루틴(Coroutine)부터 살펴보죠. 전산학도라면 누구나 그 이름을 한번은 들어봤을 도널드 카누쓰(Donald Knuth)는 자신의 저서 The Art of Computer Programming에서 코루틴을 다음과 같이 설명합니다.Subroutines are special cases of more general program components, called “coroutines.” In contrast to the unsymmetric relationship between a main routine and a subroutine, there is complete symmetry between coroutines, which call on each other.코루틴은 우리가 잘 알고 있는 서브루틴(Subroutine)과 달리 진입점(Entry Point)이 여러 개일 수 있습니다. 쉽게 이야기하면 실행을 멈췄다가(Suspend) 재개(Resume)할 수 있다는 점인데요. 이 특성을 살리면 우리가 익히 아는 스레드(Thread)처럼 쓸 수 있게 됩니다. 다만 스레드와 달리 코루틴은 비선점적(Non-Preemptive)이기때문에 코드의 흐름을 전적으로 사용자가 제어할 수 있습니다.하지만 불행히도 모든 언어에서 이런 코루틴이 지원되진 않습니다. greenlet은 이런 코루틴을 CPython에서 지원하기 위해 작성된 라이브러리입니다.eventlet코루틴을 통해 스레드를 대체할 수 있다는 점에 주목한 사람들은 greenlet을 통해 유용한 네트워크 라이브러리를 만들어냈습니다. eventlet도 그 중 하나죠. 잠시 eventlet의 소갯글을 봅시다.Eventlet is a concurrent networking library for Python that allows you to change how you run your code, not how you write it.위에서 볼 수 있듯이 eventlet은 사용성에 중점을 두었습니다. 기존의 블로킹 I/O 스타일의 프로그래밍에 익숙한 개발자들도 쉽게 비동기 I/O의 장점을 얻을 수 있게끔 하는 게 목적이죠.특히 저희가 주목한 점은 eventlet의 멍키패치 기능입니다. 멍키패치는 본래 동적 언어에서 런타임에 코드를 고쳐서 별도의 파일 변경 없이 본래 소스의 기능을 변경하는 것을 말합니다. eventlet은 eventlet.monkey_patch 메서드를 통해 표준 라이브러리의 I/O 라이브러리를 논블러킹으로 동작하게끔 변경해서 코루틴에 적합하게 만듭니다.How앞서 소개한 eventlet.monkey_patch를 이용하면 실제로 고칠 부분은 정말로 적어집니다. 다음 코드가 eventlet을 이용해 변경한 전부입니다.import eventleteventlet.monkey_patch() #표준 라이브러리를 변환# 여러가지 import를 하고...pool = eventlet.GreenPool()# 페이스북 계정들을 가져와서 반복하면서for account in FacebookAccount.query:    # 코루틴들에게 떠넘기자.    pool.spawn_n(FacebookAccount.update, account)        pool.waitall()view rawgistfile1.py hosted with ❤ by GitHub정말 적죠? 조금만 구체적으로 살펴보죠. 우선 eventlet.monkey_patch는 socket이나 select등의 Python 표준 라이브러리를 eventlet.green 패키지안에 정의된 코루틴 친화적인 모듈들로 바꿔치기 합니다.# from eventlet/pathcer.pydef monkey_patch(**on):    """Globally patches certain system modules to be greenthread-friendly.    The keyword arguments afford some control over which modules are patched.    If no keyword arguments are supplied, all possible modules are patched.    If keywords are set to True, only the specified modules are patched.  E.g.,    ``monkey_patch(socket=True, select=True)`` patches only the select and     socket modules.  Most arguments patch the single module of the same name     (os, time, select).  The exceptions are socket, which also patches the ssl     module if present; and thread, which patches thread, threading, and Queue.    It's safe to call monkey_patch multiple times.    """        accepted_args = set(('os', 'select', 'socket',                          'thread', 'time', 'psycopg', 'MySQLdb'))    default_on = on.pop("all",None)    for k in on.iterkeys():        if k not in accepted_args:            raise TypeError("monkey_patch() got an unexpected "\                                "keyword argument %r" % k)    if default_on is None:        default_on = not (True in on.values())    for modname in accepted_args:        if modname == 'MySQLdb':            # MySQLdb is only on when explicitly patched for the moment            on.setdefault(modname, False)        on.setdefault(modname, default_on)            modules_to_patch = []    patched_thread = False    if on['os'] and not already_patched.get('os'):        modules_to_patch += _green_os_modules()        already_patched['os'] = True    if on['select'] and not already_patched.get('select'):        modules_to_patch += _green_select_modules()        already_patched['select'] = True    if on['socket'] and not already_patched.get('socket'):        modules_to_patch += _green_socket_modules()        already_patched['socket'] = True    if on['thread'] and not already_patched.get('thread'):        patched_thread = True        modules_to_patch += _green_thread_modules()        already_patched['thread'] = True    if on['time'] and not already_patched.get('time'):        modules_to_patch += _green_time_modules()        already_patched['time'] = True    if on.get('MySQLdb') and not already_patched.get('MySQLdb'):        modules_to_patch += _green_MySQLdb()        already_patched['MySQLdb'] = True    if on['psycopg'] and not already_patched.get('psycopg'):        try:            from eventlet.support import psycopg2_patcher            psycopg2_patcher.make_psycopg_green()            already_patched['psycopg'] = True        except ImportError:            # note that if we get an importerror from trying to            # monkeypatch psycopg, we will continually retry it            # whenever monkey_patch is called; this should not be a            # performance problem but it allows is_monkey_patched to            # tell us whether or not we succeeded            pass    imp.acquire_lock()    try:        for name, mod in modules_to_patch:            orig_mod = sys.modules.get(name)            if orig_mod is None:                orig_mod = __import__(name)            for attr_name in mod.__patched__:                patched_attr = getattr(mod, attr_name, None)                if patched_attr is not None:                    setattr(orig_mod, attr_name, patched_attr)        # hacks ahead; this is necessary to prevent a KeyError on program exit        if patched_thread:            _patch_main_thread(sys.modules['threading'])    finally:        imp.release_lock()view rawgistfile1.py hosted with ❤ by GitHub이렇게 바꿔치기된 eventlet.green안의 모듈들은 I/O에 의해 블럭되는 경우 다른 코루틴에 제어권을 넘기는 식으로 지연을 방지합니다.다른 대안들사실 이러한 목적으로 사용되는 라이브러리는 eventlet만 있는 것은 아닙니다. gevent는 eventlet에서 영향을 받았지만, libevent를 기반으로 하여 더욱 나은 성능과 성숙한 인터페이스를 갖추고 있습니다. 저희처럼 libevent의 설치에 제한이 있는 환경이 아니라면 이쪽을 살펴보셔도 좋습니다.만약 이벤트 주도적 프로그래밍(Event-Driven Programming)에 흥미가 있으신 분은 Twisted역시 좋은 대안이 될 수 있습니다.#스포카 #개발 #개발자 #인사이트 #꿀팁
조회수 1281

브랜딩은 정말 매출을 높여주는 걸까?

많은 클라이언트들의 고민 중 하나입니다. 브랜딩에 수백~수천을 쏟아붓고는 싶은데(실제로 쏟아붓기도 하고) 그게 매출로 이어질지에 대한 확신이 없어서 의뢰를 망설이는 경우.대부분 브랜딩을 언급하는 글에서는 매번 배달의민족, 산돌, 질레트, 애플, 현대카드, 화웨이, 알리바바 등 대단히 대단한 곳들의 사례를 언급하면서 이런저런 주장을 하는데... 이번 글은 그런 대단한 기업 얘기가 아니라 실제로 제가 했던 조그맣고 평범한 기업들의 얘기를 해보려고 합니다.브랜딩에 돈을 쏟았다.를 얘길하려면 먼저 정의내려야 하는 것이 있습니다. 브랜딩은 뭔가. 난 뭐에 돈을 쓴걸까. 정말 그게 브랜딩이긴 했을까? 브랜딩과 마케팅을 구분한다는 건 겁나 민감한 일이더라구요. 서로 부심이 쩔어서인지 조금만 영역을 넘어와도 '그건 마케팅이지!!' , '그건 브랜딩이지!' 하면서 갑론을박 오져버리니까요.브랜딩은 확실히 의식/심리적인 단계의 이야기에 가깝습니다.마케팅은 좀 더 행동, 공식, 루트, 설계단의 이야기에 가깝죠.일단 인식을 하고, 행동이 이루어지는 법이니까요. 혹시 여기서부터 빼액!!! 하실 수도 있는데 끝까지 들어보세요. 브랜딩과 마케팅은 인과관계처럼 미묘하게 비슷하면서 분리되어 있습니다. 하지만 우린 오늘 매출얘기를 해야하니 조금 재미없고 딱딱하게 가볼께요.1. 브랜딩과 마케팅은 뭘까.- 브랜딩매출은 돈에 관련한 얘깁니다. 숫자죠. 숫자니까 법칙이란 게 존재합니다. 매출은 A를 주고 B를 얻는 거예요. 그러니 교환관계에 있습니다. 플러스가 될지 마이너스가 될 진 사실 몰라요. 이걸 표현하는 가장 좋은 수단은 함수죠. 중딩때 배웠던 1차함수를 볼께요. y=nx이건 브랜딩입니다. x는 브랜드고 y는 인식입니다. 매출일수도 있겠네요. 원래 내가 x를 줬으면 고객도 동일하게 인식해야 하니까 y=x관계가 제일 이상적일 거예요. 하지만 브랜딩은 고객의 마음 속 필터를 거치죠.  n입니다. 어떤게 곱해질지는 모르죠. 그게 마이너스일수도 있고, 플러스일수도 있어요.  브랜딩전략의 역할은 n값이 1에 수렴하도록 조정하는 일입니다.- 마케팅마케팅도 함수관계에 있습니다. 매우 비슷하죠. 하지만 마케팅의 경우는 n의 값을 높이고 그걸 유지하는 데에 집중해요. 다음을 볼께요.y=x(n+1)-4(n+1)-4 부분은 x가 어떤 공식내에서 어떻게 움직이고 변환되는 지를 규정합니다. n값에서 1을 뺀 후그 값을 x에 곱하고거기서 4를 빼자.라는 일련의 프로세스를 의미합니다. 구매버튼을 누르는데 불필요한 배너를 없애고링크로 바로 연결할 수 있게 만든 후결제를 네이버페이와 카카오페이로 연동해서 쉽게하자.이런 식으로 행동과 법칙을 규정하니까요. 그래서 마케팅은 n값을 극대화시키는 데에 초점을 맞춥니다. 흔히 ROI라고 부르는 것이죠. 마케팅은 단순히 알리는 영역이 아니라, 그 이후의 단계에 대한 설정도 포함합니다. 알려서 찾아오고 싶은 고객들을 편하고 빠르게 접근할 수 있게 합니다. 구매 이후의 CS체계도 잡습니다. 고객관리와 구매고객 대상 이벤트 등등을 통해 리텐션을 유도하기도 합니다. 그리고 그 일련의 과정은 순환관계에 있습니다. 고객들을 빤짝 모았다가 담에만나요~해버리는 식의 이벤트가 아니죠.2. 브랜딩은 수익창출을 위한 걸까?네 맞아요. 모든 기업의 움직임은 수익창출을 위한 겁니다. 숨쉬는 것도, 봉사활동도, 직원들 밥주는 것도 모두 수익창출을 위한 일련의 행동들입니다. 직원복지가 쩔어버려서 다들 침대에서 일을 한다고 해도 결국은 그걸 통해 돈 많이 벌어와!!! 하는 게 궁극적인 목적이니까요. 김봉진대표님이 '배민다움'에서 언급하신 내용이 있었어요. 기업이 있고 브랜드가 있는게 아니라 브랜드를 위해 기업이 만들어진 것이라고. 오.... 정말 크게 동의합니다. 누군가가 의지가 있었고 그래서 사람을 모았고 일로 만들어보자!! 해서 생겨난 것이 기업입니다. 그래서 서로가 뜻을 모아 그 결과를 +값으로 만들기 위해 고군분투하는 거죠. 그러니 사실 브랜딩철학이 먼저있고 기업이 나중에 있는 게 맞습니다.단, 그건 철학에 대한 얘깁니다. 구체적인 브랜딩전략과 행동은 일을 하면서 꾸준히 발생하고 이어나가야 할 '업무'의 영역입니다. 이건 기업이 지구상에서 사라질 때까지 계속 되어야 하죠. 그리고 그 업무는 '수익창출'을 목적으로 하는 것이 맞습니다. 당장 단기적인 매출이 아니더라도 멀리보고 밑밥을 던지고 복선을 까는거죠.그런데 말입니다......3. 수익창출을 측정할 수 있는가?● 측정자체가 어렵다.레알로 중요한 부분입니다. 사실 이것에 대해선 하이젠베르크의 불확정성 원리를 먼저 언급할께요. 으 과학 싫어...하고 소름이 돋는 분은 건너뛰세요.불확정성원리는 양자의 위치와 운동량은 동시에 측정 불가능하다는 이론이예요. 무언가를 관측하기 위해선 빛이 필요해요. 빛은 광자라는 물질과 파동의 성질을 동시에 띠고있죠. 그래서 에너지란게 있어요. 요즘 같은 날 햇빛을 쬐면 온몸이 타버릴 것 같은 이유도 강려크한 에너지가 피부를 때리기 때문이니까요. 관측을 하기 위해 들여다보는 순간 광자가 주변의 전자에게 에너지를 부여하게 되요. 힘을 얻은 전자는 기분이 좋아 이리저리 뛰어다니죠. 이 정신사나운 전자가 광자를 어지럽게 만들고 다시 반사된 광자는 우리에게 엉뚱한 값을 선사합니다. 때문에 관측자체가 관측을 불가능하게 만드는 모순에 빠져드는 거죠.브랜딩도 비슷합니다.브랜드가 제대로 되었는지와 그게 어떤식으로 행동으로 발현되는 지에 대해 관측값을 찾기가 상당히 모호한 부분이 있어요. 제가 요근래 삼분의일 매트리스를 사려다가 잠시 포기했거든요. 그래서 이 사례를 좀 들어볼께요.1. 삼분의일 매트리스를 알고있다고 해서 당장 꼭 사는 건 아니다.2. 긍정적이미지만 있을 뿐 이름을 기억못할 때도 있다.3. 누군가에게 전달해서 다른 사람이 구매하는 경우도 있다.4. 구매의 시점이 언제가 될 진 장담할 수 없다.5. 구매이외에 다른 프로그램(워크샵, 강의, 이벤트)등에는 참여한다.6. 또는 별다른 브랜딩과 관계없이 그냥 디자인 때문에 사는 경우도 있다.7. 사고나서 오히려 이미지가 안좋아지는 경우도 있다.등등... '알고있다' 라는 인식 다음에 벌어지는 행동의 경우의수가 너무도 다양합니다. 이걸 일일이 측정하려면 엄청난 공수가 들어갈 거예요. 불가능하진 않을겁니다. 고객들의 행동을 트래킹하고 심층면접을 하거나, 히스토리를 계속 체크할 수도 있고, 구매고객의 로그를 분석(불법입니다.)할 수도 있고.. 취조를 할 수도 있죠. 최면을 걸수도 있겠네요. 하지만 현실적으론 이렇게까지 하는 곳은 없어요. 분명 삼분의일 매트리스는 좋은 제품일거예요. 일반 매트리스에 비해 원가를 절감했고 품질은 유지했다는 것도 알겠어요. 택배로 배송되니 용달비를 안내도 돼요. 네 맞아요, 그곳은 저에게 구매욕구를 주었어요. 에너지를 주었죠. 삼분의일이 광자가 된거고 전 전자가 된거예요. 침대구매에 뽐뿌를 받은 저는 이런저런 다른 침대를 뒤적거리다가 엉뚱하게 무인양품 침대를 사버렸어요. 뭐지?......물론 다음번엔 삼분의일을 사볼거예요. 가격은 사실 똔똔이거든요. 제 브런치를 볼께요. 제가 브런치를 시작한건 1년 전이예요. 지금은 9,300명 정도되는 사람들이 모였고 250만뷰가 넘었어요. 책도 냈어요. 사실 돈이 딱히 들어가는 일은 아니었지만 시간이 엄청 들어갔죠. 매출로 이어졌느냐! 네 맞아요. 작년대비 매출은 10배 이상 뛰었어요. 하지만 그 사람들이 무엇을 어떻게 보고 왔는지는 제각각이예요. 제가 회사소개서에 대해 글을 썼다고 회사소개서 의뢰가 오지 않아요. 심지어 어떤 분은 '넵병' 이후에 그냥 꾸준히 읽기만 하다가 어느 순간에 갑자기 생각나서 연락주셨대요. 분명 밑밥은 있지만 인과로 연결시키기엔 비약이 있어요.● 측정한다고 해도 그 결과를 신뢰하기 어렵다.어떻게 어떻게 정량지표를 만들어서 측정을 해봤다고 쳐요. 이번 오프라인 행사에 150명이 모였고 그중 30명이상의 가입고객을 유치하고 싶어요. 그래서 유치를 했어요. 이건 브랜딩이 된건가요?....현장분위기에 휩쓸렸을 수도, 아니면 은근 압박감에, 또는 그냥 기분에, 아니면 선물을 받기위해... 다양한 요소가 작용했을 수도 있어요. 그리고 그 이후 그들이 가입상태를 유지하고 구매로 이어지는 가를 끊임없이 트래킹할 수 있나요? 이론적으론 그렇게 해야해요. 하지만 대부분은 안하죠. 그건 엄청나게 공수가 들어가는 일이예요.4. 그럼 브랜딩은 어떻게 수익을 창출해??수익창출이란 건 경제적으로 두가지 의미가 있어요.- 많이 팔아서 수익을 높이는 방법- 많이 아껴서 비용을 줄이는 방법인풋을 줄이거나, 아웃풋을 늘리거나. 브랜딩은 엄밀히 인풋을 줄이는 쪽에 가까워요. 그럼 이런 반문이 돌아올거예요. '아니 브랜딩하는데 계속 돈이 들어가잖아요. 근데 어떻게 비용을 줄여요!!?'맞아요. 이렇게 대답할게요. 그건 당신이 브랜딩을 구축하기 위해 이것저것 만들고 정리하는 과정에 필요한 투자예요. 건물도 지을 때는 돈이 들어가요. 다 지어지고 입주를 해야 월세가 나오는거지. 한번 브랜딩이 제대로 구축되면 그 이후부턴 오히려 잡다한 비용의 낭비를 줄일 수 있어요. 1. 우리 고객은 페북을 안해요..것도 모르고 끊임없이 쏟아붓는 페북광고비를 줄여요2. 맨날 만들때마다 새롭게 다시 만들어야 해서 시간과 비용이 들어갔던 제안서도 하나로 통일할 수 있어요.3. 컨셉이 확실하니 굿즈를 제작할 때도 기획시간이 줄어들어요.4. 엉뚱한 것에 시행착오로 버리는 돈을 줄일 수 있어요.5. 정확히 색깔이 드러나는 브랜드는 특정팬층을 확보해서 고정매출을 유도해요.6. 이것저것 난잡하게 만드느라 직원들이 피곤해지지 않아요.7. 한 사람에게 업무가 과중되서 그만두는 사원이 줄어들어요.네, 브랜딩은 이런걸 위한 거예요. 비효율적이고 난잡한 행동들을 줄이고, 집중된 전략을 만들 수 있어요. 생산성을 높이고 내부비용을 절감할 수 있어요. 제가 누누히 얘기했지만 브랜딩은 일을 벌리는 게 아니라, 현재 있는 일을 정리하고 쳐내는 것이 우선이예요. 기업입장에선 시간, 인력, 기회가 모두 비용이예요. 브랜딩은 쓸데없이 빠져나가는 사람들의 에너지와 아까운 시간, 놓쳐버린 기회등을 잡아주는 역할을 해요.그렇게 수익을 늘리는 데에 기여해요. 우리가 로고를 바꾼다고 갑자기 사람들이 우르르 달려오지 않아요. 이건 명백해요. 그리고 우리기업이 좋다는 걸 인지하고 있어도 갑자기 달려들어서 구매하지 않아요. 매출이 아닌, 비용절감을 통해 수익을 높이는 거예요.5. 실제로 브랜딩을 하고 있긴 한가요?이제 이론적인 얘긴 버리고 이런 얘길 해요. 저는 지금도 내일도 일하는 사람이니까 '일' 자체에 포커스 하는 걸 좋아해요. 그러니 전략과 이론을 좋아하시는 분은 여기서 끝내셔도 되요.실제로 매출과 브랜드에 대해 고민하고 계신 분들에게 다시 묻고싶어요. 브랜딩을 했어요! 근데 돈이 벌리지 않아요! 라고 외치기 전에 먼저 생각해볼 게 있어요.1. 그 브랜딩을 혹시 한 두사람이 영혼을 갈아서 만들진 않았나요?2. 일을 벌리기만 한 건 아닐까요? 마무리가 정확히 이루어진 것들이 있나요?3. 벌린 일들은 확실한 근거나 동의가 있었던 건가요?4. 직원들이 브랜딩작업 때문에 오히려 다들 힘들어하고 있진 않나요?5. 일회성 이벤트에만 집중하고 있는 건 아닐까요?6. 엉뚱한 곳에 과도한 돈과 시간을 쏟아붓고 있는건 아닌가요?등등등..... 사실 브랜딩을 했어요! 라긴 하지만... 이게 브랜딩인가?..아님 마케팅인가?... 에 대해선 직원도 대표님도 잘 몰라요. 이게 수익창출을 목적으로 하는건가? 아님 유지관리를 위한건가?... 뭐지? 다들 헷갈려요. 어디서 들은 것들이 많아서 why에 대한 철학과 차별점을 구축하긴 하는데..그래서 그 다음 일은 어떻게 해야하는 지 잘 모르겠어요.그래서 일단 급한 대로 회사소개서부터 의뢰를 해요.또 돈을 썼어요. 근데...그 다음은 몰라서 머리를 긁적이고 있는거예요.6. 정리브랜딩이 매출을 높였는가! 에 대해서 측정은 현실적으로 어려워요. 저 명제 자체에 대해선 긍정하지만, 우리는 불확실한 것을 측정해선 안되요. 돈을 다루는 기업이라면 더더욱 말이죠. 정리해볼께요. y=x(n+1) 에서 n의 값을 높이기 위해 일련의 알고리즘과 루트를 설계하는 일은 마케팅이예요. y=nx 에서 n을 1로 수렴시키는 행동. 널부러진 것들을 하나로 모으고 쓸데없는 걸 쳐내고, 색을 분명하게 만들기 위해 쏟아붓는 비용과 시간은 브랜딩이예요.브랜딩으로 '비용절감'이 되었는가를 측정하는 편이 훨씬 빨라요. 멍때리는 시간을 줄이고, 불필요한 채널을 쳐내고, 제안서양식을 통일하고, 직원들의 복지가 증대되고, 고객응대가 원활해졌는지를 봐야해요. 쓸데없이 3장씩 쓰던 회의록을 1장으로 줄이는 게 브랜딩의 시작이예요. 난상토론을 하느라 힘만 빠졌던 회의가 짧고 임팩트있게 줄어드는 지를 봐야해요. 잠재적으로는 구매고객이 될 수도 있고, 매출증대에 기여를 할 거예요. 하지만 많은 분들의 고민은 그런 '언제가 될 지 모르는' 전략에 고민할 여유가 없을 거예요. 대표님들이 지금 이 글을 보시는 이유가 뭐예요. 당장 뭐가 안나오니까 미치겠는 거잖아요. 장기적으로 봐라~ 기다려라~ 한순간에 되는게 아니다...라는 얘기는 누구나 할 수 있어요. 당장 세금계산서를 받는 입장에선 좀 더 수치적이고 현실적인 '지금의 행동'이 필요해요.  그리고 그러한 용단들이 모여 하나의 브랜드 컬러를 만들어요. 그러니,지출항목에 좀 더 집중했으면 좋겠어요. 적어도 이제 갓 브랜딩을 고민하는 기업이나, 한참 시행착오를 겪었던 곳이라면 말이예요. 짧은 생각으로 쓴 글이니, 다른 의견 및 제가 모르는 객관적인 측정방식 또는 레퍼런스가 있다면 댓글 등으로 공유해주세요 :) 감사드립니다!

기업문화 엿볼 때, 더팀스

로그인

/