스토리 홈

인터뷰

피드

뉴스

조회수 1363

옐로쇼핑미디어 그룹의 팀그레이프 최초 멤버, ‘임용택 PM’을 만나다

안녕하세요, 옐로모바일 사내기자 Y입니다! 옐로가족들의 숨은 매력과 스토리를 발굴해 소개하는 옐로인 인터뷰 네 번째 이야기입니다! 네 번째 옐로피플 주인공은 패션의, 패션에 의한, 패션을 위한 남자! 설립 6개월만에 85억원 규모의 투자를 유치하며 경쟁력을 입증한 패션 이커머스 기업 ‘팀그레이프’에서 엘레뉴를 담당하고 있는 ‘임용택 PM’입니다! 넘치는 패션센스로 대학생때부터 직접 본인의 옷을 만들어 입었다는 사연부터 팀그레이프의 최초 멤버로 합류하기까지…… 임용택 PM이 들려주는 옐로피플 스토리! 지금 바로 만나보세요! Y: 안녕하세요! 옐블 독자들을 위한 간단한 자기소개 부탁 드립니다.임: 안녕하세요 옐블 독자 여러분, 옐로쇼핑미디어 팀그레이프 신규사업에서 엘레뉴(http://elainue.co.kr/) 를 담당하고 있는 임용택 PM입니다. 반갑습니다 :)Y: PM이 정확이 어떤 일을 하는 직무인지 궁금합니다! 임: 우선 PM(product manager)은 신규 제품에 있어서 처음부터 상품 판매가 이뤄지기 전까지 거의 모든 일을 담당하는 매니저라고 보시면 돼요. 저는 팀그레이프에서 상품 기획단계부터 생산, 유통, 마케팅 기획, 모델 촬영까지 담당하고 있고요, MD와 SNS 담당자 등 팀원 관리까지 하고 있습니다. Y: 와… 직무소개만 들었는데 제가 다 피곤해지는 느낌이네요. 임: ㅋㅋ그렇죠? 팀그레이프도, 팀그레이프에서 제가 담당하고 있는 ‘엘레뉴’도 신규사업이라 더 일이 어마어마합니다. 심지어 엘레뉴는 오픈 한지 아직 3주밖에 안됐습니다.Y: 팀그레이프 전에도 패션분야에서 커리어를 쌓으셨나요? 임: 네. 처음에는 남성의류 편집숍 앤드류앤레슬리에서 셔츠 기획 생산을 담당했고, 맞춤정장 O2O 기업인 스트라입스에서는 상품기획 및 생산 팀장으로 있었습니다. Y: 완전 패션 인생(?)이군요! 패션분야를 선택하게 된 이유가 있었나요? 임: 원래는 멀티미디어학과로 입학했어요. 게임 개발자가 목표였거든요. 그런데 한국 대부분의 남성들이 그렇듯 군대 전역 전에 앞으로의 인생에 대한 고민을 해봤는데, 제 전공에서 충분한 만족감을 느끼지 못한다는 생각이 자꾸 들더라고요. ‘내가 지금까지 진짜로 좋아했던 것이 뭘까’라는 질문을 스스로에게 던져봤더니 답은 ‘옷’이라 생각되어 의류학과로 전과하게 됐습니다J 그 후로 직접 만든 옷도 입고 다니고 당시 여자친구에게도 제가 만든 세상에서 하나뿐인 옷도 선물했었어요ㅋㅋㅋ Y: 세상에! 세상에서 하나뿐인 옷이라니, 너무 로맨틱하자나요…ㅠㅠ임: 근데 촌스럽다고 안 입던데요 (슬픔)Y: (토닥토닥)Y: 자자 다음 질문으로 넘어가서, 옷 잘입는 팁이나 머스트 해브 아이템을 추천한다면? 임: 무조건 비싸기만 한 옷이 좋은건 아니에요. 화려한 스타일의 옷보다는 검정색, 네이비, 흰색, 회색 등 베이직한 색의 옷을 잘 매치해서 입는 것을 추천해요. 이 네 가지 색깔 안에서의 조합은 실패하기 힘드니까요! Y: 좋은 팁 감사합니다! 용택님은 처음 팀그레이프와 어떻게 인연이 닿았나요?임: 스트라입스에서 재직 중일 당시에 코트를 생산하려고 준비하고 있었습니다. 그때 지금 팀그레이프 대표님께서 생산에 도움을 주셨고요. 거기서 인연이 닿았는데, 생산이 끝나고 난 뒤에 대표님이 YSM에 ‘패션사업부’가 생기는데 같이 일을 해보지 않겠느냐고 제안을 주셨어요. 그래서 작년 5월에 패션사업본부 첫 번째 맴버로 들어오게 됐습니다. Y: 잘 자리잡은 기업에 있다가 초기 멤버로 오기 쉽지 않았을 것 같아요. 임: 네, 세팅멤버로 오는 것도 부담스러웠고 거의 남성복 위주로만 일을 하다가 여성복을 담당할 수 있을지에 대한 고민도 컸어요. 그렇지만 대표님과 더 같이 일해보고 싶었고, 대량생산 기획을 경험해보고 싶었기 때문에 오기로 결정 했어요. Y: 아무래도 초기 멤버만의 고충이 있었을 것 같아요. 가장 힘들었던 순간은 언제였나요? 임: 사실 제가 패션사업부 대표님보다 한 달 정도 먼저 입사했습니다. 팀에 저 혼자여서 외로웠던 게 가장 컸던 것 같아요. 그리고 팀그레이프는 미쳐라, 봉자샵, 메르시엘 등 여러 소호 브랜드를 가지고 있다 보니 다양한 일을 했어요. 미쳐라 오프라인 스토어를 열었을 때 가서 판매 지원을 하기도 했고, 메르시엘 래쉬가드 공장에 가서 물건을 핸들링하고 뽑기도 했어요. 여기저기 불려가고 심신이 힘들었죠 (ㅠㅠ)Y: 정말 몸이 열 개라도 모자랐겠어요! 그럼 반대로 보람을 느낀 적이 있나요?임: 엘레뉴가 오픈한 지 얼마 되지 않았을 때, 배송이 지연된 거예요. 온라인 쇼핑몰이란게 고객의 신뢰도가 정말 중요한데 배송 지연이 생기면 안되겠다고 판단해서 직접 물건을 고객님께 전달 드렸어요. 그때 고객님이 고맙다며 상품에 대해 만족한다는 문자를 보내주셨는데 아직까지 캡쳐해서 가지고 있을 정도로 뿌듯한 순간이었습니다.Y: 생긴지 얼마 안된 기업이지만, 팀그레이프만의 특별한 사내문화가 있나요? 임: 자랑하고 싶은 문화가 있는데, 저희는 한 달에 한 번 GWP(Good Work Place)라는 걸 진행해요. 한 달에 한번 오후에 다같이 단체활동을 하는 건데, 볼링도 치러가고 외부강사를 초빙해서 성격분석 같은 이벤트도 합니다. 팀원들과 업무 외의 액티비티를 함께 할 수 있어 수평적으로 대화도많이 하게 되고 더욱 친밀해 지더라고요. 이렇게 친밀도가 높아지니 결국 업무에서도 시너지로 이어지고, 정말 좋은 문화로 자리잡은 것 같아요 :)Y: 정말 부러운 사내문화네요! 임: 자랑한 김에 이거 하나만 더 할게요! YSM에서는 매월 셋째 주를 ‘런치데이’로 지정하고, 점심시간을 두 시간을 줘요. 이것만으로도 행복할 텐데 직원에게 만원씩 제공을 해줍니다. 런치데이에는 팀원들끼리 조금 멀리 나가서 특별한 음식을 먹고 오기도 해요! Y: 세상에…. 이보다 더 좋은 복지가 있을까 싶어요! Y: 앞으로는 어떤 일을 해보고 싶으신가요?임: 우선 패션쪽 일을 계속 하고 싶어요. 나중에 나이가 들면 고향인 목포에 내려가서 패션샵을 운영하고 싶은데, 제 롤모델이 여용기 선생님이거든요 :D 부산에서 마스터테일러로 활동하고 계신 분인데, 60대 중반인데도 옷을 정말 잘 입으세요. 그 분처럼 계속 패션쪽에서 종사하면서 스타일리쉬하게 살고 싶습니다. 출처 :여용기 인스타그램 (@yeoyoungki)Y: 마지막 질문입니다. 앞으로 팀그레이프에 바라는 점이 있다면?임: 지금 팀그레이프에는 20명 정도의 멤버들이 함께 일하고 있는데, 점점 팀원들이 늘어나고 규모가 커질 것 같아요. 회사 규모가 커져도 지금처럼 많은 대화들을 나누고, 다양한 아이디어를 제안할 수 있는 열린 기업문화를 유지했음 좋겠어요! 팀그레이프에 많은 응원을 부탁 드립니다. :)
조회수 1337

아무것도 몰라요

처음 창업팀에 조인할 때는 어떻게 해야 하는 걸까?아무도 가르쳐주지 않았다.이전에 스타트업 두 군데에서 일해본적이 있었지만, 둘 다 인턴이나 직원형태로 짧은 기간 동안만 일했기 때문에 공동창업자에게는 어떤 과정이 기다리고 있는지 전혀 알지 못했다.돈을 넣으라니까 돈을 넣으면 되는거겠거니...얼마까지 가능하세요?500까지는 가능할 것 같은데요...그럼 런칭하기 전에 하셔야 하니까 지금 바로 넣어주세요.???이거 뭐 경매도 아니고 그렇게 투자금을 넣었다.+아직도 7월 1일 처음 귀국해서 사무실을 방문했던 날이 기억난다.수서에 있는 작은 오피스텔이었는데 당시 팀원 3명이 각자 벽을 보고 앉아있는 형태였고, 가운데 둥그런 테이블과 화이트 보드가 있었다.공동대표 2명과 나와 동갑인 여후배 1명이 팀 구성이었고 거기에 나까지 4명이, 앞으로 위젠을 만들어 가야 할 팀이었다. (현 홍기대대표 JOIN 이전)어색한 인사를 마치고 맥주 한 잔을 하러 갔다.이전 스타트업에서의 경험이 영업팀이었던 까닭에, 매일같이 소주 회식은 기본이었는데환영 회식으로 가벼운 맥주라니 뭔가 외국 느낌이 물씬났.........다 ㅋㅋㅋㅋㅋ법인 카드는 따로 없었고 공용 비용은 대표 카드로, 식사는 각자의 카드로 해결했다.조인하자마자 여러 가지 사실을 알게 되었는데 좋은 소식들만은 아니었다1) 출시 일정이 7월이었는데, 외주 개발을 통해 맡기다보니 지연되어 8월로 예상됨2) 실제로 공동 대표 2명이 투자한 금액은 이미 상당금액 개발/디자인비로 소진함3) 서비스 출시 때 시작할 3개의 캠페인은 지인 위주로 정해졌으나 그 이후 캠페인이 잡혀있지 않은 상황4) 팀원들이 서로 친구이고 후배라 너무나 편하게 대한다는 점 (장점인 줄 알았는데 단점이었음) +여기에서 뭐부터 부딪히며 배웠다고 말해야 할지 모를 정도로 잘못한 것들이 정말 많았다.- 현재 재무상황과 각자 투자한 금액 등 제대로 알아보지도 않고 돈을 넣었다- 주주간계약서에는 베스팅도 안 걸려있었다- 돈도 없으면서 쓸데없이 돈을 많이 썼다 (고학력 디자이너 2명 고용 / 비싼 가구 구매 / 비싼 외주 개발)- 선후배와 친구끼리 창업했더니 진지한 토론보다 쉽게 싸움이 일어남- 런칭 외 향후 계획 없음말하자면 총체적 난국이랄까...................차차 다루게 되겠지만 우선 이 포스팅에서는 공동창업에 대해 배운 것들을 정리해보고 싶다친구와의 창업에 대하여일하는 관계로 만나 친해지는 건 괜찮다. 하지만 친한 관계로 만나 일하면서도 친구처럼 대해버리면, 때로 진지한 논의를 해야 할 때 대책이 없는 경우가 생긴다.선후배가 만나니 후배가 내는 의견은 '미숙한 의견'으로 묵살되기 일쑤.친구끼리 만나니 결정 권한이 없이 한 없이 싸우다가 관계가 틀어지기 일쑤.당연히 주변에 유능한 친구들이 있으면 무조건 끌어와야겠지만,최대한 일할 때는 성숙하게 서로를 대하고 결정체계는 명확하게 하는 것이 정.말. 중요하다고 느꼈다.*이후 나올 이야기이지만 미리 말하자면,이제는 기대대표님과 개인적으로도 정말 친하고, 대표님은 나보다 5살이 많은 오빠이지만대표님이 처음 조인했을 때부터 존칭을 사용해달라고 요청했고, 아직도 서로 존칭을 쓴다.호칭이나 존칭 여부가 토론에 있어 은근히 (많이) 중요하다.나이나 기존의 사회적 관계가, 프로페셔널하게 일할 수 없는 환경을 만드는 일은 사전에 꼭 방지하자.창업팀에 조인하게 된다면나는 멋모르고 학벌만 보고 조인했는데 (이후 생각보다 중요하지 않다는 것을 깨달았습니다)경험이 있는 사람이 단 한 명이라도 있으면 좋았겠다 싶다.안 그래도 맨땅에 헤딩인데, 다들 경험도 없을 뿐더러 경영학과조차 나뿐이라 정말 힘들었다 (...)또한 조인하는 당시의 상황 공유을 분명하고 투명하게 해달라고 요구했어야 했다.나는 당시 분명한 상황 공유를 받지 못했었고, 팀에 합류하기 이전에도 그랬다면 이후에도 그럴 가능성이 농후하기 때문이다. 실제로 그 이후에도 한동안 회사 사정에 대한 공유가 불투명했다.주주간계약서를 제대로 쓰자가장 뼈저리게 느낀 부분이다.스타트업 업계에서 베스팅, 베스팅 하는데, 솔직히 우리 다같이 굳건한 마음으로 시작했는데당장 앞도 안 보이는 상황에서 굳이 몇 년 베스팅 걸어가며 지분을 나눠야 하나?답은: 나눠야 한다. 무조건 나눠야 한다아무것도 모르고 베스팅 조건이 없는 동업계약서를 쓰는 바람에 런칭한 지 몇 달만에 팀을 나간 초기 창업자가 3년간 팀을 지킨 나보다 내내 훨씬 많은 지분을 갖고 있었다.만약 크게 성공이라도 했다면 이 얼마나 억울한 일인가(!)(도의상 양보해주지 않을까 했지만 그런 것은 없습니다. 물론 그랬던 분도 있음.)그러니 공동창업이나 창업팀 조인을 고려하시는 분이라면 기존에 창업한 선배들을 찾아가서 이것저것 구체적으로 많이 물어보고 결정을 하셨으면 좋겠다.당시 나는 너무 마음이 급했고, 치기어렸다.#라이비오 #스타트업 #창업 #스타트업합류 #스타트업조인 #스타트업이직 #마인드셋 #경험공유
조회수 947

