스토리 홈

인터뷰

피드

뉴스

조회수 1140

자유로운 영혼을 가진 잔디 PM(Product Manager) , Jay를 만나다

[맛있는 인터뷰] 자유로운 영혼을 가진 잔디 PM(Product Manager), Jay를 만나다                    인터뷰 욕구를 자극하는 Jay의 자세. 일반인의 그 것과 다르다.       누군가를 고통으로부터 해방시켜 줄 수 있다는 것은  정말 좋은 거잖아요.       잔디를 통해서 누군가의 고통이 사라졌으면 좋겠어요.        – Jay, 잔디 PM(Product Manager)편집자 주: 잔디에는 현재 40명 가까운 구성원들이 일본, 대만, 한국 오피스에서 일하고 있습니다. 국적, 학력, 경험이 모두 다른 멤버들. 이들이 어떤 스토리를 갖고 잔디에 합류했는지, 잔디에서 무슨 일을 하고 있는지 궁금해 하시는 분들이 많았습니다. 이에 잔디 블로그에서는 매주 1회 ‘맛있는 인터뷰’라는 인터뷰 시리즈로 기업용 사내 메신저 ‘잔디’를 만드는 사람들의 이야기를 다루고자 합니다. 인터뷰는 매주 선정된 인터뷰어와 인터뷰이가 1시간 동안 점심을 함께 하며 다양한 이야기를 나누며 진행됩니다. 인터뷰이에 대해 궁금한 점은 댓글 혹은 이메일([email protected])을 통해 문의 부탁드립니다.오늘 저희가 먹게 될 ‘맛있는 점심’은 무엇인가요?사진 잘 나오는 곳으로 가도 될까요?(웃음) 테라스가 있는 곳으로 가고 싶은데… 맛은 모르겠지만 서브웨이 샌드위치 먹으며 공원에서 얘기하면 어떨까요?자기소개 부탁 드려요.안녕하세요? 평생 여행만 하다가 여행지에서 죽을 줄 알았던 Jay입니다. 대학교 때 사회학을 전공하다가 우연히 아는 형의 IT회사에서 PM일을 시작했어요. 그러다 보니 자연스레 지금까지 PM일을 하고 있습니다.PM(Product Manager)은 어떤 일을 하는거예요?기획 업무는 서비스의 새로운 기능이나 피처(feature)가 생기면, 기능이 어떻게 작동할지 혹은 어떤 방식으로 구현될지 와이어 프레임을 그리거나 기능 요구 사항들을 정리하는 일을 해요. 다양한 일을 두서없이 해내는 것이 바로 PM의 역할이라고 생각해요. 혼돈 속에서  나름의 질서를 잡아가는 역할이죠.다양한 일을 두서없이?PM 업무 자체가 A to Z까지 크고 작은 일을 처리해야 하는 경우가 많아요. 마케팅 문구가 필요한 데 없으면 만들어야 하고 이미지가 빠져 있으면 포토샵으로 제작해 넣거나, 간단한 코딩 업무를 해야 하는 상황이 있기도 해요.                                              매의 눈으로 업무 중인 JayPM 업무를 하려면 디테일해야 할 것 같아요.사실 PM의 가장 중요한 자질 중 하나가 세심함이라고 생각해요. 사실 저도 디테일에 강한 사람은 아니었지만 지금은 작은 부분까지 챙기려 노력하는 편이고, 또 그렇게 되어가는 것 같아요. 아주 사소한 실수 하나가 제품의 퀄리티를 좌지우지 할 수 있으니까요.사회학을 전공하셨다 하셨는데, 어떻게 기획 일을 시작하게 되셨는지 좀 더 말씀해주시겠어요?아까도 말씀드린 것처럼, 우연히 아는 형의 회사에 들어가 기획일을 하기 시작했어요. 이쪽 일을 하다 보니  PM 업무가 장인 정신이 필요하구나를 느꼈는데요. 제품의 크고 작은 부분까지 직접 챙겨가며 만들어 낸다는 사실이 참 좋았어요. 우연한 기회 덕분에 PM 업무를 알게 되었고, 이렇게 잔디에서도 같은 업무를 하고 있습니다.잔디는 어떻게 합류하게 되셨나요?가끔 잔디를 도와주시는 스포카의 CEO 손성훈님의 소개로 알게 되었어요. YB(잔디의 COO)를 비롯한 경영진을 만나고 난 후, 두 달여간 고심한 끝에 합류하기로 결정했습니다. YB는 특유의 젠틀함뿐만 아니라,  “내가 이 사람에게 신뢰를 얻기 위해 노력하고 싶다”는 생각을 하게 만드는 매력을 갖고 있어요. 이런 요소들이 잔디에 들어오게 된 결정적인 계기가 된 것 같아요.잔디에서의 생활은 만족하시나요?교과서적인 대답이 될 수도 있지만 굉장히 만족하고 있어요. 잔디를 구성하고 있는 팀원들이 정말 좋아요. 구성원 모두 제품을 더 좋게 만들고 싶다는 뚜렷한 목표를 가지고 있어요. 그 목표 달성하기 위해 각자 맡은 포지션에서 열심히 하고 있고, 이런 점이 잔디에서의 생활에 크게 만족하는 이유 중 하나에요.조금 더 자세히 말씀해 주시겠어요?예를 들면, 어떤 기능을 추가하는 데 있어 각자의 시각이 다를 수 있잖아요? A라는 기능에 대해 ‘더 보기 좋아서’, ‘사용하기 편해서’, 혹은 ‘더 프로페셔널 하기 때문에’ 라는 다양한 시각이 존재하는 것처럼요. 이유는 다르지만 제품을 더 좋게 만들겠다는 궁극적인 목표가 일치하기 때문에 모두가 같은 방향을 향해 나아가는 거죠. 그런 점이 정말 좋아요.                                                  잔디 멤버 단체샷혹시 회사에 하고 싶은 말이 있다면?함께 공부하는 문화가 생기면 좋을 것 같아요. 훌륭한 분들이 많이 계신 만큼 서로 가지고 있는 지식과 경험을 공유하거나 관련 케이스를 공부할 수 있는 기회가 있으면 좋겠어요.본인에게 가장 인상 깊은 혹은 가장 즐거운 잔디만의 문화가 있다면?Respect! 많은 스타트업들처럼 잔디에도 자유로움, 유연함, 젊음 등이 있지만 잔디의 가장 인상 깊은 키워드를 꼽으라면 ‘존중’을 말하고 싶어요.‘Respect’를 꼽은 이유가 무엇인가요?제품에 대한 욕심으로 논쟁 중 서로에게 상처가 되는 말을 여과 없이 하는 걸 많이 봐왔는데요. 아무리 백만불짜리 아이디어를 가지고 있다고 해도, 아이디어 자체만으론 10원의 가치도 없다고 생각해요. 그 아이디어를 구체화 시키는 건 혼자선 불가능하고, 결국 팀워크가 중요해요. 좋은 팀워크를 위해서는 서로를 존중하는 문화가 있어야 한다고 생각합니다.그렇다면 제품에 대한 질문을 한가지 드릴게요. 본인이 만들고 싶은 ‘잔디’는 어떤 모습인가요?잔디를 통해 누군가의 고통이 사라졌으면 좋겠어요. 시장이 존재한다는 것은 달리 말하면 누군가는 불편함을 겪고 있고 이를 해결하기 위한 서비스를 찾고 있다는 걸 의미해요. 이 시장에서 누군가의 고통이나 고민을 해결할 수 있다는 건 꽤 의미 있는 일이 아닐까요? 그게 제가 잔디에서 하고 있는 일의 핵심이기도 하구요.인터뷰 미리 준비하셨나요? 답변이 참 매끄럽네요. 쉬는 날엔 주로 어떤 걸 하세요?맥주를 즐겨 마셔서 주로 맥주 많이 마시고요, 전자음악도 좋아해요. 전자음악을 즐기는 친구들과 가끔 공연을 가기도 해요. 고등학교 때는 잠시 밴드를 한 적도 있었는데, 요즘엔 밴드 음악은 즐겨 듣진 않아요.전자음악을 좋아하시면 직접 만들기도 하세요?Mixing은 해요. 뭐, 프로듀싱까지는 못하고요. 그냥 이것저것 모아서 섞는 정도라고 해야 할까요. 그런 정도는 해요.                              ‘팔방미인’이란 단어는 이럴 때 쓰는 거라고 배웠다.굉장히 다양한 관심사를 가지셨네요.사실 영상 쪽에도 관심이 많아서 After Effects라는 프로그램을 이용해 종종 작업을 하기도 했어요. 포스트 디자인도 해보고, 연극 티저도 만들어보곤 했구요. 기회가 닿아 무대 영상 작업도 해보았어요. 이렇게 여러 가지 일들을 하다 보니 각각에 필요한 일러스트레이터나 포토샵을 배우기도 했고요.무대 영상이라면 어떤 거에요?요즘엔 흔하지만 연극 배경 대신에 프로젝션으로 무대 분위기를 만들어 낸다거나, 소품을 프로젝션으로 구현한다거나 하는 것도 해보고요.여행을 좋아하시는 것 같아요.직장인 중에 여행 싫어하는 사람 어디 있겠어요? (하하) 여행을 하면 스스로가 좋은 사람이 되는 것 같아요. 낯선 곳에 가면 자의든 타의든 타인에게 친절해지고, 살아남기 위해 적극적이 되니까요. 그래서 여행을 하면 한 단계 더 발전하는 것 같아요.흥미로운 답변이네요.한번은 필리핀에 갔는데 도착하자마자 비가 오는 거예요. 숙소는 찾아야 하는데 지도는 젖어 있고 몸은 으슬으슬해서 엎친데 덮친격이었죠. 살아야겠단 생각에 이 사람 저 사람 붙잡고 도움을 청했는데요. 더 많이 웃게 되더라고요.가장 좋았던 여행지는 어디에요?남미 최남단에 있는 안데스 산맥의 빙산을 본 게 아직도 생생해요. 웬만한 빌딩 크기의 빙하가 무너지는 장면을 목격했는데 참 멋졌어요.                                      Jay가 카메라에 담은 안데스 산맥의 절경꿈이 있다면 혹시 말씀해주실 수 있을까요?좋아하는 것과 커리어 목적으로 추구하는 게 함께 갈 수 있으면 좋겠단 생각을 하곤 해요. 이를테면, 전 여행을 좋아하니 여행을 하며 동시에 일을 하는 거죠. 디지털노마드라고도 불리는데 요즘 이런 움직임이 많아서 관련 커뮤니티도 있더라구요.  동남아 같은 곳에서 일을 하며 동시에 여행하는 사람들을 가르켜  ‘디지털 히피’ 라고 부르기도 하더라구요.답변들이 깨알같이 알차네요. 마지막으로 다음 인터뷰이를 위한 질문 아이디어가 있다면?좋은 프로덕트란 무엇인지, 어떤 생각을 갖고 있는지 물어주셨으면 좋겠습니다.Jay와의 인터뷰는 베스킨라빈스의 슈팅스타맛 아이스크림 같았습니다. 톡톡 튀는 Jay의 자유분방함을 온몸으로 느낄 수 있었거든요. 다음 주 ‘맛있는 인터뷰’는 잔디의 안드로이드 개발자 Steave와 함께 할 예정입니다. 많은 기대 부탁 드려요!#토스랩 #잔디 #JANDI #PM #업무 #팀원소개 #팀원인터뷰 #팀원자랑 #기업문화 #조직문화 #사내문화 #존중 #respect
조회수 2080

디너의여왕 탐구 생활_인터뷰2. 개발팀

