스토리 홈

인터뷰

피드

뉴스

조회수 942

리스팅 최적화(Listing Optimization)

안녕하세요 대한민국 셀러들의 성공적인 아마존 진출을 도와주는 컨설팅 회사이자 대행사인 컨택틱의 이이삭 대표입니다.오늘 다룰 주제는 ‘리스팅 최적화’입니다. 우리가 알고 있듯이, ‘리스팅’이란 단어는 “목록 또는 카테고리에 넣다” 정도로 해석됩니다. 그렇다면 리스팅을 ‘최적화’한다는 것은 무슨 의미일까요? 간단히 말해서 ‘상품을 잘 표현하는 것’입니다. 그러면 어떻게 해야 잘하는 것일까요? 그건 ‘고객들이 상품을 구매하고 싶도록만드는 것’입니다.오프라인 시장에서는 가판대에 물건을 진열하고, POP(Point of Purchase)를 통해서 고객들의 시선을 사로잡기 위한 여러 전략을 취할 수 있습니다. 가장 잘 팔리는 상품은 물건이 가장 잘 보이는 위치에 있는 것처럼 말이죠. 그렇게 해서 어떤 물품이 눈에 띈 순간, 소비자들이 구매까지 이루어지도록 오프라인 시장에서는 다음과 같은 강력한 수단을 사용합니다: “테스터,” “샘플,” 또는 요식업의 경우 “시식”이라고 하겠지요. 이 글을 쓰는 저나 읽으시는 독자분이나, 소비자 입장에서 물품을 구입할 때, 까다롭게 여러 조건을 따질 수밖에 없습니다. 그런 상황에서 실제로 상품을 만지고, 써보고, 먹어보는 것만큼 확실한 게 없죠. 그게 오프라인 시장이 가지고 있는 하나의 장점입니다.그러나, 온라인 시장은 이런 수단을 사용할 수가 없습니다. 소비자들이 상품을 직접 만지거나, 써보거나, 맛볼 수 없기, 상품을 등록할 때, 어필할 수 있는 요소가 굉장히 제한적입니다. 이런 현실을 받아들이고, 여러분과 저 같은 셀러가 아마존에 상품 등록 시, 리스팅 최적화를 위해서 할 수 있는 최선이 무엇일까? 고민해봤습니다. 그리고 다음의 5가지가 ‘리스팅 최적화’라는 주제 직접적인 영향을 끼치는 요소라고 정의를 내렸습니다.제목이나 특장점, 상세 설명, 상품 이미지 등, 글로벌셀러 분들이라면 당연히 중요하다고 생각하실 것입니다. 하지만 아마존이라는 세분화된 시장에서 중요한 전략이란 ‘What’이 아니라 ‘How’의 문제인 경우가 많습니다.위의 항목들을 영어로 카피 라이팅을 하기 때문에, 가장 중요한 것은 원어민 수준의 작문 실력입니다. 여러분이 실제로 원어민처럼 영어를 구사하는 것과는 별개로, 아마존 US를 이용하는 구매자들이 ‘자연스럽다’고 느끼는 표현들로 상품 설명을 해야 합니다. 당연하다고 생각하실 수 있겠지만, ‘외국 현지에서 통용되는’ 표현 활용이 중요한 이유는 ‘외국(주로 중국) 셀러’라고 오해받지 않기 위함입니다. 만약 ‘High quality’라고 적었는데, 그 상품을 고품격으로 표현하지 못한다면, 소비자들은 바로 뒤로 가기 버튼을 누르고 스크롤을 내리며, 다른 물건을 탐색하러 이미 떠나가 있을 것입니다.이미지 최적화의 경우도 마찬가지입니다. 여러분이 아마존에 등록한 대표 이미지에 따라서 클릭을 할지, 상세 이미지에 따라서 구매를 할지 결정됩니다. 화장품, 옷, 생활용품 등 품목과 크기, 색상에 따라 최적화된 이미지 크기가 있습니다. 그뿐만 아니라 최근엔 모바일 구매가 급속도로 증가하고 있기 때문에, 반드시 모바일에 최적화된 이미지 등록을 하셔야 합니다. 처음에 상품 등록을 할 때는 PC나 노트북을 통해 등록하다 보니 이런 점을 간과할 수 있기 때문입니다. 아마존 CEO 제프 베조스는 이런 말을 했습니다. “소비자들은 매번 창의적으로 불만족스러워한다”라고 말이죠.이런 관점에서 리스팅 최적화는 일종의 서바이벌 게임과 같습니다. 최저 기준을 충족하여 한 단계씩 소비자의 기준을 만족하면서, 마지막 목표인 구매까지 도달하는 것이죠. 한 가지 팁을 드리자면, 한국에 비해서 미국의 소비자들이 활자로 된 설명을 많이 읽고, 참고하면서 구매 결정을 하는 편입니다. 최근 경향이 이미지 중심으로 정보를 소비하고, SNS의 바이럴, 인플루언서들의 홍보로 인해 매출이 증가하는 것도 사실이지만, 이건 나중 단계입니다.한정된 예산을 갖고 아마존에 진출하시는 분들이라면, 먼저 기초에 해당하는 리스팅 최적화 작업을 충실히 하시는 것을 추천드립니다. 그리고, 다시 한번 강조하지만, 길게 쓸 수 있는 항목은 최대한 길게 써주셔야 합니다. 오프라인에서는 직원이 설명할 수 있지만, 온라인은 그렇지 않습니다. 최대한 소비자가 이끌릴만한, 궁금할만한 특장점과 설명들을 최대한 강조해주셔야 합니다.이번 주에는 리스팅 최적화에 대해 알아봤습니다. 리스팅 최적화에 정답은 없습니다. 하지만, 많은 고객사의 업무를 대행해본 경험과 데이터가 축적될수록 컨택틱만의 정답을 찾을 수 있었습니다. 특히, 리스팅은 다음 주 주제인 키워드 인덱싱과도 유기적 연관성이 상당히 높으므로 다음 글도 꼭 읽어주시길 바라며, 이번 글을 마무리하겠습니다.컨택틱의 모든 교육은 파트너인 글로벌셀러창업연구소와 접수하고 진행합니다. 교육 신청은 아래 링크나 글로벌셀러창업연구소의 홈페이지를 통해 접수 가능합니다.오프라인 아마존 입문 과정오프라인 아마존 기초/심화 과정온라인 아마존 입문 과정그럼 오늘도 즐거운 글로벌 셀링 되세요!감사합니다.컨택틱  서울특별시 강남구 강남대로 62길 11, 8층 (역삼동, 유타워) 대표 전화: 02-538-3939     이메일: [email protected]     홈페이지: https://www.kontactic.com   네이버블로그: https://blog.naver.com/kontactic    카카오브런치: https://brunch.co.kr/@allaboutamazon
조회수 1157

와이즈트래커 홈페이지 리뉴얼

와이즈트래커 홈페이지 리뉴얼 소식! 와이즈트래커 홈페이지가 새롭게 개편되었습니다. 그동한 내부에서는 어떻게 홈페이지에서 와이즈트래커 서비스를 쉽고 정확하게 전달할 수 있을지 고민이 많았는데요. 깊은 고민의 결과, 업데이트된 홈페이지에서는 와이즈트래커의 기능과 장점을 보다 효과적으로 파악할 수 있습니다.1. 메인페이지를 슬라이드로 구성해 와이즈트래커의 기능과 각 기능별 상세페이지로의 이동이 용이해졌습니다. 2. Feature 페이지를 Mobile Attribution (모바일 광고 성과 분석)과 Behavioral Analytics (사용자 행동 분석)으로 나누어 각 항목별 세부 기능 내용을 추가했습니다.   3. 사용자들이 서비스에 대한 궁금증을 빠르게 해결할 수 있도록 Pricing Guide 와 Support 페이지에 FAQ 항목을 추가했습니다.  평소 모바일 앱 분석 툴이 궁금하셨던 분들은 와이즈트래커 홈페이지를 통해 필요한 정보를 확인해보세요! 문의사항이나 개편된 홈페이지에 대한 피드백이 있다면 언제든 [email protected] 로 말씀 부탁드립니다. 와이즈트래커는 앞으로도 더 좋은 서비스로 발전할 수 있도록 노력하겠습니다.* WISETRACKER는 모바일 광고 성과 측정부터 In-app 이용자/컨텐츠 분석, 푸시메시지 최적화까지 지원하는 모바일 통합 분석/타겟팅 솔루션입니다. 와이즈트래커 솔루션의 무료체험을 원하실 경우 여기를 클릭해주세요.* WISETRACKER가 제공하는 무료 데이터 분석 컨설팅를 원하신다면 여기를 클릭해주세요.#와이즈트래커 #디자인 #기획 #개발 #홈페이지 #리뉴얼 
조회수 1671

SQS + Lambda

Overview안녕하세요. 저는 브랜디 R&D 본부 개발1팀의 기둥을 담당하는 이상근입니다. 오늘은 SQS(Simple Queue Service)와 Lambda를 간단한 예제와 함께 정리해보려고 합니다. 각 서비스에 대한 설명은 이미 매뉴얼로 쉽게 정리되어 있으므로, 이번 글에서는 서비스 간 구성을 집중적으로 살펴보겠습니다.1)SQS와 Lambda에 대하여SQS(Simple Queue Service)는 마이크로 서비스와 분산 시스템, 그리고 서버리스 애플리케이션을 쉽게 분리하고 확장할 수 있는 ‘완전관리형 메시지 대기열 서비스’입니다. 그리고 Lambda는 ‘이벤트 처리 방식의 서버리스 컴퓨팅 서비스’입니다. 아래 그림은 SQS와 Lambda Function을 이용해 메시지를 등록-조회-처리하는데 필요한 구성요소를 정리한 것입니다. SQS, Lambda ArchitectureProducer - 처리할 작업 메시지를 SQS에 등록Trigger - 큐(Queue) 대기열에 있는 메시지들을 조회하기 위해 CloueWatch의 스케줄 이벤트를 이용하여 매 분마다 Lambda Consumer 실행Consumer - Lambda Consumer는 큐 대기열에 있는 메시지 목록을 조회하여 각 메시지를 Lambda Worker에서 처리할 수 있도록 실행Worker - Lambda Worker는 메시지를 받아 작업을 처리하고 해당 메시지를 삭제큐 생성하기이번에는 큐 생성에 대해 살펴보겠습니다. ‘Create New Queue’를 클릭했을 때 지역(Region)에 따라 각각 다른 화면이 노출됩니다. Create New Queue Button타입 선택 화면항목 입력 화면두 번째 이미지와 같이 SQS에서는 Standard, FIFO 두 가지 타입을 제공하고 있습니다. 표준 대기열은 순서에 맞지 않게 메시지가 전송될 수 있습니다. 만약 순서를 반드시 유지해야 한다면 FIFO 대기열을 사용하거나, 순서 정보를 추가하고 사용해야 합니다. 하지만 FIFO 대기열의 경우 현재 미국 동부(버지니아 북부), 미국 동부(오하이오), 미국 서부(오레곤) 및 EU(아일랜드) 지역(Region)이서만 제공되고 있기 때문에 다른 곳에서는 사용할 수 없습니다. 2) 3) 1.Create New Queue ‘Create New Queue’에는 여러 항목이 있습니다. 우선 아래를 참조하여 각 항목에 적절한 내용을 기재합니다. Default Visibility Timeout : 대기열에서 조회한 메시지가 중복 조회되지 않기 위한 시간Message Retention Period : 메시지 보관 기간Maximum Message Size : 메시지 최대 사이즈Delivery Delay : 신규 메시지 전달 지연 시간Receive Message Wait Time : 조회된 메시지가 없을 경우, 사용 가능한 메시지를 기다리는 long polling 시간 설정Dead Letter Queue Settings : 정상적으로 처리되지 못한 메시지를 보관하기 위하여 메시지 수신 최대 수를 지정, 지정한 수신을 초과할 경우 지정한 큐에 메시지 저장2.큐 등록 확인 기본 값으로 설정한 큐 등록을 확인합니다. Queue List3.SQS 메시지 등록 import boto3, json sqs_client = boto3.client(     service_name='sqs',     region_name='xxxxxx' ) SQS 메시지 등록  response = sqs_client.send_message(     QueueUrl='https://sqs.xxxxxx.amazonaws.com/xxxxxx/sqs-test-1',     MessageBody='메시지 내용' )   print(json.dumps(response))   {"MD5OfMessageBody": "xxxxxxx", "MessageId": "xxxxx-xxxx-xxxxxx", "ResponseMetadata": {"RequestId": "xxxxxxx", "HTTPStatusCode": 200, "HTTPHeaders": {"server": "Server", "date": "Fri, 09 Feb 2018 08:01:13 GMT", "content-type": "text/xml", "content-length": "378", "connection": "keep-alive", "x-amzn-requestid": "xxxxxxx"}, "RetryAttempts": 0}} 4.AWS Console 메시지 등록 확인 View MessageDetail Message5.조회와 실행 1)SQS 메시지를 조회합니다.2)LambdaWorker 함수를 실행하고 > InvocationType으로 동기, 비동기 등의 실행 유형을 설정합니다. import boto3, json   def handle(event, context):     queue_url = 'https://sqs.xxxxxx.amazonaws.com/xxxxxx/sqs-test-1' sqs_client = boto3.client(         service_name='sqs',         region_name='xxxxxx'     )      lambda_client = boto3.client(         service_name='lambda',         region_name='ap-northeast-1'     )      # SQS 메시지 조회     response = sqs_client.receive_message(         QueueUrl=queue_url,         MaxNumberOfMessages=10,         AttributeNames=[             'All'         ]     )      print(json.dumps(response))      # {"Messages": [{"MessageId": "xxxxx-xxxx-xxxxxx", "ReceiptHandle": "xxxxx-xxxx-xxxxxx", "MD5OfBody": "xxxxxxx", "Body": "\uba54\uc2dc\uc9c0 \ub0b4\uc6a9", "Attributes": {"SenderId": "xxxxxxx", "ApproximateFirstReceiveTimestamp": "1518163931724", "ApproximateReceiveCount": "1", "SentTimestamp": "1518163466941"}}], "ResponseMetadata": {"RequestId": "", "HTTPStatusCode": 200, "HTTPHeaders": {"server": "Server", "date": "Fri, 09 Feb 2018 08:12:11 GMT", "content-type": "text/xml", "content-length": "1195", "connection": "keep-alive", "x-amzn-requestid": "xxxxxxx"}, "RetryAttempts": 0}}      for message in response['Messages']:         payload = {'message': message, 'queueUrl': queue_url}          # Lambda Worker 함수 실행         lambda_client.invoke(             FunctionName='lambda_worker',             InvocationType='Event',             Payload=json.dumps(payload)         ) 6.Lambda Consumer 함수 등록 Execution role : SQS ReceiveMessage, Lambda InvokeFunction, CloudWatchLogs7.확인-실행-삭제 1) 이벤트로 넘어온 메시지 내용을 확인하고2) 메시지 프로세스를 실행한 후3) SQS 메시지를 삭제합니다. import boto3, json   def handle(event, context):     sqs_client = boto3.client(         service_name='sqs',         region_name='xxxxxx'     )      message_body = json.loads(event['message']['Body'])      queue_url = event['queueUrl']     receipt_handle = event['message']['ReceiptHandle']      ###############     # 큐 메시지 처리     ############### # SQS 메시지 삭제     sqs_client.delete_message(         QueueUrl=queue_url,         ReceiptHandle=receipt_handle     ) 8.Lambda Worker 함수 등록 Execution role : SQS DeleteMessage, CloudWatchLogs9.CloudWatch의 Event Rule 등록 Event RulesCreate Rule10.1분에 한 번씩 지정한 Lambda 함수를 실행하여 SQS 메시지 확인 참고)이것만은 꼭 알아두세요! 여러 대의 서버에 메시지 사본을 저장하기 때문에 가끔씩 메시지 사본을 받거나 삭제하는 중엔 저장 서버 중 하나를 사용할 수 없을 수도 있다고 합니다. 이 경우, 해당 문제가 발생하면 사용할 수 없는 서버의 메시지가 삭제되지 않아, 메시지를 다시 가져와야 하는 문제가 생길 수 있습니다. 그러므로 애플리케이션에서 동일 메시지를 두 번 이상 처리하는 것도 대비해야 합니다.Conclusion지금까지 AWS 환경에서 SQS, Lambda, CloudWatch EventRule을 이용한 메시지 대기열 등록과 처리에 대한 기본 예제들을 실행해봤습니다. AWS의 다른 서비스들과 같이 아주 간단한 방법으로 메시지 대기열을 이용할 수 있었습니다. 오늘 살펴본 방법들을 활용하면 동영상 트랜스 코딩 등의 작업을 비롯해 분산 애플리케이션 간의 데이터 처리에도 유용하게 사용할 수 있을 겁니다. ps.아마존 형님들의 IT 인프라를 이용하여 편하게 개발에만 집중합시다. 참고 1) 각 서비스 매뉴얼은 아래 페이지 링크 참조하면 된다.SQSLambdaboto3 2)2018년 2월 기준이다. 3)표준 대기열과 FIFO 대기열의 특징은 아래와 같으며 자세한 내용은 매뉴얼에 정리되어 있다. 표준 대기열 : 무제한 처리량, 최선 정렬FIFO 대기열 : 높은 처리량, 선입선출 전송 글이상근 팀장 | R&D 개발1팀[email protected]브랜디, 오직 예쁜 옷만#브랜디 #개발문화 #개발팀 #업무환경 #인사이트 #경험공유
조회수 34945

