스토리 홈

인터뷰

피드

뉴스

조회수 964

[Buzzvil People] Samuel Kwon, Sales Manager

 Buzzvil People에서는 다양한 배경과 성격 그리고 생각을 지닌 버즈빌리언들을 한 분 한 분 소개하는 시간을 갖습니다. 어떻게 버즈빌에 최고의 동료들이 모여 최고의 팀을 만들어가고 있는 지 궁금하시다면, 색색깔 다양한 버즈빌리언들 한분 한분의 이야기가 궁금하시다면, Buzzvil People을 주목해주세요.1. 간단한 자기 소개 부탁드립니다. 안녕하세요. 버즈빌 세일즈팀 Samuel이라고 합니다. 한국 이름은 권기현이구요. 버즈빌 내에서는 다들 편하게 Sam 으로 불러주시고있죠. 결혼 3년차, 2살 준혁이의 아빠이자 2남 중 장남입니다. 버즈빌 세일즈팀에서 막내에서 두번째를 맡고 있으면서 동시에 몸무게 기준으로 TOP3 중 한 명을 담당하고 있습니다. 대행사, 렙사, 광고주 회사, 그리고 매체사인 버즈빌까지 여러 회사를 두루 거치긴했지만 돌이켜보면 커리어적으로 디지털 마케팅이라는 한길을 걸어왔습니다. 누구나 여러가지의 역할을 맡고 있겠지만 최근엔 ‘준혁이 아빠’라는 가장 기쁘면서 책임감 넘치는, 그리고 무엇보다 스스로를 한 단계 이상 성장시켜준 역할에 매우 만족하고 행복에 겨워하고 있습니다. 이런 멋지고 사랑스런 아이를 갖게 해준, 제 인생을 통틀어 가장 행복한 시절을 선물해 준 세상에서 가장 아름다운 아내(진심입니다.)에게 너무 고맙습니다. 2018년은 제게 직장생활 10년차를 맞는 해이자, 개띠를 3번째 맞는 해인데요. 그만큼 더욱 성숙하고 책임감있게 살아나가야 할 듯 하네요. 2. 어떻게 버즈빌에 오시게 되셨나요? 솔직히 말씀드리자면, 미디어렙에 근무하면서 버즈빌에서 운영하는 허니스크린이란 서비스는 알고 있었지만 버즈빌이란 회사는 잘 몰랐었습니다. 다음 커리어로 매체사를 생각하고 있긴했었지만 마음에 쏙 드는 회사가 많지 않았던 터라, 긴 호흡으로 이직을 준비하던 중 헤드헌터로부터 버즈빌이란 회사를 제안 받으며 버즈빌을 알게되었습니다. 맨 처음엔 동종업계의 캐시슬라이드를 운영하는 NBT의 그저 후발주자라고 생각하고 크게 끌려하지 않았었는데, 알아보면 알아볼수록 버즈빌만이 지닌 장점들이 눈에 들어오며 강하게 끌리게 되더라구요. 제가 평소 이상적이라고 생각하는 요소들을 많이 가진 회사였어요. 젊은 조직, 성장하는 조직, 수평적인 조직, 그리고 도전하는 조직같은 것들이었습니다. 무엇보다 입사 전부터 돈키호테 정신을 매우 좋아하던 한 사람으로서, 버즈빌에서도 핵심정신으로 돈키호테 정신을 강조하는게 운명처럼 느껴지며 신기하더군요. 그렇게 머리에서 떠나지 않아 지원에 이르렀습니다.   이룰 수 없는 꿈을 꾸고, 이루어질 수 없는 사랑을 하고, 이길 수 없는 적과 싸움을 하고, 견딜 수 없는 고통을 견디며 잡을 수 없는 저 하늘의 별을 잡자. –         돈키호테 중   이런 정신을 가진회사라면 몸 담아도 후회없을거라 생각했고, 돌아보면 제 인생에서 잘한 행동 중 하나가 바로 버즈빌로 이직을 결심한 것이 아닌가 생각합니다. 물론, 세일즈 매니저로서 버즈스크린이 가진 가치가 과연 광고주에게 진정으로 도움이 되는 것일까를 고민하기도 했었는데요. 잠금화면 플랫폼으로서 버즈빌이 지닌 가치와 그리고 나아가 개인화된 모바일 첫화면 미디어로서의 방향성에 크게 공감하게 되어 버즈빌 합류를 결정짓게 되었습니다. 3. 버즈빌에서 어떤 업무를 담당하고 계신가요? 버즈빌의 광고영업팀, 세일즈팀에서 세일즈매니저를 맡고있습니다. 광고주 / 대행사 /  렙사에 이르는 파이프라인을 유동적으로 관리하여 상품소개에서부터 전략 및 제안까지 원활히 이뤄지게 하는 것이 주 업무입니다. 목적은 버즈빌 매출의 극대화이지만 광고주나 광고캠페인의 성공이 버즈빌 매출의 극대화로 이어지므로, 광고주와 광고 캠페인의 성공을 위해, 그리고 매출의 선순환을 위해 항상 마음에 두고 일하고 있습니다. 신규 거래처의 발굴과 기존 거래처와의 만족도 향상이라는 두 가지 중 어느 것 하나도 소홀히하지 않으려하며 마치 자전거의 페달을 밟듯 균형을 이루려 힘쓰고 있는데요. 그런 의미에서 현재의 버즈빌은 세일즈매니저가 일하기에 정말 좋은 환경이 아닐까합니다. 많이 알려져있지 않으면서, 동시에 기존 모바일매체와는 차별화된 가치를 제공하기 때문입니다. 많이 알려져있지 않다는 게 어떻게 세일즈하기 좋은 환경일까 궁금하실텐데요. 사실 제가 세일즈를 시작하게된 게 윌스미스주연의 ‘행복을 찾아서’ 라는 영화의 영향이 컸습니다. 명언을 굉장히 좋아하는 편이기도 하지만, 특히나 이 영화를 보는 내내 심장이 뛰는걸 주체할 수 없었고 영화전체가 명언으로 느껴졌을 정도로 감화되었습니다. 세일즈라는 업에 반했던 것 같아요. 대학시절에는 금융업을 꿈꿨으나 이 영화 하나로 세일즈에 깊은매력을 느꼈고 그 이후로는 후회한 적이 없네요. 안주하지 않고 끝없이 도전할 수 있게 한다. 그리고, 무엇보다 Win-Win 모델을 가능하게 한다. 이 두 가지가 세일즈의 가장 큰 매력이 아닐까 합니다. 4. 스타트업에서 혹은 광고업계에서 일하는 느낌이 어떠세요? 젊고 역동적인 조직, 업무는 힘들지만 나와 회사가 함께 성장하는 느낌, 주도적으로 업무를 할 수 있는 업무 환경이 스타트업의 가장 큰 매력이 아닐까 합니다. 온전히 업무에만 집중할 수 있고 불필요한 사내정치, 윗사람 눈치보기 등에서도 자유롭죠. 당연시 여겨질 수도 있겠지만, 제게는 정말 큰 가치인 것 같습니다. 직급이나 서열에 구애 받지 않으며, 서로를 존중하고 업무에 있어 차별이 없는 문화가 끊임없이 배우고 싶어하는 열망이 큰 제겐 큰 자극이자 원동력입니다. 광고 업계에 10년정도 있으며 느낀 점은 업계 자체가 늘 발전하고 고도화되고 있다는 것입니다. 호기심 많은 저 같은 사람한테 지루할 틈 없이 늘 달려나가게 하는 이 느낌이 전 정말 좋습니다. 여러 회사를 거쳤지만, 가장 힘들면서도 가장 재미있는 게 지금 버즈빌이고 그게 스타트업의 매력이 아닐까 합니다 ^^. 5. 이것만큼은 버즈빌이 참 좋다! 어떤 게 있으실까요? 사실 세일즈에는 답이 없다고 생각합니다. 누구에게나 호불호나 개성 혹은 강점이 모두 다르기 때문이지요. 답이 없다는 얘기는 일률적인 관리나 마이크로매니징이 필요없다는 것과 같을텐데요, 버즈빌은 정말 마이크로매니징이 없는 회사입니다. 가끔 이렇게 혼자 결정해도될까란 생각이 들기도하죠. 버즈빌은 실패에 대해 추궁하기보다는 늘 믿어주고 새롭고 다양한 기회를 제공합니다. 사실 초반에는 기존 회사들과 너무나 달라 혼란스럽기도 했었어요. 그렇지만 최근에는 이러한 버즈빌 세일즈팀의 문화를 지켜내고 싶어 더욱 열심히 하게 되는 것 같네요. 두 번째로는 버즈빌리언들입니다. 어디서 이런분들이 모이게 되었을까라는 생각이 들만큼 인적구성은 정말 최고의 회사인 것 같아요. 모두 경력직으로 이뤄진 멤버 구성에, 구성원 모두 개성이 다양하고 강점들이 달라 매일매일이 자극으로 가득합니다. 사이먼, 존, 제라드, 피터, 쥬시 등 모든 구성원들에게 항상 배우고 긍정적인 영향력을 주고 받으며 서로 치열하게 성장하고 있습니다. 버즈빌의 가장 큰 매력이겠죠. 6. 개인적인 목표나 꿈이 있으신가요? 있다면, 버즈빌에서의 경험이 어떻게 도움이 된다고 생각하시나요? 개인적인 성향 자체가 약간 이상주의자에 가까운 듯 합니다. 모두가 다 같이 잘 살 수 있는 그런 세상을 꿈꾸고 있거든요. 연봉이 높아지고 사회적 지위가 높아질수록 이제 됐다, 만족한다는 생각보다는 그만큼의 책임감과 치열함을 더욱 높이며 살아가고 싶습니다. 하지만 삶이란 게 늘 설명되지 않는 부분들이 설명되는 부분들보다 많으며 그 과정에서 사회적 약자는 필연적으로 생기게 된다고 생각해 개인적으로 늘 이상은 높은 곳을 보되 현실은 낮은 곳을 보려고 노력 중입니다. 개인의 행복이 최우선이 아닌 가족, 팀, 회사, 사회, 국가가 모두 행복해지는데 조금이나마 도움이 되는 삶을 살고 싶습니다. 버즈빌은 참 멋진사람들이 많은 곳이라, 이곳에서 계속 성장하며 함께하든 추후 창업을 하게 되든 이곳에서의 문화와 경험들이 제 이상을 실현시켜줄 큰 밑거름이 되지않을까 합니다. 외모도 멋지고 일도 잘하는 사기 캐릭터들이 이렇게나 많은 회사도 처음이거니와 휴일이든 새해 첫날이든 자발적으로 회사에 모여 서로 어울리는 회사는 정말 처음이거든요!^^
조회수 2287

당신이 고민해야 할 성능 분석 요소

