스토리 홈

인터뷰

피드

뉴스

조회수 1387

선생님 교육 플레이샵_”아이들을 만나기 전 설레는 준비 과정”

플레이샵“아이들을 만나기 전 설레는 준비 과정”놀담의 대학생 놀이 선생님은 아이들이 가장 좋아하는 놀이를 누구보다 잘 알고 있는 놀이 전문가들입니다.놀담은 놀이선생님을 양성하기 위해 두 시간의 정규 교육 “씨앗교육”과 놀이에 대한 전문 교육 “새싹교육”의 자리를 두어선생님과 아이에 대해 이해해야 할 사항들과 놀이의 가치에 대해 공유하는 시간을 갖습니다.커리큘럼은 놀이와 육아에 대한 다양한 문헌과 놀담, 자람가족학교 등의 놀이 전문가들이 함께 제작했습니다.그렇다면 선생님은 이 자리에서 어떤 것들을 배우게 될까요?첫째로, 놀이 선생님은 어린이들에게 놀이가 어떤 의미인지 배우게 됩니다.혹자는 놀이가 인간을 규정짓는다는 의미에서 현대의 인류를 호모 루덴스라고 정의하기도 합니다.놀이는 실패해도 안전한 가상의 사회 안에서 세상과 삶을 배워가는 역할을 한다는 점에서 필수적인 요소입니다.그렇기에 놀고 싶은 마음은 인간의 기본적인 욕구이기도 합니다.놀이는 특히나 어린 나이의 아이들에게 중요합니다.아이들은 놀아야 합니다. 아이들은 놀면서 세상을 배우고 무엇보다 놀이가 아이들을 건강하게, 또 행복하게 하기 때문입니다.“나는 누구인가?”로 시작하는 자람 가족학교 이성아 대표님의 강연은 항상 많은 선생님에게 영감을 줍니다.나는 어떤 사람인지에 대해 고민해본 선생님들은 이제놀담에게 기대하는 바는 무엇인지, 내가 바라는 것이 놀담에서 이루어질 수 있는지 점검의 시간을 갖게 됩니다.이어서 학부모님, 그리고 아이들의 바램도 들어봅니다.이를 통해서 놀이선생님은 무엇을 하는 사람인지를 배워가지요.둘째로, 놀이선생님은  놀담의 놀이는 어떠해야하는지 고민해봅니다.앞선 1 부에서 왜 놀이 선생님이 되고자 하는지에 대해 생각해보았다면 2부에서는 어떻게 해야 좋은 놀이선생님이 될 수 있는지 이야기합니다.놀담이 생각하는 진짜 놀이의 3 요소는 즐거움, 자발성, 주도성입니다.아이가 즐거우면서 선생님도 함께 즐겁기 위해서는 선생님이 아이들을 놀아주는 주체가 아니라 아이들과 “함께 노는” 주체여야 합니다.그렇기 위해서는 아이와 함께 상상하는 기술이 필요합니다. 하지만 그 무엇보다 중요한 것은 진심입니다.또한 놀이에 대해 기본적인 컨텐츠는 갖고 있어야 하지만 아이가 원하는 놀이를 하기 위해 본인의 커리큘럼을 언제든 내려놓을 준비가 되어 있어야 합니다.아이가 원하면 하던 놀이를 바로 그만두고 그 놀이를 해야한다는 이야기는 아닙니다.함께 놀이를 정리하는 과정을 통해 선택에 대한 책임을 배우는 시간을 배우지만 언제든지 원하는 놀이를 할 수 있다는 가능성을 열어주도록 합니다.놀이선생님은 아이들이 원하는 놀이를 함께하면서 아이를 안전하게 보호하고, 가정에는 안심의 시간을 선물합니다.교육을 통해 선생님은 아이를 만날 마음의 준비를 갖추고 여러 지식과 방법들을 습득합니다.#잘노는 #이벤트개최 #이벤트후기 #인사이트
조회수 1006

[마케터]창업일기

#퇴사학교 #꼬꼬마 #마케터 #창업일기 #조교일기Do things that don't scale. 입사도 안해보고 퇴사학교 창업에 조인하고 맨 처음 맞닥뜨린 혼란은 '내가 이걸 왜 하고 있지?'였다.1.문자를 한 명 한 명 보내고, 계좌이체를 해주고, 쿠팡에서 다과를 사고, 인쇄소에 인쇄를 맡기고, 블로그에 글을 복붙복붙, 다른 회사 환불규정이 뭔지 보고 가져다쓰고, 야매스킬 포토샵으로 포스터를 만들고수업마다 가서 인쇄한 브로셔 돌리고, 후기 받고, 일일이 가서 왜 오셨는지, 뭘 듣고 싶으신지 물어보고 적어놓고, 강의에서 사람들이 뭘 좋아했는지 캐치해서 적어놓고, 뭐가 반응이 좋았는지 안좋았는지 고민하고. 일정표 자잘하게 만들고 하나씩 하고 하고 하고.. 반복반복2.조직생활 경험이라곤 대학생한 여러 가지 활동 밖에 없던 나는 '회사'에서 '일'을 한다는 것이 자잘한 일들의 연속임을 몰랐다. 무언가 회사라는 것을 거창하게 생각했던 것 같다. 학생때 너무 프로젝트들을 많이 해봐서 그런지, 회사도 결국 똑같이 사람들이 모여서 큰 일을 만드는 건데 나는 늘 회사에 들어가면 (추상적으로) '대단한 일'을 할 거라 생각했다.3.창업을 하고서 알게된 것은, 맨 땅에 헤딩일수록 같은 목적과 비전을 가진 사람들이 모여서, 각자의 잘하는 일들을 하되, 아주 하찮아 보이는 자잘한 일들을 하나 하나 꾸준하게 해나가야만 한다는 것이다. 그리고 그런 자잘한 일들을 할 때마다 어떻게 더 효율적으로, 잘 협업할 지, 누가 우리 진짜 고객이고 고객에게 어떤 가치를 줄지끝없는 고민의 고민이 쌓이고 쌓여야만, 겨우 하나의 system이 만들어지고, 우리의 가치, 시장에서의 경쟁력, 고객들이 만들어지게 된다.그런 작디 작은 하찮은 일들이 결국엔 scale을 만들어낸다. 그런 의미에서 창업이란 참 마라톤 장기전과도 같다. 앞이 안보이는 상황에서 삽질은 참 노답이다. 4.이게 맞는 길인지, 어디로 가고 있는지, 이대로 가도 되는 건지 아니면 빠르게 빽해야하는지, 고해야할지 스탑해야할지...알 수조차 없는 연속. 지난 1년이 참 그래왔던 것 같다. 많이 모르겠고 헤매고 돌아가고 망하고 때론 얼떨결에 잘되고. 이게 맞나? 저게 맞나? 의 연속.그래도 지난 1년을 되돌아보면 그럼에도 비슷한 비전을 가진 팀원들이 함께 있어 감사했고, 뛰어난 인재들과 함께 일하며 시너지를 낼 수 있어 감사했고, 혼자서 울고웃고 고군분투하며 많이 참 많이 배우고 깨지고 단단해진 것이 감사하다.5.늘 작디작은 일들을 하찮다고 생각했지만, 사실은 그 하찮아보이는 일들이 사실은 가장 중요한 일들이라는 것. 결국 그 하나하나가 모여 내가 생각지도 못한 더 큰 가치들을 만들어낸다는 것이 참 와닿는 요즘이다. 맨 땅에 아무것도 없이 시작했는데 벌써 이렇게 커진 퇴사학교를 보니...ㅠㅠ 내가 한 건 참 많이 없는데 좋은 팀원들 덕분에 많이 얻어걸렸다 참..6.인생도 결국 마찬가지인 것 같다. 내가 되고 싶은 모습이 있다면 현실과 나 사이의 gap에서 '현실은 시궁창'이라며 실망할 것이 아니라 정말 하찮아보이는 작은 목표들을 하루 하나하나 해나가는 게 맞는 것 같다. 언젠가 책써야지가 아니라, 하루 글 1꼭지 적기. 나중에 창업해야지가 아니라, 1주일 1개씩 아이템 생각해서 구체화해보기 등.결국 하찮아 보이는 잔업들이 모여 scale을 만들듯이, 내 삶에 하루 하루가 모여 내 삶의 scale을 만든다. 별 거 아닌 일이라고 나중에 해야지...나중에 더 크게, 더 잘 해야지..미루고 미루다보면 결국 하나도 할 수 없게 되는 게 인생인 것 같다. 작은 것도 조금씩 조금씩 해나가야지.(사진은 그런 의미에서 1문단씩 쓰고 있는 #퇴사학교 #아이덴티티_워크숍 에서 만든 나의 아이덴티티북♡ 깨알홍보...)
조회수 1077

스타트업에서 운영자로 살아간다는 건

타고나기로 운영을 좋아하게 태어났다.처음 그 기질을 발견한 건 대학교 시절에 편의점 아르바이트를 하던 시절.삼각김밥 열을 맞추고, 조금 더 빠른 계산을 위한 아이디어를 생각해 내고, 1초라도 더 빠르게 담배를 손님에게 드리는 방법을 생각해내는 것이 게임보다 재밌었던 시절.기획자로 살아갈 때도 창의적인 것보다, 트렌디한 것보다내 주변의 직원들이 고객들이 조금 더 편해지는 것이 더 행복했었다.내가 진행했던 기획으로, 프로젝트로 몇 십명 직원들의 업무가 30% 줄어드는 상황을 지켜보며아, 프로세스의 변화가 이렇게 무섭구나. 하는 생각을 했더랬다.지금은 스타트업에서 서비스운영실을 맡고 있다.스타트업에서 운영자로 살아간다는 건, 누군가에게는 현장에서의 재미를, 누군가에게는 얼른 떼고 싶은 '운영'이라는 딱지를 달고 있는 삶인지 모르겠다.내가 처음 서비스운영실을 맡게 되었을 때 꿈꾸었던 것들이 있었다.어느날 한 외국 대형 가구점을 방문했었다. 노란색 줄무늬 제복을 입은 일명 '외국계 기업의 자존감 높은 운영자'를 보면서 남편과 이런 대화를 나눈 적이 있다."나도 이 회사에서 일하고 싶다"이 말에는 상당히 많은 뜻이 내포되어 있는데, 이 회사의 네임밸류, 트랜디함을 느껴보고 싶다. 이 사람들이 하는 일은 주변 사람들에 대한 스트레스도 없을 것 같고, 일이 그렇게 어려워 보이지도 않으며, 삶과 일의 균형을 잘 맞추고 있는 사람들인 것 같다. 나도 이렇게 살고 싶다. 등을 표현한 한 문장이었던 것 같다.나는 이 사람들도 결국 '운영자'가 아닐까. 하는 생각을 했었다.별다방에서 커피를 제조하는 매니저들은 또 다른 '운영자'의 모습이 아닐까.왜 우리는 그들을 보며 '멋있다' 라고 느끼는 걸까.회사의 운영자의 삶을 들여다 보면, 회사가 직원을 어떻게 생각하는지직원은 회사에 자부심을 느끼는지, 기업문화와 가치를 엿볼 수 있다.다시 원점으로 돌아가보자면,내가 처음 서비스운영실을 맡게 되었을 때 꿈꾸었던 것들은 이런 것이었다.와디즈의 '운영자'가 와디즈의 색깔을 그대로 입고, 와디즈의 수준 높은 고객들을 대하고, 와디즈를 사랑하고, 와디즈의 아이덴티티를 가장 잘 드러내는 모습이 되는 것.하지만 스타트업에서는 이슈가 많고, 리스크도 많아서 운영자의 삶이 평탄하기는 사실 어렵다. 앞에서 말한 대기업의 경우에는 모든 이슈와 리스크에 대한 매뉴얼이 있어서 운영자들이 안정감을 가지고 밸류를 찾기에 쉬운 구조라고 한다면 스타트업에서 운영자의 삶은 하루하루가 시한폭탄일 수밖에 없다.세상에 없는 비즈니스를 만들어야 하는 '와디즈'는 더욱 그러하다.실장인 나 혼자서 소위 '운영이 좋다고' 실원들에게 '운영'을 강요할 수도 없는 노릇이다.따라서, 스타트업에서 운영자로 살아간다는 건'가치'를 만드느냐에 따라서 천국과 지옥을 오갈 수 있다.(물론 '가치'를 만드는 시도를 하다가 혹독한 지옥을 맛보기도 한다)내가 생각하는 운영의 '멋있음'이란 이런 거다.1. 사명감. 고객이 와디즈를 만나는 처음과 끝의 경험, 모두 '운영'에 의해 좌지우지된다는 걸 잊지 않는다.- 회원가입 방법을 안내 받던 투자자- 프로젝트를 개설하여 콘텐츠 피드백을 받는 메이커들에게는 그들이 사실상 와디즈의 전부다.2. 디테일. 운영의 디테일은 와디즈가 가장 중요시 하는 '신뢰'를 견고히 한다.3. 디벨롭. 오늘 하던 개고생을 내일 또 하지 않도록 하는 것. 그걸 해내는 사람.결국 스타트업에서 운영자로 살아간다는 건한 회사의 얼굴이 되는 것이다.그러니 나의 역할은 우리 실원들이 와디즈의 얼굴임을 자부심 느끼게 하고자부심을 통해 스스로 더 발전하고자 하는 마음이 샘솟게 하는 것인 것 같다. (결론)저녁 내내 내 마음에 '운영'이라는 단어가 쓰리게 맴돌아서.마음 속 정리를 해본다.#와디즈 #크라우드펀딩 #운영 #운영자 #인사이트 #성장
조회수 1258