21개 유니콘 스타트업의 초기 유저를 모은 방법

지금은 유명한 세계적인 스타트업들도 초라한 시절이 있었습니다.유니콘 클럽에 진입한 스타트업들은 초기 유저들을 어떻게 모았을까요?Dropbox(드롭박스)중심 인물 : Drew Houston, Arash Ferdowsi2008년, 드롭박스의 창업자 중 한 명인 드류 휴스턴은 미국의 유명 커뮤니티인 Digg에 드롭박스 사용법에 관한 4분짜리 영상을 올렸습니다. 그런데, 드류는 그 영상을 그냥 만드는 게 아닌, Digg를 쓰는 사람들만 알고 있는 농담들을 섞은 일종의 맞춤 영상을 만들었습니다. 그 결과, 그가 만든 비디오는 큰 인기를 끌어 Digg 최상단에 올라갔고 약 70,000여 명의 신규 유저를 끌어오게 됐습니다.출처 : https://www.reddit.com/r/Entrepreneur/comments/2clqa3/how_startups_such_as_dropbox_airbnb_groupon_andInstargram (인스타그램)중심 인물 : Kevin Systrom, Mike Krieger인스타그램의 전신은 사진 공유 서비스인 Burbn이었습니다. 자연히, 초기 인스타그램을 사용하던 유저들은 Burbn에서 오게 된 것입니다. 인스타그램은 앱을 출시하기 전부터 큰 관심을 끌었고, 사람들은 그걸 사용하기를 학수고대 했습니다. 하지만 인스타그램이 정말 입소문을 타게 된건 ‘소셜 미디어에서 공유하기’ 기능 때문이었습니다.출처 : https://www.quora.com/How-did-Instagram-get-its-first-25-000-signupsSpotify (스포티파이)중심 인물 : Haim Schoppik, Chris Maguire초기 스포티파이는 오직 소수의 사람들만 서비스를 쓸 수 있게 했기 때문에 그들 만의 고급스러운 이미지를 만들 수 있었습니다. 그리고 그렇게 소수의 사람들만 쓸 수 있다는 이미지는 대중들로 하여금 그 서비스를 쓰는 것 자체가 멋져 보인다는 느낌을 주게 됐습니다.출처 : https://www.quora.com/How-did-Spotify-gain-initial-traction/answer/Ong-Si-QuanAirbnb (에어비앤비)중심 인물 : Brian Chesky, Joe Gebbia, Nathan Blecharczyk에어비앤비는 안내 광고 웹사이트인 크레이그리스트에 광고를 올린 집주인들에게 이메일을 넣어 자신들의 서비스를 홍보했습니다. 이 방법은 효과가 있었고 에이비앤비는 많은 초기 고객들을 확보하게 되었습니다. 얼마 지나지 않아, 에어비앤비는 집주인들에게 그들의 집 사진을 찍어서 올릴 수 있는 전문적인 사진 서비스를 제공했고, 이는 에어비앤비로 하여금 크레이그리스트에 비해 훨씬 더 나은 이용자 경험을 전달할 수 있게 하였습니다.출처 : https://www.forbes.com/sites/hbsworkingknowledge/2016/07/13/how-uber-airbnb-and-etsy-attracted-their-first-1000-customersTinder (틴더)중심 인물 : Justin Mateen, Sean Rad틴더는 그룹 프레젠테이션을 명목으로 대학교 여대생 클럽에 접근했습니다. 그리고 여대생들은 틴더를 쓰게 되자, 자연히 자신들이 아는 남학생 클럽에게 이를 소개하게 되었습니다. 이미 이 앱에는 남학생들 근처에 사는 여대생들이 많이 가입되어 있었기 때문에 남학생들을 이용자로 끌어 오기도 훨씬 더 쉬워졌습니다.출처 : https://parantap.com/tinders-first-year-growth-strategyPayPal (페이팔)중심 인물 : Elon Musk, Peter Thiel페이팔은 초기에 신규 회원에게 가입시 10$, 그 회원에게 페이팔을 추천한 회원에게도 10$를 지급했습니다. 이로 인해 페이팔의 성장은 폭발적이었습니다. 페이팔은 신규 고객마다 20달러의 돈을 쓴 것으로 알려졌습니다.출처 : https://blakemasters.com/post/20582845717/peter-thiels-cs183-startup-class-2-notes-essayUber (우버)중심 인물 : Travis Kalanick, Garrett Camp우버는 지금 유명해진 Uber Pool 이나 Uber X 같이, 자기 차량을 가진 사람들을 중심으로 하는 서비스를 시작하기 보다는 전문적인 운전수가 서비스하는 Uber Black으로 시작했습니다. 이렇게 시작함으로써, 우버는 승객들이 매번 서비스를 이용할 때마다 아주 좋은 경험을 줄 수 있었고, 그 승객들은 자연스레 다른 사람들에게 우버가 얼마나 만족스러웠는지를 알려주게 되었습니다.출처 : https://hbswk.hbs.edu/item/how-uber-airbnb-and-etsy-attracted-their-first-1-000-customersFacebook (페이스북)중심 인물 : Mark Zuckerberg, Dustin Moskovitz페이스북은 원래 하버드 대학교의 동문 관리 프로그램이었습니다. 그러나, 그들은 학교 간의 친구를 연결해주는 기능이 서비스를 성장시키는데 중요하다는 것을 빠르게 알아챘습니다. 이 기능을 업데이트 한 것은 초기 페이스북의 신규 유저 증가에 가장 결정적이었습니다.출처 : https://www.quora.com/How-did-Facebook-gain-its-initial-tractionYouTube (유투브)중심 인물 : Chad Hurley, Steve Chen, Jawed Karim유튜브는 사람들이 가입해서 비디오를 업로드 하도록 만들기 위해 다양한 콘테스트를 개최했습니다. ‘구독하기’ 기능과 같이 당시 유튜브만이 가진 독창적인 기능들 역시 사람들을 끌어오는데 큰 역할을 했습니다.출처 : https://www.quora.com/How-did-YouTube-gain-its-initial-traction/answer/Amir-JaffariYelp (옐프)중심 인물 : Jeremy Stoppelman, Russel Simmons초기에, Yelp는 그들 사이트의 핵심 리뷰어들에게 보상을 제공했습니다. 이런 보상은 그들로 하여금 더 많은 컨텐츠를 쓰게 만들었고 그로 인해 사이트가 사람들에게 더 알려지기 시작했습니다. 또한, 이 때 Yelp는 리뷰어들을 대상으로 돈을 지불하는 것과 같은 실험도 했습니다.출처 : https://www.quora.com/How-did-Yelp-get-initial-traction-and-overcome-the-critical-mass-problemProduct Hunt (프로덕트 헌트)중심 인물 : Ryan Hoover, Nathan BashawProduct Hunt가 지금의 웹사이트가 되기 전에는, 그건 그저 사람들이 링크를 공유하던 Linkydink라는 그룹이었습니다. 처음에는 여기저기에 있는 포스트들을 가져와서 사람들에게 이메일로 보내주는 일을 했습니다. Product Hunt의 창립자인 Ryan Hoover는 초창기 그의 스타트업 친구들을 이 그룹에 초대했는데, 그룹을 운영하면서 많은 긍정적인 피드백을 받게 되자 Ryan Hoover와 그의 친구들은 이 그룹을 지금의 웹사이트인 Product Hunt로 만들었습니다.출처 : http://ryanhoover.me/post/69599262875/product-hunt-began-as-an-email-listQuora (쿼라)중심 인물 : Adam D' Angelo, Charlie Cheever, Rebekah CoxQuora의 창립자와 초창기 직원들은 그들의 친구들을 자신들의 사이트에 초대했습니다. 또한 초기의 Quora팀은 스스로 양질의 콘텐츠를 작성하여 올리곤 했습니다. 이로 인해 더 많은 사람들이 그들의 사이트에 방문하게 되었습니다.출처 : https://www.quora.com/How-did-Quora-get-initial-tractionSidekiq (사이드킥)중심 인물 : Mike PerhamMike Perham은 Ruby와 오픈 소스 소프트웨어에 대한 블로그를 수 십년 동안 운영해 왔습니다. 그래서 그가 처음 Sidekiq을 출시했을 때 이미 관심을 가질 만한 사람들이 있었던 것입니다. Mike는 또한 Rubyconf나 Railsconf같은 곳에 참석하여 Sidekiq을 홍보했고 이로 인해 그의 주요 목표인 Ruby 개발자들에게 Sidekiq의 존재를 알리게 됐습니다.출처 : https://www.indiehackers.com/businesses/sidekiqReddit (레딧)중심 인물 : Steve Huffman, Alexis Ohanian초기 레딧은 사이트 내에 포스트를 지속적으로 올리기 위해 가짜 프로필을 만들었습니다. 이런 방식으로 레딧은 이미 많은 유저가 레딧에 있는 것처럼 보이게 만들었고, 결국 실제 유저들도 끌어오게 됐습니다. 이 방법은 레딧의 초기 성장을 견인했습니다. 또한 레딧의 창업자들은 홍보를 위해 500달러의 비용을 들여 레딧 스티커를 만들었습니다. 이런 스티커들은 보스턴과 매사추세스의 공공 장소에 부착되었습니다.출처 : http://kirjonen.me/how-quora-and-reddit-solved-the-chicken-and-egg-problemRobinhood (로빈후드)중심 인물 : Baiju Bhatt, Vladimir Tenev2011년 월가 점령 시위를 보고, 로빈후드의 창업자들은 유저들에게 권한을 부여할 수 있는 효율적인 금융 시스템의 필요성을 느꼈습니다. 그리고 그들은 Robinhood라는 앱을 만들었습니다. 자신들이 만든 최초의 모바일 중개 앱을 통해 Robinhood는 매끄러운 사용자 경험과 인터페이스를 제공해주었고, 쉽게 함께 투자할 새로운 사람들을 끌어올 수 있었습니다. 사람들이 이 앱을 레딧이나 Hacker News와 같은 사이트에서 공유하기 까지는 오랜 시간이 걸리지 않았고, 이 앱을 쓰는 사람들은 급증하게 되었습니다.출처 : https://www.huffingtonpost.com/david-ongchoco/startup-insider-the-story_b_7976446.htmlDoorDash (도어대시)중심 인물 : Stanley Tang, Tony Xu, Andy Fang창립자 중 한 명인 Stanley Tang은, 예전부터 자영업자들을 위한 기술을 만드는 것에 관심을 가져왔습니다. 스탠포드 대학교 3학년 시절, 그는 팰로 앨토(캘리포니아 주의 도시)에 있는 마카롱 가게의 주인과 채팅을 하던 중, 그 가게가 때로는 주문이 너무 많이 몰려서 일부의 주문은 받지 못한다는 것을 알게 됐습니다. 그때 Stanley는 해결해야 할 흥미로운 문제를 발견하게 되었습니다. 대부분의 자영업자들은 배달 인프라와 관련된 부분에서 문제를 겪고 있었고, 다른 자영업자들과 인터뷰를 해 봐도 그들 역시 같은 문제를 갖고 있다는 것을 확인하게 되었습니다.Stanley와 그의 공동 창업자들은 자신들의 전화번호가 올라가 있는 랜딩 페이지 하나를 만들었고, 얼마 지나지 않아 타이 요리를 가져다 줄 것을 주문 받게 됩니다. 그들은 직접 타이 레스토랑을 찾아가서 요리를 배달해줬고, 다음날에는 더 많은 주문이 들어오게 됐습니다. 스스로 주문들을 처리하면서, 그들은 자신들의 개인 이메일을 통해 실시간으로 피드백을 받을 수 있게 만들었고, 고객들은 이에 만족해 했습니다. 또한 그 동안 그들의 팀은 대학가에 DoorDash를 홍보하는 전단지를 돌리기 시작했습니다. 주문이 너무 많아져서 더 이상 그들이 감당하기 어려울 때가 되자, 그들은 자신들의 서비스를 더 크게 만들 수 있는 방법들을 생각하기 시작했습니다.출처 : http://startupclass.samaltman.com/courses/lec08Scribd (스크립드)중심 인물 : Trip Adler, Jared FriedmanScribd가 E북과 오디오 북 구독 서비스가 되기 이전에, 이 서비스는 그저 문서를 공유하는 웹사이트였습니다. 문서를 쉽게 공유해주는 사이트로의 역할만 하던 중에도, Scribd의 팀 멤버들은 초기 레딧이나 Quora가 그랬던 것처럼 사이트 내에 콘텐츠와 유저들을 모으고 있었습니다. 또한 Scribd는 직접 많은 오프라인 커뮤니티와 저자들에게도 줄을 대기 시작했습니다. 초기 사이트에 이미 엄청난 양의 문서들이 업로드 되어 있었던 것 역시 처음 이용자들을 끌어오는데 큰 도움이 되었습니다.출처 : https://www.quora.com/How-did-scribd-drive-so-much-user-generated-content-on-their-site/answer/Jared-FriedmanMedium중심 인물 : Evan WilliamsMedium은 초창기 우월한 사용자 경험을 제공함으로써 유저들을 모았습니다. 또한 이들의 웹사이트는 화려하면서 사용하기 쉬운 웹 기반 에디터를 제공했습니다. 새로운 사용자들을 위한 온보딩 프로세스 역시 매우 간편했습니다. 그저 트위터 계정으로 가입만 하면 트위터를 기반으로 팔로워를 가지거나 팔로잉을 할 수도 있었습니다. 그 결과, 신규 유저들은 사이트에 가입한 지 얼마 안 되었어도 혼자만 있는 게 아닌 것 같단 느낌을 받게 되었습니다.또한 Medium은 유명한 편집자들을 고용하여 사이트 초창기에 양질의 콘텐츠를 제공할 수 있었습니다. 그 편집자들의 팔로워들과 친구들 역시 Medium 사이트에 오게 되었습니다. 처음 유저들을 신중하게 골라서 뽑고, 나중에 그들의 팔로워들까지 흡수하는 방식은 링크드인에서도 사용된 방법이었습니다.출처 : http://www.simonowens.net/how-medium-is-using-the-mullet-strategy-to-attract-new-usersGrubhub (그럽허브)중심 인물 : Matt Maloney, Michael EvansGrubhub의 창립자들은 Apartments.com에서 개발자로 근무하면서 음식을 주문하는 게 골치 아픈 일이라는 걸 알게 됐습니다. 왜냐하면 식사 옵션이 한정적이고 음식점과 의사소통하고 거래할 수 있는 믿을 만한 수단이 없었기 때문입니다. 그래서 그들은 배고픈 사람들을 위해 레스토랑 메뉴가 담긴 웹사이트를 만들기로 했습니다. 창업자들은 시카고 주변에 있는 레스토랑으로부터 수백 개의 메뉴를 수집하였고 첫 고객으로부터 6개월간 자신들의 웹사이트 상단부에 그들의 음식점을 띄워주는 조건으로 140달러를 요구했습니다.유감스럽게도, 음식점 입장에선 그만한 돈을 온라인으로 지불하는 것이 정말 가치가 있는지 알지 못했습니다. 왜냐하면 이미 그들만의 자체 웹사이트가 있었기 때문입니다. 하지만, 창업자들은 Grubhub를 통해 구매를 할 경우 매번 10%의 커미션을 챙겨주기로 결정했습니다. 이 모델은 처음 Grubhub의 이용자들에게 매력적으로 다가왔습니다. 그들이 꽤 측정이 될 뿐만 아니라 수익도 좋은 모델을 가졌다는 사실을 깨닫게 되자, Grubhub 팀은 확장하기 위해 샌프란시스코로 이사하게 됩니다. 그들은 샌프란시스코 지역에 있는 음식점들을 가입시키는 업무를 맡을 매니저들도 고용하게 됩니다. 또한 저녁에 업무를 끝마치고 퇴근하는 예민한 직장인들을 잡기 위해, 사람들이 많이 다니는 환승 역 같은 곳에서 오프라인 광고를 하기도 했습니다.출처 : https://www.inc.com/magazine/201411/liz-welch/how-i-did-it-matt-maloney-of-grubhub-and-seamless.htmlLinkedIn (링크드인)중심 인물 : Reid Hoffman, Allen Blue, Konstantin Guericke, Eric Ly, Jean-Luc Vaillant공동 창업자 중 한 명인 레이드 호프만은 그가 가진 인맥을 잘 활용했습니다. 그는 이 서비스를 할 때 그가 아는 성공한 친구들을 등록시켰습니다. 그 결과, 링크드인은 초기부터 전문가들이 사용하는 소셜 네트워크로 브랜드를 구축할 수 있었습니다. 이러한 강력한 브랜드 아이덴티티는 초창기 사람들이 링크드인을 선택할 강한 동기 요인이 되었습니다. 또한 링크드인은 Outlook 연락처 업로더를 구현하여 좀 더 쉽게 자신들의 서비스가 입소문을 탈 수 있게 만들었습니다. 링크드인의 ‘초대 알림’ 기능 또한 새로운 사람들을 유인하는 데 있어 중요한 역할을 했습니다.출처 : https://www.quora.com/How-did-LinkedIn-product-get-its-initial-traction/answer/Keith-RaboisCodecademy (코드카데미)중심 인물 : Zach Sims, Ryan BubinskiCodecademy는 2011년 8월에 설립되었습니다. 하지만 2012년 초부터 이 사이트는 엄청난 신규 유저를 확보하게 됐습니다. 이는 Codecademy가 사람들이 새해마다 신년 계획을 세운다는 점을 잘 이용했기 때문입니다. 그들은 ‘2012년에는 코딩을 시작해보세요!’ 라는 식의 광고를 했고, 사람들은 이를 자신들의 친구들과 적극적으로 공유했습니다. 왜냐하면 신년 계획이라는 주제는 사람들이 정말 공유하고 싶어하는 주제였기 때문입니다. 그 결과, 초기 Codecademy의 유저들은 한 주에만 50,000개의 트윗을 올렸고 9주가 지나자 Codecademy의 이용자들은 40만명에 육박했습니다. 가능한 한 마찰이 적은 가입 절차와 사람들이 공유하고 싶어하는 서비스를 마케팅하는 전략은 Codecademy가 초기 유저들을 끌어 모으는데 있어 중요한 역할을 하였습니다.출처 : https://www.forbes.com/sites/jjcolao/2012/03/22/codecademy#더팀스 #THETEAMS #스타트업 #유니콘 #초기유저 #창업초기 #인사이트 #꿀팁
조회수 1928

