스토리 홈

인터뷰

피드

뉴스

조회수 1432

비트윈의 스티커 시스템 구현 이야기 - VCNC Engineering Blog

 비트윈에는 커플들이 서로에게 감정을 더욱 잘 표현할 수 있도록 스티커를 전송할 수 있는 기능이 있습니다. 이를 위해 스티커 스토어에서 다양한 종류의 스티커를 제공하고 있으며 사용자들은 구매한 스티커를 메시지의 첨부파일 형태로 전송을 할 수 있습니다. 저희가 스티커 시스템을 구현하면서 맞딱드린 문제와 이를 해결한 방법, 그리고 프로젝트를 진행하면서 배운 것들에 대해 소개해 보고자 합니다.스티커 시스템 아키텍처비트윈에서 스티커 기능을 제공하기 위해 다양한 구성 요소들이 있습니다. 전체적인 구성은 다음과 같습니다.비트윈 서버: 이전에 소개드렸었던 비트윈의 서버입니다. 비트윈의 채팅, 사진, 기념일 공유 등 제품내의 핵심이 되는 기능을 위해 운영됩니다. 스티커 스토어에서 구매한 스티커는 비트윈 서버를 통해 상대방에게 전송할 수 있습니다.스티커 스토어 서버: 스티커를 구매할 수 있는 스토어를 서비스합니다. 스티커 스토어는 웹페이지로 작성되어 있고 아이폰, 안드로이드 클라이언트와 유기적으로 연동되어 구매 요청 등을 처리합니다. 처음에는 Python과 Flask를 이용하여 구현하려 하였으나 결국엔 서버 개발자들이 좀 더 익숙한 자바로 구현하기로 결정하였습니다. Jetty와 Jersey를 사용하였고, HTML을 랜더링하기 위한 템플릿 엔진으로는 Closure Template을 이용하였습니다. ORM으로는 Hibernate/JPA, 클라이언트와 웹페이지간 연동을 위해서 Cordova를 이용하였습니다. EC2에서 운영하고 있으며 데이터베이스로는 RDS에서 제공하는 MySQL을 사용합니다. 이미 존재하는 솔루션들을 잘 활용하여 최대한 빨리 개발 할 수 있도록 노력을 기울였습니다.스티커 다운로드 서버: 스티커는 비트윈에서 정의한 특수한 포맷의 파일 형태로 제공됩니다. 기본적으로 수 많은 사용자가 같은 스티커 파일을 다운로드 받습니다. 따라서 AWS에서 제공하는 CDN인 CloudFront을 이용하며, 실제 스티커 파일들은 S3에서 호스팅합니다. 그런데 스티커 파일들은 디바이스의 해상도(DPI)에 따라 최적화된 파일들을 내려줘야하는 이슈가 있었습니다. 이를 위해 CloudFront와 S3사이의 파일 전송에 GAE에서 운영중인 간단한 어플리케이션이 관여합니다. 이에 대해서는 뒷편에서 좀 더 자세히 설명하도록 하겠습니다.구현상 문제들과 해결 방법들적정 기술에 대해 고민하다스티커 스토어 서버를 처음 설계할때 Flask와 SQLAlchemy를 이용하여 구현하고자 하였습니다. 개발팀 내부적으로 웹서버를 만들때 앞으로 Python과 Flask를 이용해야겠다는 생각이 있었기 때문이며, 일반적으로 Java보다는 Python으로 짜는 것이 개발 효율이 더 좋다는 것은 잘 알려진 사실이기도 합니다. 하지만 Java에 익숙한 서버 개발자들이 Python의 일반적인 스타일에 익숙하지 않아 Python다운 코드를 짜기 어려웠고, 오히려 개발하는데 비용이 더 많이 들어갔습니다. 그래서 개발 중에 다시 웹 서버는 자바로 짜게 되었고, 여러가지 스크립트들만 Python으로 짜고 있습니다. 실제 개발에 있어서 적절한 기술의 선택은 실제 프로젝트에 참여하는 개발자들의 능력에 따라 달라져야한다는 것을 알게되었습니다.스티커 파일 용량과 변환 시간을 고려하다사용자는 스티커 스토어에서 여러개의 스티커가 하나로 묶인 스티커 묶음을 구매하게 됩니다. 구매 완료시 여러개의 스티커가 하나의 파일로 압축되어 있는 zip파일을 다운로드 받게 됩니다. zip파일내의 각 스티커 파일에는 스티커를 재생하기 위한 스티커의 이미지 프레임들과 메타데이터에 대한 정보들이 담겨 있습니다. 메타데이터는 Thrift를 이용하여 정의하였습니다.스티커 zip파일 안에는 여러개의 스티커 파일이 들어가 있으며, 스티커 파일은 다양한 정보를 포함합니다카카오톡의 스티커의 경우 애니메이션이 있는 것은 배경이 불투명하고 배경이 투명한 경우에는 애니메이션이 없습니다. 하지만 비트윈 스티커는 배경이 투명하고 고해상도의 애니메이션을 보여줄 수 있어야 했습니다. 배경이 투명한 여러 장의 고해상도 이미지를 움직이게 만드는 것은 비교적 어려운 점이 많습니다. 여러 프레임의 이미지들의 배경을 투명하게 하기 위해 PNG를 사용하면 JPEG에 비해 스티커 파일의 크기가 너무 커집니다. 파일 크기가 너무 커지면 당시 3G 환경에서 다운로드가 너무 오래 걸려 사용성이 크게 떨어지기 때문에 무작정 PNG를 사용할 수는 없었습니다. 이에 대한 해결책으로 투명 기능을 제공하면서도 파일 크기도 비교적 작은 WebP를 이용하였습니다. WebP는 구글이 공개한 이미지 포맷으로 화질 저하를 최소화 하면서도 이미지 파일 크기가 작다는 장점이 있습니다. 각 클라이언트에서 스티커를 다운 받을때는 WebP로 다운 받지만, 다운 받은 이후에는 이미지 로딩 속도를 위해 로컬에 PNG로 변환한 스티커 프레임들을 캐싱합니다.그런데 출시 된지 오래된 안드로이드나 iPhone 3Gs와 같이 CPU성능이 좋지 않은 단말에서 WebP 디코딩이 지나치게 오래 걸리는 문제가 있었습니다. 이런 단말들은 공통적으로 해상도가 낮은 디바이스였고, 이 경우에는 특별히 PNG로 스티커 파일을 만들어 내려줬습니다. 이미지의 해상도가 낮기 때문에 파일 크기가 크지 않았고, 다운로드 속도 문제가 없었기 때문입니다.좀 더 나은 주소 포맷을 위해 GAE를 활용하다기본적으로 스티커는 여러 사용자가 같은 스티커 파일을 다운받아 사용하기 때문에 CDN을 이용하여 배포하는 것이 좋습니다. CDN을 이용하면 스티커 파일이 전 세계 곳곳에 있는 엣지 서버에 캐싱되어 사용자들이 가장 최적의 경로로 파일을 다운로드 받을 수 있습니다. 그래서 AWS의 S3와 CloudFront를 사용하여 스티커 파일을 배포하려고 했습니다. 또한, 여러 해상도의 디바이스에서 최적의 스티커를 보여줘야 했습니다. 이 때문에 다양한 해상도로 만들어진 스티커 파일들을 S3에 올려야 했는데 클라이어트에서 스티커 파일을 다운로드시 주소 포맷을 어떻게 가져가야 할지가 어려웠습니다. S3에 올리는 경우 파일와 디렉터리 구조 형태로 저장되기 때문에 아래와 같은 방법으로 저장이 가능합니다.http://dl.sticker.vcnc.co.kr/[dpi_of_sticker]/[sticker_id].sticker하지만, 이렇게 주소를 가져가는 경우 클라이언트가 자신의 해상도에 맞는 적절한 스티커의 해상도를 계산하여 요청해야 합니다. 이것은 클라이언트에서 서버에서 제공하는 스티커 해상도 리스트를 알고 있어야 한다는 의미이며, 이러한 정보들은 최대한 클라이언트에 가려 놓는 것이 유지보수에 좋습니다. 클라이언트는 그냥 자신의 디스플레이 해상도를 전달하기만 하고, 서버에서 적절히 계산하여 알맞은 해상도의 스티커 파일을 내려주는 것이 가장 좋습니다. 이를 위해 스티커 다운로드 URL을 아래와 같은 형태로 디자인하고자 하였습니다.http://dl.sticker.vcnc.co.kr/[sticker_id].sticker?density=[dpi_of_device]하지만 S3와 CloudFront 조합으로만 위와 같은 URL 제공은 불가능하며 따로 다운로드 서버를 운영해야 합니다. 그렇다고 EC2에 따로 서버를 운영하는 것은 안정적인 서비스 운영을 위해 신경써야할 포인트들이 늘어나는 것이어서 부담이 너무 컸습니다. 그래서, 아래와 같이 GAE를 사용하기로 하였습니다.GAE는 구글에서 일종의 클라우드 서비스(PaaS)로 구글 인프라에서 웹 어플리케이션을 실행시켜 줍니다. GAE에 클라이언트에서 요청한 URL을 적절한 S3 URL로 변환해주는 어플리케이션을 만들어 올렸습니다. 일종의 Rewrite Engine 역할을 하는 것입니다. 서비스의 안정성은 GAE가 보장해주고, S3와 CloudFront의 안정성은 AWS에서 보장해주기 때문에 크게 신경쓰지 않아도 장애 없는 서비스 운영이 가능합니다. 또한 CloudFront에서 스티커 파일을 최대한 캐싱 하며 따라서 GAE를 통해 새로 요청을 하는 경우는 거의 없기 때문에 GAE 사용 비용은 거의 발생하지 않습니다. GAE에는 클라이언트에서 보내주는 해상도를 보고 적당한 해상도의 스티커 파일을 내려주는 아주 간단한 어플리케이션만 작성하면 되기 때문에 개발 비용도 거의 들지 않았습니다.토큰을 이용해 보안 문제를 해결하다실제 스티커를 구매한 사용자만 스티커를 사용할 수 있어야 합니다. 스티커 토큰을 이용해 실제 구매한 사용자만 스티커를 전송할 수 있도록 구현하였습니다. 사용자가 스티커 스토어에서 스티커를 구매하게 되면 각 스티커에 대한 토큰을 얻을 수 있습니다. 스티커 토큰은 다음과 같이 구성됩니다.토큰 버전, 스티커 아이디, 사용자 아이디, 유효기간, 서버의 서명서버의 서명은 앞의 네 가지 정보를 바탕으로 만들어지며 서버의 서명과 서명을 만드는 비밀키는 충분히 길어서 실제 비밀키를 알지 못하면 서명을 위조할 수 없습니다. 사용자가 자신이 가지고 있는 스티커 토큰과 그에 해당하는 스티커를 비트윈 서버로 보내게 되면, 비트윈 서버에서는 서명이 유효한지 아닌지를 검사합니다. 서명이 유효하다면 스티커를 전송이 성공하며, 만약 토큰이 유효하지 않다면 스티커의 전송을 허가하지 않습니다.못다 한 이야기비트윈 개발팀에게 스티커 기능은 개발하면서 우여곡절이 참 많았던 프로젝트 중에 하나 입니다. 여러 가지 시도를 하면서 실패도 많이 했었고 덕분에 배운 것도 참 많았습니다. 기술적으로 크게 틀리지 않다면, 빠른 개발을 위해서 가장 익숙한 것으로 개발하는 것이 가장 좋은 선택이라는 알게 되어 스티커 스토어를 Python 대신 Java로 구현하게 되었습니다. 현재 비트윈 개발팀에서 일부 웹사이트와 스크립트 작성 용도로 Python을 사용하고 있지만 Python을 잘하는 개발자가 있다면 다양한 프로젝트들를 Python으로 진행할 수 있다고 생각합니다. 팀내에 경험을 공유할 수 있는 사람이 있다면 피드백을 통해 좋은 코드를 빠른 시간안에 짤 수 있고 뛰어난 개발자는 언어와 상관없이 컴퓨터에 대한 깊이 있는 지식을 가지고 있을 것이기 때문입니다.네 그렇습니다. 결론은 Python 개발자를 모신다는 것입니다.
조회수 659

[모바일 앱분석] Step3. CONVERSION (성과 분석)