아띠 #17. 행복을 싣고 달리는 해피라이더, 조조

story #17. 행복을 싣고 달리는 진정한 해피라이더, 조조 :DQ. 자기소개 부탁해!안녕하세요, 라이더 조조라고 합니다. :)Q. 아띠에 들어오게 된 계기가 있다면?군대 때문에 미국에서 한국으로 왔을 때, 군대 가기 전에 용돈을 좀 마련해보려고 했었어. 누나한테 영어를 쓰면서 일할 수 있는 곳이 어디 없냐고 물어봤더니 게스트하우스랑 아띠를 추천하더라고. 누나 친구의 오빠가 IJ였거든.와 정말? 인연이네!응. 근데 내가 아띠에 대해서는 이전에 잡지를 통해서 접하면서 ‘이 사람 정말 대단하다’ 싶었는데, 누나랑 그렇게 연결이 되었더라고. 그래서 당연히 아띠를 하겠다고 해서 시작했지. 그래서 약간 낙하산 같은 존재?(웃음) 그런데 처음 가니까 IJ가 무섭게 가르치더라고. 그렇게 시작하게 됐어.Q. 라이딩 시작해보니 어땠어?2014년 여름부터 초가을쯤이었는데 그때 돈은 정말 많이 벌었었어.(웃음) 근데 예약이 없을 때는 프리라이딩을 하잖아. 그때 ‘아띠는 나의 금전적인 욕구를 해결시켜주는 용도가 아니라 내가 여기에서 누군가에게 큰 행복을 줄 수 있는 곳이구나’ 라고 확실히 느꼈어. 그리고 프리라이딩을 할 때는 나도 즉석에서 손님을 태우는 거고, 손님도 즉석에서 인력거를 타잖아. 거기에서 느껴지는 교감이 있어. 손님한테는 갑자기 계획에 없었던, 뜻밖의 일이 일어난 거니까 너무 행복해하더라고. 그런 것들이 너무 재미있었지. 그래서 군대에 가서 휴가 나와서도 프리라이딩 하러 오고 그랬어.(웃음) Q. 그래 맞아! 쌔까만 애가 갑자기 라이딩하러 나타났었지!(웃음)맞아. 주변 사람들이 왜 그러냐, 그렇게 할 일이 없냐, 왜 고생하냐 그러는데 정말.. 이 맛은 직접 맛보지 않으면 모르는 거야.Q. 아띠의 장점을 꼽자면?아띠의 가장 큰 장점을 꼽자면, 정말 다양한 사람을 만날 수 있다는 거야. 지금 시대에 어울리지 않는 말일 수도 있는데, 정말 남녀노소, 신분?(웃음)과 관계없이 너무나도 다양한 사람들!(웃음)보통 라이딩을 시작하면 라이더 중 20명 정도는 만나서 같이 일을 하는데, 20명 전부 다 달라. 나이부터 배경, 인생의 스토리가 다 다르니까 20가지가 넘는 가르침을 받을 수 있는 것 같아. 나는 정말 그냥 영어를 쓰면서 돈을 벌 수 있는 일을 하러 처음에 왔었지만, 사람들을 얻어가고 뭔가 삶에 대해 배워가는 것 같아.Q. 힘들었던 순간은 언제였어?사실 내가 라이딩할 때는 거의 항상 잘될 때가 있었어.(웃음) 그래도 힘들었을 때는 혼자 라이딩할 때나, 정말 안될 때지. 그런데 그럼에도 주변 사람들의 힘이 정말 크다는 걸 최근에 알았어.이번 여름에 무지하게 더웠을 때, 밖에서 7시간 정도 대기하고 있는데도 사람들이 정말 안탔던 적이 있었어. 그날 소득이 0원!(웃음) 그런데 그날 기분이 안 좋았냐? 아니, 그렇지 않았어. 그날 같이 라이딩을 했던 사람이 째미랑 현아였어. 우리 삼총사가 모였을 때는 뭔가 그런 시너지가 나지.(웃음) 다른 라이더들도 본인들만의 어벤져스 팀이 있을 거야. 우리 셋 다 0원이었는데 그날 너무 재미있었어. Q. 0원이라니! 누군가 태우기는 했었지?(웃음)응. 프리라이딩을 했지. 그런데 한 4시간이 지났는데도 0원이니까, 서로 눈만 마주치면 너무 웃긴거야. 그때 그 상황이 너무 재미있어. 근데 이건 아띠라는 회사니까 가능한 거지, 어느 회사가 이렇게 웃게 내버려두겠어. 전화로 ‘오늘 너무 안돼~’ 라고 하니까 ‘그래, 오늘은 그냥 프리라이딩 해. 놀다와~’ 라고 해줘서 맘 편하게 할 수 있었지. 그런 힘들었던 상황도 아띠가 해결해줬던 것 같아. 나는 심지어 프리라이딩만 하려고 출근하는 날도 있었어.(웃음)Q. 프리라이딩을 하는 것도 좋지만, 예약손님을 만날 때 더 좋지 않아?예약은 진짜 좋지. 손님들이 예약을 많이 해주셔야 돼!!(웃음) 예약 손님들은 정말 내가 할 수 있는 만큼 끝까지 서비스를 해드리고 싶어. 손님들이 만족을 못 느끼면 보내기가 싫더라고. 물론 그런 적은 없지만.(웃음) 나는 완전 만족시켜드리지!앞 줄 왼쪽부터 라이더 현아, 째미, 조조. 자칭 아띠 삼총사:/Q. 가장 기억에 남는 손님이 있다면?음, 세 사람이 있어. (지금 얘기하는 분들 외에도 정말 좋았던 분들이 너무 많지만, 몇 명만 꼽자면)첫 번째는 어느 날 밖에서 대기하고 있었는데, 장애가 있으신 분들 10명이랑 인솔자 1명이 계시더라고. 지체 장애인분들이셨는데 태워드리고 싶어서 “타세요~”라고 했더니, 인솔자분은 당연히 돈을 지불해야 될 거라고 생각하셨는지 딱 막으시더라고. 내가 쫓아가서 “그냥 무료로 태워드리니까 타셔도 되요”라고 하니까 그때 마음을 여시더라고. 그래서 우선 2명을 우선 태우고 인솔자 분은 옆에 따라오시면서 그 분들과 수화로 이야기 나누면서 천천히 가는데, 그 분들이 ‘왕이 된 기분’ 이라고 했다고 나한테 설명해주시는 거야. 그때 정말 ‘내가 언제 이렇게 직접적으로 다른 사람을 도와줄 수 있을까’라는 뿌듯함을 느꼈어.그리고 기억에 남는 두 번째는 예약하고 오셨던 손님이었어. 2시간 투어를 예약하셨던 손님인데 21살이랑 이제 12살 된 완전 늦둥이 동생, 이렇게 자매가 온 거야. 근데 그때 까지만해도 엄마와 딸인줄 알고 ‘어머니’라고 했는데, 통성명을 하고 보니까 나보다 어리더라고.(웃음) 지금까지 가족단위 손님은 대게 어머니가 함께 오시는 데 자매만 온 게 너무 신기해서 물어봤더니, 동묘 야시장에서 부모님 일을 돕고 있는데 새벽 1시부터 떡볶이 장사를 한 대. 야시장에서 일을 하니까 동생을 챙겨줄 시간이 별로 없는 거야. 그래서 이럴 때 한 번 데리고 나와서 노는 거래. 어릴 때부터 부모님 일을 도와서 그런지 확실히 어른스럽고 되게 밝더라고. 그 친구가 너무 기특하기도 하고 늦둥이 동생도 너무 귀엽고 뭔가 아름다웠어! 이 자매 손님이랑은 코드가 너무 잘 맞아서 퇴근을 9시에 했어.(웃음) 인력거에 세워놓고 앉아서 계속 이야기하고, 저녁이 되니까 무서운 얘기도 하고. 진짜 재밌었어. 아직도 그 친구들 얼굴이 정확히 기억나. 또 놀러오라고 했는데 못보고 가서 아쉽네. 내가 야시장으로 갔어야 했는데.. 그리고 세 번째는 어떤 어르신이야. 어르신들이 인력거를 보시면 옛날 생각을 많이 하시더라고. 그 날도 인사동길에서 감고당길로 가려고 신호등을 기다리고 있는데, 어떤 어르신이 역시 신기해하시기에 모셔다드리겠다고 하니까 거절을 하시더라고. 근데 일행이셨던 아주머니가 옆에서 '한번 타보세요'라고 권하셔서 결국 타셔서 국립현대미술관까지 모셔다드렸어. 내리실 쯤에 그 아주머니가 누군지 아시냐고 묻는데, 전 문화부차관이라고 하시더라고. 높으신 분이었어.(웃음) 그리고 문화부잖아. 아띠가 한국의 문화를 동반할 수 있는 회사니까 왠지 기분 좋더라고. 그리고 그 아주머니는 미술관에 전시하고 계시는 작가님이시더라고. 그 분이 주소를 알려달라길래 아띠 주소를 알려드렸더니, 우리집 주소를 알려달라고 하시는 거야. 나중에 우리 집으로 자기 작품을 담은 책도 선물로 보내주시더라고!(웃음) Q. 아띠를 즐길 수 있는 팁을 드리자면?아띠는 정말 사람의 이야기야. 사람이 끌고, 사람을 태워서, 사람의 이야기를 담고 달리니까. 그래서 사람이다 보니까, 나랑 잘 맞는 손님을 만나면 정말 시간가는 줄 모르고 시간이 오버되도 계속 가는 거지. 그래서 이런 호흡이 중요한 것 같아. 손님들에게 팁을 드리자면, 정말 마음을 열고 즐길 준비를 하고 오셨으면 좋겠어. 라이더가 MC라면, 손님은 방청객!(웃음) 리액션이 좋으셔야 돼. 신기해하면서 우와- 한번 해주시면 보람이 느껴지니까. 그리고 아띠는 정말 타봐야 돼. 한번 사는 인생에서 한번쯤은 해봐야 하는 경험이야. 그런데 한 번 타면 계속 타게 돼!!(웃음) Q. 신입 라이더들에게 어떤 말을 해주고 싶어?낙하산 선배로서?(웃음) 끝까지 버텼으면 좋겠어. R1이 되고 나면 정말 재밌거든. 그리고 회사에서 이렇게 테스트를 보고 R1, R2를 나누는 이유도 롱런하기 위해서인 것 같아. 이게 한 번하고 마는 일이 아니거든. 언제든 돌아와도 되고, 편안한 안식처가 될 수 있는 곳이기 때문에 잠깐만 버텼으면 좋겠어. 그래봐야 한 달 정도니까. 그리고 정말 다양한 사람을 만날 수 있는 장이고, 여러 가지 부분을 공유할 수도 있고 거기에서 파생된 것에 대해서도 이야기할 수도 있고. Q. 이제 미국으로 다시 돌아가는데, 아띠에게 남기고 싶은 이야기가 있다면?아띠가 정말 잘됐으면 좋겠어. 회사의 이익을 위해서라기보다, 아띠는 정말 순수한 사람들이 모여서 한국을 찾은 사람들에게 문화를 알리고, 여행을 온 사람들에게 행복을 주기 위해서 정말 순수한 마음으로 일잖아. 그렇기 때문에 더 오래 갔으면 좋겠어. 그래서 우리나라 관광에 크게 기여하는(웃음) 회사로 남았으면 좋겠어. 그런 의미에서 대국민이 단합해서 아띠를 많이 타러 왔으면 좋겠어!(웃음) 그래야 나도 40대가 돼서 자식들이랑 같이 아띠 타러 오지!아띠를, 라이딩을, 너무도 사랑하는 행복한 라이더 조조의 이야기였습니다. :) 머지않아 다시 한국으로 돌아와 라이딩을 마음껏 즐길 날이 오기를 기대해봅니다!#아띠라이더스클럽 #팀원소개 #팀원인터뷰 #팀원자랑 #기업문화 #조직문화 #사내문화
조회수 1836

서비스 중단 없이 Amazon EKS로 옮긴 이야기 - VCNC Engineering Blog

