스토리 홈

인터뷰

피드

뉴스

조회수 4754

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

우리는 고객이 무엇에 관심 있어 하고 무엇에 관심 없어하는지, 어떤 것을 보았을 때 클릭해 들어가고 어떤 것을 보았을 때 사이트에서 이탈하는지 궁금해 합니다. 이러한 정보를 얻기 위해 봐야 할 것은 역시 웹서버의 접속 로그입니다.처음에는 매일 생성되는 로그 파일을 일일이 파싱해서 원하는 정보를 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 #로그수정 #인사이트
조회수 848

 ASAP는 당최 언제까지 하란걸까?

뭐 그렇습니다. 항상 모든 일은 빨리 하는 게 좋죠. 너에게도 좋고 회사에게도 좋습니다. 나에게만 안좋죠. 이걸 빨리 쳐낸다고 집에 빨리 가는 것도 아니니. ASAP는 As soon as possible 의 약자입니다. '가능한 빨리' 라는 오더입니다. 사실 이 만큼 애매모호한 오더가 또 있을까요? 가능한 빨리. 란 말을 분석해보면 아래와 같습니다.가능한 = 내가 생각하는 시간안에빨리 = 내놔라그렇군요.  ASAP는 '내가 원할 때 내놔라' 라는 뜻이었습니다. 문제는 "니가 언제 원하냐" 는 겁니다. 게다가 보통은 내놓으라는 게 한 두개가 아니죠. 대부분 모든 것이 ASAP로 처리되므로 실무자 입장에선 도대체 모드 한날한시에 끝내라는 건지 아니면 뭐부터 먼저하란 건지 고구맙니다.ASAP는 '내가 원할 때 내놔라' 목이 강하게 막혀오고 명치가 답답해진다고 '뭐 부터 처리할까요?' 라고 되물으면, '일단 급한 것부터 해' 라는 더욱 난해한 대답이 돌아오지요. 아니 그러니까 일단 급한 게 뭐냐고. 우리는 무료 고구마를 안고 자리에 돌아와 머리카락의 윤기를 손가락사이로 느끼곤 합니다.물론 그 정도는 실무자인 니가 센스껏 알아서 해야하는 거 아니냐? 라고 할 수 있습니다. 사실 일정부분 그걸 스스로 정하는 것도 중요하긴 하지요. 실제로 실무자중에선 본인이 일을 못해서 어버버 하는 경우도 꽤나 있습니다. 이에 대해 스티븐 코비 박사는 '성공하는 사람들의 7가지 법칙'에서 중요도의 우선순위를 분류하는 방법을 제시했습니다.네, 이렇게 생긴 것이죠. 사실 뭔지 읽을 필요는 없습니다. 대부분의 리더쉽 강의에선 이와 같은 사분면 매트릭스로 일의 우선순위를 정해서 챡챡 하라고 감동적으로 알려주지요. 큰 돌 먼저 넣고 자갈을 넣기도 하고, 막 뻔한데 그럴싸한 퍼포먼스로 한 떨기 끄덕거림을 자아내기도 합니다. 저 매트릭스는 이론적으로 전혀 틀리지 않았습니다. 매우 정석적이고 저리 하는 게 옳죠. 근데 문제는 이겁니다. 근데 나 혼자만 저리하고 있음 뭐합니까? 내가 중요하다고 생각하는 것과 상사가 중요하다고 생각하는 부분이 다른데.  이론적으로 2사분면이 최우선입니다만, 그냥 쫄리거나 외부압박이 있거나, 돈이 더 크거나, 친분관계가 있거나, 그냥 내 판단에 의해서 4사분면을 먼저 하라는 오더를 받을 때도 있습니다. 사실 그런 경우가 더 많죠. 우리는 매우 의아하고 내 업무스케쥴이 몽땅 꼬이는 것을 느낍니다. 이렇게 담배세와 주류세를 성실히 납부하는 시민이 되었습니다.소주는 트럼펫처럼 뿌우뿌우우 후우우 휘오오오오그러니 오늘은 ASAP는 언제까지 해야하는 것이며, 여러개의 ASAP가 있을 땐 어떻게 판단해야 하는 지 알아보도록 합시다. 물론 도움이 될 지 안될 지는 스스로 판단하실 수 있으리라 생각됩니다.ASAP는 언제까지 하는걸까?1. 오늘이 월요일 점심 이후 라면 수요일까지 입니다.2. 오늘이 화요일이라면 수요일까지 입니다.3. 오늘이 수요일이라면 금요일 오전 입니다.4. 오늘이 목요일이라면 금요일 오전까지 입니다.5. 오늘이 금요일이라면 토요일 오후까지입니다.(응?)6. 오늘이 토요일이라면 토요일까지 입니다.7. 오늘이 일요일이라면 월요일 오전까지 입니다.8. 오늘이 월요일 오전이라면 점심 전까지입니다.보통 큰 건의 경우엔 위와 같습니다. 수요일이 기준이 되는 이유는 심리적으로다가 뭔가 컨펌을 해서, 다른 일을 진행하기에 충분한 분기점이기 때문이죠. 그래서 대부분 팀장이나 대표들은 수요일을 기점으로 다 됐어? 라고 물어보는 경우가 많습니다. 그래야 수요일날 수정을 하던 컨펌을 하던 해서 다른 오더를 내리니까요. 그리고 그 오더는 금요일까지 주로 진행되죠. 대신 오전중에 컨펌이 나야 오후에 뭔가 다른 오더를 업체에 보내든 다른 팀에 보내든 어쩌든 하니까 대부분 금요일 오전중에 끝내겠지....라고 (혼자) 생각합니다.그리고 한가지 중요한 건 ASAP는 주말을 치지 않습니다.  보통 나의 시간은 주5일이지만, 너는 주7일을 살고 있으니까요. 우리는 이토록 지랄맞은 평행세계에 살고 있습니다. 상사님들의 자택은 죄다 시간과 공간의 방입니다. 그곳의 시간은 느리게 흐르죠. 만약 자잘한 일일 경우엔 ASAP가 더 세분화됩니다. 잘잘한 수정건이나 서칭 건이라고 해봅시다.1. 9시에 시켰다면 점심전입니다.2. 10시에 시켰다면 점심전입니다.3. 11시에 시켰다면 2시까지입니다.4. 12시에 시키면 개자식입니다.5. 오후 1시에 시키면 4시까지 입니다.6. 오후 2시에 시키면 5시까지 입니다.7. 오후 3시에 시키면 5시까지 입니다.8. 오후 4시에 시키면 퇴근 전까지 입니다.9. 퇴근 전에 시키면 밤9시까지 입니다.10. 밤9시 시키면 내일 아침9시까지 입니다.등이 있겠군요. 보통 인간은 3의 프레임에 굉장히 익숙합니다. 수요일도 그러하고, 3시간도 마찬가지죠. 보통 1시간은 인간적으로 너무 짧다 생각하고, 2시간은 애매하고, 3시간이면 다 끝나겠지? 라고 (지 맘대로) 생각합니다. 문제는 그 마지노선이 5시정도라는 건데, 6시가 되면 지켜지진 않지만 퇴근시간이라는 심리적압박이 있어서 일단 그 전에 끝내야 내가 컨펌하고 뭔가 수정을 내리겠다.....라는 생각을 하는 겁니다. ASAP중 어떤 걸 먼저 해야할까?ASAP처럼 모호한 표현은 함의를 잘 살펴봐야 합니다. 미간의 찌푸림이나, 쓰읍..하는 입다심, 머뭇거리는 침묵 등에서 업무의 중요도를 파악할 수 있거든요. 일단 글로 표현할 수 있는 수준을 살펴보겠습니다. 참고로, 미간찌푸림, 쓰읍, 하아.. 음, 침묵, 어..이건.. 등의 고민끝의 ASAP는 후순위일 가능성이 높습니다. 대부분 진짜 급한 건 기껏 하란거 하고 있는데 갑자기 와서 "이것 먼저 처리해줘 급한거야!" 라고 급직구로 오는 경우가 많거든요. 1. '이거 먼저 처리해줘.''이거, 그거' 등 가까운 느낌의 대명사가 있는 경우가 더 먼저입니다. '저거, 말한 거' 등 거리가 먼 that계열의 대명사를 쓸 땐 심리적으로 중요도가 떨어져 있는 상태입니다. 좀 더 구체적으로 가면 그거보다 '이거'가 우선입니다. 그러니 영어로 말하던가, 아니면 손에 들고 정확하게 짚으라고 하면 좋을 것 같습니다. 시바(개의 품종입니다.) 2. '그때 그거 빨리 돼나?'과거의 일이라고 해도 '그거' 라는 대명사를 쓰면 중요도가 올라갑니다. 과거의 일을 현재로 끌고와서 내 품안에 안고 얘기하는 것이죠. '그때 그거' 를 먼저 합시다. (이거보다 우선입니다.)3. 음... 될 수 있는 대로'빨리' 라는 말대신 위와 같이 풀어말하면 중요도가 떨어지는 겁니다. 사실 해도 언제 내 마음이 바뀔 지 몰라서 본인도 아리까리 한 상태죠.4. 진짜 급해진짜 급한 겁니다. 1,2번보다 더 급합니다. '진짜, 대박, 제발, 얼른, 존나' 등이 붙으면 그게 최우선입니다.5. 이것도 아삽으로 해줘'~도' 라는 건  보통 문장상에선 앞 문장과 동등한 지위를 지니지만, 실생활에선 그렇지 않습니다. 먼저 나온 말이 중요합니다. "이것도~" 라는 문장은 부연에 속합니다. 보통 이런 말은 본인도 딱히 언제까지 해야할 지 잘 모르겠을 때 그냥 빨리 하라고 하는 경우거든요.6. 이거 ASAP면 좋을 것 같은데네, 저는 안좋습니다. 라고 말할 순 없겠죠. 중요도가 한참 떨어지는 겁니다. 7. 하아..그거? 음..ASAP이건 분명히 내일 되면 "어 그거 안해도 된대." 라는 소리가 나올 겁니다. 위에서 말했다시피 언제까진지 명확치않은 것은 항상 ASAP이므로 그 중 중요도가 떨어지는 것은 사라질 위험이 높습니다. 보통 업무에서 데이라인이 명확하지 않은 것들은 소리소문없이 사라지거든요. 8. A 먼저 해주고, 그리고 이건... ASAP1번에서 '이거' 가 붙으면 우선순위라고 했지만, 그 문장앞에 '그리고' 라는 순접접속사가 붙으면 부사절로 변하고 맙니다. 영문법에선 접속부사라고 하죠. 중요도에서 밀리므로,  A일을 먼저 처리합니다.9. 근데, 이것도 ASAP다.애매한 경우죠. 이것이라고 했으니 중요한데, ~도 가 붙었으니 밀립니다. '근데'라는 역접접속사가 붙었으니 문법적으론 이걸 먼저 처리하는 게 맞습니다.  매우 헷갈리죠. 이럴 땐 말투가 중요합니다."근데, 이것도 ASAP다!!!!' 라고 깜박했다는 느낌이면 이게 먼저고"근데, 이것도 ASAP네..' 라고 종결어미가 엄마 품처럼 부드러우면 후순윕니다.10. 그냥 다 ASAP야안되겠소, 쏩시다.죄다 온통 모든 것이 ASAP인 이유는 정작 본인도 뭐가 중요한 지 잘 모르고 있다는 반증입니다. 그러니 다시 뭐가 중요한 지 되물어봐도 소용없습니다. 상사입장에선 "어?...잘 모르겠는데..(긁적)" 하긴 싫고 일단 뭘 시키긴 해야겠으니 "그 정돈 알아서 해야하는 거 아냐?" 라는 이상한 질책이 돌아오는 거죠. 소소한 팁을 알려드리자면 이렇습니다.보통 큰 일을 먼저 하고, 잘잘한 것을 집어넣는 것이 맞다고 합니다만, 이러한 무한아삽이 있는 곳에선 그 공식이 잘 통하지 않습니다. 일단 자잘하고 빨리 "끝낼 수 있는" 것들을 끝내는 게 더 중요합니다. 그러니 작은 일을 빨리 쳐내서 끝내버리고 큰 일은 업무분장 조정을 하던, 배를 째던 합시다. 상사입장에선 어차피 크든 작든 다 작아보입니다. 상사는 빅픽쳐를 보고있기에 그 목표를 향한 업무들을 모두 '과정의 일부' 일 뿐이거든요. 그래서 작은 일 10개를 못하고 큰 일 1개를 해도, 그냥 일 1개를 한 겁니다. 별 것도 아니지만 일 10가지를 못하면 그냥 10가지를 못한 무능력자 되는 거죠. 그러다보면 얼토당토 않게 "넌 손이 느린 것 같아?" 라고 쿠사리도 먹고 뭐 그렇습니다.(억울뿌앵)그냥 눈치봐서 조정하는게 너무 답답하다면, 그냥 엑셀로 리스트를 만들어서 들이밀며. 순서 정해주세요. 라고 말하는 게 제일 속편하긴 합니다.(근데 대부분 순서 못정함)대부분의 ASAP은 실질적인 근거에 의해서 내려지는 오더가 아닙니다. 기분에 따라 내려지는 경우가 대다수죠. 그냥 대표 마음이 급해지면 모든게 ASAP인 겁니다. 뭔가 하나가 잘풀려서 여유로워지면, '어 그건 담주에 해도 돼.' 가 되기도 하고 말이죠. 그러니 그 오더를 100% 믿지 마세요. ASAP은 업무우선순위가 아닌 '내가 원할 때' 라는 사실을 곰곰히 되새겨 보면 도움이 되실지도...(사실 별 도움은 안됨)아니면 그냥 정신승리...이도저도 아니면 그냥 귀여운 탓인가..라고 정신승리를 합시다.
조회수 856