IT 서비스는 더욱 복잡해지고 어플리케이션과 인프라의 경계도 클라우드 환경과 함께 허물어지고 있습니다. 많은 기업들이 가상화를 넘어 컨테이너로 가고 있으며 서버리스도 더이상 낮설지 않습니다. 인프라의 변화와 함께 아키텍처의 변화도 다양하게 만들어져 가고 있습니다. 복잡성이 아무리 높아져도 우리는 서비스의 성능을 보장해야 합니다. 서비스의 성능을 보장하기 위해 우리가 체크해야 할 중요 요소들을 알아보려고 합니다. 1. 인프라스트럭처와 클라우드서비스의 성능은 코드 밖에서도 만들어집니다. 그중에서도 인프라스트럭처는 매우 중요한 요소입니다. 국내에서 인프라스트럭쳐 분야는 클라우드로 전환하는 과도기적인 상황에 있습니다. SMB 시장에서 클라우드는 익숙한 환경이지만 국내 엔터프라이즈 기업의 클라우드 도입 비율은 20%가 되지 않습니다. 특히 클라우드를 도입하려는 엔터프라이즈 기업들은 데이터 센터, 퍼블릭 클라우드, 프라이빗 클라우드를 모두 사용하는 상황으로 넘어가면서 클라우드에 대한 모니터링 체계를 구성하는데 많은 어려움을 겪고 있습니다. 특히 기존의 자원 사용량을 설계하고 운영하던 방식에서 스케일의 변화를 통해 서비스의 성능을 실시간으로 조절하는 클라우드 서비스 운영 방법은 조직의 구조 변화를 동반하기 때문에 더욱 어려운 작업이기도 합니다. 이렇듯 클라우드의 전환은 최근 웹 서비스의 성능에 많은 영향을 미치고 있으며 데이터독이나 뉴렐릭 그리고 와탭 같은 성능 분석 서비스들은 클라우드 기반의 인프라 모니터링 기능들을 강화하고 있습니다. 2. 데이터베이스어플리케이션 성능 이슈의 80% 이상이 데이터베이스 레이어에서 발생합니다. 대부분의 엔터프라이즈 기업들은 자사의 어플리케이션을 성능 분석을 위해 DBA 포지션을 마련하거나 필요에 의해 컨설팅을 받고 있지만 아쉽게도 스타트업은 DBA포지션을 마련하는 경우가 거의 없습니다. 웹 서비스의 규모가 커지기 시작하면 데이터베이스로 인한 지연 장애가 매우 심각해 지기 시작합니다. 레거시로 인한 이슈까지 추가되면 서비스의 성능은 지속적으로 낮아지게 되므로 데이터베이스는 꾸준히 관리해야 하는 요소입니다.데이터베이스의 비중이 높다보니 어플리케이션 분석 서비스 중에서도 데이터베이스만 집중적으로 분석하는 도구들이 있습니다. 국내에서는 엑셈과 티맥스에서 데이터베이스 분석 솔루션을 제공하고 있습니다.  3. 오픈 소스와 써드파티 소프트웨어최근 두가지 형태의 트렌드가 서비스 성능에 영향을 주고 있습니다. 하나는 오픈 소스이고 다른 하나는 써드 파티 소프트웨어 입니다. 안정화 된 오픈 소스를 사용하더라도 설정 이슈 또는 사용 환경 이슈로 성능에 영향을 주는 상황이 많이 발생합니다. 위젯, 광고플랫폼, 플러그인등의 써드파티 또한 웹 서비스의 성능에 영향을 주는 요소입니다. 최근 써드 파티의 사용은 점점 늘어나는 추세로 인해 장애 발생에 대한 위험도는 더욱 높아가고 있습니다. 특히 써드 파티는 시간이 흐르면서 성능에 조금씩 부하를 누적시키기도 하므로 충분히 주의를 기울여야 합니다. 이런 환경에서도 서비스의 성능을 유지하기 위한 방법으로 통계 기반의 메소드 분석 기법 모니터링의 중요한 요소가 되어 가고 있습니다. 와탭의 Java 모니터링이 메소드 분석 서비스를 제공하고 있습니다. 4. 모바일구글 이 운영하는 더블클릭(https://www.doubleclickbygoogle.com/articles/mobile-speed-matters/)에 따르면 북미에서 3G에서의 모바일 페이지 로딩까지 소요되는 시간은 평균 19초입니다. 한국은 이미 4G를 넘어가고 있기도 하고 모바일 기기의 성능도 매우 높아서 북미와 상황이 다르지만 모바일 기반의 웹 서비스 성능을 분석할 수 있는 방안의 필요성은 높아져 가고 있습니다. 이와 함께 다양한 환경을 지원하는 end-to-end 모니터링의 중요성이 점점 대두되고 있는 상황입니다.  5. 컨테이너최근 인프라스트럭처의 새로운 흐름은 컨테이너 입니다. 한국은 리눅스 기반의 서비스 구축 시스템이 잘 발달한 덕분에 클라우드 도입이 다른 나라보다 늦은 편입니다. 하지만 최근 국내에 컨테이너 기반의 인프라스트럭처 도입 기업들이 많아지고 있습니다. 우리나라는 가상화를 건너뛰고 컨테이너부터 활성화 될수도 있을 거라 생각됩니다. 컨테이너 환경은 가상화보다 더 많은 인프라를 더 유동적으로 사용하게 되므로 기존의 규모를 뛰어 넘는 관리 체계를 만들어 나가야 합니다. 데이터독과 뉴렐릭 같은 SaaS 기반의 모니터링 서비스들은 이미 컨테이너의 대한 지원을 하고 있으며 와탭 또한 단순 지원을 넘어 컨테이너 전용 서비스를 준비중에 있습니다. 6. 마이크로 서비스많은 기업들이 클라우드와 함께 Micro Service Arichtecture를 도입하고 있기 때문에 독립적인 어플리케이션을 기반으로 하는 서비스 구조는 계속 발전해 나갈 것입니다. 마이크로 서비스와 클라우드의 조합은 커져가는 서비스의 규모를 독립적인 작은 단위로 나눌 수 있어서 매력적이긴 하지만 과거와 다른 운영 조직과 프로세스를 만들어야 하는 숙제를 만들었습니다. 예를 들면 기존에는 하나의 임계치를 사용하여 서비스의 위험도를 관리했다면 이젠 독립적으로 동작하는 서비스들의 임계치를 각각 어떻게 설정하고 관리할 것인지 고민해야 합니다. 독립된 마이크로 서비스의 성능 이슈가 전체 서비스 성능 이슈로 확대되지 않더라도 작게 발생하는 이슈들을 관리하지 못한다면 지속적으로 발전해야 하는 서비스의 미래도 흔들리게 될 것입니다. 7. 서버사이드 코드정상적인 상황이라면 서버사이드 코드에서 발생되는 지연시간은 찰나에 가깝지만 장애 상황에서의 지연은 서버사이드에서 발생하는 경우가 많습니다. 특히 방어가 되어 있지 않은 코드들은 물리적 요소의 작은 변화에 대처하지 못하고 웹 서비스 전체에 영향을 미치게 됩니다. 스타트업의 경우 개발팀이 운영을 함께 맡고 있는 경우가 많기 때문에 서버사이드의 코드를 직접 분석하곤 합니다. 하지만 서비스의 성능이 느려지는 상황 자체를 파악하지 못하는 경우가 많습니다. 서버 사이드에서 평균 응답시간을 체크하는 경우 10초 평균 응답시간이 0.5초를 넘는 경우는 거의 없습니다. 하지만 0.5초의 평균 응답시간을 같는 서비스라 할지라도 하루 동안 10초이상 걸린 고객의 숫자는 규모에 따라 1,000명이 넘을 수도 있습니다. 서비스에 규모가 있다면 꼭 APM을 사용해야 합니다.8. 네트워크 지연네트워크의 지연으로 인한 고객 불만은 예상외로 많이 발생합니다. 인프라스트럭처 이슈로 볼 수도 있겠지만 서비스를 운영한다면 항상 체크하고 있어야 하는 요소입니다. 해당 이슈를 확인 하려면 웹서비스 모니터링을 사용하시면 됩니다. 웹서비스 모니터링을 통해 네트웍상태를 포함한 서비스의 응답시간을 체크해 볼수 있습니다. 와탭의 경우 내부적으로 웹서비스 모니터링을 개발하여 사용하고 있지만 아직 서비스 하고 있지는 않습니다.  9. 자원 사용률자원 사용률은 최근 새로 떠오르는 이슈입니다. 이전에는 인프라스트럭쳐가 고정값이였기 때문에 자원 사용률이 모자라는 경우 서비스 성능을 포기하고 초과되는 고객의 요청을 앞단에서 버리거나 대기시키는 기법들을 사용해왔습니다. 클라우드 환경에서는 자원 사용량의 임계치가 넘어가면 자동으로 스케일을 조정하는 환경이 마련되면서 성능을 유지하는 것이 가능합니다.  클라우드 환경에서 과부하 상태에 접근하면 자동으로 인프라의 규모가 확장되고 과부하 상태는 정상으로 돌아갑니다. 이렇게 환경이 바뀌면서 자원 사용률의 중요 이슈가 성능에서 비용으로 전환되고 있습니다. 부하에 따른 스케일링 정책을 어떻게 정하는지에 따라서 성능과 비용 모두가 영향을 받기 때문에 Auto Scale에 대한 모니터닝이 관심을 받고 있습니다.  마무리웹 서비스의 성능에 영향을 주는 요소는 정말 많습니다. 와탭랩스 IT 기업의 어플리케이션을 모니터링 하기 때문에 기업의 IT 어플리케이션 성능 문제에 대해 항상 고민하고 있습니다. 해당 내용은 매달 또는 분기별로 트렌드를 반영하여 업데이트하고 할 생각입니다. 많은 분들에게 도움이 되었으면 좋겠습니다. #와탭랩스 #개발자 #개발팀 #인사이트 #경험공유 #일지
조회수 1060

[피플] 더부스의 브랜딩을 담당하는 MH님!

[ 더부스팀 인터뷰 특별기획 7부 ]즐거운 일을 하는 사람들의 이야기더부스에서 쌀밥은두번째로 많이 먹었지만,방부제 미모를 자랑하는MH님!오늘도 더부스만의색깔을 찾기 위해달립니다이번 인터뷰에서 만나볼 분은 더부스의 브랜딩을 담당하고 있는 MH님입니다. 브랜딩이란 브랜드에 색깔을 입히는 일이고, MH님은 더부스 만의 결을 찾아 표현하는 일을 하고 있죠. 수없이 많은 브랜드가 존재하는 오늘날, 브랜드의 매력과 가치를 전달하기 위해선 저만의 독특하고 고유한 색깔이 필요한 법. ‘더부스’라는 브랜드에 색깔을 입히는 MH님은 어떤 색깔을 가진 사람일까요? 일단 더부스 팀원들에게 MH님은 '미모의 녀성'으로 밥을 아주 잘 드시는 분입니다. 고기를 먹으러 가면 고기를 아무리 많이 먹었더라도 끝끝내 냉면 한그릇까지 뚝딱 비워야 식사를 마치는 분이죠!Q1. MH님은 어떤 색깔을 가진 사람인가요?색깔이라, 처음부터 너무 큰 질문 아닌가요?(웃음). 색깔로 비유하면 보는 사람마다 다르게 얘기하는데 스스로는 보라색? ㅋㅋ 첫인상이 차가워 보인다는 얘기를 많이 듣는데, 실제론 사람 냄새나는 걸 좋아해요. 메신저 대화보다는 직접 이야기하는 걸 선호하고, 새로운 사람을 만나는 것도 좋아하구요. 그런 활동에서 에너지를 많이 얻어요. 첫 직장에서 인재 개발팀에서 일한 적이 있는데, 그때부터 사람들과 교류하는 일이 제 적성에 잘 맞는다고 느꼈어요.Q2. MH님이 지닌 색깔은 다양한 사람들과의 교류를 통해 나오는군요!그런 것 같아요! 인생의 중요한 순간들을 돌아보면 항상 저에게 큰 영향을 준 사람들이 존재해요. 첫 직장을 퇴사하고 떠난 유럽 여행에서 만난 사람들, 대학원 시절 알게 된 친구 A, 그리고 새로운 직장을 선택할 때 큰 영향을 줬던 친구 B까지. 사람들에게 받은 영향이 정말 커요. 사람들을 통해 새로운 것을 배울 수 있고, 그 과정 속에서 제 자신을 돌아볼 수도 있죠. Q3. 굉장히 흥미로운 주제네요! A씨 이야기부터 들어볼까요? (여러분, 참고로 MH님은 미모의 녀성입니다. 그에게 '영향'을 준 A와 B도 그에 걸맞는 사람일거에요!ㅋㅋ)음, A는 대학원 시절 만난 친구였어요. 제가 그동안 겪어보지 못한 신세계 같은 사람이었죠. 냉철한 스마트함을 가지고 있으면서도 본인의 분야에 대해서는 상당히 열정적이었어요. 또한 자신의 취향에 대해 확고한 기준을 가진 사람이었는데, 그런 모습이 제게는 상당히 매력적이었어요. 저에겐 전혀 없는 모습이었죠. A는 술, 특히 싱글 몰트 위스키를 굉장히 좋아했는데, 그때 술도 멋진 취미가 될 수 있다는 걸 처음 느꼈어요. 그래서 A를 만난 이후에 저도 저만의 취향이 확실한 사람이 되고 싶다는 생각을 했죠. 확고한 취향에서 나오는 아우라, 멋있지 않나요?Q4. A씨는 MH님의 색깔이 더욱 뚜렷해지는 데 큰 영향을 줬군요. 자신의 취향이 뚜렷한 사람은 정말 매력있죠. MH님 곁에 있었던것만으로도 그의 안목이 조금 엿보이기도 하네요(웃음). 또 다른 친구 B님은 MH님께 어떤 영향을 끼쳤는지 궁금해요.B는 제가 제 자신의 삶을 살아가야겠다는 생각이 들게 해준 사람이에요. B를 알게 되기 전까지 저는 남들의 시선과 기대를 엄청 신경 쓰며 살아왔어요. 제 자신보다는 타인의 기준에 맞춰왔던 거죠. 하지만 B는 자신의 생각, 자신이 좋아하는 것에 집중할 수 있는 사람이었어요. 또한 만인의 사랑보다는, 자신이 사랑하는 사람들로부터 받는 사랑을 더욱 소중히 여기는 사람이었죠. 그런 모습을 보면서 저도 조금씩 저의 내면을 바라보게 되었어요. 내가 정말 좋아하는 건 무엇인가, 내가 행복할 수 있는 방법은 무엇인가. 남들이 아닌 나의 기준에 맞춰 생각하고 고민했어요. 그러던 중 당시에 다니고 있던 컨설팅 회사에서 퇴사하기로 결심했죠. 근무여건이 나쁘지 않은 곳이었지만, 제가 살아있다는 느낌을 받을 수 있는 회사에서 일하고 싶었거든요. 누군가는 일 밖에서 즐거움을 찾으라고 하지만, 일까지 즐거울 수 있다면 금상첨화잖아요. 그런 일을 찾던 중에 더부스를 알게 되었고, 험난한 면접을 거쳐 입사하게 되었습니다.Q6. 자신이 주인공이 되는 삶, 당연한 것 같지만 한편으로는 쉽지 않은 일 같아요. 그럼 더부스에서는 살아있다는 느낌을 받으시나요?네, 왜냐하면 스스로 계속 동기 부여를 하며 일하게 되니까요. 더부스에서는 많은 부분의 일을 자기가 직접 만들고, 직접 해내야 하거든요. '주어진 과제' 라는 것이 없고 전부 다 거의 스스로 찾은 '필요 할 것 같은 일'을 알아서 찾아내서 하죠. 비생산적이고 소모적인 일에 시간을 뺏기는 일도 없고요. 보고를 위한 보고라든가, 보여지기 위해 진행되는 일들이 없는 작은 조직이기도하고요.Q5. 그렇군요! 더부스에 합류하시기 위해 거쳤던  “험난한” 인터뷰는 무엇인가요?저의 더부스 입사과정은 정말 파란만장했어요(웃음). 우선 당시 더부스 사무실은 해커 기지를 방불케 했어요. 어떤 간판이나 표지판도 없이 구석진 건물 2층에 자리잡은 음침한 곳이었죠. 아무래도 스타트업이다 보니 그럴 수도 있겠다 싶었어요. 면접 분위기도 캐쥬얼할 것 같다고 예상했구요. 하지만 막상 들어가니 대표님이 눈에 힘을 빡! 주고 1시간동안 빡세게 면접을 보시더라구요. ‘내가 맘에 안 드나?’라고 느낄 정도였죠. 어찌어찌 인터뷰가 마무리되어갈 쯤엔 다른 분이 난생 처음 보는 맥주를 엄청 가지고 오시더라구요? ‘여기 입사하면 매일 이런 맥주를 마실 수 있구나’라는 생각에 갑자기 기분이 좋아졌어요. 긴장도 풀렸고. 그래서 뭐 신나게 마셨죠! 빈속에 맥주를 들이부었어요. 그러다 보니 저도 모르게 잠이 들었더라구요… 나중에 집에 가셔야 한다고 깨워 주셨죠(웃음). 그리고 심지어 저를 집 주차장까지 다른 분이 데려다 주셨는데 아파트 다른 동에 내려주셔서 정신을 차린 후 주차장을 다시 거슬러 올라 바깥으로 나왔습니다. 아파트 다른 동이어서 출입증이 없었거든요. 그리고.... 다음날 이불킥을 엄청 했습니다! 떨어졌구나 싶었는데 다행히 2차 인터뷰 제의가 왔고, 그때는 정신 똑바로 차리고 열심히 준비해 가서 무사히 마칠 수 있었습니다.(더부스의 모든 인터뷰가 취중으로 진행되는것은 결코 아니며, 음주 인터뷰를 진행하고, 취한 분은 MH님이 처음임을 밝힙니다 ㅋㅋ)Q6. 와, 면접 때 술에 취해 잠든 이야기는 처음 들어봤어요! 원래 술을 좋아하는 편이셨나요? 맥주는요?저는 아니라고 말하고 싶지만 주변에서는 그렇게 생각하더라구요(웃음). 맥주는 더부스에 입사하고 나서 좀 더 잘 알게 되었어요. 입사 후 6개월 동안 맥주를 거의 매일 마시면서요. 세상엔 신박한 맥주가 정말 많아요. 참 행복한 세상이에요!Q7. 어제는 와인파티를 하셨다고 들었어요! 역시 술은 마시면서 배우는 게 제 맛이죠! 입사 후 더부스 생활은 어떠셨나요?사실 처음에는 회사에 대한 걱정과 의문이 많았어요. 대부분의 팀원이 전공이나 커리어와 관련 없이 처음 해보는 일을 맡았으니까요. 저도 처음에 브랜딩 업무에 대해 아무것도 몰랐어요. 그러다 보니 서로를 챙겨줄 여유도 없었구요. 하지만 더부스에는 “되게 하자”라는 긍정 에너지가 있었어요. 저는 그게 더부스가 앞으로 나아갈 수 있었던 원동력이라고 생각합니다. 회사의 슬로건인 “Make This Happen”도 바로 이러한 점에서 착안한 것이죠. 물론 요즘도 매일매일 ‘이 방향이 맞는 걸까?’라는 고민이 끊이질 않아요. 그렇지만 걱정과 의문은 많이 줄었어요. 1년간 많은 일을 경험하며 팀원의 역량에 대해, 회사의 발전가능성에 대해 큰 신뢰가 생겼으니까요!Q8. 훈훈하네요. 이래선 인터뷰가 너무 따뜻해요! 더부스의 안 좋은 점은 없나요? 디스!!음… 더부스는 모든 제의에 대해 한 번에 NO라고 말하는 적이 없어요. 이게 장점이면서도 단점(?)이라고 할 수 있죠! 이것저것 다양한 경험을 한다는 점은 참 좋지만, 체력 소모가 심해요ㅋㅋㅋ 솔직히 힘들어요. 에너지가 고갈된다고 느낌이랄까. 그래서 어느 한 곳에 집중하는 게 낫지 않을까 생각해본 적이 있어요. 하지만 더부스는 아직도 갈 길이 머니까요! 힘들긴 해도 최대한 많은 경험을 쌓는 게 중요하다는 점에는 저도 공감해요. 생존과 성장을 위해 최대한 조직의 유연성을 시험해보는 시기인 거죠. 하하…Q9. 자극적인 인터뷰를 노렸지만 이번 질문도 훈훈하게 마무리 되었네요. 이왕 이렇게 된 거 진지한 질문으로 넘어가겠습니다. MH님은 더부스가 어떤 브랜드로 성장하기를 바라시나요?뭔가 공적인 질문이 나왔네요(웃음). 현재는 기업이 일방적으로 브랜드 이미지를 통제하는 시대가 아니라고 생각해요. 사람들이 저희 브랜드를 통해 어떤 경험을 하느냐가 브랜드 이미지를 결정한다고 할 수 있죠. 다양한 채널에서 다양한 사람들이 브랜드에 대해 이야기해요. 저는 그 속에서 더부스가 역동적이고, 에너지 넘치고, 창의적이면서도 재미있는 브랜드로 인식되기를 바랍니다. 그러기 위해선 저를 비롯한 더부스 모든 팀원들이 더욱 야근, 야식, 맥주 (얏호 ㅎㅎ) 아니 분발 해야죠! 너무 딱딱했나요?Q10. 네, 다소 가식적이었습니다(웃음). 시간이 벌써 이렇게 되었네요. 마지막 질문 드리고 인터뷰 마치도록 하겠습니다. MH님이 만약 맥주를 만든다면 어떤 맛의 맥주를 만들고 싶으세요?음, 맛이라기 보다는 마시면 에너지가 팍! 솟는 맥주를 만들고 싶어요. 저는 평소에 고카페인 음료나 에너지드링크를 좋아해요. (스누피 우유는 사랑입니다.) 마시면 가슴이 쿵쾅대면서 들뜨는 느낌이 나는데, 그 느낌이 참 좋아요! 그런 맥주가 있으면 재밌을 것 같네요. 약간의 취기와 함께 에너지까지 업되면… 와우. 생각만 해도 술이 당기는 데요? 다음엔 꼭 만취 인터뷰로 진행해주세요! * 대강 페일에일, 탕수육과 함께 진행된 2시간의 인터뷰! 마지막까지 MH님만의 독특한 색깔과 에너지를 느낄 수 있었습니다. 언젠가 MH님의 만취 버전 인터뷰를 기대하며 이번 인터뷰는 마치도록 하겠습니다. 다음 인터뷰도 기대해주세요! #더부스브루잉컴퍼니 #팀원소개 #팀원인터뷰 #팀원자랑 #기업문화 #조직문화 #사내문화 #팀문화
조회수 3893

아마존 화장품 셀러들을 위한

안녕하세요, 대한민국 사업자들의 해외 전자상거래 진출(아마존 판매)을 도와주는 컨설팅 회사이자 업무대행사 컨택틱의 이이삭 대표입니다.오늘 여러분들께 소개할 내용은 아마존에 판매하는, 또는 판매하고자 하는 화장품 셀러들을 위한 MSDS와 COA자료에 대한 주제로 찾아 뵙게 되었습니다.소개말화장품을 판매하는 아마존 셀러들에게 MSDS 또는 COA라는 표현은 한 번쯤 들어봤을 법한 이름입니다. 한국에서 화장품을 판매할 때에는 전혀 필요하지도 않았고 고려할 필요도 없었던 이 문서는 도대체 무엇이며, 왜 필요한 것이며, 언제 필요한 것이며, 어디서 발행 받고, 누구에게 제출해야 하는 것인지, 아마존에 판매하려는 대한민국 판매자의 입장에서 설명 드리겠습니다.1. MSDS 또는 COA란 무엇인가?MSDS란 Material Safety Data Sheet의 약자로, 물질안전 보건자료이고, COA란 Certificate of Analysis의 약자로, 제품 시험 성적서입니다. MSDS는, ‘16개의 주제’에 대하여 해당 제품이 안전하다는 것을 증명하는 서류이고 (예를 들어, 알레르기 반응이 없다, 운송 중에 폭발 위험이 없다, 등등), COA의 목적은, 제품 ‘성분’에 대한 안정성을 증명하는 서류입니다.2. 왜 필요한가? 언제 필요한가?둘 다 아마존에서 요구하는 서류이기 때문에 필요한 것입니다. 왜 아마존에서 화장품에 대한 MSDS 자료와 COA 자료를 요구할까요? 우선 MSDS부터 설명 드리겠습니다. 아마존이 MSDS를 요구하는 것은 FBA로 판매하는 제품들에 대해서입니다. 좀 더 나아가서 설명 드리자면, 아마존은 국가 단위의 인증/인허가에는 관여하지 않습니다. 이 부분은 판매자가 알아서 특정 국가에 판매하는 데에 있어서 마땅히 해결해야 하는 것으로 간주하며, 만약 국가 단위로 제재가 들어오면 그때 아마존에서 행동에 나서게 됩니다. 하지만 그런 제재가 있기 전까지는 어떠한 제품을 팔아도 아마존에서 직접적으로 제재하는 상품이 아닌 이상 판매를 막진 않습니다. 그러면 아마존이 관심 있는 것은 무엇일까요? 그것은 바로 아마존의 물류 창고에서 일하는 직원들의 안전입니다. 판매자가 FBA로 판매한다는 것은 어쨌거나 FBA 물류 창고에서 일하는 아마존 직원들의 손을 거치게 되는 것이기 때문에, 아마존 입장에서는 직원들의 안전을 책임져야하는 입장에서 FBA 창고에 반입되는 제품들에 대해 안전성을 따질 수 밖에 없습니다. MSDS의 목적은 바로 아마존 FBA 물류 창고에서 근무하는 아마존 직원들의 안전을 위해 해당 제품이 물류 취급하는 데에 있어서 안전하다는 것을 나타내는 MSDS 서류를 요구하는 것입니다. 그렇다면 COA는 왜 필요한 것일까요? 아마존이 COA를 요구하는 것은 뷰티 카테고리에 팔기 위해 입점 후 카테고리 승인을 받기 위해서입니다. 앞서 말씀드린 대로, 아마존에서는 국가 단위로 개입이 있기 전까지는 별도로 제재를 하진 않습니다. 하지만 topical products, 즉 신체에 바르는 제품에 대해서 국가 단위의 제재가 있었기 때문에 2017년부터 신체에 바르는 뷰티 제품에 대해서 COA, GMP, 또는 FDA 서류를 제출하도록 하고 있습니다. MSDS의 물류 취급 안전과는 다른 목적인, 실제 제품의 성분 안전성을 위해 제출하는 자료가 COA이며, 해당 자료는 FBA 입고할 때 제출하는 게 아닌, 화장품을 판매하고자 카테고리 승인을 받을 때 제출하는 자료입니다.3. 어디서 발행 받을 수 있는 건가둘 다 제조사로부터 발행 받을 수 있는 서류들입니다. 제조사라 함은 제조판매업자가 아닌 실제로 제품을 생산하는 공장을 말합니다.MSDS는 16가지 조항(주제/섹션)이 정해져 있습니다. 16개 항목은 아래와 같습니다:SECTION 1 — CHEMICAL PRODUCT AND COMPANY IDENTIFICATIONSECTION 2 — COMPOSITION/INFORMATION ON INGREDIENTSSECTION 3 — HAZARDS IDENTIFICATIONSECTION 4 — FIRST AID MEASURESSECTION 5 — FIRE FIGHTING MEASURESSECTION 6 — ACCIDENTAL RELEASE MEASURESSECTION 7 — HANDLING AND STORAGESECTION 8 — EXPOSURE CONTROL / PERSONAL PROTECTIONSECTION 9 — PHYSICAL AND CHEMICAL PROPERTIESSECTION 10 — STABILITY AND REACTIVITYSECTION 11 — TOXICOLOGICAL INFORMATIONSECTION 12 — ECOLOGICAL INFORMATIONSECTION 13 — DISPOSAL CONSIDERATIONSSECTION 14 — TRANSPORT INFORMATIONSECTION 15 — REGULATORY INFORMATIONSECTION 16 — OTHER INFORMATIONCOA는 별도의 조항/섹션/주제가 정해져 있진 않습니다. MSDS와는 다르게 양식이 좀 더 자유로운 편입니다. MSDS는 16가지 섹션이 분명하게 명시되고 서술되어야 하는 반면, COA는 (제 경험상) 아마존 측에서 확인 가능한 필수 항목들이 기재 되어있다면 통과 됩니다. COA에 명시 되어야하는 항목들은 아래 URL에서 확인 가능합니다:https://www.inorganicventures.com/parts-certificate-analysisCOA는 통상적으로 표로 제작이 되며, 1~2 페이지 내외로 모든 내용이 서술 가능합니다.제조사로부터 MSDS 또는 COA 서류를 발행해달라고 하면 웬만한 제조사들은 바로 이해하고 발행해줍니다. 한 가지 조심해야 하는 것은, MSDS 또는 COA 서류를 발행 받을 때 반드시 발행자가 아마존에 등록한 상품 리스팅의 상품명/브랜드명/제조사명 등과 일치해야 하며, 발행 날짜는 6개월 이내이어야 하는 것입니다.4. 누구에게 제출하는 건가?MSDS는 제품 리스팅 후 FBA에 재고를 보충하는 과정에서 만약 MSDS 또는 SDS 자료를 제출해야 하는 품목인 경우 (화장품, 배터리가 들어있는 제품, 등) 적색 메시지로 오류가 뜹니다. 그러면 아마존 SDS Upload Tool을 이용하여 해당 제품의 ASIN 번호를 입력 후 서류를 PDF 파일로 업로드하면 됩니다.COA는 입점 후 카테고리 승인을 받을 때 제출하는 서류이기 때문에 오히려 MSDS 보다 먼저 준비해야 하는 항목입니다. 서류 제출 방법은 카테고리 승인을 받을 때 보이는 업로드 툴로 바로 업로드 하면 됩니다. 뷰티 Topical 제품의 경우 1차 카테고리 승인을 위해 제조사와 거래한 내역을 증빙하는 세금계산서/거래명세서 3장 (또는 제조사가 직접 판매하는 경우, 제조업이 명시된 사업자등록증 사본)이 필요합니다. 그 이후에 2차 카테고리 승인을 할 때 제출하는 것이 COA/GMP/FDA 서류입니다. 2차 안정성 승인 자료 업로드까지 전부 카테고리 승인 절차에 다 업로드툴이 있기 때문에 별도로 다른 메뉴에 접속하여 업로드할 필요가 없습니다.마치며…이렇게 화장품을 판매하는 아마존 셀러들을 위해 MSDS, COA/GMP/FDA 자료 소개 편이 끝났습니다. 도움이 되셨나요? 이 글의 주제는 제 글의 댓글 중에 MSDS에 대한 글을 올려달라고 요청하신 분이 계셔서 정하게 되었습니다. 이렇듯이, 여러분들 중에 아마존 판매에 궁금한 부분이 있으시면 댓글로 주제를 남겨주세요. 간단한 주제는 제가 덧글로 답변해드리겠지만, 위 글처럼 다소 설명이 필요한 주제는 이렇게 별도로 칼럼을 포스팅 해드리겠습니다.컨택틱 서울특별시 강남구 강남대로62길 11, 8층 (역삼동, 유타워) 대표 전화: 02-538-3939 해외 부서: 070-7771-1727 영업 부서: 070-7771-1728 이메일: [email protected] 유튜브: https://www.youtube.com/channel/UC8OxbQGAnMqWGpGj5weLcZA홈페이지: https://www.kontactic.com
조회수 1810

Amazon SageMaker는 처음이지?

Overview브랜디 랩스를 사랑해주시는 여러분, 안녕하세요. 개발자 오-연주입니다. 지난 4월, Brandi Back-end 개발자 분들과 코엑스에서 열렸던 AWS Summit(04.18 - 04.19)에 다녀왔습니다!여러 세션을 듣는 와중에 우연히 AI machine learning 를 쉽게 도와주는 Cloud Machine learning Flatform인 Amazon SageMaker에 대해 들었습니다. 듣던 중 머닝러닝에서 학습을 시켜 그 데이터로 ‘Brandi 서비스와 연관지으면 어떨까’ 라는 생각을 했는데요. 그래서 오늘은 많은 분들의 관심사인 머신러닝 학습관련 Amazon Amazon SageMaker에 대한 글을 쓰려고 합니다.sage는 마법사, 현자라는 의미입니다.sageMaker를 create하자!“자, 퐈이팅 넘치게 신나게 sagemaker를 create해볼까요!” 했는데…Seoul Region이 없다!현재 지원되는 리전은 아직 네 군데입니다. 저는 제일 있어 보이는 미국 동부의 버지니아를 선택하겠습니다.1] EU (Iceland) 2] US West (Oregon) 3] USEast (N. Virginia) 4] US East (Ohio)SageMaker를 create하기 전에는 학습할 데이터와 학습 모델을 저장할 S3 Bucket이 필요합니다.1. Default 값으로 S3를 만드세요.중요한 점은, bucket 이름이 “sagemaker-” 로 시작되어야 한다는 것입니다. 그래야 나중에 notebook instance가 어느 곳에 데이터를 저장할지 알 수 있습니다.Next, Create bucket 버튼을 누르다 보니, S3 Bucket이 생성되었습니다.2. Create notebook instance 버튼을 눌러 SageMaker를 만들어 봅시다!원하는 이름을 지어줍니다. 저는 machineLearningTest 라고 지었어요. IAM role 선택하는 부분에서 None을 눌러 Default 값으로 sageMaker를 만듭니다.인고의 Pending 시간3. Pending이 끝나고 “open” action을 선택하면 Jupyter가 열립니다.Jupyter(Jupyter Notebook)는 오픈 소스로 라이브 코드, 등식, 코드에 대한 시각화를 위해 사용됩니다. 또한 description을 위한 텍스트 문서(마크다운 등)를 지원하는 웹 어플리케이션입니다. 이렇게 하면 코드에 대한 문서화가 가능합니다. 이 글에서는 Jupyter Notebook을 통해 데이터를 학습하고, 그 데이터를 테스트하겠습니다. 제가 진행한 전체 코드 스크립트(entire script)는 이 글의 마지막 부분에 기술있으니 참고해 주세요.자, 이제 드디어 머신러닝 학습을 시킬 차례입니다. 머신러닝 학습에 꼭 필요한 키워드 두 가지를 뽑아봤는데요. - Dataset: 정제된 데이터와 그 데이터에 대한 label을 정리해 놓은 데이터 모음      - Machine learning Algorithm: 기계학습 알고리즘 우리는 MNIST 데이터셋을 k-means 알고리즘으로 학습시킬 겁니다.1)MNIST Dataset기계학습 알고리즘을 사용할 때 가장 기본적으로 테스트하는 데이터셋으로 MNIST 데이터셋이 있습니다. 이것은 사람이 0부터 9까지 숫자 중 하나를 손글씨로 쓴 이미지 데이터와, 해당 이미지에 대한 레이블(0 - 9)이 6만 개 들어있는 학습 데이터셋입니다. 각 이미지는 가로와 세로가 각각 28 픽셀로서, 각 픽셀은 0부터 255 사이의 숫자가 있습니다. 다시 말해, 하나의 이미지는 28 x 28 = 784개의 숫자로 이루어진 데이터입니다. 하나의 이미지를 나타내는 데이터의 array > length가 784라고 표현할 수 있겠네요.MNIST dataset2)k-means지금 만든 SageMaker 학습 알고리즘은 AWS 튜토리얼에서 제시한 K-means를 사용할 예정입니다. k-means는 label 없이, 즉 정답을 모르는 상태로 학습을 하는 비지도 학습 (unsupervised learning) 알고리즘 중 가장 쉽고 많이 쓰입니다. 정답을 모르니, ‘비슷한 애들끼리 뭉쳐봐’ 라고 하고, 알고리즘은 비슷한 친구들끼리 뭉쳐 놓습니다. k-means에서 k는 ‘k개 덩어리로 뭉쳐주세요’라고 제시하는 숫자입니다. 우리는 0부터 9까지 비슷한 친구들끼리 모이게 하고 싶으니 k=10을 쓸 겁니다.지금부터 해야 할 TO DO!1. MNIST 데이터셋을 다운로드받고, 우리가 학습시키기 좋도록 정제하기(preprocessing)2. Amazon SageMaker를 통하여 데이터 학습시키기(training job)3. Amazon SageMaker를 통하여 학습된 데이터를 배포하기(Deploy the model)4. 배포된 모델에 요청을 보내 테스트 데이터에 대한 예측값을 받아오기(inference)4. Jupyter 노트북 인스턴스 생성하기Jupyter에 New Notebook(conda_python3)을 선택해 새로운 노트북을 생성합니다.5. 학습시키기 위한 기본 셋팅드디어 코딩 시작입니다! (의욕활활) 초기 설정해두었던 IAM role, S3 Bucket, MNIST 다운로드, 다운받은 데이터 등을 확인하세요. 글보다 코드로 주석을 보는 게 가독성이 더 좋습니다. 아래 노트북을 통해 마크다운, 주석처리를 통해 description을 해두었으니 참고 바랍니다.외부에서 MNIST 다운로드가 쉽도록 한 url로 MNIST를 다운받는데 성공했습니다. MNIST 데이터셋 내용물 중 하나를 jupyter notebook에 그려서 제대로 다운 받았는지 show_digit() 함수를 작성해 확인하겠습니다.서른 번째 데이터는 누군가 3을 손글씨로 쓴 이미지입니다.6. 머신러닝 학습하기이 세션에서는 기계학습 알고리즘 설정, 학습할 데이터 경로를 지정하겠습니다. 그 후 MNIST 학습 데이터를 S3 버킷에 옮겨 저장합니다.kmeans.fit() 함수를 호출해 직접 학습을 시켜볼까요? 학습 과정은 상당히 오래 걸린다고 했는데 다행히 4분 만에 학습이 끝났습니다.여기서 잠깐! 여기서 k = 10에 대해서 조금 더 알아보도록 할게요. cluster란 한 지점에 점을 찍고 데이터 분석을 한 뒤, 비슷한 데이터들의 군집을 만들어 주는 것입니다. k-means가 진행되면서 각 cluster의 중심이 서로가 잘 뭉치는 방향으로 이동합니다. 직접 그려봤어요(부끄).7. 학습된 모델을 배포하기학습을 시키면 테스트를 하거나 사용할 수 있어야겠죠? 학습된 모델을 배포해 주세요.8. 배포된 모델 테스트 진행하기배포된 모델에 valid_set 데이터로 검증 데이터를 진행합니다..predict() 함수를 호출하면 새로운 이미지가 어떤 cluster에 속했는지 예측 결과를 알려줍니다. 가장 가까운 cluster가 0번이라고 예측 결과를 반환했네요. 또한 cluster 중심과의 거리는 5.85라고 알려줍니다. 여기서 중요한 점은 cluster 번호와 실제 숫자는 일치하지 않는다는 겁니다. 알고리즘은 임의로 cluster 중심에 번호를 매기는데, 꼭 0번 클러스터가 숫자 ’0’을 뭉쳐놓은 건 아니에요!9. 데이터 예측해보기더 많은 데이터를 예측해볼까요? valid set에 있는 100개 데이터를 예측해봅시다! 각 cluster에 가까운 데이터들이 쭉 선정되었습니다. 정확하지는 않지만 비슷한 숫자 모양들이 서로 군집되어 나타납니다. 0과 2같은 숫자들은 잘 표현되지만, 알고리즘이 9랑 4를 헷갈리거나 5와 3을 헷갈리는 듯 하네요.FASHION MNIST로 SageMaker 머신러닝 학습 및 예측해보기자, 이제 몸도 풀었으니 제가 하고 싶었던 패션 관련 머신러닝 학습 및 예측을 진행해볼게요. 마침 옷 그림으로 MNIST와 매우 비슷한 데이터를 만들어 놓은 fashion-MNIST라는 데이터셋을 발견했어요!1. 패션 관련 MNIST 다운로드 받기패션 MNIST 데이터셋을 우선 다운받아 볼게요! 다운로드는 여기에서 받을 수 있습니다. 총 네 개의 파일을 다운로드 받으세요.- train-images-idx3-ubyte.gz : train set 이미지  - train-labels-idx1-ubyte.gz : train set 레이블  - t10k-images-idx3-ubyte.gz : test set 이미지  - t10k-labels-idx1-ubyte.gz : test set 레이블  다운로드 받은 패션 Mnist의 label은 아래와 같이 되어 있습니다. 숫자 0부터 9 대신에 각 이미지가 어떤 이미지인지 텍스트로 표현되어 있어요.LabelDescription0T-shirt/top1Trouser2Pullover3Dress4Coat5Sandal6Shirt7Sneaker8Bag9Ankle boot2. Fashion-MNIST 데이터셋을 이전에 사용했던 mnist.pkl.gz 와 같은 형태로 변환해주는 스크립트 작성해주기위에서 연습할 때는 mnist.pkl.gz 한 개 파일만 사용했는데요!?! 그래서 다운로드 받은 네 개의 파일을 똑같은 형식의 파일 하나로 만들어주는 파이썬 스크립트를 작성해 fashion-mnist.pkl.gz 파일로 만들었어요.import gzip import pickle import numpy as np # MNIST 데이터셋은 train, test 셋이 각각 image, label로 나누어 저장되어있는 4개의 파일로 구성 test_image_path = 't10k-images-idx3-ubyte.gz' test_label_path = 't10k-labels-idx1-ubyte.gz' train_label_path = 'train-labels-idx1-ubyte.gz' train_image_path = 'train-images-idx3-ubyte.gz' out_file_name = 'fashion-mnist.pkl.gz' # train label / images 추출 with gzip.open(train_label_path, 'rb') as train_label_f:     train_label = np.frombuffer(             train_label_f.read(), dtype=np.uint8, offset=8).astype(np.int64)   with gzip.open(train_image_path, 'rb') as train_image_f:     train_imgs = np.frombuffer(             train_image_f.read(), dtype=np.uint8, offset=16).reshape(-1, 784).astype(np.float32)   # test label / images 추출 with gzip.open(test_label_path, 'rb') as test_label_f:     test_label = np.frombuffer(test_label_f.read(), dtype=np.uint8, offset=8).astype(np.int64)   with gzip.open(test_image_path, 'rb') as test_image_f:     test_imgs = np.frombuffer(             test_image_f.read(), dtype=np.uint8, offset=16).reshape(-1, 784).astype(np.float32)   # 기존 60000개 training set에서 50000개는 train set으로 사용하고, 10000개는 valid set으로 활용 train_label, valid_label = train_label[:50000], train_label[50000:]  train_imgs, valid_imgs = train_imgs[:50000], train_imgs[50000:]   # train set, validati on set, test set을 튜플 자료형으로 저장 out_data = ((train_imgs, train_label),             (valid_imgs, valid_label),             (test_imgs, test_label))   # pickle file로 dataset 데이터 포맷 맞춰주기 with gzip.open(out_file_name, 'wb') as out_f:     pickle.dump(out_data, out_f) 이 과정을 통해 나온 결과물, fashion-mnist.pkl.gz 를 Jupyter Notebook이 있는 경로에 업로드합니다.fashion-mnist.pkl.gz가 업로드 되었습니다!3. 머신러닝 학습하기아까 사용했던 활용했던 숫자 MNIST 스크립트를 그대로 사용하겠습니다. show_digit()을 이름만 바꾼 show_fashion()으로 데이터를 살펴보니 드레스가 보입니다.조금 전에 했던 숫자 MNIST와 똑같은 과정을 SageMaker를 이용해, 학습 → 테스트 → 예측해보니 아래와 같은 예측 결과를 얻을 수 있었습니다. 신발은 신발끼리, 바지는 바지끼리, 가방은 가방끼리 분류된 게 너무나 신기합니다. (아까 진행한 숫자보다 더 학습이 잘 된 것 같은건 기분 탓일까요…?)머신러닝이라고 겁내지 않아도 됩니다! 유저들에게 더 좋은 서비스 제공할 수 있으니까요. 지금까지 브랜디 개발2팀의 단아한 개발자 오연ㅈ….참사를 막아주세요.앗, 잠시만요!! 중요한 것을 놓칠 뻔 했네요.저처럼 테스트를 하면 그냥 지나치지 마세요. 자동 결제로 출금되는 뼈 아픈 경험을 할 수도 있습니다. 반드시 이용했던 서비스들을 stop 하거나 terminate 해주세요. (Clean-up단계) 자세한 내용은 여기를 클릭하세요.지금까지 Brandi 개발 2팀, 단아한 개발자 오연주였습니다!# entire script (숫자 Mnist) # 오호 드디어 coding start! # 이제부터 Brandi의 단아한 개발자, 저를 따라오시면 됩니다 :) # 노트북 Block을 실행하는 방법은 Shift + Enter 입니다 from sagemaker import get_execution_role role = get_execution_role()  # 초기에 설정해 뒀던 IAM role 가져오기 bucket = 'sagemaker-julie-test' # 초기 단계에 만들었던 S3 Bucket 이름 적기 %%time import pickle, gzip, numpy, urllib.request, json   # 여기서 잠깐, 생소한 라이브러리 설명을 드릴게요! # pickle: python식 데이터 압축 포맷 # numpy: 수치 계산을 하기 위한 python package # Load the dataset urllib.request.urlretrieve("http://deeplearning.net/data/mnist/mnist.pkl.gz", "mnist.pkl.gz") with gzip.open('mnist.pkl.gz', 'rb') as f:     train_set, valid_set, test_set = pickle.load(f, encoding="latin1")     # matplotlib로 그리는 그림이 jupyter 노트북에 바로 보여줄 수 있도록 설정 %matplotlib inline import matplotlib.pyplot as plt # 도표나 그림을 그릴 수 있게 해주는 라이브러리 plt.rcParams["figure.figsize"] = (2, 10) # 그림의 크기 지정 def show_digit(img, caption='', subplot=None):     if subplot is None:         _,(subplot) = plt.subplots(1,1)         imgr = img.reshape((28, 28))     subplot.axis('off')     subplot.imshow(imgr, cmap='gray')     plt.title(caption)   # train_set의 그림과[0] 데이터 이름[1]을 예시로 보여준다 show_digit(train_set[0][30], 'This is a {}'.format(train_set[1][30]))   # 학습을 하기 위해 학습 알고리즘 및 데이터 경로 설정! from sagemaker import KMeans data_location = 's3://{}/kmeans_highlevel_example/data'.format(bucket) output_location = 's3://{}/kmeans_example/output'.format(bucket)   print('training data will be uploaded to: {}'.format(data_location)) print('training artifacts will be uploaded to: {}'.format(output_location))   kmeans = KMeans(role=role,                 train_instance_count=2,  # 장비 2대를 사용하여 학습하겠어요!                 train_instance_type='ml.c4.8xlarge',                 output_path=output_location,                 k=10,  # 아래 그림을 참고해 주세요!                 data_location=data_location) %%time   # 학습 시작! kmeans.fit(kmeans.record_set(train_set[0]))   %%time # 모델을 만든 후 사용하기 위하여 배포하기 kmeans_predictor = kmeans.deploy(initial_instance_count=1,                                 instance_type='ml.m4.xlarge')                                  # valid_set에 30번째 sample을 테스트 해보기 result = kmeans_predictor.predict(valid_set[0][30:31])  print(result)   %%time   # vaild_set에 있는 0번부터 99번까지의 데이터로 cluster를 예측 해보자 result = kmeans_predictor.predict(valid_set[0][0:100])   # 예측 결과에 대한 cluster 정보를 수집 clusters = [r.label['closest_cluster'].float32_tensor.values[0] for r in result]   # 각 cluster별 예측된 이미지 출력 for cluster in range(10):     print('\n\n\nCluster {}:'.format(int(cluster)))     digits = [ img for l, img in zip(clusters, valid_set[0]) if int(l) == cluster ]     height = ((len(digits)-1)//5)+1     width = 5     plt.rcParams["figure.figsize"] = (width,height)     _, subplots = plt.subplots(height, width)     subplots = numpy.ndarray.flatten(subplots)     for subplot, image in zip(subplots, digits):         show_digit(image, subplot=subplot)     for subplot in subplots[len(digits):]:         subplot.axis('off')     plt.show() 출처Getting Started - Amazon SageMaker CodeOnWeb - 머신러닝 초보를 위한 MNIST fashion-mnist 글오연주 사원 | R&D 개발2팀[email protected]브랜디, 오직 예쁜 옷만#브랜디 #개발문화 #개발팀 #업무환경 #인사이트 #경험공유
조회수 706