Amazon EKS는 AWS의 관리형 Kubernetes 서비스입니다. 2017년 11월 AWS re:Invent에서 프리뷰 버전이 출시되었고, 2018년 6월에 상용(GA) 버전이 미국 리전에만 출시되었습니다. 그래서 서울 리전을 사용해야 했던 타다 프로젝트에서는 Kubernetes 클러스터를 직접 kops로 설치하여 운영할 수 밖에 없었습니다.2019년 1월, 오랜 기다림 끝에 드디어 서울 리전에 EKS가 출시되어 기쁜 마음으로 EKS로 옮겨가게 되었습니다. 이 글에서는 직접 구축한 클러스터 대비 EKS의 특징에는 어떤 것이 있는지 살펴보고, 서비스 중단 없이 EKS로 옮기기 위한 전략을 공유하고자 합니다.EKS 서울 리전 출시를 염원하던 한국인(?)들EKS는 뭐가 다른가요?AWS에서 마스터 노드를 관리해줍니다.Kubernetes 클러스터는 마스터 노드와 워커 노드로 구성되어 있습니다. EKS는 이 중에서 마스터 노드를 직접 EC2로 띄울 필요 없이 AWS에서 관리해주는 서비스입니다. RDS를 사용할 때 직접 DB 인스턴스를 생성하지 않는 것과 비슷합니다. 별도의 설정 없이도 알아서 여러 가용 영역에 마스터 노드를 실행하여 HA(고가용성) 구성을 해주고, 비정상 마스터 노드를 자동으로 감지하고 교체합니다. 또한 자동화된 버전 업그레이드 및 패치를 지원합니다. EKS를 사용하더라도 워커 노드는 직접 EC2 인스턴스를 생성·관리해야 합니다.EKS 클러스터의 요금은 2019년 2월 현재 시간당 $0.20입니다. 타다에서는 기존에 t2.medium 3대를 마스터 노드로 사용하고 있었기 때문에 관리를 직접 하지 않는 대신 비용이 약간 증가하게 되었습니다.AWS IAM 기반 인증을 사용합니다.VCNC에서는 기존에 Kubernetes API에 접속할 때 가장 간단한 basic auth 인증 방식을 사용했습니다. 그 대신 외부 네트워크에서 접근할 수 없게 해두고 필요한 경우 Bastion 호스트를 통해 SSH 터널링하여 접속했습니다.EKS의 API 서버는 인터넷에 노출되어 있으며, 별도로 네트워크 접근 제한 설정을 할 수 없고 AWS IAM으로 사용자를 인증합니다. (물론 공개망에 노출되어 있으면 Kubernetes API 서버에 보안 취약점이 발견되는 경우 안전하지 않을 수 있는 단점이 있습니다. 앞으로 PrivateLink가 지원되면 해결될 것입니다.)IAM은 인증에만 사용되고, 특정 작업을 할 수 있는 권한은 Kubernetes 기본 RBAC로 관리됩니다. IAM 사용자나 역할을 RBAC 그룹에 매핑할 수 있습니다.EKS 인증 흐름도워커 노드 당 Pod 개수 제한이 있습니다.예를 들어 c5.large 인스턴스에는 29개의 Pod을 띄울 수 있습니다. (표 참고) 그러므로 기존 클러스터에서 노드 당 Pod이 몇 개나 되는지 미리 확인할 필요가 있습니다. 왜 이런 제약이 있을까요?Kubernetes에서는 네트워킹 플러그인으로 Pod 사이에 네트워크 통신하는 방식을 다양하게 설정할 수 있습니다. EKS는 기본적으로 amazon-vpc-cni-k8s를 사용합니다. 이 네트워킹 플러그인은 VPC 상에서 유효한 실제 IP를 Pod에 할당합니다.그러기 위해서는 하나의 EC2 인스턴스에서 여러 개의 IP를 받아와야 하고, 이를 위해 추가적인 네트워크 인터페이스(ENI)를 붙입니다. 그런데 인스턴스 타입에 따라 추가할 수 있는 ENI 수와 ENI 당 IP 수에 제한이 있습니다. 따라서 이 제한이 워커 노드 하나에 띄울 수 있는 Pod 개수 제한이 됩니다.flannel 등 오버레이 네트워크 기반의 다른 네트워크 플러그인을 사용하면 이러한 제약을 피할 수 있습니다. 하지만 EKS에서 기본 제공하는 방법을 그대로 사용하는 것이 좋고, Pod을 엄청나게 많이 띄워야 하는 상황이 아니어서 시도하지 않았습니다.EKS로 중단 없이 넘어가기개요타다의 Kubernetes 클러스터에서 돌아가는 서비스들은 모두 영속적인(persistent) 상태를 가지고 있지 않습니다. 따라서 EKS 클러스터 위에 동일한 서비스를 띄우고 외부 트래픽을 옮겨주기만 하면 특별히 데이터를 옮기지 않고도 이전이 가능했습니다. 또한 거의 대부분의 Kubernetes 리소스는 Helm 차트로 생성한 것이기 때문에 새로운 클러스터에 동일한 서비스를 띄우는 작업도 쉽게 할 수 있었습니다.이전 작업은 다음과 같은 순서로 진행했습니다.EKS 클러스터를 만들고 워커 노드를 생성모든 서비스 다시 설치트래픽을 새 클러스터로 보내기이전 클러스터 제거EKS 클러스터를 만들고 워커 노드를 생성타다의 AWS 환경은 거의 모두 Terraform으로 정의되어 관리되고 있습니다. EKS 클러스터와 워커 노드도 HashiCorp Learn의 문서를 참고해서 Terraform으로 생성했습니다. 해당 문서에 설명이 잘 되어 있어서 거의 그대로 따라할 수 있었습니다.EKS 클러스터 설정은 재사용 가능하도록 Terraform 모듈로 만들었습니다. 덕분에 테스트용 클러스터와 실서비스용 클러스터를 동일한 모듈로 변수만 바꿔서 설정할 수 있었습니다.모든 서비스 다시 설치타다의 Kubernetes 리소스는 Helm 차트로 관리되고 있어서 기존 차트를 거의 그대로 설치할 수 있었습니다. 사용자에게 직접적인 영향을 덜 주는 워커 서비스를 먼저 설치해서 제대로 동작하는 것을 확인한 뒤, 마지막으로 프론트엔드 서비스를 설치하였습니다.트래픽을 새 클러스터로 보내기타다의 모든 트래픽은 NLB로 들어온 뒤 NGINX를 거쳐 다시 적절한 Pod에 라우팅됩니다. 그러므로 타다의 모든 도메인은 NLB를 가리키고 있습니다.타다는 Route 53을 DNS 서버로 사용합니다. Route 53에는 가중치 기반 DNS 레코드를 설정할 수 있습니다. 이를 이용하여 일부 트래픽만 새 클러스터의 NLB로 보낼 수 있습니다. 처음에는 아주 적은 트래픽만 새 클러스터로 보내다가 문제 없이 작동하는 것을 확인한 다음 조금씩 트래픽을 늘려나갔습니다.DNS 가중치 설정으로 일부 트래픽만 새 클러스터의 NLB로 보낼 수 있습니다.DNS 설정에서 이전 클러스터로 가는 레코드를 완전히 제거한 뒤에도, DNS 캐시 등의 이유로 일부 클라이언트가 이전 클러스터에 접속할 수도 있습니다. 따라서, 이전 클러스터 NLB에 새 클러스터의 노드들을 붙여서 아직 DNS를 따라오지 못한 클라이언트들의 요청을 처리하였습니다.이전 클러스터 제거가장 신나면서 조심해야 하는 작업입니다. 먼저 이전 클러스터로 트래픽이 전혀 들어오지 않는 것을 확인하였습니다. 그 다음에는 Terraform에서 이전 클러스터 리소스에 대한 참조를 제거한 뒤, terraform destroy 명령으로 이전 클러스터와 관련된 리소스를 한번에 삭제할 수 있었습니다.맺음말Kubernetes는 깔끔한 추상화를 통해 컨테이너 기반 배포를 간단하게 만들어주지만, 직접 클러스터를 관리해야 하는 부담이 있었습니다. Amazon EKS는 이러한 부담을 많이 덜어주는 좋은 서비스입니다. 앞으로 EKS의 무궁한 발전을 기원합니다.VCNC에는 오랫동안 쌓아온 AWS 인프라 운영 경험이 있습니다. 타다에서는 그동안의 경험과 비교적 최근에 시작한 프로젝트의 이점을 살려 컨테이너, Infrastructure as Code 등 업계 표준의 인프라 관리 방법론을 적극 도입하려고 노력하고 있습니다. 앞으로도 이에 관해 기술 블로그에 더 자세히 공유할 계획이니 기대해주세요. 또한 저희와 함께 안정적인 서비스를 만들어나갈 좋은 분들을 기다리고 있으니 VCNC 채용에도 많은 관심 부탁드립니다.
조회수 1283

[2018 하반기 채용] 현대글로비스의 채용담당자를 만나다!

모두가 기다리시던 현대글로비스 2018 하반기 채용이 시작되었습니다. 무작정 서류접수를 지원하려고 자기소개서를 보니, 앞이 캄캄하시죠? 현대글로비스 채용담당자와의 인터뷰를 통해 그 고민을 해결해보셨으면 합니다. 저는 인재지원팀에서 신입사원 채용을 담당하고 있는 박근우 사원입니다. 만나서 반갑습니다!Q. 지원 시 나이가 많아도 괜찮을까요? A. 나이는 숫자에 불과할 뿐 아무런 영향을 미치지 않습니다. 적극적으로 지원하고 도전하시기 바랍니다.Q. 물류 관련 전공자가 아니어도 괜찮을까요?  A. 현대글로비스에 관심과 열정을 갖고 계신 분이라면 누구나 지원이 가능합니다. 실제로 저희 회사에는 인문계열, 상경계열, 공학계열 등 정말 다양한 전공의 직원들이 근무하고 계시고요. 물류 관련 지식이 부족하시더라도 신입사원 입사 후 약 2개월 간의 업무 관련 교육과, 각 부서에 배치된 후 진행하는 트레이닝 과정을 통해 전문성을 함양시켜나갈 수 있으니, 두려워 마시고 지원해주시길 바랍니다.Q. 자격증은 얼마나 중요한가요?  A. 여러분들이 지원할 직무와 관련된 자격증은 가점으로 적용됩니다. 해당 직무에 대한 관심과 열정의 지표 중 하나이기 때문입니다. 다만 문어발식 자격증 취득은 도움이 안 됩니다. 따라서 본인이 지원할 회사와 직무에 관련된 충분한 조사와 연구를 선행하셔야겠죠? Q. 현대글로비스의 기업문화가 궁금합니다.  A. 가장 먼저 떠오르는 것은 조직이 젊고 진취적이며, 상호간의 의사소통이 유연하다는 것입니다. 실제로 직원 분들의 평균 연령대가 낮은 것도 있지만, 유연한 분위기를 조성하기 위해 매주 금요일 캐주얼데이를 도입하여 편하고 자유롭게 업무를 할 수 있도록 합니다. 또 스트레스가 쌓이면 아무래도 까칠해지겠죠? 저희는 일 할 때는 일 하되, 쉴 때는 또 확실히 쉴 수 있게 합니다. 그 일환으로 휴가제도가 굉장히 잘 마련되어 있어요. 연차와는 별개로 하기휴가가 제공되고요. 가족사랑휴가, 자기계발 휴가 등 리프레시 할 수 있는 기회가 많습니다.다음으로 떠오르는 글로비스만의 특징은, 본인이 희망할 시 해외로 나갈 수 있는 기회가 많다는 것입니다. 전 세계에 글로벌 네트워크를 보유하고 있는 만큼 해외 주재원에서 근무할 수 있는 기회가 많은데요. 실제로 저희 회사 직원 중 10%는 주재원에 나가있습니다. 신입사원만을 위한 프로그램도 있습니다. ‘루키 해외연수’가 대표적인데요. 선발대상자 분들은 직접 해외에 나가 사업 아이템을 개발하는 등 다양한 기회를 드리고 있습니다. 국내가 좁다고 느끼시는 분들은 현대글로비스에서 세계를 무대로 꿈을 펼쳐보세요!Q. 현대글로비스의 채용정보를 얻고 싶은데 가장 확실하고 좋은 방법이 무엇인가요? A. 아, 많은 분들이 홈페이지를 보거나 인터넷 커뮤니티 등을 통해 정보를 얻곤 하죠. 인터넷도 잘 되어있긴 하지만, 전 개인적으로 회사에서 진행하는 채용 홍보프로그램에 참석하시는 것을 추천 드립니다. 사옥초청 Job Fair, 캠퍼스리쿠르팅 등 참석하셔서 현직자와의 직무 멘토링이나 채용담당자와의 상담 등 보다 생생한 현장의 목소리를 들어보시길 바랍니다! Q. 현대글로비스 채용 절차에 대해 설명해주세요.   A. 대졸 신입사원 공채의 경우서류접수 -> 인적성검사 -> 1차면접(실무) -> 2차면접(임원) -> 채용검진 -> 최종입사의 과정을 거치게 됩니다. 3-4개월의 과정을 겪게 되기 때문에 긴 호흡과 끈기를 가지고 도전하시기 바랍니다.서류접수는 기본 이력부문과 자기소개서 항목으로 구성되어 있습니다.기본이력 부문은 본인의 기본적인 인적사항(휴대폰번호, 이메일, 주소 등), 학력사항(학교, 학점), 그리고 경험이나 자격사항을 입력하게 됩니다. 이와 관련하여 추후 면접전형에서 증빙서류를 제출해야 합니다. 따라서 증빙서류와 작성한 부분이 일치하는 지 꼼꼼하게 확인한 후에 최종제출을 해야 합니다.자기소개서는 보통 3~4문항 정도로 구성되는데 깊게 고민하신 후 작성해주세요. 기본적인 회사에 대한 관심과 직무에 대한 분석을 바탕으로 본인에 대한 진정성 있는 소개, 그리고 질문에 맞는 답변을 작성하시면 됩니다. 여러분들이 정성스럽게 작성해주신 자기소개서는 인사담당자뿐만 아니라 실무자도 함께 꼼꼼히 읽어보고 교차 평가를 하게 됩니다.서류 합격 후에는 인적성검사(HMAT)를 응시하게 됩니다. 서류합격 후 준비의 시간이 충분치 않기 때문에 미리미리 유형과 문제에 적응하는 것이 좋습니다. 인성유형에 있어서는 큰 부담없이 본인에 대해 솔직하고 진정성 있게 답변하는 것이 좋습니다.면접전형은 크게 1차 실무면접과 최종 임원면접으로 나뉩니다. 실무면접에는 추후 여러분과 같이 일할 선배 직원들이 면접관으로 참여합니다. 나의 어떤 점이 조직 내에서 함께 일하고 싶은 사람으로 비춰질지, 그리고 지원한 직무에 있어서 본인이 어떤 강점들을 갖고 있는지 정리해 보세요. 기본적으로 면접은 지원자의 인성(태도, 가치관)과 직무역량을 평가하는 것인데요. 면접용 멘트를 외우시기보다는, 말씀 드린 ‘인성’과 ‘직무’라는 2가지 기둥을 바탕으로 본인에 대한 분석을 평소 꾸준히 하시길 바랍니다.본인에 대한 충분한 고찰과 회사에 대한 관심과 입사의지, 열정을 보여주신다면 면접전형에 있어 좋은 결과를 기대하실 수 있을 것입니다.  Q. 혹시 예비 글로비스인들에게 해주고 싶은 말이 있나요?   A. 취업을 본격적으로 준비하기 전에 “삶을 어떻게 살아가고 싶은지” 등 삶의 방향에 대해 깊게 생각을 해 보고 취업을 하셨으면 좋겠어요. 취업이라는 목표를 설정하셨다면 “어떤 직장에 다니고 싶은지”, “어떤 업에 종사하고 싶은지, 어떤 직무가 나와 잘 맞을지” 진지하게 고민하고 다양한 채널을 통해서 적극적으로 조사해본 후 도전하세요!저 역시 몇 년 전 취업준비를 하며 여러분들과 비슷한 어려움을 겪었습니다. 취업에 도전하면 자연스럽게 “서류전형 탈락”, “면접전형 탈락” 등 수많은 실패를 경험하게 되죠. “귀하의 역량은 뛰어나지만~”으로 시작되는 불합격통보를 받으면 자존감도 낮아지고, 감정 소모를 많이 하게되죠. 그래도 본인이 최고라는 자신감과 당당함은 절대 잃으시면 안 됩니다. 자신에게 주어진 상황과 문제를 현실적으로 인식함과 동시에 좋은 결과가 있을 거라는 긍정적인 마음가짐을 갖는다면, 원하는 목표를 반드시 이루실 수 있을 겁니다. 현대글로비스에도 많은 관심을 갖고 지원해주세요! 같은 공간에서 함께 일할 날을 기대하고 있겠습니다.어떤가요, 좀 도움이 되셨나요? 여러분 힘내시고 언제나 행복하시길 기원합니다. 현대글로비스에서 만나요!#현대 #현대그룹 #현대글로비스 #채용담당자 #채용정보 #직무정보 #구성원인터뷰 #기업문화 #조사내문화 #공채정보
조회수 4868

