스토리 홈

인터뷰

피드

뉴스

조회수 1029

[Buzzvil People] Chelsea Park, Business Development Manager

 Buzzvil People에서는 다양한 배경과 성격 그리고 생각을 지닌 버즈빌리언들을 한 분 한 분 소개하는 시간을 갖습니다. 어떻게 버즈빌에 최고의 동료들이 모여 최고의 팀을 만들어가고 있는 지 궁금하시다면, 색색깔 다양한 버즈빌리언들 한분 한분의 이야기가 궁금하시다면, Buzzvil People을 주목해주세요.1. 간단한 자기 소개 부탁드립니다. 안녕하세요! 저는 버즈빌에서 사업 개발 전략 및 운영을 담당하고 있는 박채은입니다. 버즈빌에서는 첼시 (Chelsea) 로 불리고 있어서, 너무 익숙해진 나머지 이제 누가 첼시라고 안부르면 잘 안보는 것 같아요. 제 이름 “첼시” 에는 두 가지 어원이 있습니다.    “채은씨~” 에서 착안 영국 축구팀 첼시를 좋아합니다     요즘은 챌시, 첼씨, 체르시, 시첼, 최루시 등 다양한 이름으로 불리고 있는데, 이 모든 단어에 슬랙 알람을 해놓아서 태그가 된답니다. 더 기발한 이름으로 불러주세요.   저는 올해 3월 버즈빌리언 어워드 때는 “버즈빌 비타민” (+ 자라의 비타민) 이라는 상을 받았는데, 저 포함 주변이 함께 행복해지는 데 일조할 수 있다는 것에 큰 성취감과 뿌듯함을 느끼는 사람입니다. 해서 매달 1일에 월간 박채은 (또는 월간 첼시) 이라는 장문의 카톡을 소중한 사람들에게 보내며 저의 지난 한 달을 공유하는 소소한 프로젝트를 진행한지 어느덧 3년이 되었어요. 이렇게 주변을 잘 챙기는 사랑이 많은 사람이라고 생각하는데, MBTI 테스트만 하면 엄격한 관리자 (ESTJ) 가 나옵니다… 높은 목표치를 잡고 과정 과정 빡세게 달려가는 데서 즐거움을 느끼는 성향때문인 것 같아요. 그런 의미에서 빡세게 일하고, 힘들어도 버티며, 신나게 놀줄 아는 버즈빌과 잘 맞는 사람인 것 같아서 좋네요. 2. 어떻게 버즈빌에 오시게 되셨나요? 저는 버즈빌이 첫 직장입니다. 석사 졸업 후 바로 조인하게 되었어요. 학부에서 철학과 경영학을 복수전공하고, 대학원에서 국제경영/통상을 공부했어요. 여러 분야에 관심을 가지며 연구 분야를 찾을 때 즈음 4차 산업혁명이 아주 핫한 키워드로 떠올랐어요. 담당 교수님께서 관련 포럼에서 스피치를 많이 하셔서 저도 자연스럽게 리서치를 많이 했었어요. 산업 구조가 변하며 major player 의 형태도 변화한다는 생각이 많이 들더라구요. 기존 대기업이 주도하는 사회 구조에서, 작고 빠르게 움직일 수 있는 조직이 더 큰 영향을 미치며 삶의 형태를 변화한다고 판단했습니다. 불과 얼마 전에는 생각도 못했던 개념들이 삶의 한 방식으로 자리잡고 높은 가치를 창출하는 것이 저를 설레게 만들었어요. 여행에 가서 당연하게 우버와 에어비앤비를 이용하는 것처럼 새로운 것이 자연스럽게 스며드는 것이 패러다임의 변화라고 생각했고, 이 변화를 구경만 하는 것이 아니라 직접 참여하고 싶었어요.   이런 맥락에서 논문 주제를 “한국 모바일 스타트업의 해외진출 결정요인” 으로 잡고 논문을 쓰는데, 인터뷰나 리서치로는 스타트업에 대한 갈증이 풀리지 않더라구요. 당장 가서 일하며 직접 느끼고 싶다라는 생각에 몇 가지 키워드를 가지고 스타트업을 찾았어요. #모바일 #글로벌사업 #B2B #기업문화 #동료의 키워드로 회사를 찾으니 답은 버즈빌이더라구요. (버즈빌 글로벌 사업이 잘 되면 저는 자동으로 제 논문을 검증하는 셈입니다.) 버즈빌에서 지원 가능한 포지션을 찾아 바로 지원해서 총 두 차례의 면접을 이틀만에 끝나고, 2차 면접 다음 날 조인했습니다. 무서운 곳이에요.   3. 버즈빌에서 어떤 업무를 담당하고 계신가요? 저는 Business Development 팀 (BD팀) 에서 전략 및 운영을 담당하고 있습니다. BD팀은 말그대로 버즈빌의 Business 를 Develop 하는 팀인데요, 현재는 버즈빌의 주요 Business 인 버즈스크린의 제휴를 이끌고 있습니다. 버즈스크린은 OK캐시백, 엘포인트, CJ ONE 등 핫한 포인트를 보유하고 있는 파트너들과 제휴를 맺고 있어요. 저는 이런 대형 파트너의 기술적 이슈부터 CS까지 넓은 범위의 운영 업무를 지원하고 있습니다. 이와 함께 BD팀의 전략을 담당하고 있는데요, 전략의 큰 두 갈래는 1) 프로세스 효율화, 2) 리드 생성 및 버티컬 전략입니다.    간단하게 말하면, 아웃바운드 제휴 프로세스 내 비효율이 발생하는 부분을 찾아 문제를 해결하고 대안을 제시하거나, 프로세스가 없는 부분의 프로세스를 셋업하고 있어요. 또한, 버즈빌 프로덕트의 Outbound BD를 진행할 새로운 리드를 발굴하고, 버즈스크린이 진출하면 좋을 카테고리에 대한 고민도 함께하고 있어요. 국내에서만 250만 DAU를 보유한 버즈빌 대표 프로덕트인 버즈스크린을 운영하고 제휴하는 버즈빌의 얼굴인 팀에서 일하고 있다고 생각하며 즐겁게 일하고 있습니다. 운영과 전략을 병행하는 것이 쉽지는 않지만, 몸으로 직접 느끼며 배우니 배우는 속도가 빠르기도 하고, 전략을 짤 때 현실감을 놓치지 않을 수 있답니다.    이외에도 피자를 사랑하는 피자원정대를 출범하였고, 해리포터 덕후로서 기숙사 배정도 게을리하지 않고 있어요 (해리포터 팬들이 사랑하는 웹 사이트 – 기숙사 배정 가능!). 아울러, Sales팀 Simon 이 시작한 슬랙의 아재개그방인 youngup방에서 언어유희 및 빠른 이모지 붙이기 등의 잔재주를 부리며 즐겁게 활동하고 있습니다.   4. 스타트업에서 혹은 광고업계에서 일하는 느낌이 어떠세요? 일단 책상에 앉아 연구할 때 보았던 것과는 비교할 수가 없습니다. 정말 1분 = 10분처럼 사용하고 움직이는 게 느껴집니다. 자리에 앉아있으면 많은 사람들이 노트북을 들고 빠르게 움직여요. 시간이 빠르게 흘러가는 것처럼 느껴지는 만큼 변화의 한 가운데 있다고 느끼는 것이 스타트업 라이프라고 생각해요. 맡은 일의 범위가 변하고, 함께 일하는 사람이 달라지고, 회사 규모가 빠르게 커지고, 프로덕트의 기능이 업그레이드되고, 새로운 프로덕트가 출시되고, 심지어 스타트업을 둘러싼 환경도 변합니다. 그렇기 때문에 이 모든 변화를 잘 받아들이고, 나아가 즐길 줄 아는 유연한 자세가 필요하다는 생각을 자주 해요. 작년 말 ~ 올해 초 구글 플레이스토어 정책 변경으로 인해 회사가 격변의 중심이었던 적이 있어요. 이런 위기의 순간에도 정신 똑바로 차리고 다음 액션 플랜을 생각해서 진행하는 동료들을 보면서, 역동성을 회사로 풀어쓰면 버즈빌이겠구나 싶었어요.    또 개인에게 주어지는 권한과 책임이 커요. 버즈빌이 첫 직장인, 2년차 직장인인 제가 할 수 있는 일의 범위가 넓습니다. 다른 업계에 종사하는 친구들과 이야기 나누면 이런 특징이 잘 느껴지더라구요. 자신이 업무를 진행하며 필요한 것들을 직접 선정하고 그것을 잘 할 수 있는 방안을 고민하고, 논의하고, 누군가를 설득하는 모든 과정들이 일상이에요. 많은 업무가 프로젝트처럼 진행되니 성취감도 높아지고, 열심히 스퍼트를 내서 달리게 돼요. 과정 과정에 engaged 되며 맡고 있는 일들의 무게를 알기 때문에 책임감을 가지고 일할 수 있어서 정말 성에 차게 일하고 있습니다.   5. 이것만큼은 버즈빌이 참 좋다! 어떤 게 있으실까요? 저는 넷플릭스가 최대 취미인 사람인데요, 넷플릭스의 기업문화 중 제가 가장 좋아하는 것이 “Great Workplace is Stunning Colleagues” 입니다. 버즈빌에서 저 포함 가장 많은 사람들이 장점으로 꼽는 점은 함께 일하는 버즈빌리언들입니다. 똑똑한 사람들은 많이 봤지만, 일을 할 때 훌륭한 퍼포먼스를 내기 위해 열정과 에너지를 콸콸 쏟아 넣고도 누구보다 신나게 삶을 살며 좋은 자극을 주는 사람들이 이렇게 많은 곳은 처음 봅니다. 그런데 또 이 사람들이 다 착하고 재미있어요.. 말이 됩니까.. 그렇기 때문에 마음에 맞는 사람들과 함께 동호회를 만들고 주말에도 만나고, 발리로 워크샵가서도 다같이 신나게 놀고 그렇답니다. 저는 회사에서 하루 최소 1회 빵터지는데요, 이렇게 크게 웃으며 일할 수 있는 것이 정말 감사한 일이라고 생각해요.   또한, 회사를 구성하는 모든 팀의 움직임을 확인하며 어떤 일을 하고 있는지 알 수 있는 점도 좋답니다. 아무래도 BD팀에 있다보니 더욱 크게 느끼는 장점 같아요. 회사 자체가 하나의 프로젝트를 진행하는 것 같은 기분을 많이 느낍니다. 프로덕트를 만들고 + 알맞은 광고를 적시에 서빙하는 기술을 개발하고 + 노출할 광고를 영업하고 + 광고 인벤토리를 넓히며 가치의 범위를 늘리고 + 이런 파트너를 잘 운영하는 이 모든 과정에 각 팀이 열심히 참여하며 의견을 내고 있답니다. 그리고 이런 환경이 가능하게 퍼포먼스를 투명하게 분석하고 공유하며, 회사 안팎으로 원활한 커뮤니케이션을 위해 힘쓰고 있어요. 결국, 모든 팀이 다 필요하다는 것을 인지하고, 누구도 없어선 안된다는 것을 알 수밖에 없어요. 이렇게 유기적으로 움직이며 하나의 목표를 향해 달려가는 모습에 저도 지치지 않고 즐겁게 일할 수 있어요. 개인의 능력치를 최대로 끌어내고, 새로운 레벨로 또 성장할 수 있도록 도와주는 곳이죠. 이렇기 때문에 어려운 일들도 똘똘 뭉쳐서 잘 이겨낼 수 있었다고 생각해요.   6. 개인적인 목표나 꿈이 있으신가요? 있다면, 버즈빌에서의 경험이 어떻게 도움이 된다고 생각하시나요? 버즈빌 사무실 곳곳에는 회사의 비전과 연결된 문구들이 붙어있는데요, 여러 문구 중 저를 무릎 치게 만든 문구는 “Our Max is Unlimited” 입니다. 저는 선한 영향력을 미치는 사람이 되고 싶다는 생각을 하며 자라왔고, 제가 그렇게 할 수 있는 방법은 단 한 가지라고 생각하며 열심히 달렸어요. 그러나 여러 일을 겪으며 생각했던 것과 전혀 다른 방향으로 걷던 중 버즈빌을 만났는데, 불안해 하던 제게 “너의 한계는 무한하다” 고 말해주더라구요. 그래서 지금은 저를 제한하거나 한계두지 않으며 많은 것들을 배우고 경험해나가는 데 초점을 맞추고 있어요. 결국, 선한 영향력을 통해 주위를 행복하게 하는 방법 및 방향을 깨닫는 것이 지금 저의 꿈이라고 볼 수 있겠네요.    저는 스티브 잡스의 “Connecting the dots” 에 큰 공감을 하고 있는 사람이고, 버즈빌이 제 인생에 너무나 큰 dot 이 될 거라는 걸 잘 알고 있습니다. 감사하게도 회사에서 A 부터 Z 까지 모든 경험을 할 수 있고, 매 순간 좋은 자극을 주며 함께 일하고 싶은 사람들이 많아요. 이렇게 버즈빌에서 성장하며 저는 여러 점들을 찍어나갈 것이고, 나중에 뒤돌아서 이 모든 점들을 이었을 때 제가 바라온 목표가 이미 달성되었을 거라고 믿어요. 2차 면접 마지막 질문으로, “버즈빌에서 일하게 된다면 가장 기대하는 것이 무엇이냐”는 질문을 받았었어요. 이때, “어떤 한 가지를 답변으로 골라서 다른 것들을 놓치고 싶지 않고, 이곳에서의 모든 경험과 사람을 기대하는 흰 도화지 같은 사람이니 이제 여기다가 버즈빌의 모든 것을 채워넣으면 됩니다!” 라고 패기있게 답변했던 기억이 나네요. 넵, 지금도 저는 열심히 채워넣고 있고, 그래서 버즈빌은 제게 단순히 직장을 넘어서 아주 소중한 곳입니다.    *고성장 스타트업 버즈빌의 채용공고(전문연구요원 포함)를 확인하고 싶으면 아래 버튼을 눌러주세요!