Docker, NodeJS, Nginx! 너로 정했다!

편집자 주아래와 같이 용어를 표기하기로 저자와 협의함Docker, NodeJS, NginxOverview안녕하세요. 칼 같은 들여쓰기에 희열을 느끼는 브랜디 개발자 강원우입니다! 서버를 운영해본 개발자라면 Fatal 에러, 아웃오브메모리 에러, 또는 전날 흡수한 알코올로 인해 손을 떨다가 한 번쯤 서버를 요단강 너머로 보내봤을 겁니다. 만약 테스트 서버였다면 잠시 마음을 가다듬으면 되지만, 현재 상용 서비스 중인 서버라면 얘기는 달라집니다.님아, 그 강을 건너지 마오!이런 간담이 서늘해지는 경험은 저 하나로 족합니다. 그래서 고군분투했던 지난 날을 되돌아보면서 빠르고 안정적이며, 죽어도 죽지 않는 좀비 같은 서버 구축 방법을 쓰려고 합니다.준비물서비스를 운영할 때 가장 중요하게 여겨야 하는 건 역시 안정성입니다. 이번 글에서는 오래 전부터 개발 세계의 뜨거운 감자였던 Docker와, 단일 스레드와 이벤트 루프로 태생적으로 심플하고 민첩한 NodeJS, 마지막으로 고성능을 목표로 개발된 Nginx를 활용하겠습니다.1. DockerDocker는 컨테이너 기반의 오픈소스 가상화 플랫폼입니다. 대표적으로 LXC(Linux Container)가 있습니다. 화물 컨테이너처럼 어떠한 일련의 기능을 완전히 격리된 소프트웨어 환경에서 작동하게 만드는 기술을 말합니다.OS 가상화와 별반 다를 게 없는 것 같지만 소프트웨어적으로 작동한다는 차이가 있습니다. 다시 말해, 현재 OS의 자원을 그대로 사용하기 때문에 하이퍼 바이저가 가상환경을 위해 가상의 커널을 만드는 오버헤드가 거의 없다는 것이죠.이미지와 속도도 차이를 보입니다. 완벽하게 구성한 세팅을 그대로 이미지화할 수 있고, 해당 이미지는 Docker 위에서 완벽히 동일하게 동작하는 걸 보장합니다. 해당 이미지로 컨테이너를 제작할 땐 1~2초면 새로운 컨테이너가 생겨날 정도로 엄청나게 빠른 속도도 자랑합니다. 1)또한 Docker는 자주 사용되는 다양한 이미지를 퍼블릭 레포지토리에 공유해 사용할 수 있기도 합니다. 양파도 아닌데 특징이 계속 나오죠? 다음 글에서 Docker의 특징을 더 자세히 다루겠습니다.Docker는 리눅스만 지원했었지만, 요즘은 Docker for Windows와 Docker for Mac으로 거의 모든 OS에서 사용할 수 있습니다. 2) Docker 설치 링크는 윈도우와 맥으로 나뉘어져 있습니다. 리눅스는 아래를 참고하세요.curl -fsSL https://get.docker.com/ | sudo sh 2. NodeJSNodeJS는 구글이 구글 크롬에 사용하려고 제작한 V8 오픈소스 자바스크립트 엔진을 기반으로 제작된 자바스크립트 런타임입니다. NodeJS에는 몇 가지 특징이 있습니다.단일 스레드입니다.비동기 방식입니다.이벤트 루프를 사용합니다NPM이라는 끝내주는 동반자가 있습니다.비유하자면 예전엔 낡은 곡괭이로 큰 돌을 캐내려고 수십 명의 인부가 달라 붙었는데, 지금은 육중한 포크래인으로 거대한 돌을 쑥! 뽑아버리는 것과 비슷합니다. 굉장히 효율적이죠. NodeJS는 단일 스레드의 장점을 극대화하려고 이벤트 루프를 통해 모든 처리를 비동기로 수행합니다. 서버 사이드의 묵직한 CPU들이 빠르게 일을 처리하고 이벤트 루프에 등록된 일을 감지해 다음 작업을 빠르게 수행하는 방식입니다.마지막으로 NPM(Node Package Manager)은 NodeJS에서 사용할 수 있는 다양한 모듈을 관리해주는 프로그램입니다. 도커와 상당히 유사합니다. NodeJS에서는 무언가 기능을 만들기 전에 NPM을 먼저 뒤져보라는 말이 있을 정도로 풍부한 모듈 생태계가 구성되어 있습니다. 이는 로깅이나 날짜 계산 등 생각보다 까다로운 것들을 가져다 사용할 수 있게 도와주기 때문에 개발이 빨라집니다. NodeJS 설치링크는 여기를 클릭하세요. 이 글의 예제에서는 NodeJS의 현재시점 LTS인 codename Carbon버젼을 사용합니다!8.x 버젼이 Active LTS 상태입니다.LTS은 Long Term Support의 약자로 가장 오랜기간 지원하는 버전입니다.우선 서비스 구성을 위해 간단한 NodeJS 어플리케이션을 작성해보겠습니다.첫째, packge.json를 작성합시다.{   "name": "nodejs_tutorial_server",   "version": "0.0.0",  "private": true,   "scripts": {     "start": "node nodejs_tutorial_server.js"   },   "description": "NodeJS Tutorial Server",   "author": {     "name": "WonwooKang"   },   "dependencies": {     "express": "^4.16.3",     "uuid": "^3.2.1"   } } nodejs_tutorial_server.js 파일을 메인으로 실행합니다. HTTP Request를 처리하려면 express를 사용해야 하며, 서버를 구분하려면 uuid모듈이 필요합니다.둘째, package.json의 의존 파일들을 설치합시다.npm install npm install 전npm install 후셋째, 간단한 웹 어플리케이션을 작성합시다.var express = require('express'); var app = express(); const port = 3000;  var server = app.listen(port, function () {     console.log("Express server has started on port : "+port);  });  app.get('/', function (req, res) {     res.send('Hello?');  }); 넷째, package.json의 script start 구문을 실행하여 서버를 로드합시다.npm start 3000번 포트로 서버가 시작되었습니다!접속해볼까요?잘 접속됩니다.그런데 수정할 때마다 서버를 매번 다시 띄우면 귀찮을 겁니다. 이럴 땐 nodemon 모듈을 사용합시다. nodemon은 Nodejs의 파일이 수정되는 걸 감지해 자동으로 리로드해주는 편리한 도구입니다.nodemon설치npm install nodemon -g package.json script 변경"scripts": {     "start": "nodemon nodejs_tutorial_server.js"   }, nodemon 실행확인을 위해 약갼의 수정//nodejs_tutorial_server.js 수정 app.get('/', function(req, res) {     res.send('Hello Nodemon');  }); nodemon을 통해 어플리케이션이 실행된 모습파일수정 후 저장했을 때 자동 감지한 모습서버 잘 떴습니다!성공적으로 단 하나의 GET 요청을 처리할 수 있는 심플한 NodeJS 기반 웹 어플리케이션을 완성했습니다. 이제 웹 어플리케이션을 Docker Container위에서 구동해봅시다!3. Docker로 NodeJS Express 서버 구동하기이제 Docker Container위에서 NodeJS서버를 구동할 건데요. 그러려면 우선 Dockerfile을 작성해야 합니다. 물론 Docker의 이미지를 당겨 받고, 컨테이너를 생성하고, 또 컨테이너를 실행해서 Attach하고, 필요한 파일들을 밀어넣는 등 귀찮은 방법도 있습니다. 하지만 개발자에게 이것은 힘든 작업이므로 Dockerfile을 적극 활용합시다. (Dockerfile의 D는 대문자여야 합니다! 꼭이요)Node 도커 이미지에 어플리케이션 파일을 추가해 실행하는 Dockerfile 작성하기FROM node:carbon MAINTAINER Wonwoo Kang [email protected] #app 폴더 만들기 - NodeJS 어플리케이션 폴더 RUN mkdir -p /app #winston 등을 사용할떄엔 log 폴더도 생성 #어플리케이션 폴더를 Workdir로 지정 - 서버가동용 WORKDIR /app #서버 파일 복사 ADD [어플리케이션파일 위치] [컨테이너내부의 어플리케이션 파일위치] #저는 Dockerfile과 서버파일이 같은위치에 있어서 ./입니다 ADD ./ /app #패키지파일들 받기 RUN npm install #배포버젼으로 설정 - 이 설정으로 환경을 나눌 수 있습니다. ENV NODE_ENV=production #서버실행 CMD node nodejs_tutorial_server.js Dockerfile 내용은 node:carbon에서 :carbon이 NodeJS의 이미지 버전 Tag 입니다.Dockerfile을 통해 docker image 빌드하기docker build –tag 레포지토리명: 태그 Dockerfile 경로docker build --tag node_server:0.0.1 [Dockerfile이 위치하는 경로] 호오... 게이지가 마구마구 차오르는군요?build가 완료된 화면입니다. Dockerfile의 내용 순서가 각 Step별로 진행된 것을 알 수 있습니다.빌드 결과 생성된 이미지 확인하기docker images 빌드 명령어에서 입력했던 버전 태그까지 잘 입력된 것을 알 수 있습니다.NodeJS Carbon 이미지를 기반으로 한 node_server 이미지를 제작했습니다. 사이즈는 둘이 합쳐 1Gb가 넘을 것 같지만 실제로는 변경된 부분만 저장됩니다. 그러므로 node_server 이미지의 크기는 6~10Mb 정도입니다.생성된 이미지로 컨테이너 만들기컨테이너 생성 명령어는 아래와 같습니다.docker create --name [서버명] -p [외부 포트:컨테이너 내부포트] [이미지명:버전태그] 주의할 점이 있습니다. 포트번호 바인딩 중 왼쪽은 우리가 접속할 실제 포트이고, 오른쪽은 컨테이너 내부의 NodeJS서버 할당 포트가 된다는 것입니다. 공유기의 포트포워딩 설정과 같습니다.docker create --name NODE_SERVER_0 -p 3000:3000 node_server:0.0.1 알 수 없는 코드가 생성되었습니다. 응?컨테이너 확인하기생성한 컨테이너를 확인해볼까요?docker ps 어.. 없잖아?옵션을 추가합니다.docker ps -a 나타났다!docker ps 명령어는 현재 실행 중(STATUS:Up)인 컨테이너의 목록을 보여줍니다. -a 옵션은 실행하지 않는 모든 컨테이너를 보여줍니다. 위의 이미지에서 node_server:0.0.1이미지로부터 NODE_SERVER_0 이라는 이름으로 2분 전에 생성되었다는 걸 알 수 있습니다. 3)컨테이너 실행하기docker start NODE_SERVER_0 다시 확인하기docker ps 19초 전에 Up상태가 되었다는 걸 알 수 있다.외부 3000번 포트 -> 내부 3000번 포트로 연결되었습니다. 서버도 실행되었고요! 이제 접속해볼까요?내용도 안 바꾸고 새로고침도 빨라서 뜬 건지 잘 모르겠군요. 내용을 수정해서 다시 확인하겠습니다.//nodejs_tutorial_server.js 수정 app.get('/', function (req, res) {     res.send('Hello I\'m In Docker Container Now!');  }); 파일 변경해서 다시 확인하기//버전 태그도 0.0.2로 업해주고 docker build --tag node_server:0.0.2 [Dockerfile위치] 잘 생성되었습니다.//이미지가 잘 생성되었는지 확인하고 docker images 0.0.2가 나타났습니다.//기존 컨테이너를 삭제합니다. -f 옵션은 실행중인 컨테이너도 강제로 삭제하겠다는 뜻입니다.  docker rm -f NODE_SERVER_0 // 잘지워졌나 확인하고  docker ps -a 잘 지워집니다.//0.0.2 버젼 이미지로 컨테이너를 다시 생성합니다.  docker create --name NODE_SERVER_0 -p 3000:3000 node_server:0.0.2   //서버를 실행합니다. docker start NODE_SERVER_0 잘 실행됩니다.이제 다시 접속해봅시다.안녕! 나 지금 Docker 안에 있어!이제 Docker로 여러 개의 서버를 띄우겠습니다. NodeJS는 싱글 스레드이기 때문에 하나의 CPU를 여럿이 나눠 갖는 건 비효율적입니다. 따라서 CPU 숫자에 맞춰서 서버를 띄워보겠습니다.제 맥북엔 CPU가 4개뿐입니다.CPU수에 맞춰 추가로 생성하기추가로 컨테이너를 생성하고, 서버를 실행합니다. 서버 목록도 확인해야겠죠.서버 생성서버 실행서버 목록 확인포트번호는 같은 포트를 쓸 수 없기 때문에 3001, 3002, 3003으로 매핑합니다. 브라우저로 접속해서 확인해보겠습니다.각 포트별 접속 화면미리 만들어둔 이미지 덕분에 서버 3대를 띄우는 데에 5분도 안 걸렸습니다. 하지만 Docker 서버를 여러 개 띄워도 결국 사람의 손이 닿아야 합니다. 따라서 이번에는 NodeJS의 Cluster를 활용해 적은 수의 Docker Container를 이용하면서도 다수의 CPU를 사용하겠습니다. 또 죽은 워커를 다시 살려 서버가 다운되는 것을 막아 안정적인 서비스도 구축해보겠습니다.4. 멀티코어대응 NodeJS Cluster 구성2컨테이너용 NodeJS Cluster서버 어플리케이션 작성하기var cluster = require('cluster'); var os = require('os'); var uuid = require('uuid'); const port = 3000; //키생성 - 서버 확인용 var instance_id = uuid.v4();  /**  * 워커 생성  */ var cpuCount = os.cpus().length; //CPU 수 var workerCount = cpuCount/2; //2개의 컨테이너에 돌릴 예정 CPU수 / 2  //마스터일 경우 if (cluster.isMaster) {     console.log('서버 ID : '+instance_id);     console.log('서버 CPU 수 : ' + cpuCount);     console.log('생성할 워커 수 : ' + workerCount);     console.log(workerCount + '개의 워커가 생성됩니다\n');        //CPU 수 만큼 워커 생성     for (var i = 0; i < workerCount>         console.log("워커 생성 [" + (i + 1) + "/" + workerCount + "]");         var worker = cluster.fork();     }        //워커가 online상태가 되었을때     cluster.on('online', function(worker) {         console.log('워커 온라인 - 워커 ID : [' + worker.process.pid + ']');     });        //워커가 죽었을 경우 다시 살림     cluster.on('exit', function(worker) {         console.log('워커 사망 - 사망한 워커 ID : [' + worker.process.pid + ']');         console.log('다른 워커를 생성합니다.');                 var worker = cluster.fork();     });  //워커일 경우 } else if(cluster.isWorker) {     var express = require('express');     var app = express();     var worker_id = cluster.worker.id;         var server = app.listen(port, function () {         console.log("Express 서버가 " + server.address().port + "번 포트에서 Listen중입니다.");     });        app.get('/', function (req, res) {         res.send('안녕하세요 저는 워커 ['+ cluster.worker.id+'] 입니다.');     });  } CPU 숫자를 받아 CPU 수(4)를 컨테이너 수(2) 로 나눠 워커를 생성하는 NodeJS 클러스터 구성입니다. 이렇게만 해도 운영에는 무리가 없지만 컨테이너 2개의 구분이 안 되서 확인할 수가 없습니다.그러므로 마스터와 워커의 통신을 이용해 마스터의 uuid를 얻겠습니다. (워커와 마스터 간의 데이터 이동은 통신 말고는 메모리DB 등의 데이터 저장소밖에 없습니다)마스터의 아이디를 알아오는 로직이 추가된 어플리케이션 작성var cluster = require('cluster'); var os = require('os'); var uuid = require('uuid'); const port = 3000; //키생성 - 서버 확인용 var instance_id = uuid.v4();  /**  * 워커 생성  */ var cpuCount = os.cpus().length; //CPU 수 var workerCount = cpuCount/2; //2개의 컨테이너에 돌릴 예정 CPU수 / 2  //마스터일 경우 if (cluster.isMaster) {     console.log('서버 ID : '+instance_id);     console.log('서버 CPU 수 : ' + cpuCount);     console.log('생성할 워커 수 : ' + workerCount);     console.log(workerCount + '개의 워커가 생성됩니다\n');         //워커 메시지 리스너     var workerMsgListener = function(msg){                    var worker_id = msg.worker_id;             //마스터 아이디 요청             if (msg.cmd === 'MASTER_ID') {                 cluster.workers[worker_id].send({cmd:'MASTER_ID',master_id: instance_id});            }      }        //CPU 수 만큼 워커 생성     for (var i = 0; i < workerCount>         console.log("워커 생성 [" + (i + 1) + "/" + workerCount + "]");         var worker = cluster.fork();                //워커의 요청메시지 리스너         worker.on('message', workerMsgListener);     }        //워커가 online상태가 되었을때     cluster.on('online', function(worker) {         console.log('워커 온라인 - 워커 ID : [' + worker.process.pid + ']');     });        //워커가 죽었을 경우 다시 살림     cluster.on('exit', function(worker) {         console.log('워커 사망 - 사망한 워커 ID : [' + worker.process.pid + ']');         console.log('다른 워커를 생성합니다.');                 var worker = cluster.fork();         //워커의 요청메시지 리스너         worker.on('message', workerMsgListener);     });  //워커일 경우 } else if(cluster.isWorker) {     var express = require('express');     var app = express();     var worker_id = cluster.worker.id;     var master_id;        var server = app.listen(port, function () {        console.log("Express 서버가 " + server.address().port + "번 포트에서 Listen중입니다.");     });        //마스터에게 master_id 요청     process.send({worker_id: worker_id, cmd:'MASTER_ID'});     process.on('message', function (msg){         if (msg.cmd === 'MASTER_ID') {             master_id = msg.master_id;         }     });        app.get('/', function (req, res) {         res.send('안녕하세요 저는 ['+master_id+']서버의 워커 ['+ cluster.worker.id+'] 입니다.');    });  } Docker Container에 올리기 전 로컬 테스트를 먼저 진행합니다. 서버 구동!두 개의 워커가 실행되었습니다.똑같은 localhost:3000번 접속이지만 워커의 번호가 다릅니다.이제 워커로 CPU 수만큼 워커를 생성할 수 있게 되었습니다. 이제 워커가 어떻게 안정적으로 서비스되는지 테스트하겠습니다. 워커 킬링 테스트하기워커 킬러 로직 작성//워커 킬링 테스트     app.get("/workerKiller", function (req, res) {         cluster.worker.kill();         res.send('워커킬러 호출됨');     }); 실험에 앞서 똑같은 상황 재연 마스터 아이디를 유심히 봐주세요. 워커 킬러를 실행하겠습니다.워커 킬러 호출아래는 호출된 결과입니다. 하나의 워커가 죽자마자 곧장 다른 워커가 태어나(?) 3000번을 Listen하기 시작했습니다. 워커 킬러가 호출된 화면이제 워커 킬러를 여러 번 호출해보겠습니다. CMD+R을 꾸욱 눌러 연속으로 킬링해봤는데 아래 화면처럼 바로 살아납니다.접속해서 현재 워커를 확인합니다.위의 화면처럼 마스터의 UUID가 그대로인데 워커만 교체되었습니다. 준비는 끝났습니다. 이제 Docker를 이용해 2명의 워커를 가진 2개의 NodeJS서버를 실행하고, 4개의 귀여운 CPU를 불살라봅시다! 5. Docker로 NodeJS Cluster 서버 실행하기docker build --tag node_server:0.0.3 /Users/kww/eclipse-workspace/nodejs-for-article docker create --name NODE_SERVER_0 -p 3000:3000 node_server:0.0.3 docker create --name NODE_SERVER_1 -p 3001:3000 node_server:0.0.3 docker start NODE_SERVER_0 docker start NODE_SERVER_1 cluster가 적용된 2개의 컨테이너 start0.0.3번 이미지로 생성된 2개의 컨테이너 서버가 무사히 로드되었습니다. 이제 접속해서 확인해볼까요?cluster가 적용된 2컨테이너 4서버 구동화면WOW! 2개의 URL, 2개의 UUID, 각 2명의 워커까지. 완벽한 2.2.2입니다. 마치 홍진호를 보는 듯한 서버 현황입니다. 이제 워커 킬러로 습격해보겠습니다.워커 킬러 습격 후위의 이미지를 보면 3000번 포트서버에서 13명, 3001번 포트서버에서 22명의 워커가 사망했습니다. UUID를 통해 2개의 서버에서 일정량의 워커가 매우 안정적으로 서버를 지키고 있는 걸 알 수 있었습니다.지금까지 2개의 컨테이너로 4개의 서버를 구성해보았습니다. CPU 숫자와 나눠지는 수에 따라 컨테이너의 수, NodeJS 클러스터 서버의 수를 유동적으로 조정할 수 있습니다. 전에 운영하던 API서버는 16코어 서버였고, 로드벨런서 및 기타 작업용 1코어의 여분을 남기고 15코어 / 3 으로 5개의 워커를 가진 3개의 NodeJS서버를 도커 컨테이너로 운영했었습니다.여기서 문제점이 생깁니다. 우리는 어떤 서비스를 할 때 하나의 도메인을 쓰는데 포트번호가 2개죠? 어떻게 해야 할까요. 여기서 바로 한참을 기다렸던 불곰국의 Nginx가 등장합니다.6. Nginx로 로드밸런싱 하기Nginx은 “더 적은 자원으로 더 빠르게”를 지향합니다. 러시아의 이고르 시쇼브(Игорь Сысоев)는 Apache에서 10,000개의 접속을 동시에 다루기 힘든 걸 해결하려고 Nginx를 개발합니다.Nginx는 NodeJS와 유사하게 싱글 스레드 방식에 이벤트 드리븐 구조 사용하는 오픈소스 HTTP서버로 최근 아파치의 점유율을 상당히 뺏고 있는 서버입니다. 다운로드 링크를 아래에 써두었습니다.Nginx 설치WindowNginx 다운로드Macbrew install nginx Linuxapt-get install nginx or yum install nginx Nginx 설치 성공Nginx 기본 접속 화면서버 조작방법서버 시작 : nginx 서버 중지 : nginx -s stop 서버 재시작 : nginx -r reload (맥에선 이건 안되는듯?) 기본 설정은 8080포트로 되어있습니다. 원하는 포트르 로드벨런싱 설정을 해보겠습니다. Nginx 로드밸런싱 설정아래는 Nginx의 로드밸런싱입니다.#http블럭 내부에 추가     #NodeJS 서버 로드밸런싱     upstream nodejs_server {         #least_conn;         #ip_hash;         server localhost:3000 weight=10 max_fails=3 fail_timeout=10s;         server localhost:3001 weight=10 max_fails=3 fail_timeout=10s;     }        #3333번 포트 NodeJS 서버로 연결     server{         listen               3333;         server_name  localhost;                location / {             proxy_pass http://nodejs_server;         }     } 로드밸런싱이 잘 적용되었는지 확인해보겠습니다. 로드밸런싱 적용 이후모든 브라우저에서 3333번으로 접속했는데 서로 다른 2개의 서버가 번갈아 접속되고, 워커가 가끔 바뀌는 걸 확인할 수 있습니다. 이번엔 로드밸런서로 워커 킬러를 호출하겠습니다.로드밸런싱 포트인 3333번 포트로 여러 번 호출결과 확인Nginx 로드밸런서가 확실하게 작동하는 걸 확인할 수 있었습니다. 위의 이미지에서 서버가 자꾸 바뀌는 모습을 볼 수 있는데, 이는 세션이 유지되지 않기 때문입니다. 실제 서비스에서는 세션의 유지를 위해 ip_hash 옵션이 꼭 필요합니다.ip_hash : 동일한 IP의 접속은 같은 서버로 접속하도록 하는 옵션입니다.  least_conn : 가장 접속이 적은 서버로 접속을 유도하는 옵션으로 ip_hash와 같이쓰입니다. Conclusion자, 고생하셨습니다. 여기까지 Docker와 NodeJS, Nginx를 이용해 관리하기 쉽고, 일부러 죽여도 죽지 않는 안정적인 서비스 환경을 구축해봤습니다. 한 가지 주의할 점이 있습니다. NodeJS의 Cluster는 죽은 워커를 바로 살리는데 싱글스레드여서 그런지 그 속도가 정말 어마어마합니다. 따라서 NodeJS Cluster를 사용할 땐 여러 핸들링에 신중하세요. 모든 promise에 반드시 catch를 달아 핸들링하고, 오류가 날 것 같은 로직엔 반드시 try - catch를 달아 핸들링을 해야 합니다. 그렇지 않으면 다시 살아나는 워커에 의해 서버의 자원이 고갈될 수 있습니다.예전에 16코어 서버를 운영할 땐 서버 자원에 비해 사용자가 적어서..(눈물) 5워커 2개의 서버만 구동하고 여유를 두었습니다. 그리고 서버 패치가 있을 때 3번째 서버를 대기시켰습니다. 앱에서 업데이트가 완료되는 시점에 Docker Container를 바꿔치기 하는 방식으로 Non-Stop서비스를 운영했죠. 혹시 코어가 빵빵한 여유 서버가 있는데 재빠르고 좀비 같은 서비스를 구성해야 한다면 위와 같은 환경 구축을 강력히 추천합니다. 지금까지 긴 글을 읽어주셔서 감사합니다.ps. 글 쓰다 보니 해가 떴네요. 하하.참고1) 가상 머신은 작은 이미지라도 기가바이트 단위의 사이즈와 Load되기까지 상당한 시간이 소요된다.2) 그러나 Windows의 경우, Hiper-v위에 리눅스를 띄워 도커를 구동한다. Mac에서도 가상 머신 위에서 구동된다. 따라서 성능적인 강점은 리눅스에만 적용된다.3) 도커에서는 NAME 속성을 지어주지 않으면 알아서 이름을 지어주는데 romantic한 단어가 많다.글강원우 과장 | R&D 개발2팀[email protected]브랜디, 오직 예쁜 옷만#브랜디 #개발팀 #개발자 #개발환경 #업무환경 #인사이트 #경험공유
조회수 1212