어반베이스의 두 번째 백일잔치 주인공은?!

 약 2주전, 어반베이스의 독특한 문화 '백일잔치'를 소개해드렸었죠!백일잔치는 어반베이스의 가족이 되어 무사히 잘 적응하시고 건강하게 100일을 보낸 것을 다 함께 축하해 주는 자리인데요.벌써 두번째 100일잔치가 돌아왔습니다!올해 하반기 입사자가 많다보니 백일 잔치를 굉장히 자주하는 느낌적인 느낌. (담주에 세번째 100일잔치가 있다고 하네요?)일단 두 번째 백일잔치 이야기부터 보시죠! 점심 시간에 맞추어 라운지 공간에 음식 세팅이 완료되었습니다!  주인공 아님 1주인공 아님 2 이번 100일 잔치의 메뉴는 '치킨'치맥파티입니다!!오예!내적 댄스가 폭발합니다오늘의 주인공 성민님과 주희님이 직접 고른 메뉴라고 하는데요, 주인공들의 안목, 인정 또 인정합니다.지난번 피자가 조금 적었다는 어반인들의 의견을 적극수렴하여 이번엔 2인 1닭으로 아주 푸짐하게 준비를 했습니다!다양하게 맛보시라고 양념, 핫후라이드. 뿌링클, 맛초킹까지!!! 치킨만 먹으면 허전하니까 맥주와는 찰떡궁합인 프렌치후라이도 준비하였습니다 하하점심에 치킨을 이렇게 푸짐하게 종류별로 맛볼 수 있다니! 어반베이스 백일잔치 아니고서 또 어디서 이렇게 먹겠어요! 역시 치맥이 진리아니겠습니까. 맥주(와 콜라)도 함께 준비되었습니다!치맥파티 이야기가 너무 길었죠? 이제 치킨 이야기는 잠시 접어두고 메인 이벤트를 해야죠! 주인공들을 위한 1인 1케익을 준비했습니다. (100일을 축하하는 의미로 맛있게 드시라고 준비했지만 결국 어반인들의 배로 몽땅 들어갔다는 아름다운 이야기..)케잌도 준비가 되었으니 성민님과 주희님을 모시고 축하노래도 불렀습니다.주희님 성민님 축하드려요!주희님의 고깔모자, 성민님의 빨간 리본 넘나 찰떡인 것..! 자주 해주세요! (?)귀엽게 하트도 한 번 해주시고이렇게 다 같이 한 공간에 모여 백일잔치(라 쓰고 치맥파티라 읽는다)를 하니 참 뜻깊은 시간이 아닐 수 없습니다. 열렬한 축하를 받으며 이렇게 2번째 100일잔치도 무사히 마무리가 되었습니다.백일잔치라니, 점심시간에 치맥이라니, 다 어반베이스가 아니면 경험할 수 없는 것들이죠. 다음 메뉴는 과연 무엇일까요? 괜히 기대가 됩니다. 하하어반베이스의 100일잔치는 계속 이어집니다. 계속 기대해주세요!   출처: https://blog.naver.com/urbanbaseinc 
조회수 769

브랜딩, 일의 시작: 두루뭉술한 브랜딩이 일로 변하다.

브랜딩은 단어가 멋져 보입니다. 브랜딩을 한다고 말하는 순간 우왕!! 뭔진 모르지만, 상당히 멋진 것을 한다! 라는 느낌이 있죠. 그렇습니다. 그런 느낌이 있습니다. 하지만 그건 그냥 느낌이죠. 사실 추상적인 것들은 대부분 멋져 보이니까요. 실무에서의 브랜딩은 그런 멋진 느낌과는 다소 거리가 있습니다. 오늘은 안 멋진 브랜딩 이야기를 하려고 합니다. 대표님의 번쩍이는 아이디어와 오전 회의 이후 브랜딩 작업이 어떻게 진행되어 가는 지 한번 찬찬히 살펴보도록 하겠습니다. 일하는 기분이 들 수 있으니 혹여라도 저장해놓고 주말에 읽는 비참함을 겪지 않으시기 미리 말씀드립니다. 시작합니다.굳은 결심의 시작                                바로 그거야!침대에 누워있던 대표님의 마음을 심하게 짓누르는 것이 있습니다. 대부분 브랜딩을 완벽히 구축하고 회사를 만들진 않습니다. 일단 2, 3일 정도 고민한 회사명과 비즈니스모델을 가지고 몇 명을 모아서 설득한 후 회사가 시작되죠. 브랜딩이란 것을 고민할 정도로 초기사업체는 여유롭지 않습니다. 이때 만들어진 브랜딩은 마치 중딩시절 덕질의 폐해로 만들어진 아이디 ‘치천사_세라핌’ 만큼이나 오글거릴 수 있지만, 여전히 우리의 다음 한메일 주소에서 살아 숨 쉬듯 쉽사리 바꾸기도 힘든 파워를 자랑합니다. 초기 브랜딩에 대한 애착과 사랑은 곧 사업체의 정체성과도 같으니까요. 그런데도 한 명 두 명 직원들이 채용되고 회사가 어느 정도 구색을 갖춰가면서 다시 고민이 새록새록 떠오르는 것은 어쩔 수 없습니다. 대표님들 머릿속에 한 가지 단어가 떠올랐기 때문이지요. ‘체계’뭔가 체계를 갖추고 싶다는 욕망이 스멀스멀 솟구치면서 우리 브랜딩을 대대적으로 정비해야겠다!! 라는 생각에 이릅니다. “회사소개서도 바꿔야겠고! 리플렛도 바꾸고, 홈페이지도 개편해야겠어!! 짜잔!! 하고 말이야.”라는 굳은 결심이 들었습니다. 사실 이 생각은 당연하고, 필수적인 얘기입니다. 회사의 체계를 잡는 것은 중요하지요. 하지만 체계를 잡는 것이 곧 브랜딩은 아닙니다. 보통 의식의 흐름은 이렇습니다. 브랜딩개편? 회사소개서를 만들자!!! 라고 말이죠. 앞글에서 제가 설명했듯 브랜딩은 ‘정보제공’의 개념이 아닙니다. 이걸 명확하게 해야 할 듯합니다. 회사소개서, 리플렛, 브로슈어, 웹/앱 개편은 필요한 일이지만 이걸 브랜딩이라고 부르는 건 좀 주객이 전도 된 느낌이죠. 이것은 그저 온드미디어나 홍보물 리뉴얼 정도라고 하는 편이 좋겠네요. 브랜딩을 정비해야겠어! 라고 한다면 우선 5가지 질문에답을 해볼 필요가 있습니다. 1.     우린 누구지?2.     우린 어떤 성격을 지니고 있지?3.     우린 어떤 행동을 하고 있지?4.     지금까진 어떻게 해왔지?5.     앞으로 어떻게 할거지?중요한 것은 이것입니다. 무엇을 하느냐에 대한 얘기는 잠시 미룹시다. ‘우리가 하는 일’을 설명하는 것은 회사소개서와 제안서 등등에서 구체화시키면 됩니다. 브랜딩 작업에선 일단 당신이 어떤 사람들인지, 당신의 회사는 뭔지? 그 캐릭터를 만들어주는 것이 먼저입니다. 예능 캐릭터를 곰곰이 생각해볼까요? 정형돈의 화내기와 박명수의 화내기는 그 결이 매우 다릅니다. 사람들은 이렇게 규정하죠. 정형돈은 투정, 박명수는 버럭! 정준하는 짜증!, 유재석은 진짜 화났다! 등으로 말입니다. 이것을 가르는 것은 캐릭터의 베이스성향입니다. 화를 내는 것은 ‘행위’에 가깝습니다. 정형돈은 옆집 형 같은 편안한 분위기의 베이스가 있습니다. 박명수는 어르신, 나이 많은 등의 베이스가 있죠. 이러한 베이스 때문에 같은 행위라도 그 결이 달라지는 거거든요. 그러니 당신의 회사는 어떤 베이스를 지니고 있는지 먼저 규정할 필요가 있습니다. 우린 전문가집단 베이스? 덕후모임 베이스? 대학동아리 베이스? 다차원세계의 이종집합체? 등등 비즈니스의 성향과 모여있는 집단의 성향을 먼저 살펴봐야 합니다.아침회의의 시작회의가 시작됩니다. ‘우리만의 브랜딩을 해보자!’라는 주제로 말이죠. 물론 회사 분위기에 따라 케바케입니다. 성향이 시끄러운 집단이라면 산으로 가버릴 것이고, 성향이 국방색이면 명령만 기다리고 있을 것이고, 애당초 조용한 집단이라면 천 년의 침묵 끝에 머리 위에 눈이 쌓여 대답을 기다리다 망부석이 되어버리는 슬픈 도시 전설을 만들어낼 수도 있습니다.  회의의 주제는 리브랜딩을 해보자! 라기보단 사실 ‘우리 비즈니스의 성격은 어때?’ 라는 주제로 시작하는 편이 좋을 것 같습니다. 그리곤 이상형 월드컵을 하듯 하나씩 선택해 나가는 편이 훨씬 빠르고 효율적이죠. 비즈니스의 성향이 ‘유쾌하고 키치한 성향'으로 드러났다면 두 번째 안건은 그럼 직원들의 성격은 어때? 라는 주제가 맞는 것 같습니다. 다들 연구부원마냥 무테안경에 타이 정장을 고수하는 논리적이고 신중 신중한 ISTJ 타입의 인원들이 가득 모여 있는데 유쾌하고 키치한 전략을 만들어 내자라고 하면…… 아마 다들 꺾은 선 그래프를 들고 와서 데이터와 전략싸움을 하느라 에너지를 쏟다가 결국 자기 파티션 속 책상으로 돌아가 고개를 가로저을지도 모를 일입니다. 비즈니스의 방향과 구성원의 성향은 매우 중요합니다. 물론 모든 구성원이 다 똑같을 순 없습니다. 그렇다고 구성원에게 맞춰 비즈니스모델을 인제 와서 뜯어고치기도 힘들죠. 그렇다면 적어도 브랜딩 프로젝트를 담당하는 팀이나 구성원 정도는 BM과 비슷한 느낌으로 가주는 것이 맞습니다. 그래야 서로 즐겁죠. 그래서 주로 회의의 내용은 이런 것들로 구성되고, 이러한 답변이 나와야 합니다.01.   우리 회사 성격은? – 유쾌하고 키치하다.02.   구성원의 성격은? – 논리적인 사색가형 3명, 모험가형 2명, 재기발랄활동가형 1명03.   우리는 어떤 경험을 주는가? (소비자에게) – 서비스에 에너지를 담아줌04.   그 경험은 누구에게 어떤 가치가 있는가? – ‘에너지’라는 개념을 구체화, 실체화05.   어떤 방식으로 전달할 것인가? – 채널, 방식, 제작방식, 시기, 기간, 컨셉 등06.   누가 얼마나 담당할 것인가? – 업무분장시작07.   PM는 BM와 제일 비슷한 성향의 기획자가.08.   기획 서포트는 반대 성향의 담당자가09.   중재자는 관찰자 성향의 담당자가10.   실행과 운영은 모험가형 2명이11.   검토와 트래킹은 사색가1명이12.   기획안 도출과 프로토타입 제작은 언제까지13.   리브랜딩 제작물과 디자인 작업은 언제까지14.   사내 전체 공유와 적용 시기는 언제부터15.   대외노출과 공표는 언제16.   유지와 운영 점검의 1차 지점은 언제까지17.   해당 업무에 대한 각 팀 별 세부업무 관리는 어떤 식으로18.   총 예산은 어느 정도19.   1차 랜딩이 끝난 후 2차 유지보수비(고정비)는 어느 정도 책정20.   책임과 권한 부여대략적으로 적어보았습니다만, 아마 이 정도의 회의내용이라면 물개 박수를 받을 만하지 않을까 싶습니다. 왜냐면 컨설턴트나 전문가가 대동하지 않은 상태에서 브랜딩 기획 회의 진행은 쉬운 일이 아니기 때문이지요. 논쟁과 한숨과 미간 주름과 커피와 담배가 함께하는 회의시간이 되겠지만 이 시간을 피해선 절대 안 됩니다. 우리나라는 브랜딩을 꼭 누군가에게 전담해서 네가 해! 라고 하긴 하지만, 이것은 좋은 방식이 아니에요. 회사 특성상 전담자가 있는 것은 어쩔 수 없다고 해도, 그 사람에게 모든 걸 전가해버리는 방식이 되어서는 안 되죠. 그래서 사실 이 회의에서 업무분장과 구성원의 역할의 명확한 구분은 아주아주 중요한 부분입니다!!그래서 전담자가 있되, 사원 모두가 브랜딩에 하나하나 부분을 담당하는 형식이 되어주어야 해요. 그리고 그 업무분할은 각자의 성향에 맞춰서 분배하는 편이 현명하죠. 일의 시작    이제 다들 책상으로 돌아와 앉았습니다. 회의가 엄청나게 길고 피곤했겠죠. 한숨과 담배 연기와 와 씌……와 가슴 속 사직서를 검지와 엄지로 꼭 잡으며 가족사진을 바라보는 사람도 있었을 것입니다. 오늘 회의록을 보니, 이 모든 상황이 몰카였으면 좋겠다는 생각도 들 겁니다. 누군가가 뒷문에서 등장하여 지금까지 잘 견디셨습니다!! 하며 내 앞의 기획안을 짝짝 찢어 버리길 바라는 사람도 있을 겁니다. 뭐사실 아무리 즐거운 브랜딩 프로젝트라도 일단 일은 일이기에 저녁 약속을 취소해야 하는 슬픔은 누구라도 피하기가 힘듭니다. 만약 치맥과 풀침을 보장받으며 브랜딩 프로젝트를 쭉 진행할 수 있다면 정말 직원들의 역량이 엄청나거나, 대표님의 지략이 거의 사마의 급이라고 칭송받아 마땅할 것 같습니다. 실제로도 몇 있긴 했습니다. 일전의 클라이언트 대표님은 장판교의 장비와 같이 몰려드는 업무를 장엄하게 쳐내며 11명의 직원 대군의 칼퇴를 보장하더군요. 진피층까지 소름이 돋아 어느새 이력서와 자소서를 쓰고 있던 저를 발견한 경험이 있습니다. 이제 일은 시작되었습니다. 피할 수 없는 브랜딩 업무가 다가온 것이죠. 일단 일의 시작은 대부분 회의록의 정리부터입니다. 회의록을 정리해서 사내전체에 공유하죠. 회의록은 차지게 써서 넘버링을 해줍니다. 1번부터~20번까지 안건에 대한 결정사항과 TBD 여부 (+재결정시기)를 확정한 후 사내공유를 합니다. 그리고 담당자들끼리 모여 간략하게 담배타임을 가지며 업무재정비를 합니다. 이 때는 회의시간에 차마 말하지 못했던, 나는 엑셀 고자다, 나는 포토샵 공포증이 있다, 사실 나는 공황장애가 있어서 전시회를 나가지 못한다 등등의 세부적인 얘기와 개인 사정에 대한 조율을 진행합니다. 어쩌면 이게 더 어려울 수 있습니다.  내부적으로 재정비가 이루어졌다면, 누군가는 기획서를 써야 합니다. 기획안은 예쁘게 만들고 싶겠지만, 예쁘기보단 정확하게 만듭시다. 솔직히 딴 거 다 필요 없습니다. 이미 방향성과 컨셉은 정해졌고, 이젠 구체적인 아이디어와 실행방안, 운영에 관련된 것들만 나와주면 됩니다.그러니 이제부터 가장 중요한 것은 단어와 숫자입니다. 어떤 워딩을 쓰고, 예산을 얼마 투입, 언제까지 누가,어디에서, 무엇을, 어떻게 할 것인지만 정확하게 잡아서 원페이지로 딱딱 만들어냅시다. 이 단계에서 이제 제가 담당하는 비쥬얼브랜딩 실무도 함께 진행이 되죠. 소개서와 제안서는 언제까지, 얼마로, 어떤 자료, 어떤 컨셉으로 진행할 것인지 한 장으로 정리하면 됩니다. 01.  고객초청 간담회진행02.  브랜드 가이드구축03.  로고/슬로건/컬러컨셉 적용04.  전사 공유회의 진행05.  현장관찰(가만히 앉아서 사람들의 행동 구경하기)06.  온라인이벤트기획07.  홈페이지리뉴얼08.  앱리뉴얼09.  회사소개서/제안서 리뉴얼10.  SNS컨텐츠 리뉴얼11.  대외이벤트진행12.  굿즈제작 등등 각 항목별로 한 페이지씩으로 정리해서, 전체 브랜드구축 기획안을 심플하고 직관적으로 만들어낸 후 전사 공유합니다. 이때 중요한 건 비용과 시기입니다. 대표님 입장에선 비용이 살벌하게 중요할 것이고, 실무자 입장에선 시기가 살벌하게 중요합니다. 이시기를 제대로 잡지 못하면 23세기가 되어서야 우리 브랜드가 망원동 인근 주민에게 겨우 알려지는 사태를 경험할 수 있습니다. 한도 끝도 없이 지지부진해지죠. 시기는 명확하게 가슴 졸리게 잡는 게 좋습니다. 데드라인이란 것은 참으로 일을 흥미진진하고 가슴 벅차게 만들어주니까요. 표지포함 13장의 기획안이 완성되어 전사공유를 했다면, 이제 본격적으로 하나하나일을 처리해봐야겠죠. 이제부턴 세세한 실무의 디테일과 폭망의 전조, 쓸데없이 생고생을 하지 않도록 현명하게 운영하는 다양한 슈퍼수프림 꿀팁과 각종 썰에 대해서 늘어놓도록 하겠습니다.
조회수 2824