조회수 3887

Eclipse Memory Analyzer 소개

안드로이드 개발을 하다보면 종종 OutOfMemory(OOM)에러를 만나게 됩니다. 이전에 올렸던 포스팅에서도 이 문제로 고생을 했는데요, 메모리 누수 관련 문제는 로직 에러와는 달라서 찾기가 매우 난감한 경우가 많습니다. 이러한 메모리 누수 관련 문제를 해결하기 위한 검사 기능을 제공하는 무료 툴이 있습니다. 바로 Eclipse MAT(Memory Analyzer)(MAT)입니다.Eclipse MATMAT은 사용자로 하여금 힙 메모리의 상황을 파악하게 해주어 메모리 누수 현상과 필요없는 메모리 할당을 감지할 수 있도록 도와줍니다. 또한 자동으로 보고서를 작성하여 어떤 객체들이 메모리 누수를 일으키는지에 대한 추측을 해주는 기능을 제공합니다. MAT은 Eclipse 플러그인이기 때문에 사용하려면 Eclipse가 깔려 있어야 합니다. MAT을 설치하려면 MAT 다운로드 페이지에서 자신의 Eclipse버전에 맞는 파일을 받으시면 됩니다.How to use MATMAT을 설치하였다면 Eclipse화면에서 MAT관련 탭이 뜹니다. 탭을 클릭 하고File -> Open Heap Dump 를 누르면 힙 상황이 기록 된 hprof파일을 읽어올 수 있습니다.탭이 뜨지 않는다면Window -> Open Perspective -> Other에서 Memory Analysis 를 누르면 탭이 뜨는 것을 볼 수 있습니다.hprof 파일을 읽어오면 분석을 시작하고 결과를 Overview 화면에 보여줍니다.파이 차트의 각 부분에 마우스를 갖다 대면 옆의 Inspector 화면에 해당 객체의 정보를 보여주는 것을 볼 수 있습니다.InspectorInspector 창에서는 선택된 객체의 내용을 볼 수 있습니다. 해당 객체의 클래스명과 패키지 명 그리고 해당 객체가 가지고 있었던 변수의 내용을 살펴볼 수 있습니다.유용한 기능들MAT에서 가장 중요하게 살펴볼 기능이라고 한다면 Leak suspoect report와 Dominator tree라고 볼 수 있습니다. Leak suspect와 Dominator tree 둘 다 가장 메모리를 많이 차지하고 있는 객체에 대한 정보를 제공합니다.Leak suspectLeak suspect는 가장 큰 용량을 차지하고 있는 객체들을 좀 더 세분된 파이 도표로 보여줍니다. Problem suspect 1을 보면 현재 이 스레드 객체의 크기가 전체 힙 메모리의 크기 중 19.73%를 점유하고 있다는 것을 알 수 있습니다. 전체의 20% 가까이 차지하고 있다는 것은 이 객체를 OOM의 범인(?)이라고 생각할 근거가 됩니다. 해당 객체에 대한 더 자세한 정보를 얻고 싶다면 Details을 클릭하면 됩니다.Dominator treeDominator tree를 띄우면 현재 덤프 된 매모리 스냅 샷 중 가장 큰 용량을 차지하고 있는 객체 순으로 정렬하여 보여줍니다. Leak suspect와 비슷해 보이지만 더 구체적인 정보를 제공한다는 점이 다릅니다. 따라서 Leak suspect로 현 상황에 대한 힌트를 얻은 후 Dominator tree에서 디테일하게 살펴보는 것이 시간을 절약하는 방법입니다.상위에 있는 몇몇 객체들이 가장 의심 되는 객체들이라고 볼 수 있겠습니다. 왼쪽의 화살표를 클릭함으로써 그 객체가 참조하고 있는 다른 객체들에 대한 정보들을 볼 수 있습니다. 각 객체를 클릭하면 옆에 Inspect창의 내용이 달라지는 것을 볼 수 있습니다.실제 이 스냅 샷은 이전 포스팅의 문제를 해결하려고 떠놓은 스냅 샷인데요, 이 결과를 보고 많은 메모리가 네트워크를 통해 받아오는 스트림을 처리하고 문자열로 가공하는데에 낭비되고 있다는 생각이 들어 다른 방법으로 우회하는 방법을 썼고 결과적으로 문제를 해결 할 수 있었습니다.Android에서 MAT사용법먼저 안드로이드 기기에서 힙 덤프를 수행하여 hprof파일을 생성해야 합니다. hprof파일을 생성하기 위해서 간단하게 취할 수 있는 2가지 방법이 있습니다.1. DDMS를 이용한 추출Eclipse의 DDMS를 이용하여 힙 덤프를 추출할 수 있습니다. 아 방법을 쓰려면 앱의 메니페스트 파일에 WRITE_EXTERNAL_STORAGE 권한을 부여해야 하며, sdcard에 쓸 수 있는 권한이 있어야 합니다. 이 방법을 통해 sdcard경로에 앱 패키지명의 hprof파일이 생성됩니다.2. Heap dump method안드로이드 API에서 제공하는 메서드 중에 hprof파일을 생성하는 메서드인 dumpHprofData가 있습니다. 이 메서드는 Debug 클래스의 메서드인 것을 알 수 있는데, 이 Debug 클래스에는 앱의 상태를 점검할 수 있는 여러 유용한 메서드가 있으므로 나중에 필요하면 사용할 수 있도록 익혀두면 좋습니다.Android hporf 파일 변환앞서 설명한 방법을 적용하여 hprof파일을 추출하였어도 안드로이드에서 추출한 hprof파일은 MAT에서 받아들이는 일반적인 hprof포맷과 다르기 때문에 먼저 변환하는 과정이 필요합니다. 이러한 기능을 제공하는 것이 기본 SDK에 포함된 hprof-conv유틸입니다. 이 유틸은 SDK폴더 내의 tools폴더 안에 있는데 사용하려면 콘솔에서$ hprof-conv <안드로이드용 hprof 파일> <변환할 hprof 파일> 를 치시면 됩니다. 이제 변환된 파일을 MAT에서 열면 분석을 하실 수 있습니다.More tipEclipse Memory Analyser (MAT) - TutorialMemory Analyzer BlogJava Performance blog상기의 사이트들은 MAT과 Java의 메모리 처리에 관련된 내용을 포스팅한 사이트들입니다. 한 번 들러보면 좋은 정보를 얻을 수 있을것입니다.#스포카 #꿀팁 #개발 #개발자 #스킬스택 #스택소개 #인사이트
조회수 1704

채권 투자할 때 꼭 봐야 하는 재무제표 속 숫자들!