슬라운드 브랜드 아이덴티티(B.I) 개발기 - 1화

1. 좋은 브랜드 만들기에 대한 관심.세상에는 단순히 보기 좋은 멋있는 브랜드가 아니라, 그들의 철학과 가치관을 효과적으로 전달하는 매력적인 브랜드들이 정말 정말 많습니다. 좋은 브랜드들을 발견할때마다 ‘갖고싶다 저브랜드..’ 보다는‘와 샘난다.. 쟤네 왜이렇게 잘해’ 라고 느끼는 저는 좋은 브랜드들이 ‘왜 좋은지, 어떻게 좋은 브랜드가 되었는지, 앞으로는 어떠한 전략을 가지고 있는지’ 등에 관심이 많고 그들의 행보과 가치를 연구하고 있습니다. 그리고 최종 목적은 언젠가 어떤 형태로든 ‘좋은 브랜드’를 만드는 것이고요!2. 슬라운드와의 만남지난 해 여름, 우연한 기회로 매트리스 스타트업의 브랜드 디자이너로 합류하게 되었습니다.브랜드 디자이너라고는 하지만, 창업자들과 처음만나 이야기를 나누어 보니디자인의 ‘ㄷ’ 관련한 모든 일..이 슬라운드 안에서 제가 앞으로 마주해야할 일들이었습니다.(매트리스 두개뿐인 황량한 쇼룸부터.. 강력한 군청의 파란색 로고까지..)그래서 사실 메모리폼 매트리스에는 별로 관심이 없었지만.. 학부에서 인테리어를 전공한 이후 가구회사, 전시회사, 인테리어 회사 등을 거쳐  공간, 그래픽 작업을 하면서 현재는 대학원에서 석사과정으로 브랜드 개발을 연구하고 있는..매우 ‘잡식스러운’ 욕심 많은 디자이너에게 다양한 영역을 경험할 수 있는 이 곳이 내가 하고싶은 것들을 다 해볼 수 있는 꽤 좋은 환경일 것 같다고 생각했습니다!(물론 이는 착각이었음이 금새 판명..)3. 그리고 슬라운드와의 만남이후 들었던 생각들.1) 젊은 아저씨들이 왜 매트리스를..?인테리어 업계에서 일하면서 많은 가구 브랜드들을 관심있게 봐왔음에도 불구하고사실 매트리스하면 에이스침대, 시몬스 등만 생각날 정도로 매트리스가 현재시점에서 새로울게 있나? 하고 생각했었는데요.슬라운드와 만남이후, 좋은 매트리스를 사용해야하는 이유에 대해 납득하게 되었고 국내외 메모리폼 매트리스 브랜드들의 성공사례를 보면서 오래되고 새로울게 없다고 생각했던 낡은 산업이 오히려 혁신의 가능성이 있다는 게 흥미로웠어요.잠이라는게 우리 삶에서 매우 필수적인 요소 중 하나 인데, 보다 좋은 잠을 위해 적극적으로 수면 환경을 개선해야겠다는 생각은 못했던것 같아요.그리고 무엇보다 좋은 매트리스를 개발하겠다는 의지로 걸어온 슬라운드의 발자취가엄청 새롭고 혁신적인 시도들이라기보다, 맨땅에 헤딩하고 낡은 구조에 타협하기 않기 위해 (원래 그런것 또는 익숙함과 편함을 위한 방식 거부) 발도 뛰어 왔다는 점도 재미있었고요. 오히려 이런 집착이 혁신의 발판이라는 생각이 들었어요.국내외 매트리스 스타트업의 혁신사례2) 아직 명확히 정리되진 않았지만 추구하는 가치와 철학에 대한 동의!파랑파랑 슬라운드 / Brand guidelin v.5ㅌ그리고 창업자들이 초기에 정리한 브랜드 가이드 라인을 전달받았습니다."우리가 브랜드가 사람이라면 어떤 생각/행동을 할까?"라는 질문으로 시작하는30페이지에 달하는 브랜드 철학에 대한 이야기들... (부담..)매트리스 업계에서 한번도 등장 없는 identity의 구축을 하고싶다는 사장님들..ㅎㅎ장인적신, 배려심, 실험정신 이라는 브랜드 철학을 바탕으로 전문이면서 센스있는 (배려심있는) 그리고 친근하고 고급스럽고새로운 것을 시도하는!3가지의 브랜드 철학과 5가지 브랜드 아이덴티티 키워드들을 구체적인 예시 상황에 빗대어'슬라운드가 앞으로 어떤 태도와 이미지의 브랜드가 되고 싶은지' 빼곡히 적혀 있었고,아직 일관성 있는 이미지는 아니지만, 슬라운드가 무엇을 추구하는지 명확히 느낄 수 있었습니다. 그리고 그 철학과 가치관에 진심으로 동의했습니다. 4. 내가 좋아하는 브랜드가 될것 같아.이렇게 슬라운드를 만나고  브랜드 가이드 라인을 통해 전달되는 슬라운드가 추구하는 방향을알게 되면서 추구하는 철학과 가치관이 멋지다고 생각했고,무엇보다 내가 좋아하는 브랜드가 될 것 같다는 생각이 들었습니다.그리고 설레는 마음으로 슬라운드 브랜드 아이덴티티 개발 작업에 참여하게 되었습니다.졸업후 석사과정을 하고 있지만, 브랜딩이라는 영역은 공부하면 할수록 아직도 알아야할게 너무나 많고, 하나의 브랜드의 아이덴티티를 만들어 간다는게 정말 어렵고 책임감 있는 일이라는 것을 알기에한편으로 마음이 무겁기도 했지만! 최선을 다해 좋은 결과를 만들겠다고 생각했어요.그리고 앞으로 슬라운드의 팀원으로 소속되어 지난 6개월간 만들어온 슬라운드의 브랜드 아이덴티티 개발과정을 소개할 예정입니다. 사실 단순히 포트폴리오를 보여주기위해 결과물을 공유하는게 아니라, 디자인 과정과 나의 시행착오들을 있는그대로 공유하다는게 처음엔 엄두가 안나기도 했어요.이전까지는 보여주고 싶은 보기 좋은 것들만 포트폴리오로 남기면 되지라고 생각하기도 했고,그렇게 비주얼에 초점을 맞추어서 작업해온 것들고 있고요.그러나 하나의 신생 브랜드에 소속되어 디자이너가 아닌 다른 팀원들과 처음부터 브랜드 개발하는 과정을 경험하면서, 브랜딩은 디자이너 혼자만의 몫이 절대절대 아니라는 것을 절실히 깨닫게 되었습니다.그래서 우리가 무엇을 고민하고 어떻게 해결해왔는지.. (수많은 시행착오들..ㅜㅜ)그 고민의 흔적들을 꼭  나누고 싶다는 생각이 들었습니다. 단순해 보이는 로고 하나가 반년의 (고난의)시간을 거쳐 어떻게 탄생하게 되었는지 지켜봐주세요.
조회수 1166