모바일 앱 분석의 마지막 3단계 Conversion (성과분석) 에 대해 알아보겠습니다.[모바일 앱분석] Step1. MARKETING (마케팅분석)[모바일 앱분석] Step2. EXPERIENCE (사용자경험분석)마케팅 활동으로 아무리 많은 사용자를 확보하고, 좋은 경험을 제공해도 전환 최적화가 되어 있지 않다면, 투자 만큼의 결과(Outcomes)를 얻지 못해 지속적인 앱 운영의 어려움을 느끼게 됩니다. Conversion 단계의 분석 핵심은 사용자의 전환 트렌드를 이해하고, 전환 효율을 떨어뜨리는 문제점을 도출하여 더 많은 전환을 획득할 수 있도록 개선하는 데 있습니다. 앱 비즈니스 마다 목표 값이 다르겠지만, 이번 설명에서는 커머스 앱 기준으로 설명했습니다.# 전환 트렌드 이해먼저 사용자의 주문이 집중되는 시점(시간/요일/계절 등)을 인지하는 게 중요합니다.  주문이 집중된다는 건 그만큼 구매 욕구가 증가하는 시점으로 해석할 수 있기 때문에, 해당 시간을 활용한 이벤트로 높은 성과를 기대하거나 반대로 주문에 영향을 줄 수 있는 앱 업데이트, 서버 점검 등은 해당 시간을 피해서 작업하는 것이 좋습니다.데이터를 볼 때는 매크로 컨버전(거시적 전환) 지표가 중요하지만, 필히 마이크로 컨버전(미시적 전환)도 함께 봐야 합니다.  많은 주문을 얻기 위해선 당연하게도 ‘장바구니담기’, ‘바로구매시도’ 등의 전환이 많이 발생해야 하며, 주문까지의 연결율이 높아야 하기 때문에 이런 상황을 파악할 수 있는 마이크로 컨버젼 지표에 대한 관리가 중요합니다.( 와이즈트래커 > 커머스 > 주문/매출액 리포트 )# 타겟별 선호 상품 파악커머스 업계에서 가장 뜨거운 기술은 바로 개인화(personalization)입니다. 개인화의 목적은 범용적 컨텐츠 제공이 아닌 나만을 위한 컨텐츠를 제공함으로써 구매 확률을 높이고자 함입니다. 이 기술의 근간은 타겟팅이라고 볼 수 있습니다.저에게 원피스, 브라우스를 수백번 보여줘도 구매할 확률은 0%이겠지만, 시계, 운동화 등의 관심 상품을 제시한다면 앞선 상품보다 구매 확률은 크게 증가할 것입니다. 이처럼, 상품 구매 데이터를 성별, 연령대, 직업 등의 사용자 정보를 다차원으로 조합 후 세분화하면 타겟이 선호하는 상품이 무엇인지 알 수 있으며, 이를 바탕으로 상품 구매 의사가 높은 최적의 타겟을 설정하고 마케팅 전략을 수립한다면 매스 마케팅과는 차원이 다른 ROI를 경험할 수 있습니다.( 와이즈트래커 > 커머스 > 상품별 주문/매출에서 다차원 세그먼트 적용 후 리포트 ) # 전환 시나리오 분석사용자가 주문(전화)을 하기 위해 거쳐야 하는 일련의 프로세스를 전환 시나리오라고 합니다. 전환 시나리오는 전환 단계별 통과율/이탈률 데이터 제공으로, 전환을 방해하는 문제 화면을 도출하여 개선의 힌트를 얻을 수 있는 리포트입니다.아래 예시를 보면 사용자가 주문을 하기 위해 1) 상품 상세 > 2) 장바구니 > 3) 주문정보 입력 > 4)주문완료, 총 4단계의 스텝을 밟게 되는데요. ‘상품 상세’에서 ‘장바구니’로의 이탈률(92%)은 이해할 수 있습니다. 상품 조회 자체를 목적으로 온 사용자가 많기 때문입니다. 그러나 ‘주문정보 입력’까지 온 사용자는 구매의사가 매우 높은 사용자로, 81%의 높은 이탈률은 심각한 문제입니다.이를 통해 ‘주문정보 입력’의 통과율을 높이기 위한 폼 양식 리뉴얼, 결제 방식의 개선 등의 최적화 작업을 한다면 전체적인 주문율 향상을 기대할 수 있습니다(와이즈트래커 >  컨텐츠   > 화면이동경로 분석 리포트)앱 분석의 단계별 접근방법에 대해 살펴봤는데요, 모든 앱에는 개선이 필요한 부분이 존재합니다. 데이터는 개선의 방향을 알려주고, 실행(Action)은 성과 향상으로 답할 것입니다.* WISETRACKER는 모바일 광고 성과 측정부터 In-app 이용자/컨텐츠 분석, 푸시메시지 최적화까지 지원하는 모바일 통합 분석/타겟팅 솔루션입니다. 와이즈트래커 솔루션의 무료체험을 원하실 경우 여기를 클릭해주세요.* WISETRACKER가 제공하는 무료 데이터 분석 컨설팅를 원하신다면 여기를 클릭해주세요.#와이즈트래커 #데이터분석 #성과분석 #마케팅 #마케터 #인사이트 
조회수 1248

스타트업이 성공하는 1가지 이유?

(출처: MBC 무한도전 중에서)한창 스타트업의 길을 걷고 있는-ing형의 창업가 나부랭이가감히 이런 글을 남긴다는게아이러니하지만....(오지랖이 넓다 못해 참견쟁이인 필자 -.,-)간혹 여러 멘토님들이 지적하는스타트업이이러면 망한다, 이게 문제다 하는 글을 접하며과연 그 주장에 대한 근거에 대해 의문점이 생겼다.물론 다 맞는 이야기들이고매우 교과서적인 이야기들이다.뭔가 부족했으니까 망했겠지,뭔가 준비안되서 그랬겠지,뭔가 선택을 잘 못 했겠지.....벌써 주위에 여러 대표님들이자연인 혹은 다시 직장인으로 회귀하고 있다.(물론 또 한 번의 힘을 쥐어짜는 분도 계시고...)실패한 창업자에게 이유를 대는 것은 매우 쉽다.인력, 능력, 자금, 트렌드, 고객, 마케팅 등등이미 실패한 입장에서는 무얼 갖다대든다 맞는 이야기 같거든.역으로 물어보고 싶다.그럼 성공한 스타트업은이 모든 원인(조건)들을다 갖추었기 때문에 시장에서 성공하였는가.적어도 필자가 아는 범위에서는아.니.다.나름 잘 나가고 있다는스타트업 기업의 대표들도항상매출, 자금 수혈, 인력 부족,시장 트랜드의 변화 등에 대해고민하고 부족함을 호소하고 있다.(출처: KBS 1박 2일 중에서)1. 대표가 회사에 없고, 밖으로 나돌아서 망했다고?-> 사업에 따라서, 시기에 따라서회사안보다 밖에서 비지니스가 더 잘 이루어질 수 있다.2. 적절한 인력을 채용 못해서 망했다고?-> 대한민국의 중소기업 더 나아가서 중견기업까지모두 인력채용에 대해 매칭의 어려움과 투자대비 생산성에문제를 가지고 있다.(공무원과 대기업에 몰리는 현상이 괜히 있는게 아니다.)3. 고객의 니즈를 제대로 파악 못 해서 망했다고?-> 시장의 흐름은 빠르게 바뀐다. 거기다가 경쟁업체가이제는 국내만아니라 글로벌이다.일일이 다 파악하는데만 시간이 얼마나 소요되는가.그리고 고객의 취향을 저격해도, 곧 변덕을 부리기도 한다.물론 빠른 대처, 임기응변이 필요한건 다 안다.그래. 말은 쉽지.그거 제품/서비스에 반영하는데 들어가는 돈과 시간, 인력은?나열하면 끝도 없다.우리 좀 더 솔직해지자.창업하다보면 망할 수도 있다.진짜 능력이 미천하여,관리를 못해서,예측을 못해서망하는 기업이 수두룩하다.창업자가 "신"이 아닌 이상 완벽할 수 없잖아.그런데 성공한 창업자는 뭐 다 갖춰서 성공한건 아니잖아.부족한 가운데서 성공한 것은 완벽해서가 아니라부족함을 능가하는 뭔가가 있어서라는 말이 더 맞는거다.자금이 부족해서 힘든 스타트업은고객이든, 투자자든간에 그들에게 인정받을 그 때까지끝까지 동행해 준 동료(팀)으로 극복하기도 하는거고제품이 지금 당장 고객 니즈에 부합하지 않았다가시간이 지나서 고객 니즈에 맞아 떨어지는 타이밍이시기적으로 맞아 떨어져 성공하는 경우도 있고내세울게 창업자 하나 달랑 성실하다는거,적어도 사람하나는 꽤 괞찮아서거액의 투자받아 인력, 시설, 생산 등의 문제 해결하기도 하고(물론 이런 신데렐라 같은 경우는 매우 드문일이지만...;;)많은 성공스토리들에서 느낀 점은결국 완벽해서가 아니라"여기는 이쪽이 꽤 강하네"랄까?성공한 창업자에게는 참 관대하면서,실패한 창업자에게는 참 좁은 잣대로평가하는 글들은뭔가 그냥 구색 맞추기의 훈수거리가 아닐까?하다 못 해 동일한 기준으로 분석하고,피드백을 주는 것이 더 나은 복기가 아닐까?성공 가도를 달리고 있는 스타트업!사실 완전하게 성공한 스타트업이란 없다.최종적으로 Exit하지 않는 한,그냥 잘 진행하고 있는 스타트업 뿐이다.그리고 좀 잘 된 스타트업도 거기서 멈추지 않고,또 다른 도전과 영역에서형태만 다를 뿐이지 "스타트업" 인생은 계속 되는거니까.다만,필자는 소위말하는잘 나가는,본 받을만한 스타트업들은단 1가지가 다른 스타트업들보다다르다고 생각한다.그 한 가지가팀(멤버)든,자금이든,인적 네트워크든간에거기에 외부적인 타이밍과소위 "운"이라는 요인도절묘하게 맞아 떨어질때사업에 큰 변화와 목표 달성에한 발 더 앞서나가는게 아닐까.(출처: 구글, 노력한 사람과 안 한사람 중에서): 과연 잘 나가는 스타트업만이 문제해결을 위해 노력한걸까?모든 스타트업 기업들은다 그러한 차별성을 가지고 있다.그럼에도 실패하고, 폐업하고, 사라진다.막연하게 3년 버티면 잘될거라는 말따위에무작정 버티기하라는 식의 조언은창업자 입장에서는 근거없는 희망고문이다.우리가 발버둥을 치더라도확실한 한 가지는 붙잡고 발버둥쳐야하지 않을까?멘토들이 지적하는 부족한 부분들을무시하라는게 아니다.맞는 말들이고, 최대한 보완해야할 문제들이다.실패의 요인들을 최소화해야살아남을 가능성이 더 늘어나는 것도 사실이다.그렇다고,그거에 너무 몰입되어그나마 가지고 있는 장점을그냥 평범한 수준으로끌어내리는 우(愚)를 범하지 말자.누구에게든자신있게 자랑할 수 있는최고의 무기는 하나 꽉 잡고전쟁에 임해야 그나마 희망이라도 가질 수 있잖아.너무 팔랑귀가 되서이것저것 다 손대고,다 갈아엎고, 다 혁신이라는 이름으로다 바꾸어버리면...어느새이도저도 아닌 잡탕스런 회사가 되버린다.필자도 항상 두렵다.우리 회사라고 특별히 다른게 아니라언제든지 리스크는 존재하니까.최상의 선택을 하는 것보다,최악의 선택을 피하는 것이 더 낫다는 주의로좀 보수적이고, 조심스럽게회사를 운영하고 있다.필자를 멘토링해주시는많은 고마운 분들 중에서는"좀 더딘거 같아요. 속도를 더 내면 좋겠어요""지금 타이밍에 몰아 붙여야해요"라는 주문으로 필자를 푸쉬하기도 한다.멘토분들의 조언은 항상 감사하다.(출처: 구글, 감사합니다.)부족한 창업자에게길을 제시해주고, 보다 나은 선택을 위해피드백을 주시는 분이 많을 수록창업자가 볼 수 있는 시각은 더 넓고 깊어지니까.필자 역시 더 속도내고 싶고,더 욕심내고 싶지만,하고 싶어도 그렇게 하지 못하는 경우가 많더라.인허가를 받기 위해 단계별로 준비할 것들이 있고,내 욕심과 별개로 정해져 있는 프로세스와 규정들이 있다.왜 미리 준비 안 했냐고 물으신다면,그 전에는 또 먼저 수행해야할우선순위 미션들을 클리어하고 있었다.스타트업을 하는 창업자들은나름 그 분야에서 전문가인 분들이 많다.그 쪽 업계에 생태와 프로세스에 대해 어찌보면,두루 널리 알고 있는 컨설턴트보다는 좁겠지만,깊게는 더 잘 알고 있다.누구나 특허 준비해야한다, 인허가 준비해야한다,인력은 어떤 사람을 채용해 놔야한다라는 식의공통적이고 광의적인 멘토링은 쉽다.정작 제품/서비스에 필수적으로 수반되는검증/인증/제작 프로세스/핵심 기술에 대하여제대로 컨설팅 해줄 수 있는 것은그 분야에 정통한 경력자라던가, 현직자겠지.(출처: 구글, 다이어트 트레이너 빌리부트 독설어록 중에서)요즘은 멘토들의 홍수 시대라고 생각한다.많은 창업 관련 멘토들로 인해,시행착오도 줄이고,알지 못 했던 분야를 간접경험하며,시간과 비용을 줄이고 있다.그러나 너무나 두리뭉실한,원론적이고 이론적인 멘토링들은오히려 시간과 비용을 늘리더라.모든 멘토링이 절대적이고 옳은 것은 아니다.각자 사업은 다 다른 것이다.설령 같은 업종이라하더라도,회사에 따라,창업자에 따라 다 다른 색깔을 가지고 있고그것이 스타트업의 특징이다.획일화시키는 순간 그것이 더 큰 위험이 될 것이다.직원들은 채용할 때는 이것저것  따져보고, 고민하면서멘토들을 만날 때는 아무 필터링없이 다 받아들이고 있는 건 아닐까?멘토들이라고 다 유능하고, 다 전문적이지 않다.그들의 멘토링은 특정 분야, 특정 사이트에 관해인사이트가 있는거다.그러니까아주 많은 멘토링을 만나봐야한다.그리고 항상 멘토들이 사업에 대해 심사하고 살펴보듯우리도 멘토들을 심사하고 살펴봐야 한다.어디 매칭 프로그램이나 강연가서두어시간 감동과 공감을 받고나서"와~ 좋은 강연 감사합니다."하고 명함 하나 달랑 던져주고 자기만족에하루 보람찼다고 자기위안하지 말자.적어도 공감되고 감명 받았다면,메일도 보내고, 질문도 던지고피드백이 적절한지도 판별해야한다.필자가 열을 올리며 글을 쓰는 가장 큰 이유는절친한 대표의 업종 변경에 대하여,얼토당토 않은 분석을 해 주는 멘토의 이야기를 듣고힘이 빠져있는 모습에...무슨 기준과 무슨 근거로그 대표를 평가하는지에 대해의문이 들었기 때문이다.적어도옆에서 지난 1년 넘게 지켜본필자의 입장에서는그는 준비된 창업을 해서빠르게 미션을 달성해 나가고 있었고,직원들도 꽤 잘 챙겨주고, 팀웍도 좋았고,나름 자체 자금도 준비했었다.업종변경은 엉뚱하게도 내부가 아니라외부적인 요인이었다.지금은 새로운 아이템으로준비중이며, 밤낮으로 고생하고 있다.멋지고, 부럽고,꼭 배워야할 친구다.(사실 동갑내기지만...내겐 선생과도 같다)이 글은힘든 시기를 겪고 있는 스타트업 창업자 동지들과설령 한 번 실패했더라도, 주눅들지 않는존경하는 대표들을 위해 남긴다.#클린그린 #스타트업 #초기창업 #창업자 #고민 #경험공유 #인사이트 #조언
조회수 555