우리는 채권형 크라우드펀딩을 통해 자금이 꼭 필요한 기업에 직접 돈을 빌려줄 수 있습니다. 그런데 이 회사가 만기에 약속대로 돈을 갚을지 아니면 “미안해. 내가 요즘 좀 어려워서… 조금만 시간을 줘…”라고 말할지 어떻게 알 수 있을까요?이미 가진 돈이 많거나 돈을 열심히 벌고 있거나이 회사가 1) 얼마나 가졌는지(과거)와 2) 돈을 얼마나 벌고 있는지(현재)를 살펴보면 어느 정도 예측할 수 있어요. “내가 재산이 이만큼 있으니 이걸 팔아서라도 갚을 거야.” 아니면 “아직 가진 건 없지만 얼마씩 벌고 있으니까 언제까지 갚을게.” 중 하나는 약속이 되어야 하죠. 사람이면 연봉과 재산을 확인해보면 될 텐데 기업이면 재무제표를 봐야 알 수 있습니다.‘아…. 재무제표…?’ 벌써 현기증 나신다고요? 걱정 마세요. 쉽게 알려드릴게요.Ⅰ. 재무상태표: 일단 지금 가진 것 좀 봅시다재무상태표를 보면 지금 이 회사가 얼마나 가졌는지 쉽게 알 수 있습니다. 재무 "상태"”라는 말에서 알 수 있듯이 지금 이 시점에 이 회사가 얼마를 갖고 있고(자본), 빚은 얼마라서(부채) 총자산은 얼마인가를 보여주는 게 바로 재무상태표입니다.먼저 자산은 자본과 부채의 합을 의미합니다. 자본이 2억인데 부채가 2억이면? 2억에서 2억을 빼니 자산은 0원 아니냐 하실 수 있지만, 이 경우 자산은 4억이 됩니다. 예를 들어볼까요? 제가 2억을 모으고, 2억을 대출받아 아파트를 샀습니다. 빚이 2억이긴 하지만 4억짜리 아파트는 제 명의니까 제 자산은 4억이 되는 거죠. 1. 부채비율이 낮은 기업을 찾아라! 이처럼 자산이 많은 것도 중요하지만, 그중에서도 부채(빌린 돈)보다 자본(내 돈)이 많을수록 안정적인 회사입니다. 자본 대비 부채가 적어야(부채비율이 낮을수록) 돈을 돌려받을 가능성이 커지는 거죠.2. 자산 중에서도 유동자산이 많은 기업을 찾아라! 그럼 부채는 적고, 자본은 많으면 무조건 좋은 거냐? 하시면 그건 또 아니에요. 자산은 보통 유동자산과 비유동자산으로 나뉩니다. 유동자산은 1년 이내 현금화할 수 있는 자산을, 비유동자산은 1년 이내에 현금화하기 어려운 자산을 의미합니다. 빨리 현금으로 바꿀 수 있는 유동자산이 많을수록 안심이 되겠죠? 반면에 부채의 경우 1년 안에 갚아야 하는 유동부채보다 1년 이상 갚지 않아도 되는 비유동부채가 많을수록 채권자에게 유리합니다. 3. 현금이 최고야!유동자산은 또다시 당좌자산과 재고자산으로 나눌 수 있습니다. 당좌자산은 기업이 정상적으로 운영되는 경우 바로 현금화할 수 있는 자산을 말해요. 현금이나 예적금 같은 단기 금융상품, 외상을 의미하는 매출채권 등이 여기에 포함됩니다.반면에 재고자산은 기업이 판매를 위해 생산 중인 상품이나, 부품, 원료, 재료, 소모품 등을 말해요. 당좌자산보다는 현금화가 어렵죠. 그래서 유동자산 중에서도 당좌자산이 많으면 조금 더 믿어도 됩니다. 당좌자산 중에서도 외상인 매출채권보다는 현금 및 현금성 자산이 많은 회사가 좋겠죠?하지만 현금이나 빠르게 현금화할 수 있는 형태의 자산의 비율이 높은 기업일수록 돈을 빌리려고 하지 않겠죠. 그래서 이런 상황이 발생합니다. “재무상태표만 봐서는 잘 모르겠습니다. 현금화하기 쉬운 자산이 아예 없지는 않은데 충분한지 모르겠어요.” 그럼 이제 이 회사가 요즘 얼마나 벌고 있는지 알아볼 차례입니다. Ⅱ. 손익계산서: 그래서 얼마나 벌고 있나요?이 회사가 얼마를 벌고 있느냐를 보려면 재무제표 중에 손익계산서를 보면 됩니다. 손익계산서는 말 그대로 회사의 손실과 이익을 계산한 것입니다. 일정 기간 동안(보통은 1년 단위) 기업활동을 통해 얼마의 수익을 벌었고, 얼마의 비용이 들었는지 알려줍니다. 손익계산서에서 꼭 봐야 할 부분은 매출액과 영업이익입니다. 해당 기간 얼마나 팔았고, 그래서 얼마 남았나를 의미하죠.  *매출액: 해당 기간에 판매한 제품이나 서비스 등의 총금액을 말합니다.*매출원가: 제품이나 서비스를 만들고 파는데 드는 비용을 의미합니다.*매출총액: 매출총액 = 매출액- 매출원가입니다. *판매비와 관리비(줄여서 판관비): 제품이나 서비스를 판매하고 관리하는 데 드는 비용입니다. 인건비, 광고비, 임대료, 공과금 등이 포함되어요.*영업이익: 매출총이익- 판관비입니다.1. 매출액이 증가하고 있는가매출액은 해당 기간에 판매한 제품이나 서비스 등의 총금액을 말합니다. 기본적으로 매출액이 전기보다 증가 추세에 있는지, 제품이나 서비스를 만드는 데 드는 총비용인 매출원가가 매출액 대비 지나치게 높지는 않은지 살펴봐야 합니다. 사람도 그렇잖아요. 제가 돈을 벌기는 버는데 연봉이 계속 줄거나, 버는 돈에 비해 나가는 돈이 너무 많으면 다음 달 카드 대금 갚을 돈이 없겠죠. 2. 영업이익이 +인가손익계산서에서 가장 중요한 것을 하나만 꼽으라면 영업이익입니다. 매출액에서 매출원가를 뺀 매출총액에서 제품을 판매하고 관리하는 데 드는 비용까지 빼면 영업이익입니다. 영업이익이 0보다 작으면 이 회사는 적자를 내고 있는 상태입니다. 반대로 영업이익이 0보다 크고, 지속적으로 늘어나고 있다면 이 회사가 착실하게 성장하고 있다는 뜻이겠죠. 영업이익이 큰 폭으로 늘어나고 있다면 참 좋은 신호입니다. 하지만 채권자는 돈 빌려주기 전에 미리 이자율을 설정하기 때문에 영업이익이 엄청나게 늘어난다고 돈을 더 많이 돌려받지 않습니다. 내 돈을 간신히 갚을 정도로 돈을 버는 기업이나 엄청나게 많은 돈을 기업이나 갚는 돈(원금+이자)은 똑같습니다. 그래서 채권자의 경우 회사가 내는 영업 이익이 지금 빌리려는 돈을 갚을 정도가 되는지만 알아보면 손실은 피할 수 있어요.3. [주의!] 당기순이익의 함정을 조심하세요.기업의 손익계산서를 보면 영업이익 아래에 몇 개의 항목이 더 나와있습니다.*영업외수익(영업외비용): 기업의 주요 영업활동이 아닌 활동으로 발생하는 수익(비용)을 의미합니다. 이자수익(이자비용), 유형자산처분이익(유형자산처분손실) 등이 포함되죠. *법인세차감전순이익: 영업이익 +영업외수익-영업외비용=법인세차감전순이익*법인세: 법인의 소득에 부과하는 세금*당기순이익: 영업이익 + 영업외수익 – 영업외비용 – 법인세 = 당기순이익그중에서도 가장 아래에 표기되는 게 바로 당기순이익인데요. 매출액에서 매출원가, 판관비, 영업외이익, 법인세를 모두 뺀 당기순이익이 크면 당연히 좋은 신호입니다. 하지만 당기순이익은 큰데 영업이익은 적은 기업이라면 조심하셔야 해요. 기업의 주요 영업활동으로 얻는 이익은 적은데, 해당 기간에 부동산 등의 유형자산을 처분해서 얻은 영업외수익이 있다면 일시적으로 당기순이익이 크게 잡힐 수 있기 때문입니다. “매출액과 영업이익, 그리고 당기순이익이 증가하는 기업이 좋다. 하지만, 당기순이익보다 중요한 것은 영업이익이다.”라고 정리할 수 있겠네요.투자 한 번 하기 쉽지 않죠? 그래도 채권은 과거(재무상태 표)와 현재(손익계산서)의 기록으로 이 기업의 상환 능력을 어느 정도 예측할 수 있습니다. 와디즈 채권 프로젝트의 투자설명서를 내려받으시면 재무상태 표와 손익계산서가 포함되어 있어요. 날도 더운데 에어컨 아래에서 현금 및 현금성 자산을 많이 보유한 기업과 영업이익이 날로 커지며 성장하는 기업을 골 라보는 거 어떠신가요? 내년엔 이자 소득으로 에어컨 더 빵빵하게 틀 수 있을지도 모릅니다.다음 주에는 미래를 보고 주식에 투자하는 법을 알려드립니다!글 김영아 와디즈의 막내 투자 콘텐츠 디렉터(CD)입니다. 우리의 작은돈이 필요한 곳에 모여 세상을 바꾸는 꿈을 꾸고 있어요. 아 물론 돈도 벌면서요. 더 많은 ‘우리’에게 크라우드 펀딩을 알리기 위해 어렵고 복잡한 투자 이야기를 쉽고 재미있게 풀어내는 일을 합니다.그림 이윤경와디즈의 브랜드 디자이너입니다. 좋은 '사람' 와디즈가 좋은 '브랜드'로 무럭무럭 자라나도록 물을 주고 있어요. 더 많은 사람들의 시작을 돕기를, 그리고 더 재미있는 세상을 만들어 가기를 기대하고 있습니다. #와디즈 #금융지식 #서비스소개
조회수 1037

안드로이드 클라이언트 Reflection 극복기