레고를 만들다 든 startup 관련 생각들...

스타워즈 개봉 기념으로 X-wing fighter를 하나 구매하여, 하나하나 만들면서 들었던 생각들을 사진과 함께 정리해 보았다. 그렇다! 8~14세가 적정 연령이지만 38세 아저씨가 본인이 갖기 위해 사고 직접 조립했다. 영화를 보신 분이라면, X-wing fighter가 등장하는 장면에서 이 비행기가 얼마나 멋지게 나오는지 알 것이다. 그 장면에서 난 정말  감동받았다 ㅜㅜ암튼 그런 레고를 하나 만들면서 들었던 몇몇 생각들을 짧게 정리!1. 레고의 설명서에는 말이 필요 없다.일단 레고의 제품 설명서에는 말이 한마디도 없다. 그냥 보면 알게 된다는 것이고, 사진과 숫자로 잘 표현하기 때문에 그냥 잘 따라가다 보면 어느새 완성이 되어버리는 것이다. 파펨(paffem)의 경우, 고객들에게 제품을 배송할 때, 소개 카드 한 장이 동봉되는데 거기에는 텍스트들이 난무한다. ㅜㅜ말로 설명을 해야 고객에게 우리 서비스가 무엇인지 설명할 수 있기 때문인데, 이것을 어떻게 쉽게 고객들에게 전달해볼까? 에 대한 고민을 진행 중이고, 동영상으로 이 것을 해결하는 작업을 진행하고 있다. 또한 파펨을 언제 이용하면 좋은지에 대한 설명을... 글이 아닌 영상으로 풀기!2. 레고는 단순 조립이 아니다.사실 레고를 만들다 보면 그냥 멍하니.. 설명서에서 하라는 순서대로 따라 하는 경우가 많다. 그런데 그 와중에도 레고 디자이너의 의도들이 느껴지는 경우가 있는데, 그럴  때마다 이 디자이너가 얼마나 고민을 많이 했고, 그 의도를 숨겨놓았는지를 찾아가면서 감동하게 된다. 다 만들어지고 나면 보이지 않는 것들에 까지도 하나하나 블록을  달리해가면서 그게 왜 거기에 있어야 하는지에 대한 설계를 하고 있고, 또한 그 대상의 원리 같은 것에 대해서도 설명을 하고 싶은 의도를 곧곧에 숨겨 놓았다.예를 들면 왜 굳이 1번(아래 사진 중)에서 한 개로 만들어도 되는 부품을, 두개를 따로 만들어서 조립하게 했을까? 이런 질문들이 튀어나올  수밖에 없다.3. 내부 조율은 어떻게 할까?아래 부품을 보면서 들었던 생각이, 저런 부품은 레고의 다른 "모델"들에서는 사용되지 않을 것인데, 굳이 저렇게 까지 만들었어야 하는  것일까?라는 생각이 들었다. 디자인 부서에는 당연히 저렇게 만들어야 한다고 주장했을 터이고, 제조 쪽 부서에서는 호환되지 않는 제품의 경우는 원가, 공정의 번거로움 등등의 이유로 거부를 했을 것이라는 상상을 해보았다. (이런 부서간의 다툼?은 사실 회사들에서는 일상이다)내가 어릴 때만 해도 레고가 이렇게 다양한 제품(모델)을 만들지는 않았고, 대부분 호환되는 블록들로만 만들어서,  맘대로  이것저것 만드는 재미가 있었던 것 같은데, 요즘의 레고는 굉장히 디테일을 살리고 실사들을 하나의 미니어처 화 시키는 작업에 공을 들이고 있다. 아마도 계속해서 본인들의 본질은 변하지 않되 정체성에 대한 고민을 하고 있는 듯. 또한 이런 상품들이 많아지면서 덕후들은 계속 양산되고 있다.4. 오퍼레이션 관리의 신, 레고아래 사진은 남은 블록들이다. 대부분 아주 작은 부품들을 몇 개씩 더 넣어주는데, 이것은 물론 일부러 더 넣어주는 것이겠지만..여기서 하나의 호기심이 생긴 것이.. 레고에서는 저런 부품들의 종류와 개수를 어떻게 정확하게 맞춰  넣을까?라는 것이다.사실 파펨(paffem) 박스를 포장할 때도 많은 요소들이 들어가는데, 일단 향수, 이미지 카드, 설명카드, 바틀 부착용 스티커, 첫 구매고객의 경우는 선택하지 않은 향의 샘플까지.. 암튼 이것들도 뭔가 빠져서 갈 때가 많고, 실수를 하는 경우가 많은데.. 레고의 경우는 그 많은 그리고 그 다양한 블록들을 어떻게 하나하나 실수하지 않고 넣을까? 물론 기계가 하겠지?5. 빅픽쳐를 설명해주는 레고의 위엄조립의 매 챕터에서는 그 챕터의 완성작으로 Big picture를 보여준다. 4번의 봉다리를 뜯어서 만들면 오른쪽의 모양과 같이 만들어진다는 것을 미리 보여주고 있다. 내가 항상 중요하게 생각하는 "예측가능성"에 대한 너무나도 좋은 예시인 듯하다. 그리고 저 숫자 4와 같이 블록들을 모듈화 시켜두었기 때문에, 단계별로 만드는 것도 가능하고 또한 부품들 찾느라 너무 많은 고생을 시키지 않는다는 장점 또한 살리고 있다. 이런 것들이 보이지 않는 고객 배려!!레고를 조립하며 들었던 이런저런 생각들을 짧게 정리해 보았는데, 레고는 그저 어린이들이 가지고 노는 장난감이 아니다. 물론 요즘은 아저씨 덕후들이 더 난리라는 것도 잘 알고 계실 듯한데.. 아무튼  철학들, 고민들, 노력들과  creative들이 어우러져서 이렇게 멋진 제품이 나오고 또 발전하여 위대한 제품들이 나온다.  정말 멋지다 레고!!#파펨 #스타트업 #창업가 #창업자 #마인드셋 #인사이트
조회수 1677