직접 결정해야 하는 이유

당신은 진정 독립했는가?최근 고등래퍼2에 출연한 실력자 중에는 특히 고등학교를 자퇴한 친구들이 많았다. 자신에게 의미있는 길을 용기있게 선택하고, 스스로 사랑하는 일에 에너지를 집중하는 모습이 꽤 인상적이었다.주변에 나이가 마흔이어도 스스로 앞가림을 결정하지 못하는 사람이 있는가 하면, 갓 중학교를 졸업했어도 자신의 인생을 스스로 결정하는 사람이 있다.어른이 된다는 것나이가 들었다고 어른이 되는 건 아니다. 학력이 높은 것과도 상관없다. 어른이 된다는 것은 자기 인생의 주체가 된다는 것이고, 스스로 사고하고 행동하고 책임을 진다는 의미다. 어려서부터 다녀야 할 학원과 사귀어야 할 친구들까지 부모에 의해 결정되어버리는 요즘 아이들,.. 본인이 좋아하는 것과 무관하게 인생의 진로까지 프로그래밍된 아이들은 좋은 대학을 다니고 유창하게 외국어를 구사할 수 있을지는 모르지만, 정상적인 어른이 되기는 쉽지 않다. 스스로 결정하는 감각을 잃어버리기 때문이다.결정은 감각이다공부를 하는 이유우리가 공부를 하는 이유는 하나의 독립된 개체로서 스스로 판단할 수 있는 능력을 키우기 위해서다. 나를 둘러싼 사회를 이해하고, 다른 생각과 언어를 가진 사람과 소통하고, 호기심을 이끌어내고, 자신이 가진 역량을 찾아내고, 복잡한 상황을 이해하고, 맞닥뜨린 문제를 해결하고, 남들과 힘을 모으는 방법을 터득하고, 타인의 도움을 구하는 요령을 깨우치기 위함이다. 그리고 세상이 내 뜻대로 되지 않는 다는 것을 깨우치는 과정이다.한 인간이 사회 구성원으로 살아가기 위해서는 사회에서 내 몫을 해야 한다. 타인의 도움 없이는 그 누구도 살아갈 수 없기 때문이다. 나도 누군가 에게는 도움을 주는 타인이 되어야 한다.결정은 훈련해야 하는 기술부모들이 범하는 큰 잘못 중의 하나는 자식들을 대신하여 결정하는 것이다. 부모 입장에서는 잘못된 선택을 미리 제거함으로써 아이들이 그릇된 결정을 못하도록 하려는 부모의 의도가 있다고 하더라도, 하나부터 열까지 일일이 관여하고 개입하는 것은 아이들의 인생에 치명적일 수 있다. 아이들이 스스로 생각하는 능력을 잃어버리게 되기 때문이다.알에서 깨어나온 새가 깃털이 자라 날개를 펼수 있게되면 둥지밖으로 두려움을 이겨내고 뛰어내려 스스로 날개짓을 해야한다. 그래야 스스로 먹이를 구하고 독립된 개체로서 자연의 일부가 되는 것이다. 그렇게 세대가 흐르는 것이고, 인간도 마찬가지이다.큰 조직의 비애 : 결정할 수 없다는 것조직이 클 수록 의사결정 구조가 복잡하고, 거쳐야 할 단계가 많다. 실무자들의 일상을 단순하게 표현한다면, 준비하고, 보고하고, 결정을 가다리는 과정의 연속이다. 자신의 생각이 최종 의사 결정과 일치할 수 있을 확률이 매우 낮다. 만약에 같다고 하더라도, 실행 과정에서 변화될 가능성 역시 매우 높다. 큰 조직의 직원들의 숙명이다. 누군가의 결정에 익숙해져가는 것이다.상대적으로 좋은 대기업의 근무 환경과 높은 연봉의 이면에는 자신의 생각이나 감각을 세상에 테스트 해 볼 기회를 충분히 갖지 못하다는 단점이 있다. 특히나 상사와의 의사 결정 코드가 매우 상반될 경우에는 자신이 무엇을 위해 여기 있는지에 대한 자괴감이 들 수 밖에 없다. 대부분 능력자들이 회사를 나오는 이유이기도 하다.남아 있는 누군가가 수년, 십수년을 스스로 결정해보지 못한 채 부장이 되고 임원이 되더라도, 이제는 스스로 결정해야 하는 두려움이 남게 된다. 우리 주변에 결정 장애 부서장들의 단면들이다. 훈련되어 있지 않아서다.결정해보고, 실패해봐야 는다자리가 사람을 만든다는 말처럼, 결정 하는 자리에 가면 그 사람의 진정한 내공이 드러날 수 있다. 나이가 많고 경험이 많다고 좋은 결정을 하는 것은 아니다. 그것은 총체적인 감각이며, 우리가 성장하면서 키워야 하는 역량이다.결정이 누구에게나 힘든 이유는 번복하기 어렵다는 점과 기회비용이 발생한다는 것이다. 하지만 정말 대단한 능력은 올바른 결정을 하는 것이 아니라, 자신이 선택한 결정이 올바른 결과가 되도록 만들어가는 믿음과 일관성이다.철학없는 결정은 허무할 뿐이유있는 결정사실 누구나 결정은 할 수 있다. 책임만 스스로 감내한다면 누구든 결정을 내릴 수 있다. 다만, 철학이 없는 결정은 허무할 뿐이며, 일관성 없는 결정은 즉흥적으로 보일 뿐이다. 스스로의 주관과 이유가 뒷받침 되어야 나의 결정으로 인해 영향을 받을 그 누군가에게 당당할 수 있다.지금 당신 인생은스스로 결정한 결과인가?그런 의미에서진정으로 자립했다는 것은 스스로의 철학적 기준이 명확히 서 있다는 의미이며, 지금 자신의 인생이 당당하다는 뜻이다.자립하라!
조회수 1050

폭풍 속 브랜딩: 리브랜딩, 그 잔혹함에 대하여