안녕하세요 :)오늘은 "디너의여왕 탐구생활"개발팀 편을 들고 왔습니다.개발팀 열일 현장입니다.무슨 뜻인지 모를 단어들이컴퓨터에 가득가득하네요!이제 그들과 인터뷰를 진행하면서본격적으로 파헤쳐 보도록 하겠습니다!!!오늘 인터뷰는 개발팀의 3인가디님, 월리님, 펭돌이님과인터뷰를 진행해보겠습니다 :-)첫번째 인터뷰는개발팀 가디님과 진행하겠습니다.Q. 현재 담당하고 계신직무에 대해 소개 부탁드려요. A. 저는 디너의여왕에서데이터 수집과Elasticsearch와 관련된검색시스템을 담당하고 있습니다.  Q. 어떤 동기를 갖고해당 직무에 지원하게 되었나요? A. 개인 프로젝트로기본적인 검색엔진 시스템을구축해 본 적이 있었는데,해당 경험을 살릴 수 있는소중한 기회라 생각해서해당 직무에 지원하게 되었습니다.Q. 해당 직무에 필요한 역량이 있다면무엇일까요?  A. 검색 시스템의전체적인 흐름을 아는 것이아무래도 업무를 수행하는데 도움이 됩니다.그리고 관련된 자료가 한국어로는 흔하지 않기 때문에필요한 자료들을 잘 찾을 수 있는스킬이 필요할 것 같습니다.Q. 해당 직무에서 일할 때 사용하는자신만의 스킬, 노하우가 있다면 무엇인가요? A. 직무와 관련된 자료는아무래도 영문이 많은데다행히 제가 익숙한 일본어로도양질의 자료가 있어서자료를 얻는데 도움이 되고 있습니다.Q. 해당 직무에서 일하면서 즐거웠던 적,힘들었던 적이 있다면 언제일까요?  검색과 관련된 기능은 Elasticsearch에서많은 것을 처리해 주기는 하지만여전히 개발자가 직접 처리해 주어야 하는작업들이 있습니다.다소 지루하게 느껴질 수 있는 부분이지만시행착오를 겪으면서조금씩 개선이 되는 시스템을 보면서보람을 느낄 수 있었습니다.두 번째 인터뷰는개발팀 월리님과 진행하겠습니다.Q. 현재 담당하고 계신 직무에 대해소개 부탁드려요.  디너의여왕 웹 프론트엔드 개발을맡고있습니다.Q. 어떤 동기를 갖고해당 직무에 지원하게 되었나요?디자인을 직접 코딩해서나오는 표현이 재밌어서 시작했는데마침 타이밍 맞게 여기에 기회가 생겨서요.Q. 해당 직무에 필요한 역량이 있다면 무엇일까요?  기본적인 html/ css/ javascript에 대한기본적인 이해가 일단 필요하고요,프론트엔드 분야가 일반적으로가장 노출이 많이 되는 부분이다 보니일반적으로 개발만 하는 것보다는UX/UI에 대한 고민하는 자세가가장 중요한 것 같습니다.  Q. 해당 직무에서 일할 때 사용하는 자신만의 스킬, 노하우가 있다면 무엇인가요?  저도 부족한데 뭐…코딩은 왕도가 없습니다.일단 많이 뜯어고쳐보고또 삽질도 많이 해봐야 한다고 생각합니다.  그러다 보면 자연스럽게 익혀져서나만의 노하우가 생긴다고 보면 됩니다!Q. 해당 직무에서 일하면서 즐거웠던 적,힘들었던 적이 있다면 언제일까요?  프론트엔드 개발자로서내가 만든 코드가실제 서비스에 나온다는 것 자체가보람찬 일입니다.힘든 건 묻지 마세요Q. 마지막으로, 디너의여왕이 될지원자들에게 한 마디 부탁드려요. 어솨요 반가버요 ヽ(‘ ∇‘ )ノ세 번째 인터뷰입니다.개발팀 펭돌이님과 함께 진행하겠습니다!Q. 현재 담당하고 계신직무에 대해 소개 부탁드려요.  A. 안녕하세요.저는 디너의여왕에서 사용되는웹 서비스 백엔드를 개발하고 있어요.  Q. 어떤 동기를 갖고 해당 직무에지원하게 되었나요?  A. 실시간 트래픽이 높은 웹 서비스를개발해보고 싶은 욕심이 있었어요.트래픽이 높으면 신경 써야 할 것들이여러 가지가 있는데그것 또한 경험이 되리라고 생각했습니다.  또, 과거에잠시 블로그를 운영했던 적이 있었는데그 덕분에,  SNS 블로그 마케팅이라는세일즈 프로모션에도 관심이 많았어요.Q. 해당 직무에 필요한 역량이 있다면무엇일까요?  A. 한 가지 이상의 서버에서 사용되는프로그래밍 언어를 다룰 줄 알아야 합니다. 또 데이터를 수집하고,가공하는 등의 기술에 대해서도응용력이 좋아야 합니다.  그 외에도 다양한 요구 사항들이동시다발적으로 발생할 수가 있으니우선순위에 따라업무를 순서대로 처리할 수 있는 능력이중요한 것 같아요.Q. 해당 직무에서 일할 때 사용하는자신만의 스킬, 노하우가 있다면무엇인가요?  A. 저는 최대한 오픈 소스,검색을 활용하는 편이에요.  오픈 소스 같은 경우에는여러 포럼, 저장소 등에서 검색해보는 것이중요하고,검색 같은 경우에는적절한 키워드 (영어 의문문 how to ~)를이용하여 검색하면웬만한 지식들은 구글에 나와 있습니다.Q. 해당 직무에서 일하면서 즐거웠던 적,힘들었던 적이 있다면 언제일까요?  A. 갑작스럽고 치명적인 오류 등에 의해서갑자기 바빠지거나,예상치 못한 오류 때문에업무에 지장이 생기는 경우가가장 스트레스를 많이 받았던 것 같아요.최대한 그런 일들이 발생하지 않도록예방해요.집을 짓는다고 가정하면초석부터 탄탄히 짓는 것이죠.즐거운 일은아무래도 예상외로 술술 풀려나갈 때가장 보람찬 것 같아요.Q. 개발 업무의 매력은 어떤 것이 있을까요? A. 개발 업무는인터넷이라는 가상의 공간에서무언가를 창조하고,사람들에게 보여주는 매력이 있는 것 같아요.  또, 만들어진 결과물로 인해서누군가의 인생을좌우할 수 있을 것만 같아요.이런 게 매력이 아닐까요? Q. 마지막으로,디너의여왕이 될 지원자들에게한 마디 부탁드려요. A. 디너의 여왕은단순한 음식점 소개 웹 사이트가 아닌,푸드 플랫폼을 위한다양한 기술들이 집약되어 있습니다.단순히 포스트를 올리고,보여주는 것이 아닌어떻게 하면 효율적인 마케팅 효과를 불러올 수 있는 것인지 수집하고 가공하는복잡한 기술들이 집약되어 있습니다.  빅데이터 등의 IT 패러다임에관심이 있으시다면서로 win-win할 수 있는 기회가 될 것 같아요.이상으로 인터뷰를 마치겠습니다 :-)디너의여왕 탐구생활 다음 편은누구와 함께 하게 될까요?#디너의여왕 #개발팀 #팀원소개 #팀원인터뷰 #기업문화 #조직문화
조회수 643

HBase상 트랜잭션 라이브러리 Haeinsa를 소개합니다

비트윈에서는 서비스 초기부터 HBase를 주요 데이터베이스로 사용하였습니다. HBase에서도 일반적인 다른 NoSQL처럼 트랜잭션을 제공하지 않습니다. HBase, Cassandra와 MongoDB는 하나의 행 혹은 하나의 Document에 대한 원자적 연산만 제공합니다. 하지만 여러 행에 대한 연산들을 원자적으로 실행할 수 있게 해주는 추상화된 트랜잭션 기능이 없다면 보통의 서비스 개발에 어려움을 겪게 됩니다. 비트윈 개발팀은 이런 문제를 해결하기 위해 노력했으며, 결국 HBase에서 트랜잭션을 제공해주는 라이브러리인 Haeinsa를 구현하여 실제 서비스에 적용하여 성공적으로 운영하고 있습니다. VCNC에서는 Haeinsa를 오픈소스로 공개하고 이번 글에서 이를 소개하고자 합니다.Haeinsa란 무엇인가?¶Haeinsa는 Percolator에서 영감을 받아 만들어진 트랜잭션 라이브러리입니다. HAcid, HBaseSI 등 HBase상에서 구현된 트랜잭션 프로젝트는 몇 개 있었지만, 성능상 큰 문제가 있었습니다. 실제로 서비스에 적용할 수 없었기 때문에 Haeinsa를 구현하게 되었습니다. Haeinsa를 이용하면 다음과 같은 코드를 통해 여러 행에 대한 트랜잭션을 쉽게 사용할 수 있습니다. 아래 예시에는 Put연산만 나와 있지만, 해인사는 Put외에도 Get, Delete, Scan 등 HBase에서 제공하는 일반적인 연산들을 모두 제공합니다.HaeinsaTransaction tx = tm.begin(); HaeinsaPut put1 = new HaeinsaPut(rowKey1);put1.add(family, qualifier, value1);table.put(tx, put1); HaeinsaPut put2 = new HaeinsaPut(rowKey2);put2.add(family, qualifier, value2);table.put(tx, put2); tx.commit();Haeinsa의 특징¶Haeinsa의 특징을 간략하게 정리하면 다음과 같습니다. 좀 더 자세한 사항들은 Haeinsa 위키를 참고해 주시기 바랍니다.ACID: Multi-Row, Multi-Table에 대해 ACID 속성을 모두 만족하는 트랜잭션을 제공합니다.Linear Scalability: 트래픽이 늘어나더라도 HBase 노드들만 늘려주면 처리량을 늘릴 수 있습니다.Serializability: Snapshot Isolation보다 강력한 Isolation Level인 Serializability를 제공합니다.Low Overhead: NoSQL상에서의 트랜잭션을 위한 다른 프로젝트에 비해 오버헤드가 적습니다.Fault Tolerant: 서버나 클라이언트가 갑자기 죽더라도 트렌젝션의 무결성에는 아무 영향을 미치지 않습니다.Easy Migration: Haeinsa는 HBase를 전혀 건드리지 않고 클라이언트 라이브러리만 이용하여 트랜잭션을 구현합니다. 각 테이블에 Haeinsa 내부적으로 사용하는 Lock Column Family만 추가해주면 기존에 사용하던 HBase 클러스터에도 Haeinsa를 쉽게 적용할 수 있습니다.Used in practice: 비트윈에서는 Haeinsa를 이용하여 하루에 3억 건 이상의 트랜잭션을 처리하고 있습니다.Haeinsa는 오픈소스입니다. 고칠 점이 있다면 언제든지 GitHub에 리포지터리에서 개선에 참여하실 수 있습니다.Haeinsa의 성능¶Haeinsa는 같은 수의 연산을 처리하는 트랜잭션이라도 소수의 Row에 연산이 여러 번 일어나는 경우가 성능상 유리합니다. 다음 몇 가지 성능 테스트 그래프를 통해 Haeinsa의 성능에 대해 알아보겠습니다.아래 그래프는 3개의 Row에 총 6개의 Write, 3개의 Read연산을 수행한 트랜잭션의 테스트 결과입니다. 두 개의 Row에 3Write, 1Read 연산을 하고, 한 개의 Row에 1Read 연산을 한 것으로, 비트윈에서 가장 많이 일어나는 요청인 메시지 전송에 대해 시뮬레이션한 것입니다. 실제 서비스에서 가장 많이 일어나는 종류의 트랜잭션이라고 생각할 수 있습니다. 그런데 그냥 HBase를 사용하는 것보다 Haeinsa를 이용하는 것이 더 오히려 좋은 성능을 내는 것을 알 수 있습니다. 이는 Haeinsa에서는 커밋 시에만 모든 변경사항을 묶어서 한 번에 반영하기 때문에, 매번 RPC가 일어나는 일반 HBase보다 더 좋은 성능을 내는 것입니다.HBase 클러스터가 커질수록 트랜잭션 처리량이 늘어납니다. HBase와 마찬가지입니다.HBase 클러스터의 크기에 따른 응답시간 입니다. HBase와 다르지 않습니다..아래 그래프는 2개의 Row에 각각 한 개의 Write, 나머지 한 개의 Row에는 한 개의 Read 연산을 하는 트랜잭션에 대해 테스트한 것입니다. 각 Row에 하나의 연산만이 일어나기 때문에 최악의 경우라고 할 수 있습니다. 처리량과 응답시간 모두 그냥 HBase를 사용하는 것보다 2배에서 3배 정도 좋지 않은 것을 알 수 있습니다. 하지만 이 수치는 DynamoDB 상의 트랜잭션과 같은 다른 트랜잭션 라이브러리와 비교한다면 상당히 좋은 수준입니다.HBase보다 처리량이 떨어지긴 하지만, 클러스터가 커질수록 처리량이 늘어납니다.HBase보다 응답시간이 크긴 하지만 클러스터 크기에 따른 변화가 HBase와 크게 다르지 않습니다.저희는 언제나 타다 및 비트윈 서비스를 함께 만들며 기술적인 문제를 함께 풀어나갈 능력있는 개발자를 모시고 있습니다. 언제든 부담없이 [email protected]로 이메일을 주시기 바랍니다!
조회수 4627