무럭무럭 자라는 잔디 CX 꿈나무, Hannah를 만나다

* 2016년 작성된 글입니다편집자 주: 잔디와 함께 하고 있는 멤버는 총 52명. 국적, 학력, 경험이 모두 다른 이들이 어떤 스토리를 갖고 잔디에 합류했는지, 무슨 일을 하고 있는지 궁금해하는 분들이 많습니다. 잔디 블로그에서는 이 궁금증을 해결해 드리고자  ‘맛있는 인터뷰’를 통해 ‘잔디’ 멤버들의 이야기를 다루고자 합니다.(음식점의 이름이 본인의 이름과 같은 글자로 끝난다는 이유로 선택받은 핑크솔747)오늘 인터뷰를 위해 생각한 음식점이 있는가?내 한국 이름은 한솔이다. 그래서 핑크솔로 결정했다. 라임 좋지 않은가? 그리고 핑크솔 어감이 예쁘니까. 회사 근처 음식점 중 가장 예쁜 것 같다. 참고로 난 핑크솔로부터 일체의 협찬을 받지 않았다.자기소개 부탁한다반갑다, 잔디 CX 팀에서 일하고 있는 Hannah다. 한국 이름은 한솔이다.잔디 CX 팀에서는 어떤 일을 주로 하는가?고객 응대와 사용자 경험을 개선하는 일을 주로 도맡아 하고 있다. 처음 팀이 셋업되었을 때, CS(Customer Service)팀이었지만 사용자 경험까지 아우르고 싶어서 최근 CX (Customer Experience)팀으로 이름을 바꾸게 되었다. 최근에는 사용자 경험에 대한 A to Z를 개선하고 있어 조금 정신없이 지내고 있다. 조금 정신없이 지내고 있다는 점을 꼭 알리고 싶다.  (고객 만족을 위해 불철주야 노력하는 CX팀)잔디에 입사하게 된 계기를 알려달라스타트업에서 일하게 될지 몰랐다. 아니 꿈에도 몰랐다. 잔디에 합류하기로 한 결정적 계기는 같은 팀에서 일하고 있는 Jinho님이었다. 잔디와 같은 곳에서 함께 일 하는 게 얼마나 큰 장점 인지를 조목조목 설명해주셨다.  사실 잔디에 들어오기 전 생각이 많았다. 앞으로 뭘 해야 하나 고민하다가 ‘스타트업에서 배울 게 많지 않을까?’란 생각을 하게 되었다. 경영학도로서 대기업 영업/마케팅 분야에 가겠다고 살아왔는데, 과연 그게 내가 인생을 살아가는데 정답일까라는 의구심을 갖게 되었다.그렇다면 내가 할 수 있는 것은 무엇일까? 에 대해 생각하다가 결국 잔디를 선택했다. 모든 건 선택의 연속이다. 난 대기업보다 스타트업에서 내가 배울 게 많고, 장기적으로 내 인생을 풍요롭게 해줄 거라는 믿음에 스타트업을 선택한 것이다. 무엇보다 함께 일 하는 잔디의 멤버들이 너무 좋다. 그렇기 때문에 잔디에 온 것을 후회하지 않는다.잔디에 들어오겠다고 했을 때 부모님의 반응은?코멘트가 없었다. 교수는 자기 연구 시간 등이 확실하고 방학도 있으니 사실 부모님은 내심 내가 교수가 되기를 원하셨던 것 같다.  잔디에 합류하게 된 가장 큰 계기가 Jinho님이라고 했다. 그는 누구인가?현재 잔디 CX 팀에서 함께 근무하고 있다. 난 아부지라고 부른다. 정말 든든한 존재이다. Jinho님 자랑을 하자면 성격이 정말 꼼꼼하다. 사실 난 덤벙대는 성격인데 Jinho님이 꼼꼼하셔서 업무 궁합이 잘 맞는다. 물론, 나만 이렇게 생각할 수 있다. 또 회사일 뿐만 아니라 개인적으로 어렵고 고민되는 일을 인생 선배처럼 물어볼 수 있고 정말 아낌없는 조언도 해주시는 고마운 분이다.(GWP에서 준비한 크리스마스트리와 Secret Santa 선물들)요즘엔 사내에서 GWP(Great Working Place Campaign)도 함께 하고 있다. 소개 부탁한다GWP는 Great Working Place의 줄임말이다. 말 그대로 잔디의 업무환경 개선을 위한 팀이라고 생각하면 될 것 같다. 크게는 얼마 전 진행한 할로윈 파티부터 작게는 탕비실 냉장고 음식 채우기까지 책임지고 있다고 보면 된다. 할 일이 많다. 이 점을 강조하고 싶다. 현재 통계팀의  Hugo와 함께하고 있는데 너무 재미있다. 정말. 시간 가는 줄 모를 정도로 말이다. 하하하하. 이런 우리의 모습을 보고 ‘쟤네 놀고 있는 거 아님?’ 이라고 생각하는 것 같아 슬슬 후임자를 물색하고 있다. 한 번 겪어봤으면 좋겠다. 정말 재미있다. 물론 할 일이 많다.주말은 어떻게 쉬고 있는가?요리! 요즘 요리에 푹 빠졌다.맛있는 인터뷰를 위한 다소 작위적인 답변인 것 같다그렇지 않다. 정말로 요리에 푹 빠졌다. 지난주, 카레를 만들어 먹었는데 정말 맛있었다. 물론, 내 입맛에 맛있기에 다른 사람은 모르겠지만. 마리텔에서 준구 엄마가 하는 거 보고 따라했는데 정말 소름 돋게 맛있었다. 토마토를 주로 이용한 카레인데 기회가 되면 도전해보길 빈다. 며칠 전엔 봉골레를 해 먹었다. 집에서 만들어 먹으니 조개를 정말 원하는 만큼 넣어 먹을 수 있어서 즐거웠다. 한가득 말이다. 모시조개를 좋아해 정말 많이 넣었다.(봉골레인지 조개찜인지 헷갈릴 정도의 조개 양)하지만 이 메뉴들을 모두 아우르는 절정의 메뉴가 있다. 바로 사케동이다. 사케동은 만들기도 쉽지만 맛은 일품이다.Hannah님이 그리는 잔디의 모습이 궁금하다즐거운 잔디로서 사람들이 조금 더 즐겁게 사용하는 협업툴 서비스가 되었으면 좋겠다. CX 팀에 있다 보니 다양한 고객사와 이야기할 기회가 많은데 아직까지는 사용자들이 잔디를 100% 활용해 즐겁게 일하고 있지 못하는 것 같다. 우리가 잔디를 사용하는 것처럼 말이다. 이를 위해 CX 팀에서는 재미있는 잔디 활용 팁을 이메일로 사용자분들께 전달하고 있다. 스팸 메일처럼 보일 수 있지만 꽤 재미있는 팁들이니 꼭 확인해 주셨으면 좋겠다.얼마 전 들었던 UX 강의에서 ‘UX보다 중요한 건 pleasure’라는 메시지가 가장 와 닿았다. UX가 조금 불편하더라도 유저가 제품을 사용하는데 즐거움을 느낀다면, 그 불편함을 잘못 느낀다고 하다. 아이팟도 처음 나왔을 때는 인식도 안 되었다고 한다. 그럼에도 불구하고 성공할 수 있었던 이유는 바로 pleasure에 있었다. 잔디에도 그런 pleasure가 많은데, 사람들이 잘 모르니 많이 알려주고 싶다. 이번에 모바일에 새로 구현된 Easter egg*도 정말 재미있는 기능이다. 유저가 잔디를 더욱 재미있는 게 사용할 수 있는 요소를 늘려나가고 싶다.* Easter egg는 개발자가 서비스에 숨겨 놓는 히든 기능으로 제품에 재미를 주는 요소 중 하나이다. 잔디의 Easter Egg는 유저의 재미를 위해 본 포스팅에서 공개하지 않으려고 한다. – 편집자 주마지막은 맛있는 인터뷰의 공식 코너, ‘어서 말을 해’다. Kevin님의 질문이었던 ‘잔디에서 개선하고 싶거나 있었으면 하는 복지가 있다면?’에 대한 대답을 듣고 싶다점심 식대가 지원됐으면 좋겠다. 주변 친구 중 점심 식대를 지원하는 아이들을 보면 좀 부럽다. 아니 많이 부럽다. 그리고 비즈니스 팀원끼리 워크샵을 한 번 다녀왔으면 좋겠다. 다른 사람들은 어떤 일을 하고 있는지 그리고 어떤 생각을 가지고 있는지 허심탄회하게 이야기를 나눌 수 있는 토론 자리가 마련되었으면 한다.다음 인터뷰이를 위한 질문도 함께 말해달라2016년 발렌타인 계획은?#토스랩 #잔디 #JANDI #CX #CustomereXperience #팀원소개 #팀원인터뷰 #팀원자랑 #조직문화 #기업문화 #사내문화
조회수 1392

스푼 브랜드 마케터 William을 만나보세요!