데이터 검증이 중요한 이유

데이터 검증은 system error 또는 human error에 의해 garbage data가 쌓이고 있진 않은지, 정상적으로 데이터가 수집되는지 여부를 확인하는 매우 중요한 단계인데요. 오늘은 왜 데이터 검증 단계가 중요한지를 최근 경험을 통해 설명드리고자 합니다.한 고객사에서 데이터 검증 과정 중 GA(Google Analytics for Mobile Apps) 대비 저희가 공급한 툴(와이즈트래커)의 세션수(방문수)가 너무 낮다는 문의를 주셨습니다. 그 수치는 무려 3배 가량의 차이로 acceptable이 힘든 데이터였습니다.사실 세션은 설정이 요하는 분석 항목이 아니기 때문에 측정기준으로 비교해 봐야 했지만, 세션 기준 역시 30분으로 GA와 와이즈트래커와 동일했습니다. 이에 저는 GA에서 over counting되는 요인이 있을거라 생각하고 열심히 구글링 하다 흥미로운 아티클을 발견했습니다. GA SDK V4 적용했더니 세션수 2배 이상 증가했다?>> Link이 문의에 한 사람이 답변을 달기를, GA에는 activity auto tracking 기능이 있는데, 이를 사용할 경우 앱을 백그라운드에 내리거나 프로세스 킬하고 재실행하면 30분 세션 유지기간에 상관없이 세션이 증가한다는 내용이었습니다. 이 말인즉, 사용자가 앱과의 인터렉션이 없어도 GA SDK가 자동으로 새로운 세션을 발급한다는 건데요. 설마했지만 사실 확인을 위해 테스트를 진행했습니다.1) 테스트 앱 개발2) GA SDK v4 적용3) 앱 실행4) 앱 프로세스 종료 후 30분 이내 재실행 or 백그라운드 처리이는 불과 1분 안에 일어난 현상테스트 전 데이터는 사용자 1, 세션 6건이었고, 3단계 앱을 실행하는 시점에 사용자 2, 세션 7이 되었습니다. 정상적으로 사용자 1건, 세션 1건이 증가한 것입니다. 여기서 앱을 종료하고 바로 앱을 다시 재실행 해보았습니다. 그리고 데이터를 보니 오잉? 정말 세션이 증가했습니다. 정말인가 싶어 여러 번 했지만, 아래 캡쳐시간을 보시면 알겠지만, 불과 1분도 채 안되서 3건의 신규세션이 발생한 것입니다.그렇다면 도대체 왜 이렇게 처리한 것일까? 오류일까?정확히 알 수는 없지만 이 기준 자체는 데이터 해석에 큰 오해를 일으킬 수 있습니다. 우리는 보통 평균 값을 갖는 파생지표를 세션을 기준으로 산정합니다. 그래서 보시는 것 처럼, 평균 세션당 화면, 평균 세션 시간이 세션수를 기준으로 나눠진 것을 알 수 있습니다.평균 세션당 화면, 평균 세션 시간, 사용자당 방문횟수와 같은 지표는 사용자의 앱 인게이지먼트를 판단하는 척도로 활용하는 사용성 높은 지표인데, 사용자와 앱 간의 실질적인 인터렉션이 전혀 없는 허수의 세션이 증가하니 세션수와 연관있는 모든 파생지표 데이터가 실제보다 낮은 수치로 표기되고, 이를 가지고 잘못된 해석을 하고 잘못된 액션까지 취할 수 있다는 것입니다.해당 고객은 안타깝게도 세션 뿐만 아니라 세션과 관련된 파생지표 모두 잘못된 기준의 KPI를 보았다고 할 수 있는데요, 사실 아직까지 국내는 GA에서 추출하는 기본 데이터 수준으로 KPI를 활용하는 경우가 많고, 특히 GA의 activity auto tracking 기능을 대부분 true로 설정하여 활용하고 있을 것이기 때문에 데이터 해석의 문제는 생각보다 굉장히 범용적으로 발생하고 있을 것으로 예상됩니다.!! 데이터 검증은 선택이 아닌 필수 과정데이터 분석을 잘하기 위한 전제 조건은 좋은 데이터를 수집하는 것입니다. 하지만 보통 3rd party tracking 업체는 툴을 제공하는 것 까지만 수행하지, 클라이언트의 개발자가 제대로 적용했는지, 적용한 데이터가 정상 수집되고 있는지 등의 과정까지 support 하지 않습니다. 그럼 클라이언트가 직접해야 하는데 이건 현실상 더더욱 힘들 수 밖에 없습니다.그래서 툴을 선택할 때는 반드시 도입 단계에 데이터 검증을 지원하는지 여부를 확인해야 합니다. 2012년부터 빅데이터 분석 바람이 불고 있지만, 현실은 기업에 전문 분석가 1명이 없는 기업이 아직 대부분입니다. 또한 비전문가가 쉽게 배우고 커버할 수 있는 업무도 아니기 때문에 전문 업체의 지원을 받아야 합니다. 안해주면 해달라고 떼 써야 합니다. 초기 도입시에 말이죠. 그래야 이후에 자신감있게 데이터를 신뢰하고 분석하고 액션 플랜을 수립할 수 있습니다.오늘 당장 리포트의 데이터를 의심의 눈으로 한 번 다시 보시는 계기가 되면 좋겠습니다.
조회수 1126