검은 머리 외국인으로서 스푼 라디오에 입사하기까지

스푼을 만드는 사람들 여섯 번째 이야기서비스 플랫폼 팀 막내이자 분위기를 담당을 맡고 있는, 6개월 차 개발자 Kyu를 소개하고자 한다.영어가 편해요? 아니면 한국어가 편해요?"일반적인 의사소통에 있어선 한국어가 편하고, 업무를 볼 땐 영어가 편해요."Q. 원래 되게 개구쟁이(?)의 이미지를 가지고 계신 줄 알았는데.."저 원래 진지한 거 진짜 싫어해요. 제가 겉보기엔 늘 장난꾸러기 같아 보이실 수도 있지만, 사실 이렇게 단 둘이 이야기를 하면 또 다른 진지하고 진정성 있는 저의 모습이 보이실 거예요. 저 지금 많이 진지해요?"(인터뷰 전에는 큐가 그저 재미있는 사람이라고 생각했는데, 인터뷰를 하고 나서 그를 다시 보았습니다..)'Kyu'라는 사람을 알고 싶습니다.Q. 본인은 어떤 사람이라고 생각하세요?Me, Myself, and I - "저는 제가 느끼는 것 그리고 원하는 것에 굉장히 집중을 하는 편이에요.제 본인 스스로에게 집중하는 양도 기준치도 꽤나 높은 편이에요. 무엇보다 스스로 혼자만의 시간을 굉장히 중요시합니다."Q. 국적이 Canadian이라 들었습니다. "네, 저는 8살 때 부모님과 함께 교육을 위해서 캐나다로 이민을 갔었어요. 그리고 캐나다에서 고등학교까지 있었고 그 후엔 미국에서 대학을 졸업했어요. 졸업 후에 한국에 취업을 하게 되어서 어느덧 한국 생활이 1년 3개월 차가 되어가고 있네요."Q. 한국에서 취업을 하게 된 계기가 있다면?"사실 처음에 제가 스타트업에 취업을 한다고 했었을 때, 주변에서 안정적인 곳이 아닌 스타트업을 선택하느냐라고 많이들 물어보셨어요. 그것도 한국에서요. 근데 저는 제가 정말 무슨 일을 하고 싶은지 잘 몰랐었어요. 목표의식과 노력 없이 공부를 하다 보니, 어느덧 졸업이 다가왔고 좌절하게 됐었어요. 정말 오랜 시간 아무것도 못했었어요. 길을 잃었다고 할까요? 그러다가, 용기를 내서 현실적으로 내가 할 수 있는 일이 무엇일까 고민 끝에 한국을 선택했어요. 한국엔 유능한 사람들이 정말 많고, 실력 있는 사람들이 열심히도 하는 곳이에요. 정말 무언가를 최선을 다해서 해본 다는 게 무엇인지 겪기 위해선 한국에서 배워보는 게 좋다고 생각했고, 실제로도 그렇다는 걸 느끼고 있어요."당신의 회사생활이 궁금합니다Q. 서비스 플랫폼 팀(서버팀)에서 하고 계신 업무는?"저는 현재 하고 있는 업무는, 정확히 말하자면 로그 데이터 수집 및 스푼 앱 내에서 발생하는 유저들의 행동 그리고 현상에 대한 데이터를 실시간으로 수집하고 조회합니다. 그리고 시간에 흐름에 따른 서비스 상태를 나타내 주는 작업을 하고 있습니다."Q. 현재 업무의 만족도는 어느 정도인가요?"업무에 대한 만족도는 높습니다. 저는 신입이고, 기본 역량이 팀원들에 비해서는 낮지만 제가 입사한 후 처음 시도한 것이 '로그 데이터 수집'인데요. 처음부터 끝까지 독립 시스템을 맡고 있다는 점이 굉장히 뿌듯합니다. 저를 그만큼 믿어주시기에 가능한 일이라고 생각합니다. 그렇다 보니 주인의식을 가지게 되고요. 앞으로 조금 더 만족도를 높이고자 한다면, 팀원들과 프로젝트를 도 함께 진행해보고 싶습니다."Q. 스푼 라디오가 큐의 첫 직장인 가요?"네, 정사원으로는 첫 직장이지만 그 전에는 인턴을 잠시 했었어요. 이건 제가 한국에서 겪은 좋지 않은 기억이지만, 인턴 생활 때, 타 스타트업에서 3개월 정도를 일을 했었는데, 임금 체불 문제가 있었어요. 당연한 부분이자 저의 권리가 지켜지지 않는 것을 보고, 다시 캐나다에 가고 싶단 생각을 했었어요. 그때 자존감도 많이 낮아지고 참 암울했던 시기였어요."Q. 한국 회사에서 느끼는 문화 차이가 있나요?"사실 제가 생각했던 것보다 워라벨이 잘 지켜지고 있어서 그 부분은 의외라고 생각이 들었어요.다만, 사람들과 함께 편하게 이야기를 하는 과정에서 문화적 차이를 느끼곤 해요. 예를 들면 Gender 부분 이라던지 등등. 의식이 조금 다르다고 느낄 때가 있어요. 하지만 한국 문화라던지, 의식의 차이를 저도 받아들이고 많이 노력하고 있어요. 누구나 의견과 관점은 다를 수 있으니까요. 잘 못되었다기 보단, 다른 사람들이구나 하고 받아들이려고 합니다."Q. 회사에서 가깝게 지내는 동료는 누구인가요?"업무를 가장 많이 함께 해서 가까운 분은 찰스, 개인적으로 제일 친하다고 느끼는 분은 샘입니다. 왜 친하다고 느끼는지는 모르겠지만 저도 모르게 자꾸 관심이 가요. 빨리 더 친해지고 싶은 생각도 들고, 그저 좋은 분이라고 느껴서입니다." (하지만 그분의 마음은 저도 몰라요.. 저만 친하다고 느낄 수도?)커피를 좋아하는 Kyu 당신의 사생활이 궁금합니다Q. 언제 가장 캐나다가 그립다거나 가고 싶어요?"일단, 미세먼지 많은 날이요.  그리고, 가끔씩 이런 마음이 들 때가 있어요. 한국에서는 쳇바퀴도는 매일 똑같은 삶을 사는 것 같다는 느낌(?) 한국에서는 아무것도 하지 않아도, 뭔가 늘 바쁜 그런 느낌이 들어요. 안정감이 없다고 해야 할까요? 한국은 소비를 통해서 스트레스를 해소하는 나라인 거 같아요. 주로 뭘 사 먹거나, 소유하거나. 근데 캐나다에서 랑 미국에선 다른 방식으로 스트레스를 풀 수 있었거든요. 공감하시려는지 모르겠어요. 저는 그렇답니다. 한국에 살다 보니 이제는 사실 오히려 이제는 외국에 나가 산다는 게 더 큰 도전이 된 느낌이기도 하고요."Q. 가장 좋아하는 캐나다 음식은?"캐나다 초밥요! 캘리포니아 롤이 캐나다 밴쿠버에서 만들어졌단 사실 알고 계시나요? 저 그거 정말 좋아합니다.."Q. 스스로를 어느 나라 사람이라고 생각하나요?"저는 국적은 캐나다이지만, 저의 정체성은 한국에서 시작되었고, 한 번도 그걸 잊은 적이 없어요. 캐나다에서도 한국 문화에 대한 관심을 늘 가지고 있었거든요. 예능이라던지, 시트콤 다 따라서 봤었으니까요. (원래 외국에 살면 더 한국 프로그램 많이 보게 된다는..) 아무쪼록, 저는 제가 한국인임을 잊어 본 적이 없어요. 비록 국적은 캐나다인이지만요. 그리고 저는 최대한 한국의 가십거리를 말하지 않아요. 왜냐면, 저는 이곳에 오래 살지 않았고 제가 기여할 수 있는 부분이 굉장히 제한적이거든요. 제가 국방의 의무를 했다거나, 투표권이 있으면 모를까 제가 감히 함부로 한국에 대해서 말하고 싶지 않아요. 무엇보다 저는 제 스스로가 어느 국가의 사람인 지보단 '나'라는 스스로에 집중하는 편이에요."(앞으로 외국인이라고 부르지 않을게요 큐..)Q. 다른 이루고 싶은 꿈이 있다면?"다음 생에 저는 래퍼가 되고 싶어요. 정말로 진지하게, 힙합과 랩이라는 문화를 존중하고 좋아합니다. 그저 취미로 시작하고 싶은 게 아니라,  정말 다시 태어나면 온전히 랩에 집중해서 좋은 래퍼가 되고 싶어요."Q. 어떤 사람과 함께 일하고 싶나요?개발자로서 이루고 싶은 비전이 확실한 사람이요. 무엇보다 소통하는 데 있어서 나이를 떠나, 마음이 열려있는 사람과 함께 일하고 싶습니다. 서로를 존중할 수 있는 그런 사람이요.탁구를 좋아하는 KyuQ. 마지막으로 하고 싶은 말이 있다면?"주변 친구들이 스푼에서 일을 시작하기 전과 후가 많이 바뀌었다고 말하는데, 저는 제 스스로에게 정말 많은 변화가 생겼다고 생각해요. 조금 더 진지하고 진중한 사람이 된 것 같고 이 긍정의 변화가 앞으로도 계속되길 바랍니다. 아! 그리고 회사에 제공되는 샐러드가 매일 아침마다 오면 좋겠어요. 저 그럼 정말 회사 지금보다 더 즐겁게 다닐 수 있습니다"P.S: 매번 다른 사람들의 인터뷰를 하고 계신 Sunny를 제가 직접 인터뷰해보고 싶어요.서비스 플랫폼팀 팀원들이 Kyu를 한마디로 표현한다면?Charles 曰:  '대장' - 대시보드 장인Sam 曰:  '거머리' - 자꾸 달라붙어서..Mark 曰: '감초 같은 사람' - 약방의 감초처럼 저희 팀 업무 전반에 없어선 안될 사람(큐가 이렇게 하라고 시켰어요) 
조회수 1674

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

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