사람의 마음을 이롭게 움직일 수 있는 브랜드 매니저가 되고 싶어요사람의 마음을 이롭게 움직이고 인류에게 공헌할 수 있는 브랜드를 만드는 사람이 되고 싶다는 스푼 라디오의 '왕자님' 윌리엄을 지금 소개합니다.영국 왕실 윌리엄 왕자님, 스푼 윌리엄 feat. 해니 그리고 귀요미 윌리엄출처: Tumblr , KSTARS 재경 일보 스푼의 윌리엄 왕자Q. 팀 내에서 요즘 왕자님으로 불리시던데, 혹시 마음에 드는 별명인가요?"아니요. 너무 억지 별명인 것 같아요 하하 갑자기 팀원 Ceci가 저에게 왕자님이라고 불러주시더라고요. 이름 때문인 것 같은데, 저랑은 전혀 어울리지 않는 호칭인 것 같아요. 저는 그냥 '사자 새끼'할래요.어린 시절의 윌리엄 사자 새끼요?사자 - "사자는 그룹의 리더를 지칭한다고 해요. 사자는 무리들을 아우르고 함께 집단생활을 해야 하는 동물이라고 해요. 그런 점이 저 같고, 그런 사람이 되고 싶어요. 사람들과 함께 성장하고 나아가는 그런 존재요. 제가 사자 새끼인 이유는, Neil이 현재 사자이시니까 저는 그 무리를 따르는 '사자 새끼'에요"만땅 시절 빅터,테드 그리고 윌리엄듣고 싶은 당신의 스푼 라이프나의 첫 사회생활 만땅"2013년, 22살 홍대에 놀러 갔어요. 그때 처음으로 대구에서 서울에 놀러 왔었는데 갑자기 휴대폰 배터리를 다 써버렸지 뭐예요. 그때 갤럭시 S를 쓰고 있었는데 충전해야겠다 싶어 편의점을 가는 길에 갑자기 '만땅' 을 마주친 거예요 (스푼 라디오 이전 배터리 공유 서비스) 3분 충전이라니.. 원래 편의점에서 충전하면 최소 30분이 걸리던 시절인데 3분이라뇨? 이건 혁명이다 싶었어요. 어떤 방식으로 이루어지는지 궁금하기도 했고 이건 정말 세상을 바꿀 수 있는 아이템이라고 생각이 들었어요. 그리고 그때 홍대에서 일하고 계시던 테드와 빅터에게 이 서비스 저도 하고 싶은데 어떻게 해야 하냐며 물어봤어요. 그게 마이쿤과 인연의 시작이었어요.닐과 준의 연락처를 받고 연락을 했어요. 제가 이 서비스를 대구에서 하고 싶다고 말씀드렸는데, 막상 사람들을 만나보니 이 사람들하고 일하는 게 너무 재미있고 신나는 거예요. 대구에서 하는 것보다 이 사람들하고 함께 하면 더 큰일을 할 수 있겠구나 싶어서 서울에 올라오게 되었어요.사실 그때 제이가 저를 보고 '사기꾼'이라고 생각하셨데요. 다짜고짜 함께 하겠다고 들이대는 저를 보고 오해를 하셨었죠. 하지만 결국엔 제 진심을 알아주셨어요. 그리고 저희 부모님도 정말 걱정 많이 하셨어요. 그땐 마이쿤에 대한 기사도 별로 없었을 때라 제가 다단계를 한다고 생각하셨더라고요. 그리고 약속드렸어요. 2년만 서울에서 뭔가 하나 해서 돌아오겠다고. 그렇게 서울에 오게 되었고 만땅에 합류하게 되었어요. 그게 저의 첫 사회생활 시작이었어요"내가 브랜딩을 하게 된 계기"처음엔 영업으로 시작을 하게 되었어요. 영업을 하면서 배운 건 바로 사람의 마음을 움직이는 일이었어요. 사실 저는 원래 소심하고 진지한 사람이라서 말을 잘 못하는 편이라 영업을 통해 제 스스로를 좀 바꾸고 싶다는 마음이 컸어요. 그렇게 영업을 하다 보니, 마케팅과 영업에 대한 차이점을 이해하기 시작했고 마케팅, 무엇보다 '브랜딩'을 통하여 하나의 생각으로 많은 사람들의 마음을 얻고 움직이고자 하는 욕망이 커지게 됐던 것 같아요. 그래서 만땅 이후로 다시 대구로 돌아가 학교를 마칠 때쯤 고민이 많았어요. 졸업하고 꼭 이들과 함께 해야겠다고 마음먹었고, 마이쿤 멤버들에 대한 확신은 강했지만 저의 대한 확신이 조금 부족했었거든요. 이 그룹 안에서 내가 얹혀가는 존재가 아닌, 나라는 존재감이 강한 사람이 되고 싶었거든요. 그래서 기획 공부를 정말 열심히 했어요. 그러면서 저에 대한 확신이 생기기 시작했고 이 업계에서 변화의 중심이 되야겠다 마음먹고  다시 '스푼 라디오'라는 서비스를 함께 만들기 위해 재 입사를 하게 되었죠.내가 함께 일하고 싶은 사람같이의 가치를 아는 사람과 일하고 싶어요. 이 세상은 절대 혼자 살 수 없는 사회이거든요. 함께 했을 때 시너지 효과를 낼 수 있고 그 효과를 알고 믿는 사람과 일하고 싶습니다.'스푼'이라는 브랜드는"힘들 때, 기쁠 때, 그리고 슬플 때도 찾고 싶은 다양한 감정 속에 언제나 생각나는 브랜드 이길 바라고 그렇게 되도록 할 예정입니다. 스푼이라는 서비스가, 마이쿤이라는 기업이 백 년 기업이 되었으면 좋겠어요. 이왕 이 세상에 탄생한 거 1세기는 겪어봐야 하지 않을까요?"공모전 대상을 수상한 William알고 싶은 William의 이야기솔직히 진지한 건 콘셉트이죠?"제 별명이 노잼 또는 엄근진인데요. 아마 저는 태어날 때부터 진지하지 않았을까요? 친구들 사이에서도 제가 한 마디만 하면 다들 정적이 흐르더라고요. 콘셉트가 아닌데, 왜 그런지 잘 모르겠어요. 사실 그래서 제 글이 너무나 딱딱하고 진지하게 나올까 봐 걱정도 되는데 재밌는 글로 써주시길 바랍니다 써니!"(죄송한데, 제 필력으로 진지함을 없애버리기엔..)나의 열정은 대구에서 시작"저의 열정은요, 대구에서 시작된 것 같아요. 제가 대구 사람이라 그런가 봐요 하하. 원래부터 열심히 살려고 노력했는데 사실 어떻게 살아야 잘 사는 것인지 고민을 많이 하게 된 것 같아요. 항상 목표가 있었는데 심지어 군대 갈 때도 반드시 지휘관 운전병이 되겠다고 다짐했는데 정말 이루고 제대를 하게 되었어요. 그리고 저의 사회생활의 기준은 만땅이란 서비스를 했을 때, 그 기준에 머물러 있는 것 같아요. 그때 정말 열심히 했었고 그때만큼의 열정이 목말라요. 포기도 선택이란 말이 있듯이 저는 우선순위를 현재 '일'에 두고 있는 것 같아요. 그게 저를 나타내기도 하고 행복이자 저의 열정이거든요.닐이 자주 하시는 말씀이신데 '열심히 하는 거 필요 없다. 잘해야 한다'라는 말을 기억하고 있어요. 열심히는 당연히 기본 베이스이어야 하고, 이젠 열심히 보단 잘하고 싶어요. I am sorry"제가 이름이 윌리엄인 이유는 윌리엄 왕자부터 시작해서, 주변에 윌리엄이라는 이름을 쓰는 사람들이 되게 좋은 이미지를 가지고 계시더라고요. 그래서 저도 덜컥 윌리엄이라는 이름을 선택하게 되었는데 예전에 미국에 한번 갔을 때 어떤 분이 저에게 이름을 물어보셔서 윌리엄이라고 대답하고 저도 모르게 바로 'Sorry'라고 해버린 거예요. 생각해보니 왕족 이름을 제가 너무 쉽게 택해서 붙인 이름 같아서(?) 그런 에피소드가 있었어요. 재미있나요?"(음... 잘 모르겠어요)William은1. 메모하는 습관이 있습니다.2. 닭 요리를 무척 좋아합니다 ex) 치킨3. 수영을 좋아합니다.팀원들이 William을 한마디로 표현한다면?Jay 曰: 등대 - "주위를 관찰하고 도움을 주고자 하는 의지가 강하다."Ted 曰: 용암 - "뭔가 찐득한데 열정은 엄청 뜨겁고 소리 없이 강하다."Sunny 曰:  제2의 나이젤 - "나이젤만큼 어쩌면 나이젤보다 더 성숙하고 멋진 어른이 될 것 같아서"Summer 曰: 자동번역기 - "상대방이 한 말을 (굳이 요청하지 않아도) 자기의 표현으로 다시 한번 번역하여 말한다." +이브라히모비치 즐라탄 (LA 갤럭시 소속의 스웨덴 축구선수) - "머리 기르면 닮아서"Chloe 曰: 무파사(라이온 킹 심바 아빠) - "아기 사자는 안 어울리지만, 같이의 가치를 알기 때문이다."Hennie 曰: 82년생 신승욱 - "92년생 동갑인데 개그감이나 일상 멘트로는 82년생이 거의 확실해서; 그리고 그만큼 어른스럽기도 하다!"Cherish 曰: 개그 치는 AI - "얼굴색 하나 변하지 않고 개그를 치지만 AI처럼 뭔가 코드가 빵 터지는 개그는 아니다"Ceci 曰: 왕자님 - "바쁜 와중에도 여유로움이 느껴지고 항상 기품 있다. 무엇보다 영국 왕자랑 같은 이름.."
조회수 1741

스파크랩 투자 유치, 그리고 우리가 집중해야될 목표.

투자 확정은 9월 21일이였다. https://www.facebook.com/hyunil.filab/posts/1424721077604707?pnref=story그리고 9월 25일, 오늘 역삼 스파크 플러스 1호점으로 사무실에 입주했다. 지문 등록도 하고 회의실도 예약해서 앞으로 우리의 목표에 대해서 팀원들에게 나의 생각을 공유했다.올해는 어떻게든 BEP를 맞춥시다. 자생적으로 살아남아야 됩니다. 그러면 우리는 우리가 하고 싶은 걸 하면서 더 큰 미래를 만들 수 있을 겁니다.한번 더 글로벌 액설레이터가 필요하다면 다음 목표는 YC입니다. 사실 우리는 이미 YC에 온겁니다. YC 배치에서는 운동과 일만 합니다. 우리는 우리가 이루어할 공동의 목표를 잊지 않고 여기에 몰입하면 반드시 달성할 수 있습니다.그래서 우리의 목표는 올해 BEP를 맞추는 것이다. 10월, 11월, 12월 3개월 안에 맞출 수 있을까? 현재 팀원 4명 풀타임, 1명 파트 타임. 우리가 타겟하고 있는 강남 고객(특히 청담동의 페르소나)을 월 7건만 유치하면 (7마리 분양)가능하다고 판단된다. 7건을 위해서 무엇을 해야되는가? (핵심 활동 1)브리더 인터뷰 콘텐츠 포스팅, 2)메세지 아웃바운드 영업, 3)데일리 입양 가능 자견 포스팅) 4)퍼널 들어와서 매칭 안된 고객 계속 추적)1. 브리더 인터뷰 콘텐츠 확보 월 15개 포스팅, 이틀에 하나 꼴로 인터뷰 포스팅. (가능하면 더 많이) (이는 동시에 브리더 소싱/선별/영업이 동시에 이루어져야 하므로 가장 시간이 많이 드는 작업이다.)2. 시간날 때마다 인스타 다이렉트 메세지 영업  실험(매일 10명을 목표로)  (페이스북 메세지 효율은 상당히 좋았다. 타겟팅이 안되서 실제 전환까지는 힘들었지만.)3. 매일 입양 가능한 아이들 [부견-모견-자견] 1개 세트 업로드하기 ( 현실적으로 브리더 수에 따라 이것이 가능하기 때문에 힘들 수도 있다. 따라서 SKU를 최대한 중복 없는 느낌으로 잘 포스팅해서 피드 노출을 극대화 해야된다고 생각된다.)4. 우리의 이탈률은 [1] '가격'과 [2] '지속적인 응대 실패' 가 제일 컸다. 고객이 원하는 강아지라면 그 가격대에 살 수 없어서 다른 곳에서 강아지를 선택하는 경우가 이탈 대다수였다. (가끔 외모가 마음에 안들어서 이탈하는 경우도 종종) 이 문제는 참 어렵다.. 구찌와 같은 브랜드십과 퀄리티를 유지하면서도 가격은 몇십만원에 팔아야 된다는 의미다.. 이건 많이 고민중이다. [2]에 대해서는 우리가 좀 더 신경을 기울이면 충분히 수익으로 전환시킬 수 있는 부분이라서 신경써서 해야될 것 같다. +알파,오프라인 타겟 마케팅을 전통적인 방법으로 꾸준히 실험하면서 효율을 최적화시키는 것을 수시로 병행. 파트너십을 활용한 효율적인 노출(특히 예를 들어 분양 추천에 대한 문의가 꽤 있는 청담 우리 병원을 통한 모객), 그리고 리드를 넓히기 위한 각종 활동으로 고객이 유입되었을 때 퍼널을 계속 추적, UX를 계속 개선시키고 웹페이지가 어드민 시스템으로 가기 이전에 랜딩에서 충분히 후킹될 수 있는 디자인 작업과 글귀가 빠른 시일 내에 완성이 되어야 할 것 같다. (10월달) 그리고 SBA 프로그램에 10월 말 데모데이에서 마케팅 자금을 따와서 이제 돈을 태워보며 A/B테스트를 해봐야될 것 같다.2018.01.01 당당하게 달성했다는 글을 쓸 수 있도록...!!!우리가 받은 투자는 론치 투자라는 것을 받았다.나 혼자 생활비만 써도 겨우 겨우 살아갔는데 같이 일하는 팀원들까지 있으니 처음에 식비(회식비)라도 책임지자라는 마음에 애견샵에서 알바하는 것을 마음 먹었지만 ROI도 너무 안좋고 그렇게 강아지 판매&관리 하는 건 단 하루도 못 버틸 것 같았다. 그래서 내가 선택한 것은 "창업경진대회 알바" 였다.상금을 타면서 현금 500만원을 모았고 (큰 걸 한방했어야 하는데.. 짜잘한 것에서 1등 많이 해봤자...) Cj 올리브 네트웍스에서 주최한 경진대회에서 126팀 중 2등을 했고 거기 심사위원으로 있었던 스파크랩 대표님이 페오펫에 가장 좋은 점수를 주셨다. (여기서 창업허브 입주 공간도 얻게 되어 사실 사무실이 2개..) 그 인연으로 이렇게 스파크랩과 인연이 되었다.스파크랩 데모데이 6기 블로그 포스팅스파크랩 데모데이 8기 블로그 포스팅대학생때부터 스파크랩 데모데이에 갔다. 이 행사는 내 가슴을 정말 미치게 뛰게 만들었다. (지금도 나도 뭐 휴학한 대학생이지만...) 매번 나는 스파크랩 데모데이를 갈 때마다 저 무대에 반드시 오를 거다. 조금만 기다려라. 를 외쳤었다. 근데 생각보다 빨리 그 미래가 왔다. 상상의 힘은 강력하다. 먼 미래를 앞당기니깐.요즘 내가 자극받고 있는 사진, 휴대폰 잠금 화면페오펫은 하루 빨리 세계 시장에 뛰어들려고 한다. 우리의 가치를 한국 사람들에게만 알리는 것은 매우 안타깝다. 전 세계를 놀라게 만들고 싶다. 그리고.. 그를 통해 더 많은 사람들이 더 높은 꿈을 꾸게 만들고 싶다. 가치를 넘어서 영감을 주는 기업을 설립하고 싶다.상상의 힘은 강력하다. 먼 미래를 앞당기니깐.우리는 입양(분양)만으로 절대 안끝난다. 입양하고 난 뒤에 열리는 그 시장에서 우리의 독보적인 시장을 만드는 것을 목표로 한다. 내가 그리고 우리가 페오펫이 그렇게 생각하고 그렇게 할거기 때문에 그렇게 될거다. 그냥 그렇게 믿고 현재에 집중하는 것이다. 분양과 이커머스는 분명 다른 두 개의 사업이다. 그럼에도 불구하고 분양을 접점으로 브리더분들의 브랜딩을 통해 이커머스에서 새로운 도약을 만들 수 있는 기회가 분명히 존재한다고 상상하고 있다.상상한다고 비용이 드는 건 아니니깐. 꿈은 크게 꾸고 작고 빠르게 행동하자. 모든 일이 다시작은 미약하지만 끝은 창대하지 않는가. 그 거대한 비전을 상상하며 가능한 빨리 실패를 해보는 것이다. 한번 성공하면 계속 성공시킬 수 있다고 믿고 있다. 페오펫의 첫 성공을 통해 우주의 커다란 흔적을 남길 수 있는 여정의 계기가 되었으면 한다.#페오펫 #peopet #투자유치 #IR #자금조달 #자금유치 #스타트업 #생존기 #경험공유
조회수 985

Fuck You Startup World!