Spotify와 RECORD의 공통 행보는?

둘의 공통점은 뭘까과유불급, 무엇이든 지나치면 좋지 않습니다아무리 몸집이 큰 공룡이라도, 피를 많이 흘리면 쓰러지고 말죠. 피만 흘리면 다행이지만, 제때 치료하지 않으면 이곳저곳 곪을 수도 있습니다. Spotify는이 사실을 분명하게 인지해야할 것 같습니다.전세계 1위 음악 스트리밍 업체인 Spotify가 2016년 한 소송에 휘말려 약 334억 원을 지불한 적이 있다는 것 아시나요?Spotify의 3천 만 달러 합의금 지불바로 저작권료 미지급 건 때문인데요. 빌보드에 따르면, 전미음악출판협회(NMPA)가 저작권료를 못 받은 유통사와 창작자들 대신 진행한 소송에 대한 합의금입니다.한화로 약 334억 원에 달하는 지출입니다. 아무리 Spotify가 세계 최대 음악 스트리밍 업체라고 하지만, 2016년 Spotify가 약 6억 달러(6300억 원)에 달하는 적자를 기록한 것을 감안하면 상당한 출혈입니다. 물론 애초에 지급했어야 할 비용이지만요. (출처: 스포티파이 재무보고서, 2016)총 340억 원중 약 270억 원은 저작권 미지급료이며 다른 70억 원은 과징금입니다. 향후 3개월 동안 지급 신청을 하는 유통사에게 해당하는 미지급료만큼 지불되며, 남은 액수는 시장 점유율에 따라 유통사에게 지급된다고 합니다. (실제 저작권자는 유통사에서 지급받는 구조입니다.)“음악 저작 데이터관리의 부실이 가장 큰 원인”무엇보다 이 사단이 난 이유로 스포티파이는 “어떤 작곡가가 어떤 노래에 대한 소유권을 주장하는지 충분한 데이터를 파악하지 못 해 로열티 지급에 어려움을 겪어왔다”고 밝혔습니다.전세계 1위 업체가 데이터 관리에 어려움을 겪을 정도이니, 전세계 음악 산업에서 데이터가 관리되고 있는 실태가 심각하다는 것을 쉽게 알 수 있습니다.위 소송에서 Spotify와 NMPA의 합의문에 따르면 Spotify는 앞으로 사용되는 음악에 대해 미지급되는 저작권료가 없도록 최선을 다할 것을 약속했다고 합니다. 그 결과로 1년 뒤, Spotify는 블록체인 스타트업을 인수하게 됩니다.“스포티파이, 음악 저작권 문제를 해결하기 위해 블록체인 스타트업 ‘미디어체인’을 인수하다” (출처: 테크크런치, 2017)그렇게 1년, 아직 미디어체인랩스 인수의 성과가 뚜렷이 발표된 것은 없습니다. 반대로 Spotify가 얽힌 저작권 소송은 그 규모가 더 커졌습니다. 올 1월 Spotify를 상대로 한화 약 2조 원의 저작권료 소송이 제기된 것인데요. 소송이유는 Spotify가 특정 음악을 이용함에 있어 제대로 저작권 체결을 하지 않았다는 겁니다. 7100만 명의 유료 이용자와 1600만 명의 월간활동사용자에도 불구하고 2017년에도 $4500만 달러의 적자를 기록한 Spotify가 이번 소송에선 어떤 결론을 맞이할지 음악 산업의 귀추가 주목되고 있습니다.그렇다면 한국은 어떨까요?“음원 권리 정보가 없어 잠자는 저작권료만 170억 원”국내 4대 음원 유통사2017년 국정감사에서 국내 4대 음원 유통사가 2014년~2016년까지 음악 창작자와 실연자한테 지급하지 않은 저작권료와 저작인접권료가 174억 원으로 집계되었다고 합니다. (출처: 4대 음원 유통사 미지급 저작권료 최근 3년간 174억, 뉴스1)특히 국내 음원시장 60%를 점유하고 있는 멜론에서 누적된 미지급금만 97억 원에 달합니다. 멜론은 국내 음원시장을 독점하다 시피한 공룡 업체입니다. 때문에, 가장 앞서서 저작권 관련협회와도 긴밀히 협업을 하고 있음에도, 위와 같은 문제가 발생한다는 것은 위 미지급 저작권료 문제가 단순히 멜론의 문제가 아니라, 국내 음악 산업 전반의 문제임을 시사합니다.저희가 RECORD 2.0모델에서 해결하고자 하는 문제도 바로 이 ‘데이터’입니다.“블록체인을 이용한 강철 음악 데이터베이스 구축!”RECORD 1.0 = 음악 오픈 마켓RECORD 2.0 = 음악 데이터 블록체인RECORD 2.0 모델2015년부터 운영되어 온 RECORD 1.0에서는 누구나 음악을 올리고, 듣고, 팔 수 있었다면, 2019년 출시될RECORD 2.0에서는 음악 콘텐츠에 대해 정확한 정보를 확인 할 수 있습니다. 블록체인에 기반하기에 탈중앙화됨은 물론(특정인-기관에 의해 왜곡될 수 없음을 뜻함) 투명하게 정보가 유지될 수 있습니다. 바로 이 점이 RECORD와 Spotify의 공통 행보입니다. 앞으로 음악 시장이 커질수록 음악 권리 정보 관리가 점점 중요해짐을 아는 것이죠.이 프로젝트를 주도하는 RECORD Foundation의 신해용 대표는 “국내 음악 산업에서4년 간 종사하다 보니 음악 산업에서 데이터 관리가 매우 소홀히 되고 있음을 느꼈다. 블록체인의 가장 큰 효용가치는 데이터 관리에 있다. 현재 개발 중인 RECORD 2.0이 가져올 변화가 무척 기대된다.”라고 했습니다.RECORD2.0은 음악 산업의 모든 이해관계자들-창작자, 제작자, 유통사, 스트리밍 플랫폼, 청취자, 저작권협회 등 모두에게 도움이 되는 날을 꿈꿉니다. 가장 좋은 것은 공룡이든 개구리든 애초에 피를 흘리지 않는 일이기 때문입니다.음악 데이터와 블록체인의 만남,권리정보를 명확히 기록해줄 음악 데이터 블록체인 레코드 2.0이 기대되는 이유입니다.자세한 내용과 로드맵은 8월 중에 공개됩니다!그럼 지금까지 RECORD팀이었습니다!레코드 파운데이션은 지난 3년 간 운영해온 음악 산업 노하우를 기반으로 음악 관련 데이터를 보호하는 블록체인을 개발하는 프로젝트입니다.레코드의 최신 소식을 만나보세요.RCD가 코인레일에 상장됩니다.[상반기 결산] 레코드 파운데이션 로드맵 달성율코인베네(CoinBene) 사용법-레코드 첫 상장소!레코드 파운데이션 공식 홈페이지 및 페이스북, 트위터, 스팀잇, 링크드인에서 레코드파운데이션의 최신 소식을 확인하세요.#레코드팜 #레코드파운데이션 #블록체인 #RCD #코인상장
조회수 1394