리브랜딩. 다시 브랜딩한단 얘기죠. 왜 다시 브랜딩을 할까요. 이유는 사실 많습니다.1. 맘에 안들어서2. 브랜딩이 중간에 무너져서3. 새로운 출발을 위하여4. 요즘 한가해서..등등등브랜딩이란 말도 설레는데 리브랜딩이란 말은 얼마나 설렐까요. 뭔가 다시 챠악!!~시작하는 기분이랄까요. 1~2월달이 되니, 여기저기에서 회사소개서와 제안서, 로고제작 등의 의뢰가 들어오고 있습니다. 근데 전화나 메일을 받으면 항상 앞에 이런 머릿말이 달리더군요."저희 회사가 이번에 제대로 브랜딩을 해보려고...""뭔가 새롭게 정리를 해보고자..."그렇습니다. 연초인만큼 모두가 새로운 마음으로 새롭게 뭔갈 정리해보고 싶은 시기입니다. 아직 구정이 오지 않았으니 정식으로 한 해가 시작되지 않았다!! 그러니 아직은 밤에 라면을 먹어도 된다! 는 마음이 들기도 합니다... 개인에게나 기업에게나 연초부터 구정 전까지의 1,2월달은 준비시간같은 느낌입니다. 리브랜딩얘기를 한 번 해보겠습니다. 유행은 정말 한치앞을 내다보기 힘들 정도로 빠르게 변해갑니다. 요즘엔 거의 월별로 키 이슈가 바뀌는 듯한 기분이랄까요. 소비자들의 기호와 소비욕구도 사회현상이나 문화변화, 정책 등에 따라 급격하게 바뀝니다. 기업은 그 속도에 맞춰 유연하게 움직여야 할 필요가 있죠.소비자입장에서 생각을 해보겠습니다. 보통 우리 생각에 소비자는 스타벅스 = 초록색 인어(이게 사이렌이라는 사실도 모르는 사람들이 수두룩함)를 기억한다고 여겨집니다. 그러나 실제 인식과정은 조금 다릅니다. 소비자는 스타벅스 = 공부할 곳, 미팅장소, 책상에 길다란 나무책상, 다이어리 등으로 생각합니다. 본인이 경험한 스타벅스를 기억하죠. 누군가는 두유라떼를 기억하고 누군가는 프라푸치노를 떠올립니다. 경험이 일어난 장소를 떠올리기 위한 표식으로 초록색 인어가 필요할 뿐이죠. 먼저 경험이 생기고 후에 로고가 기억되는 겁니다.그래서 이런 해괴망측한 결과물들이..물론 이후의 인출과정에선 로고를 보면 경험이 떠오르는 연결고리를 지니게 되죠. 그러나 경험이나 선입견이 없는 상태에서 로고만 본다고 한들 소비자는 그 로고를 기억할까요? 노놉...전혀. 기억할 필요가 없죠. 나에게 필요하지 않은 정보니까요. 그러니 사실상 리브랜딩은 로고를 바꾸는게 아니라, 새로운 경험을 창출하고 소비자들의 마음속에 박힌 기업의 선입견과 사전정보를 바꾸는 일입니다. (그러니 사전에 뭐가 마음속에 없으면....그건 리브랜딩이라고 말하기도 참 애매한..) 사실 이 작업은 결코 쉽지 않습니다. 보통 아무것도 없는 백지상태에서 새로운 정보를 심는 것은 쉽지만, 이미 사전정보가 있는 상태에서 그 이미지를 바꾸는 건 쉽지 않죠. 하정우가 밥을 요조숙녀처럼 얌전히 먹어봐야 우린 황해의 국밥씬밖에 생각나지 않는 것처럼 말입니다. 해리포터 역을 맡았던 대니얼 래드클리프가 온갖 영화에 미친듯히 출연하면서 해리포터의 이미지를 지우려고 안간힘을 쓰는 이유도 비슷합니다. 마치 사람들의 마음속엔 제품이나 서비스의 이미지가 박힌 돌처럼 굳건히 서있는데 거기에 페인트칠을 하든 주변에 뭘 세우든 아니면 깎아내든 치장을 하든..무슨 방법을 통해서든 그 돌이 있던 자리를 바꾸는 작업인 만큼 리브랜딩은 '리포지셔닝'의 개념이 가장 크다고 할 수 있겠습니다. 포지셔닝이란 게 시장에서의 거점을 의미하는 듯 하지만, 산업군에 따른 분류 이런 종류의 것이 아니니까요. 사실 그 시장이란 건 결국 소비자 그 자체라고 할 수 있습니다.오늘  이 시간엔 몇 가지의 리브랜딩 사례들을 보면서, 조심해야 할 것과 지향해야 할 것들을 한 번 간략하게 살펴보도록 하겠습니다. 참고로 회사소개서를 다시 만드는 건 리브랜딩이 아닙니다. 말이야 많았지만 에어비앤비는 나름 성공적인 리브랜딩 사례로 꼽힙니다. 벨로 로고나 자잘자잘한 변천사는 그냥 구글에 '에어비앤비'만 쳐도 나올테니 우린 다른 얘길 해봅시다. 2014년 7월 17일이었죠. 제헌절이네요. 리브랜딩 공개 전 에어비앤비는 고객들에게 이메일을 돌리고 소근거렸습니다. "할 말있어. 우리 얘기 좀 할까." 물론 이건 비공개로 진행되었고 1:1로 새벽녘에 술먹고 진심을 털어놓는 전애인마냥 자니...? 를 시전했던 것이죠. 그 때 시간은 자정이었습니다. (뭐야 완전히 전남친이잖아) 창립자인 브라이언과 조, 네이트는 30분이 조금 넘게 에어비앤비 리브랜딩에 대한 이야기를 털어놓았습니다. 이것은 그냥 삼성서비스센터에서 AS받고 걸려오는 해피콜 수준이 아니었죠. 이재용 사장이(감옥에서) 페이스톡으로 당신에게 직접 '에..이번에 저희가 리브랜딩을 하려고 해요..' 라고 전화가 왔다고 생각해보세요. 그것도 밤12시에. 사실 이건 놀라운 일입니다. 고객들에게 그 자체로 색다른 경험을 제공하는 이벤트이기도 하고 단순히 우리는 바꿨으니 너네는 기억해라!! 라고 통보하는 형식이 아니라 고객들을 배려하고 기업과 함께하는 동반자로 인식한 행위였죠. 뭐 선사례니까 결과는 당연히 좋았겠죠? 물론 그 결과란 건 리브랜딩 이후 2년만에 등장합니다. 에어비앤비는 2016년도 하반기부터 영업이익을 흑자로 돌렸죠.그 이후 에어비앤비는 비쥬얼/하드웨어적인 외적 브랜딩도 동반하게 됩니다. 에어비앤비 굿즈를 내놓기도 하고, 호스트 집엔 에어비앤비 브랜딩 스테이셔너리를 배치하기도 했죠. 사실 이는 게스트 입장에선 놀라운 일입니다. 호스트의 개성이 느껴지는 각각의 집에서 에어비앤비의 동일한 색깔을 동시에 느낄 수 있기 때문이죠. 물론 진상 게스트나 미친 호스트들 때문에 홍역을 앓기도 했지만 브랜딩자체로만 보면 꽤나 잘하고 있다~~라고 보여집니다. 게다가 에어비앤비는 실질적인 경쟁업체가 없기때문에(홈어웨이 정도인데...거의 알려지지도 않은..) 사실 그리 브랜딩을 막 애써서 열심히 하지 않을 수도 있는 포지션이었습니다. 안해도 당장 크게 문제가 안되는데 뭐 굳이....? 라는 마인드가 생겨나기 좋은 상태였죠. 하지만 이들이 이렇게 꾸준히 브랜딩을 해나갈 수 있었던 건 브랜딩에 대한 투철한 애정과 신념 뭐 그런 것보단...(물론 그런 것도 있었겠지만 실은) 디자이너와 개발자의 곤조와 고집, 이건 반드시 예뻐야해!!! 우린 이렇게 해야돼!! 라고 하는 괴짜스러움이 더 큰 힘을 발휘했다고 생각됩니다.그러나 슬픈 사례가 훨씬 많죠. 성공사례가 책으로 나오고 이목을 끄는 이유는 그만큼 실패확률이 더 높다는 반증이기도 합니다. 사례 자체는 조금만 검색해보면 우르르 나오는 터라 사례를 자세하게 소개하진 않겠습니다. 대신 원인을 좀 살펴볼 필요는 있겠네요. 중요한 건 쟤네가 망했다는 걸 구경하는 게 아니라, 우리가 그런 전철을 밟으면 안되는 것 아니겠습니까.트로피카나는 2009년 주스팩 디자인을 바꿨다가 개폭망을 경험(2개월만에 300만달러 손실, 총매출의 20% 급감)하고 다시 원래 오렌지에 빨대꽂힌 패키지로 돌아왔습니다. 디자인이야 더 상큼하고 쥬스!!!!쥬스!!!!스러운 느낌을 내고 싶었는 지 모르지만, 새로운 패키지를 접한 고객들은 "뭐지? 짝퉁인가....?" 싶었다고 하는군요. 원래 트로피카나의 트레이드마크는 오렌지에 빨대꽂힌 저 이미지였습니다. 그리고 트로피카나 특유의 아치형 폰트였죠. 표식과도 같았던 두 요소가 다 사라져버리고 나니, 사람들은 트로피카나를 알아보지 못하기도 했다고 합니다. 정서적 연대감이 떨어져버린 것이지요. 미국엔 이런 속담이 있습니다. "If it ain't broke, don't fix it.(고칠 게 없으면 고치지 마라.)" 갑도 비슷했어요. 갑은 모자, 티셔츠 등등 온통 자기제품이 갑이라고 등짝이고 배, 이마에 다 가져다 붙여놓으면서 어쨌든 갑!! 하면 딱 저 폰트가 떠올랐죠. 근데 심지어 세리프를 산세리프(심지어 그냥 Helvetica)로 바꿔버리고 대소문자도 바꿔버리고...이건 전혀 다른 짝퉁 브랜드같잖아요?? 갑만이 가지고있었던 로고타입의 느낌이란게 있었는데, 사람들은 갑의 배신이라고까지 했습니다. 심지어 저 그라데이션 네모는 당최 뭔지도 알 수 없는 지경이었죠. 이게 외국에선 얼마나 큰 인기였냐면 로고넣으면 갑로고 처럼 만들어주는 (http://ww1.craplogo.me/)과 같은 짤방 사이트부터 트위터계정 @gaplogo 가 등장하기도 했고 디자인커뮤니티에선 내가 더 잘만들수있겠다!!해서 자체 콘테스트까지 열리기도 했답니다. 결국 갑은 오케오케 쏘리 다시 돌아갈께..하고 10일만에 원래 로고로 돌아오게 되었습니다. 뭐 사실 이 리뉴얼 이슈때문에 더더욱 주목을 끌었을 수도 있겠지만, 이미 갑은 엄청난 고객들을 보유한 회사인데 이런식으로 어그로를 끄는 게 사실 좋은 방법은 아니죠. 신생기업이라면 모르겠지만...기존의 브랜드 이미지가 확고할 경우엔 리브랜딩에 있어서 그 가치를 살리고 유지하면서 변신을 단행해야 합니다. 지난 시간의 유산을 모두 내팽개지는 건 그동안 그 유산을 함께 쌓아왔던 고객들을 배신하는 행위와 같죠. 현재 자신이 가지고 있는 브랜드가치에 대해 제대로 평가를 내려볼 필요가 있습니다. 무엇이 사람들을 끌어들이는지. 방금 깎은 열쇠가 반짝이는 것이 아닙니다. 항상 쓰던 열쇠가 반짝이는 법이죠."The used key is always bright.(쓰던 열쇠는 항상 반짝인다.)"마지막으론 슬픔의 대명사 카페베네입니다. 비운의 역사를 간단하게 살펴보면 이렇습니다. 당초 카페베네는 카페베네는 "유럽풍 카페 문화에 한국식 사랑방 문화를 접목해서 편안한 분위기에서 오랜 시간을 보낼 수 있는 편안한 공간을 추구" 했습니다. 사실 유럽풍문화에 사랑방문화를 접목시킨게 뭔진 모르겠지만...사실상 사람들은 그런건 잘 몰랐던 것 같습니다.  대신 24시간 운영되는 북카페 쯤으로 생각해서 시험기간 대학생들의 임시도서관으로 많은 사랑을 받았죠. 마케팅도 막 열심히 했습니다. PPL도 하고, 한예슬씨도 모델로 고용하고 어쨌든 시작은 좋았죠. 그리고 3년만에 매장수를 20배이상 늘리기 시작했습니다. 제가 사는 동네에만 카페베네가 블럭건너 생길 정도였으니 이건 뭐...가히 바퀴벌레같은 번식력이란 말이 괜히 나온게 아니었던 것 같습니다. (이후 할매순대국이 폭풍 가맹점을 늘리며 할매베네라는 묘한 네이밍을 가져가기도 했죠.) 2011년엔 매장수가 735개에 이르렀고 심지어 2014년엔 912개 매장으로 가즈아!!!!!!!!!확장을 계속해나갔죠. 근데? 2013년 적자전환이 시작되었습니다. 2016년엔 336억 적자를 내며 회생불가능한 지점을 넘고 말았습니다. 무슨 일이 있었던 걸까요? 이디야 다음으로 많은 매장을 지니고 있던 카페베네의 몰락에는 당연하지만 주목해야 할 원인들이 있습니다.1. 포지셔닝2. 퀄리티3. 상생구조위에서 언급했던 유럽풍에 사랑방을 접목시킨 그런 건 잘 모르겠더라구요. 사실 책이 많긴했지만 딱히 북카페라는 포지션도 아니었고... 편안한 컨셉이라고 하기엔 또 뭔가 애매하고... 작업공간? 독서실? 카페? 쉼터..? 다 맞기도 하고 다 아니기도한 애매한 컨셉이었습니다. 슬로건은 More than Coffee at Freedom Depot 였는데 커피의 퀄리티를 내세우던 문구와는 다르게 실제 매장에선 악마초코빙수 팝업광고가 더 많았던 것 같습니다. 와플이나 허니브레드도 왜케 대문짝만하게 카운터에 자꾸 세워놓고....오히려 카페베네는 커피빼고 다 맛있다느 소문이 돌 정도였죠.퀄리티 문제는 당연히 맛입니다. 카페베네에서 사용한 원두가 나쁜 원두라거나 원가절감을 위해 막 쓰레기로스팅을 했다거나 한 건 아닙니다. 실제로 브라질농장과 FFT계약을 통해 질 좋은 원두를 공급받기도 했고 초반엔 커피의 질을 메인키워드로 내세우며 '맛있는 커피!!!' 를 만들려고 했었죠. 하지만 문제는 급성장입니다. 뭐든 너무 갑자기 커버리면 관리가 힘들어지는 법이죠. 메뉴얼이나 가이드가 없이 매장관리가 허술해지다보니, 결국 매장마다 직원관리도, 당연히 맛관리도 엉망진창이 되어버리고 맙니다. 커피는 원두가 다가 아니죠.  아침마다 테이스팅하면서 맛을 맞춰야 합니다. 그라인드의 정도도 봐야하고 밀크스티밍과, 크레마 등도 그냥 버튼만 누른다고 다 되는 문제는 아닙니다. 결국 숙련된 바리스타들이 있어야 했고, 적어도 제대로 교육받은 사람들이 매니저나 선임급으로 테이스트 가이드를 만들었어야 했었죠. 하지만 매장의 매출이나 지원 등이 들쑥날쑥 하게 되면서 경영악화가 시작되었고 이는 알바의 잦은 교체, 비숙련인원의 증가 등등의 악순환을 낳게되죠.상생구조는 이러한 맥락에서 심화된 문제입니다. 내가 어제 점포를 냈는데 한 달뒤에 2블럭 앞에 또 카페베네가 생기면 안되는 것 아니겠습니까. 이건 서로 치고받고 싸우라는 건지 알 수 없는 프랜차이즈 정책인거죠. 가맹점과의 상생고리가 끊겨버리고 나면 사람들에게 외면받는 건 삽시간입니다. 가맹점은 더 이상 늘지 않고 폐점율은 높아지죠. 폐점이 될 때마다 고객들은 모두 떨어져나가는 것이구요. 후에 프리미엄 컨셉으로 리브랜딩을 시도했으나, 그 충격을 이겨내기엔 쉽지 않았습니다. 리브랜딩이 모든 브랜드실책을 덮을 순 없죠.흔히들 리브랜딩을 하면 뭔가 새출발을 하니까 사람들도 우릴 새롭게 봐줄 거라 생각합니다. 하지만, 저어어얼대 그렇지 않아요. 오히려 기존의 정보가 달라졌다는 생각에 등을 돌리거나 알아보지 못하는 경우, 또는 이미 리브랜딩으론 회생이 불가능한 상태일 수도 있죠. 컴퓨터 리셋버튼 처럼 다시 시작하는 것이 능사가 아니라는 얘기입니다. 리브랜딩을 단행하기 전엔, 먼저 지금 기업이 지닌 브랜드자산과 문제점에 대해 소비자들과 긴밀하고 적극적인 소통이 있어야 해요. 혼자 좋아서 내 맘대로 바꾼 로고는 조롱의 대상이 되는 경우가 많았습니다. 트로피카나, GAP, 드롭박스, DB손해보험, 코카콜라의 2011년 화이트 리미티드에디션 등등의 경우를 볼 때 말이죠. 그러나 스타벅스나 애플과 같이 기존의 자산을 살리면서 로고의 단순화와 세련미를 더한 경우엔 (물론 이것도 놀림을 받긴 했으나) 애정을 반증하는 짤요소 정도로만 쓰이는 정도로 순탄히 넘어가기도 했죠. 에어비앤비처럼 적극적으로 소통하며 한 명 한 명에게 알린 경우도 있었고, Fedex마냥 어지럽던 것들을 정리해서 하나로 통합시킴으로써 편의성을 업그레이드 시킨 경우도 있었습니다. 브랜드라는 건 항상 '경험'을 제공하는 표식과 표의를 동시에 생각해야 할 문제입니다. 그리고 실질적인 운영능력과 가이드, 메뉴얼, 주변업체와 가맹점, 관리시스템, 자본력 등등을 아주 냉철하게 분석해서 단행해야 할 이슈죠. 분명히...단순히 내가 뭔갈 정리하고 싶어서, 그냥 새롭게 시작하는 마음으로, 대충, 이게 멋져보이니까,마음이 바뀌어서, 한 두명이 바꾸라고 조언했다고 해서... 그렇게 시작하는 작업은 아닌 듯 합니다 :)  
조회수 1531

제대로 콘텐츠 디자인하기 – 판타지 편

수많은 도서 분야 중 리디북스가 가장 집중하고 있는 5개의 장르를 아시나요? 바로 리디북스 홈페이지를 상단 메뉴를 구성하고 있는 일반, 로맨스, 판타지, 만화, BL 장르입니다. 저는 리디북스 콘텐츠팀 디자이너로서 이 5가지 장르에서 진행하는 프로모션 디자인을 담당하고 있습니다. 5가지의 장르 모두 개성이 뚜렷한 만큼 디자인하는 방법도 조금씩 다른데요, 이번 포스팅에서는 5개의 장르 중 판타지 장르의 콘텐츠디자인 이야기를 들려드리겠습니다.판타지는 어둠의 다크?처음 판타지 장르의 콘텐츠디자인을 시작했을 때, 바탕색은 어둡게, 포인트 컬러는 채도가 높은 색을 사용하여 강한 대비를 표현하는 것이 전형적인 특징이었습니다. 저도 그 특징에 따라 일단 어두운 배경을 만들고 하나하나 요소를 넣으며 작업하였습니다. 그렇게 몇 개의 판타지 콘텐츠의 디자인을 하며 도서들을 접하다보니 판타지 도서가 어둡고 강한 이야기도 있지만 신이나 마법, 초현실 등 다양한 주제들로 세분화되기 때문에 맹목적으로 어두운 분위기로 디자인하는 것이 옳은 것이 아니라는 생각이 들었습니다. 그럼 어떻게 디자인을 해야 다양한 판타지 콘텐츠들에 각각 걸맞은 옷을 입힐 수 있을까? 하는 고민이 시작되었습니다.초반 판타지콘텐츠 디자인 작업. 바탕은 어둡게, 타이틀은 밝게.판타지는 세계다.판타지라는 단어가 갖는 특징은 뭘까 생각해보았습니다. ‘현실이 아닌 이상, 상상의 세계’. ‘개개인이 꿈꾸는 세상’, ‘현실의 극한적 왜곡’ 등등 여러 가지로 생각할 수 있는데요, 저는 개인이 환상을 담고 있는 ‘공간’이라는 느낌이 들었습니다. 실제로 많은 판타지 소설들은 이계, 사이버 세계, 중세, 현대. 초현실 등 시공간적 배경을 담고 있습니다.그래서 판타지 도서의 이벤트 페이지를 디자인 할 때 해당 소설이 가진 공간적 배경을 활용한다면 판타지 소설을 더욱 판타지답게 보여줄 수 있겠다고 생각하였습니다. 독자의 입장에서 볼 때도 소설 특징이 반영된 이벤트 페이지를 보면, 마치 그림책을 보듯이 도서에 대한 이해가 훨씬 이해가 쉬울 것이란 확신도 들었습니다.판타지 디자인 = 공간감과 입체감이후 저는 디자인을 할 때 구성 요소를 ‘공간 안에 넣는다’는 생각을 갖고 공간감 만들기에 집중하였습니다. 많은 게임 웹사이트가 좋은 참고자료가 되었습니다. 평면적인 디자인에 익숙했던 터라 입체적인 판타지 디자인 결과물은 굉장히 색다른 느낌이 들었습니다. 시각적으로 멋지기도 하지만 공간감 때문인지 몰입하게 만드는 힘이 있어서 시선을 강하게 잡았습니다.또한 ‘어둡게 표현한다’는 제한을 없애고 여러 컬러를 활용하여 몽환적이거나 신비로운 느낌의 다채로운 판타지 콘텐츠를 만들었습니다. 어떤 방식으로 디자인을 하더라도 공간감이라는 규칙이 있었기 때문에 통일감이 생겼고 이 특징은 자연스럽게 판타지 카테고리의 아이텐티티가 되었습니다.다양해진 컬러와 공간감의 표현입체적인 공간 연출법공간감을 연출하기 위해서는 어떻게 해야 할까요? 실내 이미지 사용, 구성 요소에 입체감 주기, 그림자 넣기 등등 많은 방법이 있습니다. 하지만 이중 가장 중요한 요소를 고르자면 바로 ‘빛’입니다. 가상의 조명을 왼쪽, 정면, 오른쪽에 배치한다고 생각해보세요. 가끔은 역광까지 알맞은 위치를 선정하고 그에 맞는 광량을 요소별로 적용하면 입체적인 느낌이 살아납니다.이 때, 일률적으로 똑같은 빛 효과를 주기보다는 위쪽 오브젝트엔 하이라이트와 강한 그림자 효과를, 아래쪽 오브젝트는 밝은 부분을 줄이고 음영 위주로 표현해주는 것이 좀 더 자연스럽게 공간연출을 할 수 있습니다. 막혀있는 공간이 아닌 하늘, 들판을 배경으로 사용한다 해도 빛을 이용하면 쉽게 공간감을 표현할 수 있습니다.배경레이어 위에 타이틀을 올린 예시배경에 빛을 주고 각 폰트에 같은 레이어 스타일을 적용한 예시광원에 따라 자연스럽게 빛 효과를 준 예시맛깔나는 효과공간감을 연출했다면 이제 효과라는 양념을 추가해 좀 더 맛깔나게 페이지를 구성해야 합니다. 너무 과해서 촌스럽지만 않다면 개인의 역량껏, 마음대로 구성해 볼 수 있기 때문에 가장 재미있는 작업입니다. 기본적으로 많이 사용하는 효과는 포토샵 블렌딩 모드 중 ‘linear dodge’와 레이어 스타일 중 ‘bevel and emboss’입니다.1) Linear DodgeLinear Dodge는 흰색 부분을 유지한 채 검은색에 흰색을 추가해 더욱 밝게 해주는 기능으로 발광 효과를 내는 데 주로 사용합니다. 검정 바탕색에 흰색이 블렌딩 되면서 빛을 내기 때문에 경계선을 뚜렷하게 하는 것보다 blur를 주어 그라데이션을 만들면 빛나는 효과를 더욱 살릴 수 있습니다.2) Bevel and EmbossBevel and Emboss는 평면레이어에 입체감을 주는 효과입니다. 각 항목별로 수치를 조정하여 양각, 음각, 높이와 빛 방향, 빛과 그림자 색 등등 다양한 표현을 이 하나의 기능 안에서 구현할 수 있습니다. 하나씩 조절해보며 자신이 내려고 하는 효과에 맞는 수치를 찾고 적용하면 됩니다. 특히 이 효과를 서체에 적용하려고 할 때 중요한 팁을 드린다면 바로 ‘폰트 선택’입니다. 고딕체에 적용하는 것보다 세리프체나 획의 굵기의 변화가 많고 특이한 모양의 폰트에 적용하면 효과가 더욱 살아납니다. 특이한 폰트가 없다면 기본 폰트선택 후 Convert to Shape하여 일부러 변형을 주어 사용하면 극대화된 효과를 볼 수 있습니다.마치며판타지 도서의 다양한 개성을 표현해보려고 시작한 방법들이 이제는 리디북스 판타지 디자인의 전반적 흐름이 되어 뿌듯하기도 하지만 이것이 정답은 아니라고 생각합니다. 처음 일을 시작했을 때 맹목적으로 어둡게 디자인을 하던 시절의 잘못을 반복하지 않기 위해 요즘은 다시 입체적인 것, 효과를 주는 것이 맞는 것인지, 과하지 않은지 반문하고 있습니다. 디자인 트렌드는 계속 변하고 새로운 것이 생겨나기 때문에 틈틈이 좋은 방법이 있는지 찾아보기도 하구요. 더 멋진 판타지 장르 콘텐츠 디자인을 위해 오늘도 열심히 고민하겠습니다. 감사합니다.#리디북스 #디자인 #디자이너 #콘텐츠 #콘텐츠디자인 #콘텐츠디자이너 #개성 #장르 #판타지 #공간감 #입체감 #광원효과 #고민 #작업후기
조회수 1416