웹서버 로그 수집과 모니터링 설정

우리는 고객이 무엇에 관심 있어 하고 무엇에 관심 없어하는지, 어떤 것을 보았을 때 클릭해 들어가고 어떤 것을 보았을 때 사이트에서 이탈하는지 궁금해 합니다. 이러한 정보를 얻기 위해 봐야 할 것은 역시 웹서버의 접속 로그입니다.처음에는 매일 생성되는 로그 파일을 일일이 파싱해서 원하는 정보를 DB에 쌓는 방법을 이용했지만, 이러한 방식은 한계가 있었습니다. 저장할 수 있는 데이터의 양에 심각한 제한이 있었고, 따라서 처음에 얻고자 했던 데이터 이상의 것을 새로 추출할 수도 없었습니다.그래서 지금은 웹서버 로그를 하둡(Hadoop) 클러스터에 쌓고 있습니다. Google Analytics 같은 외부 분석툴을 사용하기도 하지만, 아무래도 데이터를 우리 손에 직접 들고 있는 것이 더 유연한 분석을 제공할 수 있지요. 클러스터에서 로그를 분석하려면 가장 먼저 로그 수집 시스템을 만들어야 합니다.이번 포스팅에서는 이 로그 수집 시스템이 어떻게 만들어져 있는지, 그리고 그보다 더 중요한 시스템의 모니터링을 어떻게 하고 있는지 설명하려고 합니다.Flume 에이전트 설정하기Apache FlumeApache Flume은 로그와 같은 데이터의 흐름(streaming)을 제어할 수 있게 해주는 도구입니다. 단순하면서도 확장성 높은 구조로 되어 있기 때문에 많은 시스템에서 채택하는 도구가 되었고, 리디북스에서도 Flume 을 사용하게 되었습니다.Flume 의 기본 구조는 단순합니다.기본적인 에이전트 구성 (이미지 출처: Apache Flume 홈페이지)에이전트(agent)는 Source, Channel, Sink 로 이루어진 자바 프로세스이다.소스(source)는 외부에서 이벤트를 입력받아 채널(channel)로 전달하고, 채널은 이벤트를 저장하고 있다가 싱크(sink)로 전달한다. 싱크는 이벤트를 외부로 출력한다.한 에이전트의 Sink와 다른 에이전트의 Source가 같은 타입이면, 에이전트 간에 이벤트를 전달할 수 있다.굉장히 간단하지만 강력한 모델입니다. Flume 은 Avro, Thrift, Exec, HDFS, Kafka 등 다양한 라이브러리를 적용한 소스와 싱크를 미리 제공하고 있기 때문에, 사용자는 자기 입맛에 맞게 이를 조합해서 시스템을 구성할 수 있습니다.예를 들면 아래와 같습니다.좀 더 복잡한 에이전트 구성 (이미지 출처: Apache Flume 홈페이지)초기 에이전트 구성: Avro를 통해 클러스터에 로그 전송저희가 맨 처음 설정한 Flume 에이전트의 구성은 다음과 같습니다.초기 에이전트 구성각 웹서버ExecSource: exec 명령으로 실행된 프로세스의 표준 출력을 이벤트로 입력받음. (tail -F <로그파일>)MemoryChannel: 메모리상의 큐(queue)로 구현된 채널AvroSink: 클러스터에 상의 에이전트가 실행하는 Avro RPC 서버로 이벤트를 전송하둡 클러스터AvroSource: 웹서버의 에이전트가 Avro RPC 로 보내는 이벤트를 수신MemoryChannelHDFSSink: HDFS 상의 지정된 경로의 파일에 이벤트 내용을 출력각 웹서버에는 에이전트가 하나씩 실행되어서, 로그 파일에 새로 추가되는 로그를 클러스터에 전송합니다. 클러스터 상의 에이전트는 단 한 개 존재하는데, 웹서버로부터 전송받은 로그를 HDFS(Hadoop File System) 에 파일로 출력하는 역할을 합니다. 웹서버 에이전트와 클러스터 에이전트 간의 통신은 Avro RPC 로 하게 하였습니다. Flume 에서 기본적으로 AvroSource 와 AvroSink 를 구현하여 제공해 주는 것을 이용했습니다.사실은 클러스터 상의 에이전트가 Avro 서비스를 통해 데이터를 모아 주지 않고, 웹서버 상의 에이전트가 HDFSSink 를 이용해서 직접 클러스터에 파일을 쓰게 하더라도 대부분의 경우는 상관없습니다. 하지만 리디북스의 경우는 그렇게 할 수 없었는데, 왜냐하면 웹서버와 하둡 클러스터가 서로 다른 네트워크 상에 있기 때문입니다.리디북스의 웹서버는 국내 IDC에 존재하지만 하둡 클러스터는 Miscrosoft Azure 클라우드 내의 가상머신으로 실행되고 있습니다. 따라서 하둡의 네임노드(namenode)가 인식하는 각 노드의 사설 IP 주소를 웹서버들이 쉽게 접근할 수 없습니다. 이를 우회하는 다양한 방법을 시도해 보았지만 최종적으로는 Avro 서비스를 중간에 두어 해결하였습니다.모니터링 알람 설정하기JSON 리포팅 사용다음은 에이전트 프로세스를 모니터링하는 문제가 있었습니다. 예기치 않은 에러로 에이전트가 종료되어서 로그가 수집되지 않고 있는데 며칠 동안 모르고 있어서는 안되겠지요.Flume 에서는 모니터링 인터페이스도 여러가지를 제공하고 있는데, 그 중 가장 이용하기 간편한 것은 HTTP 를 통한 JSON reporting 이었습니다. 에이전트 자체가 HTTP 서비스로 작동해서, 특정 포트로 요청을 보내면 에이전트의 상태를 JSON 으로 정리하여 응답을 주게 되어 있습니다. 에이전트 실행시에 옵션 몇 개만 추가하면 바로 설정할 수 있기 때문에 매우 간단합니다.Health 페이지를 이용한 모니터링그런데 이 리포팅이 제대로 나오지 않으면 어떻게 알림을 받을 수 있을까요? 각 서버마다 JSON 리포팅을 요청해서 응답이 제대로 오지 않으면 이메일을 보내는 스크립트를 만들어서 cron 으로 5분마다 실행하는 방법도 있습니다. 하지만 이 스크립트가 제대로 동작하지 않거나, 이게 실행되는 서버가 다운되면?결국 스스로를 믿지 못하고 택한 방법은 외부 서비스 Pingdom을 이용하는 것이었습니다. 단, 외부 서비스가 각각의 웹서버에 직접 접근하여 리포팅을 요청하는 방식은 보안상 문제가 될 수 있어서 아래와 같이 보완하였습니다.웹 서비스 상에 health 페이지 구현. 이 페이지는 각 웹서버의 에이전트의 JSON reporting 포트로 요청을 보내서, 결과를 종합해서 다시 JSON 으로 보여줌.모든 에이전트가 정상적으로 리포트를 보내면 {“status”: “OKAY”} 를, 아니면 {“status”: “ERROR”} 를 보여줌.이 health 페이지의 내용을 모니터링하도록 Pingdom 설정. {“status”: “OKAY”} 가 응답에 없으면 알람 메일이 오도록 함.{ "status": "OKAY", "metrics": { "192.168.0.101": { "SOURCE.log_src": { ... }, "SINK.avro_sink": { "BatchCompleteCount": 562110, "ConnectionFailedCount": 294, "EventDrainAttemptCount": 56246850, "ConnectionCreatedCount": 31, "Type": "SINK", "BatchEmptyCount": 16, "ConnectionClosedCount": 30, "EventDrainSuccessCount": 56243927, "StopTime": 0, "StartTime": 1459135471379, "BatchUnderflowCount": 610 }, "CHANNEL.mem_channel": { ... } }, "192.168.0.102": { ... } } }Health 페이지의 Json내용JSON 리포팅의 문제이렇게 설정해 놓고, 며칠간 로그가 HDFS 상에 잘 수집되는 것을 확인하고 만족해 했습니다. 그런데 며칠간 신경을 쓰지 않은 사이, 다시 에이전트를 확인해 보니 모든 웹서버 에이전트가 죽어 있었습니다. HDFS에 로그도 쌓이지 않았구요.확인해 보니, MemoryChannel 의 설정 문제였습니다. byteCapacity 값을 실수로 너무 작게 설정해서, 채널 큐가 메모리 부족으로 터져나간 것이죠. 해당 문제는 byteCapacity 값을 늘려서 간단하게 해결했습니다.문제는 알람이 오지 않았다는 것이었습니다. 문제를 재현해 본 결과, 채널이 터져서 에이전트 실행이 중단되어도, 에이전트 프로세스는 죽지 않고 ExecSource 에서 실행한 자식 프로세스(tail -F)만 죽어 있었습니다. 이렇게 되면 JSON 리포팅도 정상적으로 나오기 때문에, 결국 JSON 리포팅으로는 이런 유형의 에러를 잡지 못한다는 결론이 나왔습니다.클러스터에 모니터링 설정하기결국 웹서버상에서 모니터링하는것 보다는 데이터를 최종 전달받는 하둡 클러스터 상에서 모니터링하는 것이 안정적이라 판단하였습니다. 다행히도, 하둡 클러스터에서 사용할 수 있는 꽤나 좋은 모니터링 도구가 이미 있었습니다.CDH 의 알람 트리거리디북스에서는 기본 하둡 패키지가 아닌, Cloudera에서 제공하는 하둡 배포판인 Cloudera CDH를 사용하고 있습니다. CDH는 클러스터 상에서 사용되는 서비스마다 각종 테스트를 자동으로 실행하여, 테스트가 통과되지 않을 때마다 메일로 알람을 보내줍니다. 그리고 웬만한 필수 테스트는 기본적으로 설정되어 있지만, 사용자가 커스텀 서비스를 직접 제작할 수도 있습니다. CDH가 각 에이전트의 소스, 채널, 싱크마다 초당 전송한 이벤트 개수 등의 측정치(metric)을 모두 기록하고 있기 때문에, 이 값들이 일정 수준 이상/이하가 될 때마다 알람이 트리거되도록 설정할 수 있습니다.CDH의 알람 트리거 편집 화면웹서버마다 알람 설정하기그런데 이것으로 끝이 아닙니다. 클러스터 에이전트는 각 서버에서의 트래픽이 모두 모이는 곳이기 때문에, 여기에서 모니터링을 하는 것은 웹서버 상에서 모니터링하는 것보다 기준이 애매해집니다.10대의 웹서버 중에 한 대만 문제가 생겼을 경우, 클러스터 에이전트가 받는 트래픽은 0으로 줄어드는 것이 아니라 90%로 줄어듭니다. 알람을 트리거하는 역치(threshold)를 평소 트래픽의 90%로 잡아야 한다는 것이지요. 그런데 트래픽이라는 것이 원래 날짜와 시간에 따라 달라지기 때문에, 이 역치값을 고정된 값으로 정할 수가 없습니다. 트래픽이 높은 때를 기준으로 하면, 트래픽이 낮아지는 새벽 시간마다 가짜 알람(false alarm)이 오게 되겠지요. 그렇다고 트래픽이 낮은 때를 기준으로 하면, 트래픽이 높은 때 웹서버 에이전트가 죽더라도 새벽이 될 때까지 알 수 없습니다.결국 클러스터 단에서도 각 웹서버마다 트래픽을 구분해 주어야 한다는 결론이 나옵니다. 다행히 한 에이전트가 여러 개의 채널과 싱크를 가질 수 있고, 이벤트 헤더의 내용에 따라 소스가 어느 채널로 이벤트를 보낼지 결정해 주는 채널 셀렉터 (Channel Selector)라는 것이 있습니다.웹서버 에이전트의 소스에서는 각 이벤트 헤더에 자기 호스트명을 달아 준다. (Interceptor 는 각 이벤트에 원하는 헤더를 달아주는 역할을 한다. HostInterceptor 이용)클러스터 에이전트는 1개의 소스와, 웹서버 대수만큼의 채널 및 싱크가 있다.클러스터의 소스는 이벤트의 host 헤더를 보고 그에 해당하는 채널로 이벤트를 전달한다. (MultiplexingSelector 사용)각 채널은 자신에게 대응되는 싱크에 이벤트를 전달하고, 싱크는 각자의 HDFS 경로에 이벤트를 파일로 출력한다.최종 에이전트 구성: 채널 셀렉터로 트래픽 나누기최종적으로 나온 에이전트의 구성은 다음과 같습니다.최종 에이전트 구성그리고 에이전트 설정 파일은 아래와 같이 작성했습니다.... log_to_avro.sources.log_src.type = exec log_to_avro.sources.log_src.command = tail -F /path/to/log/file log_to_avro.sources.log_src.restart = true log_to_avro.sources.log_src.channels = mem_channel log_to_avro.sources.log_src.interceptors = ts_ic host_ic # 호스트 인터셉터 설정 log_to_avro.sources.log_src.interceptors.ts_ic.type = timestamp # 이벤트 헤더에 timestamp 삽입 (날짜별 구분을 위해) log_to_avro.sources.log_src.interceptors.host_ic.type = host # 이벤트 헤더에 호스트명 삽입 (호스트별 구분을 위해) log_to_avro.sources.log_src.interceptors.host_ic.useIP = true # 호스트명 대신에 IP 사용 log_to_avro.channels.mem_channel.type = memory log_to_avro.channels.mem_channel.capacity = 10000 log_to_avro.channels.mem_channel.transactionCapacity = 10000 log_to_avro.channels.mem_channel.byteCapacityBufferPercentage = 20 log_to_avro.channels.mem_channel.byteCapacity = 10485760 log_to_avro.sinks.avro_sink.type = avro log_to_avro.sinks.avro_sink.channel = mem_channel log_to_avro.sinks.avro_sink.hostname = hostname.of.cluster.agent log_to_avro.sinks.avro_sink.port = 4141 ...웹서버 에이전트 설정파일... avro_to_hdfs.sources.avro_src.type = avro avro_to_hdfs.sources.avro_src.bind = 0.0.0.0 avro_to_hdfs.sources.avro_src.port = 4141 avro_to_hdfs.sources.avro_src.channels = c_101 c_102 avro_to_hdfs.sources.avro_src.selector.type = multiplexing # Multiplexing Selector 설정 avro_to_hdfs.sources.avro_src.selector.header = host # 호스트 이름으로 채널 나누기 avro_to_hdfs.sources.avro_src.selector.mapping.192.168.0.101 = c_101 # 192.168.0.101 에서 온 이벤트는 c_101 채널로 avro_to_hdfs.sources.avro_src.selector.mapping.192.168.0.102 = c_102 # 192.168.0.102 에서 온 이벤트는 c_102 채널로 # 채널 c_101 설정 avro_to_hdfs.channels.c_101.type = memory avro_to_hdfs.channels.c_101.capacity = 10000 avro_to_hdfs.channels.c_101.transactionCapacity = 10000 avro_to_hdfs.channels.c_101.byteCapacityBufferPercentage = 20 avro_to_hdfs.channels.c_101.byteCapacity = 10485760 # 싱크 k_101 설정 avro_to_hdfs.sinks.k_101.type = hdfs avro_to_hdfs.sinks.k_101.channel = c_101 avro_to_hdfs.sinks.k_101.hdfs.fileSuffix = .log.gz avro_to_hdfs.sinks.k_101.hdfs.path = hdfs://namenode/path/to/logs/dir/%Y%m%d/%{host} # 날짜별, 호스트별로 다른 디렉토리에 avro_to_hdfs.sinks.k_101.hdfs.rollSize = 104857600 avro_to_hdfs.sinks.k_101.hdfs.rollInterval = 7200 avro_to_hdfs.sinks.k_101.hdfs.rollCount = 0 avro_to_hdfs.sinks.k_101.hdfs.fileType = CompressedStream avro_to_hdfs.sinks.k_101.hdfs.codeC = gzip # 채널 c_102 설정 avro_to_hdfs.channels.c_102.type = memory avro_to_hdfs.channels.c_102.capacity = 10000 avro_to_hdfs.channels.c_102.transactionCapacity = 10000 avro_to_hdfs.channels.c_102.byteCapacityBufferPercentage = 20 avro_to_hdfs.channels.c_102.byteCapacity = 10485760클러스터 에이전트 설정파일p.s. Flume 설정 파일은 변수 또는 외부 파일 include 등을 지원하지는 않아서, 위와 같이 반복되는 설정을 여러 번 써 주어야 합니다.호스트마다 CDH 알람 트리거 설정그리고 CDH 상에서도 웹서버 호스트의 개수만큼 알람 트리거를 만들어 줍니다. 초당 이벤트 개수가 0에 가깝게 떨어지면 알람이 오도록 해 주면 됩니다. 채널/싱크 중 어느 것을 기준으로 해도 크게 상관은 없는데, 저희는 싱크가 초당 이동완료한 이벤트 개수를 기준으로 했습니다.CDH에서의 알람 트리거 상태 화면이렇게 해 놓으면 또 한가지 좋은 점은, CDH가 알아서 차트를 그려 주기 때문에, 웹서버마다 트래픽 추이를 한눈에 볼 수 있다는 것입니다.HDFSSink의 초당 이벤트 개수 그래프맺음말지금까지 Apache Flume 과 CDH 를 사용해 로그 수집 시스템을 구성하고 모니터링을 설정한 후기를 살펴 보았습니다. 이 과정에서 느낀 점들을 한번 정리해 보겠습니다.첫째, 일견 간단해 보이는 기능이었지만 의외로 많은 시행착오를 거쳐야 했습니다. 아무리 간단해 보이더라도 각자의 상황에 맞추어 시스템을 설계하는 데에는 그에 맞는 고민을 거쳐야 합니다.둘째, 처음에는 로그가 일단 수집되게 하는 것이 가장 중요하다고 생각했는데, 실제로 겪어보니 모니터링이 훨씬 어렵고 중요한 문제라는 것을 알게 되었습니다. 어떤 기능이 일단 실행되도록 설정을 해 놓더라도, 그것이 매일 문제없이 실행됨을 보장받는 것은 또 다른 문제입니다.셋째, Health 페이지와 Pingdom을 이용한 웹서버 측의 모니터링은 JSON 리포팅의 문제 때문에 큰 쓸모가 없게 되었습니다. 하지만 꽤 유용한 테크닉이라는 생각이 들고, 어딘가에서는 비슷하게 이용할 수 있을 것 같습니다.마지막으로 CDH 쓰면 좋습니다. 많은 것들이 편해집니다.P.S. 리디북스 데이터팀에서는 이러한 로그 시스템을 함께 고민하고 만들어나갈 분들을 찾고 있습니다. 많은 관심 부탁드립니다.#리디북스 #개발 #서버 #서버개발 #모니터링 #로그 #Flume #CDH #로그수정 #인사이트
조회수 341