Elasticsearch X-Pack Alerting 체험기

Logstash로 로그를 수집한 후 Elasticsearch와 Kibana로 분석하는 방법을 다룬 글은 많다. 그런데 이상하더라 이 말이지. 로그를 분석하고 경향을 파악하는 정도라면야 괜찮은데 심각한 오류 로그를 발견했을 때 Slack이나 이메일 등으로 알람 받을 수단이 마땅치 않더라. 사람이 키바나 대시보드를 5분마다 확인할 수도 없는 노릇이다. (이건 새로운 차원의 고문?)이런 생각을 먼저 한 사람이 있기 마련이라 Yelp의 elastalert라던가 Elasticsearch의 X-Pack을 활용하면 이런 문제를 해소할 수 있다. 오늘은 그 중에서 후자를 살펴볼 예정이다.경고! X-Pack은 Elasticsearch가 유료 서비스 시장을 열려고 야심차게 미는 모양인데 “자기네가 직접 만들었으니 쿨하겠지?”라고 쉽게 생각하면 하루 안에 절벽 아래로 떨어지는 끔찍한 기분을 맞이할 수도 있다.X-Pack은 가격이 상당한데 Alert 등을 설정하려면 전적으로 RESTful API에 의존해야 한다. 적어도 아직까지는! 이 사실을 깨닫자마자 당황할 수 있는데 침착하자. 이것은 시작일 뿐이다. 여러분이 검색엔진의 초보라면 그 다음 난관은 검색 쿼리를 작성하는 것이다. “나는 그냥 OutOfMemoryError 로그를 발견하면 알람을 보내줬으면 좋겠어"라고 쉽게 생각했겠지만 그 간단한 결과를 얻으려면 험난한 여정을 거쳐야 한다."search" : { "request" : { "indices" : [ "", ], "body" : { "query" : { "bool" : { "must" : { "multi_match": { "query": "OutOfMemoryError", "fields": ["message", "log"] } }, "filter" : { "range": { "@timestamp": { "from": "{{ctx.trigger.scheduled_time}}||-5m", "to": "{{ctx.trigger.triggered_time}}" } } } } } } } }음… 좋다. 일단 이렇게 작성한 쿼리가 제대로 된 것인지 테스트하려면 어떻게 해야 하는가? 검색 API로 대충 테스트해볼 수는 있다.GET logstash-2017.02.2*/_search { "query" : { "bool" : { "must" : { "multi_match": { "query": "OutOfMemoryError", "fields": ["message", "log"] } } } } }어찌어찌 잘 나온다. 그래서 잘 돌 줄 알았지? 그럴 줄 알고 있다가 이런 메시지를 만난다.Trying to query 1157 shards, which is over the limit of 1000. This limit exists because querying many shards at the same time can make the job of the coordinating node very CPU and/or memory intensive. It is usually a better idea to have a smaller number of larger shards. Update [action.search.shard_count.limit] to a greater value if you really want to query that many shards at the same time.음… logstash 인덱스를 매시간마다 분할했더니 샤드가 꽤 많아진 모양이다. 그래서 최근 두 개의 인덱스로 검색 대상을 제한하려고 한다. Date math support in index names라는 문서에 인덱스 이름을 동적으로 바꾸는 법이 나와 있긴 하다. 그런데 막상 내가 짠 게 어떤 값이 나오는지 확인하는 방법은 제대로 안 나온다. 예를 들어 가 logstash-2017.02.22t01로 해석되는지 어떻게 아는가? 많은 삽질 끝에 방법을 찾았다.를 URL 인코딩한다.그렇게 얻은 값 을 가지고 인덱스 조회 API를 호출한다. GET /3Clogstash-{now-1h/d}t{now-1h{HH}}>그러면 다음과 같이 결과가 나와서 인덱스 이름이 어떻게 해석됐는지 확인할 수 있다.{ "logstash-2017.02.23t01": { "aliases": {}, "mappings": { /* 중략 */ } }여기까지는 전적으로 검색 쿼리 작성 경험이 부족해서 발생한 삽질이다. 하지만 애플리케이션 로그 분석을 패턴화하지 않고 이렇게 검색 쿼리를 복잡하게 짜야 한다니 아직 갈 길이 멀다는 생각이 든다. DataDog 또는 NewRelic 같은 상용 서비스를 참고해서 개선하면 좋겠다.이제 결과를 알람으로 보내면 된다. 이래저래 고생하다 대충 아래와 같은 형태로 완성했다.PUT _xpack/watcher/watch/outofmemoryerror { "trigger" : { "schedule" : { "cron" : "0 0/4 * * * ?" } }, "input" : { "search" : { "request" : { "indices" : [ "", "" ], "body" : { "query" : { "bool" : { "must" : { "multi_match": { "query": "OutOfMemoryError", "fields": ["message", "log"] } }, "filter" : { "range": { "@timestamp": { "from": "{{ctx.trigger.scheduled_time}}||-5m", "to": "{{ctx.trigger.triggered_time}}" } } } } }, "sort" : [ { "@timestamp" : {"order" : "desc"}}, "_score" ] } } } }, "condition" : { "compare" : { "ctx.payload.hits.total" : { "gt" : 0 }} }, "actions" : { "notify-slack" : { "throttle_period" : "5m", "slack" : { "message" : { "to" : [ "#ops", "@dev" ], "text" : "로그 모니터링 알람", "attachments" : [ { "title" : "OutOfMemoryError", "text" : "지난 5분 동안 해당 오류가 {{ctx.payload.hits.total}}회 발생했습니다. 가장 최근의 오류는 다음과 같습니다.", "color" : "warning" }, { "fields": [ { "title": "환경", "value": "Prod", "short": true }, { "title": "발생시각", "value": "{{ctx.payload.hits.hits.0._source.@timestamp}}", "short": true }, { "title": "메시지", "value": "{{ctx.payload.hits.hits.0._source.message}}", "short": false }, { "title": "확인명령어", "value": "`GET /{{ctx.payload.hits.hits.0._index}}/{{ctx.payload.hits.hits.0._type}}/{{ctx.payload.hits.hits.0._id}}`", "short": false } ], "color" : "warning" } ] } } } } }4분마다 검색 쿼리를 실행해서 최근 5분 간의 레코드를 감시하기 때문에 동일한 오류에 대해 2회 연속으로 알람을 받을 가능성이 있다. X-Pack은 이를 우회할 방법을 제공하지 않는 것 같다. 그래서 쿼리가 발견한 레코드의 인덱스 ID를 Slack 메시지 중 확인명령어 필드에 넣었다. 알람이 두 번 왔지만 인덱스 아이디가 동일하다면 오류가 한번 발생한 것으로 간주하면 된다.참고 문서위의 Alert를 작성하며 도움을 받은 문서는 다음과 같다.Multi Search Template은 검색 쿼리를 짤 때 도움이 됐다.Search Input 문서는 검색 쿼리 또는 검색 결과를 작성할 때 어떤 변수를 사용할 수 있는지 설명한다. 예) {{ctx.payload.hits.hits.0._source.message}}Watcher APIsSlack ActionDate math support in index names 문서는 인덱스 이름을 동적으로 바꾸는 법을 설명한다.기타Elasticsearch Cloud는 기본적으로 이메일 발송을 지원하기 때문에elasticsearch.yml 설정에 xpack.notification.email를 추가하지 않아도 된다. 아니, 추가하면 잘못된 설정이라며 거부한다. Illegal이라고만 하지 이유를 자세히 알려주지 않기 때문에 삽질하기 쉽니다. Invalid addresses라고 오류 로그가 찍히면 이것은 설정 문제가 아니다. 이메일 설정 메뉴로 가서 Watcher Whitelist에 수신 이메일 주소를 등록하면 문제가 해결된다.테스트용 로그 메시지를 Fluentd로 보내고 싶다면 fluent-cat 명령을 이용한다.echo '{"message":"Dummy OutOfMemoryError"}' | fluent-cat kubernetes.logOriginally published at Andromeda Rabbit.#데일리 #데일리호텔 #개발 #개발자 #개발팀 #인사이트
조회수 1774

디너의여왕 탐구 생활_인터뷰3. 컨텐츠팀_영상파트