판매자가 바라보는 아마존 FBA의 장단점 (단점편)

안녕하세요, 대한민국 사업자들의 해외 전자상거래 진출(아마존 판매)을 도와주는 컨설팅 회사이자 업무대행사 컨택틱의 이이삭 대표입니다.오늘 여러분들께 소개할 내용은 판매자가 바라보는 FBA 정책의 세부사항들입니다.숨겨진 FBA 정책의 단점이 포스트를 읽고 계신 분들은 이미 FBA가 무엇인지 잘 알고 계실 분들일 것이기 때문에 FBA가 무엇인지는 굳이 설명 드리지 않겠습니다. FBA가 무엇인지 모르거나 궁금하신 분들은 아래의 유튜브 영상을 참고하시기 바랍니다:https://www.youtube.com/watch?v=UXsMm1sjMao이번 포스트에서는 판매자가 바라보는 FBA 정책의 장단점을 다룰 것입니다. 그리고 그 중에서도 모두가 알만한 장점보다는, 많은 분들이 간과하고 있는 단점 위주로 설명을 드리고자 합니다.판매자가 바라보는 FBA의 장점FBA의 장점에 대해서는 이미 많은 분들이 잘 알고 계시기 때문에 판매자가 바라보는 FBA의 장점에 대해서는 요점만 정리해드리겠습니다.▶직배송보다 훨씬 저렴한 물류비▶귀찮은 CS 업무의 대행▶Prime 뱃지로 인한 매출의 향상▶Buy Box 획득으로 인한 매출의 향상▶FBA Export 기능으로 인한 매출의 향상▶Sponsored Products 광고의 조건 성립으로 인한 매출의 향상판매자가 바라보는 FBA의 단점그렇다면 정말 눈 여겨 봐야 할 '판매자가 바라보는 FBA의 단점들'은 무엇이 있을까요? 먼저 요점부터 정리해드립니다:▶6개월 이상 보관 시 장기 보관료 발생▶반품에 대한 제어 불가▶고객에게 압도적으로 유리한 반품 정책이제 이것들을 하나씩 좀 더 구체적으로 살펴보도록 하겠습니다1. 6개월 이상 보관 시 장기 보관료 발생이 부분은 많은 분들이 알고 계실 겁니다. 아마존 FBA에 재고를 입고하는 날로부터 6개월이 지난 시점부터는 ‘장기보관료’가 부과됩니다. 아마존은 창고 사업으로 수익을 창출하는 기업이 아니라 판매수수료로 수익을 창출하는 기업이기 때문에 아마존 입장에서는 최대한 빠른 시간 안에 최대한 많은 물건을 움직이는 데에 포커스를 두고 있습니다. 하지만 많은 분들이 잘 모르는 것은 ‘내 재고에 대해 장기보관료가 부과되는 정확한 기준은 무엇이며, 언제 부과되는지’입니다. 정확한 답변은, “FBA 창고에 입고된 날로부터 6개월이 초과된 재고분에 대하여, 매년 2월 15일과 8월 15일에 일회성으로 부과된다” 입니다. 즉, 재고가 입고 된지 6개월이 초과 되었어도 2월 15일이나 8월 15일이 아니라면 장기보관료를 지불하지 않겠죠? 이것은 정말 꿀팁이지만, 이 논리대로라면 가장 이상적인 FBA 입고일은 언제일까요? 바로 넉넉잡아 2월 20일입니다. 그 이유는, 2월 20일에 입고된 재고가 하나도 팔리지 않았다는 가정하에서 180일 (6개월)이 지나는 시점은 8월 20일입니다. 즉, 장기보관료 청구일인 8월 15일이 지난 시점이 되는 것입니다. 따라서, 2월 20일에 입고된 재고는 8월 15일에 장기보관료 청구 대상이 아니게 되며, 다음 해 2월 15일까지 적용 날짜가 미뤄지는 것입니다. 같은 맥락에서, FBA 입고하기 가장 안좋은 시기는 2월 초, 또는 8월 초입니다. 그렇게 되면 꼼짝없이 장기보관료를 단 하루의 여유 조차 없이 정직하게 내야 되겠죠.2. 반품에 대한 제어 불가FBM으로 판매하는 셀러들은 반품 요청이 들어올 때마다 반품 요청을 수락할 수도 있고 거절할 수도 있습니다. 하지만 FBA로 판매하는 셀러들은 수령일로부터 30일 내에 반품 요청을 하는 고객들의 반품 요청을 무조건 받아줄 수 밖에 없습니다. FBA에 입고한 제품들은 아마존이 배송을 전체적으로 책임을 집니다. 정확히 말하자면 발송에 따른 배송 뿐만 아니라 반품에 따른 배송까지도 책임을 지는 것인데요, 아마존 FBA의 정책에 보면 고객은 상품을 수령한 날로부터 30일 이내에 (대부분의 경우) 반품을 신청할 수 있습니다. 특정 상품(예를 들어 식품)은 반품할 수는 없지만 환불은 가능할 수도 있다고 적혀있습니다. 반품을 안해도 환불을 해주는 것이 굉장히 비합리적이고 어이 없을 수도 있겠지만, 다행히도 이런 경우에는 아마존이 셀러에게 보상을 해주기 때문에 너무 걱정 하지 않으셔도 됩니다 (이따가 자세히 설명 드릴 겁니다).3. 고객에게 압도적으로 유리한 반품 정책앞서 언급한 2번과도 연관이 있는 내용입니다. 아무래도 이 부분은 2가지 분류와, 그 안에서도 3가지 경우의 수를 둘 수가 있는데, 그렇게 정리해서 알려드리는 것이 이해가 쉬울 것 같습니다.분류1: 30일 이내의 FBA 반품건고객의 부주의로 재판매가 불가능한 반품: 이게 최악의 경우입니다. 이럴 경우에는 아마존에서도 책임을 지지 않으며 재고는 재판매가 불가능한 재고로 분류되기 때문에 셀러는 해당 재고를 귀환시키거나 폐기처분해야 합니다.아마존의 부주의로 재판매가 불가능한 반품: 운송중에 파손되었거나 손실된 재고에 대해서입니다. 이런 경우에는 아마존에서 보상해줍니다.재판매가 가능한 반품: 판매가 일어났을 때 차감되었던 재고가 전산상으로 다시 복구됩니다. (-1+1=0)분류2: 30일이 초과된 FBA 반품건위에서 언급했듯이, 특정 상품군(식품)은 원칙상 반품이 불가능합니다. 하지만 아마존에서는 고객들의 편의를 위해 마땅한 사유가 있으면 환불을 해줍니다 (심지어 전액 환불입니다). 하지만 이런 경우에는 아마존에서 셀러에게 보상해줍니다분류3: 반품이 기본적으로 불가능한 제품에 대한 예외적인 반품건아마존에서 셀러에게 보상해줍니다여러분들이 궁금해할 수도 있는 ‘아마존에서 셀러에게 보상해주는 것’은 (1) 금액적인 부분에 대해: 총 판매액에서 70~80%의 금액을 현금으로 보상해주거나, 동일한 제품 (commingled) 재고가 있을 경우 그 재고로 충당해줍니다. (2) 보상해주는 시기에 대해: 해당 결정이 일어난 날로부터 45일 뒤에 판매자의 밸런스 (판매대금)으로 충전되는 방식입니다. 이것을 영어로 reimbursement 이라고 하며, 정산 보고서에 ‘Other’ 또는 ‘기타’ 항목으로 분류됩니다.아마존 FBA의 정책을 제대로 알면 뜻밖의 목돈을 챙길 수 있다!마치며...확실한 것은 아마존 FBA가 단점보다는 장점이 훨씬 많습니다. 하지만 단점도 확실하게 알아야 그 단점들을 보완할 수 있는 대비책을 마련할 수 있습니다. 아마존에서 셀러에게 보상을 해주는 경우에 대해서 제대로 알고 있다면 그동안 누락된 보상건들을 조회하여 정리한 뒤, 아마존 셀러 서포트에 접수를 하면 마땅히 받아야할 보상금도 누락된 것들이 있겠죠? 판매 건수가 많으신 셀러 분들은 시간을 내서 그동안 누락된 FBA 반품 보상건들을 정리해서 꼭 돌려받을 금액을 잘 돌려받으시기 바랍니다 ^^컨택틱 서울특별시 강남구 강남대로62길 11, 8층 (역삼동, 유타워) 대표 전화: 02-538-3939 해외 부서: 070-7771-1727 영업 부서: 070-7771-1728 이메일: [email protected] 홈페이지: https://www.kontactic.com
조회수 3203

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역시 좋은 대안이 될 수 있습니다.#스포카 #개발 #개발자 #인사이트 #꿀팁
조회수 1067