인스타그램 노가다 마케팅 101

    초기 스타트업에서 마케팅을 한다면 보통 1명이 페북, 인스타, 블로그, PR, 커뮤니티 등등 수 많은 채널들을 왔다갔다 하는데만 헉헉대고 있을 가능성이 크다. 이 중에 가장 노가다가 많이 필요한 채널이 무엇이냐고 물어본다면 단연코 인스타그램이라고 할 수 있겠다. 페이스북이야 어차피 그 복잡한 알고리즘과 컨텐츠 자체의 파급력이 중요한 채널이기에 내가 노가다한다고 성과가 나올 수 있는 채널이 아니니 논외로 하고, 인스타, 블로그 등 나머지 채널 중에서는 노가다 하는 만큼 성과가 나오는 채널은 단연 인스타그램이라는 뜻이다.내가 운영하는 '바크 인스타' 채널 역시 처음에는 아무것도 모르고 '노가다'라는 행위 없이 정론적인 마케팅만 하다가 운영 시작한지 반년이 다되도 팔로워 100명 남짓 머무르던 채널이였으나, 이 글에서 논하게 될 '노가다'라는 걸 한 후에 두달도 안되서 팔로워가 5,500명을 넘어가고 있다.노가다 시작하고 팔로워가 하루에 100명 이상씩 늘어나는 중이다.이 글에서는 이놈의 인스타 '노가다'라는건 어떻게 하는거고, 효과적인 방법론은 뭐가 있는지에 대해 논해보려고 한다. 언제나처럼 야매를 좋아하는 필자로서 풀어내는 방법인지라 너무 정론적인 얘기는 기대하지 않길 바란다. 또한, 이 야매방법론은 주구장창 지속적으로 할 수 있는건 아니고, 야매로 어느정도 팔로워 몸집을 불려놓은 후에 다른 수 많은 글들의 정론적인 방법론을 결합시키면 그 파워가 배가될 것이라는 걸 미리 밝혀둔다.1. 맞팔, 선팔의 위력나같이 인스타를 생전 해본적도 없다가 마케팅상 어쩔수 없어서 시작하게 되면 인스타에 수 많은 사람들이 팔로워를 늘리기 위해 기브앤테이크 마냥 '맞팔'이라는 행위를 하는걸 다소 깔보는 경향이 있다. 나 역시 '뭐야, 이렇게까지 해서 팔로워 수 늘어나는게 의미가 있나?' 이런 생곽과 함께, '사진을 고퀄로 올려라,' '팔로워들과 교류를 자주해라,' '인기 많은 해시태그를 잘 활용해라'등과 같은 시중의 수 많은 정론들만 읽어가면서 인스타 마케팅을 시전했었다. 결과는? 물론 내가 잘 못해서 그런것일수 있지만 반년 다되도록 팔로워가 100-200명 사이를 왔다 갔다리 하는 노답상태였다.노가다 시작하기 전에 바크 인스타 계정이다. 팔로워 숫자가 진짜 초라하다 못해 안스러운 수준이다.노가다의 제 1단계는 나처럼 정론들만 파면서 헛발질 하지 말고 우선 맞팔, 선팔 해시태그를 활용해서 초기에 계정의 몸집을 최소 천단위 이상으로 만들어야 한다는 것이다. 방법은 간단하다. 우선 인스타에서 #맞팔, #선팔, #소통, #팔로우 이런 해시태그들을 검색하고, 그 해시태그로 검색되는 사람들 중 팔로워수가 아직 몇백 수준을 넘지 못한 사람들만 타겟해서 미친듯이 팔로우를 눌러대는 것이다.보다시피 수천만건의 #맞팔 해시태그가 검색된다. 최근 순으로 팔로우를 눌러수는걸 '선팔'이라고 한다.보통은 이것만 하게 되면 사람들이 알아서 '맞팔'이라는걸 해주는데, 이렇게 선팔하면 맞팔 안해주는 사람들이 있다. 그걸 그냥 놔두게 되면 내 인스타 계정의 팔로우에 비해 팔로잉 숫자가 너무 비대해져서 내 인스타가 좀 덜떨어져 보인다. 따라서 그때끄때 체크해서 내가 선팔 했는데 맞팔을 안해주는 계정들은 정기적으로 언팔로우를 눌러줘야 한다. 근데 이게 엄청나게 귀찮은 일이다. 이를 해결해 주기 위해 앱스토어에 수많은 앱이 있다. 그냥 insta, 인스타, 인스타 팔로우 뭐 이런것만 검색해 봐도 앱이 수십개가 뜨는데 대부분 기능은 비슷하니 아무거나 다운받으면 된다 (내가 쓰는 앱은 'Followers'라는 이름의 앱이다). 다운받은 인스타 관리 앱에서 언팔한 사람들만 다음 그림처럼 볼 수 있는데, 몇일 기다려도 맞팔 안하는 사람들만 골라서 언팔로우를 해버릴 수 있다.인스타 팔로우 관리 앱을 통해 이렇게 맞팔 안한 사람들만 정렬해서 볼 수 있다.뻥 안치고 하루에 적어도 3시간 이상씩 이짓거리를 정기적으로 해주면 누구나 인스타 팔로워를 하루에 50명 정도는 늘려나갈 수 있다.2. 코멘트 하나는 라이크 20개 눌러주는 가치와 동일저렇게 선팔 행위 말고도 맞팔 리스트에서 직접 계정에 들어가서 사진도 몇개 라이크 눌러주고 일부 사진에 코멘트를 달아주면 그 사람이 나한테 맞팔을 해줄 가능성과 맞팔 소요시간을 매우 단축시킬 수 있다. 보통 이런식으로 댓글을 달아준다. 잘터지는 사진 하나에는 저런 맞팔 요청 댓글이 주루룩 달리게 된다.이 사람들이 이런 댓글질을 왜 하는거냐면, 누군가가 나한테 댓글을 달면 우선 말풍선 아이콘에 댓글은 따로 표시되고, 인스타 알림창에서도 라이크나 팔로잉 알림과는 차별화되서 보이기 때문에 더 눈에 띄게 되고, 나도 댓글 달은 사람들 먼저 맞팔을 눌러주게 되니 결국 라이크 20개쯤 눌러대는 효과랑 맞먹는거라 할 수 있다.댓글을 달면 알림창에서 라이크에 비해 눈에 확 들어오기 때문에 맞팔 가능성을 더 높혀준다.3. 트렌디한 해시태그 하나는 라이크 100개의 가치가 있음인스타에서는 사람들이 해시태그를 눌러보며 서핑을 하는 사람이 많다. 예를들어 강아지 사진을 보고 있었는데 누가 좀 색다른 해시태그를 달아서 그걸 클릭해 보면, 그 해시태그가 달린 사진들을 타고 들어가서 또 다른 해시태그를 눌러보고... 이런걸 해시태그 서핑이라고 부른다.트렌디한 해시태그를 찾는 방법은 우선 인스타 검색창에 아주 제너럴한 해시태그를 입력해 본다. 그러면 자동완성 기능으로 내가 입력한 해시태그 및 연관 해시태그, 각 해시태그별 포스트 수를 주루룩 보여준다. 아래 이미지에서 보다시피 #멍뭉이를 검색했더니 #멍뭉이그램, #멍뭉이들 등등 수 많은 연관 해시태그를 보여준다. 이 중에서 포스트가 천 단위 넘어가는건 이미 너무 많은 사람들이 사용하는 해시태그라 내 포스트가 검색될 가능성이 별로 없기에 패스하고 #멍뭉이랑, #멍뭉이사랑 같이 백단위 해시태그들을 선택하도록 한다. 포스트가 100개도 안되는 것들은 사람들이 많이 안 쓰는 해시태그일 가능성이 높으므로 피하도록 한다. 이런식으로 해시태그들만 잘 입력해 놓는 것 만으로도 라이크 10개달릴 컨텐츠를 100개까지 만들어내는 위력이 있다.인스타의 해시태그 추천기능이다. 여기서 너무 인기가 많지도, 적지도 않은 해시태그를 찾아서 입력해 준다.4. 사진과 스토리텔링은 기본이건 정론과도 같은 이야기이지만 어쨌든 인스타그램은 사진 기반의 소셜미디어이기 때문에 퀄리티 있는 사진 올리는건 기본중의 기본이다. 가끔가다 보면 내가 라이크를 눌러주기에도 무색할 정도로 저퀄의 사진이나 너무 본인 비즈니스의 광고사진으로만 도배해 놓는 계정들이 있는데 이런 계정들은 위 1,2,3번의 노가다를 아무리 해도 팔로워가 잘 늘어나지 않거나 나중에 지들 계정이 다 차고 나면 언팔로우 1순위 계정이 되버리기 쉽다.또한 컨셉 없이 아무 사진이나 업로드하는 사람들도 있는데 왠만하면 한 영역만 집중해서 나름의 컨셉을 만들어 줘야 팔로워들이 기억하게 되고 나중에 언팔 안하고 계속 팬으로 남아있게 된다. 예를들면 바크 앱의 경우 컨셉이 '모두 개가 되어 소통하는 앱'이기 때문에 인스타 컨텐츠에도 귀여운 멍뭉이 사진들이 많이 있다. 이런식으로 컨셉을 집중하면 라이크도 더 많아지고 팔로워 숫자도 잘 유지된다.바크는 앱의 컨셉 상 귀여운 멍뭉이그램을 메인 컨셉으로 잡았다.5. 원하는 타겟 팔로워 찾아다니면서 컨텐츠 라이크, 선팔 누르기가장 지루하면서도 노가다의 핵심인 부분이다. 내가 만일 육아관련 인스타를 운영중이라면 내 인스타 컨텐츠에 관심이 있을만한 사람들을 찾아다니면서 그 사람들이 비록 1번에 해당하는 맞팔러들이 아닐지라도 그들 게시글에 라이크, 댓글, 선팔등의 행위를 하고 돌아다니면 경험상 그 중 약 5-10%의 사람들은 내 계정에 답방문을 해주고 내 컨텐츠에 관심있으면 맞팔을 해주게 된다.인스타 노가다에서 이게 가장 중요하다. 왜냐하면 1번에서 얘기한 맞팔러로 늘리는 팔로워는 가장 효과적이긴 하지만 내가 원하는 타겟이 내 팔로워로 유입시켜야 한다는 측면에서는 부족하기 때문이다. 1번과 함께 이 5번의 방법을 병행해서 정말 꾸준하게 해줘야 한다. 하지만 대부분은 이 5번 작업을 하길 꺼려하는데, 왜냐하면 1/ 저 사람들을 찾아다니는 것 자체가 일이고, 2/ 찾아서 열심히 선팔, 댓글, 라이크 눌러줘도 답이 없는 사람들이 90% 이상이기 때문에 마음이 많이 상하는 일이기 때문이다. 하지만 이 방법을 정말 꾸준하게 오랫동안 해주면 팔로워가 하루에 200명 이상씩도 늘려나갈 수 있다.방법은 정말 심플하다. 내 인스타 계정이 만일 육아관련 쇼핑몰이라면, 타겟이 육아맘들일 것이고, 육아맘들이 자주 쓰는 다음과 같은 해시태그들을 계속 서핑해 나가면서 타겟들을 찾아서 선팔, 댓글, 라이크를 눌러주는 것이다.#애스타그램, #럽스타그램, #육아소통, #육아맘, #젊줌마, #육아공감, #애어멈, #애엄마스타그램, #아들맘, #젊줌마그램내 계정의 타겟이 자주 쓰는 해시태그를 서핑하면서 검색되는 계정에 들어가서 선팔, 댓글, 라이크 등을 열심히 눌러준다.자, 지금까지 인스타 노가다 마케팅에 대해 공부해 봤다. 다시한번 강조하지만, 인스타그램 마케팅은 팔로워가 어느정도 있는 상황에서 시작하는 것과 완전 제로에서 시작하는 것의 방법론이 많이 다르다. 또한, 완전 제로에서 시작하는 경우 어느정도 노가다+고군분투 기법이 필요하기 때문에 보통 대기업에서 고결하게 마케팅 하다가 온 경우 대부분 초기에 어마어마한 멘붕상태를 경험하게 된다.필자 역시 맞팔등을 해가며 초기 천명을 달성하기 위해 고군분투하던 시절에 [내 컨텐츠력]과 [초기 인큐베이팅 유입을 알아서 잘 끌어와 주는 자동화 툴]의 인스타 마케팅 이분법을 고민하기 시작했고, 후자를 위한 자동화 툴에 대한 연구 끝에 얼마전에 나같은 사람들에게 단비와 같은 솔루션을 개발하게 되어 잠시 이를 광고하려고 하니, 광고를 보기 싫으신 분들은 여기서 창을 닫아주시기 바란다.많은 분들이 초기 팔로워 늘리는게 쉽지가 않아서 다음과 같은 대체방법에 관심을 갖게 된다. 본인 역시 초기에 저런 서비스들 조사해 보고 몇개는 직접 사용도 해봤다.1) 허위로 팔로워/라이크 찍어주는 서비스2) 팔로워 늘리기 봇3) 팔로워 앵벌이 서비스결론부터 말하자면 시중에 그 어떤 서비스도 우리같이 마케터들을 위해 완벽하게 고안된 서비스가 한개도 존재하지 않는다. 각각의 문제점을 간략히 설명해 보면 다음과 같다.1) 허위로 팔로워/라이크 찍어주는 서비스이거는 그냥 수천개의 네트워크 허위 계정을 보유한 업체에서 팔로워, 라이크 숫자를 얼마 이상 찍어주는 서비스이다. 이건 진짜 마케팅에 도움이 1도 안되는 서비스일 뿐더러, 당연히 허위 계정들이기에 (플필 있다고 해서 진짜 계정들이 절대로 아니니 속지말자) 내가 올리는 컨텐츠에 오가닉하게 라이크가 달리지도 않고, 어느정도 시간 지나면 인스타에서 페이크 계정들 정리작업으로 인해 눌려진 팔로워/라이크가 쑥쑥 빠지기까지 한다!! 게다가 허위계정이 섞인터라 내 포스트가 실제 팔로워들에게 도달이 잘 안되는 상황까지 만들어 버리니, 마케터로서 이 서비스를 쓰는건 백해무익이다.2) 팔로워 늘리기 봇이건 뭐냐면, 특정 해시태그들을 입력해 놓으면 봇이 해당 해시태그로 검색되는 포스트를 모조리 찾아내어 해당 포스트를 올린 사람들을 선팔하고 다님으로써 맞팔을 유도하는 봇 프로그램이다. 예를들어 #맞팔, #선팔하면맞팔 등의 해시태그를 찾아다니며 선팔을 하고 다님으로써 맞팔을 유도하는 거다. 1번보다야 훨씬 나은 방식이지만 역시 문제가 존재한다. 1) 인스타에서 봇 프로그램 규제가 빡시기 때문에 허접하게 짜여진 알고리즘의 경우 계정 블락 당하는 경우가 많다. 2) 성인계정이나 활동량이 거의 없는 유령같은 계정을 필터링하는게 불가능하다. 3) 인스타의 rate limit 정책을 정확하게 알 길이 없어 안전빵으로 효율을 최저로 낮춰놓은 봇들이 대부분이다. 가격체계가 기간제로 되어있으면 백퍼 효율을 최저로 낮춰놓고 여기에 1번의 네트워크 계정을 적당히 섞어서 하루 평균 50명 이상은 늘어나는 서비스로 둔갑시켜 버리는 경우가 허다하다. 보통 여기에 반 이상은 허위가 섞여있는데 소비자는 알아채기 힘들다.3) 팔로워 앵벌이 서비스이건 2번에 비해 속도도 느리고 외국인이 많으며 해당 팔로워들은 나중에 먹튀하는 경우가 매우 많다. 한가지 장점이라면 2번에 비해 안전하다. 인스타 정책에 위배되는 행위는 아니기 때문에 이거 썼다고 계정이 막히는 경우는 별로 없다. 개인 계정이라면 이거 써서 팔로워 키우는거 크게 무리는 없지만 마케팅 목적으로 활용하는 기업계정이 이거 쓰고 있는건 조금 없어보이기도 하고 속도도 너무 느려서 비추천이다.이 처럼 시중에 제대로된 서비스가 별로 없다보니, 우리는 업계 최고의 퀄리티라고 자부하는 '인스타슈가'라는 2번영역에 해당하는 봇 알고리즘을 개발해서 약 반년간 운영중이다.인스타슈가 - https://instasugar.co/<iframe width="940.000000" height="529.000000" src="//play-tv.kakao.com/embed/player/cliplink/veb98UxPxU2xu1t2eQoUeFF@my?service=daum_brunch§ion=article&showcover=1&showinfo=0&extensions=0&rel=0" frameborder="0" allowfullscreen="">시중에 제대로된 서비스가 없어서 아예 직접 최강의 솔루션을 만들어 버렸다.인스타슈가는 단순한 팔로워 늘리기 봇이 아니라, 강력한 타겟팅 알고리즘이 거의 사람이 판단하는 수준으로 연관성이 높은 실제 유저들만 찾아다니며 내 팔로워로 유인할 수 있게 설계된 솔루션이다. 또한 업계 최초로 풀 패키지 대시보드가 있어서, 마케터가 직접 세밀하게 타겟팅을 조정해 가며 인큐베이팅이 가능하다. 차별점을 요약해 보면 다음과 같다.1. 40여가지 이상의 기준으로 타겟할 유저를 결정2. 머신러닝 기반의 봇계정이 돌아다니며 수집하고 있는 160만건 이상의 성인, 스팸계정 DB를 통해 99.8%의 정확도로 스팸계정 필터링3. 해당 계정이 개인 계정인지, 비즈니스 용도인지를 검증하여 비즈니스 필터링 모드가 on 되어 있으면 비즈니스 계정들을 94%의 정확도로 필터링4. 인스타그램의 활동 리밋양을 추정하고 이 범위 내에서 최대효율을 내는 확률모델을 통해 가장 팔로워 전환 확률이 높을것으로 추정되는 계정들만 타겟함5.대시보드 -  현재 프로그램이 움직이는 로그, 타겟팅 해시태그 설정, 프로그램의 상태, 시작 및 정지, 다양한 특수 기능들을 모두 실시간으로 확인 & 통제 가능6. 안정성 - 해당 계정에 기능블락이나 특정 이슈가 생기는걸 실시간 감지하여 자동 정지, 속도 조절, 자동 재생 등이 통합적으로 이루어짐특히, 해시태그를 내가 직접 바꿔가면서 전환율을 모니터링하고 본인의 마케팅 방향성에 어울리는 인스타 유저들만 타겟팅 가능한 마케팅 자동화 툴은 인스타슈가가 유일하다.본인의 마케팅 방향성에 어울리는 타겟들만 찾아다니도록 직접  해시태그를 적용 및 변경이 자유자재로 가능한 유일한 솔루션이다.6개월간 재구매율이 80%가 넘을 정도로 만족도가 높고, 쇼핑몰, O2O, 푸드, 레스토랑 등 수 많은 기업 인스타그램 계정이 인스타슈가를 거쳐갔을 정도로 퀄리티가 우수하다 (이름대면 다 알만한 스타트업 계정도 제법 있다).인스타슈가 - https://instasugar.co/** 본 글은 문돌이 PM의 마케터 따라하기 시리즈 입니다.** 1화 보기 - 초기에 할만한 ASO (앱스토어 최적화) 팁** 2화 보기 - 초보 PM이 알아야 하는 초기 모바일앱 분석 101** 3화 보기 - 스타트업 브랜딩: 내가 보는 나와 너가 보는 나의 일치** 4화 보기 - 홍보영상 직접 제작해서 수백만원 절약해보자** 5화 보기 - 바이럴루프, 중요한건 알겠는데 어떻게 적용할래?