내가 생각하는 기업 성장을 위한 HR 시스템 구상법

* 2011년에 작성된 글입니다1년의 공백 탓에 수학적 스킬은 저학년 전공책을 보면서 백업해야 하지만, 복학을 하고 별다른 어려움 없이 바로 도착하자마자 학교 수업에 다시 익숙해질 수 있었던 것은, 내가 무엇을 배워야할지, 이 과목 수업을 배움으로서 이것이 실제 비즈니스의 어느 상황이고, 또 그런 상황에 처했을 때 대처해야 하는 방법임을 알기 때문이다. 저학년땐 그러하지 못했다.  옛날엔, 무조건 수업을 듣고 강의노트와 전공서적, 저널을 글자 그대로 이해하려 덤벼들고 억지로 머릿속에 쑤셔 넣으려 했다면, 이제는 여유를 가지고 배운 전공지식을 가지고 응용할 수 있는 상황을 상상할 줄 알게 되었다.  모든 수업에서 배우는 것을 실제 비즈니스에 적용할 수 있다.  내 나름의 시뮬레이션을 할 수 있는 곳, 실현할 수 있는 곳이 있기 때문이다.  1학기 4주차, 모든 1학기 과목의 프로젝트 팀 또는 과제 그룹 생성이 끝났다.   제일 마음에 드는 팀은 역시나 졸업프로젝트팀이고 오늘 결성된 시뮬레이션 과제 그룹도 제법 만족스럽다.  넷뱅팀까지 포함하면 총 4개의 각기 다른 환경에서, 다른 백그라운드를 가진 팀원들과 다른 주제와 목적의 협업 경험을 하게 되는데 그 중에서 제일 애착이 가는 것은 역시나 넷뱅팀이다.3명 또는 5명이 maximum 인 팀원들이 학교 과목 전공에 대해서 보다 practical한 접근방법으로 해당 지식을 이해하고 깨닫는 것과는 달리, 넷뱅팀은 구성 인원에 제한이 없으며 현재는 열두명이고, partner 관계에 있는 대상까지 합치면 스무명도 넘는다. 넷뱅팀은 가상이 아닌 진짜 일어나는, 실제 사업을 다룬다.  이것은 엄청난 차이다.그나저나, 이제 슬슬 12월에 제출할 인사관리 과목 에세이 쓸 준비를 해야하는데..물론 주제는 정해졌다.  다만, 어떠한 관점에서 그 주제를 바라볼지를 아직 정하지 않았다.  여러 각도에서 대상을 바라 볼 수 있다.  그 대상을 가장 빛나게 하려면 어떤 방향으로 비추어야 할까를 생각 중이다.  해답을 찾기 위해서, 나는 ‘발상의 전환’, ‘입장 바꿔서 생각하기’를 해보기로 했다.전에 작성한 ‘경영자와 관리자의 차이’란 글에서 언급했지만, 나의 소견은 이렇다.경영에 있어서 리더십과 전략도 중요하지만 함께할 일원 구성과 그에 따른, 조식개편도 그에 못지 않게 조직의 성공을 위한 필수요건이다. 특히나 신생기업에게 말이다.  영국으로 돌아온 후로, 직접적으로 넷뱅일에 관여하고 있지는 않다, 다만 돌아가는 상황을 보고 받고 기획 관련을 간간히 보조하고 있는데, 그사이, 넷뱅팀은 이전과는 새로운 모습이다. 떠나기 전, 직접 뵙거나 면접을 본 몇몇 분들이 현재 일하고 계신다.  ▶ 여기서 첫번째 관점이 있다.  ① 직원채용넷뱅팀에는 다양한 연령대, 출중한 이력과 학력 출신의 분들이 많이 계시지만 특히, 학생 팀원들에게 감탄하고 있다.   보통, 일 경험을 한다거나 레쥬메에 뽐내기 위해서는 IB나 증권계, 컨설팅회사, 기타 일반 대기업 인턴을 알아보는데 나 같아도 그럴 것 같다.  내 스펙을 위해선, 내가 그 기업을 좋아하든 아니든, 그 기업이 무슨 일을 하든 말든, 일단 내 이력서에 모양새가 좋을 법한 곳에 일 경험을 쌓으려 할 것 같다.  이기적으로 생각하자면 그렇다는 말이다.   (물론, 실제론 내가 꼭 일하고 픈 회사에 지원하는게 정석이다)넷뱅에서 일한다는 것은, 알려지지 않는 신생 기업, 벤처기업에서 일한다는 것인데 나라면, 넷뱅에서 일하려고 할까.   어떤 생각이 들어야 넷뱅에서 일 해야겠다는 마음을 가질 수 있을까.  무엇 때문에 넷뱅에 일하려 할까. 나라면, 뭐가 마음에 들어서, 무엇을 위해 넷뱅에 일하려고 할까. ▶ 두번째 관점은 ② 보상이다.  실제로, 내가 느낀 넷뱅 업무는 일단 재미가 있다, 신선하고 창의적이고, 직접적이다.  '이렇게 하면 좋을 것이다'라며, 보고서 작성하고 PPT 만들고 끝내는게 아니라, 온 시간을 쏟고 머리를 짜고 '행동'하면서 만들어낸 결과물이 단순히 PPT 차원이 아닌, 시스템화되고 flow가 보이고, 고객의 소리를 직접 들을 수 있고 무엇보다 눈으로 보여진다는 게 가장 매력적이다.   내가 아이디어가 많이 갖고 있다면 입 밖으로 바로 바로 내뱉을 수 있다, 그중 좋은 아이디어는 바로 대표님 귀에 들어간다.  발탁이 되면, 팀원들과 직접 추진할 수 있다.  근데 그 아이디어가 그냥 나오는 것이냐, 그런 것도 아니다.  아이디어는 몰입했을 때 나오는 법이다.  그 몰입은 어떻게 어디서부터 나오는 것일까.  어떻게 해야 몰입할 수 있을까.  나는, 몰입은 재미와 흥미에서 나온다는 점에 도달했다. 일이 재밌으니, 팀원들과 일하는 것도 때론 떠들면서, 음악을 들으면서 때론 말 한마디도 안하고 초집중하면서 일하기도 한다.  성격과 성향은 다 달라도 서로가 무엇을 잘하는지 알고 있고, 각각 자신의 업무를 맡은바 충실히 하는 것, 협업에서의 기본 호흡이 아닌가 생각한다 ▶  세번째 관점은  ③ 팀워크업무가 그렇게 지속적으로 진행되면 일하는 게 맛들릴 정도로 시간이 금방 간다.  밤 11시 퇴근해도 옛날 도서관에서 공부하다 집에 갈 때처럼 뿌듯하게 퇴근할 수 있는 것이다.  게다가, 내가 맡은 일이 잘 되어서 팀원들 및 대표님의 인정과 칭찬을 받는다면 자신감도 생기고 신이 나서 일하지 않을까.  나라면 그럴 것 같다.   ▶  네번째 관점은  ④ 비금전적 보상, 만족감문제라던가 현황에 대해서도 아주 간파를 하고 있어야 한다.  우리가 앞으로 무엇을 하려고 하는지, 대표님의 계획과 의중도 이해하고 알고 있어야 한다.  예를 들어, 팀원 전원이 전부다 A라는 일에 몰입하고 있는데 자기 혼자만 B 업무가 중요하다고 외쳐대고 있다면, 그것은 문제인 것이다.  본인의 생각이 맞다고 생각한다면 왜 B 업무를 먼저 해야하는지 마땅한 명분과 이유를 팀원에게 말할 수 있어야 한다. 그리고 다른 팀원들이 그 생각을 동의할 수 있어야 한다. 또한, 불만이라던가 제안사항이 있다면 바로바로 얘기할 수 있는 소통창구가 있어야 하고 쓴소리든 듣기 좋은 소리든 기업성장을 위한 얘기여야 하며 또 듣는 사람도 발전적인 방향으로 이해하고 귀기울일 수 있는 기업문화가 조성되어야 한다.  ▶ 여기서 다섯번째 관점은 ⑤  커뮤니케이션: 의사소통, 일관된 방향성과 공통된 목표 추구여기까지 쓰고 책상에서 일어나 잠깐 방안을 어슬렁 어슬렁 거렸다.   나는 생각을 하려면, 몸을 움직여야 하는 타입인가 보다.기업에서의 performance와 직원 만족감의 극대화를 이끌어 내는 방법은 뭐가 있을까.대부분 이렇게 생각한다.  기업이 성공하기 위해서는 어떠한 새로운 상황에 처했을 때 즉시 변화를 추구해야 한다고.  그러나 그렇게 하지 않는게 옳은 방법일 수 있다.  빠르고 혁신적인 변화가 아니라 합리적하고 융통성 있는, 장기적으로 추진하는 변화이고 나는 그 변화를 HR 관리 시점에서 바라보고 있다.  그리고 그것이 효과적인 변화가 되게 하려면 무엇이 필요할까.  아직 관련 저널을 안 읽어서 아는 지식이 없어서 그런지, 생각이 꼬리를 문다, 내 생각에 내가 질문을 하고 있다.다시 경영진의 입장으로 돌아와서, 성공에 대한 나의 생각이나 바램은 팀원들의 그것과 같을 수도 다를 수도 있다.  팀은 분명 정해진 목표와 업무 할당량이 있지만 목표에 대한 나의 열정은, 또 대표님의 열정은 팀원들의 그것과 당연히 다르다.  관점이 다르고 저마다의 우선순위가 다른, 각자 다른 재능과 경험, 백그라운드를 가진 사람들이 한 조직체를 이룬다.  어느 조직, 기업, 팀이건, 어떤 사람은 10~20년 동안 일하는 사람이 있는가 하면, 지금이 처음인 신입도 있고, 시작은 좋았는데 점점 게으름 피우는 팀원, 실적이 쭉 좋지 않는 무능력한 사람, 뚝심으로 한결같이 페이스를 유지하며 일하는 사람 등이 있다.  이러한 다양성을 가진 팀을 구성하고 꾸려나간다는 것은 엄청나게 복잡한 일이다.  하지만, 팀원들이 공통적으로 가진 유일한 특징은 그들이 같은 회사를 위해서 일한다는 사실이다.스포츠에서도 선수들이 각각 맡은 포지션이 있듯, 기업에서도, 팀에서도 마찬가지다.  팀원들이 자기가 제일 잘 하는 일이 무엇인지 깨닫게 해주고, 자기의 업무에 만족할 수 있도록 해주면, 업무에서의 생산성도, 직원 만족감도 그만큼 향상될거라 생각한다.  더 중요한 것은 각 팀원들의 성격, 성향, 재능 등을 서로가 아는 것이다.  이것은 근무평가와 동료 피드백 등의 검증 방식으로 이루어져야 한다고 생각한다.  그래야 모두의 동의하에 팀의 응집력과 기능, 소프트웨어적인 면이 자리를 잡을 것이다.골을 넣는 것, 최대한 득점을 많이 하는 것, 우위를 차지하는 것.  공통된 비전을 바라보게 하고, 자신의 일에 최선을 다하도록 장려해주는 것이 기업의 역할이 아닐까 싶다.함께 일할 사람을 모으는 것은 쉬운 일이 아니다.  그러한 사람들이 모인 팀을 이끌어가는 것은 더더욱 쉬운 일이 아니다.  그러나 공동 목표가 있고 그것을 모두가 다 바라보며 달린다면 그것이 성공의 지름길이 아닐까.여기까지 생각이 일단 마무리가 됐다.  이제는 관련 저널과 전공서적을 읽고 에세이 구조 틀을 짠 다음, 살 붙이는 작업을 해야할 것 같다.#넷뱅 #스타트업 #스타트업HR #HR시스템 #운영 #인사이트
조회수 1241