무엇을 해야할지 모를 때?

근무시간에 아무 일도 못할 때가 종종 있습니다. 아무 일이 없어서가 아닙니다. 오히려 Doing 카드덱에는 해야할 카드가 넘쳐납니다. 재밌는 사실은 항상 할 일이 명백하게 있는데도 무기력한 상태가 더욱 잘 발생합니다. 덱에있는 카드들이 눈에 잘 들어오지 않습니다. 아무것도 하기 싫습니다. 그래서 의미 없는 클릭질로 이 일 저 일 기웃기웃 거리기만 합니다. 그렇게 아까운 시간만 흘러 보낼 때가 있습니다.문제의 원인곰곰이 생각해보면 카드가 너무 많아서 그런거 같습니다. 물고기가 떼 지어 다니걸로 비유를 들어볼 수 있을 것 같아요. 거대한 한 마리의 물고기로 보이도록하는 착시효과 말이죠. 카드들을 각개격파 해야하는 입장에선 무척이나 성가십니다. 괜히 정신에너지 소모가 커져 골치가 아플 때가 많습니다.예를 들어, 이런 선택장애 순간에 빠진달까요... 제품 번호 중복으로 뜨는 문제 디자이너 분들께 노티할까? 아니면, 결제사에서 특정 카드 승인거절 나는 문제부터 해결할까? 혹은 개발자분들 지금 자리에 있으니 우리가 지금까지 쓴 오픈소스 명시하는거 요청드릴까? 아! 아니다. 오전에 이용약관 쓰던거 지금 마저 쓸까?스타트업이 다 그렇겠지만 정말 가끔씩 한 숨이 나올 정도로 할 일이 쏟아져 나오는 순간이 있습니다.해결책다행히 요즘 무엇을 해야할지 모를 것 같은 조짐이 보이면 다음과 같은 행동으로 무기력한 상태를 탈출할 때가 많습니다.1. 가장 중요한 가장 작은 일을 파헤칩니다.당장 무슨 일에 착수하는 게 아닙니다. 무턱대고 달려들면 오히려 튕겨져 나오기 일 쑤입니다. 대신에 카드를 배회하면서 스스로에게 여기있는 카드 중에 가장 시급하고 중요도가 높은 일이 뭔지 찾아봅니다. “오늘 일 하나도 안해도 돼!” 같은 가벼운 마음가짐으로 무심하게 쭉 훑어 보면 은근 잘 보입니다. 꽤나 객관적인 시각이 생겨 중요한 일이 노골적으로 보일 때도 있습니다. 카드가 하나도 없지 않는 이상 가장 중요한 일을 찾을 수 밖에 없죠. 근데, 가장 중요한 일이 꾀나 커보이면 과감히 sub-task로 쪼개버리는게 좋습니다. 반으로 나누는 것도 아니도. 큰 덩어리 중 당장 할 수 있는 일만 그것도 눈꼽만큼 작은 수준으로 떼어내는거죠. 내 품에 폭 들어올 수 있게 만들어 버립니다. 그렇게 가장 작은 물고기 한 마리만 지긋이 바라봅니다.2. 최면을 겁니다.가장 작은 일을 찾았다 하더라도 몸에 베인 하기 싫은 타성은 남아있습니다. 이미 무기력감이 저를 휘감고 있으니까요. 탈출하기 쉽지 않습니다. 이땐, 이 일을 안했을 때 일어나는 골치 아픈 미래 상황을 상상합니다. 식은땀이 주륵 흐를 정도로 과대 망상일수록 좋습니다. 이 일을 심각한 수준으로 받아들입니다. 거짓말 조금 더 보태서 당장 이거 해결 안하면 회사가 망할 수도 있다 정도로? 스스로 발등에 불을 떨어뜨리는 최면에 풍덩 빠집니다.3. 용기를 낸다.다른 중요한 일들도 많습니다. 지금 선택한 이 일이 가장 시급한 일이라서 못하는 거지 다른 것들도 이것 못지 않게 급합니다. 그래서 선뜻 선택한 일에 다이빙하기 쉽지 않습니다. 안하기로한 다른 일들이 거슬려서요. 그러나 하나만 하기로 마음 먹은 상황에서는 저는 과감히 다른일들을 포기합니다. 안하기로 했다면 Doing 카드에서 To do 카드로 과감히 옮겨버립니다. 단순히 이 카드들을 당장 눈 앞에서 치워버리기만 해도 효과가 아주 큽니다. 속이 후련해 진달까요? 만약 데드라인이 오늘인 카드라면 용기를 내어 동료들에게 도움을 청합니다. 또는 이 결과물들을 기다리는 동료들에게 못할 것 같다고 솔직히 고백합니다. 가급적 동료들이 기다리지 않게 말이죠. 이렇게 과감히 눈 앞의 일들을 치워버려요. 그러면 일이 손에 잡히기 시작합니다.#스위쳐 #Switcher #문제해결 #인사이트 #꿀팁 #조언
조회수 1963

[피플] H자동차를 퇴사하고 더부스에 온 그녀, 심층 인터뷰 제 2탄!