조회수 3469

개발자, 디자이너, 기획자의 온도차

 아마 가장 많은 분들이 생각하시기에 가장 걱정되는 부분이라고 생각이 듭니다.그래서 저 역시도 이 이야기를 하는 것에 좀 조심스럽습니다. 이야기는 바로 "업무를 대하는 개발자, 기획자, 디자이너 간의   온도차."입니다. (다시 한번 말씀드려요! 제가 사용한 방법이 백프로 모두에게 맞는 말은 아닙니다!!) 스타트업은 큰 기업처럼 디자인팀, 개발팀, 기획팀이 갈려서 서로의 팀장에게 허가를 받고, 기획을 시작하고, 개발을 시작하고, 디자인하는 그런 상하관계의 구조가 아닙니다. 서로서로들 비슷한 경력들과 환경에서 서비스를 제작하는 사람들이 많죠. 특히, 젊은 스타트업 기업들은 대학생들이나 대학원생 등 아직 본격적인 사회생활을 해보지 않은 인원들이 더 많을 것으로 알고 있습니다. 아시다시피, 다들 맞춰진 직무를 기반으로 개발자는 개발자의 생각과 계산에 따라서 일을 진행하고 있고, 기획자는 기한에 맞춰 예상했던 진행대로 일을 진행하고 싶어 하고, 디자이너들은 보다 다은 디자인으로 서비스를 보이려 다양한 자료들을 모으고 분석하여 제작자의 아이디어를 입혀 새로운 콘텐츠를 제작하려 노력합니다.문제는 서로가 서로의 일에 대하여 모른다는 것입니다. 스타트업의 팀원들 간의 커뮤니케이션은 마치 연애와 같아서 서로 이야기해주지 않으면 모를 수밖에 없고, 서로 어떻게 일을 하는지, 얼마나 시간이 걸릴 것이다 등 일정에 대한 공유나, 업무를 하는 절차를 이야기 해주짖 않으면, 원치 않는 감정의 골이 생기기 마련입니다. 이런 문제를 해결하기 위해, 기업은 매일매일 아침시간에 진행하는 Scrum이라든지, Jira, Taskworld, Trello 등 다양한 프로젝트 매니지먼트 툴을 사용하고, 스크럼 마스터나, 다양한 서비스를 제작해 보신 PM(Project Manager), 또는 PO(Product Owner)님들이 각부서의 현황들을 파악하고, 다양한 부서를 총괄하고 관리합니다.그러나, 기본적으로 국내 스타트업 상황은업무자들의 수가 절대적으로 부족하고,젊은 개발자나 디자이너 같은 경우는 생업(또는 학업)과 스타트업을 동시에 하는 인원이 많고,젊은 창업자들과 직원들의 경우, 프로젝트 경험이 없어 이러한 분업구조를  낯설어하고,개발자와 디자이너 역시 자신이 작업하는 프로젝트가 언제쯤 끝날지 가늠할 수 없는 상황이 생기고,적은 인원들이 많은 프로젝트를  진행하느라 예민한 구조가 되어 남을 이해하기 힘든 상황등의 다양한 이유들 때문에 각 직군 간의 갈등 상황이 큰 기업에 대비하여 많이 생기고 있습니다(물론 큰 기업도 문제가 없진 않다고 합니다.).이 전설의 짤을 보신적이 있으신 분들도 많으실듯... (출처: http://9gag.com/) 이러한 갈등 해결 방안은 다음에 더  디테일하게 설명드리도록 하고, 이번 글에서는 간단히 저가 생각하는 발전방향에 대하여  이야기해보도록 하겠습니다. 앞서 말씀드린 것과 같이, 스타트업 팀원들의 관계는 마치 연예와 비슷하다고 생각합니다. 말하지 않으면 모를 수밖에 없는 노릇이고, 말을 해줘도 이해할 수 없는 일들이 수두룩 합니다(그런 이유로 저는, 스타트업에서 근무하시는 분들은 서로의 업무에 대하여 어느 정도의 배경지식을 배우는 게 필요하다고 생각합니다.). 그럼에도 불구하고 우리는 항상 이야기를 해야 해요. 연애를 할 때도 말이 안 통해도 될 때까지 이야기하듯이. 스타트업에서의 업무는 끊임없이 피보팅을 진행하고, 하루하루 떠오르는 처리해야 할 일들이 생깁니다. 그리고, 그러한 변경사항들에 관하여  이야기할 때, 서로가 서로의 말을 이해해 주지 못한다면, 더 큰 갈등 상황들을 야기하기 마련이지요. 그러나, 만약 각 직군의 전문가들이 서로의 업무에 대한 배경이나, 아주 기본적이더라도 기초사항을 알고 있다면, 서로의 업무량에 대한 불만이 아무래도 적을  수밖에 없다고 생각합니다. 제가 스타트업을 진행할 당시를 말씀드리자면, 저는 창업 당시 기획자로서 서비스를 기획하고, 프로젝트를 관리하고, 투자 또는 공모전 등에 쓰일 기획서 등을 제작하는 업무를 주로 하였습니다. 디자인에 관하여는 무엇을 논할 수 있는 실력도 아니고, 개발에 관하여는 더더욱 그렇습니다. 그러므로 기획서를 작성할 때나, 어떤 계획을 할 때 “원하는 시간”을 개발자나 디자이너에게 요청하고, 그러한 요청 사안과 당사자들과의 이야기를 통해 조정하고 계획을 진행하는 것이 주  업무였습니다. 그리고 나름 생각하기에는 "개발이나 디자인을 하나도 모르는 사람이 일의 진행 정도를 스스로 보고 판단하고, 기한을 준다는 것은 올바르지 않다."라고 생각하여 아주 기초적일 수 있지만 웹 공부와 포토샵 일러스트 디자인 등의 디자인과 개발 툴 공부를 꾸준히 하면서 개발과 기획에서 어느 정도  서포트할 수 있는 실력을 기르기 위해 많은 시간을 투자했었습니다. 그리고 이러한 노력 덕분에 서로의 직군과 업무에 대한 고충을 이해할 수 있어서 많은 이점을 가질 수 있었지만, 그럼에도 불구하고, 자주자주 일이 딜레이 되는 상황이 발생하였고, 그러함에 따라서 개발자와 디자이너와 기획자들이 조금씩 소원해지고  섭섭해지는 상황이 발생하였던 것 같습니다. 그래서 하나 더 생각했던 것이, "일을 처음 시작하는 초보들에게도 바로 적용해서 업무에 도입할 수 없는 어려운 프로젝트 매니지먼트 툴이 아닌 서로의 작업현황이나, 상태 정도를 가늠할 수 있는 PM 툴을 만들어 보자." 하는 것이었습니다. 그래서 창업 당시 사용한 아주 간단한 툴이 있는데, 이 프로젝트 메니지 방법은 내일 이미지로 보여드리면서 설명드릴게요. :) 그리고 지금은 Taskworld나 Jira 같은 더 전문적인 툴을 사용하고 있지만, 해당 툴에 대한 전문전 지식이 아직 없는 분들은 엑셀 등으로 서로의 일을 정리해서 공유하는 것도 좋을 것 같네요! 기회가 되면, 요즘은 제가 어떤 식으로 툴을 사용하는지 설명하는 글도 적도록 하겠습니다! 마지막으로 긴 글을 세줄 정리하자면, 1. 개발자, 기획자, 디자이너는 달라요. x나 달라요.... 2. 다르면 잘 들어보고 뭘 하는지 아는 것이 중요하다고 생각합니다. 3. 그리고 서로가 어떤 일을 하고 있는지 현황을 파악할 수 있다면 더 좋겠죠?오늘도 읽어주셔서 감사합니다! 좋은 하루들 되세요:)#코인원 #블록체인 #기술기업 #암호화폐 #스타트업인사이트
조회수 2732

Eclipse 디버거 사용법

꽤 많은 분들이 디버거의 존재 자체를 모르고 있거나 혹은 디버거가 있다는 사실은 알아도 그 효용성에 의문을 제기하곤 합니다. 왜냐하면, 우리에겐 Log 클래스나 혹은 printf같은 훌륭한(?) 디버깅 도구가 있다고 생각하기 때문이죠. 물론 이렇게 필요한 변수를 찍어보면서 어떤 곳에서 버그가 있는지를 알아보는 일이 잘못된 일은 아닙니다만 복잡한 여러 상황이 맞물려 재현되는 버그는 이러한 고전적인(?) 방법을 써서 알아보기가 매우 어렵습니다.원인을 정확히 그리고 빨리 파악하려면 디버거의 사용법을 숙지하고 사용하는 것이 가장 좋습니다. 대부분의 개발 환경에서 디버거를 제공하는데 다행히 이클립스에서도 쓸만한 디버거를 내장하고 있습니다.오늘 포스팅에서는 이클립스 디버거 사용법에 대해 다루어 볼까 합니다.이클립스 디버거 뷰이클립스는 디버거 뷰를 제공하여 디버거를 사용할 수 있도록 합니다. 디버거 뷰는 어디에서 확인할 수 있을까요? 바로 우측 상단에 Debug 뷰에 들어가면 그곳에서 확인할 수 있습니다.디버깅의 시작그렇다면 어떻게 디버깅을 활성화한 상태로 프로그램을 실행할 수 있을까요? 상단 메뉴의 Run에서 프로그램을 실행할 때 Debug를 이용하여 프로그램을 실행하면 디버거가 작동하게 됩니다.브레이크 포인트 설정과 뷰보통 디버깅을 할 때 가장 먼저 하는 일이 브레이크 포인트를 잡는 일입니다. 브레이크 포인트를 에러가 일어나는 라인이나 혹은 의심이 가는 변수를 추적할 수 있는 라인쯤에 잡아놓고 프로그램을 디버깅하면 해당 라인을 실행할 때 디버거가 작동하게 되고 그곳에서 프로그램을 라인 별로 진행해가며 관찰을 진행할 수 있게 됩니다.브레이크 포인트 설정은 매우 간단합니다. 편집기 왼쪽에 파란 부분(마커 바)을 더블 클릭하게 되면 파란 원이 생기는데 이 원이 브레이크 포인트입니다. 혹은 오른 클릭하여 Toggle break point를 누르면 됩니다. 설정 후 다시 더블 클릭하게 되면 브레이크 포인트가 사라지게 됩니다.또한, 디버그의 브레이크 포인트 뷰에서 지금까지 걸어놓은 모든 브레이크 포인트들의 위치를 확인할 수 있고 활성화/비활성화, 삭제도 할 수 있습니다. 여러 브레이크 포인트가 걸려있을 때에는 이 탭에서 확인하고 관리하는 것이 더 편합니다.또한, 디버깅을 진행하고 있는 도중에도 다른 의심이 가는 라인에 브레이크 포인트를 걸 수 있습니다.스텝 단위 진행지정한 브레이크 포인트에 다다르면 동시에 디버거가 작동하게 되고 그 라인부터 스텝 단위의 진행을 할 수 있게 됩니다.이제 이 뷰의 버튼들을 이용하여 현재 상황을 진행하거나 되돌릴 수 있습니다. 자주 사용하는 버튼의 사용법을 알아보면Resume : 다음 브레이크 포인트를 만날때까지 진행합니다.Suspend : 현재 작동하고 있는 쓰레드를 멈춥니다.Terminate : 프로그램을 종료합니다.Step Into : 메서드가 존재할 경우 그 안으로 들어가 메서드 진행 상황을 볼 수 있도록 합니다.Step Over : 다음 라인으로 이동합니다. 메서드가 있어도 그냥 무시하고 다음 라인으로 이동합니다.Step Return : 현 메서드에서 바로 리턴합니다.Drop to Frame : 메서드를 처음부터 다시 실행합니다.등이 있습니다.실제로 디버깅 화면에서 버튼들을 눌러보면 쉽게 그 쓰임새를 아실 수 있습니다.변수의 상태 확인을 쉽게 해주는 변수 뷰디버깅을 진행하는 도중 변수의 값이나 객체의 상태를 알고 싶은 상황이 생기게 됩니다. 현재 의심이 가는 변수 이외에도 이 변수에 영향을 끼칠 다른 변수들이나 객체들의 상황을 실시간으로 검사할 필요가 있을 때 변수 뷰를 이용하면 도움을 얻을 수 있습니다.이곳에서 변수나 객체의 상태를 확인하고 변수의 상황에 대해서 저장할 수 있습니다. 변수나 객체의 상황을 모두 저장해서 클립보드에 붙이고 싶은 일이 생기면 해당 변수를 오른클릭 후 Copy Variables를 선택합니다.편집 창으로 돌아가 변수에서 Command + shift + i를 누르게 되면(혹은 오른 클릭 후 Inspect를 선택) Inspector 창이 뜨게 됩니다. 이 창에서 다시 한번 Command + shift + i를 누르면 해당 변수를 Expression 뷰로 보내게 되고 이곳에서 지속해서 변수의 상태를 관찰할 수 있게 됩니다.Expression 뷰 이용Expression 뷰에서는 변수 이름을 입력하거나 수행해보고 싶은 명령어를 직접 입력하여 그 결과 값을 관찰할 수 있습니다. 결과 값을 관찰할 뿐만 아니라 Expression에 써놓은 변수들은 명시적으로 지우지 않는 이상 계속해서 관찰을 수행하기 때문에 변해가는 상황을 지속해서 관찰할 일이 있는 변수나 명령문을 등록해놓기에 좋습니다.Display 뷰 이용디스플레이 뷰에서는 현 문맥에서 사용할 수 있는 명령어를 실행하거나 변수의 값을 조작하는 일을 수행하기에 적합한 환경을 제공합니다. Expression에서도 비슷한 기능을 제공하지만, 디스플레이 뷰를 이용하는 것이 더 편합니다. 메모장과 같이 쉽게 쓰고 지울 수 있기 때문입니다.또한, 원본 코드의 수정 없이 편하게 현재의 맥락을 변화시킬 수 있는 것이 가장 큰 장점이라고 볼 수 있습니다.필요한 명령어들을 적어놓은 후 실행하고 싶은 부분만 드래그하여 수행하거나 혹은 값을 리턴받을 수 있습니다. 지금은 boolean변수 하나의 값을 바꿔보기도 하고 조건 값에 따라 무언가를 리턴 받도록도 해놓은 상황을 스크린 샷으로 담아보았습니다.값을 반환받고 싶을 때는 두 번째 버튼을, 단순히 실행만 할 때에는 세 번째 버튼을 누르면 됩니다.두 번째 버튼을 눌러 값을 반환받는 상황입니다.단순히 실행만 하려면 세 번째 버튼을 누릅니다.브레이크 포인트에 조건 걸기브레이크 포인트에 조건을 거는 것이 굉장히 유용할 때가 있습니다. 특히 반복문안에 들어가 있는 코드들을 디버깅할 때 유용하지요. 반복문의 경우 모든 상황을 검사한다기보다는 특정 조건에서 값이 어떻게 들어가는지를 분석하는 경우가 더 많은데 이러한 상황을 검사하기 위해서 브레이크 포인트에 조건을 걸어야 합니다.브레이크 포인트를 거는 과정까지는 똑같습니다. 브레이크 포인트를 건 후 그 포인트에서 오른 클릭을 하면 Breakpoint properties 옵션이 있는 것을 확인할 수 있습니다. 이 옵션에서 조건문을 설정하여 디버거의 활성화 조건을 설정할 수 있습니다.먼저 Conditional을 활성화하여 어떤 조건에서 디버깅 화면으로 전환할지를 쓰면 되는데 이 창에 조건식을 쓰면 됩니다.또 hit count를 이용하여 조건을 걸 수도 있습니다. hit count에 값을 적용하면 해당 라인에 브레이크 포인트가 hit count만큼 잡힌 이후 디버깅 화면으로 전환하게 됩니다. hit count옵션은 반복문에서 한 100번쯤 이후에 디버깅을 시작하고 싶거나 하는 일이 생길 때 유용하게 쓸 수 있습니다.#스포카 #개발 #개발자 #꿀팁 #조언 #인사이트 #디버거 #디버깅 #디버그 #Eclipse
조회수 1282

당신의 말에 진심으로 응답하다

국세청에서 문자가 왔습니다. 취업 후 학자금 의무상환액 납부확인서를 통지했으나 납부하지 않아 안내문을 발송하였고 확인한 후 납부해달라는 문자였습니다.‘내가 연체를 한 건가?’ 알지 못했던 연체사실을 알게 되어 초조해졌습니다. 저는 자세한 내용을 확인하기 위해 국세청에 전화를 했습니다. 납부확인서는 언제 어떤 방법으로 보낸 것인지도 몰랐고 가상계좌를 받아 바로 입금을 해야겠다는 생각이 들었습니다. 첫 시도는 실패. 그날 하루 동안 5분 이상의 통화대기를 3번 이상 경험해야 했고 업무시간 내내 신경이 쓰였습니다.연체사실 통보로 인해 고객센터 연결을 원한 고객이 많았는지 국세청 고객센터 업무시간 마감 전에야 상담원과 전화연결이 되었고 상담원은 지친 기색이 역력했습니다. 연결이 쉽게 되지 않아 무척 화가 났지만, 화를 내는 고객을 달랠 기력도 없는 상담원을 국세청의 방패막이로 취급하고 싶지 않았습니다.그리고 황당하게도 상담원이 알려줄 수 있는 내용은 홈페이지에서 금액과 가상계좌를 확인할 수 있는 방법 안내뿐. 그녀가 할 수 있는 건 아무것도 없었습니다. 결국 목소리가 날카로워진 저에게 권한 없는 상담원의 기가 죽은 목소리가 전달됩니다. 저는 바로 말을 바꿔 “이럴 줄 알았다면 문자 내용에 확인방법을 알려주었다면 좋았을 텐데요. 제가 전화할 필요도 없었을 테고요. 고생이 정말 많으십니다.” 그제야 상담원의 목소리에 화색이 돌았습니다. 아무 권한이 없고 홈페이지에서 확인방법 밖에 알려줄 수 없다며 내내 미안해하던 상담원은 그제야 내게 웃어주었습니다.고객이 불편함을 감수하게 하고 서비스 제공자가 고객의 입장을 제대로 생각하지 못해 상담원을 방패막이로 사용하는 사례는 정말 많습니다. 저 또한 고객의 입장을 생각하지 않는 회사에서 일을 했고 고객의 입장보다는 회사의 손실을 몇 천 원 줄이기 위해 방패막이가 되기도 했습니다.제가 쇼핑몰에서 일했을 적에는 낱개로 주문하는 고객에게 세트상품을 알려주며 할인받는 팁을 알려주었던 적이 있습니다. 이렇게 일을 몇 개월 하니 관리자가 실실 웃으며 저에게 고객에게 꼭 알려주어야겠냐고 말한 적도 있습니다. 매출을 올리기 위해 그 이후로는 관리자의 무언의 압박에 고객에게 세트 할인 방법을 안내하지 못했습니다. 결국 그 회사에서는 고객을 단기간의 매출을 위한 돈줄로만 보고 이용하는 사람을 위한 서비스를 만들지 못하는 것인가 자괴감에 빠져 퇴사를 했습니다.많은 회사들이 고객만족이라고 외치지만 정말 고객을 보는 곳은 몇 없다는 것을 실무자였던 저는 알고 있었습니다. 변화를 사랑하는 곳, 스타트업스타트업은 사회적 이슈에 긍정적인 변화를 일으킬 수 있는 곳입니다. 고객이 불편함을 느끼는 사항에 작은 변화의 바람을 일으키고 빠르게 대처할 수 있는 곳을 찾아 헤매었습니다. 고객이 중요시하는 것에 최선을 다하는 기업이 성공할 것이고 그곳 이제가 일할 곳이라 생각했습니다. 면접 자리에서 ‘고객들이 전화를 하지 않아도 되는 고객센터를 만들고 싶다. 서비스의 불편함으로 인해 고객이 전화를 하는 일이 없었으면 좋겠다. 사용자 미숙으로 인한 단순문의나 고객의 제안을 받으며 고객과 대화하는 이상적인 컨택센터를 만들어보고 싶다.’ 이런 이야기를 할 때 바로 ‘그런 건 없다’ 라며 웃는 면접관을 만나기도 했습니다. 이렇게 여러 회사의 대표들과 면접을 보다 서상훈 대표를 만나게 되었습니다. 서상훈 대표와의 첫 만남에서 4시간을 대화했습니다. 면접 자리에서 저의 이상향을 얘기하니 서상훈 대표는 P2P 대출을 통해 불법 사금융, 대부업 대신 그 시장을 중금리 대출이 차지하는, 고금리로 고통받는 사람들이 없어질  수 있는 세계를 저에게 보여주었습니다.  ‘세상에 대부업이 없는 사회라니! 말도 안 되는 이야기를 하는 입장은 항상 나라고 생각했는데 이 사람은 더 말도 안 되는 이야기를 하는구나.’ 티브이의 대부광고를 보며 대한민국에 깊게 뿌리내린 일본계 대부업의 존재를 증오하면서도 어느새 일상으로 받아들인 저에게 생각지 못한 큰 그림을 보여주는 모습에 저의 꿈도 같이 이룰 수 있을 것 같았습니다. 그때 저는 이곳에 와야겠다고 결심했습니다. 어니스트펀드 핵심운영팀저는 어니스트펀드의 팀원이 되었고 핵심운영팀에 소속되어 있습니다. 팀장 또한 제가 만났던 기존의 관리자와는 달랐습니다. 서비스가 제공된 지 1년, 영화 '인턴'에 나오는 앤 해서웨이처럼 업무 중간에 고객센터 전화를 받기도 하며, 업무가 바쁜 와중에도 고객과의 접점을 잃지 않기 위해 노력합니다. (전화기 한 대를 본인 옆에 두어 달라고 했지만 운영시간 내에 자리를 비우는 경우가 많아 제가 거절했습니다.) 고객의 목소리를 이렇게 귀하게 생각했던 사람이 있던가 싶어 팀장과 대화를 할 때는 여기 오길 잘 했구나, 행복해지기도 합니다. 또한 제가 신입일 때 제 교육을 담당했던 팀원 한 명은 디테일에 집착하는 스타일로 고객이 서비스 이용에 불편함이 없도록, 문의를 하지 않아도 서비스 이용에 불편함이 없도록 야근을 밥 먹듯이 하며 끙끙대며 고민하는 모습을 자주 봅니다. 또 다른 커뮤니케이션 팀원은 엉뚱하기도 하지만 본인의 방법으로 고민하며 고객에게 친절하기 위해 노력합니다. 저와 함께 일하는 핵심운영팀의 모든 동료들은 고객에게 최고, 최선의 서비스를 제공하기 위해 자발적으로 야근하며 많은 시간을 들여 고민합니다.저는 어니스트펀드의 내부에서 기계적으로 응대하지 않으려 노력하고 더 친절하기 위해, 고객이 경험하는 서비스에 대해 지속적으로 고민합니다. 여타의 다른 서비스와 어떻게 차별화를 할 수 있을까요? 저는 누구보다 서비스를 이용하는 당신의 편에서 빠른 피드백을 줄 수 있도록 노력할 겁니다. 고객에게 어떻게 정제된 모습을 보여주고 나아가 진심이 전달이 될 수 있을지, 고객이 생각하는 이상의 세심함을 느낄 수 있도록 하기 위해 아직은 부족한 게 많습니다. 그래도 제가 다른 곳에서 느낀 불편함과 부당함을 우리 고객들은 느끼지 않았으면 합니다.저의 꿈은 우리의 서비스가 고객에게 무한한 관심을 가지고 있음을 나타내며 서비스에 대한 압도적인 신뢰를 받고 싶다는 것입니다. 혁신적인 기술을 통해 고객이 생각하는 것을 다 반영될 수 있도록 하는 것 만이 아니라 생각 못 하는 디테일까지 잡아내고 싶습니다. 정말 이용하는 사람을 생각하는 서비스를 만들어 보기 위해 노력하고 있습니다.나의 숨결이 닿은 서비스가 당신에게 더 진심으로 다가가길 바랍니다. 당신이 우리의 서비스를 이해하고 이용하는데 어려움 없이 정착할 수 있도록, 당신의 목소리를 서비스에 반영하여 우리 서비스가 당신의 삶을 더 충만하게 해주는 좋은 만남이 되길 바랍니다.#어니스트펀드 #고객중심 #인사이트 #CS대응 #CS상담 #CS업무 #상담업무 #상담
조회수 948

Jeykll에서 플러그인 없이 sitemape 생성하기

오늘은 구글에서 블로그를 검색할 수 있도록 설정하는데에서 크게 삽질했다.. 구글 웹마스터에 사이트맵을 등록해야 했는데 그 사이트맵이 자꾸 테스트를 통과못해서 3시간이나 삽질했다.. ㅠㅠ계속 삽질하다가 찾은 이유는.. _config.yml 파일에 url 속성이 없어서 url을 가져오지 못해 생긴 문제였다. ㅠㅠ 정말 허무하고 신나고.. 아무튼 모든 문제를 해결하여 성공적으로 완료했으니 그 방법에 대해 정리하도록 하겠음.참고한 블로그: 스우의 게임서버와 클라이언트! 미친듯이 영어 검색어들로 오류를 찾으며 삽질했었는데 의외로 한글 블로그에서 이 부분에 대해 언급되어 있어 해결할 수 있었다. 감사합니다 ㅠㅠsitemap 생성하기1. sitemap.xml 파일 생성블로그의 root 디렉토리에 sitemap.xml 파일 생성.2. sitemap.xml 파일 작성하단의 코드를 복사하여 만들어준 sitemap.xml 파일에 붙여넣기.            3. url 설정추가_config.yml 파일에 url 설정이 없는 경우 url 설정을 추가하여 sitemap.xml에서 site.url 변수값을 사용할 수 있도록 해줌. (이 부분 때문에 무한 삽질 ㅠㅠ)4. 구글 웹마스터 툴에서 테스트 혹은 제출구글 웹마스터 툴에서 테스트 혹은 제출을 통해 만들어준 sitemap이 제대로 동작하는지 확인.여태 GA나 기타 여러가지를 설정하느라 공개하지 않았는데 이제서야 공개합니다.제 블로그는 https://heelog.github.io/about/ 입니다!#트레바리 #개발자 #안드로이드 #앱개발 #Jeykll #백엔드 #인사이트 #경험공유
조회수 1645

Amazon SageMaker는 처음이지?

Overview브랜디 랩스를 사랑해주시는 여러분, 안녕하세요. 개발자 오-연주입니다. 지난 4월, Brandi Back-end 개발자 분들과 코엑스에서 열렸던 AWS Summit(04.18 - 04.19)에 다녀왔습니다!여러 세션을 듣는 와중에 우연히 AI machine learning 를 쉽게 도와주는 Cloud Machine learning Flatform인 Amazon SageMaker에 대해 들었습니다. 듣던 중 머닝러닝에서 학습을 시켜 그 데이터로 ‘Brandi 서비스와 연관지으면 어떨까’ 라는 생각을 했는데요. 그래서 오늘은 많은 분들의 관심사인 머신러닝 학습관련 Amazon Amazon SageMaker에 대한 글을 쓰려고 합니다.sage는 마법사, 현자라는 의미입니다.sageMaker를 create하자!“자, 퐈이팅 넘치게 신나게 sagemaker를 create해볼까요!” 했는데…Seoul Region이 없다!현재 지원되는 리전은 아직 네 군데입니다. 저는 제일 있어 보이는 미국 동부의 버지니아를 선택하겠습니다.1] EU (Iceland) 2] US West (Oregon) 3] USEast (N. Virginia) 4] US East (Ohio)SageMaker를 create하기 전에는 학습할 데이터와 학습 모델을 저장할 S3 Bucket이 필요합니다.1. Default 값으로 S3를 만드세요.중요한 점은, bucket 이름이 “sagemaker-” 로 시작되어야 한다는 것입니다. 그래야 나중에 notebook instance가 어느 곳에 데이터를 저장할지 알 수 있습니다.Next, Create bucket 버튼을 누르다 보니, S3 Bucket이 생성되었습니다.2. Create notebook instance 버튼을 눌러 SageMaker를 만들어 봅시다!원하는 이름을 지어줍니다. 저는 machineLearningTest 라고 지었어요. IAM role 선택하는 부분에서 None을 눌러 Default 값으로 sageMaker를 만듭니다.인고의 Pending 시간3. Pending이 끝나고 “open” action을 선택하면 Jupyter가 열립니다.Jupyter(Jupyter Notebook)는 오픈 소스로 라이브 코드, 등식, 코드에 대한 시각화를 위해 사용됩니다. 또한 description을 위한 텍스트 문서(마크다운 등)를 지원하는 웹 어플리케이션입니다. 이렇게 하면 코드에 대한 문서화가 가능합니다. 이 글에서는 Jupyter Notebook을 통해 데이터를 학습하고, 그 데이터를 테스트하겠습니다. 제가 진행한 전체 코드 스크립트(entire script)는 이 글의 마지막 부분에 기술있으니 참고해 주세요.자, 이제 드디어 머신러닝 학습을 시킬 차례입니다. 머신러닝 학습에 꼭 필요한 키워드 두 가지를 뽑아봤는데요. - Dataset: 정제된 데이터와 그 데이터에 대한 label을 정리해 놓은 데이터 모음      - Machine learning Algorithm: 기계학습 알고리즘 우리는 MNIST 데이터셋을 k-means 알고리즘으로 학습시킬 겁니다.1)MNIST Dataset기계학습 알고리즘을 사용할 때 가장 기본적으로 테스트하는 데이터셋으로 MNIST 데이터셋이 있습니다. 이것은 사람이 0부터 9까지 숫자 중 하나를 손글씨로 쓴 이미지 데이터와, 해당 이미지에 대한 레이블(0 - 9)이 6만 개 들어있는 학습 데이터셋입니다. 각 이미지는 가로와 세로가 각각 28 픽셀로서, 각 픽셀은 0부터 255 사이의 숫자가 있습니다. 다시 말해, 하나의 이미지는 28 x 28 = 784개의 숫자로 이루어진 데이터입니다. 하나의 이미지를 나타내는 데이터의 array > length가 784라고 표현할 수 있겠네요.MNIST dataset2)k-means지금 만든 SageMaker 학습 알고리즘은 AWS 튜토리얼에서 제시한 K-means를 사용할 예정입니다. k-means는 label 없이, 즉 정답을 모르는 상태로 학습을 하는 비지도 학습 (unsupervised learning) 알고리즘 중 가장 쉽고 많이 쓰입니다. 정답을 모르니, ‘비슷한 애들끼리 뭉쳐봐’ 라고 하고, 알고리즘은 비슷한 친구들끼리 뭉쳐 놓습니다. k-means에서 k는 ‘k개 덩어리로 뭉쳐주세요’라고 제시하는 숫자입니다. 우리는 0부터 9까지 비슷한 친구들끼리 모이게 하고 싶으니 k=10을 쓸 겁니다.지금부터 해야 할 TO DO!1. MNIST 데이터셋을 다운로드받고, 우리가 학습시키기 좋도록 정제하기(preprocessing)2. Amazon SageMaker를 통하여 데이터 학습시키기(training job)3. Amazon SageMaker를 통하여 학습된 데이터를 배포하기(Deploy the model)4. 배포된 모델에 요청을 보내 테스트 데이터에 대한 예측값을 받아오기(inference)4. Jupyter 노트북 인스턴스 생성하기Jupyter에 New Notebook(conda_python3)을 선택해 새로운 노트북을 생성합니다.5. 학습시키기 위한 기본 셋팅드디어 코딩 시작입니다! (의욕활활) 초기 설정해두었던 IAM role, S3 Bucket, MNIST 다운로드, 다운받은 데이터 등을 확인하세요. 글보다 코드로 주석을 보는 게 가독성이 더 좋습니다. 아래 노트북을 통해 마크다운, 주석처리를 통해 description을 해두었으니 참고 바랍니다.외부에서 MNIST 다운로드가 쉽도록 한 url로 MNIST를 다운받는데 성공했습니다. MNIST 데이터셋 내용물 중 하나를 jupyter notebook에 그려서 제대로 다운 받았는지 show_digit() 함수를 작성해 확인하겠습니다.서른 번째 데이터는 누군가 3을 손글씨로 쓴 이미지입니다.6. 머신러닝 학습하기이 세션에서는 기계학습 알고리즘 설정, 학습할 데이터 경로를 지정하겠습니다. 그 후 MNIST 학습 데이터를 S3 버킷에 옮겨 저장합니다.kmeans.fit() 함수를 호출해 직접 학습을 시켜볼까요? 학습 과정은 상당히 오래 걸린다고 했는데 다행히 4분 만에 학습이 끝났습니다.여기서 잠깐! 여기서 k = 10에 대해서 조금 더 알아보도록 할게요. cluster란 한 지점에 점을 찍고 데이터 분석을 한 뒤, 비슷한 데이터들의 군집을 만들어 주는 것입니다. k-means가 진행되면서 각 cluster의 중심이 서로가 잘 뭉치는 방향으로 이동합니다. 직접 그려봤어요(부끄).7. 학습된 모델을 배포하기학습을 시키면 테스트를 하거나 사용할 수 있어야겠죠? 학습된 모델을 배포해 주세요.8. 배포된 모델 테스트 진행하기배포된 모델에 valid_set 데이터로 검증 데이터를 진행합니다..predict() 함수를 호출하면 새로운 이미지가 어떤 cluster에 속했는지 예측 결과를 알려줍니다. 가장 가까운 cluster가 0번이라고 예측 결과를 반환했네요. 또한 cluster 중심과의 거리는 5.85라고 알려줍니다. 여기서 중요한 점은 cluster 번호와 실제 숫자는 일치하지 않는다는 겁니다. 알고리즘은 임의로 cluster 중심에 번호를 매기는데, 꼭 0번 클러스터가 숫자 ’0’을 뭉쳐놓은 건 아니에요!9. 데이터 예측해보기더 많은 데이터를 예측해볼까요? valid set에 있는 100개 데이터를 예측해봅시다! 각 cluster에 가까운 데이터들이 쭉 선정되었습니다. 정확하지는 않지만 비슷한 숫자 모양들이 서로 군집되어 나타납니다. 0과 2같은 숫자들은 잘 표현되지만, 알고리즘이 9랑 4를 헷갈리거나 5와 3을 헷갈리는 듯 하네요.FASHION MNIST로 SageMaker 머신러닝 학습 및 예측해보기자, 이제 몸도 풀었으니 제가 하고 싶었던 패션 관련 머신러닝 학습 및 예측을 진행해볼게요. 마침 옷 그림으로 MNIST와 매우 비슷한 데이터를 만들어 놓은 fashion-MNIST라는 데이터셋을 발견했어요!1. 패션 관련 MNIST 다운로드 받기패션 MNIST 데이터셋을 우선 다운받아 볼게요! 다운로드는 여기에서 받을 수 있습니다. 총 네 개의 파일을 다운로드 받으세요.- train-images-idx3-ubyte.gz : train set 이미지  - train-labels-idx1-ubyte.gz : train set 레이블  - t10k-images-idx3-ubyte.gz : test set 이미지  - t10k-labels-idx1-ubyte.gz : test set 레이블  다운로드 받은 패션 Mnist의 label은 아래와 같이 되어 있습니다. 숫자 0부터 9 대신에 각 이미지가 어떤 이미지인지 텍스트로 표현되어 있어요.LabelDescription0T-shirt/top1Trouser2Pullover3Dress4Coat5Sandal6Shirt7Sneaker8Bag9Ankle boot2. Fashion-MNIST 데이터셋을 이전에 사용했던 mnist.pkl.gz 와 같은 형태로 변환해주는 스크립트 작성해주기위에서 연습할 때는 mnist.pkl.gz 한 개 파일만 사용했는데요!?! 그래서 다운로드 받은 네 개의 파일을 똑같은 형식의 파일 하나로 만들어주는 파이썬 스크립트를 작성해 fashion-mnist.pkl.gz 파일로 만들었어요.import gzip import pickle import numpy as np # MNIST 데이터셋은 train, test 셋이 각각 image, label로 나누어 저장되어있는 4개의 파일로 구성 test_image_path = 't10k-images-idx3-ubyte.gz' test_label_path = 't10k-labels-idx1-ubyte.gz' train_label_path = 'train-labels-idx1-ubyte.gz' train_image_path = 'train-images-idx3-ubyte.gz' out_file_name = 'fashion-mnist.pkl.gz' # train label / images 추출 with gzip.open(train_label_path, 'rb') as train_label_f:     train_label = np.frombuffer(             train_label_f.read(), dtype=np.uint8, offset=8).astype(np.int64)   with gzip.open(train_image_path, 'rb') as train_image_f:     train_imgs = np.frombuffer(             train_image_f.read(), dtype=np.uint8, offset=16).reshape(-1, 784).astype(np.float32)   # test label / images 추출 with gzip.open(test_label_path, 'rb') as test_label_f:     test_label = np.frombuffer(test_label_f.read(), dtype=np.uint8, offset=8).astype(np.int64)   with gzip.open(test_image_path, 'rb') as test_image_f:     test_imgs = np.frombuffer(             test_image_f.read(), dtype=np.uint8, offset=16).reshape(-1, 784).astype(np.float32)   # 기존 60000개 training set에서 50000개는 train set으로 사용하고, 10000개는 valid set으로 활용 train_label, valid_label = train_label[:50000], train_label[50000:]  train_imgs, valid_imgs = train_imgs[:50000], train_imgs[50000:]   # train set, validati on set, test set을 튜플 자료형으로 저장 out_data = ((train_imgs, train_label),             (valid_imgs, valid_label),             (test_imgs, test_label))   # pickle file로 dataset 데이터 포맷 맞춰주기 with gzip.open(out_file_name, 'wb') as out_f:     pickle.dump(out_data, out_f) 이 과정을 통해 나온 결과물, fashion-mnist.pkl.gz 를 Jupyter Notebook이 있는 경로에 업로드합니다.fashion-mnist.pkl.gz가 업로드 되었습니다!3. 머신러닝 학습하기아까 사용했던 활용했던 숫자 MNIST 스크립트를 그대로 사용하겠습니다. show_digit()을 이름만 바꾼 show_fashion()으로 데이터를 살펴보니 드레스가 보입니다.조금 전에 했던 숫자 MNIST와 똑같은 과정을 SageMaker를 이용해, 학습 → 테스트 → 예측해보니 아래와 같은 예측 결과를 얻을 수 있었습니다. 신발은 신발끼리, 바지는 바지끼리, 가방은 가방끼리 분류된 게 너무나 신기합니다. (아까 진행한 숫자보다 더 학습이 잘 된 것 같은건 기분 탓일까요…?)머신러닝이라고 겁내지 않아도 됩니다! 유저들에게 더 좋은 서비스 제공할 수 있으니까요. 지금까지 브랜디 개발2팀의 단아한 개발자 오연ㅈ….참사를 막아주세요.앗, 잠시만요!! 중요한 것을 놓칠 뻔 했네요.저처럼 테스트를 하면 그냥 지나치지 마세요. 자동 결제로 출금되는 뼈 아픈 경험을 할 수도 있습니다. 반드시 이용했던 서비스들을 stop 하거나 terminate 해주세요. (Clean-up단계) 자세한 내용은 여기를 클릭하세요.지금까지 Brandi 개발 2팀, 단아한 개발자 오연주였습니다!# entire script (숫자 Mnist) # 오호 드디어 coding start! # 이제부터 Brandi의 단아한 개발자, 저를 따라오시면 됩니다 :) # 노트북 Block을 실행하는 방법은 Shift + Enter 입니다 from sagemaker import get_execution_role role = get_execution_role()  # 초기에 설정해 뒀던 IAM role 가져오기 bucket = 'sagemaker-julie-test' # 초기 단계에 만들었던 S3 Bucket 이름 적기 %%time import pickle, gzip, numpy, urllib.request, json   # 여기서 잠깐, 생소한 라이브러리 설명을 드릴게요! # pickle: python식 데이터 압축 포맷 # numpy: 수치 계산을 하기 위한 python package # Load the dataset urllib.request.urlretrieve("http://deeplearning.net/data/mnist/mnist.pkl.gz", "mnist.pkl.gz") with gzip.open('mnist.pkl.gz', 'rb') as f:     train_set, valid_set, test_set = pickle.load(f, encoding="latin1")     # matplotlib로 그리는 그림이 jupyter 노트북에 바로 보여줄 수 있도록 설정 %matplotlib inline import matplotlib.pyplot as plt # 도표나 그림을 그릴 수 있게 해주는 라이브러리 plt.rcParams["figure.figsize"] = (2, 10) # 그림의 크기 지정 def show_digit(img, caption='', subplot=None):     if subplot is None:         _,(subplot) = plt.subplots(1,1)         imgr = img.reshape((28, 28))     subplot.axis('off')     subplot.imshow(imgr, cmap='gray')     plt.title(caption)   # train_set의 그림과[0] 데이터 이름[1]을 예시로 보여준다 show_digit(train_set[0][30], 'This is a {}'.format(train_set[1][30]))   # 학습을 하기 위해 학습 알고리즘 및 데이터 경로 설정! from sagemaker import KMeans data_location = 's3://{}/kmeans_highlevel_example/data'.format(bucket) output_location = 's3://{}/kmeans_example/output'.format(bucket)   print('training data will be uploaded to: {}'.format(data_location)) print('training artifacts will be uploaded to: {}'.format(output_location))   kmeans = KMeans(role=role,                 train_instance_count=2,  # 장비 2대를 사용하여 학습하겠어요!                 train_instance_type='ml.c4.8xlarge',                 output_path=output_location,                 k=10,  # 아래 그림을 참고해 주세요!                 data_location=data_location) %%time   # 학습 시작! kmeans.fit(kmeans.record_set(train_set[0]))   %%time # 모델을 만든 후 사용하기 위하여 배포하기 kmeans_predictor = kmeans.deploy(initial_instance_count=1,                                 instance_type='ml.m4.xlarge')                                  # valid_set에 30번째 sample을 테스트 해보기 result = kmeans_predictor.predict(valid_set[0][30:31])  print(result)   %%time   # vaild_set에 있는 0번부터 99번까지의 데이터로 cluster를 예측 해보자 result = kmeans_predictor.predict(valid_set[0][0:100])   # 예측 결과에 대한 cluster 정보를 수집 clusters = [r.label['closest_cluster'].float32_tensor.values[0] for r in result]   # 각 cluster별 예측된 이미지 출력 for cluster in range(10):     print('\n\n\nCluster {}:'.format(int(cluster)))     digits = [ img for l, img in zip(clusters, valid_set[0]) if int(l) == cluster ]     height = ((len(digits)-1)//5)+1     width = 5     plt.rcParams["figure.figsize"] = (width,height)     _, subplots = plt.subplots(height, width)     subplots = numpy.ndarray.flatten(subplots)     for subplot, image in zip(subplots, digits):         show_digit(image, subplot=subplot)     for subplot in subplots[len(digits):]:         subplot.axis('off')     plt.show() 출처Getting Started - Amazon SageMaker CodeOnWeb - 머신러닝 초보를 위한 MNIST fashion-mnist 글오연주 사원 | R&D 개발2팀[email protected]브랜디, 오직 예쁜 옷만#브랜디 #개발문화 #개발팀 #업무환경 #인사이트 #경험공유
조회수 1449