안녕하세용 :)날씨가 많이 추워졌어요다들 감기 조심하시구요오늘은 "디너의여왕 탐구생활" 컨텐츠팀 그 중에서도 영상편을 들고 왔습니다!컨텐츠 팀 안에서도 여러 파트가 있는데요.그 중 영상팀의 열일 현장입니다!다른 시리즈와는 달리사무실이 아닌 외부에서 촬영하는 모습이에요 :-)디너의여왕 페이스북에서제일 자주 보는 얼굴이죠? :-)다들 디너의여왕 페이스북 즐겨보고 계신가요?사무실에서 열일하는 영상팀 모습입니다!촬영한 영상들을 편집하는 과정이죠 :-)자아 그러면 이제 인터뷰를 진행하면서본격적으로 그들을 파헤쳐 보도록 하겠습니다!!! 오늘 인터뷰는 영상팀의 3인뽀로로님, 아로미님, 판님과인터뷰를 진행해보겠습니다 :-)첫 번째 인터뷰는영상팀 뽀로로님과 진행하겠습니다.Q.현재 담당하고 계신직무에 대해 소개 부탁드려요.A. 디너의여왕에서영상 컨텐츠를 담당하고 있습니다.Q. 어떤 동기를 갖고해당 직무에 지원하게 되었나요?A. 제 눈 앞에 보이는 맛있어 보이는 행복을사람들과 공유할 수 있다는 점에서 시작하게 되었습니다.맛있는 거 먹고, 예쁜 거 먹고 하면꼭 사진 찍어서 친구들한테 보내주고 그런거 좋아하거든요♥Q. 해당 직무에 필요한역량이 있다면 무엇일까요?A. 저도 아직 배우는 입장이라 하하하하지금 제가 이 일을 하면서 제일 필요하다싶은 점은  제가 편집하는 내용을 다른 사람들이 보기 편하게, 재미있게 만드는 그런 포인트를 잡아내는거 같아요Q. 해당 직무에서 일할 때 사용하는 자신만의 스킬, 노하우는 무엇일까요?A.  글쎄요스킬, 노하우라기보다는 그냥 영상 참고를 많이 해야한다고 배웠고그렇게 하도록 노력하고 있습니다 하하하하Q. 해당 직무에서 일하면서 즐거웠던 적,힘들었던 적이 있다면 언제일까요?A. 즐거웠던 적은 아무래도다양한 음식을 촬영하고, 먹을 수 있다는 점?힘들었던 적은 아무래도외근이 좀 길어질 때가 아닐까 싶습니다 하하하하 아 더불어 늘어나는 살...?두 번째 인터뷰는영상팀 아로미님과 진행하겠습니다. Q. 현재 담당하고 계신직무에 대해 소개 부탁드려요.A. 동영상 콘텐츠를 제작하고 있습니다!세부적으로는 동영상 콘텐츠 기획을 맡고 있습니다.Q. 어떤 동기를 갖고해당 직무에 지원하게 되었나요?A. 항상 재미있는 일을 하고 싶다는생각을 가지고 있었는데관심있던 푸드와 콘텐츠를모두 경험할 수 있어 지원하게 됐습니다.Q. 해당 직무에 필요한역량이 있다면 무엇일까요?A. 다양하고 참신한 아이디어!Q. 해당 직무에서 일할 때 사용하는 자신만의 스킬, 노하우는 무엇일까요?A.  다양한 콘텐츠를 접해보는 것!  종류를 가리지않고 이것 저것 보고있습니다많이 보는 것 만큼 훌륭한 공부는 없는 것 같아요! Q. 해당 직무에서 일하면서 즐거웠던 적,힘들었던 적이 있다면 언제일까요?A. 즐거웠던 적은 기대보다 영상이 잘 나왔을때..?  고생한 게 눈 녹듯 사라집니다.힘들었던 적은 외근외근외근외근외근... 날이 많이 춥네요..세 번째 인터뷰는영상팀 판님과 함께 진행하겠습니다! Q.현재 담당하고 계신직무에 대해 소개 부탁드려요.A. 디너의여왕에서영상컨텐츠 기획 및 제작을 맡고있습니다.Q. 어떤 동기를 갖고해당 직무에 지원하게 되었나요?A. 푸드관련 영상컨텐츠의대다수가 레시피 혹은 먹방이 대부분인데, 그 외에도 시도할 수 있는 부분이 굉장히 많거든요.   지금까지 나와있는 포맷의 영상물도 좋고,좀더 발전해서 먹거리로 할 수 있는기획영상을 제작하고 싶어서 지원하게 되었습니다.Q. 해당 직무에 필요한역량이 있다면 무엇일까요?A. 영상컨텐츠를 제작과정을쉽게 3가지로 나눈다면 기획, 촬영, 편집이라고 말씀드리고 싶은데요.   어떤 영상을 어떤 내용과 컨셉으로만들지에 필요한 기획력,그 구상된 것을 촬영할 수 있는 능력,그렇게 촬영된 영상을 편집할 수 있는 스킬까지 갖추고 있다면   업무에 큰 도움이 될거라 생각합니다.Q. 해당 직무에서 일할 때 사용하는 자신만의 스킬, 노하우는 무엇일까요?A.  평소에 휴대폰으로 영상을 즐겨보고,흥미로운 영상이 있으면나중에 다시 찾아보기 쉽게 기록하는걸 추천드리고 싶어요.   사실상 영상이라는건주관적인 결과물이라서보는사람마다 모두 다르게 느낄 수 있지만,그래도 더 많은 사람들이공감하고 즐거워할 수 있는 결과물이 되려면   그렇게 잘된 영상들을 찾아보고현재 내가 하고있는 것과끊임없이 비교분석하는걸 게을리하면 안되겠죠. Q. 해당 직무에서 일하면서 즐거웠던 적,힘들었던 적이 있다면 언제일까요?A.  매번 촬영때마다 느끼는거지만,아무래도 맛있는 음식을 눈앞에 두고못먹는 게 제일 힘든 것 같아요.   저는 가게에 먹으러간게 아니라촬영해야해서.. 촬영끝나면 다 식어서..;;   그리고 아무래도 제일 즐거운 점은영상이 업로드 됐을때 많은분들이 보고 즐거워해 주시는 것 만한게 없는것 같아요.   여러분은 영상을 봐주시고,저는 댓글을 하나하나 보는 재미가 있답니다.디너의여왕 많이 찾아주세요~이상으로 인터뷰를 마치겠습니다 :-)디너의여왕 탐구생활 다음 편은누구와 함께 하게 될까요?#디너의여왕 #콘텐츠 #영상팀 #팀원소개 #팀원인터뷰 #기업문화 #조직문화
조회수 1621

ZOYIFUL TALK (4) - 스니커 덕후, 워크인사이트 덕후가 되다

그는 원래, 유명 스포츠 의류 매장의 매니저였다. 관리하던 매장의 연매출은 100억 원을 훌쩍 넘겼다. 전국 1위 매출의 벽이 워낙 견고해 그의 매장에는 ‘산성’이란 별명이 붙기도 했다.어떻게 해야 매출을 올릴 수 있을지를 그는 늘 고민했다. 제품이 돋보이는 진열 방식을 연구하기도 하고, 명품 브랜드 매장처럼 밀려드는 손님들을 문 앞에 줄세워 매장의 인기를 뜨겁게 만들기도 했다.하지만 왠지 모르게 계속 답답했다. 장사가 잘 될 때에도 원인을 분명히 알기 어려웠기 때문이다.손님들의 움직임을 유심히 관찰하며 구매로 이어지는 패턴을 파악하려 해도 몸은 하나, 눈은 두 개 뿐. 시도해 보고 싶은 일들이 많았지만 적절한 데이터가 없다보니 개선안을 찾는데 어려움이 많았다.데이터를 제대로 이해하는 것이 앞으로 매장의 생사를 가르겠단 생각이 들었다. 제품에 대한 관심을 불러 일으키는 진열 방식이나 손님이 선호하는 이동 경로같은 소비자 행동 데이터가 궁금했다. 그렇게 데이터 분석 공부를 시작했다가, 워크인사이트를 제공하는 조이를 알게 되었다. 찾던 데이터가 있다는 것을 알게된 후 두근거리는 마음으로 조이의 문을 두드렸다.성공한 스니커 덕후이자 요즘은 주5회 크로스핏을 하러 간다는 에너자이저, 워크인사이트 세일즈 매니저 제이슨과 이야기를 나눠 보았다.ZOYI: 간단한 자기소개 부탁드려요!Jason: 안녕하세요, 조이에서 워크인사이트 세일즈를 담당하는 김한성입니다. 오프라인 매장을 운영하는 기업들에게 워크인사이트 서비스 소개부터 실제로 활용해 가치를 만들어 내는 단계까지 모든 과정을 총괄하고 있습니다.ZOYI: 워크인사이트에 꽂혀서 세일즈를 시작하셨다고 들었어요.Jason: 네, 제가 원래 무언가를 좋아하면 엄청 꽂히는 스타일이에요. 매장 데이터 활용에 대해 고민이 많던 시기여서 워크인사이트를 보자마자 꽂혔어요. 제가 원했던 데이터를 이미 분석하고 있는 회사가 있어서 놀랐죠. 저는 지금도 워크인사이트가 지금의 오프라인 리테일 생태계를 한 단계 진보시킬 제품이라고 확신하고 있어요.워크인사이트 말고 또 꽂힌 그것. 그는 스니커 덕후이기도 하다 (신발가게 아닙니다)ZOYI:어떻게 확신을 하게 되셨나요?Jason: 현업에 있으면서 누구보다 워크인사이트의 필요성을 느꼈거든요.차별화된 매장 운영을 위해서는 데이터가 꼭 쌓여야 한다고 생각했어요. 예컨대 주말과 평일, 오전과 오후에 일하는 알바생이 다르잖아요? 그럼 자주 오는 손님을 못 알아보고 필요 이상으로 친절한 응대를 할 때가 있어요. 그 손님은 이미 매장 구조나 물건을 다 알고 있으니 적당한 거리를 두고 응대하는 게 더 나은데 말이죠. 자주 오는 손님에 대한 데이터가 있었다면 그러지 않았을 거예요.또 시간대 별로 외부 유동인구나 매장 방문객이 달라지는데, 이를 고려하지 않고 점원을 동일하게 배치하는 경우가 있어요. 언제 사람이 붐비는지 잘 이해하고 있으면 훨씬 더 효율적으로 인력을 운용할 수 있겠죠.그런데 요즘같이 매장 구석구석 CCTV가 달려있고 기술이 발전한 세상에도, 고객들의 움직임이나 방문 기록 같이 소비자 행동을 알 수 있는 데이터가 하나도 없는 거예요. 답답함에 일을 그만두고 데이터 분석을 공부하다 조이를 만났습니다. 워크인사이트는 제가 원했던 데이터를 모두 다 수집할 뿐만 아니라 이미 상당한 수준의 분석까지 하고 있더라구요.오프라인 매장에서도 상당한 수준의 분석이 가능하다는 사실을 알고 놀랐다ZOYI: 실제로 영업을 해보니 어떻던가요.Jason: 정말 멋진 기술이지만, 새로운 개념이다보니 초반에 고객들의 신뢰를 구축하는 데 시간이 많이 들었죠. 시중에 있는 제품이라면 '이건 기존 제품과 어떤 점이 달라?'부터 대답해도 되는데, 처음 보는 제품을 소개하려니 '이건 뭐야? 이게 왜 필요해?'부터 묻기 시작하셨거든요.ZOYI: 꽤 어려우셨겠어요.Jason: 쉽지 않았죠. 특히 초반부터 대형 브랜드들을 상대로 세일즈를 하려니 더 그랬던 것 같아요.ZOYI: 대형 브랜드를 상대로 세일즈를 시작했던 이유가 있나요?Jason: 지금 당장 이 기술이 가장 필요한 곳이라 생각했기 때문이에요. 과거에는 어디에 매장을 오픈할 것인지를 결정하는 게 핵심이었어요. 예를 들어 드럭스토어 같은 경우는 몇 년 만에 매장을 1,000개씩 늘렸죠. 매장만 오픈하면 매출이 절로 늘었으니까요.반면 지금은 대한민국 어딜 가든 매장이 포화상태예요. 양적 성장보다 질적 성장이 중요한 시기가 된거죠. 이제는 오픈된 매장을 어떻게 효율적으로 운용하고 매출을 잘 올리느냐를 고민해야 하는 때가 온 건데, 이를 위해서는 소비자 행동 데이터를 제대로 들여다 볼 필요가 있었습니다. 저희가 그걸 잘 할 수 있었고요.ZOYI: 어떻게 세일즈 하셨나요?Jason: 방문객 데이터에 대한 고객 이해도를 높이고, 기술로 차별화된 가치를 드리기 위해 팀이 다함께 노력했어요. 덕분에 이제는 시장에서도 데이터 분석을 해야 한다는 것에 공감대가 어느정도 생겼습니다.또 다양한 분석을 하면서 활용 사례를 많이 만들어 나가다 보니 고객들도 이젠 스스로 이용 방법을 잘 찾아가고 계세요.ZOYI: 뿌듯하시겠어요.Jason: 네, 특히 제품을 도입한 후, 고객사가 저희를 신뢰하게 될 때에는 정말 뿌듯합니다. 예전엔 왠지 모르게 싸늘했던 고객사 담당자가 요즘은 제 기호에 맞는 커피를 주시더라고요. (웃음)일할 맛 나는 순간ZOYI: 데이터는 어떻게 활용되고 있나요?Jason: 매장이 큰 경우는 공간 활용도를 높이기 위해 매장을 구역별로 나눠서 마케팅해요. 한 H&B(헬스 앤 뷰티) 브랜드의 경우 매장에 방문객 분석 센서를 여러 개 설치해서 매장에서는 손님이 접근하지 않는 '데드존(Dead zone)'과 손님의 발길이 끊기는 지점을 파악했어요. 이를 이용해 동선이 끊기지 않게 연결하고 데드존을 살리는 리모델링을 했는데요, 리모델링 후 이전 대비 매출이 20%나 상승했어요.매장을 다시 방문한 손님들에 관한 데이터도 다양하게 활용하고 있어요. 예를 들어 백화점에 입점한 한 의류 브랜드는 아이템 진열 모양이 달라지지 않았을 때 재방문 고객이 매장에 머무는 시간이 짧아진다는 패턴을 파악했어요. 그래서 아이템 진열 방식을 자주 바꿔줬죠. 똑같은 아이템이라도 다르게 배치되면 새로운 제품이 나온 것 같은 느낌을 주잖아요. 쇼핑 경험을 개선하자 자연스레 매출이 늘었어요.ZOYI: 역시 세일즈 매니저세요. '어머, 이건 꼭 사야 해'라는 생각이 절로 들게 만드시네요.Jason: 네 맞아요. 이건 사야죠. 앞으로는 소비자의 행동 패턴이 실제로 어떻게 변하는지 구체적인 데이터를 파악하고 대응하는 기업만이 오래 살아남을 수 있다고 생각해요. 주먹구구식으로 운영하는 매장과 그렇지 않은 매장이 장기적으로는 많이 달라질 겁니다. 사소해 보이는 질적 차이가 쌓이고 쌓이면 커다란 격차를 만들어 낼 거니까요.ZOYI: 요즘은 크로스핏에 빠지셨다고 들었어요.Jason: 네, 가능하면 매일 가려고 노력하고 있어요. 저 혼자 하는 건 아니고 서너 명이 함께 다니는데요, 다른 분들도 같이 하자고 유혹 중입니다. 힘든 운동 끝판왕이긴 한데 하고나면 생물학적으로 살아있다는 느낌이 든달까, 몸에 활력이 막 생겨나요.ZOYI: 외부 미팅이 많은 직업이라 굉장히 바쁘실텐데, 운동 다닐 시간이 있으신가요?Jason: 네 가능합니다. 조이에서는 자신의 일만 제대로 하면 시간을 자율적으로 이용할 수 있어요. 고객사와 잘 맞추면 스케줄도 원하는대로 짤 수 있어요. 눈치 볼 필요 없이 운동 다녀와 또 열심히 일하곤 합니다.열심히 일한 자에게 자유가 주어질 지어다!!ZOYI: 제이슨의 건강한 삶을 응원합니다! 마지막으로 한마디 해주세요.Jason: 앞서 말했듯이 소비자 행동 데이터를 보고 매장 운영을 하면 효율성 측면에서 분명 더 나은 결과를 만들어요. 그게 지금 보기에는 미세한 차이더라도 시간이 지날수록 다른 '클래스'를 만들게 될 거예요.그런 부분에서 볼 때 워크인사이트는 점차 매장을 운영하는 기업들에게 차별화된 클래스를 만들어주는 제품이 될 것이라고 생각합니다. 갈수록 고객사에서 갈증을 느끼고 먼저 찾는 기술이 될 거예요. 꾸준한 성장을 위해 앞으로도 지치지 않고 최고의 가치를 드리는 데 최선을 다하겠습니다!#조이코퍼레이션 #팀원소개 #팀원인터뷰 #기업문화 #조직문화 #업무환경
조회수 1629