초기 스타트업이 꼭 해야되는 집착 2가지

1) 고객 집착계속 고객한테 물어보고 그들이 원하는 걸 직접 들어봐야된다. 전화로 같이 떠들어야한다. 말은 쉽지만 생각보다 행동은 쉽지 않다. 근데 고객도 어떤 부분에선 그들도 자기가 뭘 원하고 있는지 모르고 있는 점도 있어 그들 말 속에서 어떤 욕망의 종류를 가지고 있는지 메슬로를 생각하며 끊임없이 딥하게 들어가야된다. 그리고 추상적으로 표현하는 건 계속 세그먼트 해가면서 재질문을 던진다. "좋은 것 같아요. 편한 것 같아요"같은 피드백은 인사이트가 없다. 좋다를 뭐라고 정의내리고, 편한 건 그들에게 있어서 정의가 무엇인지 아주 잘게 쪼개서 다시 질문한다. 이를 회사 차원에서 무엇을 실험해볼 수 있을지 생각해야된다. 이런 행위를 초기에는 많이 해야되는데(하는 행위는 스테이지가 올라가더라도 지속되지만 방법이 데이터 위주로 확인하고 정량적인 부분으로 A/B testing > mesuring > learning이 많아진다.) 고객이랑 친분이 없는 상태서 하면 귀찮게 하는 것 같고 짜증나니깐 처음 고객이랑 접점이 생기면 친구부터 되야한다. 고객은 첫 CS접점에서 친구처럼 느끼는 포인트들이 자주 생겨야한다. 이와 관련되서는 샤오미 얘기를 다룬 참여감이라는 책을 참조.2) 마케팅 집착마케팅 집착은 곧 회사 스테이지 별로 집착의 개념이 달라진다. 초기에는 무조건 프로덕에 집착해야된다. 위대한 제품을 만들기전까지 마케팅 개념을 외부에서 찾으면 안된다. 계속 제품안에 마케팅을 집어넣고 넣고 넣고 넣을대로 넣었다고 생각해도 또 넣고 위대하게 만들어야된다. 그 지표는 바이럴 지표다. 주변에 고객들이 아주 신나게 떠들어대고 추천하는 지표를 추적할 수 있는 고민과 방법을 조직은 가지고 있어야한다. 보통 실수를 범하는게 mvp 수준에서 얼핏 market fit 찾았다고 생각하고 sns 스폰 돌리거나 외부 마케팅을 급하게 진행한다. 또는 조금 스테이지에 있는 초기 기업은 기존 고객은 돌아가는 것처럼 보이니 신규 고객에 혈안이 된다. 투자도 받았겠다. 돈 쓰니 고객도 오겠다. 그렇게 착각에 빠져 점점 내부는 썩어간다. 보통 MVP를 만들어서 수정해서 그저 더 나은 MVP정도를 만들고 외부 마케팅을 시작하는 것이다. 근데 거기서 부터가 망하는 지름길이다. 그 다음은 MLP(minimum lovable product)를 만들어야한다. 여기까지도 많은 회사가 하지는 않는 것 같다. 근데 사랑받을 수 있는 수준도 사실 부족할 수 있다. MLP를 넘어 MGP (minimum greatable product)까지 하고 난 뒤 마케팅은 외부 영역으로 고민할 때다. 여기서부터 스케일업을 고민해야된다. 그때까지는 절대 외부 마케팅을 생각지도 못하게 위대한 프로덕에만 집착하도록 조직을 집중 또 집중시켜야된다.PPL. 페오펫에서는 위대한 개발자, 디자이너, 마케터를(CMO) 모시고 있습니다. 커피 한잔 하실 분은 연락주세요. 펫 산업에서의 완벽한 A to Z 수직 계열화를 꿈꿉니다. 한국에서 가장 밀도있는 생애주기 데이터를 압도적으로 쌓고 활용하는 데이터 플랫폼이 될 것입니다. #페오펫 #peopet #아이디어기업 #기업문화 #목표 #비전 #각오 #팀빌딩
조회수 1131