엔젤투자란 무엇인가요?

엔젤투자란 무엇인가요? 날개 없는 천사, 엔젤투자자 엔젤투자란, 아이디어 혹은 기술력이 있으나 자금이 부족한 예비창업자나 초창기 창업기업에 투자하고 기업을 성장시킨 후에 이익을 회수하는 투자를 지칭하며, 이러한 엔젤투자를 진행하는 투자자를 엔젤투자자라 합니다. 투자한 기업이 성공적으로 성장하여 기업가치가 올라가면 큰 이득을 얻을 수 있으나 실패할 경우에는 투자액의 대부분을 손실로 입게 됩니다. 스타트업 입장에서는 ‘죽음의 계곡’이라 불리우는 창업 초기 단계를 이겨낼 수 있도록 도와주는 천사같은 투자자라 하여 엔젤 투자자라는 이름이 붙여지게 되었습니다. 자금 지원부터 경영 자문까지, 스타트업의 구원자  일반적으로 개인, 또는 자금력이 있는 개인들이 모인 투자클럽(엔젤클럽)이 투자 주체가 되어 스타트업의 미래 가능성을 보고 투자를 하게 되는데 자금 지원뿐만 아니라 투자자 자신의 전문 지식을 토대로 한 경영 자문을 통하여 스타트업이 성장할 수 있도록 도와주고, 이를 통해 기업 가치가 상승하였을 때 지분을 매각하는 방식으로 수익을 실현합니다. 엔젤투자자는 기업을 성공적으로 매각한 경험이 있는 기업인, 기업 M&A나 IPO를 통해 돈을 번 사람, 대기업 경영진 출신 들이 주류를 이루고 있으며 개인의 자금을 활용하여 투자하기 때문에 통상적으로 기업 당 5천만원 내외의 투자를 진행하곤 합니다.최근 관련 기관의 통계에 따르면 엔젤투자자의 개인 평균 투자금액은 약 4천만원, 기업 평균 피투자금액은 1.5억정도로 이루어지고 있으며, 투자를 받는 기업의 평균적인 업력은 1.2년인 것으로 조사되었습니다. 이는 초기 스타트업에 투자하는 엔젤투자의 보편적인 형태를 잘 드러낸다고 볼 수 있겠습니다. 꼭꼭 숨은 엔젤투자자? 엔젤투자자의 개념은 알겠는데 도대체 ‘누가 엔젤투자자라는 것인지, 주변에는 좀처럼 찾아볼 수 없는 것 같은데’라며 긴가민가한 분들도 있을 것입니다. 물론 묵묵히 은둔 고수처럼 활동하고 있는 여러 엔젤투자자가 있겠지만, 그중 대표적으로 공인된 전문엔젤투자자 두 분을 소개해드리려 합니다. [‘다음’의 공동창업자에서 액셀러레이터까지] 대한민국에서 인터넷을 사용하는 사람이라면 누구나 알고 있는 다음커뮤니케이션의 공동창업자였던 이택경 대표는 현재 ICT분야 액셀러레이터인 매쉬업엔젤스의 대표로 활약하고 있습니다. 벤처인 1세대로서 인터넷 시대를 연 이택경 대표는 국내 1호 액셀러레이터인 프라미어의 공동대표를 거쳐 현재 매쉬업엔젤스 대표 파트너로서 후배 벤처인 양성에 힘쓰고 있습니다. 전문엔젤투자자 1호이기도 한 이택경 대표는 본인의 창업시절 겪었던 착오를 후배들이 겪지 않을 수 있도록 금전적인 투자자는 물론 실질적인 도움을 주며 말그대로 ‘천사’ 투자자의 역할을 하고 있습니다.  [미래를 위한 회사를 만들다] 서울과학고등학교, 카이스트 박사, 인텔 상무라는 탄탄대로를 걷고도 차세대 테크 스타트업을 돕기 위해 퓨처플레이를 창업한 류중희 대표는 위의 이택경 대표와 같은 1호 전문엔젤투자자입니다. 25세 때 처음으로 창업 전선에 뛰어든 류중희 대표는 두번째로 창업한 사물/인물인식기술 회사 올라웍스를 350억원에 인텔에 매각한 경험이 있습니다. 인수 후 2년 간 인텔에서 상무로 근무한 류중희 대표는 본인의 경험을 살려 테크 전문 액셀레러이터 퓨처플레이를 설립하고 현재는 AI, 사물인터넷(IoT), 뇌과학, 빅데이터 분야 스타트업을 집중적으로 지원하고 있습니다. 위의 사례에서 보듯 엔젤투자자란 금전적인 투자와 그 회수만을 목적으로 하는 단순 투자자가 아니라, 본인의 경험과 노하우를 살려 이제 막 성장을 시작한 스타트업을 다방면으로 지원하고 기업을 함께 만들어 나가는 진정한 멘토라고 볼 수 있겠습니다. 활력을 더해가는 엔젤투자 엔젤투자는 최근 수년간 그 규모가 지속적으로 성장하고 있습니다. 현재 공식적으로 등록된 전문엔젤투자자는 약 130여명이며 이 수치는 정부의 등록 요건 완화 및 시장 활성화 방안을 통해 크게 늘어날 전망입니다. 엔젤클럽은 215개로, 연말까지도 꾸준히 신규 설립되며 벤처열풍이 거셌던 2003년 이후 최대를 기록할 전망입니다. 개인 투자자들의 투자금액도 지속적으로 증대되고 있음을 확인할 수 있는데요, 소득공제를 신청한 투자금액을 바탕으로 추산한 엔젤투자 규모는 2016년 약 2,100억원, 2017년 약 2,800억원에서 2018년에는 약 4,000억원으로 큰 폭의 증가세를 보이고 있습니다. (자료 : 엔젤투자지원센터) 이렇게 엔젤투자는 정부의 적극적인 규제 완화, 세제 지원과 투자 지원 사업으로 인해 점점 활기를 띠고 있습니다. 여러가지 엔젤투자 활성화 정책 중에서도 투자자들이 주목하고 꼭 챙겨야할 부분이 있는데요, 바로 소득공제와 엔젤투자매칭펀드입니다. 다음 포스팅을 통해 두가지 혜택에 대하여 좀더 자세하게 설명을 드리도록 하겠습니다.  
조회수 3886