제니퍼에서 새로운 가능성을 실험하라

제니퍼는 기업 내부망에 설치되는 On-Premise 방식의 소프트웨어 제품이다. 12년 넘게 국내 점유율 1위를 지키고 있는 제품이다보니 그만큼 고객의 요구사항도 다양하다. 대부분의 솔루션 회사는 제품 개발 초기에 단일 소스코드를 유지하며 개발하는 것을 추구했을 것이다. 하지만 비즈니스를 하다보면 특정 고객을 위한 기능을 추가할 수 밖에 없는 상황이 오게 된다. 보통 이런 경우에는 숨겨진 기능으로 개발하거나 고객사 별로 소스코드를 다르게 가져가기도 한다.기존의 제니퍼를 사용하는 고객들은 애플리케이션 모니터링만이 아닌 브라우저나 스마트폰 같은 클라이언트 영역과 데이터베이스 관리 시스템까지 연계된 통합 모니터링을 하고자하는 요구사항을 오랫동안 요청했었다. 모니터링 제품 간의 연계를 생각하면 약간 생소하게 생각할 수 있는데, 특정 데이터를 수집하고, 이를 가공하여 사용자에게 보여주는 단순한 매커니즘의 하나라고 생각하면 이해가 쉬울 것 같다.즉, 다른 종류의 데이터를 하나의 화면에서 볼 수 있는 통합 환경을 제공해야 한다. 그래서 최근에는 오픈소스로 배포되고 있는 엘라스틱서치나 상용 제품인 스플렁크 같은 로그분석 솔루션이 주목받고 있다. 하지만 위와 같은 제품들을 사용하여 제니퍼 성능 데이터와 연계하여 통합 환경을 구축한다는 것은 말처럼 간단하지 않다. 제품을 구매하고 학습하는 비용이 생각보다 크고, 통합을 위한 별도의 시스템이 갖춰져야 한다는 것은 고객의 입장에서 큰 부담이 된다. 이러한 부담을 덜어주기 위해서 제니퍼는 실험실이라 불리우는 확장 기능을 제공한다. 실험실은 워드프레스의 플러그인과 비슷한 성격을 가지며 코드 레벨 영역에서 확장될 수 있다. 실험실은 처음부터 다른 모니터링 제품과의 연계를 위해 개발된 것은 아니었다. 기획 초기에는 방대한 제니퍼 데이터를 좀 더 다양한 형태의 화면으로 제공하기 위함이었는데, 아무래도 실험적인 요소가 강하다보니 기존의 대시보드나 분석 같은 범주로 들어가기에는 완성도 측면이나 제니퍼의 방향성에 영향을 미칠 수 있다는 판단에 별도의 범주로 만들게 되었다.  실험실이란 이름은 구글 메일의 실험실에서 따온 것인데, 아직 개발 중인 실험적 기능을 위한 테스트 공간이고, 언제든지 변경 또는 중단되거나 사라질 수 있다. 그리고 모든 실험실 소스코드는 깃허브를 통해 공개하는 것이 기본 정책이다. 제니퍼소프트 깃허브에 가보면 실제로 다수의 실험실 프로젝트가 존재한다는 것을 알 수 있다. 그 중 한가지만 간략하게 소개하자면 사용자 관점의 웹 서비스 모니터링 제품인 아르고스와 연계하여 브라우저나 스마트폰 같은 사용자 관점의 성능 데이터를 제니퍼 트랜잭션 데이터와 연계하여 분석할 수 있는 기능을 제공한다. 실은 그동안 고객들에게 사용자 관점의 성능 모니터링에 대한 요구사항이 많았지만 제니퍼 본연의 영역과 확연하게 다른 측면이 있어서 요구사항을 수용하는데 많은 고민이 필요했다. 그래서 우리는 관련된 솔루션 업체를 찾았고, 상호 간의 비즈니스 협력을 통해 서로의 부족한 부분을 보완하기로 결정했다. 실험실은 제니퍼가 시도하고 있는 새로운 기능을 미리 체험해 볼 수 있을 뿐만이 아니라 오픈소스나 관련된 솔루션과의 연계를 하기 위한 화면을 제공할 수 있다. 뿐만 아니라 코드 레벨 영역에서 확장을 하는 것이다보니 제품의 커스터마이징 범위가 넓어진다. 즉, 화면에 대한 고객의 요구사항이 제니퍼의 방향성과 크게 다르더라도 많은 고민을 하지 않고 충분히 원하는 것을 구현해줄 수 있다. 과거와 달리 동일한 데이터라도 좀 더 시각적인 화면을 요구하는 요즘같은 시기에 실험실은 이러한 시도를 하기에 좋은 방법이 된다.제니퍼는 화면 단위의 확장 기능인 실험실 뿐만이 아니라 트랜잭션 데이터가 수집되는 시점이나 특정 이슈가 발생할 때, 생성되는 이벤트 데이터를 어댑터를 통해 전달받을 수 있다. 어댑터도 실험실과 마찬가지로 코드 레벨 영역에서 확장할 수 있다. 실시간으로 전달받은 트랜잭션 데이터는 별도의 스토리지에 저장하여 목적에 맞게 조회해서 사용할 수 있다. 특히 이벤트 관련 어댑터는 가장 많이 사용되는 제니퍼 확장 기능이며, 고객사의 관제시스템 연동에 주로 사용된다.  실험실은 어댑터와 달리 제니퍼 서버에서 전달받은 데이터를 처리만 하는 단순한 구조가 아니었다. 제니퍼와 독립적인 화면 구성에 필요한 모든 요소들을 갖춰야했기 때문에 고려해야할 것들이 너무 많았다.  그럼에도 불구하고 만들게 된 이유는 단순히 필자의 편리함을 위해서였다. 평소에 데이터 시각화에 관심이 많았기 때문에 이미 존재하는 방대한 제니퍼 데이터를 다양한 방식으로 표현하기 위한 시도를 했었다.하지만 상용 솔루션인 제니퍼에 테스트 코드를 필자 임의로 추가해서 배포하거나 숨긴 기능으로 만들기에는 꽤 부담스러운 일이었다. 그렇다고 별도의 소스코드로 다르게 가지고 가기에는 관리 측면에서 어려움이 있다. 그렇기 때문에 기존의 제니퍼 소스코드를 참조만 하되 서로 독립적으로 개발하는 형태를 생각하게 되었다. 이렇게 필자의 편리함을 위해 시작한 실험실이지만 오픈소스나 다른 솔루션과의 연동을 위한 화면을 제공하고, 새로운 제니퍼 기능에 대한 비전을 시사하거나 고객의 피드백을 수용하는 용도로 확장되었다.소프트웨어 개발을 하다보면 제품이 추구하는 방향과 달라서, 또는 구현은 가능하지만 소모되는 리소스 비용이 부담이 될 경우, 그리고 특정 사용자를 위한 특화된 기능을 구현할 때, 모두가 만족할만한 기능이라는 확신이 없다면 제대로 진행하기가 어려운게 현실이다. 사실 새로 시도하는 기능은 시기와 때에 따라 앞에서 고려했던 것들과 다르게 평가되는 경우도 있다.그래서 아무리 작은 아이디어라도 시도를 해보는 것 자체만으로도 큰 의미가 있으며, 새로운 가능성을 발견하는 계기가 될 수 있다. 다만 현재는 제니퍼 기능 확장에 대한 기반 정도만 갖춰진 시작 단계라서 관련된 API 문서나 개발 도구에 대한 지원이 미흡한 것이 아쉬움으로 남는다. 다음 편에서는 자바 개발자 대상으로 실험실을 직접 구현하는 방법에 대해 알아볼 것이다.
조회수 2466

2018년, 새 사무실로 이사했어요 : Watcha, Inc.

2018년, 새 사무실로 이사했어요2018년 여름,왓챠는 정든 신사동을 나와 강남역 근처로 이사했어요이전 사무실과 고작 15분 거리지만독립한 대학생처럼 설레고 어리둥절해요이렇게 더워질지 몰랐던 2018년 7월 초,폭염이 우리를 덮치기 전에 이사한 건 참 잘한일이에요이곳이 새 사무실이에요이쪽은 업무공간다들 열일 중이쪽은 라운지공간을 널찍하게 분리했어요여기는 그란데!새 사무실은 [톨 – 그란데 – 벤티] 3개의 방이 있어요그란데에서는 휴식과 식량을 해결할 수 있어요가끔 저 큰 TV로 영화를 즐길 수도 있다고 해요카페가 부럽지 않은 뷰강남에서 창밖의 초록색을 보며 일할 수 있다는 건 행운이죠할 거 없나 – 1이삿짐이 속속들이 들어오고 있어요할 거 없나 – 2더 예뻐진 브라운은 이곳까지 잘 따라왔어요너는 깨끗해질 것이다왓 왓 이즈 잇..!이게 ‘모션데스크’ 라는 건데,앉으나 서나(?!) 일할 수 있게 해주는 신박한 책상이에요오…아이 러브 잇사이좋게 새 냉장고를 채워 넣는 그레이와 그린그냥 제가 할게요답답했나봐요엄청난 칼각을 세우고 있는 그레이 (25, 행정병 출신)잔뜩 채워 넣어진 음료수들우리들의 배에 털어 넣어질 예정이에요아 어떡하지…고민 중인 비제이의 모습점심 메뉴 고민 중이었던 걸 들킨 비제이사무실이 너무 넓어서새로운 운송수단이 생겼어요화장실도 빨리 갈 수 있어요이제는 전체회의도 널찍널찍하게 할 수 있어요어디서든 아이디어가 샘솟아요멀리서 찍으니 멋짐도 샘솟아요뭘 보고 있었을까요?이제 왓챠는 새 사무실에서더 큰 세상으로 뛰쳐 나갈 거예요기대해주세요 🙂
조회수 811