하버드 마지막 강의

위 책은 아래 다섯가지 질문이 삶에서 필수적이라고 강조한다.1. 잠깐만요, 뭐라고요?2. 나는 궁금한데요?3. 우리가 적어도 ... 할 수 있지 않을까?4. 내가 """어떻게""" 도울까요? 5. 무엇이 가장 중요한가?--------------------------------------------------------------1.잠깐만요, 뭐라고요? -> 모든 이해의 근원웬만하면 뭐든지 알고, 이해하고 가려는 성격덕인지 평소에도 자주 훈련되어져있는(?) 질문이다.2. 나는 궁금한데요?-> 모든 호기심의 근원1번 질문과 마찬가지로, 평소 지나칠 정도로 호기심이 많다라는 얘기를 많이 듣는다.3. 우리가 적어도 ... 할 수 있지 않을까? -> 모든 진전의 시작여기서 포인트는 "우리" 라는 단어다.절대적으로 대립되는 두 입장이라고 한들, 그 안의 공통분모는 존재하기 마련이며 이를 활용하여 접근해가는 방식을 설명해주는데, 꽤나 유용하고 의미있는 방식이라고 생각한다.평소 직설적인 성격 탓에 팀원들과의 회의 시 부딪히는 "쟁점"을 최대한 극대화시키는 동시에 파고들어서, 마치 현미경으로 확대해보면서 하나하나 해부해보는 방식을 취하는 편이다.이러한 방식이 효율적일때도 있지만, 때때론 "대립각"을 더욱더 극대화시키는 경우도 많이 있다. 당연히 사람인지라, 이는 감정적이고 발전없는 회의로 이어지기도 한다.책에서의 예시와 마찬가지로우리 모두 "회사의 발전"을 위해서 이 회의를 하고 있지 않은가? 등 대립되는 입장 속에서도 공통분모를 찾아 모두의 공감을 토대로 분위기를 환기시킬 수 있다면, 회의 시 효율과 이성 두 마리 토끼를 잡는데 큰 도움이 되지 않을까 생각이 들었다.4. 내가 """어떻게""" 도울까요? -> 모든 좋은 관계의 기본여기서 포인트는 "어떻게" 다.타인을 도울 수 있는 방법은 많다. 하지만 도움을 받는 사람 입장에서 모든 방법이 분명 도움이 되지는 않는다.다시 말해서, "어떻게" 도울 것인지 고민하는 것은 타인을 깊숙히 이해하는 것을 필수적으로 수반한다.작년 "학생독립만세" 서비스 기획을 위해 초기 문제 검증을 할 때 철저히 고객 중심으로, 고객의 관점에서 생각을 했었다. 고3, 재수생들을 실제로 직접 만나 인터뷰를 진행한 적도 굉장히 많다. 덕분에 반응이 좋았고, 올해 정식 런칭을 하여 현재 운영해오고 있는데,그런데, 관성이 참 무섭다.겨우 초기 검증만 끝냈을 뿐, 고객들과 함께 진화해나가는 지금이 "어떻게" 도울 것인지 오로지 고객들의 입장에서 생각해야 할 가장 중요한 시기인데,문제가 터졌을 때 나도 모르게 내 관점에서 해결책을 생각하고 있는 모습을 종종 발견한다.(심지어 나는 핵심 타겟 고객도 아니다!!!!!)이를 해결하기 위해 일주일에 한번 "정말 고객 관점에서 생각하고 있는가" 생각하는 시간을 설정했다.고객들은 도움이 필요치 않다. 자신들이 "원하는 방식의 도움"이 필요하다.5. 무엇이 가장 중요한가? -> 삶의 핵심일의 측면에서 한정해서 보자면,너무도 잘 알고 있고, 끊임없이 노력하지만 하루에도 여러개의 이슈가 생기고, 사라지는 초기 스타트업 특성상 여전히 어려운 문제다.개인적으로는 일을 하는 시간 외에, 한 발짝 떨어져서 목록들을 나열해서 재분배하는 관조적인(?) 시간을 설정하여 이를 해결한다.하루의 목록들은 매일 아침에,일주일의 목록들은 매주 주말에,한달의 목록들은 매달 마지막주 주말에,이 시간들을 꼭 확보하려 노력하지만,2월을 돌이켜보자면 기타 다른 일들을 압살할 정도의 "중요도+몰입" 을 요하는 일들로 인해 많이 무너졌던 것도 사실이다.반성하자. 무너졌다면 다시 일으켜세우는 수밖에.#학생독립만세 #퇴근학교 #교육기업 #기업문화 #조직문화
조회수 4792