3월에 다녀온 여름나라 코타키나발루 3박5일 이야기 (3)

 패션블로그 웹뜰입니다어느새 웹뜰 10주년 워크샵을 다녀온지 한달이란 시간이 지나버렸네요 3월에 다녀온 여름나라 코타키나발루 3박5일 웹뜰 해외워크샵 마지막 이야기를 들고 왔습니다. 둘째날 워크샵을 마치고 세번째날은 오전에는 호텔에서의 자유시간이였습니다. 전날 워크샵으로 늦게까지 달린 웹뜰 직원들이 충분히 휴식을 취할 수 있는 시간이였어요 늦잠도 좋지만 일단 조식은 챙겨서 먹어야 하니깐 일어나 조식뷔페로 갔습니다. ㅎㅎㅎ 역시 어제 달려서인지 어제보다 많은 직원들이 보이지 않네요 식사를 하면서 수영장쪽을 보내 오늘도 날씨가 끝내줍니다. 정말이지 코타키나발루에서 계속 날씨가 좋았던거 같아요 웹뜰의 직원들의 워크샵이라 날씨운이 따라 준 것 같습니다. 날씨도 좋고 수영장도 예쁘고 자유시간이니 조식을 먹고 수영을 해보기로 합니다. :)조식을 먹고 배도 부르겠다 산책 겸 마젤란수트라하버리조트를 돌아 다녀봤습니다. 정말 안 예쁜 곳이 없는 마젤란수트라하버네요 구석구석 어디가도 인생샷스팟!여기저기 돌아다니며 사진찍고 놀다가 다시 리조트 방으로 돌아가서 수영복 갈아입고 수영장으로나왔습니다. 파란하늘에 파란 수영장 물 꺄!! 너무너무 예쁘네요 야자수까지 있으니 이국적인 느낌 물씬 수영장에선 역시 썬베드죠 ㅋㅋㅋ 수영보다 썬베드 썬베드에서 요렇게 요렇게 다들 아시죠? 요 허세샷 다들 찍어보셨을꺼예요 ㅎㅎ 수영장에서 수영도 하고 인생샷도 찍어보고 즐거운 오전시간을 보냈습니다. 마젤란수트라하버 골드카드 혜택으로 리조트 안에서 점심도 해결할 수 있었습니다.점심은 피자또는 파스타 중에 골라서 먹을 수 있었는데요 피자도 파스타도 다 맛있었어요 샐러드와 후식으로 과일까지 나오더라구요 수영하고 먹으니 더 꿀맛! 접시를 싹싹 비웠습니다. 세번째날의 오후 일정은 반딧불 투어였습니다. 반딧불 투어는 묵고 있는 마젤란수트라하버리조트에서 버스로 한참 나가야한다고 하더라구요 호텔로비에서 단체사진 한장 남기고 버스를 타고 갔습니다. 가는 중간에 휴게소라기보단... 음 화장실을 가기위해 잠시 들린 곳이라고 하는게 더 맞을 것 같습니다. 간이 매점같은곳이 있어서 간단하게 요기를 할 수도 있었습니다. 화장실은 좀... 열악했어요 물론 비용도 지불해야하고 비용 지불도 했는데 그다지 깨끗하지는 않았더라는.. 역시 어딜 가봐도 한국이 젤 깨끗한거 같아요  ㅎㅎ제가 좋아하는 옥수수도 있어서 옥수수를 사서 다른 직원과 나누어 먹었습니다. 역시 옥수수는 꿀맛이엿습니다. 넘나 맛있어서 버스에서 냄새 풍기는지도 몰랐네요 그리고 곧 도착한 식당입니다.  이 식당 뒤쪽으로 강이 흐르고 있고 배를 탈수 있는 곳이 있는데 그곳이 바로 이따 저녁에 저희가 반딧불 투어를 할 곳이라고 합니다. 식당 안쪽 인테리어는 이런 모습.. 말레이시아는 중국의 영향을 꽤나 많이 받았다고 하더니 이 식당도 흡사 중국 식당 같은 모습이네요 지금 든든히 먹어야 반딧불투어를 할때 배고프지 않다고 합니다. 반찬의 가지수는 여러가지 나쁘지 않습니다. 다만 양념에 향신료가 너무나도 듬뿍 들어가있어 입맛에 안 맞아 저희 직원들 중 대부분은 식사를 제대로 하지 못했네요 식사를 하는 웹뜰 직원들을 위해서(?) 인지 아니면 원래 시간마다 정기 공연이 있는지는 모르겠지만 막간을 이용해서 공연을 보여주는 원주민들 나름 임팩트있게 공연을 보여주고 홀연히 떠나더라구요 ㅎㅎ식당에서 밥을 다 먹고 또 차로 10분정도 이동해서 저녁노을을 보러 갔습니다. 이름모를 해변가였는데 풀어놓은 소랑 말, 그리고 개까지... 해변에 응가를 싸놓아서 발밑을 정말 조심히 걸어야했습니다. 그래도 노을지는 해변에서 각자의 인생샷과 웹뜰 직원단체로 인생샷을 건질 수 있어 너무 좋았던 곳 이였습니다. 그리고 다시 식당쪽으로 돌아가서 반딧불투어!반딧불이는 빛에 민감하기때문에 사진은 찍지 못하였습니다. 역시 가장 아름다운 자연은 눈으로 즐기는게 가장 아름답게 즐길 수 있더라구요 숲따라 흐르는 강을 배타고 가면서 까만밤 수많은 별들 그리고 크리스마스트리처럼 반짝이던 반딧불이들까지너무나도 낭만적이였던 반딧불이 투어였습니다. 반딧불이 투어를 마치고 다시 숙소로 돌아온 웹뜰 직원들 저녁식사가 부실하여 허기졌을 직원들에게 한국에서 가지고온 컵라면과  맛있는 간식을 준비해주신 대표님 짱짱! 너무나도 감사합니다. 그리고 마무리로 조니워커블루라벨과 시원한 음료까지!셋째날 밤도 불태워 보았습니다. 그리고 넷째날 아침이 밝았습니다. 오늘은 체크아웃을 하기 전까지 자유시간으로 주어진 날각자 시내투어나 키나발루산 트레킹 그리고 마젤란수트라하버 투어 등으로 시간을 보냈습니다. 마젤란수트라하버리조트는 어제 오전에 즐겼으니 오늘은 시내투어를 해보았습니다. 시내로 가는 셔틀버스는 마젤란수트라하버리조트에서 시간마다 있었습니다. 저희는 일찍 서둘러서 조식먹고 10시차를 타는 거루~!셔틀버스는 티켓을 구매해야지 이용이 가능하구요 리조트앞 셔틀버스타는 곳에서 표를 구입할 수 있었습니다. 표는 3.2링깃으로 약 1달러정도의 금액을 내면 됩니다. 조금 기다리자 수트라하버라고 쓰여진 버스가 왔네요 저희말고도 다른 한국인 관광객과 타국의 관광객들이 버스를 많이 이용하더라구요 셔틀버스를 타고 시내로 들어가자마자 젤 처음에 보이는 이마고쇼핑몰에서 내렸습니다. 가장 최근에 지어진 력셔리한 쇼핑몰이라고하네요 약간 백화점 같은 느낌의 쇼핑몰이였어요 시원하고 깨끗하고 좋더라구요 백화점 느낌인 만큼 물건도 좋긴했지만 비싼 기분도 있어서 일단 여기저기 둘러보다가 나갔습니다. 그리고 밖으로 나와서 하염없이 시내를 걷기 시작했습니다. 물론 택시나 그랩등의 교통수단을 이용해도 되었지만 일단 코타키나발루 자체가 크고 넓은 편도 아니고 일단 걸으면서 시내를 구경하는것도 좋을것 같아서였습니다. 날씨는 덥긴했지만 그래도 한국의 한여름 40도를 육박하는 조금만 서 있어도 타 들어가는 듯한 더위는 아니였던 날이여서 걷기 좋았습니다. 걸어 다니며 여기저기 쇼핑몰도 구경하고 이국적인 풍경도 구경하는 재미가 쏠쏠햇습니다. 더워서 시원한 망고쥬스라도 사먹고 싶었는데 길에서 파는 쥬스는 안보이더라구요 어느정도 돌아다니다가 KK플라자 지하로 갔습니다. 지하에 마트에서 기념품을 사기위해서죠 여기가 한국인지 말레이시아인지 ㅋㅋ 한국말로 쓰여진 네이버추천 카야잼이라는 표시 그리고 한국어를 유창하게하는 직원덕에 쇼핑을 잘 할 수 있었습니다. 지인들에게 줄 망고젤리와 달리치약등을 사서 이제 배가 고프니 근처 현지 맛집 식당까지 다녀왔답니다. KK마트에서 거의 근처에 있는 유잇청이라는 코타키나발루 맛집입니다. 네이버에 검색해보면 나오는 맛집이라서 그런지 손님들이 대부분 한국 손님이였답니다. 가게도 넓은 편이고 회전율도 좋아서 살짝 대기하고 바로 자리에 앉을 수 있었습니다.  저희는 국수 카야토스트 그리고 사태라는 말레이시아식 꼬치구이까지! 골고루 시켰습니다. 밖에서 돌아다녀서 시원한 음료가 땡껴 콜라도 시켰구요 현지식 음식이라 향신료 듬뿍이지만 향신료에 대한 거부감 거의 없는 저희는 아주 맛있게 싹싹 먹었답니다. 마젤란수트라하버 리조트로 돌아갈때도 셔틀을 이용해도 되지만 시간이 좀 많이 남아서 택시를 타고 편하게 갔습니다. 택시가 엄청 오래된 차라 에어컨이 안나와서 좀 덥긴했네요 ㅎㅎ 이번엔 키나발루산 트레킹을 한 팀의 사진을 소개시켜드리겠습니다. 키나발루산 트레킹은 막 걸어서 트레킹을 하는 느낌이라기 보단 차를 타고 이동하는 시간이 훨씬 많아서 힘들지는 않았다고 합니다. 키나발루산으로 가는 도중 마을이 있어 시장에 들려 열대과일 구경도 하구요 코타키나발루 까지와서 열대과일중 왕자라는 별명을 지닌 두리안도 안먹어볼수 없겠죠 냄새는 썩은 양파냄새 가 나서 냄새만 맡으면 못먹을 것 같았지만 의외로(?) 너무 맛있어서 다들 잘 먹었답니다. 특히 여직원들이 더 잘먹었다는 소리가 ㅎㅎ 산으로 가는 길에 만난 시원하게 흐르는 계곡물 날이 더워서 계곡물에 풍덩하고 싶은 심정을 뒤로하고 다시 키나발루 산으로 갑니다!가는 길에 히비스커스 꽃도 만났습니다. 히비스커스 꽃 말로만 듣고 말린걸 차로만 마셔봤지 이렇게 눈으로 보는건 다들 처음약간은 무궁화를 닮은 붉은 꽃잎이 너무나도 매력적인 꽃이였답니다. 그리고 울창한 열대 우림까지! 역시 자연이 젤 아름답고 위대한 것 같습니다. 키나발루 산에 올라오지 않았다면 이런 광경을 어디서 볼 수 있었을까요 키니발루산 캐노피 흔들다리도 건넜습니다. 총 4번정도 건너는 거 같은데 흔들흔들요거 은근히 덜덜 떨리더라구요 무서워서 아래를 보지도 못하고 앞만 보고 건넜답니다.  이렇게 자연풍경에 빠져서 길을 열심히 걷는 사이에 키나발루산 정상이 눈앞에 똭~!! 구름위로 보이는 산 정상에 다들 입이 똭~!!어찌나 아름다운 풍경인지 자연은 정말 위대하네요 동남아시아의 최고 높은 산이라고 들었던거 같습니다. 정상까지 갔다오려면 1박2일이 걸린다고 하더라구요 일부러 키나발루산 트레킹을 하려고 오는분들도 있다고 합니다. 저희는 정상까지는 가지 못하고 여기서 기념촬영을 하고 이제 다시 숙소로 돌아갔습니다. 시내투어팀도 키나발루산 트래킹 팀도 모두 숙소에서 잠깐의 휴식을 취하고 이제 짐을 모두 가지고 오후 6시 퇴실을 합니다. 원래 마젤란수트라 하버 퇴실시간은 11시인가 그랬던거 같은데 저희는 골드카드 혜택으로 레이트체크아웃이 가능해서 6시까지 일정을 즐기고 조금이라도 쉬다가 나올수 있어 좋더라구요 퇴실하고 시내에 나와서 야시장 구경을 하는 시간이 주어졌습니다. 야시장에서 가이드님께서 1링깃짜리 코코넛주스나 망고주스를 사주었습니다. 기대하고 먹었는데 시럽이 좀 섞여있는 맛 ㅎㅎㅎ100% 과즙은 아니라 조금 실망했지만 그래도 나름 맛있게 잘 마셨습니다. 이따 몇 시까지 어디로 모이라고 말한 뒤 이제 각자 야시장 구경 오전에 나왔을때의 시내와는 좀 다른 모습이네요 오전은 더워서 였을까요? 오전엔 사람이 많이 보이지 않았는데 오후가 되니 사람들도 많이 보이고 여러가지 장사들이 나와서 인지 좀 더 활기 띈 모습이였습니다. 그래도 위험할 수 있기 때문에 절대 혼자는 다니지 말고 가방은 꼭 앞으로 매고 다녀야 한다고 가이드님께서 신신당부하였답니다. 야시장의 꽃은 역시 열대 과일이죠 ㅎㅎㅎ맛보라고 맛만 보라고 자꾸 말하는 동남아 상인들맛보고 어떻게 안 사냐구요! 저희 밥 먹구 공항가야해서 과일은 못사요 쏘리~야시장구경은 근처의 수공예시장도 구경해봅니다. 우리나라 남대문이나 동대문 시장 정도 되는 느낌의 가게가 빼곡히 자리 잡고 있었구요 여기가 기념품 사기에는 야시장보다 좀 더 볼거리도 많았습니다. 다만 너무너무너무너~~~무 더워서 오래 있지는 못하고 후딱후딱 보고 딱 사야 할 것만 사가지고 나왔네요 저는 여기서 지인에게 줄 드림캐쳐를 샀답니다. 물론 공항에서도 팔지만 여기서는 흥정도 가능하고 더 싸게 살수 있었습니다 :D야시장 구경이 모두 끝나고 이제 저녁먹을 시간 만나는 장소로 다들 시간 맞춰서 잘 와서 식당으로 이동! 무브무브코타키나발루에서의 마지막 저녁식사는 씨푸드였습니다. 뭐 씨푸드 하면 다들 떠올리는 바닷가재 킹크랩 왕새우등의 요리는 아니였지만 생선과 생선탕수, 크림새우, 오징어튀김등 그래도 씨푸드는 맞았네요 마지막 식사이니 만큼 다들 맛있게 잘 먹었답니다. 그렇게 식사를 모두 마치고 이제 공항으로 이동!3박5일간의 짧고도 긴 여행이 끝이났네요 워크샵으로 코타키나발루를 다녀오게 되다니 정말 웹뜰 직원이여서 행복하고 즐거운 시간들이였답니다. 다녀와서 힐링의 시간이 되었던거 같아요 함께한 10년보다 함께할 10년에 더욱 기대감을 가지며 일할 수 있을 것 같습니다. 담번에 또 즐겁고 재밌는 소식으로 찾아뵐께요 웹뜰의 워크샵 첫번째 이야기와 두번째 이야기는 아래 참고하시면 됩니다:)[웹뜰 창립 10주년 해외워크샵] 3월에 다녀온 여름나라 코타키나발루 3박5일 이야기 (1)[웹뜰 창립 10주년 해외워크샵] 3월에 다녀온 여름나라 코타키나발루 3박5일 이야기 (2)#코타키나발루 #워크샵 #해외워크샵 #웹뜰 #웹뜰워크샵 #마젤란수트라하버 #키나발루산 #인천공항 #이스타항공 #시내투어