인간의 이기심

여의도와 당산 사이에는 한강의 샛길로 빠지는 샛강 생태공원이 있다. 사람의 출입을 차단한 숲 지역과 자연 그대로의 모습을 보존한 샛강으로 인해 청둥오리, 왜가리, 뱀, 심지어 우리집 근처 샛강에는 매도 살고 있을 정도로 이 서울 한복판에 기적처럼 야생의 생태계가 존재하는 곳이다.뻥 아니고 진짜 매가 산다. 요즘 시골에서도 보기 힘든 매가.이건 삭막한 도시환경에 신이 내린 엄청난 축복이다. 하지만 인간들은 이게 얼마나 큰 축복인지 깨닫지도, 관심조차 없는 듯 하다. 지난달 부터 이 지역을 관통하는 당산-국회의사당 연결 다리 공사가 시작되었다.저 생태계 유린의 현장사실 샛강으로 인해 당산에서 여의도 도보 진입이 매우 불편한건 사실이었다. 이에 작년에 당산동-샛강 진입로 까지 연결하는 다리가 놓여졌고, 이 다리는 차도 위를 지나서 샛강 진입로 까지만 연결된 거라 샛강 생태계와는 크게 상관 없는 공사였고, 이 다리로 인해 당산동에서 여의도 국회의사당까지 도보 거리가 거의 40분 -> 20분으로 단축되었으며, 삭막한 차도를 걷는게 아닌 샛강 생태공원을 걸어서 도달하게 되었으니 이 얼마나 큰 축복인가.그러나 인간들은 여기서 그치지 않고 지금 위 사진에서 보이는 지점에서 국회의사당까지 한번에 도달할 수 있는 연결다리를 더 놓기로 결정하였다. 내가 실제로 도보 계산한 결과 저건 고작 20분 -> 10-15분정도로 길어야 10분을 단축하기 위한 공사이다.이미 샛강의 핵심 부위는 공사로 인해 파괴되었고, 매는 온데간데 보이질 않는다.난 어차피 대한민국 공무원들이 저딴 환경이니 신이 내린 축복이니 이딴거에 관심가질거라고 1도 기대하지 않는다. 저런건 다 지역구 표랑 연결된 공사이고, 저 공사를 성사했다고 새누리랑 민주당이랑 서로 지가 한거라고 자랑하는 현수막이 나붙고 있는 현실이니.그저 인간의 이기심이 얼마나 끔찍한지를 단적으로 보여주는 공사를 라이브로 매일 아침 목격하는 중이며, 이미 이 곳에 서식하던 매는 온데 간데 보이질 않고, 수 없이 보이던 청둥오리들도 (터전을 다른곳에 마련한거라면 다행이지만) 몇마리 보이지 않는다. 뭐 내가 조류쪽에는 아무런 지식이 없어서 계절적인 영향으로 안 보이는 거면 참 다행이겠다만, 위 사진에 보이는 저 지역은 샛강에서도 사람의 출입이 가장 차단된 지역이였고, 저 공사로 인해 저 지역 생태계는 완전히 망가졌을거는 명백판 팩트이다.어차피 이 샛강은 느린 유속으로 인해 냄새가 심하다는 이유로 이미 2018년부터 대대적인 개선공사가 들어갈 예정이라고 한다. 뭐, 인간의 삶이 그로 인해 더 편해진다면, 이로인해 정치인들의 표몰이가 더 수월해 진다면, 이 대한민국에서 저 생태계에 살던 수 많은 생명에 대한 걱정은 별로 하지 않는것 같아 슬프다. 별로 볼품도 없고 출퇴근 시간 단축에 별로 도움도 안되는 수상택시 확장 개편도 결정되었다. 그 수상택시로 인해 밤섬에 서식하던 수 많은 철새들은 서식지를 보장받기 어렵게 되었다. 심지어 그 철새들한테 모이주는 체험 행사도 컨텐츠 중 하나로 기획되어 있다고 한다.철새의 낙원이라 불리는 밤섬을 슝슝 왔다갔다 하는 수상택시가 곧 생긴다.성급한 일반화처럼 보일수도 있으나, 중국사람들 무시하는 우리나라 사람들의 환경에 대한 애정, 관심, 이런거 사실 본인이 보기에는 중국사람들의 그것과 별 다를게 없다. 자본논리에 의해 돈이되거나 표가 되면 그냥 하는거고, 환경단체 의식하는것도 표에 도움이 되야 의식하는 척이라도 한다. 만일 내 와이프의 고향 아일랜드처럼 시민들이 기본적으로 환경에 대한 경각심이 서 있고 이미 자연 속에 본인들의 삶을 살아가고 있는 야생동물에 대한 애정이 디폴트로 깔려있는 국민들이라면, 굳이 5분 10분 더 빨리 가겠다고 샛강 생태계를 밀어버리는 다리공사에 찬성했을까?
조회수 1208

“매일매일 새로운 도전으로 채워지는 자리”

“매일매일 새로운 도전으로 채워지는 자리” – 패스트캠퍼스에서 일하는 콘텐츠 마케터 이야기“마케팅 중 유효한 것은 콘텐츠 마케팅 뿐이다.” – 세스 고딘<보랏빛 소가 온다>를 쓴 세계적인 마케팅 구루 세스 고딘의 말처럼 콘텐츠 마케팅은 마케팅의 주류로 자리잡으며 전통적인 광고의 입지를 위협하고 있습니다. 그런데 콘텐츠 마케팅은 범주가 넓어 기업 특성에 따라 실무에서 담당하는 업무가 다양한데요. 이번 글에서는 패스트캠퍼스의 콘텐츠 마케터들은 무슨 일을 어떻게 하는지 자세히 알려드리고자 프로그래밍팀 시니어 콘텐츠 마케터 김하림님과 파이낸스팀 콘텐츠 마케터 이유나님을 모시고 인터뷰를 진행했습니다.안녕하세요 하림님 유나님, 오늘 인터뷰에 응해 주셔서 감사합니다. 간단하게 자기소개 부탁드려도 될까요? 안녕하세요, 프로그래밍팀 시니어 콘텐츠 마케터 김하림입니다. 지난주에 막 입사한 지 1년이 되었어요.안녕하세요, 저는 파이낸스팀 콘텐츠 마케터 이유나라고 합니다. 패스트캠퍼스에서 일한 지 이제 9개월 째고요. 두 분께서는 패스트캠퍼스에 합류하기 전 무슨 일을 하셨는지, 어떤 계기로 패스트캠퍼스 콘텐츠 마케터로 입사하게 되셨는지 궁금합니다. 패스트캠퍼스에 오기 전에는 웹디자인 일을 하고 있었는데, 회사 규모가 작아 세금계산서 발행부터 제안서 작성까지 회사 운영의 전과정에 참여해야 하다 보니 웹디자인에만 몰두할 수 있는 환경은 아니었어요. 전문성을 가지고 한 가지 일에 좀 더 집중하고 싶어 회사를 그만두었습니다. 그러다 채용공고를 살펴보던 중 패스트캠퍼스의 콘텐츠 매니저(지금은 콘텐츠 마케터로 직함이 바뀌었죠) 자리를 발견하게 되었고요. 제가 할 수 있는 다양한 일들을 업무 역량으로 발휘할 수 있을 것 같아 지원했어요. 저는 지금 마지막 학기를 보내고 있는 대학생이에요. 경영을 전공했고, 교육 분야에도 관심이 있어 국어교육학과를 복수전공하고 있었어요. 제가 흥미를 느낀 이 두 분야를 접목해 할 수 있는 일을 찾다 교육업에 있는 마케터 일이 저에게 딱 맞을 것 같아 지원서를 넣었던 기억이 납니다. 인턴으로 입사했다 정직원으로도 계속해서 함께하는 중이예요. 유나님께서는 인턴 기간이 종료된 후에도 이곳에서 일하고 계신데, 패스트캠퍼스를 선택하신 이유가 무엇일까요? 패스트캠퍼스에서는 인턴이라도 정직원과 같은 일을 하면서 눈치 보지 않고 자기 의견을 낼 수 있던 것이 좋았어요. 저에게는 자기발전을 계속할 수 있는지가 직업을 선택할 때 중요한 기준인데 여기에 맞고, 사회 초년생으로서 일을 배우기에도 좋은 환경인 것 같아 정직원으로 계속 일하고 있습니다. 제가 막 입사했을 때, 당시 팀장님께서 제 직무에 대해 설명해주셨던 것이 기억에 남아요. “프로덕트 매니저가 오프라인에서 기획을 하는 사람이면 콘텐츠 마케터는 온라인에서 기획을 하는 사람이다”라는 말이었는데 저희는 고객분들이 온라인에서 접하는 모든 콘텐츠를 기획·제작하고 글을 쓰는 만큼 일리가 있는 것 같아요. 기획자, 제작자, 에디터의 역량을 모두 발휘해야 하는 사람이 콘텐츠 마케터라고 생각합니다. 하림님의 말씀에 더해, 우리 회사 콘텐츠 마케터가 맡는 특별한 일 중 하나는 상세페이지를 기획 및 디자인해 고객을 설득하는 글쓰기를 한다는 것이에요. 마케터라 하면 광고 크리에이티브를 제작하는 데 업무의 초점이 맞춰져 있다는 느낌이지만, 여기서는 기획 역량까지 발휘해야 하는 점이 특징이죠. 콘텐츠 마케터로서 다양한 일을 하고 계시는데, 어느 정도 정해진 일과가 있을까요? 하루 일과를 딱 잘라서 말하긴 어렵습니다. 그때그때 담당하는 일의 중요도가 달라져서요. 우선 프로덕트 매니저 분이 새로운 강의 기획을 완성하시면 신규 상세페이지를 제작하고, 기존 강의를 업그레이드해 오시면 그에 맞게 기존 상세페이지의 내용을 수정합니다. 홍보 진행이 원활하지 않으면 팀원들과 트러블 슈팅을 통해 상세페이지나 광고 크리에이티브를 손보기도 하고 강사 인터뷰, 수강생 인터뷰 혹은 블로그 게시물이나 카드뉴스 형태의 오가닉 콘텐츠를 발행하기도 합니다. 업무 진행에 있어 큰 틀은 있겠지만 그때그때 업무의 우선순위가 달라져요. 일이 많아 야근할 때도 종종 있고요. 패스트캠퍼스 콘텐츠 마케터 직무, 입사 전 생각했던 것과 실무를 진행하는 것에 차이가 있나요? 저는 비슷한 것 같아요. 간단한 퍼블리싱, 마크업(HTML/CSS로 코딩을 하는 것)을 할 수 있는 사람으로서 이런 스킬들이 상세페이지 제작 업무에 도움이 될 거라고 생각했거든요. 입사 전 필수적으로 갖춰야 할 스킬은 아니었지만 업무를 진행하다 보니 마크업을 알아서 더 도움이 되는 게 많았어요. 그런데… 트러블 슈팅이 이렇게 많을 줄은 몰랐네요. 하하. 저는 하림님과 반대예요. 콘텐츠 마케팅이 이렇게까지 다양한 능력을 요구하는 일인 줄 전혀 몰랐어요. 업무 스킬은 물론 담당하는 강의에 대한 지식적인 부분까지도요. 깊게 파고들 필요는 없지만 얕고 넓은 지식이 필요한 일이더라고요.물론 하림님처럼 업무와 관련된 스킬을 가지고 입사하시면 실무에 확실히 도움 되는 부분이 있어요. 포토샵이나 HTML/CSS 같은 것들요. 하지만 저의 경우에는 포토샵도 못 다룰 만큼 아무것도 모르는 상태로 일을 시작했는데도 필요한 것들을 배워 가며 일할 수 있는 환경이라 괜찮았어요. 그 과정에서 성장하고 있는걸 스스로도 느낄 정도에요.지금 패스트캠퍼스에서는 프로그래밍, 데이터 사이언스, 마케팅, 외국어 등 다양한 팀에서 콘텐츠 마케터를 채용 중인데요. 팀별로 콘텐츠 마케터가 갖춰야 할 배경지식, 선호하는 스킬셋이 다를까요? 크게 차이는 없는 것 같아요. 합류하는 팀에 따라 만들게 되는 콘텐츠의 성격은 달라질 수 있지만 배경지식이 필수는 아니거든요. 프로덕트 매니저 분들이 작성하신 기획 문서를 읽고 핵심이 되는 부분을 짚어 콘텐츠로 만들어낼 수 있으면 됩니다. 이해하기 어려운 부분은 프로덕트 매니저 분들께 물어보면 어느 팀에서건 친절하게 알려주실 거예요. 맞아요. 저도 파이낸스 분야를 공부하며 콘텐츠를 만들고 있는데, 아는 게 점점 많아지고 있는 것 같아 뿌듯합니다. 콘텐츠 마케터는 끊임없이 새로운 것들을 배워야 하는 직무 같은데요. 패스트캠퍼스에서 콘텐츠 마케터로 일하며 가장 힘든 점은 무엇인지 솔직하게 말씀해 주신다면? 하나의 콘텐츠에 오랜 시간을 투입할 수 없는 점? 일주일에 새로운 상세페이지를 세 개씩 만들 때도 있다 보니 한 가지 업무만 집중해서 파고들 시간적 여유가 없어요. 특히 트러블 슈팅이 많이 발생하다 보면 업무 시간이 절대적으로 부족하죠. 유나님 말씀에 더해, 강의마다 특징을 가장 잘 보여줄 수 있는 상세페이지를 만들기 위해 고민하는 게 재밌으면서도 어려운 일 같아요. 이런 부분에 대해 어떤 도움을 드릴 수 있을까 다른 시니어 분들과 함께 고민 중이고요. 그리고 솔직히 말하자면, 일이 정말 많아요. 그게 제일 힘들죠. 업무 과다로 고생이 많으신데, 힘든 점들이 있음에도 이 일을 계속하게 만드는 원동력은 무엇인가요? 일은 많지만 업무 방식에 제한은 없어서 이것저것 새로운 시도를 해 볼 여지가 있다는 게 좋아요. 상세페이지를 수정했거나 새로운 광고 크리에이티브를 만들었는데 효율이 좋다거나, 오가닉 콘텐츠를 발행했는데 커뮤니티 등에 업로드되는 등 좋은 반응을 얻었다거나 하면 보람도 있고요. 틀에 박힌 일을 하지 않는다는 점이 재밌어요. 맞아요. 새로운 시도에 대한 제재가 없으니 할 수 있는 게 많아서 좋죠. 성과에 따른 연봉협상도 유연하게 이뤄지고요. 어떤 콘텐츠 마케터를 동료로 맞이하고 싶으신지 궁금합니다. 새로운 시도에 대한 거리낌이 없으신 분. 새로운 일이 주어졌을 때 ‘저는 이거 못하겠어요’가 아니라 ‘이것도 저것도 해 볼게요’라고 말할 수 있는 분! 팀원들과 협업을 잘할 수 있는 분. 프로덕트 매니저, 퍼포먼스 마케터의 의견을 반영해 콘텐츠를 제작하고 배포하기 때문에 커뮤니케이션 능력이 좋다면 일을 잘할 수 있을 것 같아요. 거기에 하나 더, 자신의 의견만 고집하기보다 다른 사람의 의견을 잘 받아들일 수 있는 분. 서로의 잘잘못을 따지기보다 더 나은 방향을 위해 협업하고 있다는 걸 잊지 않는 분이면 좋겠어요. 쓰는 걸 두려워하지 않는 분이면 정말 좋고요. 맞아요. 포토샵이나 워드프레스 스킬들은 모르셔도 괜찮아요. 저희가 알려드릴게요! 마지막 질문입니다. 두 분께 패스트캠퍼스란 어떤 곳일까요? 매일매일 변화무쌍한 곳. 틀에 박힌 일을 하지 않아요. 오늘, 지금입니다. 오늘이 쌓여서 내일이 되고 매일이 되는데, 그 오늘이 매일매일 새로워요.* 패스트캠퍼스 콘텐츠 마케터는? *  패스트캠퍼스 고객들이 접하게 되는 모든 접점을 컨트롤하는 역할을 담당합니다. 기획 과정에 참여하는 것은 물론 교육 콘텐츠 상세페이지를 제작하고, 매력적인 광고 크리에이티브를 만들고, 강사와 수강생들의 목소리를 전달하기도 합니다. 즉, 패스트캠퍼스에서 만들어지는 모든 콘텐츠의 외모를 결정하고 그 톤앤매너를 관리합니다.
조회수 1937