[어반베이스 인턴일기] 전공의 벽을 뚫어낸 능력자들

                                                      ‘전공무관’. 많은 채용 사이트에서 볼 수 있는 이야기죠. 하지만 채용공고만 그렇지, 막상 개발이라면 컴퓨터 공학을 전공해야 할 것 같고, 마케팅이라면 경영을 전공해야 할 것만 같습니다. 하지만 어반베이스의 개발 인턴들은 컴퓨터공학을 전공하지 않았고, 마케팅 인턴도 경영학을 전공하지 않았다는 사실! 우리는 어떻게 어반베이스를 알게 되어 어반베이스를 선택하게 되었을까요? 이제 들어온 지 한 달, 타운홀 미팅을 통해 정식으로 인사도 드렸으니 진정한 어반베이스의 식구가 되었습니다. 한달 간 느낀 인턴들의 솔직한 이야기를 만나보세요!※ 타운홀이란 ? 매달 1회 전직원이 모여 자유로운 주제로 소통하고 네트워킹하는 어반베이스만의 토론 문화 Pt 0. 자기 소개 및 하는 일 왼쪽부터 민진, 수민, 윤아마케팅부문 인턴 _ 민진 (컨텐츠 제작)건축공학을 전공하고 마케팅 부문 인턴이 되었다.어반베이스의 SNS들을 관리하고, 그에 맞는 컨텐츠를 제작, 그리고 이번에 열리는 어반스니커즈 컨퍼런스의 진행을 돕고 있다.개발부문 인턴 _ 수민 (3D 도면변환)건축학을 전공하고 개발부문 인턴이 되었다. 지금은 3D로 변환된 도면을 산업에서 쓸 수 있도록 다양한 3D 포맷으로 바꾸는 일을 한다. 개발부문 인턴 _ 윤아 (머신러닝)생체의공학을 전공하고 개발부문 인턴이 되었다.공간을 찍으면 공간이 어느 곳인지 인식하여 분류해주는 작업이다. 머신러닝과 딥러닝을 사용해서, 연령, 성별, 취향 등으로 공간을 세분화하여 그 공간에 맞는 제품을 추천해주는 시스템까지 계획하고 있다Pt 1. 선택Q. 어반베이스의 인턴 셋은 모두 전공과 다른 길을 가고 있네요. 어떻게 선택하게 된 길 인가요?전공과 맞지 않음을 깨달은 인턴 3人수민 : 전공이 건축이잖아요. 그런데 설계에 대한 회의가 들었어요. 그리고 VR에 관심이 생겼고, 그래서 프로그래밍을 배우게 됐어요.윤아 : 생체의공학과는 주로 배우는 분야가 하드웨어 쪽에 가까워요. 근데 저는 하드웨어 쪽은 잘 안 맞는 것 같더라고요. 전자공학과를 복수 전공하면서 프로그래밍 수업을 듣다가 프로그래밍을 이용한 데이터 분석에 흥미를 갖게 됐어요. 민진 : 취직 준비를 하면서 느꼈는데, 건축업계 자체가 굉장히 폐쇄적이고 수직적이고 보수적인 문화를 가지고 있더라고요. 그런 곳에서 잘 적응하지 못할 것 같아 건축이라는 전공을 살려 할 수 있는 다양한 길을 찾아 봤고, 그런 과정 중에 어반베이스를 알게 됐어요.Q. 그렇다면 왜 어반베이스를 선택했나요? 윤아 : 데이터 사이언스 쪽으로 일자리를 찾다가 알게 됐어요. 수치나 텍스트 데이터를 사용해서 분석하는 공부를 많이 해서, 이미지 데이터를 사용하는 분야도 배우고 싶었는데, 어반베이스에서 그런 일을 하더라구요.수민 : VR에 관심이 있었고, 회사가 하는 일이 건축 전공이라면 잘 맞을 것 같아서 선택했고, 와서 겪어보니 실제로도 그런 것 같아요. 채용공고나 블로그에서 봤던 회사의 복지나 비전도 선택에 큰 영향을 미쳤죠. 민진 : 건축을 베이스로 하는, 4차 산업혁명의 흐름을 직접 느낄 수 있는 회사에서 일을 하고 싶었어요. 그래서 무모하지만 과감하게 마케팅 팀에 지원을 했습니다. 수민님에게 큰 영향을 주었다는 어반베이스의 꿀복지!Q. 대기업이 아닌 스타트업을 생각했던 이유가 있나요? 윤아 : 대기업의 획일화 된 채용 시스템이 싫었어요. 딱딱하고, 틀에 박혀있는 그런 형식들이요.민진 : 저두요. 그리고 저는 스타트업에서 일을 하면 바로 실무를 할 수 있다고 해서 욕심이 났어요. 바로 일을 해보고 싶었거든요.Q. 전에 일을 하신적이 있나요? 실제로 일을 해보니 어떤가요?수민 : 실무를 하는 것은 처음이에요. 저는 3D로 변환된 도면을 산업에서 쓸 수 있도록 다양한 3D 포맷으로 바꾸는 일을 해요. 설계할 때는 3D 툴을 직접 다루는 입장이었는데 지금은 파일만 다루니 생소하긴 하네요. 부담되기도 하지만, 사람들에게 많이 물어보거나 정보를 알아서 흡수하려고 해요. 3D 도면변환을 담당하고 계신 수민님윤아 : 마찬가지로 실무는 처음이에요. 저는 머신러닝 쪽인데, 쉽게 말해서 공간을 찍으면 공간이 어느 곳인지 인식하여 분류해주는 작업이에요. 일단 아직은 배우는 중이라 그런지 일이 재미있어요. 시간이 빨리 가는건 재밌다는 거 아닐까요? 사실 사수가 있을 줄 알았는데 없어서 되게 막막했어요. 가끔 일 하다가 막힐 때가 있는데, 모르는 것은 다른 분들에게 물어보기도 하고, 구글링하거나 다른 책을 찾아보기도 해요. 머신러닝 부분의 윤아님민진 : 타 회사에서 설계 관련 인턴을 했었어요. 마케팅 실무는 처음이라 모든 것이 새로워요. 채용공고와 면접에서 SNS 콘텐츠 기획 및 제작을 주로 맡게 될 거라고 했고, SNS나 블로그를 운영하고 있어서 자신이 있었어요. 그래도 확실히 실무는 다르더라고요. 사수분이 잘 가르쳐 주시는 덕에 잘 적응하고 있어요. 내 손으로 직접 무언가를 기획하고 컨텐츠를 제작한다는 것이 굉장히 재밌어요!SNS에 올라가는 컨텐츠를 만들고컨퍼런스 관련 컨텐츠를 제작하고 업무를 서포트 하고 있는 민진님Pt 2. 어반베이스의 첫 인상<인턴들이 뽑은 어반베이스의 좋은 점>1.윤아 : 사람들이 친절해요.민진 : 맞아, 뭐든 물어보면 되게 친절하게 알려주세요.2.민진 : 아, 그리고 유연 근무제 너무 좋아요. 아침에 지각하지 않으려 뛰지 않아도 되고, 사정이 있으면 빨리 퇴근할 수도 있고.수민 : 금요일에 2시에 퇴근하시는 분들도 많이 있어요. 짱이에요. 9시 13분, 사무실 풍경. 자율적으로 조절하는 업무 스케줄3. 수민 : 또, 식대 8000원! 선릉 맛집 점령! 이 정도면 굉장히 넉넉하지 않나요? 어반베이스 단체방에 올라오는 점심 사진들. 넉넉함 인정4.윤아 : 무제한 맥주가 있는 것, 그리고 근무시간에 먹어도 된다는 것! 민진 : 커피도 무제한이잖아요. 심지어 맥주, 커피 모두 밖에서 사먹는 것보다 맛있어요.사진 출처 : 스파크플러스Q. 반면, 당황했던 부분이나 힘들었던 점도 있나요?민진 : 저는 처음에 ‘ㅇㅇ님’ 이라고 부르는 것이 너무 어색했어요. 전에 하던 알바와 인턴, 모두 직급체계가 확실한 곳이었거든요. 근데 이젠 다 적응해서 아무렇지도 않아요.Pt. 3 채용 과정Q. 어반베이스를 어떻게 알게 됐어요? 수민 : 로켓펀치와 원티드에서 알게 됐어요. 그리고 유튜브나 관련기사들도 많이 검색해봤어요. 보도자료를 보니 어반베이스가 하고 있는 일이 미래를 널리 생각하고 있는 것 같아서 굉장히 좋은 영향을 줬어요.  윤아 : 저도 원티드에서 보고 알았어요. 블로그나 기사가 많아서 하나씩 다 살펴봤어요. 민진 : 저도요. 유튜브 계정에서 하나씩 다 살펴봤어요. 건축 AR에 관련된 영상이었는데, 굉장하더라고요. 그동안 제가 만들었던 허접한 모형들이 뇌리를 스쳐 지나가며.. 이런 신세계가 10년만 일찍 펼쳐졌다면 밤을 좀 덜 샜을 텐데.. 모형을 만드는 나도, 그걸 보는 교수님도, 서로 덜 괴롭지 않았을까.. 하는 생각이 들기도 했습니다 하하. 영상의 풀버전은 어반베이스 유튜브에 올라와 있습니다!Q. 자기소개서 및 포트폴리오 준비는 어떻게 했나요?수민 : 자기소개서는 다른 자기소개서들이랑 비슷했어요. 지원동기, 성장배경, 성격 등 기본적인 문항들로 채웠고 그동안 했던 프로젝트를 PPT에 정리해 제출했어요. 윤아 : 저도 거의 비슷해요. 민진 : 저는 자기소개서를 굉장히 짧게 적었어요. '왜 어반베이스에 지원했는지, 왜 나를 뽑아야 하는지' 딱 두 개만 적었어요. 포트폴리오는 건축 프로젝트, 공모전, 동아리 등 내가 했던 모든 활동을 정리해서 제출했어요. Q. 면접은 어땠나요?윤아 : CTO님이 이야기를 굉장히 잘 들어주시고 편한 분위기에서 면접이 진행되었어요. 면접을 진행하며 좋은 인상을 받았어요.수민 : 저는 조금 긴장했어요. CTO님께서 제 포트폴리오를 보고 질문을 하셨어요. 제 답변에 틀린 점도 있었는데 틀린 부분을 친절히 설명해 주시기도 했어요. 2차 면접도 역시 편안했고요.민진 : 저는 1차 면접을 마케팅팀 분들과 봤어요. 면접 자체가 제가 일방적으로 질문에 응답하는 것이 아닌, 서로 이야기를 주고 받는 '대화'에 가까웠어요. 그래서 저도 면접 이후로 더욱 좋은 인상을 받았어요. 두 번의 면접이 진행되면서 어반베이스가 하고 있는 사업들에 대해 더욱 자세히 알게되었는데, 진짜 꼭 붙고 싶더라고요. 붙어서 참 다행입니다. 마지막으로Q. 전공과는 조금 다른 길을 선택했는데, 후회는 없나요?수민 : 음, 그래도 어반베이스는 건축이 바탕이 되어 있으니까요. 건축산업이 좀 더 유연하게 바뀌고, 기술이 많이 도입 된다면, 지금 제가 보내는 이 시간들이 굉장히 값진 시간이 될 거예요. 프로그래밍과 건축 베이스의 지식이 굉장한 무기가 될 수 있다고 생각해요. 윤아 : 저도 후회는 없어요. 요즘 데이터 분석은 어딜가나 쓰이니까요. 전공을 살려 의료 쪽 데이터를 다룰 수도 있지 않을까요? 그런 의미에서 전공지식이 무용지물은 아니라고 생각해요. 민진 : 저도 후회 안해요. 건축을 전공했기 때문에 지금 어반베이스가 하고 있는 일을 훨씬 잘 이해할 수 있었어요. Q. 어반베이스를 들어오고 싶은 사람들에게?수민 : 어반베이스는 기술 집약적인 기업이라 생각해요. 프로그래밍의 아주 초입자라면 어렵겠지만 업무가 적성에 맞다면 즐겁게 일할 수 있을 거에요.민진 : 미래산업에 관심이 있다면  더욱 흥미롭게 다가올 것 같아요. 현재 국내에서 쉽게 접할 수 있는 사업이 아니기 때문에 굉장히 도움이 될 거라고 생각해요. 인터뷰 Behind 1어반베이스의 좋은 점에 대해 이야기하며 어반베이스 복지문화 중 하나인 ‘어반테이스트’의 얘기가 나왔습니다. 수민 : 아, 그 어반테이스트도 가신 분들 엄청 부러워요. 그 쓰리쁠 등심.. 나도 먹어보고 싶다. 윤아 : 나는 어반 테이스트 뽑히면 스시먹어야지. 수민 : 오마카세..!민진 : 아, 갑자기 배고프네. 다들 좋아하는 음식 있어요?윤아 : 아무거나 다 잘 먹어요.수민 : 저는 라멘이 먹고 싶네요.윤아 : 수민님 며칠전부터 라멘 얘기하셨어요. (웃음)민진 : 그럼 오늘 점심 때 먹으러 가요. 빨리 선릉역 라멘 맛집 찾아봐요. 선릉역 라멘집 호타루인터뷰 하다말고 맛집을 검색하더니 곧 우리의 행선지가 결정되었습니다! 점심으로 라멘을 먹고 셋이서 아주 뿌듯했다는 이야기. (ㅎㅎ) 인터뷰 Behind 2윤아 : CTO님과 면접보다가, 나중엔 자소서 잘 쓰는 법도 알려 주셨어요. 그래서 '아, 날 뽑지 않고 자소서 잘 써서 다른데 지원하라는 의미구나.' 싶었어요. 그래서 떨어질 줄 알았는데, 합격 전화가 와서 깜짝 놀랐어요. (웃음)수민 : 원래 공대생들이 글을 잘 못쓰잖아요. 모두 : 아, 완전 공감.선택한 길에 대해 후회는 없다는 인턴 3인방. 인터뷰를 하며 공통적으로 말했던 것은 ‘좋은 사람들과 멋있는 일을 할 수 있어 아주 즐겁고 재밌다!’는 것이었어요. 어반베이스도, 우리들도 더욱 발전할 수 있었으면 좋겠습니다. :) 어반베이스에 관심이 생기신 분들, 그래서 입사 지원을 하시는 분들 중 혹시 더 궁금한 점이 있다면 댓글에 남겨주세요. 담당자분에게 직접 물어봐 드릴게요.  그럼 이만 일하러 가보겠습니다 !출처: https://blog.naver.com/urbanbaseinc