[ 더부스팀 인터뷰 특별기획 2부 ]대기업 퇴사를 고민하고 있나요?꿀같은 설날 연휴의 끝.사무실 책상 앞에 다시 앉았더니답답하고 숨이 턱, 막혀오면서,회사 일은 손에 잡히지도 않고당장 집으로 뛰어가따뜻하고 포근한이불속으로 들어가고싶은 마음만 한 가득.연휴 금단 증상!마우스를 잡은 손이 덜덜 떨리지는 않나요?이렇게 일하기가 싫은데,나는 지금 행복한게 맞을까요?여기 비슷한 고민을 하다H자동차를 퇴사하고더부스 브루잉에 합류한,더부스 영업전략의SJ님을 소개합니다!"마음 가는 길 .죽 곧은길!"SJ님연세대학교 기계공학과 졸업前  현대자동차 재직現  더부스 영업전략/마케팅Q1. 자기소개를 한다면?저는 호기심이 굉장히 많은 편이에요. 얼어붙은 연못 위에 올라가 얼음이 잘 얼었나 직접 확인해보거나, 맥주집에서 '작은 잔과 큰 잔의 맥주 양 차이'를 직접 재보는 등 궁금한게 있으면 꼭 확인해야 직성이 풀리는 성격이죠. 엉뚱한 장난을 치는것도 굉장히 좋아하는데, 간섭받거나 구속받는건 굉장히 좋아하지 않아요. 어떻게 보면 멀쩡히 대학 나와 대기업에 입사한게 이상할정도로 사실 제도권에 그렇게 어울리는 성격은 아니죠 (웃음). 고등학교 때도 수업시간 내내 제가 읽고 싶은 책만 잔뜩 읽었거든요. 나중에는 선생님들도 쟤는 원래 그런다면서 포기했다니까요.Q2. 맥주는 얼마나 좋아하세요?많이 좋아해요!  대학생 시절 MT를 가면 냉장고에 소주만 한가득이었어요. 그렇지만 저에게 소주, 카스, 하이트 등의 술은 너무 맛없게만 느껴졌어요. 정말 이걸 정말 좋아서 먹나? 라는 생각이 들어서 별로 술을 즐기지 않았죠. 그런데 어느날 본격적으로 크래프트 비어를 접하고는.... 네, 집에 맥주 병을 모으고 있습니다.SJ님의 강아지 '진도리'Q3. 더부스에 조인하기 전에는 대학원에 다니셨다고 들었어요! 맞나요?네, 저는 대학 졸업 후 H자동차를 약 2년간 다니다가, 회사 일이 잘 안맞고 재미가 없어서, 그리고 더 공부해보고 싶은 분야가 생겨서 대학원에 진학했었어요. 회사를 처음 벗어나서 오랜만에 학교에 다시 갔을 때는, 세상에 아름다워 보였어요~ 하하하. 수업시간에 자꾸 혼자 웃음이 나올 지경이더라고요. 사람들이 미친여자라고 생각할까봐 실실 터져나오는 웃음을 꾹 참았어요~Q4. 그럼 어떻게 더부스에 조인하게 되셨나요?제가 맥주를 좋아하다보니 언젠가는 자신의 펍을 갖고 싶다는 생각을 갖고 있었어요. 그러다 어느날 경리단길의 '비어포긱스 테이스팅 룸(더부스에서 운영)'을 들렸는데 맥주가 너무 신선하고 맛있는거에요. 알고보니 유럽이나 미국에서 생산되는 맥주를 '차가운 상태 그대로' 서울까지 갖고 온다더라고요. 그래서 저도 꼭 비어포긱스 테이스팅 룸 같은 펍을 내고 싶어서 사장님에게 건너건너 연락을 했었는데, 나중에라도 따로 점포를 늘릴 생각이 없다고 하시더라고요. 속상했었는데... 나중에 더부스에서 직원을 뽑는다는 소식에 함께 하고 싶어 지원했고, 더부스팀에 합류하게 되었죠!(참고 : 현재 비어포긱스 테이스팅 룸은 잠시 운영이 중단된 상태. 미켈러바로 가면 됩니다!)Q5. 대학원 공부도 재미 없었던 것은 아니죠?하하, 그런건 아니에요. 대학원에서 신호처리/머신러닝 쪽을 공부했는데 흥미로웠어요. 예전부터 관심있었던 주제였거든요. 졸업 요건을 다 채운 후에, 더부스에 합류하게 되었죠. 공식적으로는 졸업이 아직 한 학기가 남았어요. 어떻게 보면 서로 전혀 무관한 커리어를 쌓아온 것 같지만, 대학원은 '나에게 더 잘맞는 일을 찾아나가는' 연장선상에 있었다고 생각해요. 대학원에서 배운 데이터를 처리하는 기술은 더부스의 영업전략을 세울 때도 도움이 되고 있습니다.Q6. 그렇다면 대학 졸업 후 대기업에 입사한 이유는 뭔가요?대부분의 친구들이 대학원에 진학 했었는데, 저는 학교를 벗어나 아직 안 해본걸 해보고 싶은 마음이 강했어요.  외국 연구소에서 인턴으로 일해보기도 했고, 대학생 시절 수학과외로 꽤 쏠쏠히 벌었지만, 학교 밖의 기업에서 일해본 적은 없었기 때문에 더 궁금했죠.Q7. H자동차에서는 어떤 것들이 맞지 않아 퇴사를 하신건가요?간단히 말하면 '재미가 없었'죠. 하지만 마냥 가볍기만 한 고민은 아니었어요! 스스로 성취감을 느낄 수 없는 일을 하는건 괴롭다는걸 입사 후에야 깨달았거든요. 대학 시절에는 전공 공부가 힘들지만 즐거워서, 그런 기분을 느껴본적이 없었어요. 회사안에서 사람들과 어울리는건 대부분 즐거웠지만요. 제가 한창 퇴사에 관해 고민하고 있을 때에도 회사 사람들에게 많은 조언과 위로를 받아서 항상 감사했죠. 회사를 떠나 저에게 더 잘맞는 일을 찾고 싶다는 마음이 강했어요. 그리고 저에게는 '당장 잘 먹고 잘 사는 문제' 보다 '즐겁고 행복하게 사는 것'이 더 중요한 가치라는걸 알게됬죠. 사람마다 중요하게 여기는 가치는 다른 법이잖아요? 그래서 제가 더 즐겁게 할 수 있는 일, 나에게 더 잘맞는 일, 성취감을 느낄 수 있는 일을 찾아 떠나고 싶었죠. 저는 용기를 낼 수 있어서 운이 좋았다고 생각해요. 아예 H자동차에 입사한 것을 후회하지는 않아요. 대기업에서만 경험할 수 있는 것들도 많이 배웠거든요.Q8. 본인의 일을 즐겁다고 느끼면서 회사를 다니는 회사원들이 얼마나 될까요?일반적인 대기업을 다니는 회사원들 중에 회사가 재미있어서 다니는 사람은 별로 없을거에요. 회사원의 90%이상은 '먹고 살아야 하니까' 등의 현실적인 이유로 회사를 다니겠죠. 실제로 제 주변에도 퇴사 고민을 하는 사람들이 많았어요. 다만 그 중 대대수는 실행에 옮기지 않고 하루 하루를 다시 버텨낼 뿐이라고 생각해요. 퇴사 한 이후에 퇴사 관련한 고민을 상담해달라는 연락을 많이 받았거든요. 모든 일이 항상 즐거울 수는 없지만, 일에서 느껴지는 괴로움이 즐거움보다 크다면, 자신이 원하는것이 무엇인지 뒤돌아보는 시간을 가지는게 현명한것 같아요. 스스로 즐거워서 몰입 할 수 있는 일을 찾는게 쉬운일은 아니거든요. 고민의 시간이 필요하다고 생각해요.Q9. 회사에 퇴사 이야기를 꺼내는건 쉬운 일이었나요?아니요. 저는 말 꺼내기가 정말 어려웠어요. 팀장님한테 좀 미안하더라고요. 그래서 친한 팀선배의 도움을 받았죠. 선배가 상사와 자리를 마련해 퇴사 이야기를 위한 멍석을 깔아줬어요. 하하. 인사고과 마감날이라 선배에게도 win-win이었죠(농담). 퇴사하겠다고 팀장님에게 확실히 이야기하고, 퇴사일을 정한 다음에는 퇴사일이 다가오는게 너무 설레서 D-day까지 설정해놨었던 기억이 나네요. 하하. 그 과정에서 다른 분은 '나도 회사가 재미없어서 팀을 옮겼는데, 큰 회사니까 회사 안에서 정답을 찾아보려고 팀을 옮긴것이었다.' 라는 조언을 해주시기도 했죠. 지난번 BK님의 이야기처럼 '동일한 문제(일이 재미없다는)' 에 관한 해결 방법이라도 각자 다른 방법의 해결책을 찾을 수 있는 것이니까요. 저에게는 그 솔루션이 퇴사였던 거죠.더부스 강남 1호점Q10. 지금까지의 결정에 후회는 없나요?네. 후회는 하나도 없어요. 아까 이야기 했듯이 회사에서도 드라마처럼 사표를 던지고 나올만한 결정적인 이벤트는 없었고, 하루 하루의 생각들이 쌓여져 퇴사 결정을 내린거니까요. 나름대로 매우 신중했어요. 고민 끝에 찬란한 20대, 30대에 하고 싶은 일들을 놔두고 하고 싶지 않은 일을 하며 시간을 채워간다면, 내가 내 젊음을 너무 헐값에 팔고 있는것이라고 결정을 내리게 된거에요. 그래서 앞으로는 자아성찰(?)을 통해 나에게 잘 맞는 일들을 찾아가려는 노력을 계속 해야겠다고 생각했죠.  물론 H자동차의 급여 수준이나 복지 혜택은 다른 회사들에 비해 매우 뛰어난 수준이었고, 퇴사 하는게 많이 아깝기도 했지요. 그리운 월급... 하하하. 그래도 "내가 하고 싶은 일"을 하는것보다 좋은건 없는 것 같아요. 이렇게 계속 시간이 지나 10년 정도의 시간이 흐른다면 안정감에 회사에 영영 정착할 것 같았어요. 그래서 저는 더더욱 한살이라도 어릴 때 빨리 더 나에게 잘맞는 일을 찾아야지라고 결심했죠. 그래서 저는 회사 이후의 대학원도 즐거웠고, 더부스는 더욱 즐겁네요. 저는 꽤 행복한 삶을 살고 있는것 같아요.SJ님의 동생이 그린 '진도리' 초상화Q11. 그럼 더부스에서 일하는게 그렇게 재밌나요?네. 아직 일을 시작한지 한달 밖에 안됐지만요. 하하.  더부스 캠퍼스에서는 아침, 낮, 저녁, 밤 언제든 맥주를 마셔도 됩니다(중요). 그리고 더부스 캠퍼스에서는 더부스의 마스코트인 귀여운 '하'와 '휴'가 있어요! 자유롭고, 행복한 곳이죠. 아이디어를 내놓는 과정들, 그걸 실현시키는 일들이 재밌어요. 반년후에는 이야기가 달라질지도 모르니, 인터뷰 또 할까요? (농담). 더부스에서는 대기업과 달리 "보고"를 위한 업무도 없고, 모두 젊고 창의적이에요. 팀원들도 각기 다른 배경을 갖고 있어 다채롭고요. 매력적일 수 밖에 없는 팀이죠. 그리고 대기업에서는 직원 한명 한명이 회사의 운명을 좌우하지는 못해요. 정해진 시스템 안에서 한 사람의 몫은 제한적이죠. 기업 입장에서는 그게 가장 합리적이기에, 누구나 대체 할 수 있는 일을 하게 되잖아요? 그러나 한 사람사람이 중요하고, 회사와 함께 성장해야 하는 스타트업에서는 개개인이 회사에 엄청 중요해요. 회사와 함께 성장을 해야되는데, 이런 즐거움은 대기업에서 누리기 힘들죠.더부스 멤버십카드와 홉(hop)Q12. 그래도 '스타트업'에서 일하면서 느끼게 되는 단점도 있을 텐데요!?스타트업은 '현재 기업의 가치'가 중요한것이 아니라 '기업의 미래 가치'가 중요한것이기에, 당연히 대기업에 비해 급여가 적어요.  H자동차에서 누렸던 통근버스, 의료비지원 등의 각종 복지 혜택도 다른 회사에 비하면 월등하죠. 당연한 이야기지만, 현실적으로 중요한 문제이기도 하잖아요? 그래서..... 더부스는 열심히 성장해야 하는데, 많이 도와주세요. 하하하. 더부스 브루잉의 판교 브루어리에서 새로 출시한 맥주들은 정말 맛있어서, 보다 더 많은 사람들이 이 즐거움을 같이 누렸으면 좋겠네요! 본격 음주 권장 인터뷰인가요?! 하하. 인터뷰 끝나고 저도 한잔 해야겠어요. (캠퍼스 한켠에서 판교에서 생산된 생맥주를 따라 마실 수 있어요. 행복하네요.)더부스의 공식 마스코트! 휴와 하Q13. 퇴사를 고민하고 계시는 분들께 조언을 한다면요?한 번 쯤, 마음대로 가는대로 살아도 괜찮아요. 왜 우리나라의 교육은 어렸을 때부터 공부 열심히 하라는 소리에 순응하고 꾹꾹 참는법을 가르치지 '하고 싶어 하는것을 찾는 법'은 잘 가르쳐주지 않잖아요? 그래서, 대부분은 내가 정말 좋아하는게 뭔지 진지하게 고민 할 수 있는 능력을 갖추지 못한 채로 어른이 되는거죠. 내가 정말 원하는것이 무엇인지, 그것부터 먼저 고민을 해보세요. 결국 고민의 끝에서 내린 결론이 '회사를 계속 다니는 것, 회사안에서 즐거움을 찾는것' 이라면 그것대로 '내가 선택한 일' 이니 좋은것 아닐까요? 당연히 어떤 사람은 대기업의 네임벨류, 안정적인 복지에서 행복을 찾을 수도 있잖아요. 반면 저 처럼 고민 끝에 내린 결론이 '회사를 떠나 다른 일을 하는것' 이라면 두려워하지 말고 떠나세요. 한번 뿐인 인생, 결정을 내렸다면 한살이라도 젊을 때 떠나야죠. 마음 가는 길, 죽 곧은 길! 드래곤라자의 명대사잖아요?!Q14. 더부스가 퇴사 상담 전문 기업으로 나서도 되겠네요! 하하.고민하고 계시다면, 언제든지 비밀 덧글로... (소근소근).Q15. 더부스의 다른 팀원들도 모두 대기업 출신인가요?아닙니다. 더부스 팀원 인터뷰 3탄 부터는 보다 더 다채로운 배경의 분들을 만날 수 있습니다. 기대해주세요.Q16. 마지막으로, 맥주 하나만 추천해주세요!미켈러의 스폰탄 시리즈요. 그런데 이 맥주는 사실 엄청 호불호가 갈리는 맥주이기도 해요. 좋아하는 사람은 매우 좋아하지만, 싫어하는 사람은 매우 싫어하거든요. 하하. 너무 재미있지 않나요? 저는 스폰탄 시리즈의 시큼하고 큼큼한 맛을 굉장히 좋아해요. 빠져들면 자꾸 이것만 찾게되죠.  크랜베리, 복숭아, 링고베리 등등 여러가지의 서로 다른 버젼이 있어요. 과일이 들어갔다고 해서 달콤하다고 생각하면 완전 틀린 생각이에요. 자연발효로 만들어진, 미켈러의 실험정신이 돋보이는 맥주죠. 궁금하면 도전해보세요.Make this Happen!새로움을 만들어나가는크래프트 비어 스타트업!#더부스브루잉컴퍼니 #팀원소개 #팀원자랑 #팀원인터뷰 #기업문화 #조직문화 #사내문화
조회수 2273