** 본 글은 shem의 미디엄글 'Fuck You Startup World'을 번역/편집했습니다.어제 미디엄 베스트 글 중에 내 눈길을 끈 제목의 글을 발견했다. 'Fuck You Startup World.' 이 얼마나 자극적이고 직설적인 제목인가. 안 열어 볼수가 없는 글 제목이다. 이건 그냥 농담반 진담반으로 스타트업에 미친 사람들이 얼마나 별종들인지를 자조적으로 까는 내용의 글이다. (물론 진짜 까는건 아니고 어디까지나 재미로) 내용이 재미있어서 소개한다.참고로, 글에서 계속 나오는 What the fuck...  어쩌고의 어감을 가장 잘 살릴 한국어 표현에 뭐가 있을까 고심하다가 다음의 단어로 선택했다. (개를 사랑하는 사람으로서 별로 좋아하는 표현은 아니지만...)이런 개소리좀 그만!내가 뭘 어쨌다고 맨날 나만가지고 ㅈㄹ이야!!!맨날 아침에 30분씩 TechCrunch, TNW, Wired, Gizmodo, Mashable, The Verge and ProductHunt 읽어보면서 뭔가 내가 뒤쳐지고 있지 않는다는 개소리좀 그만하자.이런 요상한 대화좀 그만하자. "오 싯! 스냅챗 어제 새로나온 기능 봤냐?" "이런 젠장, 인스타 이거 완전 스냅챗 배꼈네?" "어제 주커버그 라이브 봤어?" "오마이갓! 엘론머스크 트윗한거 죽이는데?" "헐, 우버가 넥스트 펀딩에 또 성공했데" 이런 개소리좀 그만해. 너네 빼고는 아무도 신경 안쓰거든.너의 크레이지한 업무시간 자랑질좀 하지마. 아무도 엘론머스크처럼 주 100시간 일하고, 메리사 마이어가 주 130시간 일하면서 모유수유하는거에 놀라거나 동기부여 받지 않거든. 그리고 넌 엘론머스크나 메리사 마이어가 아니거든? 너가 우주에 갈것도 아니고 스페이스 X 만들것도 아니면 니 ㅅㅂ맥북은 저리 집어치우고 니 애들이랑 좀 놀아줘.너네 그 이상한 술문화좀 어떻게좀 해봐. 맨날 상상력 넘치는 마일스톤 만들어놓고 뭐만하면 '오늘도 우리 마일스톤 달성했으니 축배 들어야지!' 하면서 사무실에서 위스키, 맥주, 피자 같은것좀 먹지마라. 모든 회사가 다 사무실에 바 차리고 글랜리벳 17년산 갖다놔야 쿨해보이는거 아니거든.너 그 요상한 먹는 습관좀 그만할래? 왜 넌 모든게 항상 극단적이니? 왜 맨날 "나는 내 모든 순간을 최적화시켜야해!!" 하면서 피자랑 스낵을 거의 마시듯이 먹어대는가 하면 (스타트업 하는 사람들이 맨날 시간 아낀다고 밥 빨리 먹는거 비꼬는듯), 또 어떤때는 "난 이거 소이렌트만 마시면서 다이어트 중이야" 라고 하질 않나...펀딩 받을때 마다 축하+자랑질한다고 파티좀 그만 열어대라. 너 그거 아니? 너 그럴때 마다 니 무덤 조금씩 더 깊게 파고 있는거라는거? 너가 진정 축하해야할 때는 (펀딩 받았을 때가 아니라) 니가 니 회사의 일부분을 팔지 않고서도 사업 잘 굴릴 수 있게 됐을 때거든!! (개인적으로 가장 맘에드는 부분임 ㅋㅋㅋ)너 오픈형 사무실 만든다고 그만좀 깝쳐댈래? 스탠딩형 책상도 짜증나고, 짐 볼 갖다논것도 짜증나고, 누워서 일하는 데스크도 짜증나고, 심지어 런닝머신에다가 책상 매달아논것도 짜증나거든? 그런다고 도리토스 맨날 우적우적 씹어대던게 빠질것 같어? 제발 좀 평범한 책상에 평범한 사무실 만들자.일주일에 책 한권씩 읽는다는 개소리좀 그만해 제발. 책 그렇게 빨리 독파할 수 있는사람 없거든? 다시 말해줄까? 이 지구상에 그 누구도 책 한권을 그렇게 빨리 읽을 수 있는 사람은 존재하지 않아! (실제로 읽지도 않으면서 읽은 척 하는거 비꼬는 중임) 어디서 맨날 남이 단 코멘트 갖은거 읽어가지고 너가 읽은 척 하는거 내가 모를줄 아니? 아! 그리고 말콤 글래드웰이나 린 스타트업 같은거 그만좀 인용해. 솔까말 그거 안 읽어본 사람 누가 있냐?요즘 뭐만하면 창업한다고 찌끄리는거 이제 좀 지겹거든? 특히 대학 갓 졸업해서 창업가라고 설치는것들! 내가 솔직히 말해줄까? 너 그거 "창업가" 아니고 그냥 "실업자" 라고 말해야 하는거거든! 아, 그리고 맨날 뭐만 하면 "나 이거 부트스트랩 중임" "지금은 차고에 사무실 차려놨음" "위워크에 (1평도 안되는) 사무실 차렸음!" 이런 개소리좀 그만하자. 내가 이렇게 말하면 꼭 이러는 애 있더라. "뭐? 그래도 난 사무실에 우리 개도 데려갈 수 있거든?"너 그 '생산성병' 걸린것 좀 어떻게 해봐라... 난 아침에 6시에 일어나거든? (이 정도면 제법 일찍 일어나는 거라는 뜻) 근데 넌 맨날 "난 새벽 4시에 일아나서 30분 명상하고 30분 분기별/연간 목표 점검하고 소이렌트 드링크로 아침을 대신하면서 동시에 리텐션 차트를 점검하고..." 이런 개소리 하면서 내가 마치 게으른 사람인것 마냥 얘기하더라? 아, 그리고 너 맨날 노이즈 캔슬링 해드폰쓰고, 뽀모도로 타이머 (25분 집중, 5분간 휴식의 4 사이클을 알람으로 알려주는 타이머)니 빽빽한 할일목록, 각종 생산성 앱, 노트, 포스트잇 노트 뭐 이런거 주루룩 나열해대는거 아 진짜.. 멘붕이다!!!너 맨날 TV보는거는 시간낭비고 시대에 뒤떨어 지는거라고 욕하는거, 그러면서 정작 너는 (내가 TV보는 시간에) 넷플릭스에서 내가 보는 TV쇼 죄다 완주하고 있는거, 그거 진짜 짜증난다. (원문에 Netflix and chill 이라고 표현되어 있는데 그 넷플릭스에서 영화한편 때리고 애인이랑 붕가붕가하는 뜻으로 쓴건지 아니면 진짜로 그냥 넷플릭스 보면서 소파에 늘어지고 있는거 표현한건지는 솔직히 모르겠음...) 너 맨날 Mr. Robot이 딱 니 상황 같다고 얘기해 대는것도 완전 웃끼거든?? (Mr. Robot은 미드 제목입니다.) 너랑 미스터 로봇이랑 다른점은 넌 그저 진짜 로봇같은 놈이라는거지. 너 또 맨날 HBO의 실리콘 밸리 미드 보면서 의문 갖지도 않고 맹목적으로 "ㅋㅋㅋㅋ 저거 진짜 현실적인데? 잘 묘사했는데?" 그러잖아? 그러면서 정작 너는 맨날 내가 뭐만 말하면 나한테 "그게 왜 그렇다고 생각하는데? 이유가 뭔데?" 그러는거 솔직히 짜증나거든?너 채용할때 마다 그 요상스러운 인터뷰 질문들좀 그만해주라 제발. 세상에 누가 그딴 질문들을 할까? 나 지금까지 C배열 비트로 바꾼다던지, whiteboard에 컴파일 에러 뜬다던지 한 적 없었고, 자바에 해쉬셋 필요하면 그냥 해쉬셋 쓰고말지 그걸 무슨 complexity 코드 블락 어쩌고 끙끙대고 있을 필요 없거든? 그냥 다른 EC2 인스턴스 쓰고말지. (솔직히 이 부분은 내가 개발자가 아니라서 잘 이해는 안감..ㅋㅋㅋ)제발 각종 용어들이랑 뭐만하면 줄임말 써대는것좀 그만해줘. DAU’s, WAU’s, MAU’s, ARPU, LTV, CPM, CPI, CPC, PPC, CPA, CTR, SEO, ASO, YoY, WoW... 아 진짜 쉬팍 너무한거 아냐?? 세상에 누가 저 많은 지표들 일일이 매일 체크하고 있냐? 아, 그리고 제발 그놈의 네트워킹 이벤트!!!! 무슨놈의 네트워킹 이벤트에만 가면 모두가 다 어떤 어떤거의 CEO고 나는 뭐 이 시장을 디스럽트할 어쩌고 MVP를 만들고 있고, 일단 만들기만 하면 하키 스틱같은 J커브 그리는건 당연 빠사고...Tranceparency trend니 post mertem (사후 분석 툴 같은데 잘 모르겠음..)이니 5 whys니 이런거 지겹거든? 그리고 맨날 A/B 테스트 해댄다고 사이트 바꿔대는데, 무슨 내가 리프레시 할때마다 피처가 막 휙휙 바뀌냐? 난 그저 접속할때 마다 같은 버전의 사이트가 보고싶을 뿐인데 그만좀 바꿔대라.너네 맨날 파티나 뭔가 크레이지한 오프라인 이벤트 한다고 돈 펑펑 써대는거 그만좀 할래? 그리고 아무도 사용하지도 않는 탁구테이블이며 뮤직룸이니, 수면실, 명상실, 스트레스프리존, 필라테스룸이니... 이딴거에 돈낭비좀 그만하지 그래? 아, 그리고 뭔가 있어보인다고 요상스런 인센티브 플랜이나 휴가 무한대로 준다고 자랑해 대는거 솔직히 다 ㅂㅅ같거든? (아무리 휴가 무한대라도) 실제로 너네 직원들 휴가도 못가고 죽어나는거 내가 모를것 같니?아, 그리고 다른거 진짜 다 집어 치우고라도 이 말은 좀 꼭 하고 싶다.'너도 나처럼만 하면 되'라는 개소리좀 그만해라!!!번역은 여기까지 인데, 솔직히 뭐 공감가는 내용도 있고 아닌것도 있고 한데, 그냥 농담반으로 작성된 글인 듯 하니 너무 진지빨고 달려들지는 말자 ㅎㅎㅎ글쓴이는 스팀헌트 (Steemhunt) 라는 스팀 블록체인 기반 제품 큐레이션 플랫폼의 Co-founder 및 디자이너 입니다. 비즈니스를 전공하고 대기업에서 기획자로 일하다가 스타트업을 창업하고 본업을 디자이너로 전향하게 되는 과정에서 경험한 다양한 고군분투기를 연재하고 있습니다.현재 운영중인 스팀헌트 (Steemhunt)는 전 세계 2,500개가 넘는 블록체인 기반 앱들 중에서 Top 10에 들어갈 정도로 전 세계 150개국 이상의 많은 유저들을 보유한 글로벌 디앱 (DApp - Decentralised Application) 입니다 (출처 - https://www.stateofthedapps.com/rankings).스팀헌트 웹사이트 바로가기
조회수 1675

60원으로 빈집털이를 예방하는 방법

안녕하세요? 요즘 직장 근처에서 자취하시는 분들이 많습니다. 이 글을 읽고 계시는 자취생분들은 혹시 빈집털이 범행 수법을 알고 계시나요?불 꺼진 집 = 빈집털이 범행대상보통 밤늦게까지 불이 꺼져있는 집이나 여행을 가서 불이 며칠간 켜지지 않는 집이 범죄의 대상이 된다고합니다.서울 광진구 주택가 빈집털이범 검거 뉴스 - 출처: 연합뉴스아파트에 비해 저희가 자취하는 주택,빌라는 보안이 특히 더 취약한데요. 가끔식 치킨 배달원이 저희집 빌라 출입번호를 알고 누를 때는 조금 섬뜩하기도 합니다.범죄 예방법불이 켜져 있는 집은 범죄 대상에서 제외될 확률이 높다.사실 24시간 불을 켜두면 빈집털이를 예방할 수 있습니다. 집에 불이 켜져있거니와 전기 소모로 계량기가 돌아가서 집에 사람이 있다고 판단을 하니까요.그러나 항상 불을 켜둘 수 없습니다. 전기세가 낭비될 뿐만 아니라 형광등을 자주 갈아야 하니 귀찮습니다. 또한 지금 집에 몇 십년 살것도 아니라서 비싼 CCTV를 달거나 방범 서비스에 가입하기도 좀 그렇습니다.스위처: 스마트홈을 만드는 가장 저렴하고 쉬운 방법누구나 쉽게 설치 할 수 있는 스마트홈 제품 스위처하루 60원으로 여러분의 자취방을 편안한 보금자리로 바꿔보세요.스위처는 원하는 시간에 맞춰 집안 불을 켜고 끄는 스마트홈 제품입니다.설치가 매우 쉬워요. 위에 사진처럼 스위치 위에 부착하기만 하면 끝입니다. 이사갈 때 떼어 가시면 되구요.스위처 전용 어플리케이션 모습전용 앱으로 타이머 설정하시면 집에 내가 없어도 스위처가 스스로 불을 켜고 끈답니다. 또한, 리모컨처럼 사용할 수 있어서 불을 멀리서 켜고 끌 수 있어요. 스위처는 멀어질수록 빛납니다.돈 내지 말고 무료로 써보세요.스위처는 무료배송, 무료사용, 무료반납하루 60원을 내기 전에 무료로 먼저 써보세요. 스위처는 한 달 무료 사용 서비스를 제공합니다. 아무리 저렴해도 나에게 필요한 제품인지 직접 사용해 보고 판단해 보세요. 택배비 조차 무료입니다.하루 60원, 스위처로 여러분의 자취방을 안전하게 바꿔보세요.범죄는 예방이 최선입니다. 집에 도둑이 들고나면 물질적 손해뿐만 아니라 정신적인 상처도 정말 큽니다. 여러분의 집을 불안한 공간으로 만들지 마세요. 스위처라면 저렴하고 간단하게 내 자취방을 안전한 보금자리로 만들 수 있습니다.스위처 신청하러가기(링크 클릭)관련 자료스위처 인스타그램 사용 후기스위처 네이버 블로그 사용 후기“망원경 들고 불꺼진 집 노렸다”…빈집털이 2인조 구속‘초저녁 불 꺼진 집’ 노려 빈집털이 60회…40대 구속#스위처 #Switcher #서비스소개

기업문화 엿볼 때, 더팀스

로그인

/