조회수 1987

Circle CI에서 rbenv를 이용해서 Ruby 2.2와 CocoaPods 0.39 버전 사용하기

최근 Circle CI에서 Ruby 버전을 2.3으로, CocoaPods 버전을 1.0으로 업그레이드함에 따라 발생하는 빌드 문제를 rbenv를 이용해서 해결한 경험을 공유합니다. 최종적으로 완성된 Gemfile과 circle.yml 파일은 마지막 섹션에서 확인하실 수 있습니다.1. CocoaPods 1.0지난 2015년 12월에 CocoaPods 1.0.0 베타 버전이 처음 공개되었습니다. CocoaPods이 1.0 버전으로 업그레이드되면서 굉장히 많은 변화가 있었는데요. 가장 큰 변화는 DSL입니다. 추상 타겟Abstract Target과 타겟 상속Target Inheritance이 새롭게 소개되면서, 0.39 버전까지 자주 사용되던 link_with 및 :exclusive => true와 같은 구문이 제거되었습니다.이에 따라 기존에 사용하던 Podfile이 CocoaPods 1.0 버전과는 호환되지 않는 문제가 발생했습니다. 이를 해결하기 위한 가장 좋은 방법은 새로운 DSL을 사용하여 Podfile을 다시 작성하는 것이지만, 꽤 많은 서드파티 라이브러리를 사용하는 StyleShare의 경우 새로운 DSL을 적용하여 빌드하면 각종 문제로 인해 빌드가 정상적으로 이루어지지 않았습니다. 4년동안 유지되고 있는 프로젝트이다보니, 레거시 Objective-C 코드와 라이브러리, 그리고 새로운 Swift 코드와 라이브러리가 혼용되어 사용되는 것도 원인 중 하나일 것입니다.따라서 StyleShare에서는 CocoaPods 0.39 버전을 사용하기로 결정을 했습니다. 하지만 최근 Circle CI에서 CocoaPods 버전을 공식적으로 1.0 버전으로 업그레이드하면서 빌드가 깨지기 시작했습니다. Circle CI 환경에서 CocoaPods 0.39 버전을 사용하려면 어떻게 해야 할까요?▲ ㅠㅠ2. Bundler를 이용해서 Gem 관리하기Bundler는 Ruby로 작성된 라이브러리들의 버전을 관리해주는 강력한 도구입니다. CocoaPods에서 Podfile에 의존성을 기재하듯, Bundler에서는 Gemfile에 의존성을 기재합니다.source 'https://rubygems.org' gem 'cocoapods', '~> 0.39' $ gem install bundler 명령어를 사용하면 Gemfile에 기재된 의존성 라이브러리들을 설치해줍니다. 이렇게 설치된 CocoaPods을 사용할 때에는 $ pod COMMAND 대신 $ bundle exec pod COMMAND 명령어를 사용해야 합니다.$ gem install bundler $ bundle install --path vendor/bundle $ bundle exec pod --version 0.39.0 3. Ruby 2.3과 CocoaPods 0.39Bundler를 사용해서 CocoaPods 0.39 버전을 사용하기만 하면 모든 문제가 해결될 줄 알았습니다. 하지만 더 큰 삽질이 남아있었는데요. 바로 Ruby 2.3 버전이 CocoaPods 0.39 버전과 호환되지 않는 것이었습니다.$ bundle exec pod install Updating local specs repositories Analyzing dependencies 신나게 $ bundle exec pod install 명령어를 실행하니, 의존성을 분석하는 듯 싶다가 갑자기 에러를 주르륵 뱉습니다. 에러 로그의 #### Error 항목을 보면 에러 메시지가 나와있습니다.NoMethodError - undefined method `to_ary’ for #이 에러 메시지로 CocoaPods GitHub 저장소의 이슈를 검색해보면 꽤나 많은 이슈가 올라와 있습니다. 이 이슈들을 보면, 모두 Ruby 버전이 2.3이라는 공통점이 있습니다. Ruby 버전을 2.2로 내렸더니 문제가 해결됐다는 댓글들도 굉장히 많고요. Circle CI의 Ruby 버전을 2.2로 낮추면 문제가 해결될 것 같습니다.Circle CI 문서 내용에 따라 circle.yml에 Ruby 버전을 기재해봅시다.machine: ruby: version: 2.2.5 그러나 Circle CI의 OS X 컨테이너에서는 Ruby 버전 변경을 지원하지 않는다고 합니다.▲ ㅠㅠ (2)4. rbenv를 이용해서 Ruby 2.2 사용하기그러다가 알게된 것이 바로 rbenv입니다. rbenv를 사용하면 여러개의 Ruby 버전을 깔끔하게 관리할 수 있게 됩니다. rbenv는 Homebrew를 사용해서 쉽게 설치할 수 있습니다.$ brew install rbenv rbenv는 ~/.rbenv 디렉토리에 안에 여러 Ruby 버전을 설치하고 관리합니다. rbenv를 설치한 뒤 가장 먼저 할 일은 환경변수 $PATH를 설정해주는 것입니다. $PATH에는 $HOME/.rbenv/shims와 $HOME/.rbenv/bin 경로가 포함되어있어야 합니다.4.1 환경변수 설정하기Circle CI에서는 환경변수를 설정하는 편리한 인터페이스를 제공합니다. 하지만, Circle CI에서 실행되는 각 명령어는 별도의 쉘에서 실행됩니다. 그말인 즉슨, 각 명령어가 실행되기 직전에 새로운 쉘이 실행되고, $PATH 환경변수를 덮어쓰는 .bash_profile이 실행된 후 명령어가 실행된다는 뜻인데요. 이렇게 될 경우 $PATH 환경변수의 가장 우선순위는 항상 /usr/local/bin이 가지게 됩니다. 그리고 같은 이유로 $ export FOO=bar와 같은 명령어도 사용할 수 없게 됩니다.1고민을 하다가 생각해낸 방법은 바로 .bash_profile의 내용을 변경(!)하는 것입니다. 그렇게 되면 우리가 원하는 $PATH를 항상 우선순위로 둘 수 있게 됩니다. 아래와 같이 환경변수를 설정하는 명령어를 .bash_profile의 가장 아랫줄에 삽입하도록 설정했습니다.machine: pre: - echo "export PATH=\$HOME/.rbenv/shims:\$HOME/.rbenv/bin:\$PATH" >> .bash_profile - echo "export RBENV_SHELL=bash" >> .bash_profile 4.2 rbenv에 Ruby 2.2 설치하기그 다음으로 할 일은 원하는 Ruby 2.2 버전을 설치하는 것입니다. $ rbenv install -l을 사용해서 설치 가능한 모든 Ruby 버전을 조회할 수 있고, $ rbenv install 2.2.5 명령어를 사용해서 2.2.5 버전을 설치할 수 있습니다.$ rbenv install -l Available versions: 1.8.5-p113 1.8.5-p114 1.8.5-p115 1.8.5-p231 ... $ rbenv install 2.2.5 이렇게 설치된 버전은 두 가지 방법으로 사용될 수 있습니다. 한 가지 방법은 시스템 전체에서 사용하는 것이고, 다른 한 가지 방법은 프로젝트 단위로 사용하는 방법입니다. 시스템 전체에서 사용하려면 $ rbenv global 2.2.5 명령어를, 프로젝트 단위로 사용하려면 $ rbenv local 2.2.5명령어를 사용합니다.global 명령어를 사용해서 Ruby 버전을 선택하면 ~/.rbenv/version 파일에 선택된 버전이 기록됩니다.$ rbenv global 2.2.5 $ cat ~/.rbenv/version 2.2.5 local 명령어를 사용하면 현재 디렉토리의 .ruby-version 파일에 선택된 버전이 기록됩니다.$ rbenv local 2.2.5 $ cat .ruby-version 2.2.5 local 명령어로 선택된 Ruby 버전은 global 명령어로 선택된 Ruby 버전보다 우선순위가 높습니다. $ rbenv version 명령어를 사용하면 현재 선택된 버전을 확인할 수 있습니다.$ rbenv version 2.2.5 (set by /project/path/.ruby-version) Circle CI에서는 편의를 위해 global 명령어를 사용해서 Ruby 버전을 선택하도록 했습니다.dependencies: pre: - brew update - brew install rbenv - rbenv install 2.2.5 - rbenv global 2.2.5 4.3 Bundler 다시 설치하기rbenv를 사용해서 새로운 Ruby 버전을 설치했기 때문에, Circle CI 시스템에서 제공하는 Gem도 다시 설치해야 합니다. 우리는 Bundler로 Gem 의존성을 관리하기로 했으므로, Bundler만 재설치합니다.$ gem install bundler --no-ri --no-rdoc $ rbenv rehash $ gem install 명령어를 실행한 후에는 $ rbenv rehash 명령어를 실행해서 executable 경로들을 재설정해주어야 합니다.4.4 ~/.rbenv 경로 캐싱하기rbenv를 사용해서 Ruby를 설치하는 과정이 굉장히 오래 걸립니다. 이 경우, Circle CI에서 제공하는 캐싱 기능을 사용해서 이 과정을 한 번만 하고 건너뛸수 있게 됩니다.dependencies: cache_directories: - ~/.rbenv 위와 같이 circle.yml를 설정해주면 컨테이너 실행시 ~/.rbenv 디렉토리가 캐시로부터 설정됩니다. 캐싱된 디렉토리를 사용하는 경우 Ruby 버전이 미리 설치되어있기 때문에 $ rbenv install시에 --skip-existing 옵션을 추가해주어서 캐싱된 버전을 재설치하지 않도록 합니다.5. 마치며최종적으로 완성된 Gemfile과 circle.yml 파일은 다음과 같습니다.Gemfilesource 'https://rubygems.org' gem 'cocoapods', '~> 0.39' circle.ymlmachine: pre: - echo "export PATH=\$HOME/.rbenv/shims:\$HOME/.rbenv/bin:\$PATH" >> .bash_profile - echo "export RBENV_SHELL=bash" >> .bash_profile xcode: version: 7.3 dependencies: cache_directories: - ~/.rbenv pre: - brew update - brew install rbenv - rbenv install 2.2.5 --skip-existing - rbenv global 2.2.5 - gem install bundler --no-ri --no-rdoc - rbenv rehash - bundle install --path vendor/bundle override: - bundle exec pod --version - bundle exec pod install https://circleci.com/docs/environment-variables/#custom ↩#스타일쉐어 #개발 #개발자 #개발팀 #후기 #일지 #인사이트
조회수 972