JIRA하고 자빠졌네!?

Overview“JIRA하고, 자빠졌네!” 세종대왕은 확실히 개발자의 두뇌를 가지고 있었던 게 분명합니다. 먼 시대를 지나 오늘날 QA를 하는 저에게 응원을 해주시니 말입니다. 하지만 그는 틀렸습니다. 걱정과는 다르게 다행히 자빠지진 않았거든요. 지라(JIRA) 덕분입니다.갑자기 지라 이야기가 나와 당황하셨죠? 축하해주세요. 드디어 브랜디도 지라를 사용하게 되었답니다. (짝짝짝!) 지라 도입은 처음이라 세팅부터 쉽지 않았는데요. 이번 글은 눈물겨웠던 지라 세팅 과정과 브랜디의 이슈관리를 소개하겠습니다. 스크럼을 쓰면 좋은 점스크럼(Scrum)은 요구 사항 분석부터 하는 칸반(Kanban)보다 효율적입니다. 안드로이드와 iOS로도 나눠져 있고 업무를 짧게 반복하기 때문이죠. 스크럼에 적합한 워크플로우(Workflow)를 볼까요? 이것은 실제로 브랜디 R&D본부에서 사용하고 있기도 합니다. 스크럼에 적합한 워크플로우IN PROGRESS: 이슈나 개발 요건을 티켓으로 만들면 IN PROGRESS 상태가 됩니다. RESOLVED: 이슈나 개발 요건이 완료되면 RESOLVED 상태로 변경합니다.QA: QA가 필요한 개발 요건은 QA상태로 변경합니다.PASS: 이슈 또는 개발 요건이 수정되었거나 문제가 없다면 PASS 상태로 변경합니다.FAIL: 이슈 또는 개발 요건이 제대로 수정되지 않았거나 다른 이슈가 발생하면 FAIL 상태로 변경합니다.QA불필요: QA가 필요하지 않은 개발 요건은 QA불필요 상태로 변경합니다.DONE: 이슈를 해결했거나 개발을 완료하면 DONE 상태로 변경합니다CLOSE: 담당 팀장님이 이슈 확인 후 CLOSE 처리합니다. 예를 들어보겠습니다. 킥오프 서비스 회의를 하고, SB를 제작, 리뷰합니다. 이후에 디자인팀과 개발팀 일정을 공유하고 스크럼 마스터는 스프린트 주기를 책정하죠. 스프린트가 시작되면 개발자는 스토리 티켓을 작성하는데요. 개발이 끝나면 QA가 필요한 티켓은 테스트를 진행하고, QA가 종료되면 스프린트도 종료됩니다.Epic 티켓위의 이미지는 Epic 티켓입니다. Android, iOS, 이슈 등 모든 티켓은 Epic 안에서 관리합니다. 한 곳에서 한꺼번에 관리하기 때문에 히스토리 관리가 편하고, 진행 상황도 확인할 수 있습니다.티켓 생성개발팀의 티켓 생성입니다. 개발자는 SB를 보고 개발 티켓을 작성합니다. 개발 티켓 작성 후에 개발이 진행되며 QA 판단 여부를 체크해 QA 상태로 변경합니다. 변경된 티켓에 관한 QA가 진행되며 문제가 없으면 해당 티켓은 종료됩니다.이슈 생성다음은 이슈 생성입니다. 파악한 SB는 디자인 시안과 비교하며 개발이 된 Android, iOS 테스트 파일을 QA합니다. QA를 진행할 때 발생한 이슈는 지라 티켓으로 등록하여 이슈를 관리합니다. 모든 이슈 티켓 종료되면 해당 차수의 QA는 끝나고 마침내 상용에 배포합니다. 배포가 완료되면 필수 및 크리티컬 리그레이션 테스트가 진행됩니다. Conclusion실수는 항상 모든 것이 끝난 이후에 보이기 마련입니다. 수십 번 QA를 해도 보이지 않던 문제들이 상용에 올라간 이후부터 보이기 시작하죠. 스크럼은 이런 실수들을 가장 최소화할 수 있는 툴이 아닐까 생각합니다. 물론 아무리 좋은 툴을 써도 팀원들과 함께 뭉치는 것보다 중요한 것은 없겠죠. 다음 글은 자동화를 주제로 찾아뵙겠습니다. JIRA하고 자빠지지 않는 개발자가 됩시다!글김치영 대리 | R&D PM팀[email protected]브랜디, 오직 예쁜 옷만#브랜디 #개발자 #개발팀 #인사이트 #경험공유 #JIRA
조회수 870

누구나 풀코스 마라톤 뛸 수 있는 방법

달리기는 인기 스포츠가 아니다. 남자들끼리는 첫 만남에 으레 무슨 운동을 좋아하는지 묻곤한다. 축구나 농구, 야구는 단골손님 격인 대답이고, 직장인이 되서는 간혹 골프나 테니스를 좋아한다는 대답도 듣는다. 하지만 아직 달리기를 좋아한다는 대답을 들은 기억은 없다. 나 또한 달리기를 처음부터 좋아했던 것은 아니다. 어린 시절 나도 조던의 광팬이었고 농구도 사랑했다어린시절 나는 스포츠 경기 보는 것을 즐겨했다. 인기종목은 말할 것도 없고, 핸드볼이나 배드민턴, 탁구와 같은 종목도 밤을 새며 세계선수권 대회를 챙겨보는 스포츠 마니아였다. 당연히 올림픽이나 아시안게임과 같은 스포츠대회도 사랑했다. 하지만 수많은 스포츠 경기 중 마라톤, 그 중에서도 남자마라톤만은 영 호감이 가지 않았다. 2시간 넘게 똑같은 자세로 달리는 모습을 보고있는 것은 여간 지루한 일이 아니었다. 게다가 올림픽은 항상 남자마라톤을 끝으로 폐막을 하니, 나에게 남자마라톤은 대회의 끝을 알리는 우울한 소식 이상도 이하도 아니었다. 가끔은 올림픽을 보면서 왜 많은 사람들이 좋아하지 않는 마라톤이 행사의 대미를 장식해야하는지 의문이 들었다. 축구나 농구로 바꾸면 더 많은 사람들이 즐기며 축제를 마무리할 수 있지 않을까? 지금 생각해보면 그 당시 달리기는 나에게 확실한 비호감 종목이었다.이대로 2시간을 뛰는데 왜 봐야할까그런 내가 달리기에 처음 재미를 붙이기 시작한 것은 군대에서였다. 남들이 다 축구나 족구를 열심히 할 때 달리기에 재미를 붙인건 달리기에서, 정확히 말하면 '오래 달리기'에서 나도 모르는 재능을 발견했기 때문이다. 사실 학창시절 밤새 각종 스포츠 경기를 챙겨볼 정도면 직접 몸을 쓰며 운동을 하는 것도 좋아할 만하다. 하지만 나에게 스포츠가 '그저 보는 것'에 머물렀던 이유는 나의 몹쓸 운동신경 덕분이다. 친구들과 스포츠 이야기를 하면 정확한 선수 이름과 성적까지 대며 아는체를 했던 나는 경기장에만 들어서면 '구멍' 신세를 벗어나기 어려웠다. 축구를 하면 내가 맡는 지역에서 항상 골 찬스가 생겼고, 농구를 하면 나의 상대가 늘 득점왕이 됐다. 그러다보니 직접 뛰는 스포츠와 자연스레 거리가 멀어졌다. 학창시절 대부분 스포츠가 반대항이나 팀대항 성격을 띄었던 것도 운동과 작별하는 데에 한몫했다. 운동 자체를 즐기면서 할 수 있는 환경은 없었고, 잘하는 사람과 못하는 사람의 구분만 있을 뿐이었다. 군대에서는 운동을 잘하고 못하고를 떠나서 그냥 해야했다. 아침마다 달리기를 하는건 예외없는 의무였다. 아침 달리기에서는 대개 3-5km 를 뛰었는데, 이 정도의 거리는 사실 대단한 운동신경이 필요하지 않다. 그냥 꾀부리지 않고 열심히 뛰기만 하면 누구나 완주할 수 있다. 나는 몸무게가 과하게 나가는 것도 아니고 흡연을 했던 것도 아니라 달리기를 하면 곧잘 선두 그룹에 속해서 골인을 하곤했다. 그렇게 처음으로 '못하지 않는 운동' 을 발견했다. 늘 한두가지 정도 잘하는 운동을 갖고 싶었는데, 처음으로 적성에 맞는 운동을 찾게된 것도 반가웠다. 자연히 달리기를 더 잘하고 싶어졌다.군대에서의 시간을 의미있게 보내는 것은 많은 남자들의 화두다. 나 또한 똑같은 2년이라도 이왕이면 시간을 '보내는 것'이 아니라 '의미있게 쓰고' 싶었다. 영어공부를 하는 사람도 있고 책을 읽는 친구도 있었다. 그 때 나는 뭐에 홀렸는지 중앙일보 마라톤 대회를 신청했다. 마라톤을 하는 사람들에게는 두개의 큰 국내 메이저 대회가 있는데, 3월의 동아일보 대회와 10-11월의 중앙일보 대회다. 나는 제대를 앞둬 시간이 많을 것 같은 중앙일보 대회를 택했다. 마라톤 대회를 신청하고나니, 그제서야 달리기를 좋아하는 사람들이 꽤 많은 사실이 보이기 시작했다. 마라톤 대회는 전국에서 매주 열리는 행사였고, 심지어는 50km 나 100km 를 완주해야하는 울트라 마라톤 대회도 있었다. 국내 메이저 대회는 참가자수만 2-3만명을 넘기는 대규모 행사라는 사실도 이 때 처음 알았다. 역시 경험하지 않은 무언가를 지레 짐작하는 건 꽤나 위험한 일이다.인기 마라톤 대회는 2만명 이상이 참가하는 대규모 행사다마라톤 대회에 접수를 하고 기분 좋게 새옷을 사들고 달리기를 나갔다. 평소 5km 를 가뿐하게 뛰기에 오늘은 한번 되는데까지 달려보자는 심산으로 달리기를 시작했다. 하지만 막상 대회를 나간다고 생각하니 근육도 경직되고 생각만큼 달리기가 쉽지 않았다. 10km 를 넘어서면서 부터는 종아리랑 허벅지 근육이 금방이라도 끊어질 것처럼 통증을 호소해왔다. 12km 나 뛰었을까, 나는 마라톤의 높은 벽을 처음으로 실감하고 공부와 유경험자의 조언을 바탕으로 훈련계획을 다시 짜기 시작했다.마라톤 완주를 위해서 가장 중요한 것은 대회 참가 2주전까지 40km 이상을 뛰어 보는 것이다. 사실 풀코스 대회에 참가한다고 하는 사람중에 호흡이 차는 것을 걱정하는 사람은 많지 않다. 달리기를 완주할 수 있고 없고는 다리 근육의 지구력에서 판가름이 난다. 이 지구력을 길러주는 가장 좋은 방법은 매번 달리는 거리를 계속 높여서 40km 이상까지 한번에 뛸 수 있는 몸 상태를 만드는 것이다. 달리기를 해보면 자신의 기록대비 한번에 10km 이상 거리를 늘리는 것은 거의 불가능하다. 10km 를 1시간에 뛰었으니 20km 면 2시간이면 뛸 수 있겠다고 생각한다면 정말 큰 착각이다. 12km 쯤 지나면 다리에 흡사 쇠라도 달린 것 처럼 허벅지와 종아리가 무거워진다. 15km 정도까지 버텼다면 다리에서 이 이상은 도저히 버틸 수가 없다는 강력한 신호를 보내온다. 나는 매주 5km 씩 달리는 거리를 늘리는 연습을 했다. 대회 2주전까지 40km 를 뛰어야 하니 역으로 계산하면 최소한 대회 2달 전부터는 제대로 연습을 해야한다. 게다가 20km 이상을 뛸 때는 회복시간도 고려를 해야하기 때문에 적어도 대회 3달 전부터 스케줄을 잡고 연습을 했다. 이런 연습 스케줄을 고려한다면, 대회 참가 2달전쯤 하프마라톤을 한번 뛰어보는 것이 좋다.마라톤 완주가 목표라면 3달 전부터는 제대로 준비해야 한다 대회 준비에 돌입했다면 꾸준한 연습외에 지켜야 할 것이 또 있다. 바로 이 기간동안 술과 담배를 끊는 것이다. 술이야 가볍게 마시는 것은 괜찮다고 하지만, 담배는 장거리 달리기에 정말 좋지 않다. 많은 애연가 마라토너들도 대회 준비에 돌입하면 무섭게 담배를 멀리한다. 경험자들의 말에 따르면, 담배 한모금이라도 호흡에 엄청난 영향을 줘서 다리를 무겁게 한다고 하니 초심자들로서는 새겨들어야 할 필요가 있다. 반면, 마라톤을 준비하는 사람들에게 추천하고 싶은 습관은 등산이다. 등산은 허벅지부터 종아리까지의 다리 힘을 길러주는 데 효과가 좋다. 다리 힘을 기르기 위해서는 가파른 산을 오르는 것도 좋지만 경사가 급하지 않은 산을 뛰어가듯 오르는 것도 좋다. 막상 풀코스를 뛰어보면 내가 계속 다리힘을 강조하는 이유를 느낄 수 있을 것이다. 나 역시 위의 방법으로 대회 3개월전부터 꾸준히 운동을 했고 습관들을 조절해왔다. 어차피 군대에 있어서 술도 먹지 못하는 최상의 환경에 있어 나로서는 대회 준비가 수월했다. 이렇게 준비를 잘 해두었다면 사실 완주는 어느정도 눈에 보이는 목표가 된다. 하지만 대회 당일의 컨디션도 완주에 영향을 미치다보니 또 한가지 준비할 것이 있다. 중앙일보나 동아일보와 같은 대회는 대회 당일 날씨가 많이 춥다. 몸이 차가운 상태로 달리기를 시작하면 근육이 쉽게 경직되기 때문에 몸을 따뜻하게 할 장갑과 큰 비닐봉지를 준비하는 것이 좋다. 큰 비닐봉지는 목이 들어갈 구멍을 뚫어서 입는 용도다. 달리기를 시작할 때는 날씨가 많이 춥지만 이내 몸에 열이 발생하면 긴팔이나 두꺼운 옷은 거추장스럽다. 이럴 때를 위해 달리다가 벗어서 버릴 수 있는 헌옷이나 비닐봉지를 미리 준비하면 매우 좋다.  세탁소 비닐봉지를 강력하게 추천한다.이렇게 갖은 준비를 하여 2006년 11월 5일 드디어 나는 이봉주 선수와 함께 잠실의 도로를 함께 달렸다. 물론 내가 15키로 지점을 통과할때 빛의 속도로 35키로를 통과하던 이봉주 선수의 모습을 잠깐 봤을뿐이다. 어쨋든 나는 생애 처음으로 풀코스를 완주했다. 개인적인 목표는 42.195km 를 말 그대로 걷지 않고 '완주' 하는 것이었다. 너무나도 힘들어서 달리는 도중에 솔직히 욕도 많이했지만, 철저한 준비 덕분에 개인적인 목표를 달성했다. 3시간 43분 28초. 첫 풀코스 치고는 꽤나 좋은 성적으로 완주할 수 있었다.함께 뛰었다는 것을 강조하고 싶은 이봉주 선수사실 달리기 전, 풀코스를 완주하고 골인하는 순간의 감정에 대해 많은 생각을 했다. 입대 당일 부모님께 절을 드릴 때만큼 강렬한 감정이 오지 않을까. 혹시 누구도 느끼지 못한 행복감을 맛보는 것은 아닐까. 이런 궁금증을 갖는 분에게 얄밉지만 나는 답을 드릴 생각이 없다. 죽어라 4시간을 뛰고 난 후에 느끼는 감정이니만큼, 한 번 연습해서 직접 그 기분을 느껴보라고 권하고 싶다.끝으로, 특별한 운동신경 없이도 성실함만 가지고 누구나 도전해 볼 수 있는 마라톤을 많은 사람들에게 추천하고 싶다. 인생에서 잊지 못할 큰 추억과 경험이 될 것이다. by 꾸준한 운동에 관심있는 30대초 남자 직장인챌린저스 - 확실한 목표달성 꾸준한 습관형성 앱www.chlngers.com
조회수 1866