비트윈 팀은 비트윈 안드로이드 클라이언트(이하 안드로이드 클라이언트)를 가볍고 반응성 좋은 애플리케이션으로 만들기 위해 노력하고 있습니다. 이 글에서는 간결하고 유지보수하기 쉬운 코드를 작성하기 위해 Reflection을 사용했었고 그로 인해 성능 이슈가 발생했던 것을 소개합니다. 또한 그 과정에서 발생한 Reflection 성능저하를 해결하기 위해 시도했던 여러 방법을 공유하도록 하겠습니다.다양한 형태의 데이터¶Java를 이용해 서비스를 개발하는 경우 POJO로 서비스에 필요한 다양한 모델 클래스들을 만들어 사용하곤 합니다. 안드로이드 클라이언트 역시 모델을 클래스 정의해 사용하고 있습니다. 하지만 서비스 내에서 데이터는 정의된 클래스 이외에도 다양한 형태로 존재합니다. 안드로이드 클라이언트에서 하나의 데이터는 아래와 같은 형태로 존재합니다.JSON: 비트윈 서비스에서 HTTP API는 JSON 형태로 요청과 응답을 주고 받고 있습니다.Thrift: TCP를 이용한 채팅 API는 Thrift를 이용하여 프로토콜을 정의해 서버와 통신을 합니다.ContentValues: 안드로이드에서는 Database 에 데이터를 저장할 때, 해당 정보는 ContentValues 형태로 변환돼야 합니다.Cursor: Database에 저장된 정보는 Cursor 형태로 접근가능 합니다.POJO: 변수와 Getter/Setter로 구성된 클래스 입니다. 비지니스 로직에서 사용됩니다.코드 전반에서 다양한 형태의 데이터가 주는 혼란을 줄이기 위해 항상 POJO로 변환한 뒤 코드를 작성하기로 했습니다.다양한 데이터를 어떻게 상호 변환할 것 인가?¶JSON 같은 경우는 Parsing 후 Object로 변환해 주는 라이브러리(Gson, Jackson JSON)가 존재하지만 다른 형태(Thrift, Cursor..)들은 만족스러운 라이브러리가 존재하지 않았습니다. 그렇다고 모든 형태에 대해 변환하는 코드를 직접 작성하면 필요한 경우 아래와 같은 코드를 매번 작성해줘야 합니다. 이와 같이 작성하는 경우 Cursor에서 원하는 데이터를 일일이 가져와야 합니다.@Overridepublic void bindView(View view, Context context, Cursor cursor) { final ViewHolder holder = getViewHolder(view); final String author = cursor.getString("author"); final String content = cursor.getString("content"); final Long timeMills = cursor.getLong("time"); final ReadStatus readStatus = ReadStatus.fromValue(cursor.getString("readStatus")); final CAttachment attachment = JSONUtils.parseAttachment(cursor.getLong("createdTime")); holder.authorTextView.setText(author); holder.contentTextView.setText(content); holder.readStatusView.setReadStatus(readStatus); ...}하지만 각 형태의 필드명(Key)이 서로 같도록 맞춰주면 각각의 Getter와 Setter를 호출해 형태를 변환해주는 Utility Class를 제작할 수 있습니다.@Overridepublic void bindView(View view, Context context, Cursor cursor) { final ViewHolder holder = getViewHolder(view); Message message = ReflectionUtils.fromCursor(cursor, Message.class); holder.authorTextView.setText(message.getAuthor()); holder.contentTextView.setText(message.getContent()); holder.readStatusView.setReadStatus(message.getReadStatus()); ...}이런 식으로 코드를 작성하면 이해하기 쉽고, 모델이 변경되는 경우에도 유지보수가 비교적 편하다는 장점이 있습니다. 따라서 필요한 데이터를 POJO로 작성하고 다양한 형태의 데이터를 POJO로 변환하기로 했습니다. 서버로부터 받은 JSON 혹은 Thrift객체는 자동으로 POJO로 변환되고 POJO는 다시 ContentValues 형태로 DB에 저장됩니다. DB에 있는 데이터를 화면에 보여줄때는 Cursor로부터 데이터를 가져와서 POJO로 변환 후 적절한 가공을 하여 View에 보여주게 됩니다.POJO 형태로 여러 데이터 변환필요Reflection 사용과 성능저하¶처음에는 Reflection을 이용해 여러 데이터를 POJO로 만들거나 POJO를 다른 형태로 변환하도록 구현했습니다. 대상 Class의 newInstance/getMethod/invoke 함수를 이용해 객체 인스턴스를 생성하고 Getter/Setter를 호출하여 값을 세팅하거나 가져오도록 했습니다. 앞서 설명한 ReflectionUtils.fromCursor(cursor, Message.class)를 예를 들면 아래와 같습니다.public T fromCursor(Cursor cursor, Class clazz) { T instance = (T) clazz.newInstance(); for (int i=0; i final String columnName = cursor.getColumnName(i); final Class<?> type = clazz.getField(columnName).getType(); final Object value = getValueFromCursor(cursor, type); final Class<?>[] parameterType = { type }; final Object[] parameter = { value }; Method m = clazz.getMethod(toSetterName(columnName), parameterType); m.invoke(instance, value); } return instance;}Reflection을 이용하면 동적으로 Class의 정보(필드, 메서드)를 조회하고 호출할 수 있기 때문에 코드를 손쉽게 작성할 수 있습니다. 하지만 Reflection은 튜토리얼 문서에서 설명된 것처럼 성능저하 문제가 있습니다. 한두 번의 Relfection 호출로 인한 성능저하는 무시할 수 있다고 해도, 필드가 많거나 필드로 Collection을 가진 클래스의 경우에는 수십 번이 넘는 Reflection이 호출될 수 있습니다. 실제로 이 때문에 안드로이드 클라이언트에서 종종 반응성이 떨어지는 경우가 발생했습니다. 특히 CursorAdapter에서 Cursor를 POJO로 변환하는 코드 때문에 ListView에서의 스크롤이 버벅이기도 했습니다.Bytecode 생성¶Reflection 성능저하를 해결하려고 처음으로 선택한 방식은 Bytecode 생성입니다. Google Guice 등의 다양한 자바 프로젝트에서도 Bytecode를 생성하는 방식으로 성능 문제를 해결합니다. 다만 안드로이드의 Dalvik VM의 경우 일반적인 JVM의 Bytecode와는 스펙이 다릅니다. 이 때문에 기존의 자바 프로젝트에서 Bytecode 생성에 사용되는 CGLib 같은 라이브러리 대신 Dexmaker를 이용하여야 했습니다.CGLib¶CGLib는 Bytecode를 직접 생성하는 대신 FastClass, FastMethod 등 펀리한 클래스를 이용할 수 있습니다. FastClass나 FastMethod를 이용하면 내부적으로 알맞게 Bytecode를 만들거나 이미 생성된 Bytecode를 이용해 비교적 빠른 속도로 객체를 만들거나 함수를 호출 할 수 있습니다.public T create() { return (T) fastClazz.newInstance();} public Object get(Object target) { result = fastMethod.invoke(target, (Object[]) null);} public void set(Object target, Object value) { Object[] params = { value }; fastMethod.invoke(target, params);}Dexmaker¶하지만 Dexmaker는 Bytecode 생성 자체에 초점이 맞춰진 라이브러리라서 FastClass나 FastMethod 같은 편리한 클래스가 존재하지 않습니다. 결국, 다음과 같이 Bytecode 생성하는 코드를 직접 한땀 한땀 작성해야 합니다.public DexMethod generateClasses(Class<?> clazz, String clazzName){ dexMaker.declare(declaringType, ..., Modifier.PUBLIC, TypeId.OBJECT, ...); TypeId<?> targetClassTypeId = TypeId.get(clazz); MethodId invokeId = declaringType.getMethod(TypeId.OBJECT, "invoke", TypeId.OBJECT, TypeId.OBJECT); Code code = dexMaker.declare(invokeId, Modifier.PUBLIC); if (isGetter == true) { Local<Object> insertedInstance = code.getParameter(0, TypeId.OBJECT); Local instance = code.newLocal(targetClassTypeId); Local returnValue = code.newLocal(TypeId.get(method.getReturnType())); Local value = code.newLocal(TypeId.OBJECT); code.cast(instance, insertedInstance); MethodId executeId = ... code.invokeVirtual(executeId, returnValue, instance); code.cast(value, returnValue); code.returnValue(value); } else { ... } // constructor Code constructor = dexMaker.declare(declaringType.getConstructor(), Modifier.PUBLIC); Local<?> thisRef = constructor.getThis(declaringType); constructor.invokeDirect(TypeId.OBJECT.getConstructor(), null, thisRef); constructor.returnVoid();}Dexmaker를 이용한 방식을 구현하여 동작까지 확인했으나, 다음과 같은 이유로 실제 적용은 하지 못했습니다.Bytecode를 메모리에 저장하는 경우, 프로세스가 종료된 이후 실행 시 Bytecode를 다시 생성해 애플리케이션의 처음 실행성능이 떨어진다.Bytecode를 스토리지에 저장하는 경우, 원본 클래스가 변경됐는지를 매번 검사하거나 업데이트마다 해당 스토리지를 지워야 한다.더 좋은 방법이 생각났다.Annotation Processor¶최종적으로 저희가 선택한 방식은 컴파일 시점에 형태변환 코드를 자동으로 생성하는 것입니다. Reflection으로 접근하지 않아 속도도 빠르고, Java코드가 미리 작성돼 관리하기도 편하기 때문입니다. POJO 클래스에 알맞은 Annotation을 달아두고, APT를 이용해 Annotation이 달린 모델 클래스에 대해 형태변환 코드를 자동으로 생성했습니다.형태 변환이 필요한 클래스에 Annotation(@GenerateAccessor)을 표시합니다.@GenerateAccessorpublic class Message { private Integer id; private String content; public Integer getId() { return id; } ...}javac에서 APT 사용 옵션과 Processor를 지정합니다. 그러면 Annotation이 표시된 클래스에 대해 Processor의 작업이 수행됩니다. Processor에서 코드를 생성할 때에는 StringBuilder 등으로 실제 코드를 일일이 작성하는 것이 아니라 Velocity라는 template 라이브러리를 이용합니다. Processor는 아래와 같은 소스코드를 생성합니다.public class Message$$Accessor implements Accessor { public kr.co.vcnc.binding.performance.Message create() { return new kr.co.vcnc.binding.performance.Message(); } public Object get(Object target, String fieldName) throws IllegalArgumentException { kr.co.vcnc.binding.performance.Message source = (kr.co.vcnc.binding.performance.Message) target; switch(fieldName.hashCode()) { case 3355: { return source.getId(); } case -1724546052: { return source.getContent(); } ... default: throw new IllegalArgumentException(...); } } public void set(Object target, String fieldName, Object value) throws IllegalArgumentException { kr.co.vcnc.binding.performance.Message source = (kr.co.vcnc.binding.performance.Message) target; switch(fieldName.hashCode()) { case 3355: { source.setId( (java.lang.Integer) value); return; } case -1724546052: { source.setContent( (java.lang.String) value); return; } ... default: throw new IllegalArgumentException(...); } }}여기서 저희가 정의한 Accessor는 객체를 만들거나 특정 필드의 값을 가져오거나 세팅하는 인터페이스로, 객체의 형태를 변환할 때 이용됩니다. get,set 메서드는 필드 이름의 hashCode 값을 이용해 해당하는 getter,setter를 호출합니다. hashCode를 이용해 switch-case문을 사용한 이유는 Map을 이용하는 것보다 성능상 이득이 있기 때문입니다. 단순 메모리 접근이 Java에서 제공하는 HashMap과 같은 자료구조 사용보다 훨씬 빠릅니다. APT를 이용해 변환코드를 자동으로 생성하면 여러 장점이 있습니다.Reflection을 사용하지 않고 Method를 직접 수행해서 빠르다.Bytecode 생성과 달리 애플리케이션 처음 실행될 때 코드 생성이 필요 없고 만들어진 코드가 APK에 포함된다.Compile 시점에 코드가 생성돼서 Model 변화가 바로 반영된다.APT를 이용한 Code생성으로 Reflection 속도저하를 해결할 수 있습니다. 이 방식은 애플리케이션 반응성이 중요하고 상대적으로 Reflection 속도저하가 큰 안드로이드 라이브러리에서 최근 많이 사용하고 있습니다. (AndroidAnnotations, ButterKnife, Dagger)성능 비교¶다음은 Reflection, Dexmaker, Code Generating(APT)를 이용해 JSONObject를 Object로 변환하는 작업을 50번 수행한 결과입니다.성능 비교 결과이처럼 최신 OS 버전일수록 Reflection의 성능저하가 다른 방법에 비해 상대적으로 더 큽니다. 반대로 Dexmaker의 생성 속도는 빨라져 APT 방식과의 성능격차는 점점 작아집니다. 하지만 역시 APT를 통한 Code 생성이 모든 환경에서 가장 좋은 성능을 보입니다.마치며¶서비스 모델을 반복적으로 정의하지 않으면서 변환하는 방법을 알아봤습니다. 그 과정에서 Reflection 의 속도저하, Dexmaker 의 단점도 설명해 드렸고 결국 APT가 좋은 해결책이라고 판단했습니다. 저희는 이 글에서 설명해 드린 방식을 추상화해 Binding이라는 라이브러리를 만들어 사용하고 있습니다. Binding은 POJO를 다양한 JSON, Cursor, ContentValues등 다양한 형태로 변환해주는 라이브러리입니다. 뛰어난 확장성으로 다양한 형태의 데이터로 변경하는 플러그인을 만들어서 사용할 수 있습니다.Message message = Bindings.for(Message.class).bind().from(AndroidSources.cursor(cursor));Message message = Bindings.for(Message.class).bind().from(JSONSources.jsonString(jsonString));String jsonString = Bindings.for(Message.class).bind(message).to(JSONTargets.jsonString());위와 같이 Java상에 존재할 수 있는 다양한 타입의 객체에 대해 일종의 데이터 Binding 기능을 수행합니다. Binding 라이브러리도 기회가 되면 소개해드리겠습니다. 윗글에서 궁금하신 점이 있으시거나 잘못된 부분이 있으면 답글을 달아주시기 바랍니다. 감사합니다.저희는 언제나 타다 및 비트윈 서비스를 함께 만들며 기술적인 문제를 함께 풀어나갈 능력있는 개발자를 모시고 있습니다. 언제든 부담없이 jobs@vcnc.co.kr로 이메일을 주시기 바랍니다!
조회수 1154

영어공부 꾸준히 하는 법

파파고나 구글 번역기와 같은 통번역 기기가 속속 등장하고 있다.기술이 발전하면 외국어가 더 필요 없어질 것이라고 생각했는데, 영어는 일상생활에 더욱 깊숙이 파고든다.출장과 해외여행이 점차 늘고, 길에서 마주치는 외국인도 많아졌다.업무에서도 영어자료를 쓸 일이 점점 늘어난다. 영어에 대한 문턱이 낮아진만큼 기대는 높아졌다. 번역기가 나오면 천국일 줄만 알았는데, 번역기 덕에 외려 부담감이 더 늘어가는 느낌이다. 기기에 의존하든 스스로의 능력에 기대든, 어쨋든 영어는 점점 생활의 일부가 되어가고 있다.나는 중학교때부터 영어를 끊임없이 배워왔다. 고등학교까지 나는 대학에 들어가기 위해 영어를 공부했고, 대학에서는 취직을 위해 영어를 배웠다. 그리고 지금은 세상에 뒤쳐지지 않고, 더 나은 정보를 얻기 위해 영어를 읽는다. 하지만 여전히 영어는 울렁울렁 거린다.나도 영어 잘하고 싶다..직장에 들어와 영어 공부를 한다고 학원도 다녀보고, 영어 신문도 보고 영어 잡지도 봤지만 결국은 오래가지 못했다. 시작할 때는 그 의지가 제법 호기로웠지만, 작심삼일이라는 단어는 꽤나 무거웠다. 하지만 그렇다고 영어공부를 포기할 수는 없다. 타의든 자의든 영어를 해야만 더 많은 기회에 노출되는 것이 현실이기 때문이다.마주친 현실과 꿈쩍않고 낮은 의지 사이에서 많은 고민을 했다.도대체 어떻게 해야 영어를 꾸준히 공부할 수 있을까 나란 놈에게 맞는 영어공부법을 찾기 위해 지난 실패들을 한번 돌아봤다. 학원은 공부하는 것보다 가는 게 힘들었다. 직장 동료와 술자리도 가져야 하고 친구도 만나야 하는 일정속에서, 학원갈 시간이 살아남을 틈은 없었다. 영어 신문과 잡지는 솔직히 어려웠다. 트럼프나 시진핑의 대화는 그렇게 까지 관심이 가진 않았다. 내 친구도 이야기도 아닌데. 그러다보니 자연스럽게 공부와 멀어졌다. 하지만 영어는 꾸준히 공부해야 했다.경제학과 세상에 대해 공부하기에 참 좋은 잡지지만, 어렵다인터넷을 뒤지다 마지못해 재미있는 영어공부법이라 하는 미드보기를 뒤늦게 시작했다. 남들은 10년전에 이미 경험했던 그 미드보기다. 나이 서른에 뒤늦게 24시도 보고, 프리즌 브레이커도 봤다. 영어 공부한다는 핑계로 한글 자막을 틀어놓고 매일을 킬킬거렸다. 영어공부가 이렇게 재미있을 수가. 영어가 느는지 알 수는 없었지만 아무튼 하루에 1-2시간씩 영어발음을 꾸준히 들었다. 당연히 크게 효과는 없었다. 두달 가량을 거의 매일 미드를 봤으니 못해도 50시간은 공부했을 텐데, 영어 말하기는 제자리였다. 드라마에서 수도 없이 나왔던 "범인이 아직 잡히지 않았어" 라는 문장을 나는 두달후에도 여전히 "he is still our there" 로 표현했다. (이 표현도 틀린건 아니지만, 드라마에서 계속 나왔던 표현은 The criminal is still at large 라는 표현이었다) 대통령 케빈스페이시와 영부인 로빈라이트의 영어발음은 정말 좋다 ⓒ Netflix Original House of Cards재미로 미드보기의 효과없음을 여실히 느끼고 나는 그날부터 영어자막을 틀어놨다. 그제서야 영어공부를 하는 것 같은 느낌을 조금 받을 수 있었다. 잘 모르겠는데 중요한 표현 (중요한 표현 같다는 느낌이 있다!) 은 뭐라고 한건지 다시한번 돌려도 보고, 이해가 안되면 이해가 되는 장면으로 되돌려 보기도 했다. 그렇게 직장인이 되고 처음으로 작심삼일의 엄벌을 피해 영어 공부를 꾸준히 하기 시작했다. yay!하지만 어디 완벽한 공부법이란게 있을까. 영어자막 미드보기는 영어 듣기랑 빠른 독해에 큰 도움이 됐지만, 영어로 말하기에는 별반 차이를 주지 못했다. 외국 바이어와 드라마 이야기를 하면서 친해지는 데에는 큰 기여를 했다. 그래서 두달 전부터는 미드에서 나오는 표현들을 하루에 두세개씩 노트에 적기 시작했다. 어떤 날은 한문장을 적기도 하고, 간혹 느낌이 충만한 날에는 10문장을 쓰기도 했다. 하지만 10문장을 쓴 다음날은 어쩐지 한문장도 쓰기가 싫어졌다. 그렇게 한달이 지난 시점부터는 하루에 3문장을 꾸준히 쓰고 있다. 부담이 되면 또다시 작심삼일의 엄벌에 처해질 것을 알기에, 지금은 욕심을 더 내지 않고 딱 하루 3문장만 쓰고 있다.노트에 계속 적으면 복습에도 도움이 된다그럼 이제 사람들이 가장 궁금해 할 3문장 쓰기의 효과에 대해 이야기를 해보겠다.무엇이 달라졌을까? 혹시 엄청난 기대를 하고 있다면 정신을 바로 차려야 한다. 애초에 기대가 너무 크면 안된다. 고작 하루 5분의 시간을 투자했을 뿐이다. 하지만 5분의 시간을 투자한 것 치고는 대단한 변화가 있었으니, 1. 우선 생활영어 표현이 엄청나게 많이 늘었다. 똑같은 표현은 훨씬 자연스러워졌다. 바이어를 만나면 취미가뭐냐고 물을 때 이제는 "What's your hobby?" 대신 "what do you do for fun?" 을 쓴다. (우리도 시간날 때 뭐하냐고 묻지 취미가 뭔지 묻지를 않는다!) 2. 자연스러운 표현을 쓴다는 자신감을 얻으니, 외국인과의 대화를 더 많이 시도하게 됐다. 초면인 사람을 만나면 뭐라고 말할지 몇번을 미리 연습했고, 영어 실력때문에 ice-braking 을 포기했었던 나지만, 지금은 나름 몇마디를 할 수 있다. 자연스레 영어가 늘어가는 재미도 느꼈다. 새로 배운 표현을 외국인이 바로 알아들었을 때의 그 쾌감은 정말 이루말할 수가 없다. 3. 끝으로 한가지를 덧붙이자면, (개인적으로는 이게 가장 만족스럽다) 무엇보다 드디어 영어를 꾸준히 공부하는 방법을 찾았다는 것이다. 영어 실력을 늘려야하고, 정해진 공부법은 맞지 않아 꾸준히 할 수 없어 답답했던 마음이 지금은 완전히 사라졌다. 어쩌면 무언가를 해야한다는 강박을 해결했기 때문일 수도 있다. 하지만 나는 이제 영어를 꾸준히 공부하고 있고, 그 성과도 매일매일의 업무에서 확인하고 있다.하루 3문장 영어쓰기는 이제 고작 2달이 지났다. 문득 내가 이 습관을 계속 유지할 수 있을까 걱정이 되기도 한다. 하지만 또 어느순간 포기하면 어떠랴. 새로운 방법을 다시 찾으면 된다. 우선은 지금의 공부법을 할 수 있는 한 유지해보려고 한다. 당장은 미드를 보고 있지만, 나중에는 그동안 실패했던 영어 신문과 영어 잡지도 똑같은 방법으로 공부를 해볼 수 있지 않을까 생각하고 있다. 6개월에 되는 시점에 다시한번 글을 써보겠다. 부디 그때까지 꾸준히 이 습관을 계속 유지할 수 있기를!끝으로, '파파고와 구글 번역기가 더 발전해서 영어능력이 정말 필요없어지면 어쩌지' 라는 쓸데 없는 걱정도 해본다. (가진자의 걱정이 이런거구나 싶다)by 아직도 영어가 고픈 30대 직장인챌린저스, 확실한 목표달성 꾸준한 습관형성 앱www.chlngers.com
조회수 1857

10년 넘게 사업을 하며 배우다

첫 사업 아이템“저는 카바조 사업을 시작하기 전에도 꾸준히 사업을 했습니다. 고등학교 때 해외에서 물건을 사다가 한국에서 판매하는 것이 제 첫 사업 아이템이었습니다. 대학교 때는 옷을 직접 만들어 판매하기도 했습니다. 옷을 만들 때 아침마다 동대문에 가서 원단과 부자재를 사며 사장님들과 수다도 떨고 옷이 제작되는 공장에 매일 가서 하나하나 체크하며 옷을 만들었습니다. 그런 경험을 통해 발로 뛰는 만큼 결과가 나온다는 것을 배웠습니다.” 크라우드소싱 플랫폼의 창업 경험“의류 사업을 통해 모아둔 자금으로 디자이너와 기업 고객을 이어주는 국내 디자인 크라우드 소싱 모델 론칭을 준비했습니다. 홍대에 다니다 보니 주변에 디자이너 친구들이 많았고, 그 친구들의 용돈벌이를 살펴봤더니 불규칙한 수익에 대게 인맥으로 소개받아서 연결되는 경우가 대부분 이었습니다. 어떻게 하면 효율적으로 기업과 디자이너가 함께 일할 수 있을까 생각하던 중 해외 디자인 크라우드 소싱 모델을 알게 되었습니다. 모아둔 사업자금으로 사업을 준비하던 중 같은 서비스를 준비하는 라우드소싱을 알게 되었습니다. 당시 라우드소싱 대표였던 장경록 대표와 만나 함께 하자고 제안을 해 라우드소싱의 초기 멤버로 들어가게 되었습니다.” 가장 중요한 건 사람“플랫폼 서비스는 서로 다른 양 측의 니즈를 이어주는 역할을 하기 때문에 그 사이에서 발생할 수 있는 분쟁을 중간에서 해소해주는 역할이 중요했습니다. 또한 회사를 운영하면서 서비스, 기술, 자금, 마케팅도 중요하지만 가장 중요한 것은 함께 하는 사람이라는 것을 느꼈습니다. 이후 학업 때문에 라우드소싱에서 나와 농협 식품안전연구소의 디자인 컨설턴트를 하면서 카바조 비즈니스 모델을 준비하게 됐는데, 그간 온오프라인에서 사람들도 직접 만나면서 영업도 하고 스타트업을 운영해 본 경험이 카바조 서비스를 운영할 때 큰 도움이 된 것 같습니다.” 행복한 세상“모두가 행복한 세상을 꿈꾸며 살아가고 있습니다. 각자 행복의 기준은 다르지만 그 단어에서 느끼는 감정은 모두 비슷할 것 같습니다. 카바조를 운영하면서 만난 정비사분들 가운데 카바조를 통해 돈을 벌어 행복을 느끼는 분들과 자신의 기술이 누군가에게 도움이 된다는 것이 행복하다는 분들이 계셨습니다. 중고차를 사시는 분들도 차를 구입하시면서 행복을 느낍니다. 저는 또 그런 정비사분들을 통해 지금의 사업이 성장해나가는 것을 보고 또 행복을 느끼고 있습니다. 이 모든 행복을 지키려면 지금의 카바조가 사라지지 않게 더욱 노력해야 합니다. 결론적으로는 행복한 세상을 위해 카바조를 열심히 해야겠죠.” #카바조 #창업자 #스타트업 #스타트업초기 #초기창업 #인터뷰 #창업경험 #경험공유
조회수 17116

아마존 매출 신고 방법, 영세율,  부가세 환급

안녕하세요, 대한민국 사업자들의 해외 전자상거래 진출(아마존 판매)을 도와주는 컨설팅 회사이자 업무대행사 컨택틱의 이이삭 대표입니다.오늘 여러분들께 말씀드리고 싶은 것은 영세율에 대한 개념입니다. 제 포스트를 읽으시는 분들은 수출에 관심이 있거나 이미 하고 계신 분들이 대부분일텐데요, 대한민국은 수출을 장려하는 나라이기 때문에 수출을 하는 분들은 내수 거래를 하는 분들보다 혜택을 보는 것들이 몇 가지 있습니다. 그 중에 매출이 영세율 적용되는 것이 많은 분들의 관심일거라고 생각합니다.영세율이란?세율(稅率)이라 함은 세액을 산출하기 위하여 과세표준에 곱하는 비율(從價稅의 경우) 또는 과세표준의 단위당 금액(從量稅의 경우)을 말하는 것으로, 이러한 세율이 영(zero)인 것을 영세율이라 한다... 중략… 또한 납부세액의 계산에 있어서도 매입세액의 공제가 허용되므로 항상 부(負)의 납부세액이 되며, 이는 환급세액으로서 정부로부터 환급받게 되므로 당해 사업자도 부가가치세를 전혀 부담하지 아니하게 된다. – 출처: Naver 지식백과위에서 보이듯이 영세율 매출은 부가세에서 면제되는 대상일 뿐만 아니라, 납부세액의 계산에 있어서도 매입세액의 공제가 허용되어 판매에 필요한 매입 부가세를 공제/환급 받을 수도 있다는 매우 큰 혜택이 있습니다.이해하기 쉬운 예시일반적인 내수 거래의 부가세 계산 예시:매입: 100원 (공급가 90원에 매입 부가세 10원)매출: 1000원 (공급가 900원에 매출 부가세 100원)최종 납부 부가세: 100원 – 10원 = 90원최종 수익: 1000원(매출) - 100원(매입가) - 90원(부가세) = 810원아마존 판매 부가세 계산 예시:매입: 100원 (공급가 90원에 매입 부가세 10원)매출: 1000원 (공급가 1000원에 매출 부가세 0원)최종 납부 부가세: 0원 – 10원 = -10원최종 수익: 1000원(매출) - 100원(매입가) + 10원(부가세) = 910원이렇게 영의 세율을 적용 받게 되면 물건을 사입 하면서 선 납부한 매입 부가세 10원을 분기당 부가세 신고/납부 때 환급 받게 되는 것입니다. 눈 여겨 볼만한 차이라면, 내수 거래를 하면 최종 수익이 (1000 – 100 – 90) 810원인 반면, 아마존에서 판매를 하면 수익이 (1000 – 100 +10) 910원인 만큼 수익성의 차이는 매입가가 높으면 높을수록 어마어마합니다.*위 예시는 아마존에 판매할 상품을 국내에서 소싱 했다는 전제 하에 작성되었습니다. 해외 소싱의 경우 한국을 경유하여 미국으로 수출할 경우 수입 부가세가 적용되겠죠? 해외에서 미국으로 가는 경우에는 부가세 납부가 일어나지 않으므로, 해당 사항이 없습니다.아마존 매출은 영세율 매출에 속하는 것일까?한 줄 답변: 네, 아마존 매출에서 발생하는 매출도 영세율 적용이 됩니다.영세율 적용이 되는 매출을 정리하자면, ‘국외에서 사용·소비될 재화 또는 용역… 중략… 또는 국내에서 사용·소비되는 재화 또는 용역의 공급이라 하더라도 외화를 획득하는 것인 경우에는 영의 세율이 적용된다.’ – 출처 Naver 지식백과이처럼, 대한민국 셀러가 아마존에서 판매한다는 것은 국외에서 사용·소비될 재화의 공급이기 때문에 영세율 적용을 받게 됩니다.아마존 매출을 영세율로 신고하려면 필요한 자료(주의: 홈택스에서 직접 부가세 신고를 하시는 분들도 계실텐데, 홈택스에서 어떻게 처리하는지까지는 제가 이 하나의 포스트에서 다루면 너무 글이 길어지기 때문에 세무사를 끼고 사업을 하는 분들을 위주로 설명 드리는 점 양해바랍니다)1. 아마존 월별 매출 자료아마존 메뉴 중에 Reports에서 Payments를 들어가시면 Monthly Sales Reports를 다운로드 받으실 수 있습니다. 여기서 Income (매출)과 Expense (지출)을 정말 한 눈에 쉽게 볼 수 있습니다. 세무대리인께서 해외 매출을 잡아 주실 때 해당 reports에서 ‘income’ 자료를 기준으로 신고하라고 당부하시면 됩니다. 그리고 ‘기타영세율’(부가세 신고할 때 수출 실적 명세서라는 서류에 기재하는 란 중 하나입니다)로써 아마존 매출을 해외 매출로 잡아달라고 얘기하시면 됩니다. 만약 환율 적용은 어떻게 해야하냐라고 세무사님께서 물어보신다면, 서울외국환중개 또는 관세청에 들어가서 보시면 월별 평균 환율을 알아보시면 됩니다. 아마존 매출 자료도 월별 단위로 다운 받은 것이니, 이렇게 월별 평균 환율로 계산하는 게 가장 편리하고 좋습니다 (정석을 따지려면 각 주문마다 화물이 반출되는 시점의 환율로 계산해야 하는데 이건 FBM으로 판매하든 FBA로 판매하든 판매건수가 한 두개도 아니고 현실적으로 좀 어렵죠 ^^;).2. 수출신고번호가 있는 수출 내역 (특송사를 통해 발송한 항공운송 화물, 포워딩사를 통해 발송한 해상운송 화물)우선 항공운송으로 보내는 화물들에 대해서 말씀드리겠습니다. FBA 배송대행을 하는 G-Trans 또는 도어로 같은 업체들이 있는데, 이런 곳들도 결국 전부 DHL, FedEx, UPS, THT 같은 특송사와 계약을 한 곳들입니다. 그리고 특송사들은 대부분 발송인이 화물을 보낼 때 ‘수출신고대행’이라는 옵션을 선택할 수 있게 해줍니다. 만약 이 옵션을 선택하게 되면, 해당 특송사가 발송인을 대신해서 ‘수출신고필증’을 작성하여 수출 신고를 대신해주는 것입니다. 물론 유료 서비스가 아니며, 15,000원 정도 내는 걸로 알고 있습니다. 아래에도 설명을 드렸지만 이런 특송사 또는 관세사가 귀사를 대신하여 수출신고를 해주는 것은 어쨌거나 외주를 맡기는 행위이기 때문에 돈을 지불하는 것은 당연하오니, 관세청 유니패스 전자통관시스템이라는 사이트에서 직접 수출 신고를 하는 방법을 터득하여 직접 처리 하시길 추천드립니다 (사업주의 입장에서 한 푼이라도 아낄 수 있다면 아끼는 게 좋겠죠 ^^). 만약 관세청 유니패스 전자통관시스템을 통해서 수출 신고하는 방법에 어려움이 있으신 분들은 컨택틱으로 연락 주시면 저희가 도와드릴 수 있는 한에서는 최대한 도와드리겠습니다. 이야기가 좀 샜네요. 어쨌거나 이렇게 수출신고를 대행하든 직접 하시든 수출신고를 하게 되면 수출신고필증이라는 문서를 받을 수가 있는데, 부가세 신고를 하실 때 이 자료들을 세무사/세무대리인께 전달해주시면 됩니다. 이 부분은 1번과 달리 ‘기타영세율적용’이 아니라 ‘수출재화’로 입력해야하는 부분이라고 세무사님께 말씀드리면 됩니다 (세무사님도 이건 당연히 알고 있을겁니다).3. 수출신고번호가 없는 수출 내역 (소형포장물 등)엄밀히 말하자면, 소형포장물 등을 통해서 나간 화물들은 수출 신고를 하지 않았어도 운송장들만 잘 모아 놓았다면 그걸로 ‘기타영세율’ 처리를 하여 해외 매출로 잡을 수 있습니다. 하지만 컨택틱에서는, 다소 번거롭긴 하더라도, 대한민국의 아마존 셀러들이 아무리 작은 화물도 관세청 유니패스 전자통관시스템에서 전부 수출 신고를 하는 것을 추천 드립니다. (왜 관세청 유니패스 전자통관시스템에서 수출신고를 직접 해야하냐? 관세사를 통해서 하면 돈이 너무 많이 들기 때문이거든요 ^^; 소형 포장물 하나하나마다 관세사를 통한 수출 신고를 하면 배보다 배꼽이 커지게 됩니다) 매출이 작으면 국세청에서도 눈 여겨 보지 않겠지만, 그렇다고 해서 이런 작업을 넘기면 안됩니다. 나중에 매출이 커지면 국세청의 조사가 있을 때 모든 자료를 진작에 미리 준비해 놓았다면 얼마나 편하겠어요? 그때 가서 안하던 것을 하려면 머리도 아프고 헷갈려서 오히려 더 골치 아파집니다. 습관의 중요성은 절대로 간과해선 안됩니다. 매출이 작을 때부터 아무리 작은 화물이라도 성실하게 수출 신고를 해야 나중에 매출이 커질 때에도 탈 없이 정리할 수 있을 겁니다. 어쨌거나 해당 분기에 속하는 모든 소형포장물들의 운송장을 정리해서 세무사님께 보내드리고, 해당 자료 또한 1번과 같이 ‘기타영세율적용’으로 잡고 해외 매출로 신고하시면 됩니다.저희 컨택틱도 아마존에서 판매를 하기 때문에 해외 매출을 분기별로 신고합니다. 제가 다소 완벽주의자라서... 저희 세무사님께 자료를 전달해드릴땐 이렇게 엑셀로 먼저 정리해서 보내드립니다 (누락되는 자료가 있으면 저만 손해니까요 ^^) 이렇게까지 정리하지 않으셔도 되지만, 혹여라도 나중에 국세청에서 조사가 들어온다면, 실제로 입금받은 외화 금액도 증명을 해야될 수도 있는데, 저희가 신고하는 해외 매출은 아마존에서 발표되는 매출을 그대로 신고하는 것이기 때문에 아마존의 수수료, FBA 수수료 등의 아마존 지출을 고려하지 않은 셈이 되어버립니다. 따라서 세무사에게 해외 매출분에서 사전 공제된 항목과 내역까지도 알려줘야한다고 생각해서 저는 이렇게까지 정리를 했습니다. 다시 한 번 말씀드리지만 이렇게까지 정리하는건 추후에 있을 세무 조사를 대비하여 하는 것일뿐, 월 매출이 억대를 초과하지 않는 이상 이렇게까지 할 필요는 없어보입니다.영세율 혜택의 실제 체감컨택틱이 아마존 판매를 도와준 고객사 중의 한 분의 실제 사례입니다. 이 분은 국내에서 유명 신발 브랜드 제품을 매입하고 아마존에 판매하는 분입니다. 제품 판매가가 $100이 넘어가는 고가의 제품들이라 당연히 매입할 때 발생하는 매입 부가세 또한 만만치 않았습니다. 이분이 3개월간 판매한 아마존 매출은 대략 $150,000 이었으며 (편의상 1억 5천만원이라고 하겠습니다), 매입에 사용된 금액은 대략 6천만원이었습니다.분기마다 컨택틱의 도움을 받고 해외 매출을 신고하였더니, 부가세 환급금이 (내수거래를 하지 않고 오직 아마존 판매만 하는 분이어서, 국내 매출이 없었습니다) 무려 500만원이나 넘게 나오셨습니다. 아마존에서 물건을 판매할 때 실제 남기는 수익이 얼마 안되셨지만, 이렇게 부가세 환급까지 받게 되니 수익률이 확 올라갔던 것이죠. 본 포스트에서 가장 먼저 언급한 국내 매출과 해외 매출의 수익성 차이를 실제로 보여주는 예시라고 볼 수 있겠습니다.마치며...아마존 판매를 포함한 수출 셀러 여러분들은 이렇게 정정당당하게 세금 혜택 누릴 것을 전부 누리고 계신가요? 지금까지 적게는 수십 만원 많게는 수천만원까지 현금으로 돌려받을 수도 있었을 부가세 공제/환급금… 지금이라도 늦지 않았으니 잘 알아보시고 세금 혜택을 받으시기 바랍니다 ^^
조회수 1076

EOS Smart Contract 를 위한 준비

EOS Smart Contract 를 위한 준비와 토큰 발행 그리고 C++를 활용해 토큰의 간단한 기능을 개발해 보겠습니다.환경 구성 및 지갑 생성은 SAM 님의 아래 2글을 참고해 주시기 바립니다.EOS — 설치 및 실행 (1/2)EOS — 동작구조 및 환경설정(2/2)지갑 생성하기SAM 님의 포스트를 참고 하셨다면 아마 다음과 같이 ‘default’ (별도의 이름을 지정하지 않았을 시) 지갑을 생성 하셨을 겁니다.이 지갑을 사용하여 계정을 Create 한 후 Key 를 Import 하겠습니다.Key 생성하기$ cleos create key위 명령을 실행 하시면 다음과 같은 화면을 얻을 수 있습니다.create key 명령의 결과**주의 : Private Key는 Public Key의 소유를 증명하는 중요한 개념으로 절대 타인에게 노출하면 안됩니다.AdditionalKey 생성 후 지갑에 import 하기 귀찮으시다면 생성된 지갑에서 바로 Key 를 생성하셔도 됩니다.$ cleos wallet create_key위와같이 key가 생성 됩니다. 하지만 public key 만 보이기 때문에 하단 명령 입력 후 지갑 key를 입력하면 private key를 확인할 수 있습니다.$ cleos wallet private_keys지갑에 Key import하기지갑은 Public Key — Private Key를 저장하는 저장소 입니다. 생성된 키를 지갑에 저장하기 위해 다음과 같은 명령어를 입력합니다.$ cleos wallet import-n : 옵션을 사용하면 지갑의 이름을 지정합니다. 지정하지 않는다면 기본 생성된 default 지갑으로 지정됩니다.위 명령을 입력 하면 key 가 임포트 되었다는 결과를 확인 할 수 있습니다.** 만약 지갑을 Unlock 한 상태가 아니라면 ‘private key: Error 3120003: Locked wallet’ Exception 이 나옵니다.unlock 을 위해 다음 명령을 실행한 후 wallet 생성시 저장했던 Key를 입력하여 Unlocked 상태로 만들어 줍니다.$ cleos wallet unlock password: Unlocked: default(Optional) 지갑에 저장된 Key 리스트 확인다음 명령어를 입력하여 지갑에 key 가 잘 import 됐는지 확인합니다.$ cleos wallet keys계정 생성eosio.token 이라는 이름으로 계정을 생성하도록 하겠습니다.** 지갑과 Key 그리고 계정에 관해서는 Hexlant 미디움에 게재될 예정입니다.$ cleos create account eosio eosio.token EOS63kstp8kthzJY3rAotp1LAxUDbWk4MywReG578R2ddbktrDHYKcreator : eosioaccount name : eosio.tokenowner key : 지갑에 import 된 keyAdditional본 포스팅은 local 환경에서 빌드 후 System Contract 들이 적용되지 않은 상황을 가정하였습니다. 만약 Public Network 환경에서 접속 시 eosio 와 eosio.token을 사용할 수 없습니다.또한 계정이름은 다음과 같은 규칙을 따릅니다.- 12문자- 12345abcdefghijklmnopqrstuvwxyz 만 사용 가능** 만약 ‘Error 3090003: provided keys, permissions, and delays do not satisfy declared authorizations’ 에러 발생 시 eosio 에 대한 key 를 지갑에 import 해야 합니다.eosio 에 대한 정보는 다음과 같습니다.public key: EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CVprivate key: 5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3위 과정을 모두 마쳤다면, EOS 지갑과 키 그리고 계정에 대한 권한을 모두 가지고 있는 상태가 됩니다. 다음 포스팅에서는 이 계정을 사용 하여 Token 을 발행하는 방법을 알아보도록 하겠습니다.감사합니다#헥슬란트 #HEXLANT #블록체인 #개발자 #개발팀 #기술기업 #기술중심
조회수 1040

스푼 CSO Jay를 지금 만나보세요!

제이, 제이도 월요병이란 게 있어요?가끔은 동네 바보 오빠, 또는 젊은 아빠 같은 그는 업무가 시작되면 이 세상 그 누구보다 프로페셔널하고 진지해진다. 남들 다~있는 월요병이란 없을 것 같은 사람. 본인의 일을 사랑하고, 스푼을 사랑하는 CSO Jay를 소개합니다.출처: 대웅제약 (술과 친한 Jay에게 필요한 것)아빠라는 별명, 마음에 드세요?※ 그는 '미혼이자 현재 싱글'임을 알려드립니다.마케팅팀을 총괄하는 Jay에겐 여러 가지 별명이 있다. 그중에서도 단연 돋보이는 건 '아빠'라는 애칭. 그를 아빠라고 칭하는 동료들에게 물어보니, 그가 따뜻하고 포근해서라고 했다. 사람 냄새나는 사람이라 그런지 많은 이들이 편하게 생각하고 좋아한다고 생각이 든다. 한국팀 멤버들 뿐만 아니라, 글로벌 마케팅 팀원들마저 그를 아빠라고 칭하는데 일본팀 한 친구는 이렇게 말해주었다.제이요? 제이는.. 저에게 한국인 아빠 같아요듣고 싶은 당신의 스푼 라이프마케팅, 데이터 분석 그리고 스푼 CSO"저는 처음엔 대리라는 직책으로 입사를 했었어요. 입사 3년 후, 500 스타트업에서 교육을 받은 후부터 이사직을 맡게 되었어요. 그러니 이사직을 맡은 지 오래되진 않았네요. 입사 후 초창기 멤버로서 개발 빼고 정말 모든 일을 다 해봤던 것 같아요. 처음에 분석부터 시작을 했는데요. 원래 수학을 좋아하기도 했고, 공부하면서 너무 재미있더라고요. 제가 능력을 발휘할 수 있는 영역이라고 확신이 들었어요. 사실 저는 제 자신을 마케터라고 칭한 건 작년부터인데요. 퍼포먼스 마케팅이라는 용어 자체가 없을 때였어요. 500 Startup을 만나서 마케팅과 분석을 공부했던 점이 마케터로 성장하는데 가장 도움이 컸던 것 같아요. 그때는 세미나라는 세미나는 정말 다 찾아다녔었고, 마케팅을 잘한다는 회사는 다 쫓아다니면서 배웠던 것 같아요."초창기 멤버가 된 에피소드 들려주세요"현재 COO 직책을 맡고 계신 Jun과의 인연으로 시작되었어요. 저랑 준은 대학교 선 후배 관계인데요. 제가 학교 다닐 때부터 신뢰하고 좋아하는 분이었어요. 어떤 분이냐면, 저에게 1년 간 한 달에 한 권씩 12권의 책을 보내주실 만큼 저를 챙겨주셨고 아껴주셨던 선배예요. 제가 영어공부를 하게 된 계기도 바로 준이 제안해주셔서 인데요.  처음에 준이 창업을 하신다고 하셨을 때, 저는 아무런 고민 없이 YES라고 대답했어요. 그러고 나서 사실 1년 동안 정말 많이 후회를 했었어요. 왜냐고요? 힘들었어요 정말. 진짜로 너무 힘들었어요. 그때는 스푼이라는 서비스를 하기 전, 저희의 첫 번째 서비스 배터리 교체 사업 '만땅'을 했었을 땐데요. 그땐 이렇게 사무실에서 앉아서 일하는 게 아니었어요. 노점상에서 배터리 교체를 해주고, 오토바이를 타고 배달도 해야 했을 때였는데 그게 어린 마음에 괜한 자존심에 스크레치가 가더라고요. 그래서 참 힘들었었던 것 같아요. 그때 정말 힘들고 첫 번째 사업에 실패했을 때도 포기하지 않고 지금까지 함께 올 수 있었던 이유는, 제가 혼자 나간다고 되는 게 아니었기 때문이에요. 제가 나가면 모두에게 피해를 입힐 수 있는 상황이었고 어떻게 보면 제가 선택한 일에 대한 책임감이었다고도 생각해요. 제가 떠남으로써 상처 받을 사람들이 많았고, 관계로 이 일을 시작했고 제가 아끼는 사람들과의 관계가 무너지는 건 정말 싫었거든요. 그래서 남았어요. 그리고 만약 다시 6년 전으로 돌아간다고 해도 저는 준이랑 닐이랑 같이 창업할 거예요."스스로도 워커홀릭이라고 인정하세요?"음.. 아니요? 저는 제가 워커홀릭까진 아니지 않나 싶어요. 저도 일을 하기 싫을 때가 있어요. 작년? 까지만 해도 저는 월요병이 없었던 것 같은데, 최근에 저도 월요병이 생기더라고요. 혼자 일할 때는 내가 더 열심히 하면 해결이 되는 부분이 많았는데 지금은 제가 혼자서 할 수 없는 것들이 더 많다 보니.. 중요한 문제에 있어, 벽에 부딪치게 될 때면 그게 정말 힘들더라고요. 저도 사람인지라 피곤하기도 하고 지칠 때도 있지만 열정의 힘으로 다시 일어나는 것 같아요"팀원들에게 어떤 상사가 되고 싶나요?"그 부분이 사실 제가 제일 고민하고 있는 부분인데요. 이게 참 딜레마에 빠지게 되더라고요. 조금 더 팀원들을 명확하게 리드해주고, 방향성을 제시해주고 싶지만 조율하는 과정이 쉽지 않더라고요. 관리해야 하는 사람들도 드러나고, 국가도 많아지다 보니 일적인 것 들뿐만 아니라 여러 가지 문제나 도움을 줘야 하는 상황이 오니 부담스럽기도 하고 힘들 때도 많아요. 하지만 꼭 팀원들과 약속한 건 지키려고 노력합니다. 그래도, 아빠라는 별명을 얻은 건 좋은 의미라고 생각해요. 저에게 일하는 동기가 되더라고요. 근데 왠지 마케팅팀에서 제가 제일 나이가 많아서 아빠라고 부르는 거 아닌가요? 어쨌든 팀원들의 긍정적인 피드백은 저에게 크게 영향을 줘요. 제가 팀원들에게 바라는 점이 있다면, 문제를 문제로 인식하지 않아줬으면 해요. 문제 자체를 고민하기보다 그 문제를 해결하고 발전할 수 있는 방향으로 나아갔으면 좋겠어요.스푼이 이런 브랜드가 되었으면 좋겠습니다."양적으로 말씀드리면, 포커스는 저희가 20대에 두고 있지만 앞으로 30대 그리고 40대도 아는 즉 사람들이 모두 아는 그런 국민 브랜드가 되었으면 좋겠어요. 질적으로는 진심 어린 소통을 하면서도 재미를 느끼는 플랫폼이 되었으면 좋겠어요. 소통을 어려워하는 사람들도 의지하고 찾을 수 있는 그런 플랫폼이요. 누구나 동등하게, 선입견 없이 말하고 듣는 그런 서비스가 되었으면 좋겠고 그러려고 노력하고 있습니다"알고 싶은 Jay의 이야기나를 한마디로 표현한다면?개구쟁이 - "저는 제가 순수함을 간직할 수 있는 사람이었으면 좋겠어요. 세상에 때 타고 싶지 않은 마음이 있거든요" 그리고 저의 별명은 '히발이'인데요. 저는 동네에서 어릴 때부터 어리바리해서 유명했어요. 술 먹다가 앞에 차가 오면 저를 비추는 스포트라이트 같아서 막 그 앞에서 춤도 추고 그랬어요. 흥이 좀 많은 편이에요.사내에 팬 클럽이 생기셨던데(?)"저는 사실 그런 단어가 어색해요. 요즘 팀원들이 저를 우리 제이라고 불러주곤 하는데.. 어색해요 정말.. 하지만 저는 나이젤을 무너뜨릴 겁니다. (나이젤 독보적 사내 1위 팬클럽 보유자) 장난이고요 하하.. 저는 나이젤이랑 키도 비슷하고, 많은 것(?)이 비슷하지만 다른 게 있다면 '성품' 같아요. 나이젤 성품은 정말 따라올 사람이 없는 것 같아요. 그런 면에서 저도 그의 팬이에요"2019년 Jay의 목표는"첫 번째로 저에겐 회사의 성장이 제일 중요하고요. 두 번째로는 인격적으로 제가 조금 완성(?) 되었으면 좋겠어요. 조금 더 좋은 성숙한 사람이 되고 싶다고 느껴져요. 많은 사람들을 포용할 수 있는 능력을 가지는 것이 목표입니다"Jun과 함께 창업하지 않았더라면"저는 아마 지금쯤 학교 체육 선생님을 하고 있지 않았을까요? 체대를 나오기도 했고, 부모님께서 안정적인 직장을 가지길 바라셨었거든요. 저는 사실 20대 때 서른이 될 때까지 취업을 하지 말자라는 위주였어요. 다만 취업을 하지 않았을 뿐 게으르게 살지는 않았어요. 자격증도 따고, 열심히 놀고 열심히 살았던 것 같아요. 다만 취업을 30대 때에 해도 늦지 않고, 저는 결국엔 잘 될 수 있을 거라고 생각했거든요. 왜냐고요? 100세 시대이잖아요. 20대부터 일하면 30~40년을 앞으로 일해야 하는데 굳이 그럴 필요가 없다고 생각했어요. 그래서 첫 직장을 29살에 시작을 다니게 되었고 이곳에 오기 전까지 광고 대행사에서 일을 했었어요. 그 후에 준이 사업을 시작하시면서 조인을 하게 되었고요. 만약 준이 창업을 시작하지 않으셨다면 지금 저는 아마 제가 창업을 하고 있을지도 모르겠네요."유난히 남자한테 인기 많은 비결"저도 잘 모르겠어요. 특이하게 어릴 때부터 남자한테 인기가 많았어요. (하지만 여자한테도 인기가 많다고 소문이 자자함) 형들한테도 예쁨을 정말 많아 받았어요. 남자 동생들도 저를 잘 따르고.. 근데 진짜 이유를 잘 모르겠어요. 외국에 나가면 게이라는 오해를 자꾸 받더라고요 하하하.. 어디서든 항상 잘 웃고 다녀서 그런가 봅니다"Jay는  1. 농구를 즐기고, 청바지를 좋아합니다.2. 입맛이 까다롭지 않아 가리는 음식은 없지만 '참치'와 '육회'를 좋아합니다.3. 제이가 함께 일하고 싶은 사람은, '포용력이 있는 사람. 그리고 개개인이 갖춘 뛰어난 능력을 잘 발휘할 수 있는 사람'입니다.팀원들이 Jay를 한마디로 표현한다면?Ted 曰: 가능성 - "어떠한 상황에서도 같이하면 모든 할 수 있을 것 같은 사람"Summer 曰: 겉바속촉- "머리는 차갑게, 마음은 따뜻하게"William 曰: 시몬스침대 - "흔들림 없는 편안함, 어떠한 풍파가 오더라도 묵묵히 걸어 나가는 모습이 함께하는 사람으로 하여금 편안함을 안겨준다"Ceci 曰: Yeah!! - "항상 열정 넘쳐 보이는 Jay와 어울리는 단어"Hennie 曰: 큰오빠 - "맨날 우리 보면서 아빠미소 짓는데 아빠라고 하기엔 젊으니까(?)"Cherish 曰:  곰돌이 아빠-  "그냥 곰돌이처럼 생겼는데 아빠처럼 맨날 장난받아주고 웃음"Chole 曰: 구조대 - "팀원이 힘든 상황을 돌파할 수 있도록 큰 도움을 주기 때문"Sunny 曰: 유니콘 - "요즘 같은 세상에 존재하지 않을 것 만 같은 존재. 사람 냄새 풀풀 풍기는 인간미 넘치는 그냥 진짜 말 그대로 진국인 사람"
조회수 963

에이스프로젝트 추천도서 - 기획팀 편

안녕하세요!기업 문화가 좋은 야구게임 개발사에이스프로젝트입니다.새해를 맞이하여에이스인에게 유익했던 책들을 소개해드리려고 해요오늘 에이스 추천도서는 기획팀 편이랍니다.게임 개발에 있어서 가장 첫 단계인 게임 기획!에이스프로젝트 기획팀이 추천하는게임 기획자라면 한 번쯤은 읽어보면 좋은 추천 도서 Best 5!1. THE ONE PAGE PROPOSAL - 패트릭 G. 라일리[ 이미지 출처 : 예스 24 ]기획서의 독자는 항상 바쁘게 일하는 동료들이다. 기획 내용을 명료하게 전달하는 것은 기획자의 필수 역량!2. ‘라프 코스터’의 재미 이론 - 라프 코스터[ 이미지 출처 : 예스 24 ]재미가 있진 않지만, 게임 디자인에 대해 여러 가지 생각을 하게 해주는 책3. 로지컬 씽킹 - 테루야 하나코, 오카다 케이코[ 이미지 출처 : 예스 24 ]논리적 사고 능력은 입사 전 이미 결정되어 있다. 하지만 노력을 통해 최소한의 논리적 사고력은 만들 수 있다.4. 좋은 문서 디자인 기본 원리 29 - 김은영[ 이미지 출처 : 예스 24 ]깔끔한 문서 제작의 기본 원칙들을 담아 둔 책5. 기획은 2형식이다 - 남충식[ 이미지 출처 : 예스 24 ]광고쟁이의 기획 이야기,분야는 다르지만 기획하는 방식에 대한 많은 생각을 하게 만드는 책추천도서 5권은 사내 도서로 구비되어있다는 사실!에이스프로젝트 기획팀에서도 열심히 읽으면서기획력을 높이기 위해 노력하고 있어요 ㅇ_<이상 새해 계획이 '독서'인 기획자분들이 읽어보시면 좋을 만한 책 소개였습니다!다음은 '프론트'의 추천도서로 찾아올게요 ;)
조회수 868