조회수 1077

우리 운영팀에 봄이 오기를!

1. apollo stack 과 recompose 를 사용하니 별도로 redux, state 관리를 안해줘도 되서 크게 당황중. 신경쓰지 않아도 문제없이 잘 돌아간다.2. recompose 의 API들을 활용하니 대부분의 컴포넌트가 stateless 로 작성할 수 있었다. 몇 안되는 Component들도 생명주기 함수는 드물다.3. bind를 계속 묶어주는 것도 autoBind decorator 를 이용하면 this.foo = this.foo.bind(this); 도 안하고 쓸 수 있다.4. grapql dataloader 부분은 아직도 헷갈린다. 어떻게 구조화해야 batch call을 제대로 할 수 있을지..5. 뭐니뭐니해도 제일 어려운건 schema 정의하기다. 특히 DB 구조상 도메인 표현이 제대로 안되어있는데 graphql schema 로 최대한 도메인에 가깝게 표현하려다보니 쉽지가 않다.6. query, mutate를 받아주는 serverless QL 과 subscription 을 유지하는 serverQL, DB connection Pool을 유지하는 API server와 그 앞단에 redis로 서버를 구성하고 싶다. 별도의 pubsub 서비스가 필요할지 redis 로 할 수 있을지 궁금.7. 도메인 표현을 위해 더 많은 db 스키마가 필요한데 이건 scaphold 나 graphCool 의 무료 할당량을 이용해서 빠르게 구현할 예정. 보통 설계가 누락된 도메인 모델은 backoffice 를 위해 구현이 필요한 경우가 많아서 요청량이 적어 충분히 버틸 수 있어보임.8. 플레이팅 운영팀에 봄이 오기를.#플레이팅 #개발 #개발자 #개발일지 #인사이트 #경험공유
조회수 1584

Mong 3.0과 프론트엔드개발자 쿤!, 반응형 웹에 도전하다!!

안녕하세요 크몽 개발팀입니다.작년 12월 크몽파티때 기억나시나요? 프론트엔드개발자인 저 쿤이 그날 반응형웹을 1~2월달까지 시전하겠다! 라고 호언장담했었는데요.. 저도 그때당시에는 무조건 해보자라는 생각으로 얘길했던건데.. 팀원들의 반응이...이랬었더랬죠... 그때의 저의 심정은 가슴이 바운스바운스 두근대~... 넵 그랬었습니다...하지만!!! 1월달에 잠시했던 공부와 2월달에 잠시얻은 잉여로움을 발판삼아 전부는 아니지만 메인페이지만 해내었습니다. 처음의 도전은 험난하디 험난했습니다.여러 문서들을 보던가운데 반응형웹을 잘 소화하고 계시는 기업블로그의 포스팅을보게 되었는데요..출처: S사 기업블로그한마디로 이해가 쏙쏙되는 포스팅이었습니다.여기에 감명받은 저 쿤은 바로 연습에 들어갔더랬죠..하지만.. 각각 디바이스에대해 설정값을 넣어줘야하는반응형 웹은 쉽게 다가갈 수 없는 미저리같은 그런 녀석이었습니다아..그래도.. 다시 심기일전하는 마음으로 처음부터 모크업을 진행을 하였답니다. 처음 모크업은 이러하였어요...메인화면 소개를 거치면 짠하고 크몽홈페이지가뜨는!!!!그런 이미지였답니다. 하지만 여러분들도 알다시피 계획한일들이 안될경우도 있잖아유....저도 그러하였어요..물론 처음시작할때에만 하더라두 이것들을 다끝내겠어란활활 불타오르는 열정으로 시작했었죠!!처음작업을해서 뽑아낸 아이들의 사진이에요. 상단바를 각 디바이스크기에 맞게 하는 작업을 먼저 했었는데요..이 녀석이 은근 골치 아픈 녀석이었답니다.각 위치마다 고정폭이 정해져있어고 그녀석들을 반응형에 맞출려고 얼마나 고생했는지.. 가뜩이나 수학도 못하는데 퍼센트 계산만 했엇답니다.. 저에게 퍼센트도 이러했답니다.. 하.....수학공부를 열심히해야겠어요..그래도 꿋꿋이 계산하고 넣어보고 계산하고 넣어보고 계산하고 넣어보고 즐기고~그러다 보니 점점 하나하나씩 되기 시작했어요!!머리는 점점 잘 돌아가고 재능목록들이 자기자리로 돌아가고!!!!노력의 기적이 어떤것인지 보았습니다.. 이리하여 결국에는..이러한 결과를 낳았더랬죠!! 실은 작업한지 꽤나됬고 릴리즈된지도 꽤나되었지만..아마두.. 모르시는 분들이 많을거에요지금 여러분들이 가지고 계신 폰으로 크몽의 반응형메인을 만나실 수 있답니다~!!한번 보시고 따끔한 충고를 답글에 남겨주세요. 따끔하게 맞고 고칠 수 있는부분은 한번씩 잉여로울때 작업을 하도록하겠습니다. -----------------------------------------------------------------------그럼 지금부터는..제가 이번작업을 하면서 느꼇던 몇가지를 적어볼까합니다.바로바로바로 당신이 반응형웹을 하고싶다면!!  따단!!그 첫번째 규칙!! 절대 고정폭을 주지말아라-이것이 반응형웹할때는 가장 중요한 거십니다.반응형웹이라도 픽셀은 PC와 노트북에서 여러분의 눈에 보이는것과 마찬가지로 적용된다는점!!!만약에 고정폭으로 1200px를 주게되었다면 데스크탑이나 노트북에서는 보기좋게 보이지만모바일환경에서는 엄청확대되어보인다는 사실 아셨나요??! 그럼 "고정폭대신 CSS에 뭘 줘야되는건가요?"라고 묻는 당신께 퍼센트(%)를 바칩니다.. CSS에 픽셀(px)대신 퍼센트(%)를 넣으면 여러분이 브라우저크기를 낮출때마다화면이 가변적으로 늘어난답니다. 물론 퍼센트는 백분율이라 화면의 크기에 맞게크기를 지정해주면 된답니다.그 두번째 규칙!! 미디어쿼리를 활용하랏!!!-미디어쿼리... 과연 그거슨 무엇인것인가!!!쉽게 설명해드리겠습니다. 미디어쿼리란 여러분의 브라우저크기를 컴퓨터가 인식해그 크기에맡게 보여주는 그런 녀석입니다.여러분들이 딱히 할게 별거없어요..그냥 미디어쿼리를 CSS에 설정해주고 그 크기에맡게 어떻게 보여줄것인가에 대해작성해주시면 되는겁니다. 참 쉽죠오?? 으앗!!음.. 일단 자세한 내용은 저의 스승블로그의 포스팅을 보시면 쉬울거에요..http://readme.skplanet.com/?p=9739#s5반응형 웹 기술 이해 | READMEreadme.skplanet.com그 세번째 규칙!! 같은줄에 있는 컨텐츠가 다들어가기엔 모바일화면이 너무작다면 밑으로 내리여!!!-분명 여러분들의 홈페이지를 작업할때에 보면 PC사항에서 잘 자리잡혀 있던것이 모바일환경에선 왠지 좁아 터질 것같다라고생각이 드실수 있습니다. 그렇다면.. 밑쪽으로 내리는 것을 저는 추우천을 드립니다!!그렇담 그 컨텐츠가 내려간다면 배치는 어떻게 해야 이쁜가에대한 저의 답변은 "그건 디자이너님 너의 맘이야 God bless you"입니다. 그 네번째 규칙!! 부트스트랩 같은 녀석들을 사용하랏~!!!!-아마 직접 CSS와 js를 조작하라고해도 못하시는 분들이 있으실거에요..그런분들을 위해 태나났습니다아~!!!! 바로바로바로 부트스트랩과같은 것들인데요.이 녀석들은 자기들이 설정해놓은 CSS집단인 컴포넌트로 웹개발자들을위협(?)하는 그런 녀석이랍니다.이 뇬석들을 사용하면 반응형웹이고뭐고 멋진표던뭐던 다 뚝딱뚝딱 만들어내죠..저도 애용하고있는 아이들이랍니다.(실은.. 상단바작업은 제가 CSS로했고 컨텐츠들은 부트스트랩이란 도구로 작업을 하였는데요.. 그시간차이가 우와 할정도에요..)그 정도로 좋은 녀석이랍니다. 그 녀석을 찾으실려면 구글검색창에 "부트스트랩"이라고 쳐보세요.CSS무지식개발자라도 쓰실수있게 패키지가 구성되어있답니다. 아무 클래스나 골라담아요 골라담아~!!-----------------------------------------------------------------------음음.. 뭐 별거없었지만 제가 올린 포스팅글 잘보셨는지 궁금하네요..꼭 반응형웹에 도전하시는 분들이 봤을때 좋은 내용이었으면 좋겠다는 작은 바램이 생기네요그럼 저는 크몽에서 프론트엔드 개발자를 맡고있는 Kun이었구요.다음번에 더 좋은 포스팅으로 만나뵈요. 제발~#크몽 #개발자 #개발팀 #팀원소개 #인사이트 #스택도입 #일지
조회수 196

화가 날 땐 참지 말고 태워버리세요.