Backbone 적용기

Backbone이란?Backbone은 자바스크립트 프레임워크로 MVC 패턴을 적용하여 웹 애플리케이션 개발할 수 있도록 돕는 유용한 프레임워크입니다. MVC 패턴에 대해서는 밑에 더 자세히 설명하기로 하고 간단히 Backbone을 적용한 후의 장점을 소개하면 깔끔하게 뷰와 로직을 분리할 수 있어 코드를 유지 보수하는데 드는 시간이 줄며 기능 수정 혹은 기능 확장이 쉬워진다는 점등을 들 수 있습니다.또한, Backbone에서는 Underscore 라이브러리를 사용하는데, 이 라이브러리에서 제공하는 템플레이트 기능을 통해 뷰의 재사용과 설계를 쉽게 할 수 있다는 점도 장점입니다.만약 서버 측에서 RESTful한 URL을 제공한다면, Backbone을 사용하여 얻을 수 있는 이점이 더 확실해집니다. 모델에 RESTful한 URL을 제공하면, 간단하게 서버와 동기화하면서 그에 따르는 뷰의 변화 따위를 손쉽게 구현할 수 있습니다.RESTful한 인터페이스 설계에 대해서 궁금하시다면 이전에 올라온 글을 참조해보세요. Backbone 기반으로 설계된 여러 웹 애플리케이션 중에는 여러분이 잘 알고 있을만한 서비스들도 있을 것입니다.MVC 패턴?이미 MVC라는 용어에 익숙하신 분들도 많겠지만, 생소하신 분들을 위하여 간단히 정리해보면 MVC 패턴은 디자인 패턴 중의 하나로 모델(실제 쓰일 데이터)과 모델을 보여줄 뷰(인터페이스) 그리고 사용자로부터의 입력을 받아 모델과 뷰를 중재하는 컨트롤러로 나누어서 구현을 해나가는 방식을 말합니다. GoF 책에도 이 패턴이 소개되어 있지요.모델은 뷰나 컨트롤러와 무관하게 작성되는데 그런 모델을 뷰가 관찰하고 있다가 모델의 변화에 따라 적절히 뷰의 모습을 바꾸게 되므로 서로 투명하게 작동하게 됩니다. 즉 모델만 잘 설계해서 만들어주고 그에 따르는 뷰의 모습만 정의하면 그다음부터는 지저분하게 모델의 상태에 따르는 코드를 직접 처리할 필요가 없다는 장점이 있습니다.Backbone이 MVC 패턴을 적용하기 위한 프레임워크라고 하였지만, 실제로 Backbone에서는 MVC 패턴의 변형인 MVR 패턴을 사용합니다. 컨트롤러 대신 Router가 쓰이는 형식인데, 이 링크에서 Backbone의 Router에 대한 자세한 설명을 제공하고 있습니다. 하지만 Router가 컨트롤러의 역할을 대행하는 것은 아니고, 대부분의 Backbone 예제를 살펴보면 실제로 컨트롤러가 담당하는 업무들을 뷰에 이관하여 처리하는 것을 볼 수 있습니다. MV* 패턴 중에는 MVP 패턴이나 MVA 패턴 같은 MVC 패턴의 변형들이 존재합니다만 그 바탕을 이루는 Model-View의 관계는 변하지 않는 것을 볼 수 있습니다.Simple code snippet간단한 예제를 통해 실제 코드 상에서 어떤 식으로 Backbone을 적용하는지 알아보겠습니다.모델먼저 모델을 정의해야 합니다. 가령 밑의 코드에서는 사각형 모델을 정의하고 있는데요, 기본값을 지정해 줄 수 있고, 사각형 모델과 관련된 함수들을 정의해놓은 것을 볼 수 있습니다.var Shape = Backbone.Model.extend({ defaults: { x:50, y:50, width:150, height:150, color:'black' }, setTopLeft: function(x,y) { this.set({ x:x, y:y }); }, setDim: function(w,h) { this.set({ width:w, height:h }); }, });이렇게 Backbone.Model.extend 함수를 통해 모델의 청사진을 구성하게 됩니다. 이 모델을 이용하여 뷰를 구성할 수 있습니다.콜렉션Backbone.Collection.extend({ model: Shape });많은 상황에서 복수의 모델을 다루게 될 일이 생깁니다. 가령, 게시판에 올라온 글들은 게시물의 집합이라고 볼 수 있겠죠. 콜렉션을 통해서 이러한 복수의 모델의 집합을 만들어낼 수 있습니다. 위의 코드에서는 앞서 소개한 Shape 모델의 콜렉션을 정의한 것을 볼 수 있습니다. 모델과 마찬가지로 콜렉션도 뷰에 바인딩할 수 있고, 콜렉션에 관련한 이벤트(change, add, remove)를 뷰과 관찰하게 할 수 있습니다. 또한, Underscore 라이브러리에서는 콜렉션과 밀접하게 관련된 여러 함수를제공합니다.뷰var DocumentRow = Backbone.View.extend({ tagName: "li", className: "document-row", initialize: function() { this.model.bind('change:name', this.render); }, events: { "click .icon": "open", "click .button.edit": "openEditDialog", "click .button.delete": "destroy" }, render: function() { // render or update something } });기본적으로 뷰에 뷰와 관련된 모델이나 콜렉션을 바인딩하게 되는데요, 이 바인딩을 통해 뷰는 모델이나 콜렉션의 상태를 관찰하고 변화를 감지하여 바인딩 시 전달한 핸들러를 통해 적절한 행동을 수행할 수 있게 됩니다. 위의 예제를 보면 모델의 name 속성 변경 시 render 함수를 호출하도록 바인딩한 것을 알 수 있습니다. 또한, 뷰에 관련한 이벤트와 그에 관련된 핸들러를 events에 정의해놓을 수 있습니다. 보통 render 함수 내에서 뷰를 구성하거나 혹은 바인딩 된 모델, 콜렉션의 변화에 따르는 뷰의 변화를 적용하게 됩니다.뷰에 관련된 더 자세한 사항은 뷰 문서를 참조하시기 바랍니다.템플레이트var compiled = _.template("hello: <%= name %>"); compiled({name : 'moe'}); => "hello: moe"Underscore에서 제공하는 템플레이트 기능을 이용하여 문자열을 곧바로 html 요소로 만들어낼 수 있습니다. 또한, 템플레이트 내에 자바스크립트 함수 등을 삽입하는 기능도 제공합니다. 기본적으로 Underscore에서 템플레이트 기능을 제공하지만, 그 외에도 여러 라이브러리가 있습니다.가령 mustache를 이용해서도 똑같은 기능을 할 수 있습니다. 필요에 따라 유연하게 템플레이트 라이브러리를 바꿀 수 있다는 점이 매력이라고 볼 수 있습니다. Backbone 공식 사이트에서도 이러한 템플레이트 라이브러리를 이용하는 것을 권장하고 있습니다.Ember.jsBackbone이 나름의 역사가 있는 프레임워크이기 때문에 많이 쓰이고 있지만, 그 외에도 비슷한 기능을 제공하는 프레임워크가 많습니다. 그 중의 하나인 Ember.js가 있습니다. Ember.js의 장점이라면 기본적으로 Handlebars라는 템플레이트 라이브러리를 지원함과 동시에 Backbone보다 심화된 여러 기능을 제공하는 점이 있습니다.그러면서도 사용의 꼴이 Backbone과 비슷하므로 만약 Backbone을 사용해 본 적이 있다면 적응하기도 쉽습니다. 참고로 아래에 여러 MVC프레임워크를 소개하고 장/단점을 분석한 사이트의 링크를 달아두었는데 여타의 프레임워크보다 더 좋은 점수를 받기도 하였습니다.Backbone 말고 다른 MVC프레임워크를 원한다면, 특히 자체 템플레이트 라이브러리를 지원하는 프레임워크를 원한다면, Ember.js 사용을 고려해 보는 것이 어떨까요?더 읽어볼 만 한 것An Intro to Backbone.jsBackbone.js by exampleBackbone Tutorials위의 사이트들은 제가 Backbone을 공부하면서 참고한 사이트들입니다. 영문 사이트이지만 코드만 훑어 봐도 그 의도와 얼개는 파악할 수 있을 것으로 생각합니다. Backbone 공식 사이트에서 제공하는 튜토리얼 사이트도 방문해볼 가치가 있습니다. Backbone을 이용하여 개발한 간단한 서비스의 소스코드를 공개해 놓았습니다.The Top 10 Javascript MVC Frameworks ReviewedJourney Through The JavaScript MVC Jungle위 두 사이트에서는 앞서서 소개한 Backbone과 Ember.js 외의 여러 MV*패턴 프레임워크를 소개하고 장단점에 대하여 분석해놓았습니다.마치며이상으로 Backbone 도입과 그에 따르는 장점을 살펴보았습니다. 일반적인 홈페이지와 제작과는 약간 양상이 다른 웹플리케이션(웹 + 애플리케이션)개발자 분들은 프로젝트에 MVC 패턴 프레임워크를 적용해 보면 어떨까 하는 생각이 듭니다. 프로젝트의 생산성에 크게 이바지할 수 있으리라 생각됩니다.#스포카 #개발 #개발자 #인사이트 #Backbone #일지 #개발팀
조회수 1352

감정이 이성보다 앞서야 한다

 일을 그만두고 여러 가지 백수짓을 하느라 굉장히(?) 바빴습니다. 포켓몬고도 열심히 하고 벌건 대낮에 맛집에 가서 맛있는 것도 먹고 낮술도 먹고요. 여러 백수 짓 중에 기억에 남는 짓(?)이 있습니다. 우선 그걸로 이야기를 시작해볼까 해요. 얼마 전에 속마음 버스 라고 카카오와 서울시에서 함께하는 서울시민 힐링 프로젝트를 다녀왔습니다. 대략적으로 설명드리자면요렇게 생긴 버스에서 둘이 앉아 각자의 속마음을 이야기하는 프로그램입니다. 버스라고 해서 그렇게 크지는 않고요. 버스 안에서 둘이 마주 앉아 이야기를 해요. 버스에는 2명씩 2팀이 참석을 하게 됩니다. 자, 이 포스트가 속마음 버스 광고가 아니니 이제 본론으로 넘어가기로 하죠. 죄송합니다. 속마음 버스에 타면 두 가지 규칙을 따라야 합니다.- 3분의 침묵을 지켜주세요!3분 동안 상대방이 이야기를 할 때, 절대 아무런 말도 하지 말고 듣기만 하세요. '응', '아니'와 같은 대꾸도 허락되지 않습니다.- 마음을 표현하세요!상대가 무언가 본인과 다른 생각이나 오해를 했을 때 그 순간 들었던 감정을 잘 기억하고 본인의 차례가 되면 아까 그 이야기를 들을 때 내 마음이 이랬어.라는 말부터 시작해보세요.항상 마음이 먼저 표현되어야 합니다. 제가 이 프로그램을 진행하면서 가장 인상 깊었던 포인트는 바로 '항상 마음이 먼저 표현되어야 합니다'라는 말이었습니다. 속마음 버스를 탔던 친구와 저는 여러 이야기들을 했습니다. 처음에는 시답잖은 이야기로 시작해서 점점 평소에는 이야기하기 껄끄러웠던 서로의 대한 이야기를 하기 시작했죠. 그중에선 물론 그 친구가 생각하는 저의 단점에 대한 이야기도 포함되어 있었습니다. 저는 친구가 이야기하는 저의 단점을 듣고 그 친구가 오해를 하고 있다고 생각해서 논리적으로 반박하려고 했습니다.나는 그 당시에 '이렇게' 생각해서 '그렇게' 행동했던 거야. 너는 오해하고 있어.마음속에선 저런 식으로 이야기를 시작하려고 했지만 속마음 버스의 두 번째 규칙에 따라 감정을 표현하기로 했죠.너의 이야기를 들으니 안타깝다.나는 그럴 의도가 아니었는데 그렇게 전달된 것 같아서 저 말 한마디에 친구의 긴장했던 표정이 순식간에 녹아 사라지는 것이 보였습니다. 평소 같았다면 논쟁으로 이어질 대화가 술술 잘 풀리는 것 같아 기분이 매우 좋았습니다. 이번에는 다른 예를 들어보도록 하겠습니다. "리더는 마지막에 먹는다(Leaders eat last)"로 유명한 사이먼 사이넥의 테드 강연 중에 "나는 왜 이 일을 하는가?"라는 제목의 강연이 있습니다.https://youtu.be/XfsKZ3jm8b8나는 왜 이 일을 하는가?  - 사이먼 사이넥 여기서 사이먼은 이렇게 이야기합니다.이 세상에 존재하는 모든 조직과 사람들은 자신이 ‘무엇을(What)’ 하는지 압니다. 100% 압니다.어떤 이들은 ‘어떻게’ 하는지도 압니다. 차별화, 가치제안, 프로세스 우선순위, 독창적 판매 제안…하지만 ‘왜’ 하는지 아는 개인이나 조직은 극히 드뭅니다. ‘돈(수익)을 벌기 위해서는 ‘왜’가 아닙니다.그건 그저 결과일 뿐이죠. 여기서 ‘왜’란 그 일을 하는 목적, 동기, 신념을 말합니다.당신 조직은 ‘왜’ 존재합니까? 당신은 ‘왜’ 아침마다 침대에서 일어나 하루 종일 무언가에 골몰합니까?애플이 나머지 경쟁사들과 같다면, 그들의 마케팅 메시지는 이럴 겁니다.“우리는 훌륭한 컴퓨터를 만들었습니다. 디자인이 유려하고 사용이 편리하며 사용자 친화적입니다. 한 대 사실래요?”......애플이 실제로 커뮤니케이션하는 방식은 이렇습니다.“우리가 하는 모든 일은 우리가 믿는바, 즉 현실에 도전하기 위함입니다. 우리는 ‘다르게 생각하기’의 가치를 믿습니다. 우리가 현실에 도전하는 방식은 모든 제품을 유려한 디자인, 편리한 사용법, 사용자 친화적으로 만드는 것입니다.그래서 이 훌륭한 컴퓨터가 탄생했습니다. 한 대 사시겠습니까?” 우리에게, 또 우리 앞에 있는 사람에게 더욱 다가오는 말은 What이 아니라 Why라고요. 우리들은 종종 착각하곤 합니다. 우리는 이성적인 인간이기 때문에 이성적으로 생각하고 논리적으로 판단해야 한다. 효율적으로 일만 잘된다면 감정은 배제시켜도 좋다라고요. 기계와 컴퓨터가 발전할수록 점점 우리는 그렇게 생각하도록 강요받고 그렇게 행동하는 게 당연한 것처럼 여겨지고 있습니다.무한도전, 그랬구나 게임중에서... 다른 사람의 마음을 움직이는 가장 효과적인 방법은 사이먼이 얘기했듯이 "너는 이걸(What) 해야 돼" 또는 "너는 이렇게(How) 해야 돼"가 아니라 "네가 왜(Why) 이걸 해야 할까?"입니다. 인간의 동기와 신념에 가장 맞닺아 있는 것은 왜(Why)이고 Why는 감정에 의해서 움직입니다. Why는 당신이 마음속에서 느끼는 것, 믿는 것, 하고 싶은 것을 기반으로 이루어집니다. 따라서 우리는 우리의 감정을 표현함으로써 내가 왜 이 이야기를 하는지 상대방에게 전달해야 하고 상대방의 이성이 아닌 마음을 움직이도록 노력해야 합니다. 구체적으로 다시 한번 이야기하자면,- 상대방에게 나의 생각(What or How)을 말하기"내가 생각하기에 너는 이런 것 같고, 이렇게 했으면 좋겠다"- 상대방에게 나의 감정(Why)을 말하기"나는 네가 이렇게 해서, 내 기분은 이렇다" 이제 우리는 감정이 왜 중요한지 알았습니다. 그런데 감정을 전달하는 일이 왜 이렇게 힘들까요? 연인과 가족을 포함한 다른 사람과 이야기를 할 때, 우리는 대부분 감정이 아닌 자신의 생각을 많이 말하곤 합니다. 자신의 생각을 자주 이야기하는 이유는 우리가 스스로 자신의 감정이 무엇인지 인지하거나 깨닫기 어렵거나 표현하는 게 서툴어서일 수도 있고, 자신의 구체적인 감정을 표현하게 되면 자신의 약한 마음을 드러내는 것이라고 생각해서 일 수도 있습니다. 다른 이유들이 많겠지만 안 그러려고 노력해야겠지요. 소수의 현대인들은 마음속에서 피어오르는 감정을 이성보다 더 낮은 레벨로 생각하고, 감정을 억누르기 이기기 위해서 논리적인 사고방식 또는 대화방식을 선택하곤 합니다. 논리적으로 상대방을 반박한다면 상대방이 그것을 머리로는 수용할 수 있어도 마음으로는 받아들이지 못할 가능성이 큽니다. 설상가상으로 싸움이 일어날 수도 있고 서로가 서로의 인격을 해치는 결과로 이어질 수도 있지요. 우리는 "감정적인 사람"이라는 말을 대부분 부정적으로 표현하거나 인식하곤 합니다. 그러나 요즘 들어 저 같은 경우는 감정을 솔직하게 표현하려고 애쓰는 편입니다. 음식점에서 서비스를 받아 기분이 좋을 때는 "아싸!"하고 입으로 외치기도 하고 가끔은 방방 뛰기도 해요. 나이가 계란 한판인데 너무 경박스러운 거 아니냐며 핀잔을 받을 때도 많지만 솔직한 감정표현을 몸소 실천 중입니다(다음에 이야기하겠지만 여러 상황에서 좋은 결과를 얻었고, 긍정적인 피드백도 몇 번 받았습니다). 반대로 기분이 안 좋을 때는 직설적으로 이야기하는 것도 실험 중에 있습니다. 우리는 이성의 힘에 기대어 스스로 너무나 많은 것을 포기하고 살고 있습니다(좋아하는 일도 사랑도...). 다음 포스팅에서는(언제 돌아올지 모르지만) 이 포스팅과 같은 맥락으로 "당신이 할 수 있는 일이 아니라 하고 싶은 일을 해야 한다"라는 주제로 이야기해보도록 하겠습니다.더 읽어볼 이야기인공지능 시대, '인감지능'을 믿는 이유 - 무인양품(MUJI) 카나이 마사아키 회장 인터뷰[TED] 나는 왜 이 일을 하는가? - 사이먼 사이넥[TED] 리더는 마지막에 먹는다 - 사이먼 사이넥공감능력이 뛰어난 사람들의 5가지 습관 - 고영성내재적 동기 vs 외재적 동기 - 완벽한 공부법, 고영성#비주얼캠프 #인사이트 #경험공유 #조언

기업문화 엿볼 때, 더팀스

로그인

/