커뮤니티 데이터로 만드는 커머스, 스타일쉐어 MD 인터뷰

안녕하세요. 스타일쉐어의 장선향입니다.스타일쉐어를 여전히 패션 사진 공유 플랫폼으로 생각하는 분들이 많지만, 작년 4월부터 스토어1를 론칭해 SNS를 기반으로 한 커머스를 함께 운영하고 있습니다. SNS를 기반으로 한 커머스. 감이 잘 안 오신다구요? 맨 처음 앱이 출시되었을 때 많은 유저들은 SNS로서 스타일쉐어를 이용했습니다. 페이스북이나 인스타그램처럼 일상의 패션 사진을 올리고 공유하는 플랫폼처럼 말이죠. 유저들은 제품에 대한 정보를 궁금해하기 시작하고, 지난해 4월 커머스가 런칭한 후에는 사진 속 상품을 클릭 한 번으로 구매를 할 수 있게 되었습니다. SNS적 성격이 강한 기능인 스타일피드를 시작으로 스토어가 결합되어 유저들에게 정보 공유와 구매를 한 번에 할 수 있게 된 것입니다.뛰어난 콘텐츠 생산자이자 다양한 미디어를 활용하며 콘텐츠를 소비하는 소위 밀레니얼 세대들이 사용하는 스타일쉐어는 일반 커머스와는 확연히 다릅니다. 유저들은 스타일쉐어에서 정보를 얻고 적극적으로 쇼핑에 참여하며, 제품에 대해 평가하고 후기를 공유합니다. 그러다 보니 기존 쇼핑커머스에서 흔치 않은 이야기들을 만들어 냅니다. 작은 브랜드가 굉장히 성장한다던가 새로운 유행을 만들어 낸다거나 하는 식으로 말이죠.이런 재미있는 스토리들을 들려주실 커머스 MD분들께 스토어에 대해 들어보는 시간을 가졌습니다. 단 6명으로 올해 4월, 누적 거래액 100억을 달성하며 매달 새로운 기록을 세우고 있습니다. MD(MerchanDiser) 란 상품을 기획하는 직군을 말합니다. 스타일쉐어에서 판매하는 상품을 소싱하고, 기획하는 일을 하며 고객의 반응을 파악하여 매출 관리, 재고관리, 사후관리까지 담당하고 있습니다. 지난 1년간 무에서 유를 만들고 있는 스타일쉐어 스토어의 숨은 주인공, 스쉐 MD분들 — 커머스팀 리더 신희정님, 패션MD 김미리님, 뷰티MD 김민희님- 을 소개합니다.스타일쉐어의 스토어 규모에 대해서 소개해 주세요.희정: 600여개 패션, 300여개 뷰티, 300여개 슈즈/잡화 브랜드들이 입점해 있습니다. 처음 스토어를 론칭할때는 100여개 브랜드로 시작했는데 지금은 1,100여 개 브랜드, 4만 개가 넘는 제품을 판매하고 있습니다.스타일쉐어의 스토어는 다른 커머스 플랫폼과 어떻게 다른가요?미리, 민희: 대부분의 커머스들은 탑 셀러가 정해져 있고 주로 빅 브랜드가 상위 매출의 대부분인데요. 유저 연령대가 젊은 스타일쉐어의 특성상 새로운 브랜드와 제품에 관심이 많습니다. 스타일피드에서의 바이럴과 마케팅으로 브랜드파워가 높지 않아도 매출이 빠르게 성장하는 것을 볼 수 있습니다. 그러다보니 저희는 탑 셀러/빅 브랜드에 의존하지 않고 새로운 브랜드를 발굴하고 성장하는데 관심이 많습니다. 실제로 매월 MD의 기획과 마케팅에 따라 베스트셀러가 바뀝니다. 입점사들에게는 기회가 많은 채널이라고 생각합니다.SNS 컨텐츠를 기반으로하는 스쉐스토어 특성이 상품판매에 영향을 준 대표적인 사례를 소개해 주시겠어요?미리: 대표적인 브랜드 중 하나는 휠라인데요. 휠라는 최근 젊은 느낌을 주기 위해 브랜드 리뉴얼을 했습니다. 최근 스타일쉐어에서 10–20 타겟의 운동화 디스럽터2를 선 발매하고, 유저들의 초기 반응을 바탕으로 추후 리오더해야할 물량을 예측했습니다. 바이럴 마케팅뿐만 아니라 상품 계획을 하는데 스타일쉐어를 활용한 것입니다. 디스럽터의 성공적인 론칭 이후 휠라가 인기 검색어로 오랫동안 상위를 차지했고 선발매 제품의 초기 물량 역시 완판되었습니다.민희 : 뷰티의 경우 바이럴이 정말 중요한데요. 마스크팩/뽀샵픽서라는 제품을 판매하는 파이스해빗2은 인지도가 낮은 브랜드였는데, 스타일쉐어에서의 바이럴과 매출 증가를 기반으로 최근 왓슨스 등 오프라인 매장에 입점했습니다. 바디미스트 브랜드 라르끄3는 단독 입점 후 첫월 매출 1200% 성장을 기록하며 이후 해외 수출까지 진행하는 기반을 마련했습니다. 타 커머스에서는 스테디셀러가 매출의 상위를 꾸준히 유지한다면, 스타일쉐어는 다른 커머스들에 비해 신규 브랜드들도 스타일쉐어 플랫폼내 다양한 컨텐츠들을 통해 베스트셀러가 되고 있습니다.특히 입점사들의 매출 성장을 위해 MD분들은 어떤 점에 신경쓰나요?미리, 민희: 패션과 뷰티업체 중 40% 정도를 신규 브랜드가 차지하고 있습니다. 신규 브랜드 성장을 위해 MD로서 브랜드와 상품 판매 초반에 많은 협의를 가집니다. 뷰티 브랜드의 경우 제품의 기능적인 부분을 잘 나타낼 수 있도록 하고, 스타일쉐어 마케팅 채널과 광고 채널을 써서 판매촉진을 시도합니다. 덕분에 입점사들간의 입소문으로 입점문의가 많이들어오고 있습니다.최근 단독 판매, 선 발매등 브랜드와의 협업이 늘어나고 있습니다. 입점사들의 반응이 어떤가요?미리, 민희: 보통 선발매를 많이 진행합니다. 판매와 동시에 유저들이 올리는 후기를 통해 상품에 대한 반응을 즉시 볼 수 있고, 자연스럽게 바이럴을 일으킬 수 있다는 점이 입점사들에게는 매력적인 것 같습니다. 특히 디자이너 브랜드가 많은 패션 카테고리의 경우 소량 생산하는 경우가 많은데요. 유저의 반응을 바탕으로 추가 생산하거나 제품을 보완합니다. 최근 숄더체크4라는 브랜드는 기획 단계에서부터 스타일피드를 보고 유저들이 좋아할 만한 제품을 생산해 인기를 얻고 있는 중입니다. 뷰티 카테고리에서는 러비더비의 컬러 트리트먼트가 성공적인 사례입니다. 업체와 제품 디자인에서 가격, 색상까지 협의를 통해 1020대가 좋아할 만한 제품을 생산합니다. 러비더비의 경우 한 달만에 초도 물량이 품절되기도 했습니다.희정: 최근 소비력이 커지고 있는 10–20대 타겟으로 대기업에서도 관심이 큽니다. LG생활건강과 함께 플라잉 애플을 공동기획해 선 발매한 사례와 퍼퓸 향수라인 “찬란”을 선발매한 사례가 대표적입니다. 최근 빅브랜드에서 1020 타겟의 제품라인에 관심이 많아지면서 스타일쉐어의 트랜드를 참고해 상품기획을 제안합니다. 특정 연령과 성별을 확보한 스타일쉐어는 아직도 잠재력이 크다고 생각합니다.스타일쉐어의 입점 기준은 무엇입니까? 입점 후 어떻게 관리하나요?희정: 입점 기준은 명확합니다. 오직 유저들이 좋아하는 것, 좋아할 만한 것입니다. 스타일쉐어는 빅 브랜드를 입점시키기 보다, 스타일피드에 뜨는 브랜드 또는 상품을 참고해서 입점을 제안하고 있습니다. 몇몇 업체의 경우에는 스타일쉐어에 많은 컨텐츠가 올라와야 하는 젊은 브랜드임에도 불구하고 컨텐츠가 많지 않은 경우도 있습니다. 이 경우 스타일쉐어가 좋은 플랫폼이 될 수 있습니다.입점사 관리도 유저 데이터에 기반합니다. 스타일피드에서의 반응을 통해 제품의 인기가 떨어지는 것을 빠르게 감지할 수 있습니다. 제품의 라이프사이클에 따라 수명이 다하면 새로운 제품을 개발해야 합니다. 디자이너 브랜드는 많은 경우 저희와 단독 상품을 기획합니다. 스타일쉐어에서 인기있는 키워드 “벨크로”, “플리스” 등 그때그때 유행하는 키워드를 공략해 업체별로 단독상품을 만들 때 반영합니다. 이렇게 기획한 상품은 인기가 좋을 수밖에 없습니다.스토어를 만들면서 가장 기억에 남는 순간은 언제인가요?미리, 민희: 무엇보다 기획했던 상품이 인기가 좋을 때 인 것 같습니다. 또 타 커머스에서 판매와 성장이 어려운 중소 브랜드가 스타일쉐어에서 성장하는 모습을 볼 때 보람을 느낍니다. 업체에서도 고맙다는 말씀을 많이 합니다. 스타일쉐어의 열혈 유저들도 빠트릴 수 없습니다. “스쉐 덕분에 정말 잘 샀어요”, “스쉐 사랑해요” 등 피드백을 줄 때 고맙고 보람을 느낍니다.희정 : 작년 봄부터 여름까지 입점사들을 설득하러 다닐 때가 얼마 지나지 않은 것 같은데, 이제는 MD들이 땡볕에 나가 고생하는일이 적어졌습니다. 지난 1년간의 고생이 조금씩 결실을 맺어가는 것을 보면서 보람을 느낍니다.앞으로 스타일쉐어를 어떤 커머스로 만들고 싶나요?희정 : 처음부터 지금까지 스타일쉐어는 업체들과 동반 성장하고 있습니다. 특히 중소브랜드가 국내에서 주목받기는 쉽지 않은데 이런 파트너들과 좋은 기회를 만들고 있습니다. 앞으로도 신진 디자이너 브랜드가 적극적으로 참여하는 채널이 되고 싶습니다. 한편 아직까지 빅 브랜드, 미입점된 브랜드가 많습니다. 무수한 브랜드와 제품들 사이에서 주목받기 어려워지는 빅 브랜드들의 고민도 풀 수 있는 플랫폼. 유저들과 소통하며 함께 성장하는 스토어가 되었으면 합니다. 스타일쉐어 유저들이 더 나은 쇼핑 경험을 할 수 있도록 앞으로도 노력할 것입니다.#스타일쉐어 #팀원소개 #인터뷰 #기업문화 #조직문화 #팀원자랑

기업문화 엿볼 때, 더팀스

로그인

/