당신은 화가 날 때어떻게 하시나요?1. 화를 낸다. 2. 참는다. 1번을 선택한 당신은?그럼요. 화가 나면 바로바로 화를 내야죠. 어떻게 화를 참나요? 그렇게 화를 내야 상대방도 내가 화가 났다는 사실을 알고 조심하지 않겠어요? 그런데 화를 내고 나면, 당시에는 후련하지만 조금 지나고 나서 후회가 되기도 해요. 조금만 참았으면 괜찮았을까 싶어서요. 한번 화가 나면 조절이 안 될 때가 있거든요. 저도 그러고 싶어서 그러는 게 아닌데, 사람들이 저를 화만 내는 사람인 줄 아는 것 같아서 더 화가 나요. 화가 난다. 화가 난다                                                 2번을 선택한 당신은?어떻게 화가 난다고 내 감정을 다 표현할 수가 있겠어요. 화가 나긴 하지만, 꾹 참고 넘어가는 거죠. 나만 잠깐 참고 넘어가면 모두가 다 편안해지는 걸요. 그런데 그렇게 참다 보니 내 속에 화가 가득 차 버렸나 봐요. 가슴이 막 답답해서 숨이 가빠올 때가 있어요. 이러다 정말 내가 정말 화병으로 죽을지도 모른다는 생각이 들지만, 내가 화를 내면 나를 떠날까 봐 두려워요. 이젠 화를 내는 방법조차 잊어버렸어요. 어떻게 화를 내야 하는 건가요. 화를 참자. 화를 참자                                                           그래요. 당신 말이 다 맞아요. 이 글을 읽고 있는 바로 당신. 화가 날 땐 화를 내기도 하고, 내고 나서 괜히 화냈나 후회하기도 하는, 화가 나지만 모두의 평화를 위해 참기도 하는 바로 당신 말이에요. 그런 당신을 위해 태어났습니다.화를 낼 수도 없고, 안 낼 수도 없다면대신 분노해드리겠습니다.주인님. 화라는 것은 눈에 보이지 않아서 얼마나 쌓였는지도 모르기 때문에, 누군가에게 던져서 상처를 주거나 내 몸에 쌓아서 결국 내 몸에 병이 나게 하죠. 그래서 생각했습니다. 눈에 보이지 않는 화를보이게 만들면 어떨까?화를 보이게 만들고 그것을 태워서 나의 화가 사라질 수 있다면? 그렇게 나를 힘들게 하는 감정들을 녹여서 없앨 수 있다면, 사람들이(그리고 나도) 좀 편안해질 수 있지 않을까?  그렇게 태어난 스트레스 컴퍼니의 첫 번째 상품인 분노 캔들은 "분노는 마음에 담아두는 것이 아닙니다"라는 콘셉트로 제작되었습니다. 눈 부분이 심지로 되어있어, 쌍심지를 켜고 대신 화를 내준답니다. 분노캔들과 분노캔들 DIY 키트처음에는 화가 날 때 씹어먹거나 천천히 녹여 먹을 수 있는 사탕이나 초콜릿을 생각했습니다. 그래서 초콜릿을 만들어보겠다고 방산시장을 들락거렸지만, 먹는 걸 만드는 것은 꽤 까다롭더군요. 폭망하여 상심하고 있을 때 친구가 캔들은 어떠냐며 추천해주더군요. 그래 바로 이거야. 신난다. 분노를 태우자! 그때부터 시중에 있는 모든 양초 재료들을 리서치했습니다. 소이 왁스와 파라핀, 만지락, 밀랍 왁스를 가지고 부어서도 만들고 붙여서도 만들고 말아서도 만들어본 후에야 밀랍 시트를 말아서 만드는 형태로 만들어야겠다고 결정하게 됐지요.다채로운 분노캔들의 변천사                                     그 모습을 본 친구들이 그렇게 일일이 손으로 만들어서 어떻게 돈을 벌겠냐며 공장에서 대량 생산할 수 있는 형태로 만들어야 한다고 말렸지만, 저는 그냥 그렇게 손으로 말아서 만드는 게 좋았습니다. 그래서 회사를 만든 지 4년이 지난 지금도 주문이 들어오면 손으로 만들고 있습니다. 하하 만드는 사람이 행복해야 쓰는 사람도 행복할 수 있다고 믿었기 때문입니다. 그리고 그래야만 그 사업이 지속될 수 있다고 지금도 여전히 믿고 있습니다. 그랬기에 밀랍 시트를 자르고 나무 심지를 자르고 또 심지에 시트를 덧입히고 그 재료들을 정성껏 말아서 만드는 분노 캔들을 탄생시키고야 만 것입니다. 분노캔들 첫 번째 버전. 누가 만들었는지 참 귀엽네요.                           끝인 줄 알았죠?그런데 처음부터 분노 캔들이 쌍심지였던 것은 아니었습니다. 그리고 지금처럼 나무 심지도 아니었어요. 그런데 면 심지보다 나무 심지가 더 불꽃이 크고 타닥타닥 소리가 나니까 타는 소리로도 힐링이 될 수 있겠다는 생각이 들더라고요. 코, 눈, 볼 심지의 위치 테스트                                     분노캔들의 사이즈 테스트                                     그리고 처음부터 지금의 사이즈도 아니었어요. 과연 어떤 사이즈가 적당할 것인가 한참을 고민하다가 분노 캔들을 켜고 마음을 다스릴 수 있는 가장 적당한 시간이 30분 정도라고 느꼈고, 그 시간 동안 화난 얼굴을 다 녹여버릴 수 있는 사이즈로 결정하게 되었습니다. 그렇지만 분노 캔들은 얼굴이 다 녹은 후에도 대략 2시간 정도 액체상태로 끝까지 탑니다. 그렇게 제작한 분노 캔들은 인체에 유해성이 없다는 인증절차를 거쳐서 KC 마크도 받았습니다. 분노캔들의 첫번째 버전. 분노캔들을 켜고 마음을 식힐 수 있도록 메뉴얼이 같이 들어있습니다. 분노캔들 두 번째 버전. 책을 빼고 크기를 더 키웠습니다. 더 귀여워졌네요!           혼자서 꼬물꼬물 만들면서 그런 생각을 했습니다. 지금은 내가 혼자 만들고 있지만, 분노 캔들이 많이 팔리면 동네의 손재주 좋은 아줌마들, 할머니들과 함께 만들고 그들에게 일자리를 주는 사회적 기업으로 발전시키고 싶다는 야무진 꿈을 꿨었지만, 아직까지 그렇게 많이 팔리지는 않아서 혼자서 만들고 있습니다. 그렇지만 언젠가는 제 꿈을 현실화시킬 수 있는 날이 오겠지요? 그때까지 지치지 않고 차근차근히 만들어나가겠습니다.  분노 단계에 따라서 색상을 선택할 수 있어요.분노캔들은 스트레스컴퍼니샵에서 구매 가능합니다.*이 글은 2016년 다음 스토리 펀딩에 연재했던 글을 수정하여 올린 글입니다. ⓒ스트레스컴퍼니 - 무단 전재-재배포 금지 #스트레스컴퍼니 #심리스타트업 #스트레스관리 #서비스소개
조회수 4169

Kubernetes을 활용한 분산 부하 테스팅

Kubernetes을 활용한 분산 부하 테스팅동명의 글이 Google Cloud Platform에도 있으니 여기서는 여태까지 한 삽질과 교훈에 집중한다.첫 시도 ngrinder처음에는 ngrinder로 부하 테스트 환경을 구축하려 했다. 몇 달 전에 부하 테스트를 진행할 때 잠시 쓴 적이 있었기 때문에 굳이 다른 솔루션을 찾을 이유가 없었다. 하지만 결국 후회하고 다른 솔루션으로 넘어갔는데 그 이유를 중요한 순으로 꼽자면로컬 개발환경과 실제 환경이 차이가 많다. 로컬에서는 JUnit 기반으로 개발과 디버깅이 가능하다. 하지만 이렇게 작성한 코드를 ngrinder에 넣으려 하면 외부 라이브러리가 문제가 된다. .jar 등 패키지 파일을 업로드하는 방식이 아니라 Groovy 스크립트 따로 스크립트에서 사용하는 라이브러리 따로 업로드를 해야 하는데 상당히 번거롭다.웹 UI를 통해 설정한 내용이 내장 데이터베이스에 바이너리로 들어가기 때문에 ngrinder 데이터를 관리하기가 힘들다.개발이 활발하지 않다. 주력 개발자가 Naver를 떠났다는 이야기도 있긴 한데 아무튼 커밋 히스토리를 보면 개발이 정체되어 있는 건 분명하다.설계가 진보적이지 않다. 예를 들어 현재 쓰레드의 ID를 시스템이 직접 계산해서 주입하지 않고 개발자가 주어진 코드 스니펫을 Copy & Paste 해야 하는 이유를 모르겠다.등이 있다. 이런 까닭에 좀더 간단한 솔루션을 찾아보았다.대안몇 가지 대안을 살펴보았는데Artillery는 테스트 스크립트를 yaml로 기술하기 때문에 얼핏 쉬워보이지만 이런 식의 접근 방법은 매번 실망만 안겨주었다. 조금만 테스트 시나리오가 복잡해지면 일반적인 코딩보다 설정 파일이 훨씬 짜기가 어렵고 이해하기도 어렵다.config: target: 'https://my.app.dev' phases: - duration: 60 arrivalRate: 20 defaults: headers: x-my-service-auth: '987401838271002188298567' scenarios: - flow: - get: url: "/api/resource"Gatling은 아직 분산 서비스를 지원하지 않아서 제외했다. 팀 내에 Scala 개발경험이 있는 사람이 극소수인 점도 문제였다.Locust로 정착이런 까닭에 Locust로 넘어왔다. 장점은파이썬 스크립트로 시나리오를 작성하니 내부에 개발인력이 충분하다.로컬환경과 실제 부하테스팅 환경이 동일하다. 즉, 디버깅하기 쉽다.Locust 데이터를 Dockerize하기 쉽다.한마디로 ngrinder에서 아쉬웠던 점이 모두 해결됐다. 반면 ngrinder에 비해 못한 면도 많긴 하다.통계가 세밀하지 않다.테스트 시나리오를 세밀하게 조정하기 힘들다.현재로썬 그때그때 가볍게 시나리오를 작성해서 가볍게 돌려보는 게 중요하지 세밀함은 그리 중요하지 않아서 Locust가 더 나아 보인다. 시나리오는 몰라도 통계의 경우, DataDog 같은 모니터링 시스템에서 추가로 정보를 제공받기 때문에 큰 문제도 아니긴 하다.결과물Locust on KubernetesGoogleCloudPlatform/distributed-load-testing-using-kubernetes에 있는 소소코드를 참고로 작업하면 된다. 단지 Dockerfile의 경우, 테스트 스크립트만 바뀌고 파이썬 패키지는 변경사항이 없는 경우에도 파이썬 스크립트 전체를 새로 빌드하는 문제가 있다.# Add the external tasks directory into /tasks ADD locust-tasks /locust-tasks# Install the required dependencies via pip RUN pip install -r /locust-tasks/requirements.txt 그러므로 이 부분을 살짝 고쳐주면 좋다.ADD locust-tasks/requirements.txt /locust-tasks/requirements.txtRUN pip install -r /locust-tasks/requirements.txtADD locust-tasks /locust-tasksngrinder on Kubernetesngrinder를 Kubernetes v1.4.0 위에서 돌리는데 사용한 설정은 다음과 같다. 참고로 dailyhotel/ngrinder-data는 ngrinder의 데이터만 따로 뽑아서 관리하는 도커 이미지이다.ControllerapiVersion: v1 kind: Service metadata:  name: ngrinder  labels:  app: ngrinder  tier: middle  dns: route53  annotations:  domainName: “ngrinder.test.com” spec:  ports:  # the port that this service should serve on  — name: port80  port: 80  targetPort: 80  protocol: TCP  — name: port16001  port: 16001  targetPort: 16001  protocol: TCP  — name: port12000  port: 12000  targetPort: 12000  protocol: TCP  — name: port12001  port: 12001  targetPort: 12001  protocol: TCP  — name: port12002  port: 12002  targetPort: 12002  protocol: TCP  — name: port12003  port: 12003  targetPort: 12003  protocol: TCP  — name: port12004  port: 12004  targetPort: 12004  protocol: TCP  — name: port12005  port: 12005  targetPort: 12005  protocol: TCP  — name: port12006  port: 12006  targetPort: 12006  protocol: TCP  — name: port12007  port: 12007  targetPort: 12007  protocol: TCP  — name: port12008  port: 12008  targetPort: 12008  protocol: TCP  — name: port12009  port: 12009  targetPort: 12009  protocol: TCP  selector:  app: ngrinder  tier: middle  type: LoadBalancer  — - apiVersion: extensions/v1beta1 kind: Deployment metadata:  name: ngrinder spec:  replicas: 1  template:  metadata:  labels:  app: ngrinder  tier: middle  spec:  containers:  — name: ngrinder-data  image: dailyhotel/ngrinder-data:latest  imagePullPolicy: Always  volumeMounts:  — mountPath: /opt/ngrinder-controller  name: ngrinder-data-volume  — name: ngrinder  image: ngrinder/controller:latest  resources:  requests:  cpu: 800m  ports:  — containerPort: 80  — containerPort: 16001  — containerPort: 12000  — containerPort: 12001  — containerPort: 12002  — containerPort: 12003  — containerPort: 12004  — containerPort: 12005  — containerPort: 12006  — containerPort: 12007  — containerPort: 12008  — containerPort: 12009  volumeMounts:  — mountPath: /opt/ngrinder-controller  name: ngrinder-data-volume  volumes:  — name: ngrinder-data-volume  emptyDir: {}AgentsapiVersion: extensions/v1beta1 kind: Deployment metadata:  name: ngrinder-agent spec:  replicas: 5  template:  metadata:  labels:  app: ngrinder-agent  tier: middle  spec:  containers:  — name: ngrinder-agent  image: ngrinder/agent:latest  imagePullPolicy: Always  resources:  requests:  cpu: 300m  args: [“ngrinder.test.com:80”]구 블로그 시절의 댓글#데일리 #데일리호텔 #개발 #개발자 #개발팀 #기술스택 #도입후기 #일지 #Kubernetes #인사이트

기업문화 엿볼 때, 더팀스

로그인

/