2014년 10월 현재 크몽팀은?

 이게 웬 보기만해도 맛깔나는 사진이냐고요?바로바로 크몽팀의 점심 식탁이랍니다.사내에 조리기구가 따로 있어서 주기적으로 일주일에 2-3번은 함께 지지고 볶아(?) 한 테이블에 모여 점심을 먹는 크몽팀!주로 조리 담당은 크몽의 계란말이 전문가 다니엘 님(2X세, 개발자)과 손맛의 일인자 마리 님(2X세, 디자이너)이고요,테이블 셋팅과 설거지 등등 다른 팀원들도 역할을 나눠 즐거운 점심 시간을 가진답니다. 그런 의미에서(!) 오늘은 2014년 10월 현재 크몽팀이 서식하고 있는 환경을 조금 더 자세히 들여다 볼까 해요. :)드루와~ 드루와~    후다다닥 열심히 일하다 보면 자주 갈증이 나기 마련! 크몽팀이 컴퓨터 다음으로 자주 마주보고 있는(?) 냉장고를 열면,팀원들의 기호에 맞춘 닥터페퍼와 콜라, 핫식스, 탄산수가 마련되어 있습니다. 보기만 해도 시원~하네요ㅎㅎ 점심, 그리고 야근을 대비해 사내에서도 간단하게 식사를 할 수 있도록 구비되어 있는 메뉴들 사진도 보이네요.여사원들의 다이어트를 위한 닭가슴살, 흑미와 발아현미 햇반, 각종 라면에 과자까지..사진에는 보이지 않지만 기본 밑반찬인 김치에 만두, 샐러드 심지어 견과류도 차곡차곡 쌓아두고 있답니다.(이쯤되면 너... 사무실이 맞는가...?)     회의 중에, 업무 중에, 브레인 스토밍과 내용 정리를 좀 더 효율적으로 하기 위해크몽 사무실 내 대부분의 벽은 화이트 보드화 되어 있답니다. 사진을 보시면 크몽팀의 생각이나 가치관, 해야 할 일, 진행 중인 일 등등 다양한 내용들이 적혀 있네요.(아직 정식으로 공개 되지 않은 내용들은 일부 블러 처리를 좀 했습니다ㅎㅎ)반드시 기억해야 할 일정이나 다른 팀멤버들에게 짤막하게 남기는 메세지들, 귀여운 그림들이 남겨지는 경우도 있어요.그래서 팀원들은 아침에 출근을 하면 꼭 한 번씩 벽에 적힌 내용들을 쭈욱 스캔하곤 합니다.    지금까지 짤막하게나마 크몽팀이 하루 중 가장 긴 시간을 보내고 있는 곳에 대해 소개해 드렸습니다! 크몽팀은 진중하지만 즐겁고 편안한 환경에서 일을 해야긍정적인 가치관을 가진 아이디어들을 만들어 낼 수 있고,그 아이디어들이 더 좋은 서비스와 더 나은 재능 거래 문화 형성을 가능하게 한다는 점을 믿고 느끼며 일하고 있답니다. #크몽 #팀문화 #기업문화 #조직문화 #사내복지