파이썬의 개발 “환경”(env) 도구들

안녕하세요. 스포카 프로그래머 홍민희입니다.파이썬 패키징 생태계에서 개발 환경을 구성하기 위해 널리 쓰이는 virtualenv나 pyvenv, virtualenvwrapper 같은 각종 도구가 왜 필요한지 (또는 자신에게는 큰 도움이 안 되는지) 알려면 그 이전의 파이썬 라이브러리 배포 방식에 대한 이해가 많은 도움이 됩니다. 여기서는 필요한 몇 가지 역사적 사실과 파이썬 패키징 개념 중 현재의 생태계 이해에 필요한 것들을 위주로 정리하고, 최종적으로 각자의 필요에 따라 어떤 도구를 활용하면 될지 지침을 제안합니다.sys.path패키징이고 뭐고 아무것도 없던 90년대 말에는 라이브러리 소스 코드 파일들을 타르볼(tarball)로 압축해서 배포했습니다. 쓰는 사람은 그걸 자신의 애플리케이션 소스 트리 안에 풀어서 사용했습니다.파이썬에는 지금도 sys.path라는 인터프리터 전역적인 상태가 존재합니다. PATH 환경 변수가 실행 바이너리를 찾을 디렉터리 경로들의 목록인 것과 비슷하게, sys.path도 import foo를 하면 foo.py (또는 foo/__init__.py) 파일을 찾을 디렉터리 경로들의 목록을 담습니다. 그리고 기본 동작으로 그 목록의 맨 처음에는 현재 디렉터리(./)가 들어갑니다. 따라서 라이브러리 타르볼을 애플리케이션 소스 트리에 풀어두면 import해서 쓸 수 있습니다.하지만 자신이 작성한 애플리케이션 코드와 남이 작성한 라이브러리 코드를 같은 소스 트리에서 관리하는 것은 여러모로 불편합니다. 따라서 라이브러리는 애플리케이션 소스 트리와는 별도의 디렉터리(예: ../libs/)에 풀어서 관리하고, 애플리케이션 소스 코드 맨 위에 아래와 같이 써두는 패턴이 많았습니다.import sys sys.path.append('../libs') 또는 sys.path를 소스 코드를 건드리지 않고 조작하기 위해 PYTHONPATH 환경 변수를 활용하는 경우가 많았습니다.세기말, 파이썬 1.5를 쓰던 때의 이야기입니다.site-packages새 천 년이 밝았고 파이썬 2.0이 나왔습니다. 표준적인 라이브러리 배포 방식 및 설치 방식이 제안되었고, 표준 라이브러리에 distutils도 들어왔습니다. (지금도 setuptools는 distutils에 의존하고, pip는 setuptools에 의존합니다.) 제안된 방식은 이랬습니다.애플리케이션 코드가 아닌 라이브러리 소스 코드는 모두 /usr/local/lib/pythonX.Y/site-packages/ 디렉터리 안에 둡니다. X.Y는 파이썬 인터프리터 버전이고, 경로는 인터프리터를 빌드할 때 (./configure) 정합니다. 데비안 계열은 site-packages 대신 dist-packages라는 이름으로 바꿔서 빌드하는 등, 파이썬 인터프리터의 설치 방식에 따라 달라집니다. 어떻게 정하든 이를 site-packages 디렉터리라고 부릅니다. 파이썬 인터프리터를 빌드할 때 경로가 결정되므로, 파이썬 인터프리터 별로 각자의 site-packages 디렉터리를 갖게 됩니다. (한 시스템에서 여러 파이썬 버전을 설치했을 때 pip 역시 pip2.7, pip3.6 등과 같이 버전 별로 명령어가 생기는 것도 같은 이유입니다.)기본적으로 sys.path 목록에는 맨 앞에 현재 위치(./), 뒤쪽에는 site-packages 경로가 들어있습니다. import를 하면 현재 위치에서 찾고, 없으면 site-packages를 찾아본다는 뜻입니다.표준 라이브러리의 distutils.core.setup() 함수는 라이브러리 파일들을 시스템의 site-packages 디렉터리에 복사해주는 함수입니다. 라이브러리 타르볼 파일 맨 바깥에는 이 함수를 이용해 라이브러리를 시스템 site-packages에 설치해주는 스크립트를 setup.py라는 파일명으로 포함하는 관례가 있었습니다. pip 같은 게 없던 때에는 라이브러리 타르볼을 받아서 푼 다음 python setup.py install 명령을 실행하는 것이 일반적인 라이브러리 설치법이었습니다. 지금도 pip는 *.whl 파일이 아닌 *.tar.gz/*.zip 파일인 패키지를 설치할 때 내부적으로 python setup.py install 스크립트를 실행합니다.참고로 이때 정립된 파이썬 패키징 표준은 리눅스에서 쓰이는 dpkg나 RPM 같은 일반적인 패키징 방식을 의식하며 만들어졌습니다.1 당시는 도커는 커녕 가상화 자체가 보편적이지 않던 때로, 한 시스템에 여러 애플리케이션을 함께 설치해서 쓰는 멀티테넌시 환경이 일반적이었기 때문입니다.workingenv파이썬으로 작성한 애플리케이션 여럿이 한 시스템에 설치되면 공통으로 의존하는 라이브러리의 버전을 결정하는 게 문제가 됩니다. A 애플리케이션은 foo >= 1.0.0, < 2>에 의존하고 B 애플리케이션은 foo >= 1.5.0에 의존하면 시스템에 설치할 수 있는 foo의 버전은 >= 1.5.0, < 2>으로 한정됩니다. 만약 C 애플리케이션을 설치하려는데 foo > 2.0.0에 의존한다면, A나 C 중 하나는 포기해야 합니다.시스템에 파이썬 애플리케이션을 단 하나만 설치한다 해도, 설치하는데 시스템 관리자 권한이 필요하다는 것도 문제였습니다. 일반적으로 site-packages 디렉터리는 시스템 관리자만 수정할 수 있고 나머지는 읽기만 가능한 /usr 아래 어딘가로 정해졌기 때문입니다. 이를 우회하려고 사용자가 시스템에 설치된 파이썬 인터프리터를 쓰지 않고 직접 파이썬 인터프리터를 빌드해서 사용하는 편법도 쓰였습니다.이런 문제를 해결하기 위해, 애플리케이션·프로젝트마다 별도의 site-packages 디렉터리를 두는 방식이 제안됐습니다. 나중에 virtualenv을 만들게 되는 이안 비킹이 그 전신인 workingenv를 만들어 이 아이디어를 실현했습니다. 현재의 virtualenv 사용 방식은 workingenv에서 만들어진 것입니다.애플리케이션마다 별도의 “환경”(env)을 만듭니다.애플리케이션을 실행하기 전에 우선 그 “환경”을 “활성화”(. bin/activate 또는 Scripts\activate.bat)합니다.workingenv가 만들어주는 활성화 스크립트는 PATH와 PYTHONPATH 환경 변수를 재정의하여 시스템에 설치된 파이썬 인터프리터의 실행 바이너리 디렉터리 및 site-packages 디렉터리를 가리키는 대신, “환경” 내의 bin/ 및 site-packages 디렉터리를 바라보도록 해줍니다. 이안 비킹은 이렇게 분리된 실행 파일들(bin/)과 site-packages 등을 묶어서 “환경”이라고 명명했는데, workingenv 이후로 파이썬 패키징 및 배포 분야에서 이 용어가 정착됩니다.최근에 만들어진 신생 언어의 패키지 관리자는 대부분 파이썬과 달리 애플리케이션·프로젝트마다 별도의 환경을 두고 설치되는 경우가 많습니다. 예를 들어 npm은 -g 옵션을 일부러 켜지 않는 한 현재 디렉터리를 기준으로 ./node_modules 디렉터리에 라이브러리를 설치하게 되어 있고, 별도의 “활성화” 없이도 노드 인터프리터가 해당 경로에서 라이브러리를 찾습니다. 하지만 파이썬의 패키징 표준은 앞서 언급한 것처럼 멀티테넌시 환경이 일반적이었던 시대에 만들어졌고, 또 많은 라이브러리가 실행 파일도 함께 제공하기 때문에2 PYTHONPATH 뿐만 아니라 PATH 환경 변수도 재정의해야 해서 activate 과정이 필요합니다.workingenv는 파이썬 웹 프로그래머 사이에서 빠르게 퍼지기 시작했습니다. 웹 애플리케이션은 정통적인 CLI 및 GUI 애플리케이션과 달리 FHS 표준 같은 것에 크게 구애될 필요가 없었고, 웹 애플리케이션의 배포도 점차 가상화 기술을 통해 완전히 격리된 시스템에 설치되는 식으로 보안 문제에서 많이 자유로워졌기 때문입니다.무엇보다 workingenv는 프로그래머가 여러 프로젝트를 동시에 작업하는 경우 골치 아팠던 라이브러리 버전 충돌 문제를 우회했기 때문에, 배포 도구보다는 개발 도구로 정착되는 면이 컸습니다.virtualenv이안 비킹은 PYTHONPATH를 조작하여 별도의 site-packages 공간을 두는 workingenv의 방식이 복잡하게 패키징된 기존 라이브러리 및 프로젝트에서 호환되지 않는 문제로 골머리를 썩이다, 아예 PYTHONPATH를 이용하지 않는 방식으로 새 도구를 만듭니다.새로운 방식은 아예 파이썬 인터프리터 실행 바이너리를 복사한 뒤, sys.path 기본값에 박힌 시스템 site-packages 경로를 환경 내 site-packages 경로로 바꿔버리는 것이었습니다. 이러한 동작 원리의 차이는 이용자 입장에서 크게 중요한 것은 아닙니다.하여튼 이안 비킹은 virtualenv라는 이름으로 새 도구를 만들었고, workingenv를 빠르게 대체했습니다.virtualenvwrapper앞서 언급한 것처럼, workingenv와 그 후계자인 virtualenv는 저자의 의도와 무관하게 애플리케이션 배포보다는 개발 용도로 더 널리 쓰입니다. 파이썬 프로그래머가 새로운 프로젝트를 시작할 때는 항상 “환경”도 생성합니다. 또 개발을 시작할 때마다 “활성화” 과정도 거칩니다. 너무나 반복적이기 때문에 당연히 이를 자동화하는 도구도 만들어졌습니다. virtualenvwrapper는 바로 그런 목적으로 만들어진 bash/zsh/fish 스크립트 모음입니다.여러 단축 명령을 제공하지만, 핵심 기능은 다음의 두 가지입니다.A라는 프로젝트 작업을 시작할 때마다 cd ~/projects/a; . .venv/bin/activate라고 쳐줘야 했던 것을 workon a 명령으로 줄여줍니다.프로젝트 디렉터리마다 .venv/ 또는 .env/ 등의 이름으로 환경 디렉터리를 생성해두고 버전 관리 시스템에서는 제외되도록 .gitignore 목록에 해당 디렉터리를 넣었어야 했습니다. 예를 들어 ~/projects/a/.venv/, ~/projects/b/.venv/ 같은 식이었습니다.virtualenvwrapper를 쓰면 환경 디렉터리들을 일정한 위치로 모아줍니다. 위치는 기본값이 없으며 virtualenvwrapper 설치할 때 WORKON_HOME 환경 변수를 통해 입맛대로 정할 수 있습니다. 예를 들어 WORKON_HOME을 ~/.virtualenvs/ 디렉터리로 정했다면, 프로젝트별 환경은 ~/.virtualenvs/a/, ~/.virtualenvs/b/ 같은 식으로 저장됩니다.pyvenv파이썬 3.3부터는 virtualenv가 아예 파이썬에 내장됐습니다. 환경을 만드는 명령어는 virtualenv가 아닌 pyvenv로 좀 다르지만, 그 이후의 과정은 같습니다. 파이썬 3만 사용한다면 이제 virtualenv를 따로 설치할 필요가 없어진 것입니다.참고로 아래에서 설명할 pyenv와는 다른 도구입니다. 철자의 “v”에 주의해주세요.pyenv애플리케이션을 개발할 때는 하나의 파이썬 버전을 정하면 되지만, 라이브러리는 여러 파이썬 버전과 호환되어야 합니다. 그러다 보니 라이브러리 개발자는 여러 버전의 파이썬을 시스템에 동시에 설치할 필요가 있습니다. 데드스네이크스 PPA나 데드스네이크스 홈브루 탭 같은 것을 이용해서 설치할 수도 있지만, 보통은 pyenv를 많이 씁니다.pyenv는 동시에 여러 버전의 파이썬을 시스템에 설치해주며, 이렇게 설치된 파이썬은 시스템의 패키지 시스템(데비안·우분투의 APT나 맥OS의 홈브루 등)을 통해 설치되는 것이 아니라, pyenv가 다운로드와 빌드 및 설치를 직접 하여 별도로 관리합니다. 설치된 파이썬들은 PEP 394에 따라 일정한 형식으로 이름지어진 명령어(예: python2.7, python3.6)로 실행할 수 있게 됩니다.또한, 여러 파이썬 버전 중에 하나의 시스템 기본 파이썬 버전도 선택 가능하며, 특정 프로젝트 디렉터리 안에서만 기본 파이썬의 버전이 달라지게 할 수도 있습니다.pyenv-virtualenvpyenv가 여러 파이썬 버전을 동시에 설치해주기는 하지만, 그렇다고 자동으로 site-packages가 프로젝트마다 격리되는 것은 아닙니다. 예를 들어 pyenv로 파이썬 3.6을 설치한 뒤, 파이썬 3.6으로 두 프로젝트를 한 시스템에서 개발할 경우 두 프로젝트는 시스템 site-packages를 함께 쓰게 됩니다.따라서 pyenv를 쓰더라도 virtualenv는 따로 써야 하는데, 따로 사용할 수도 있지만 pyenv-virtualenv를 쓰면 pyenv virtualenv 명령으로 프로젝트에 쓸 파이썬 버전 지정과 가상 환경 생성을 한 번에 할 수 있게 됩니다.비슷하게 pyenv와 virtualenvwrapper를 통합해주는 pyenv-virtualenvwrapper 같은 도구도 있습니다.마치며여러 파이썬 개발 환경 관리 도구를 소개했지만, 여기 있는 모든 도구를 꼭 써야 하는 것도 아니고, 가장 최근에 나온 도구로 하루빨리 갈아타야 하는 것도 아닙니다. 글을 쓴 저 자신도 pyenv 같은 도구가 나온 지 몇 년이나 지났고 주변에서 쓰는 사람이 많음에도 쓰지 않고 있습니다. virtualenvwrapper를 대체하는 Pipenv 같은 실험적인 방식3도 생겨나고 있지만, 어느 쪽이든 동시에 여러 파이썬 프로젝트를 작업하는 사람이 아니라면 굳이 쓸 필요가 없는 도구입니다. 각자의 용도에 따라 필요한 수준의 도구를 이용하면 됩니다. 2017년 10월 현재, 아래의 지침으로 정리할 수 있겠습니다.파이썬 프로그래머가 아니지만, 파이썬 애플리케이션을 설치해서 이용합니다.시스템에서 제공하는 패키지 관리자(APT나 홈브루 등)를 통해 애플리케이션을 설치하세요.파이썬 프로그래머가 아니지만, 파이썬 애플리케이션을 유난히 많이 이용합니다.pipsi를 이용해 파이썬 애플리케이션을 설치하는 것을 권합니다.파이썬 프로그래머이고, 하나의 애플리케이션을 개발합니다.파이썬 3.3 이상을 이용할 경우 pyvenv로 개발 환경을 만들어서 개발하세요. 그 이전의 파이썬 버전을 이용할 경우 virtualenv를 활용하세요.파이썬 프로그래머이고, 여러 애플리케이션을 개발합니다.virtualenvwrapper를 활용하세요.파이썬 프로그래머이고, 여러 애플리케이션을 다양한 파이썬 버전으로 개발합니다.pyenv-virtualenvwrapper를 활용하세요.파이썬 프로그래머이고, 라이브러리를 개발합니다.pyenv와 tox를 활용하세요.파이썬으로 만든 애플리케이션을 distutils를 통해 패키징한 뒤, RPM 기반의 리눅스 배포본 용으로 python setup.py bdist_rpm 명령을 통해 *.rpm 파일을 제공하기도 했습니다. 이를 통해 애플리케이션을 설치할 경우, 각 파일들은 리눅스 FHS 표준과 해당 시스템 설정에 따라 흩어지게 됩니다. ↩예를 들어 파이썬에서 가장 많이 쓰이는 국제화 라이브러리인 바벨은 pybabel 명령어를, 구문 강조 라이브러리인 파이그먼츠는 pygmentize 명령어를, 장고는 django-admin 명령어를 제공합니다. ↩저는 2017년 4월에 한 번 써보았으나, 아직은 실무에서 쓰기에는 이르다는 결론을 내렸습니다. 이에 관한 그때의 제 감상은 별도의 글로 다루었습니다. ↩#스포카 #파이썬 #개발팀 #개발자 #인사이트 #후기 #일지
조회수 3582

Node 서버로 Slack 메신저 자동화하기

Overview백엔드 업무를 하면 데이터 요청과 CS문의를 자주 받습니다. 날짜만 다를 뿐 같은 유형의 문의가 대부분이죠. 결국 반복적인 업무를 효율적으로 처리할 수 있는 방법을 고민했고, 사내 메신저로 사용하는 Slack의 몇 가지 API를 사용하기로 했습니다.1. 알림봇 만들기비즈니스 로직을 만들다 보면 정해진 시간에 맞춰 작업을 해야 하는 경우가 발생합니다. Slack 메신저에 로그온한 상태에서 스케줄러를 이용해 지정한 시간에 Slack 메세지를 전송해보겠습니다.1)Slack API 유저토큰 받기Slack API에 사용할 해당 계정의 토큰을 받아야 합니다. Slack 가입 절차 및 채널 생성은 생략하겠습니다.https://api.slack.com/custom-integrations/legacy-tokens 접속합니다.Legacy tokens 메뉴에서 아래로 스크롤을 내려 토큰 생성버튼을 누릅니다.계정 패스워드를 입력하여 확인하면 토큰을 생성할 수 있습니다.생성된 토큰을 복사하여 저장합니다.2)Node.js를 이용한 알림봇 구현2-1.Node.js 설치Node.js 다운로드 해당 사이트에서 운영체제 환경에 맞는 파일을 다운받아 설치2-2.프로젝트 생성해당 프로젝트 폴더로 이동 후 명령어 실행$ npm init --yes // package.json 파일 생성2-3.Slack 연동2-3-1. slack-node 모듈 설치$ npm install slack-node --save2-3-2. 유저토큰을 이용하여 해당채널에 메세지 전송const Slack = require('slack-node'); // 슬랙 모듈 사용 apiToken = "발급받은 유저토큰"; const slack = new Slack(apiToken); const send = async(message) => { slack.api('chat.postMessage', { username: 'dev-test', // 슬랙에 표시될 봇이름 text:message, channel:'#general' // 전송될 채널 및 유저 }, function(err, response){ console.log(response); }); } send('메세지 내용'); 지정한 채널에 메시지가 발송됩니다. 하지만 이와 같은 방법은 유저 토큰이 공개 코드에 노출되기 때문에 보안이 취약할 수 있습니다. 유저 토큰이 필요 없어도 해당 채널에 URL을 생성하는 WebHooks API를 이용하여 메시지를 전송해보겠습니다.3) Incoming WebHooks APIWebHooks는 유저 토큰 대신 Webhook URL을 생성해 HTTP 통신으로 Slack 메세지를 전송할 수 있습니다. 다양한 메시지 형식을 지원하고 게시할 사용자 이름 및 아이콘 등을 통합적으로 관리할 수 있는 장점을 가지고 있습니다.3-2. Webhook URL 생성하기Slack 해당채널에서 Add an app 클릭검색필터에 WebHooks 검색Incoming WebHooks 추가채널 선택 후 Incoming WebHooks 생성생성된 Webhook URL 복사하여 저장해당채널에 생성되었는지 확인봇이름 및 아이콘등 기본 설정 변경하여 저장curl 사용 예제$ curl -s -d "payload={'text':'메세지 내용'}" "Webhook URL"Webhook URL 사용 중인 모든 메시지는 통합적으로 기본 설정이 변경된 걸 확인할 수 있습니다.다양한 형식의 메세지를 전송해보겠습니다.const Slack = require('slack-node'); // 슬랙 모듈 사용 const webhookUri = "Webhook URL"; // Webhook URL const slack = new Slack(); slack.setWebhook(webhookUri); const send = async(message) => { slack.webhook({ text:"인터넷 검색 포털 사이트", attachments:[ { fallback:"링크주소: ", pretext:"링크주소: ", color:"#00FFFF", fields:[ { title:"알림", value:"해당링크를 클릭하여 검색해 보세요.", short:false } ] } ] }, function(err, response){ console.log(response); }); } 다양한 형태의 메시지를 전송할 수 있습니다.4) Schedule 연동이제 스케줄러를 이용하여 지정한 시간에 메세지를 전송해보겠습니다.4-1. node-schedule 모듈 설치node-schedule는 Node.js 작업 스케줄러 라이브러리입니다.$ npm install node-schedule --savenode-schedule 코드 작성const schedule = require('node-schedule'); // 스케줄러 모듈 사용 // rule-style 사용 var rule = new schedule.RecurrenceRule(); rule.dayOfWeek = new schedule.Range(3,4); rule.hour = 19; rule.minute = 50; schedule.scheduleJob(rule, function(){ console.log('rule 방식'); }); // cron-style 사용 schedule.scheduleJob('50 19 * * *', function(){ console.log('cron-style 방식'); }); 취향에 맞는 스타일로 사용하면 됩니다.5) 지정 시간에 메세지를 전송하는 알림봇을 작성해보겠습니다.const Slack = require('slack-node'); // 슬랙 모듈 사용 const schedule = require('node-schedule'); // 스케줄러 모듈 사용 const webhookUri = "Webhook URL"; // Webhook URL const slack = new Slack(); slack.setWebhook(webhookUri); const send = async(message) => { slack.webhook({ text:message, attachments:[ { fallback:"구글드라이브: ", pretext:"구글드라이브: ", color:"#00FFFF", fields:[ { title:"[알림]", value:"해당링크로 접속하여 작성해 주세요.", short:false } ] } ] }, function(err, response){ console.log(response); }); } schedule.scheduleJob('5 19 * * *', function(){ send('업무보고 보내셨나요?'); }); 업무보고 시간을 미리 알려주는 알림봇2. 대화봇 만들기업무 문서는 주로 구글 독스와 같은 온라인 문서로 관리하고 있습니다. 하지만 매번 구글 드라이브에서 문서를 찾는 건 정말 귀찮은 일입니다. 번거로운 건 딱 질색입니다. Slack API를 이용해 관련된 키워드를 입력하면 링크 주소를 바로 받을 수 있는 대화봇을 만들어 보겠습니다.1) Slack API Bots 토큰 받기Slack API에 사용될 Bots 토큰을 받아야 합니다.https://{App Name}.slack.com/apps 에 접속합니다.Bots 추가Bots Api 토큰을 복사해 저장합니다.설정한 봇이름으로 Apps 영역에 자동으로 추가됩니다.2) 구글독스 대화봇 코드 작성2-1. botkit 모듈 설치$ npm install botkit --save2-2. 코드 작성const botkit = require('botkit'); // 봇 모듈 사용 const Slack = require('slack-node'); // 슬랙 모듈 사용 const controller = botkit.slackbot({ debug: false, log: true }); const botScope = [ 'direct_message', 'direct_mention', 'mention' ]; controller.hears(['업무보고'], botScope, (bot, message) => { bot.reply(message, '업무보고 링크주소'); }); controller.hears(['가이드', 'guide', '튜토리얼'], botScope, (bot, message) => { bot.reply(message, '가이드 링크주소'); }); controller.hears(['api', '명세서'], botScope, (bot, message) => { bot.reply(message, 'api명세서 링크주소'); }); controller.hears(['일정', '일정관리'], botScope, (bot, message) => { bot.reply(message, '일정관리 링크주소'); }); controller.hears(['비품', '비품정리'], botScope, (bot, message) => { bot.reply(message, '비품관리 링크주소'); }); controller.spawn({ token: '발급받은 봇 토큰' }).startRTM(); 지정한 키워드를 입력하면 해당 링크가 수신 됩니다.3) 데이터문의 대화봇 코드 작성데이터 요청 시 결과 데이터를 보내주는 대화봇을 만들어 보겠습니다. 일단 먼저 데이터문의 전용 Bots을 생성합니다.3-1. Python 연동 요청한 데이터는 Mysql 데이터를 조회해서 전송합니다. 그러면 Mysql 을 연동해야겠죠? Node.js에서도 직접 mysql 연결할 수 있지만, 기존 프로젝트가 Python으로 구현되어 있어 Python을 실행해 필요한 데이터를 추출해보겠습니다.3-2. python-shell 모듈 설치Node.js에서 Python 실행가능하도록 모듈을 설치$ npm install python-shell --save3-3. Mysql Sample Table3-4. 회원테이블에 저장된 가입일시 기준으로 몇일전에 가입한 회원을 추출하여 전송하는 코드 작성해 보겠습니다.const botkit = require('botkit'); // 봇 모듈 사용 const Slack = require('slack-node'); // 슬랙 모듈 사용 const ps = require('python-shell'); // 파이썬 쉘 모듈 사용 // 몇일 전 날짜 구하기 function getDaysAgo(dayNo = 0) { let nowDate = new Date(); let tempDate = nowDate.getTime() - (dayNo * 24 * 60 * 60 * 1000); nowDate.setTime(tempDate); let getYear = nowDate.getFullYear(); let getMonth = nowDate.getMonth() + 1; let getDay = nowDate.getDate(); if (getMonth < 10 xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed> 3-5. Python 코드 작성 # -*- coding: utf-8 -*- import sys import pymysql // mysql 접속 db = pymysql.connect('hostname', user='', passwd='', db='', charset='utf8') cursor_db = db.cursor() exe_query = "SELECT MEMBER_NAME FROM MEMBER_INFO WHERE MEMBER_REGIST_DETE >= '{}' ORDER BY MEMBER_NO ASC ".format(sys.argv[1]) cursor_db.execute(exe_query) all_rows = cursor_db.fetchall() for idx, row in enumerate(all_rows): print(row[0])     지정한 며칠 전에 가입한 회원 이름이 전송됩니다.   로그도 정상적으로 출력됩니다. 3. Node.js 프로세스 관리를 위한 pm2 모듈 설치 Node.js 는 비동기 I/O를 지원하며 단일 스레드로 동작하는 서버입니다. 비동기식 방식이지만 처리하는 Event Loop는 단일 스레드로 이루어져 있어 처리 작업이 오래 걸리면 전체 서버에 영향을 줍니다. 그래서 pm2를 이용해 프로세스별로 상태를 관리해야 합니다. 1) pm2 모듈 설치$ npm install pm2 -g2) 자주사용하는 pm2 명령어 pm2 list -> 실행중인 프로세스 확인pm2 start {node 파일} -> 시작pm2 stop {id or App name} -> 중지pm2 delete {id or App name} -> 삭제pm2 show {id or App name} -> 상세정보pm2 restart {id or App name} -> 재시작pm2 kill -> pm2 종료pm2 logs {id} -> id 앱의 로그 확인 3) pm2 실행화면$ pm2 start bot.js   프로세스별로 앱 이름, 버전, 상태, cpu 및 memory 사용량이 표시됩니다.$ pm2 show 0   해당 프로세스의 상세 정보를 확인할 수 있습니다. Conclusion 지금까지 Node.js 로 유용한 Slack 메신져 API를 알아봤습니다. 반복적인 업무를 하나씩 줄이다 보면 분명 일의 능률을 높아집니다. 하지만 무분별한 자동화는 서버의 부하를 증가시키기 때문에 꼭 필요한지 확인하고 선택하길 바랍니다. 오늘은 여기까지 글곽정섭 과장 | R&D 개발1팀[email protected]브랜디, 오직 예쁜 옷만  

기업문화 엿볼 때, 더팀스

로그인

/