스타트업에게 전략이란?

모든 일에는 계획이 있어야 한다.방학을 맞이하는 초등학생들조차도계획서를 만들어서 살아가는데스타트업이 계획없이 생존을 기대한다면,그것은 도둑놈 심보가 아닐까?창업을 하는 단계를 보면,1) 아이디어 구상2) 사업계획서 작성3) 내부실행(팀빌딩/자금/공간확보)4) 외부실행(인프라/협력사/매출처 확보)이렇게 크게 4단계로 요약할 수 있다.(그 외 더 세부적인 사항들은 생략!)하지만,위의 단계들 하나하나가 쉽지 않을 뿐더러계속 반복되고, 수정되기에끝없는 관리와 보완이 필요하다.그 중에서 콕 집어서,사업계획서에 대한 이야기를 오늘 나누고자 한다.(암기하는 공식처럼 속성 스킬을 전수받길 원하는가? 그럼 번지수를 잘 못 찾아왔네)사업계획서의 스킬에 대한 이야기는 아니다.예비창업자나 창업을 꿈꾸는 직장인이라던가경력을 바탕으로 도전하려는 분들에게아이디어를 어떻게 사업계획서에 녹여낼 것인지많은 고민을 하고 있음을 알고 있다.나 역시 그 중 한 명이었고,직장에서부터 창업 이전과 오늘까지도사업계획서가 아내보다 더 가까운 사람이니까.정부지원사업에 선정되는 사업계획서 노하우,공모전에 통하는 사업계획서,투자자가 원하는 사업계획서 등사업계획서의 스킬/구성에 관한 강연이나 책을쉽게 접할 수 있다.지금은 딱히 찾아다니지는 않지만,초창기의 나는 꽤 많은 발품을 팔고,서치를 하면서 찾아다니고 배워왔다.그러다보니,꽤 사업계획서 작성에 익숙해지고,그다지 큰 부담감보다는 일상적인 업무 중 하나로인식하고 있다.체계적인 구성과 사업계획서가 돋보이는 스킬도필요한 기술이고, 능력에 속한다.하지만 이것에 너무 매몰되다보면본질을 잃은 사업계획서가 탄생하고,단지, 일회성 소모품과 같은 서류만 쌓일 뿐이다.안은 텅텅 비어버린 사업계획서가심사위원이나 투자자, 바이어의 눈속임용으로흘러가는 모습이 다소 눈쌀을 찌뿌리게 한다.초반에 한 두 번은 그럴 수 있다.아직 비지니스 모델도, 타겟고객도,시장의 니즈도 불명확할 수 있고,어떻게 구현할지에 대한 경로를 잘 모를 수도 있다.정보의 부족으로 인해잘 몰라서, 그런 사업계획서가 탄생할 수도 있다.근데 의도적으로 그런 사업계획서를 쓴거라면,난 당신을 위해 독설을 한 바가지 하고 싶다.그것은 지금 당장은 달콤해보여도,당신과 회사의 생명을 갉아 먹는 마약이라고.사업계획서에 대한 교육은 필요하다.처음에는 두렵고, 막막하거든.체계적으로 정리가 안 되었고,어떻게 써야할지 망설여지는거지.이미 사업계획서에 대한 정답은본인이 가지고 있다.사업계획서에 대한 강연이나 교육은체계와 구성을 잡아주고북돋아주는 것이다.혼자가 아닌 단체로 진행하다보니커리큘럽에 따라 남들과 같이 행동하다보니혼자 막막해하던 망설임을 벗어나행동으로 옮기도록 도와주는 역할을 한다.강연자나 교육자는그에 대한 보상으로컨설팅/강연비를 받으며,추가적으로 영업의 기회를 늘려간다.지식을 전달하고, 기술을 전해주면서Give & Take가 이루어지는 엄연한 비지니스이다.창업을 준비하거나 초기에는 크게 도움 받는다는 점에서유용하며, 혼자 고민하기보단 효과적이다.요즘은 이러한 컨설팅이 많아지다보니,자극적인 문구로 마케팅을 한다.(경쟁이 치열해지면 자극적으로 흐르는 건 수순인듯)"사업계획서 강연을 듣고, OOO에 선정되었습니다.""망하지 않는 사업계획서 쓰는 법""돈 안들이고 창업하는 사업계획서""100% 지원받을 수 있는 백전백승 사업계획서"대학생 예비창업자들은취업준비생 모임, 모의면접 모임과 같이창업/아이디어 공모전 사업계획서를 연구분석하기도 하더라.이것도 전략이라면 전략이겠지만....그리 곱게 보아주기는 어려운 현상이랄까?그런 풍조로 흘러가도록부추기는 공급자와 거기에 편승하는 수요자들 덕분에그 쪽 시장은 여전히 활황인가보다.그럼 나도 이 글의 마지막 쯤에 비법을 알려줄께.사업계획서 잘 쓰는 법에 대해서 말야.(그렇다고 중간 생략하고 끝만 보려하지 말라고)니가 뭔데 사업계획서 가르치려드느냐고 묻는다면,딱히 잘 쓴다고는 말 못하겠다.오늘도 우리 회사 사업계획서 수정작업하면서,과거에 쓴 사업계획서를 복습하는데...정말 부실하고, 왜 이리 두서없이 썼는지 헛웃음이 나오더라.그런 놈이 무슨 사업계획서 잘 쓰는 비법을 알려주냐고?굳이 상세하게 남기진 않겠지만,사업을 하면서 필요한 정부/민간지원 프로그램,국가R&D과제, 지재권과 수출지원프로그램이라던가,공모전에서 수상도 꽤 많이 했다.사실 이런 것들은 그다지 상세하게 드러내고 싶진 않아.분명하게 사업에 큰 도움은 되고 있지만,사업의 주목적에 서포트 되는 것일 뿐!이 부분은 너무 강조하면다른 대표들이 본질을 잃을까봐 늘 조심스러워.어쨋든,사업계획서가 나에게는 일상이고,회사 업무 중에서 끝없는 뫼비우스의 띠같아.투자/생산/판매/유통에 대한 협력이 필요할때,가장 기본이 되는게 사업계획서거든.제대로 된 사업계획서.바로 그것이 "전략의 힘"이거든.사업계획서를 만들고,수시로 수정/보완하면서진행하다보면 깜짝 놀라게 될거야.진짜 사업계획서가 "전략"이야.(중세시대 부대의 배치와 구성을 잘 나타내는 그림)한 동안 시끌시끌했던 삼성의 미래전략기획실이란거 있잖아.그 곳이 만들어내는 전략들은 엄청난 영향을 끼치지.괜히 대기업 삼성의 핵심 사업실이 아니란 말야.우리 회사는 창업 준비기간이 2년 정도였어.그리고 법인 설립 후, 2년 4개월차에 들어서지.어찌보면, 중고신인 같은 느낌이랄까?준비기간 2년동안 무얼했냐고?사업을 준비한게 2012년 11월이었고,2014년 12월에 법인을 설립했으니까돌이켜보면 꽤 시간이 많이 들어갔어.아이디어 다듬고, 시장조사하고중국까지 넘어가서 동료들은 반년 넘게 생활했어.그 때, 정리한 사업이 4개 분야고당연히 개별사업계획서도 딸려있지.거기에 사업분야 1개 당 아이템도 2 ~ 3개.전체 사업계획서는 2020년까지의 큰 걸 만들었고,연차별 사업계획서는 2018년까지 만들었지.어떻게 수행할 것이고,어디와 협력해야할 것이며,누구를 꼭 합류시켜야 하며,어떤 자금을 얼마나 끌어올 것인지,중간중간에 수행해야할 지표가 무엇인지를 정하는데많은 시간을 할애하였어.처음엔 시행착오가 정말 많았다.도와주겠단 말에 넘어가 간쓸개 다 내주듯이사업계획서와 백데이터를 고스라니 건내주길 3번.중국에서 공안에게 불려가기도 하고,한국에서 검찰에 사건이 접수되기도 하고,초기 자금이 다 떨어져 창업도 하기 전에강제해산될 뻔도 하고,지원사업 선정되고 막상 돈 한 푼 쓰지도 못 하고 종료한 적도 있다.(이 때, 참 무슨 깡인지 자체자금만 다 소진했지)창업한 후에도 많은 꼬라박기를 했다.실컷 일해주고, 거래처가 기업회생절차 들어가서 돈 떼이고뭘 믿고 너희랑 거래하냐고 면박도 많이 당하고,생각보다 더 강하게 그리고 자주 거절당하다보니어느새 익숙해지더라고.그 외에 계획한대로 이루어진 것들보다계획한대로 안되서 좌절한 일이 더더더 많다.그래도 금방 다시 페이스를 잃지 않고,다음 날이면 새사람이 된 듯 운영한 힘은사업계획서에 Plan B가 있었기 때문이야.계획대로 안된 것은 안된 이유를 찾아 수정하면 되고,대안으로 준비한 다음 스텝을 진행해야해서넋놓을 시간적 여유조차 없었거든.(계획한 것과 달리, 뜻대로 안되는 일이 일상다반사)세상 모든 일이 계획대로 절대 되지 않는다.그러나,계획한대로 실행하다보면, 허투로 시간을 보내지 않는다.실패와 실수 속에서 뭔가 배우고 성장한다.그렇게 사업계획서가 보완되고, 더 세부적인 코멘트가 붙는다.그게 쌓이고, 쌓이면어느 순간부터는 사업계획서대로이루어지는 것들이 눈에 띄게 증가한다.왜냐면,우리는 진짜 사업계획서 안에서 움직이고 있으니까.살아서 움직이듯이 매일, 매주, 매달크고 작은 일들에 자극받고 꿈틀거리는 사업계획서 말야.진짜 사업계획서라는 녀석은 진화하는 특징이 있다.스트레스를 받으면, 그것에 대한 내성을 만들어낸다.약한 점을 겹겹이 보완하려하고,강한 점을 날카롭게 갈고 닦으려는 본성이 있다.지식에 대한 탐구심이 많아서수시로 바뀌는 환경에 대해 정보를 수집하고,자기식대로 소화시켜 자기 몸으로 만드는...좀 멋드러진 말로 섭식진화를 한다.가짜 사업계획서는무생물과 같아서 크게 변화가 없다.물론 깎이고, 붙이고 하면서  모양은 좀 낼 수 있어.문지르다보면 반질반질하게 윤이 나기도 하지.여기저기서 다른 사람의 자료를 덕지덕지 붙여서프랑켄슈타인처럼 시체조각을 꼬매놓은 상태랄까?시장조사도 그냥 신문기사나 통계자료를 그대로 차용해 오지.그러다보니, 진짜 유효한 구매층의 시장크기를 몰라.그건 시장조사가 아니라 그냥 복붙이야(복사하기+붙여넣기).수박 겉핧기식의 시장 조사지.대충 이 아이템의 국내외 시장 크기는 이렇고,그중에서 우리는 어떤 정도 예상하고 있다 수준으로 끝나지.진짜로 시장 조사는 우선 고객의 니즈를 파악하고,연령대나 구매패턴, 가격저항선, 재구매률 등을 세분화해야해.그리고 나름 공신력있는 통계치들을 여러개 찾아와야 해.조사기관과 목적에 따라 통계치는 다르니까편차를 잡으려면, 동일한 시기의 다수 통계치를 비교분석해야 하거든.그리고 딱 꼬집어 우리의 아이템에 맞춰진 시장조사를다른 누군가 해 주었을 확률은 매우 낮아.그러다보니, 우리가 모은 정보들을 토대로 재해석이 필요하다.거기에 벤치마킹할 대상의 재무/사업 관련 자료를 찾아보면 더 좋다.(팁 하나 주자면, 금융감독원의 전자공시 시스템 일명 "다트"에 가면 꽤 유용한 정보가 많지)가능한 연관될 수 있는 자료는 다 모아서 분석해야 편차를 줄일 수 있다.특히 특정기업에서 의뢰하거나 제공하는 자료는 시장조사가 꽤 긍정적이라는 사실을 알 수 있다.왜냐면, 긍정적으로 보여야지 자신들의 사업이 유망하다는 논거로 쓰니까좀 걸러서 보수적으로 해석해야할 필요가 있지.시장조사 하나만 해도 꽤 많은 자료 리서칭과 분석이 필요해.사업계획서 안의 각 항목들은 세부 계획서가 있어야 한다.예를 들어,R&D 계획, HR 계획, Fineancing 계획, 제품계획, 마케팅 계획 등하나의 큰 사업계획서에는 그에 딸린 세부적/구체적인 계획서가 있다.다수의 창업자들은 달랑 하나로 엮인 사업계획서를 가지고사업을 수행하는데 관리적인 측면에서 너무 부실하지.물론 전체를 한 눈에 볼 수 있는 사업계획서가 하나 있어야 해.근데 그걸로 팀원들에게 업무롤과 계획을 다 이해시킬 수 있을까?각 부분에 맞춘 사업계획서를 계속 돌리고, 돌려야 하지.그러다보니 사업계획서를 확인하고 수정하는 작업에생각 이상으로 시간이 소요되거든.이게 관리라는 거야.계획이 있고, 진행 사항을 점검하고, 수정하고, 대안을 모색하고,다시 실행해보고 반복하면서 사업을 이끌어가는거지.특히, 많이 간과하는 계획서가 바로 HR계획이야.다른 계획들은 다양한 교육과 강의를 통해 중요성을 알테지만은근히 인력수급과 업무에 대한 계획은 쉽게 생각하더라고.우리처럼 정부의 지원을 많이 받은 케이스의 스타트업들이쉽게 빠지는 오류가 이 부분이야.정부지원사업이 서류가 많다고 하잖아.사실이야.근데 그거에 파 묻혀서 제품/서비스를 못 만든다?서류업무가 많아지면, 시간을 낼 수 있도록 업무를 분배해야지.근데 분담할 사람이 없네?왜?사람을 채용 안 했으니까.업무에 대한 교육을 안 했으니까.대표자가 결국 직접 다 하다보니,서류에 치여서 다른 일을 못하게 되는거지.창업지원프로그램에는 신규고용에 대한 비용도 있어.그리고 업무가 늘어나면 그 만큼 사람을 늘려야 하는게 해답이잖아.지원 받은 돈 아껴쓰려고 HR을 소홀히하면고스라니 대표자에게 업무 로딩이 걸려.제품/서비스에는 엄두도 못 내게 되고,시간이 지나면 또 다시 정부지원만을 구원자로 보게 되지.이건 내 개인적으로고용이 늘어나지 않은 지원사업 수혜기업은추가적으로 지원하지 않는 것이 낫다고 생각해.무리하게 고용을 늘리라는게 아니라,본질적인 업무를 끌고 갈 수 있을 상황을 만들기 위해서필요한 최소한의 고용은 해야한다는거야.정부지원을 받으면서 비용도 줄이고,제품/서비스를 개발 완료해서 시장에 나오는그런 스타트업들의 특징은균형을 잘 맞춘다는 거야.어느 한 쪽에 치우침 없이 정해진 기간에큰 틀의 계획 안에서 오차범위를 줄여가며남들보다 한 발 더 앞서게 되는거지.왜냐면 남들은 한 발을 못 내딛고 있거든.그러려면 개발자가 되었든,운영/관리자가 되었든,기획자가 되었든간에 대표가 하던 업무 중 일부를맡을 수 있는 사람이 있어야하고,키워야 할 필요성이 있는거야.그래서 HR 계획서가 있어야 한다.급여지급(비용)과 채용시기, 교육 방안, 업무롤 등을세세하게 고민해서 만들어야 한다.이 모든게 사업계획서 안에 있어야 하지.어디 발표용으로 PPT 한 장에 담아 놓고,사업계획서라고 할 수 있을까?그게 바로 보여주기식 무늬만 사업계획서야.그것만 보다보면,대표도 세뇌가 되기 시작한다.무늬만 사업계획서를 믿고 살아가면,여기저기에서 터지는 리스크들을대처할 방안이 없고, 늘 악순환의 연속이 된다.제대로 사업계획서대로 진행해도머리 아프고 불쑥불쑥 튀는 이슈들이 많은데...!그러니 초반부터 진짜 사업계획서를 작성하는 연습이 필요해.수정하는 것도 꾸준히 해야하는거고.독서토론회나 영화에 대한 수다를 나눌 때를 상상해봐.시놉시스(줄거리)만 가지고 이야기를 끌어가는 것과책이나 영화를 보고 이야기를 끌어가는 것의 차이야.게다가 그것을 반복해서 보게 되면,그 깊이는 매우 달라지지.이전에 보이지 않았던 복선이나 암시, 상징들이 보이듯이,우리가 예상치 못 했던 리스크와 대안들이 보일거야.한가지 고백할게 있어.난 말야. 2014년까지만 해도정말 볼품없는 쓰레기 같은 사업계획서 들고 다녔어.체계도 없었고,자료도 부실하고,아이디어만 덕지덕지실행방법은 두리뭉실그래서 참 쓴소리도 많이 듣고,날카로운 지적과 부끄러운 상황이 일상이었지.왠만한 곳에서는 다 거절 당했어.창업 전 2년 간 준비한 사업계획서들이양과 갯수는 많았지만...쓰잘데기 없는 군살이 너무 많았어.그리고 창업 후, 2년 넘는 시간동안이진짜 내 사업계획서로 환골탈퇴하는 기회였지.나처럼 초반부터 삽질하지 않길 바래.내가 까먹은 시간과 노력을시행착오라고 좋게 포장할 수도 있겠지만그냥 노력 대비 성과가 없는 비효율적인 시간이 많았어.그럼 창업 전, 후 각각 2년의 시간 간격 사이에무슨 차이가 있었을까?바로 동료야.창업 2년 전, 혼자 창업준비를 시작했고창업 1년 전, 동료를 포섭하게 되었지.창업 1년 후, 동료들이 개별업무와 내 업무 일부를 가져갔어.창업 2년 후, 더 늘어난 동료들이 많은 업무를 개선해주고 있어.사업계획서가 비약적으로 발전하는 시기가동료들 덕분이었지.나 혼자서는 정말 발전없이,계속 삽질 했을거야.마지막으로...아까 약속했던 사업계획서 잘 쓰는 비법을 남길께.1) 정해진 사업계획서 양식과 순서대로 쓸 것!(어디나 양식은 다 제공하니까 그거대로 써!)2) 남의 사업계획서 많이 봐둘 것!(잘 쓴 것을 우선 따라하기부터 해봐.)3) 남들 데이터에 의존하지 말고, 너의 진짜 데이터로 채워!시장의 크기/경쟁사/기술조사 등 복붙만하지말고,진짜 살아있는 정보로, 너의 것으로 재구축하란말야.별거 없지?맞아. 별거 없어.이 별거 없는 일을 확인하고, 업데이트하고, 반복하는게 중요해.허무하지?가장 간단하고 기본적이지만멀지 않은 곳에 해답은 있어.오늘도 어제보다 더 성장할 너를 응원할께.나도 오늘보다 더 성장할 내일을 기대하고 있어.우리 스타트업 대표님들의사업성공을 진심으로 기원하며...#클린그린 #스타트업 #스타트업창업 #창업자 #초기창업 #고민 #인사이트 #조언
조회수 1031