조회수 2067

평균 응답시간의 의미

어플리케이션 성능 분야에서 평균 응답 시간은 어플리케이션 서버가 사용자에게 요청 결과를 반환하는 데 걸리는 시간을 말합니다. 어플리케이션 서버의 응답시간은 일반적으로 밀리세컨드에 가깝지만 부하량에 따라 많은 시간이 걸리기도 합니다. 고객이 기다리는 시간 3초인터넷 초창기인 1999년 전자 상거래 사이트의 최적로드 시간은 8초 였습니다. 2006년도에 들어서는 4초까지 줄어들었습니다. 그리고 지금은 3초를 고객을 떠나게 만드는 시간으로 이야기 합니다. 구글 이 운영하는 더블클릭(https://www.doubleclickbygoogle.com/articles/mobile-speed-matters/)은 모바일 페이지가 로드되는데 3초가 지나면 사용자의 절반 이상이 서비스를 포기한다고 조사결과를 발표했습니다. 3초라는 시간 속에는 웹페이지의 렌더링 시간과 네트웍이 사용하는 시간등이 포함되어 있기 때문에 웹 어플리케이션이 소모해야 하는 시간은 실제로 밀리세컨드에 가깝습니다. 하지만 실제 서비스의 장애가 발생하면서 웹 어플리케이션의 평균 응답시간은 점점 길어지게 됩니다. 성능분석에서 평균 응답시간부하가 늘어나면서 임계치가 넘어가면 초당 처리량은 더이상 증가하지 않게 됩니다. 논리적으로 생각 해보면 초당 처리량이 더이상 증가하지 않은 상태에서 사용자만 늘어나면 TPS와 인지시간이 상수처럼 동작하므로 응답시간이 사용자에 비례하여 늘어나게 됩니다. [응답시간(Respons Time) = [동시사용자수 / 초당 요청수(TPS)] - 인지시간(Think Time)하지만 일반적인 상황에서 응답시간은 밀리세컨드 단위의 값이데 비해 인지시간은 3초에서 10초 이상의 값을 가지고 됩니다. 그럼 이번에는 성능을 분석하는 스토리를 만들어 보겠습니다. 우리가 영어 문장을 한글로 번역하는 웹 서비스를 만든다고 해 보겠습니다. 우리는 동시 사용자 100명을 예상하고 서비스를 만들고 있습니다. 여기서 서비스 특성상 사용자가 한번 번역을 요청하고 다음번 요청을 보내는데 평균 30초의 시간이 걸립니다. 마지막으로 최대 응답시간은 0.5초를 넘지 않도록 설계하려고 합니다. 이런 경우 우리가 목표로 하는 초당 요청수는 서비스를 동시에 사용하는 사람들의 요청을 시간으로 나누므로 계산식은 동시사용자수(100명)/(응답시간(0.5초) + 인지시간(30초)) 이고 결과값은 약 3.27이 됩니다.     초당 요청수(TPS) = 동시사용자수 / [응답시간(Respons Time) + 인지시간(Think Time)]이렇게 성능을 계산하는 과정에서 서비스의 처리시간 즉 응답시간은 인지시간에 비해 매우 적기 때문에 인지시간이 커지면 커질수록 TPS에 관여하는 비율이 0에 수렴하게 됩니다. 결론적으로 성능을 설계하는 시점에서 응답시간은 별로 중요한 이슈가 아니게 됩니다. 대신 인지시간이 중요해 집니다.인지시간(Think Time)이란?웹 서비스를 사용하는 사용자는 자신의 요청을 확인하는 시간이 필요합니다. 이렇게 이전 요청과 다음 요청 사이의 시간을 인지 시간이라고 합니다. 인지 시간은 사용자나 서비스 유형에 따라 다릅니다. 예를 들어 시스템 간 상호 작용은 사람이 관여하는 웹 서비스 상호작용에 비해 매우 낮은 인지 시간을 포함합니다. 또는 블로그 서비스에 비해 사전검색 서비스의 인지시간은 매우 짧을 것입니다. 서비스의 도메인을 분석하여 인지 시간을 결정하는 것은 매우 중요합니다. 인지시간을 사용하여 분당 완료해야 하는 요청 수는 물론 시스템에서 지원할 수 있는 동시 사용자 수를 계산할 수 있습니다. 튜닝 지표로서의 평균 응답시간현실에서 웹 서비스의 응답시간은 수식과 다르게 나타나게 됩니다. 그래서 많은 성능 분석 도구가 평균 응답시간을 보여주고 있습니다. 실제 성능 분석 도구들이 알려 주는 평균 응답시간은 수집 주기 동안에 수집된 트랜잭션의 응답 시간을 합산하여 평균한 값입니다.와탭의 서비스는 5초 간격으로 트랜잭션의 평균 응답시간을 계산합니다. 응답시간이 성능 지표보다 튜닝지표로서의 의미를 가집니다. 예를 들어 사용자가 적은 밤 시간에 배치잡과 같은 일부 응답시간이 길어짐으로써 사용자가 많은 낮보다 평균 응답시간이 더 길수도 있습니다. 하지만 실제 성능을 올리기 지표로써 응답시간은 매우 직접적입니다. TPS와 상관없이 평균 응답시간이 길어지는 요소가 있다면 주변 요소와 함께 평균 응답시간을 살펴봐야 합니다. #와탭랩스 #개발자 #개발팀 #인사이트 #경험공유 #일지

기업문화 엿볼 때, 더팀스

로그인

/