[Tech Blog] Software architecture: The important stuff

마틴 파울러는 Software architecture 를 “무엇이건 간에 중요한 것들(The important stuff whatever it is)” 이라고 정의합니다. 조금은 재미있는 정의지만, 그 정의를 도출하기 위해 제시한 다른 정의를 들어보면 고개를 끄덕이게 합니다.  Software architecture 는 전문 개발자들이 같은 생각을 가지고 이해하는 시스템 디자인입니다. Software architecture 는 이른 시기에 정해져야 하는 디자인 결정들입니다. 혹은 여러분이 “아, 처음부터 좀 더 잘 생각하고 할 껄”이라고 후회하는 바로 그 결정들입니다. Software architecture 는 또한 바꾸기 어려운 결정들의 집합입니다.  결국 무엇을 중요하게 생각할 것인가, 그것이 Software Architecture 라는 의미입니다. Why is it important? 왜 중요한지 설득하지 못한다면 사실 중요하지 않은 것일지도 모르죠. 그래서 왜 Software Architecture 이 중요한지 짚어보고자 합니다. 쿠팡은 Microservice architecture 로 전환하는 여정을 글로 남겼는데요. 블로그 글의 제목을 “행복을 찾기 위한 우리의 여정” 이라고 지었습니다. (좋은 글이니 읽어보시길!) 다시 말해서, Software Architecture는 개발가자 더 좋은 제품을 만들 수 있는 길이기 때문에 중요하다고 말합니다. 그러나 좋은 Software Architecture를 만드는 일은 쉽지 않습니다. 블로그 글을 인용 해보겠습니다: “여기 저렴한 제품과 비싼 제품이 있습니다. 비싼 제품은 software architecture 가 잘 고려되어 있고, 저렴한 제품은 시스템 디자인에 대한 고민 없이 구현되어 있습니다. 하지만 두 제품은 겉으로 보기에 차이가 없습니다. 소비자가 보기에 똑같이 보이고, 똑같은 기능이 있으며, 성능 또한 같습니다. 어떤 제품을 사야할까요?” 소비자는 제품을 만든 개발자의 행복을 위해 더 비싼 제품을 선택하지는 않습니다. 개발자 역시 동료들에게 “내가 행복하려면 시간과 돈이 좀 더 들더라도 좋은 software architecture 를 구성해야 해.” 라고 주장하기엔 설득력이 부족하죠. Software architecture 가 왜 중요한지 모두가 공감하려면 경제적인 입장에서 그 중요성을 설득해야 합니다. “내부 품질을 좀 포기하더라도 이번 릴리즈에 더 많은 기능들이 들어가야 해.” 라는 의견에 “안돼 우리(개발자)는 더 전문적으로 구성해야 해.”라는 의견으로 대응하면 항상 질 수 밖에 없습니다. 장인 정신과 경제 논리 사이의 싸움에서는 경제 논리가 항상 이겨왔거든요.   Cumulative functionality over Time Software architecture 를 고려하지 않으면서 제품을 개발하면 초기에는 기능 추가 속도가 빠를 수 있지만, 시간이 흐름에 따라 제품의 기능 증가 속도는 점차 느려집니다. 이미 구현된 기능들과 코드가 새로운 기능을 추가하는데 걸림돌이 되기 때문입니다. 한편, 좋은 설계를 지속적으로 건강하게 유지하고, 주기적으로 리팩토링을 하고, 코드를 깨끗하게 유지한다면 시간이 흘러도 기능 추가가 느려지지 않을 수 있습니다. 오히려 기능을 추가하기 위해 수정해야 할 곳들이 명확하고 모듈화 또한 잘 되어있기 때문에 시간이 갈 수록 기능 추가가 더욱 빠르게 진행될 수 있습니다. 새로운 개발자가 참여하는 시점에도 시스템을 더욱 빠르게 이해하고, 더 빠르고 안전하게 기능을 추가할 수 있게 됩니다. 결국 장기적으로 더 많은 기능을 생산하고 빠르게 고객에게 전달하기 위해서 개발팀은 좋은 디자인과 설계에 대해 깊게 고민해야 합니다. What is the best software architecture? 옳은 software architecture 는 없습니다. 상황에 따라 해답은 다를 수 있습니다. Microservice architecture 가 좋다고 해서 모든 것에 대한 답이 microservice architecture 인 것은 아니고, 마찬가지로 어떤 시스템이 monolithic architecture 로 구현되어 있다고 해서 뒤쳐져 있는 것도 아닙니다. 모든 선택에는 Tradeoff 가 있기 마련이니까요. 유선 통신 시스템을 구성한다고 생각해 볼까요? 우리 나라처럼 인터넷이 잘 구성된 상황에서 Skype 로 할 수 있는 통화는 무료이고, 품질도 좋고, 영상 통화까지 됩니다. “Skype 만세! 인터넷을 통한 통신이 항상 옳습니다!” 라고 외치려던 시점에 정전이 되었습니다. 방금 외친 외침은 멀리 가봐야 옆집 정도 닿겠죠. 한편 기존 유선 전화 시스템은 느리고 화상 통화도 안되지만, 전화선 자체에 전원이 공급되고 있기 때문에 정전 시에도 통화가 가능합니다. 전쟁 상황이나 기타 재난 등에도 반드시 통신이 가능해야 하는 곳은 유선 전화 시스템이 꼭 필요할 것 같습니다. 은행 시스템도 적절한 예시가 될 수 있습니다. 비밀번호 입력, 전화 인증, OTP 확인하는 등 은행 업무는 왜이리도 복잡할까요? 그냥 비밀번호 기억해주고 로그인 유지해주면 참 편할텐데 말이죠. 안전하기 위해서겠죠. 여러분의 자산은 소중하니까요. 사용성(Usability)과 안전성(Security)은 종종 둘 사이를 조절해야 하는 Tradeoff 입니다. 만들려는 제품과 시스템, 환경, 시기와 조건 등에 따라서 적절한 architecture 는 달라집니다. 좋은 architecture 를 선택할때 개발자는 선택한 것의 대척점에 있는 무언가를 포기 해야합니다. 그렇기에 software architecture 는 기술적인 범주 안에서만 고려되면 안되고, 구현하고자 하는 비지니스를 매우 잘 이해하고 고려해서 적용해야 합니다. What are you going to do? 이미 구성된 software architecture 를 변경하는 것은 굉장히 어렵습니다. 이미 구성되어 있는 것들을 상세하게 알고 있어야 하고, 비지니스의 요구 사항을 수용해야 하며, 이미 존재하는 기능이 변경 도중 문제 없이 동작해야 합니다. 또한 기존 시스템에 기여한 개발자들과 변경 사항에 대한 공감대를 이뤄야 하며, 겉으로 보기에 당장 변화가 없는 것에 대한 비용에 대해 많은 사람들을 설득해야 합니다. 최근 Buzzvil 에서는 Architecture Task Force 팀을 구성하였습니다. 이를 통해 전체적인 설계를 정비하고 모든 개발팀이 구조적으로 같은 이해를 할 수 있도록 분석, 조사, 계획 수립, 실행에 옮길 예정입니다. 지속적인 공유를 통해 전사적인 공감대를 유지하고 체계적인 문서화와 가이드라인을 통해 모든 팀원이 함께 실행하며 성장할 수 있는 기반을 준비하게 될 것입니다. 궁극적으로 전사 프로젝트와 모든 팀이 더욱 빨리 움직일 수 있는 software architecture 를 구성하고, 이를 통해 더 많은 기능을 더 빠르게 전달할 수 있게 할 것입니다. 아직 해야할 일들이 많이 남아있지만 제대로 계획하고 빠르게 움직인다면 충분히 좋은 결과를 만들 수 있을 것 같습니다. 당장은 눈에 보이는 변화가 없을지라도, 좋은 디자인에 대한 고민과 실행이 우리가 궁극적으로 바라는 비전과 목표에 한 걸음 더 빠르게 다가가는 올바른 길이라고 믿습니다.   *버즈빌에서 개발자를 채용 중입니다. (전문연구요원 포함)작가소개 Whale, Chief Architect “Keep calm and dream on.”
조회수 2903

레코딩 플러그인 이야기

마음챙김명상앱 '마보'의 콘텐츠들은 모두 Waves 플러그인으로 프로세싱된다.(처음과 마지막을 제외하면) Waves에 대해 간단한 생각을 정리하자면 다음과 같다.머큐리 구입시 UAD와도 고민을 많이 했지만 소프트웨어로만 비교를 한다면 waves가 훨씬 편하게 사용이 가능하다. 그 중에서도 CPU로 돌릴 수 있다는 점이 제온 CPU 에서 강력하게 작용한다.(Waves 하드웨어가 필요하다면 영국콘솔회사 DiGiCo와의 합작품인 DiGiGrid라는것도 있다.)근데 문제는... 맥에서는 더이상 CPU파워가 따라주지 않는다는 것이다.이런 상황에서 밖에서 작업하기에 딱 좋은 솔루션이 있었다. Soundgrid라는 waves의 DSP솔루션이다.이 사운드그리드에 대해 요약하면 waves의 플러그인만 따로 모아서 랜케이블로 Soundgrid 연결을 하면 CPU의 부담을 주지 않고 Daw에서 똑같은 프로세싱이 가능하다.이번에 BLS에서 데모로 받은 Waves Soundgrid IMPACT SERVER를 까페에 들고 나왔다.문제는 예상했던 사이즈가 아닌 맥북보다 훨씬 커서 카페에 가지고 다니기 부담스러운 크기... 휴대성이라는 측면에서는 역시 좀 무리가 있지 않나 싶다.(사진참조)어쨌든 카페에서 작업이 가능하게 되었다는 점. 다만, 카페에 가는데 차가 필요하다는 점이 있겠다.앞서 말했듯 마보 콘텐츠는 waves외에 플러그인의 시작과 끝을 Izotope 플러그인을 쓴다.마지막에는 라우드니스를 위해 오존을 사용한다. 오존은 너무 유명한 플러그인이니 설명도 생략.녹음이 끝나면 바로 첫단에 오디오스위트로 걸어주는 RX5라는 플러그인이 있다.이 플러그인은 보이스를 녹음한다면, 혹은 볼륨이 크지 않은 클래식 악기를 녹음한다면 정말 요긴하다.첫째로 입에서 발생하는 립노이즈들을 효과적으로 빠르게 제거해 준다. 콘덴서 마이크에서 타는 쩝쩝거리는 소리들을 손으로 하나씩 잡을 필요가 없다. 그저 한번 클릭으로 모든 파형의 클릭소리들을 제거해준다.Waves Mercury에도 X-Click이있지만 Izotope의 RX5가 훨씬 퀄리티가 좋다.두번째로 De-noise의 강력한 기능이다. 녹음시에 발생되는 팬소음들은 사실 EQ를 통해 어느정도 제거가 가능한 험의 형태로 발생한다면, 전기적 접지의 부재로 인한 핑크노이즈는 쉽게 제거가 불가능하다.하지만. 이 De-noise의 노이즈 LEARN기능으로 노이즈를 분석한 후 노이즈를 획기적으로 제거할 수 있다.칭찬일색으로 보이지만 RX5는 유튜브 믹싱채널을 운영하는 Alan JS Han님도 추천을 하실 만큼 유명하다.(근데 Izotope는 품질은 정말 유명하나 CPU를 정말 힘들게 한다.)자세한 이야기는 각 사진 속에보다시피 크기가 생각보다 크고 3kg에 육박하는 mini-itx PC이다.. 공연장비가 베이스이기 때문에 랜케이블로 연결한다.프로툴 유저라면 한번쯤 겪어본 창프로툴 유저라면 한번쯤 겪어본 창보이스가 없는 부분을 선택해 기본으로 깔리는 노이즈를 분석한다.전 구간에 분석한 노이즈 커브를 적용한 모습.깔끔하게 정리되었다.(SSL프리에서 오는 하모닉스들도 제거)#마보 #콘텐츠 #프레임워크 #스택 #인사이트 #일지

기업문화 엿볼 때, 더팀스

로그인

/