프리랜서에서 마케팅 디자이너로

주식회사 마이쿤 '스푼 라디오' 서비스를 운영하는 회사엔 대체 어떤 사람이 근무를 하고 있을까?한 번쯤은 다들 그런 생각과 궁금증을 가진다. "저 회사엔 어떤 사람들이 근무 하는지 궁금하다!"스푼과 함께 하고자 하는 분들을 위하여, 그리고 서비스를 사용하는 유저분들과 공유하고자 '스푼을 만드는 사람들'을 한 명 한 명 인터뷰를 통하여 내부를 공개하기로 했다.완벽한 인싸템 장착 양말 어디서 사세요?재키를 떠올리면 가장 먼저 생각나는 건 바로 '양말'이다. 대체 어디서 저런 귀여운 양말들을 구매했을까? 싶을 정도로 귀엽고 예쁜 양말을 신고 출근하는 재키에게 물었다. "대체 양말 어디서 사세요? 양말이 정말 특이해요!"그러자, 재키는 이렇게 대답했다."제가 양말이 특이하단 말을 여기서 처음 들었어요. 제가 비닐 바지를 입고 다니는 것도 아닌데..."닉네임이 'Jakie'인 이유 1. 중성적인 이름, 성별이 가늠이 가지 않아서2. 짱구 극장판에 등장하는 비밀요원의 이름3. '재클린'이라는 이름에서 비롯됌(실제로 재키를 보면 재키라는 이름이 너무나도 잘 어울린다)재키의 자리마케팅 디자이너가 되기까지 Q. 재키는 스카우트 제안이 들어오셔서, 입사하신 걸로 알고 있는데 맞나요?"네, 맞아요. 저는 원래 그림을 그리던 프리랜서였어요. 강사에서, 프리랜서로 그리고 지금은 '회사원' 이 되었어요. 살면서 한 번쯤은 직장인도 해보면 좋지 않을까? 하는 마음에 입사 제안을 받아들였습니다."Q. 마케팅 디자이너로서의 삶은 어떤가요?"저는 사실, 그림을 그리는 사람이기에 '디자인'을 따로 공부한 적이 없었어요. 기획과 디자인은 다른 업무이니까요. 그림을 그리는 작업을 하는 건 동일하지만, 마케팅과 접목시키는 것은 또 다른 일이라고 생각해요. 마케팅 디자인은 저에게 새로운 세계이기도 하거든요. 그저 단순히 좋아하는 그림을 작업하는 것이 아니니까요. 디자이너로 소속되었지만 어느 정도의 마케팅 지식과 데이터를 볼 줄도 알아야 하기에 입사 후 많이 배우고 즐겁게 일하고 있습니다."Q. 어디서 영감을 얻나요?"저는 이전에 만들었던 작업물에서 영감을 얻는 편이에요. 관심 있던 전시회를 가기도 하고요."Q. 앞으로 해보고 싶은 작업은?"일본에서 더 많이 활용되고 있는 스푼 캐릭터 모코모니 캐릭터를 더 활용해서 작업하고 싶어요. 한국에서도 모코모니를 알리고 싶기도 하고요"나는 그림을 그리는 사람 원래 그림을 잘 그렸냐는 질문에 재키의 대답은, "어릴 때부터 그림 말고는 다른 일을 할 줄 몰랐어요" 라던지, 앞으로 만약 그림을 그리지 못하면 어떻게 할 것이냐는 대답에 재키는 무조건 이번 생은 '그림'이라고 답했을 정도로 그림에 대한 애정이 가득하다.당신의 회사생활이 궁금합니다 Q. 아침에 회사 오면 하는 일은?"아침에 출근하면 회사 카페테리아에 있는 컵밥을 먹어요. 원래 인스턴트 음식을 잘 먹지 않는 편이지만, 출퇴근길이 멀다 보니 아침식사를 회사에서 하게 되었어요. 주로 먹는 메뉴는 '날치알'과 '참치마요 덮밥' 정도?"Q. 회사 냉장고 최애템은?"우유를 마십니다. 원래 탄산음료를 안 좋아하기도 하고, 점점 나이가 들면서 건강해져야 한다는 생각이 들더라고요."Q. 입사 후 가장 기억 남는 에피소드는?"매 달에 한번 마지막 목요일에 회사엔 '피자데이'가 있어요. 저는 그 피자데이가 신선하기도 하면서, 가장 좋았던 점은 피자 브랜드가 바로 도미노 였기 때문이에요" (도미노를 좋아함)Q. 어떤 사람들과 일하고 싶으세요?저는 의사소통을 굉장히 중요하게 생각해요. 완만한 의사소통이 되는 사람들 그리고 저와 관심사가 다른 분야의 사람들과 작업해보고 싶어요. 다른 시각에서 또 영감을 얻을 수가 있으니까요. 만약 제가 누군가의 사수가 된다면, 저는 저 또한 배울 수 있는 후배이자 동료가 있었으면 좋겠어요.당신의 사생활이 궁금합니다.Q. 요즘 고민이 있다면?"저는 출퇴근길이 워낙 멀어서 그게 가장 큰 고민이라면 고민이에요. 그래서 항상 칼퇴를 하는데, 그것 말곤 없는 것 같아요 하하"Q. 본인을 한 마디로 표현하자면?헐크 - "맨날 화가 나 있어서요. 아침에 출근할 때도 퇴근할 때도(출근길) 그리고 녹색 아이템이 많거든요"Q. 스트레스를 받으면 어떻게 해소하세요?"저는 극한의 스트레스를 받으면 잠이 와요. 그게 안 좋다는 소리를 듣긴 했지만(?) 그리고 저는 게임을 해요. 심즈라던지 밭 일구고 농장 짓고 그렇게 마음이 편안해지는 게임들 있잖아요."재키가 그린 그림으로 제작한 굿즈 한국 마케팅 팀원들이 재키를 한마디로 표현한다면?Sunny 曰: 효자손 - 손이 닿지 않는 부분을 긁어주는 그런 존재Summer 曰: 허수아비 - 닮아서..Ted 曰:고추장 - 시간이 지날수록 매력이 남다름 하지만 그 매력 속에 톡 쏘는 맛이 은근히 있음Ringo 曰: 보리차 - 그냥 보았을 때는 정적이고 잔잔한데 얘기할수록 친절하고 구수하고 매력 있다.Jay 曰:가오나시 - 다른 차원에 존재하는 것 같아서 

기업문화 엿볼 때, 더팀스

로그인

/