스토리 홈

인터뷰

피드

뉴스

조회수 2310

AWS S3를 이용하여 Vue 배포하기

Vue를 처음 만났을 때, 이것으로 무엇을 할 수 있을지 궁금했다. 하지만 Vue로 데모 앱과 개발 가이드를 따라하면서 의문은 점점 풀렸다. 알다시피 Vue는 front-end 로 활용이 된다. 빌드가 없어도 되고, 빌드를 해서 배포할 수도 있다. Vue는 일반 CDN을 이용하여 페이지를 만드는 방법과 여러 프레임워크를 활용하여 배포하는 방법 외에 다양한 방법이 존재하는데, 무슨 방법을 쓰든 결과물은 html과 js, css 같은 static 파일로만 이루어져 있다.처음에는 일반적인 방법으로 테스트하면서 다양한 디렉티브와 손쉽게 DOM 처리를 하는 방법을 익혔다. 나중엔 프로젝트에 참여하면서 webpack 으로 빌드해 배포하도록 프로젝트를 구성했다. webpack을 이용한 배포방법은 여기 를 참고하면 된다. 참고로 webpack은 nodeJS로 실행되기 때문에 기본적인 환경을 세팅해야 한다.webpack build.js 일부위처럼 직접 스크립트를 만들어서 사용해도 되지만 Vue에서 제공하는 템플릿으로 프로젝트를 생성할 수도 있다. 단 Vue-CLI가 미리 설치되어 있어야 한다.터미널에서 vue init webpack 프로젝트명만 치면 세팅된 템플릿으로 폴더 및 스크립트들이 구성된다. 아래와 같이 프로젝트의 기본 속성들을 입력하자.프로젝트를 만들면 기본적인 파일들로 이루어진 폴더가 생성된다. 현재는 관련 라이브러리들이 없는 상태이므로 npm install 을 통해 설치한다. 설치 후 nom run dev 로 개발모드를 실행하면 브라우저로 화면을 볼 수 있다. 만약 설치하고 빌드 설정을 수정하지 않았다면 기본 8080 포트로 가동된다. 브라우저를 실행해 http://localhost:8080 으로 접속하면 아래와 같은 화면이 나온다.여기까지 하면 webpack 으로 배포할 수 있는 상태가 되었다. 이제 AWS로 가서 회원가입을 하고 S3를 생성한다. 생성 방법은 여기를 참고하면 된다. 버킷까지 생성되었다면 이제 빌드 후 업로드하자.위와 같이 nom run build 를 하면 빌드가 시작된다.빌드가 완료되면 해당 프로젝트 폴더에 dist 폴더가 생성된다. dist 폴더에는 index.html 과 js, css 와 같은 리소스들이 들어간다. 이제 S3로 가서 올리려는 버킷을 클릭하자.업로드 버튼을 클릭하고, dist 폴더에 있는 index.html 과 static 폴더를 업로드한다. 폴더가 업로드되면 아래와 같이 파일과 폴더들이 보인다.업로드가 완료되었다고 지금 바로 웹사이트처럼 접근할 수는 없다. 정적 웹사이트 호스팅 설정을 활성화해야 비로소 가능하다. 속성 탭을 클릭해 정적 웹사이트 호스팅을 활성화 상태로 만든다.위와 같이 활성화하고 인덱스 문서에만 index.html 을 입력한 후 저장 버튼을 클릭한다. 현재 보이는 엔드포인트 주소가 외부에서 접근할 수 있는 사이트 도메인이다. 그 후 엔드포인트 주소로 접속하면 아래와 같이 오류 페이지를 볼 수 있다.이게 무슨 오류란 말인가… index.html 파일도 있는데 403 오류라니..자세한 http 응답코드는 여기를 참고하면 된다. 위의 오류는 권한이 없어서 파일에 액세스할 수 없다는 페이지다. S3는 기본적으로 모두에게 공개하진 않는다. 그래서 특정 파일이나 특정 버킷만 공개형으로 변경해줘야 한다.이 문제를 해결하려면 권한 탭으로 이동해 버킷 정책을 설정해야 한다. 아래와 같이 설정해주면 누구에게나 공개되어 접근할 수 있다.위 내용을 아래와 같이 버킷 정책으로 설정한다.설정을 저장한 후 다시 엔드포인트로 접속하면 아래와 같이 로컬에서 보였던 페이지가 보인다.이렇게 보이면 성공!다음엔 Vue가 어떤식으로 동작을 하는지 알아보도록 하겠다.마치며Vue는 간결하면서도 강력한 기능을 가지고 있는 front-end 프레임워크다. 개념과 디렉티브, 이벤트 핸들링, 보안 등 궁금한 게 많았지만 신통방통한 놈인 건 확실하다. 아직 큰 프로젝트에 사용하는 건 힘들 수도 있으나 아래와 같이 장점이 많아 서버단과 클라이언트단 분리 개발, 외부 라이브러리와 사용하면 훌륭한 프레임워크가 될 거라는 생각이 든다.재사용 가능한 기능별 컴포넌트 개발훌륭한 라우터 탑재서버와 통신 가능한 ajax 모듈이 다양함 ( jQuery Ajax, Axios )다양한 호환 라이브러리를 활용하면 분명 훌륭한 프레임워크가 될 것!편집자 주) 함께 보면 좋아요!Vue, 어디까지 설치해봤니?PHP Codeigniter 환경에서 VUE 사용해보기JQuery 프로젝트에 VUE를 점진적으로 도입하기Vue와 Vuex, 컴포넌트간 통신과 상태 관리글장현준 팀장 | R&D 개발3팀[email protected]브랜디, 오직 예쁜 옷만
조회수 1602

RxJava2 함수 파헤치기!

Overview지난 글 Rxjava를 이용한 안드로이드 개발에서는 RxJava의 Android 연결 방법과 기본적인 사용법을 다뤘습니다. 이번 글에서는 RxJava의 강력하고 다양한 함수들을 살펴보고자 합니다. Android에서 복잡하게 구현되는 내용들을 단 몇 개의 함수로 처리할 수 있는 RxJava를 꼭 사용해보길 권합니다.1. just2. fromArray/fromlterable3. range/rangLong4. interval5. timer6. map7. flatMap8. concatMap9. toList10. toMap11. toMultiMap12. filter13. distinct14. take15. skip16. throttleFirst17. throttleLast18. throttleWithTimeout참고: 공통적으로 사용하는 구독(수신) 클래스는 아래와 같습니다.static class CustomSubscriber<T> extends DisposableSubscriber<T> { @Override public void onNext(T t) { System.out.println(Thread.currentThread().getName() + " onNext( " + t + " )"); } @Override public void onError(Throwable t) { System.out.println(Thread.currentThread().getName() + " onError( " + t + ")"); } @Override public void onComplete() { System.out.println(Thread.currentThread().getName() + " onComplete()"); } } 1. just파라미터를 통해 받은 데이터로 Flowable을 생성하는 연산자입니다. 최대 10까지 전달할 수 있고, 모든 데이터가 수신되면 onComplete() 수신됩니다. 기본적인 Flowable 생성자 함수로 볼 수 있으며 단순 작업에서 많이 사용합니다.public static void just() { //파라미터 값을 순차적으로 송신하는 Flowable 생성 Flowable<String> flowable = Flowable.just("A", "B", "C", "D", "E", "F"); //구독을 시작한다. flowable.subscribe(new CustomSubscriber<>()); } 결과 main onNext( A ) main onNext( B ) main onNext( C ) main onNext( D ) main onNext( E ) main onNext( F ) main onComplete() 2. fromArray/fromIterablefromArray, fromIterable 함수는 파리미터로 배열 또는 Iterable(리스트 등)에 담긴 데이터를 순서대로 Flowable을 생성하는 연산자입니다. 모든 데이터를 순차적으로 송신 후 완료됩니다. 반복적인 데이터 변환 작업 같은 경우 for 문 대신 대체할 수 있습니다. 결과를 보면 main Thread 에서 작업 결과가 나오지만, flatMap 을 사용한다면 별도의 Thread로 main Thread의 부하를 막을 수 있습니다.1. fromArray public static void fromArray() { //fromArray 배열로 파라미터를 전달 받는다. Flowable<String> flowable = Flowable.fromArray("A", "B", "C", "D", "E"); //구독을 시작한다. flowable.subscribe(new CustomSubscriber<>()); } 결과 main onNext( A ) main onNext( B ) main onNext( C ) main onNext( D ) main onNext( E ) main onComplete() 2. fromIterable public static void fromIterable() { List<String> list = Arrays.asList("A", "B", "C", "D", "E"); //fromIterable 리스트로 파라미터를 전달받는다. Flowable<String> flowable = Flowable.fromIterable(list); //구독을 시작한다. flowable.subscribe(new CustomSubscriber<>()); } 결과 main onNext( A ) main onNext( B ) main onNext( C ) main onNext( D ) main onNext( E ) main onComplete() 파라미터와 함수는 다르지만 동일하게 처리된다. 3. range/rangLongrange 함수는 지정한 숫자부터 지정한 개수만큼 증가하는 Integer 값 데이터를 송신하는 Flowable를 생성합니다. rangLong 함수는 range와 동일하며 데이터 타입은 Long을 사용합니다. 두 함수 데이터 송신을 마치면 onComplete를 송신합니다.1. range public static void range() { //range(int start, int count) //start : 시작 값 //end : 발생하는 횟수 Flowable<Integer> flowable = Flowable.range(10, 5); //구독을 시작한다. flowable.subscribe(new CustomSubscriber<>()); } 결과 main onNext( 10 ) main onNext( 11 ) main onNext( 12 ) main onNext( 13 ) main onNext( 14 ) main onComplete() 2. rangLong public static void rangeLong() { //range(int start, int count) //start : 시작 값 //end : 발생하는 횟수 Flowable<Long> flowable = Flowable.rangeLong(10, 5); //구독을 시작한다. flowable.subscribe(new CustomSubscriber<>()); } 결과 main onNext( 10 ) main onNext( 11 ) main onNext( 12 ) main onNext( 13 ) main onNext( 14 ) main onComplete() 4. interval지정한 간격마다 0부터 시작해 Long 타입 숫자의 데이터를 송신하는 Flowable을 생성합니다. 데이터는 0, 1, 2, 4 순차적으로 증가된 데이터를 송신합니다. Android 에서는 반복적인 작업인 TimerTask를 대신해서 interval로 간단하게 처리할 수 있습니다. UI 변경이 필요한 부분에서는 interval scheduler를 AndroidSchedulers.mainThread() 를 변경해 적용할 수 있습니다.public static void interval() { //(long time, TimeUnit unit, Scheduler scheduler) //time : 발생 간격 시간 //unit : 간격 시간 단위 //scheduler : 발생 scheduler를 변경하여 사용할 수 있습니다. // ex)AndroidSchedulers.mainThread() // - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 // 1초 간격으로 데이터 요청을 송신하다. Flowable<Long> flowable = Flowable .interval(1000L, TimeUnit.MILLISECONDS).take(10); //구독을 시작한다. flowable.subscribe(new CustomSubscriber<>()); } 결과 RxComputationThreadPool-1 onNext( 0 ) RxComputationThreadPool-1 onNext( 1 ) RxComputationThreadPool-1 onNext( 2 ) RxComputationThreadPool-1 onNext( 3 ) RxComputationThreadPool-1 onNext( 4 ) RxComputationThreadPool-1 onNext( 5 ) RxComputationThreadPool-1 onNext( 6 ) RxComputationThreadPool-1 onNext( 7 ) RxComputationThreadPool-1 onNext( 8 ) RxComputationThreadPool-1 onNext( 9 ) 5. timertimer 함수는 호출된 시간부터 일정한 시간 동안 대기하고 Long 타입 0을 송신 및 종료하는 flowable을 생성합니다. interval이 조건까지 반복적으로 송신한다면, timer는 한번만 송신하고 종료됩니다.public static void timer() { SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy.MM.dd hh:mm ss"); System.out.println("현재시간 : " + simpleDateFormat.format(System.currentTimeMillis())); //(long time, TimeUnit unit, Scheduler scheduler) //time : 발생 간격 시간 //unit : 간격 시간 단위 //scheduler : 발생 scheduler를 변경하여 사용할 수 있습니다. // ex)AndroidSchedulers.mainThread() Flowable<Long> flowable = Flowable.timer(1000L, TimeUnit.MILLISECONDS); //구독을 시작한다. flowable.subscribe(value -> { System.out.println(" timer : " + simpleDateFormat.format(System.currentTimeMillis())); }, throwable -> { System.out.println(throwable); }, () -> { System.out.println(" complete"); }); } 결과 현재시간 : 2019.04.29 09:09 56 timer : 2019.04.29 09:09 57 complete 6. mapFlowable 에서 송신하는 데이터를 변환하고, 변환된 데이터를 송신하는 연산자입니다. 하나의 데이터만 송신할 수 있으며, 반드시 데이터를 송신해야 합니다. 혹여 송신되는 데이터가 null 을 포함하면 map 대신 아래의 flatMap 을사용하는 것이 좋습니다.public static void map() { Flowable<String> flowable = Flowable.just("A", "B", "C", "D", "E") //map(Function mapper) //mapper : 받은 데이터를 가공하는 함수형 인터페이스 //알파벳 값을 소문자로 변경하여 return 한다 .map(value -> value.toLowerCase()); //구독을 시작한다. flowable.subscribe(new CustomSubscriber<>()); } 결과 main onNext( a ) main onNext( b ) main onNext( c ) main onNext( d ) main onNext( e ) main onComplete() 7. flatMapflatMap은 map과 동일한 함수이지만, map과는 달리 여러 데이터가 담긴 Flowable을 반환할 수 있습니다. 또한 빈 Flowable를 리턴해 특정 데이터를 건너뛰거나 에러 Flowable를 송신할 수 있습니다.파라미터 mapper에서 새로운 Flowable의 데이터 전달이 아닌 다른 타임라인 Flowable로 작업하면 들어온 데이터 순서대로 출력을 지원하지 않습니다. 타임라인 Flowable(timer, delay, interval 등)에서는 가급적 사용을 피하거나, 순서에 지장이 없을 때 사용하는 것이 좋습니다.public static void flatMap() { Flowable<String> flowable = Flowable.range(10, 2) //flatMap(Function mapper, BiFunction combiner) //mapper : 받은 데이터로 새로운 Flowable를 생성하는 함수형 인터페이스 //combiner : mapper가 새로 생성한 Flowable 과 원본 데이터를 조합해 새로운 송신 데이트를 생성하는 함수형 인터페이스 //첫 번째 데이터를 받으면 새로운 Flowable를 생성한다. //take(3) : 3개까지만 발생한다. .flatMap(value -> Flowable.interval(100L, TimeUnit.MILLISECONDS).take(3), (value, newData) -> "value " + value + " newData " + newData); //구독을 시작한다. flowable.subscribe(new CustomSubscriber<>()); } 결과 RxComputationThreadPool-1 onNext( value 10 newData 0 ) RxComputationThreadPool-2 onNext( value 11 newData 0 ) RxComputationThreadPool-1 onNext( value 10 newData 1 ) RxComputationThreadPool-2 onNext( value 11 newData 1 ) RxComputationThreadPool-1 onNext( value 10 newData 2 ) RxComputationThreadPool-2 onNext( value 11 newData 2 ) RxComputationThreadPool-2 onComplete() 결과를 보면 각기 생성된 Flowable이 비동기식으로 송신 되기때문에 서로 다른 스레드에서 실행돼 데이터를 받는 순서대로 송신하지 않는다는 점을 주목하자 8. concatMap받은 데이터를 Flowable로 변환하고 변환된 Flowable을 하나씩 순서대로 실행해서 수신자에서 송신합니다. 다시 말해 여러 데이터를 계속 받더라도 첫 번째 데이터로 생성한 Flowable 의 처리가 끝나야 다음 데이터로 생성한 Flowable을 실행하는 것입니다.생성된 Flowable의 스레드에서 실행되더라도 데이터를 받은 순서대로 처리하는 것을 보장하지만, 처리 성능에 영향을 줄 수 있습니다.public static void concatMap() { Flowable<String> flowable = Flowable.range(10, 5) //map(Function mapper) //mapper : 받은 데이터를 가공하는 함수형 인터페이스 .concatMap(value -> Flowable.interval(100L, TimeUnit.MILLISECONDS).take(2) .map(data -> ("value : " + value + " data : " + data))); //구독을 시작한다. flowable.subscribe(new CustomSubscriber<>()); } 결과 RxComputationThreadPool-1 onNext( value : 10 data : 0 ) RxComputationThreadPool-1 onNext( value : 10 data : 1 ) RxComputationThreadPool-2 onNext( value : 11 data : 0 ) RxComputationThreadPool-2 onNext( value : 11 data : 1 ) RxComputationThreadPool-3 onNext( value : 12 data : 0 ) RxComputationThreadPool-3 onNext( value : 12 data : 1 ) RxComputationThreadPool-4 onNext( value : 13 data : 0 ) RxComputationThreadPool-4 onNext( value : 13 data : 1 ) RxComputationThreadPool-5 onNext( value : 14 data : 0 ) RxComputationThreadPool-5 onNext( value : 14 data : 1 ) RxComputationThreadPool-5 onComplete() 결과를 보면 생성된 Flowable 스레드와 데이터 순서대로 출력이 보장된다 것을 알 수 있다. 9. toListtoList는 송신할 데이터를 모두 리스트에 담아 전달합니다. 한꺼번에 데이터를 List로 가공해서 받기에 좋습니다. 하지만 많은 양의 데이터를 처리할 경우 버퍼가 생길 수 있고, 쌓은 데이터 때문에 메모리가 부족해질 수도 있습니다. 또한 수신되는 데이터는 하나이므로 Flowable이 아닌 Single 반환값을 사용합니다.public static void toList() { Single<List<String>> single = Flowable.just("A", "B", "C", "D", "E", "F") .toList(); // 구독을 시작한다. single.subscribe(new SingleObserver<List<String>>() { @Override public void onSubscribe(Disposable d) { System.out.println(Thread.currentThread().getName() + " onNext()"); } @Override public void onSuccess(List<String> strings) { //최종 완료된 리스트를 순서대로 출력한다. for (String text : strings) { System.out.println(Thread.currentThread().getName() + " onSuccess( " + text + " )"); } } @Override public void onError(Throwable e) { System.out.println(Thread.currentThread().getName() + " onError() " + e); } }); } 결과 main onNext() main onSuccess( A ) main onSuccess( B ) main onSuccess( C ) main onSuccess( D ) main onSuccess( E ) main onSuccess( F ) 10. toMaptoMap은 송신할 데이터를 모두 키와 값의 쌍으로 Map에 담아 전달합니다. 나머지는 toList의 특징과 같습니다. 송신되는 데이터 타입은 Map에 담아서 송신하는데 동일한 key에서 value는 마지막 데이터가 덮어 씁니다. 요청되는 값보다 결과 값이 적을 수도 있습니다. List 값을 손쉽게 key, value로 분리할 수 있는 함수이기도 합니다.public static void toMap() { Single<Map<Long, String>> single = Flowable.just("1A", "2B", "3C", "1D", "2E") //toMap(Fuction keySelector, Function valueSelector, Callable mapSupplier) //keySelector : 받은 데이터로 Map에서 사용할 키를 생성하는 함수형 인터페이스 //valueSelector : 받은 데이터로 Map 넣을 값을 생성하는 함수형 인터페이스 .toMap(value -> Long.valueOf(value.substring(0, 1)), data -> data.substring(1)); //구독을 시작한다. single.subscribe(new SingleObserver<Map<Long, String>>() { @Override public void onSubscribe(Disposable d) { System.out.println(Thread.currentThread().getName() + " onNext()"); } @Override public void onSuccess(Map<Long, String> longStringMap) { //최종 완료된 map을 순서대로 출력한다. for (long id : longStringMap.keySet()) { System.out.println(Thread.currentThread().getName() + " onSuccess( id : " + id + ", value " + longStringMap.get(id) + " )"); } } @Override public void onError(Throwable e) { System.out.println(Thread.currentThread().getName() + " onError() " + e); } }); } 결과 main onNext() main onSuccess( id : 1, value D ) main onSuccess( id : 2, value E ) main onSuccess( id : 3, value C ) 11. toMultiMap키와 컬렉션 값으로 이루어진 Map을 데이터로 변환하여 송신하는 함수입니다. 나머지 특징은 toList, toMap과 같습니다. toMap에서 중복되는 value를 관리하는 건 없었지만, value를 collection으로 관리하여 전달되는 데이터를 모두 수신할 수 있습니다.public static void toMultiMap() { Single<Map<String, Collection<Long>>> single = Flowable.interval(100L, TimeUnit.MILLISECONDS) .take(5) //toMultimap(Function keySelector, Function valueSelector) .toMultimap(value -> { //value가 홀수인지 짝수 인지 판단해서 key값을 리턴한다. if (value % 2 == 0) { return "짝수"; } else { return "홀수"; } }); //구독을 시작한다. single.subscribe(new SingleObserver<Map<String, Collection<Long>>>() { @Override public void onSubscribe(Disposable d) { System.out.println(Thread.currentThread().getName() + " onNext( " + d + " )"); } @Override public void onSuccess(Map<String, Collection<Long>> stringCollectionMap) { for (String key : stringCollectionMap.keySet()) { StringBuffer stringBuffer = new StringBuffer(); for (long value : stringCollectionMap.get(key)) { stringBuffer.append(" " + value); } System.out.println(Thread.currentThread().getName() + " onSuccess( id : " + key + ", value " + stringBuffer.toString() + ")"); } } @Override public void onError(Throwable e) { System.out.println(Thread.currentThread().getName() + " onError() " + e); } }); } 결과 main onNext() RxComputationThreadPool-1 onSuccess( id : 짝수, value 0 2 4 ) RxComputationThreadPool-1 onSuccess( id : 홀수, value 1 3 ) 12. filterfilter는 받은 데이터가 조건에 맞는지 판단해 결과가 true인 값만 송신합니다. 위의 just, fromArray, interval이 반복적인 케이스였다면, filter는 if문처럼 조건문의 역할을 할 수 있습니다. 반복문 함수와 조건문 함수를 같이 사용해 몇 줄 안에 for, if와 똑같이 구현할 수 있죠.public static void filter() { Flowable<Long> flowable = Flowable.interval(300L, TimeUnit.MILLISECONDS) //짝수만 통과한다. 3개만큼 .filter(value -> value % 2 == 0).take(3); //구독을 시작한다. flowable.subscribe(new CustomSubscriber<>()); } 결과 RxComputationThreadPool-1 onNext( 0 ) RxComputationThreadPool-1 onNext( 2 ) RxComputationThreadPool-1 onNext( 4 ) RxComputationThreadPool-1 onComplete() 13. distinct이미 처리된 데이터를 다시 볼 필요가 없을 때 사용하는 함수입니다. 송신하려는 데이터가 이미 송신된 데이터와 같다면 해당 데이터는 무시합니다. 이 함수는 내부에서 HashSet으로 데이터가 같은지 확인합니다.public static void distinct() { Flowable<String> flowable = Flowable.just("A", "a", "B", "b", "A", "a", "B", "b") //distinct(Function keySelector) //keySelector : 받은 데이터와 비교할 데이터를 확인하는 함수 //모두 소문자로 변환하여 알파벳 기준으로 데이터를 판단한다. .distinct(value -> value.toLowerCase()); //구독을 시작한다. flowable.subscribe(new CustomSubscriber<>()); } 결과 main onNext( A ) main onNext( B ) main onComplete() 14. take1.taketake 함수로 지정된 횟수만큼 받은 데이터를 송신합니다. 지정된 횟수에 도달하면 완료를 송신해 처리 종료합니다.2.takeUntil지정된 조건까지 데이터를 송신하는 연산자입니다. 조건이 되면 완료를 송신해 종료합니다.3.takeWhile지정된 조건이 해당할 때만 데이터를 송신하는 연산자입니다.4.takeLast데이터의 끝에서부터 지정한 조건까지 데이터를 송신하는 연산자입니다.take 함수는 한 화면에 출력되거나 칠요한 데이터만큼 리스트에서 값을 하나씩 수신할 때 사용합니다. 예를 들어 화면에 데이터가 6개가 필요하면 take를 이용해 원하는 만큼의 데이터를 가져올 수 있습니다.Flowable.take(6) 또한 이후에 나올 skip 함수를 같이 사용하면 두 번째 화면에서 필요한 데이터를 6개 가져올 수 있습니다.Flowable.skip(6).take(12) 1. take public static void take() { // 100 밀리세컨드만큼 반복하며 총 5개를 출력후 종료한다. Flowable<Long> flowable = Flowable.interval(100L, TimeUnit.MILLISECONDS) .take(5); //구독을 시작한다. flowable.subscribe(new CustomSubscriber<>()); } 결과 RxComputationThreadPool-1 onNext( 0 ) RxComputationThreadPool-1 onNext( 1 ) RxComputationThreadPool-1 onNext( 2 ) RxComputationThreadPool-1 onNext( 3 ) RxComputationThreadPool-1 onNext( 4 ) RxComputationThreadPool-1 onComplete() 2. takeUntil public static void takeUntil() { // 100 밀리세컨드만큼 반복하며 값이 5가 될때까지 송신한다. Flowable<Long> flowable = Flowable.interval(100L, TimeUnit.MILLISECONDS) .takeUntil(value -> value == 5); //구독을 시작한다. flowable.subscribe(new CustomSubscriber<>()); } 결과 RxComputationThreadPool-1 onNext( 0 ) RxComputationThreadPool-1 onNext( 1 ) RxComputationThreadPool-1 onNext( 2 ) RxComputationThreadPool-1 onNext( 3 ) RxComputationThreadPool-1 onNext( 4 ) RxComputationThreadPool-1 onNext( 5 ) RxComputationThreadPool-1 onComplete() 3. takeWhile public static void takeWhile() { // 100 밀리세컨드만큼 반복하며 값이 5가 아닐경우까지 송신한다. Flowable<Long> flowable = Flowable.interval(100L, TimeUnit.MILLISECONDS) .takeWhile(value -> value != 5); //구독을 시작한다. flowable.subscribe(new CustomSubscriber<>()); } 결과 RxComputationThreadPool-1 onNext( 0 ) RxComputationThreadPool-1 onNext( 1 ) RxComputationThreadPool-1 onNext( 2 ) RxComputationThreadPool-1 onNext( 3 ) RxComputationThreadPool-1 onNext( 4 ) RxComputationThreadPool-1 onComplete() 4. takeLast public static void takeLast() { //100밀리 세컨트만큼 반복하며 5개의 출력중 뒤에 2개만 송신한다. Flowable<Long> flowable = Flowable.interval(100L, TimeUnit.MILLISECONDS) .take(5) .takeLast(2); //구독을 시작한다. flowable.subscribe(new CustomSubscriber<>()); } 결과 RxComputationThreadPool-1 onNext( 3 ) RxComputationThreadPool-1 onNext( 4 ) RxComputationThreadPool-1 onComplete() 15. skip1.skip함수로 지정된 횟수만큼 받은 데이터 송신을 제외합니다. 지정된 횟수가 초과되면 나머지 데이터를 송신합니다.2.skipUntil지정된 조건까지 데이터 송신을 제외하는 연산자입니다. 조건이 되면 나머지 데이터를 송신합니다.3.skipWhile지정된 조건이 해당될 때만 데이터 송신을 제외하는 함수입니다.4.skipLast데이터의 끝에서부터 지정한 조건까지 데이터 송신을 제외하는 함수입니다.take와 반대의 기능을 갖고 있습니다. 보통 페이저나 리스트에서 paging을 처리할 때는 take와 skip을 혼용합니다.1. skip public static void skip() { //100 밀리세컨드만큼 반복하며 5번 발행하고, 처음 2개를 제외합니다. Flowable<Long> flowable = Flowable.interval(100L, TimeUnit.MILLISECONDS) .take(5) .skip(2); //구독을 시잔한다. flowable.subscribe(new CustomSubscriber<>()); } 결과 RxComputationThreadPool-1 onNext( 2 ) RxComputationThreadPool-1 onNext( 3 ) RxComputationThreadPool-1 onNext( 4 ) RxComputationThreadPool-1 onComplete() 2. skipUntil public static void skipUntil() { //300밀리 세컨드만큼 반복하며 5개를 발행하고, 1000 밀리세컨드 제외 후 송신합니다. Flowable<Long> flowable = Flowable.interval(300L, TimeUnit.MILLISECONDS) .skipUntil(Flowable.timer(1000L, TimeUnit.MILLISECONDS)) .take(5); //구독을 시잔한다. flowable.subscribe(new CustomSubscriber<>()); } 결과 RxComputationThreadPool-2 onNext( 3 ) RxComputationThreadPool-2 onNext( 4 ) RxComputationThreadPool-2 onNext( 5 ) RxComputationThreadPool-2 onNext( 6 ) RxComputationThreadPool-2 onNext( 7 ) RxComputationThreadPool-2 onComplete() 3. skipWhile public static void skipWhile() { //300밀리세컨드만큼 반복하며 5개를 발행하고, 데이터 3이 올때까지 데이터를 제외힙니다. Flowable<Long> flowable = Flowable.interval(300L, TimeUnit.MILLISECONDS) .skipWhile(value -> value != 3) .take(5); //구독을 시잔한다. flowable.subscribe(new CustomSubscriber<>()); } 결과 RxComputationThreadPool-1 onNext( 3 ) RxComputationThreadPool-1 onNext( 4 ) RxComputationThreadPool-1 onNext( 5 ) RxComputationThreadPool-1 onNext( 6 ) RxComputationThreadPool-1 onNext( 7 ) RxComputationThreadPool-1 onComplete() 4. skipLast public static void skipLast() { //1000 밀리세컨드만큼 반복하며 5개를 발행하고 마지막 2개는 제외합니다 Flowable<Long> flowable = Flowable.interval(1000L, TimeUnit.MILLISECONDS) .take(5) .skipLast(2); //구독을 시작한다. flowable.subscribe(new CustomSubscriber<>()); } 결과 RxComputationThreadPool-1 onNext( 0 ) RxComputationThreadPool-1 onNext( 1 ) RxComputationThreadPool-1 onNext( 2 ) RxComputationThreadPool-1 onComplete() 16. throttleFirst데이터를 송신하고 지정된 시간 동안 들어오는 요청을 무시합니다. 이 함수는 View의 Event 처리에서 많이 사용됩니다. 중복되는 처리를 막기 위해 최초 실행 후 일정 시간 동안 View의 클릭 이벤트나 API 이벤트를 막을 수 있기 때문에 비동기 처리와 화면에 직접적인 피드백이 발생했을 때 throttleFirst를 자주 사용하고 있습니다. //데이터 요청이 30 밀리초마다 5번 발생합니다. //데이터 요청 발생시 100 밀리세컨트 동안 들어오는 데이터 요청을 무시합니다. // — 0 — 1 — 2 — 3 — 4 interval 30 밀리초 마다 // — — -*- — throttleFirst 100 밀리초 무시 Flowable<Long> flowable = Flowable.interval(30L, TimeUnit.MILLISECONDS) .take(5).throttleFirst(100L, TimeUnit.MILLISECONDS); flowable.subscribe(new CustomSubscriber<>()); } 결과 RxComputationThreadPool-1 onNext( 0 ) RxComputationThreadPool-1 onNext( 4 ) RxComputationThreadPool-1 onComplete() 17. throttleLastthrottleLast 함수는 데이터를 송신하고 지정된 시간 동안 들어오는 마지막 요청을 송신합니다. 이 함수도 throttleFirst처럼 반복적인 선택 이벤트 처리에 유용하게 사용할 수 있습니다. 간단하게 장바구니 카운트 변경을 요청할 때 마지막 변경 이벤트 데이터만 처리하면 되므로 값이 선택되고 일정 시간이 지났을 때 API를 요청해 리소스 낭비를 줄일 수 있습니다.public static void throttleLast() { //데이터 요청이 1 초 마다 6번 발생합니다. //데이터 요청 발생시 2 초 동안 들어오는 마지막 요청을 송신하다. // - 0 - 1 - 2 - 3 - 4 interval 1 초 마다 // - - -* - throttleLast 2 초의 마지막 값 송신 Flowable<Long> flowable = Flowable.interval(1, TimeUnit.SECONDS) .take(5) .throttleLast(2, TimeUnit.SECONDS); flowable.subscribe(new CustomSubscriber<>()); } 결과 RxComputationThreadPool-1 onNext( 2 ) RxComputationThreadPool-1 onNext( 4 ) RxComputationThreadPool-1 onComplete() 18. throttleWithTimeoutthrottleWithTimeout 함수는 데이터를 송신하고 지정된 시간 동안 다음 데이터를 받지 못하면 현재 데이터를 송신합니다. 완료 시엔 마지막 데이터를 송신하고 종료됩니다.public static void throttleWithTimeout() { Flowable<String> flowable = Flowable.<String>create(emitter -> { emitter.onNext("A"); Thread.sleep(1000L); // 1000 밀리세컨드 슬립 // 500 밀리세컨드 동안 데이터 다음 데이터 요청이 없으므로 A 송신 emitter.onNext("B"); Thread.sleep(300L); // 300 밀리세컨드 슬립 emitter.onNext("C"); Thread.sleep(300L); // 300 밀리세컨드 슬립 emitter.onNext("D"); Thread.sleep(1000L); // 1000 밀리세컨드 슬립 // 500 밀리세컨드 동안 데이터 다음 데이터 요청이 없으므로 D 송신 emitter.onNext("E"); Thread.sleep(100L); // 100 밀리세컨드 슬립 emitter.onComplete(); //완료 요청 시 마지막 데이터 송신 후 종료 }, BackpressureStrategy.BUFFER) .throttleWithTimeout(500L, TimeUnit.MILLISECONDS); flowable.subscribe(new CustomSubscriber<>()); } 결과 RxComputationThreadPool-1 onNext( A ) RxComputationThreadPool-1 onNext( D ) main onNext( E ) main onComplete() ConclusionRxJava에서 많이 사용되고, 또 알고 있으면 좋은 함수들을 살펴봤습니다. 브랜디에서도 이 함수들을 응용해 그동안 다양한 기능을 구현했고, 복잡한 함수도 사용하고 있습니다. 지금까지는 Flowable로 송신과 수신이 1 : 1 로 진행되었지만, 다양한 수신자를 사용해 하나의 Flowable로도 다른 화면에서 여러 수신자를 등록하여 반복적인 작업을 할 수 있습니다. 덕분에 같은 작업을 코드 중복 없이 간단하게 구현할 수 있죠.다음 글에서는 2개 이상의 Flowable을 결합해 사용하는 방법과 Android View에서 RxJava를 응용하는 방법, 구독을 관리하는 방법 등 Android에서 유용하게 쓰는 방법들을 알아보겠습니다.글고재성 팀장 | R&D 개발MA팀[email protected]브랜디, 오직 예쁜 옷만
조회수 7856

스타트업 면접 후기와 꿀팁

 요즘에 공모전과 다음 회사를 준비한다고 바쁜 나머지 글 쓸 시간이 없다가 이제야 시간이 나서 끄적거려봅니다. 이전에 다니던 스타트업을 그만두고, 저는 이번에도 역시 스타트업 위주로 다음 회사를 보고 있는데요(정확하게는 스타트업 또는 신사업 개발 쪽을 알아보고 있습니다), 10여 개의 스타트업을 돌아다니며 면접을 보면서 느낀 점들을 정리해보려고 합니다. 이 글은 아마 스타트업 지원을 준비하고 계시거나 스타트업에 계신 인사담당자 또는 대표님께서 보시면 좋은 글이 될 거라고 생각합니다. 우선 저의 상황을 더욱 알기 쉽게 하기 위해서 저의 간략한 스펙들을 공개하도록 하겠습니다.개발자 Brad교육서울 4년제 대학교 전자전기컴퓨터공학 학사경력사항(약 4년)2013년 1월 ~ 2014년 4월(약 1년 4개월) : 웹/앱 서비스 스타트업 CTO2014년 5월 ~ 2016년 12월(약 2년 7개월) : IoT 하드웨어/소프트웨어 스타트업 개발팀장스킬웹 백엔드 개발데이터베이스 구축/관리팀 빌딩/매니지먼트 부끄럽지만 경력은 별로 없습니다. 흥미 분야는 IoT와 빅데이터를 활용한 솔루션 분야라서 주로 하드웨어와 소프트웨어를 둘 다 다루거나 빅데이터를 이용한 엔지니어링을 하는 주로 회사를 알아보았습니다.그럼 이제부터 바로 본론으로 들어가서 각 회사에 간략한 정보들과 좋았던 점 안 좋았던 점을 주르륵 적어보겠습니다.A사(최종합격)연봉 : 업계 평균업무 : 웹 백엔드 + 개발팀 업무 전반 + 기타 등등지원방법 : 스타트업 채용사이트에서 채용공고를 보고 인사담당자에게 커버레터 + 이력서 + 포트폴리오를 첨부하여 메일로 보냄특징 : 세계에서 내로라하는 고학력자들로 이루어진 이사진. 하드웨어와 소프트웨어, 제조까지 넓은 스펙트럼, 미국에 본사가 있고 한국에 지사 형태로 운영 중(개발팀은 대부분 한국에 있음)1차 면접 : CEO, CTO, 개발실무자 1명2차 면접 : CEO, CTO와 함께 점심식사 후 티타임좋았던 점- CEO와 CTO분이 굉장히 솔직한 스타일- 하드웨어와 소프트웨어(웹/앱) 둘 다 아우르면서 할 수 있는 기회- 개발팀 핵심 멤버로 활약 가능성- 입사 시기가 새로운 사무실로 이사하는 시점과 같았음(분위기 쇄신)- 통근시간 약 40분고민했던 점- 추후에 통지받은 연봉이 구두로 약속했던 연봉 수준보다 낮았음- 개발실무자가 아닌 경영진 위주로 이루어진 면접으로 실무진의 성향 파악 불가B사(최종합격)연봉 : 업계 평균 이상업무 : 데이터베이스 구축 + 웹 백엔드 + 개발팀 업무 전반 + 기타 등등지원방법 : 스타트업 채용사이트에서 채용공고를 보고 인사담당자에게 커버레터 + 이력서 + 포트폴리오를 첨부하여 메일로 보냄특징 : 요즘 핫한 기술을 다루고 있으며 해외에서는 최근에 매각 사례가 많은 기술을 연구하는 기업. 하드웨어보다는 소프트웨어에 중점을 두고 있으며 겉으로 드러나는 기술은 아니지만 앞으로 많은 분야에서 다양하게 응용될 기술을 보유함1차 면접 : CEO, CMO, 개발실무자 1명공동 사무실에 있는 회의실에서 1시간 30분가량 인터뷰를 봄. 인터뷰가 끝날 때쯤 같이 일하자는 제의를 받았고 대략적인 연봉협상을 함. 이후 두 차례 정도 통화로 근무조건 및 연봉협상을 함.좋았던 점- 1회의 면접 후 빠른 결정- 높은 연봉- 일이 재밌어 보임- 이제 막 성장하는 산업군의 주역- 개발팀원이 성격이 좋아 보임- 팀 규모가 비교적 작음(제가 규모가 작은 팀을 선호하는 편입니다)고민했던 점- 통근시간 약 1시간 10분C사(전화 인터뷰 탈락)연봉 : 모름업무 : 빅데이터 처리 알고리즘 코딩지원방법 : 채용사이트를 통한 이력서, 포트폴리오 업로드특징 : 소프트웨어 알고리즘에 강점을 두고 있는 회사1차 면접(전화/코딩인터뷰) : 개발실무자 1명지원서 접수 후 메일로 이메일 주소와 전화번호를 알려달라고 회신이 옴. 이력서에 이미 적혀있는 사항을 다시 알려달라고 회신이 온 관계로 인사담당자가 꼼꼼한 성격은 아니라고 생각함(회신 온 메일이 복붙한 티가 역력히 남) 개발팀 인사가 개발팀에게는 굉장히 중요하다고 생각해서 지원을 포기하기로 생각하고 답장하지 않았는데, 어느 날 뜬금없이 낮잠 자는데 전화가 와서 인터뷰를 시작하겠다고 함. 황급히 맥북을 열고 그 사람이 알려준 사이트에 들어가니 내가 짠 코드를 실시간으로 확인할 수 있도록 만든 코딩 인터뷰 전용 웹사이트가 있었음. 그곳에서 간단한 코딩을 30분여간 진행함굉장히 기분이 안 좋았던 점은 코딩 인터뷰를 진행하면서 모르는 거 있으면 질문하라고 담당자가 얘기했으면서도 인터뷰 내내 귀찮고 성의 없는 말투로 이야기함. 그리고 그 담당자를 어떻게 불러야 할지 몰라서 이름을 가르쳐달라고 했는데 "제 이름은 아실 필요가 없고요", "제가 담당자분을 어떻게 불러야 할지 모르겠어서요", "제 이름은 아실 필요가 없어요"라고 퉁명스럽게 대답하여 이 회사는 절대 가지 않겠다고 다짐하는 계기가 되었음.D사(연락두절)연봉 : 업계 평균업무 : 웹 프론트 + 백엔드 + 하이브리드 모바일 앱지원방법 : 스타트업 채용사이트에서 채용공고를 보고 인사담당자에게 커버레터 + 이력서 + 포트폴리오를 첨부하여 메일로 보냄특징 : 규모가 있는 웹 에이전시의 신사업 개발팀이 떨어져 나와 스타트업 형태로 새로 팀빌딩을 시작하는 팀.1차 면접 : 기획자 2명공동 사무실에 있는 회의실에서 약 1시간 동안 면접을 진행하였음. 웹에이전시 기획자 2명이라서 개발에 대해서는 지식이 없었음. 새로 시작하는 사업 전반에 대해서만 이야기함.좋았던 점- 새로 시작하는 팀- 개발팀 핵심 멤버로 활약 가능성- 통근시간 약 40분고민했던 점- 스타트업 마인드로 무장한 팀은 아니었음- 1차 면접 후 연락을 준다고 했는데 연락이 없어서 문자를 한통 보냈으나 너무 바빠서 까먹었다는 답변과 함께 이번 주까지 답변을 준다는 문자를 받음. 탈락했는지 그 이후로 연락이 없음.E사(최종합격)연봉 : 업계 평균 이하업무 : 웹 프론트 + 백엔드지원방법 : 채용사이트를 통한 이력서, 포트폴리오 업로드특징 : 규모가 있는 마케팅 대행사의 신사업 개발팀이 떨어져 나와 스타트업 형태로 스핀오프(자회사)한 팀.1차 면접 : 개발실무자 2명2차 면접 : CEO모회사인 마케팅 대행사의 풍족한 인프라와 함께 한켠의 독립된 사무실을 사용함. 회사 내에 있는 카페에서 면접을 진행하였고 1차 면접은 굉장히 분위기가 좋았음. 개발자들이 같이 일하고 싶다고 그 자리에 이야기함.CEO와의 면접 이후 별로 일하고 싶지 않아져서 입사 포기.좋았던 점- 개발팀 핵심 멤버로 활약 가능성- 통근시간 약 30분- 5시 퇴근- 풍족한 먹거리고민했던 점- 웹/앱 서비스를 위주로 하는 팀- 스타트업 마인드로 무장한 팀은 아니었음- CEO가 하고 싶은 일만 하게 되고 계속해서 일만 벌이는 스타일- CEO가 모든 업무지시를 개발자들에게 문서가 아닌 구두의 형태로 직접 전달- 팀원이 3명으로 굉장히 적은데도 각각의 독립된 다른 유형의 서비스를 4개나 진행 중(그중에 하나라도 제대로 되는 서비스가 없음)F사(최종합격)연봉 : 업계 평균업무 : 웹 백엔드 + 서버 개발 + 개발팀 매니지먼트지원방법 : 스타트업 채용사이트에서 채용공고를 보고 인사담당자에게 커버레터 + 이력서 + 포트폴리오를 첨부하여 메일로 보냄특징 : IoT와 빅데이터를 결합한 하드웨어 + 소프트웨어로 자체 기술력을 인정받고 꽤 많은 금액의 투자까지 유치한 실력 있는 팀. 새로 시작하는 신사업 분야의 개발팀을 뽑는 채용이었음.1차 면접 : CEO, 개발실무자 1명, PM 1명인터뷰 내내 스타트업 마인드로 무장한 팀이라는 생각이 들었음. 그 점이 굉장히 좋았고 그 자리에서 바로 같이 일했으면 좋겠다는 제안을 받음.좋았던 점- 개발팀 핵심 멤버로 활약 가능성- 통근시간 약 40분- 스타트업 마인드가 충만한 팀원들- 글로벌 스타트업(외국인과의 협업 기회)고민했던 점- 연봉이 업계 평균보다 약간 낮음- 직급체계가 굉장히 빡빡하게 짜여 있음. 관리자 직급부터는 KPI를 통한 성과급 및 승진 제도가 존재하는데, 담당자 말에 따르면 새로 들어온 팀원들은 대부분 KPI를 달성하기 힘들 정도로 높게 설정한다고 함. 그리고 낮은 연봉에 빡빡한 직급체계가 높은 friction으로 작용하였음. 이미 입사한 사람들에게는 좋은 제도일지 모르겠지만 처음 회사를 접하는 사람에게는 약간의 거부감이 있을 것으로 생각됨.G사(최종합격)연봉 : 업계 평균업무 : 웹 백엔드 + 서버 개발 + 개발팀 매니지먼트지원방법 : 스타트업 채용사이트에서 채용공고를 보고 인사담당자(CEO)에게 커버레터 + 이력서 + 포트폴리오를 첨부하여 메일로 보냄특징 : 요즘 핫한 스마트카와 관련된 솔루션을 개발하는 업체.1차 면접 : CEO2차 면접 : CEO, 고문이사면접 분위기는 매우 좋았음. 그 이후로 대표님과 개인적으로 여러 번 연락한 적이 있음.좋았던 점- 개발팀 핵심 멤버로 활약 가능성- 여러 가지 분야의 일을 경험할 기회- 통근시간 약 40분고민했던 점- 연봉이 업계 평균보다 약간 낮음- 정규 개발팀이 없고 개발팀 인턴으로 이루어져 있었음(회사의 거의 모든 업무를 CEO 혼자 처리하고 있었음)- 모든 부서의 심각한 인력난- 스마트카 산업과 다른 유형의 2개의 사업체를 동시에 운영 중(돈벌이를 위해)- 면접 이후 스타트업에서 경력이 있는 친구들과 함께 CEO를 찾아뵌 적이 있는데 친구들이 CEO와 회사의 비전에 대해 물은 적이 있었음. 근데 그 당시에 CEO가 대답하기 싫다고 대답함. 그 이후로 입사에 대해 심각하게 고민하게 됨. A사부터 G사까지 7개 회사의 면접을 비교 분석해보았습니다. 면접 시 제가 공통적으로 느꼈던 점과 피드백은 다음과 같습니다.- 커버레터와 함께 이력서와 포트폴리오를 보냈더니 "지원서가 굉장히 인상 깊었다"라는 피드백을 많이 받았음- 고용자와 피고용자, 갑과 을의 관계가 아닌 사람과 사람 간의 대화 형식의 인터뷰가 좋다. 그리고 스타트업 사람들은 그걸 더 선호함. 회사에 대해 미리 조사하고 궁금한 건 솔직하게 정확하게 이야기한다.- 팀의 구성원들이 스타트업을 경험한 사람들이 아니면 그 회사는 스타트업이 아닌 것 같은 느낌이 들었음. 결론적으로 회사나 아이템 자체보다는 그 팀을 구성하는 인원들의 마인드가 굉장히 중요하다는 생각이 들었음.- 서류전형, 면접전형에서 탈락하더라도 아무 말 없이 연락 두절되는 것보다는, 메일 또는 문자로 탈락되었다고 말해주는 것이 지원자 입장에서 좋았음. 왜냐하면 빠르게 마음을 접고 다음 계획을 실행할 수 있었기 때문.- 스타트업에서의 근무 경험을 좋게 보는 분들이 많았음. 이상으로 저의 스타트업 면접 후기를 마칩니다. 이제는 새로운 회사에서 열심히 일하고 싶습니다. 아무 걱정 없이요. 추가로 면접을 어떻게 봐야 하는가에 대한 꿀팁을 드리자면, 어디나 똑같겠지만, 솔직함이 가장 강력한 무기입니다. 너무 잘 보이려고 할 필요도 없고 너무 겸손할 필요도 없습니다. 자신이 할 수 있는 건 자신 있게 할 수 있다고 얘기하고, 자신이 할 수 없거나 모르는 건 못한다고 이야기할 때 좋은 모습을 비추게 되는 것 같습니다. 스타트업을 사랑하시는 여러분들과 항상 함께하고 싶습니다. 파이팅!#비주얼캠프 #인사이트 #경험공유 #조언 #스타트업면접 #꿀팁
조회수 3931

페이스북 프로덕트 디자인 인턴 체험기 #1

드디어 시작.꿈에 그리던 페이스북에 2016년 11월에 지원을 하였고 (이 당시 나는 조지아텍 HCI석사 1학년 1학기), 12월까지 세 번에 걸친 면접들을 보고 1월 초에 합격 연락을 받았다 (자세한 페이스북 인터뷰 프로세스는 페이스북 커뮤니케이션팀이 동의해 주어 나의 Medium에 퍼블리쉬할 수 있었다). 사실 합격 전화를 받았을 당시, 복도를 뛰어다니면서 함성을 질렀다. 아는 사람들에게 자랑도 하고, 축하도 받고 무엇보다 인턴쉽을 가서 뒤처지지 않으려고 더 열심히 공부를 하리라 마음을 먹었다. 여름이 되기까지 시간은 정말 느리게 갔지만 시작날인 5월 30일까지는 정말 그 누구보다도 행복하게 하루하루를 보냈던 것 같다.인턴 시작 날은 5월 30일... 시간은 정말 느리게 흘러갔다.살짝 내 얘기를 해보자면... 이렇다.페이스북 프로덕트 디자인 인턴쉽(Product Design Internship) 얘기를 하기 전에, 나에 대해 살짝 얘기하자면... 사실 나는 학부 때 디자인 전공을 하지 않았다. 캐나다에서 초등학교를 다니고 고등학교를 졸업한 후 나는 미시간 대학교에 (University of Michigan-Ann Arbor) 기계공학 전공으로 입학했다. 그 당시에는 대학교에서 들어가서 내가 무엇을 해야 할지, 내가 전공하는 것이 무엇인지에 대한 지식도 많이 없었을뿐더러, 제일 중요한 건, 배우고자 하는 열정이 없었다. 고등학교 때 미친 듯이 공부했을 때와는 다르게 대학교 때는 뭔가 흥미가 없었던 것 같다. 시간이 그렇게 무의미하게 지나간 적도 없었던 것 같다. 지금 생각해보면 너무나도 허무하게 첫 대학생활 2년을 보내지 않았나 싶다.나는 3학년에 올라가기 전에 한국에 돌아와 군에 입대를 했고 그 절제의 테두리 안에서 시간이 흐를 때면 하나둘씩 도전해 보고 싶고 알고 싶은 것들이 생겨났다. 전역 때쯤에는 "그래! 나는 기계공학보다는 문과 체질이야"라고 자신에게 최면을 걸고 복학을 해서 대학교 3학년 2학기 때 많은 반대와 걱정에도 불구하고 나는 심리학으로 전과를 했다. 솔직히 부모님을 포함에 많은 사람들이 걱정의 목소리를 높였지만 나는 뭔가 사람에 대해 더 알고 싶었다 (라기보다는 그냥 너무나도 흥미로웠다). 운이 좋게도 심리학 수업을 듣는 동안만큼은 항상 재미있었고 솔직히 기계공학 때 배웠던 수학, 물리 등 보다는 훨씬 쉬웠다. 열심히 하다 보니 성적도 쭉쭉 올라가고 운이 좋게 교수님들과 재미있는 연구도 하고... 첫 대학 2년과는 다르게 나머지 2년의 나라는 사람은 자신감이 최고조로 올랐던 것 같다.하지만 중요한 문제는 졸업 후의 진로였다 (a.k.a 현실). 많은 문과 유학생들이 하는 고민일 수도 있겠지만 STEM (Science, Technology, Engineering, Mathematics) 관련 전공이 아니면 미국 취업이 불리한 면이 없지 않기 때문에 당연히 한국행이겠구나 생각했다. STEM 전공을 하면 3년이라는 OPT (취업) 기간이 주어지는 반면에 STEM이 아닌 전공들은 1년 안에 H1-B라는 비자를 받지 못하면 다시 한국이나 다른 나라로 돌아가야 한다.졸업 후, 역시 반전은 없었다. 나는 어느새 한국 가는 비행기에 몸을 실었고 정신을 차려보니 한국 강남역 메가로스쿨에서 한국 로스쿨을 진학 희망하는 학생으로 변신해 있었다.  진짜로 진짜로 로스쿨 준비는 정말 힘들었다. 한국에서 내로라는 사람들도 재수하고 삼수하는 마당에 초등학교 때부터 캐나다에서 유학해온 나는 한국말로 공부하는 것이 편하지는 않았을뿐더러 한자들 또한 이해하기 힘들었다. 모의고사를 볼 때마다 하위권이었고 스터리를 할 때면 다른 사람들 발목을 붙잡진 않을까 노심초사했다. 뿐만 아니라 나는 한국의 암기하고 문제를 푸는 공식(?) 같은 것들이 지긋지긋하다. 문제를 쓸데없이 꼬는 것, 어떤 특정 문장 속에 답이 숨어있기 마련이며 글짓기를 할 때면 꼭 무슨 수학 문제 푸는 마냥 뼈대는 이미 정해져 있으며 심지어 첫 문장과 마지막 문장도 모든 수험생들이 거의 동일하게 접근할 때도 있다. (나한테 글짓기는 창의력인데) 사실 애초에 이런 것들이 너무나도싫어서 어렸을 적부터 유학을 가고 싶었다. (중학교 때 잠시 한국으로 돌아왔을 때 족보닷컴이란 곳에서 과거 출제문제를 미친 듯이 뽑아서 기계처럼 풀었던걸 생각하면 정말... 나랑은 안 맞는다).여하튼, "난 꼭 변호사, 검사, 판사가 될 거야!!!"라는 미친듯한 열정이 있었던 것도 아니었다. 하지만 그땐 이게 아니면 난 과연 무엇을 해야 할지 몰라 밤낮으로 공부를 해야만 했다.그럼 도대체 나는 어떻게 UI/UX/Product Design에 입문해 여기까지 오게 된 것일까?정말 행운 이게도, 그때 미국에서 날 지도해주던 심리학 교수님께서 한국 대학교 몇몇 곳에 심리학 강의를 하러 방문하셨다. 페이스북 메신저로 한번 밥이나 먹자는 연락이 왔고, 만나서 반가운 얘기들을 하던 도중 나에게 Human Computer Interaction (HCI)와 User Experience (UX)에 관한 얘기들을 해주셨다. 로스쿨 진로를 매우 고민스럽게 여기던 나에게는 매우 알맞은 진로 일 것 같다고 한번 집에 돌아가면 컴퓨터를 켜서 찾아나 보라고 말씀을 해주셨다. 그리고 내가 알고 있던 미시간 대학교 선배가 나와 같이 심리학을 전공한 뒤, 석사를 카네기멜론 대학에 HCI로 가서 현재는 미국 아마존 (Amazon)에서 UX 디자이너 (UX Designer)로 일하고 있다는 것이었다. 물론 그 형님께도 연락해서 많은 정보들을 들을 수가 있었다.항상 테크 (Tech industry) 쪽에 관심이 있었던 나는 교수님과 헤어지고 나서, "이게 과연 내 인생의 전환점인가?"라는 뚱딴지같은 마음을 품고 집에 돌아왔다. 그리고는 컴퓨터를 켜고 시간이 가는 줄 모르고 새벽까지 나는 UI/UX에 관한 것들을 찾아본 것 같다. 직업군은 어떻고, 무엇을 잘해야 하며 어떤 대학원들이 있고 등등 무수히 많은 정보들을 노트에 적어가기 시작했다. 이 세상 그 누구도, 그 날이 내 인생을 180도 바꾼 순간이라는 것은 알지 못했을 것이다. 심지어 부모님도 그땐 얘는 도대체 뭘 하는 앤가 싶기도 하셨을 것 같다. (미시간에 기계공학으로 들어가 심리학으로 전과해서 갑자기 한국 돌아와서 로스쿨을 간다고 하고는 다시 공대 쪽으로 간다고 하니... 속이 터지셨을 것 같다)물론 로스쿨은 그다음 날로 바로 때려치웠다. 한번 꽂히는 것은 무조건 파고드는 성격 때문인지, 다른 것은 눈에 들어오지도 않았다. 당장 컴퓨터 학원을 끊고 아침에는 디자인과 코딩, 밤에는 대학원 준비 등으로 시간을 보내고 체력이 남으면 디자인 스터디도 알아보고 인터넷에서 블로그나 아티클들도 읽고, 네트워킹도 하려고 노력했다. 학원은 나에게 진도가 너무 느렸고 집에 오자마자 혼자 공부한 시간 동안에 훨씬 실력이 많이 는 것 같다. 항상 남들보다 훨씬 뒤처져있다고 생각한 것은 너무나도 당연했다. 나에게는 배워도 배워도 새로운 것들이 너무나도 많았지만 이 정도로 재밌었던 적은 없었던 것 같다. Dribbble이라는 곳에 가면 "저런 건 도대체 어떻게 만들지?" 하고 생각하는 것에서 끝나는 게 아니라 항상 스크랩해두고 똑같이 Sketch나 Photoshop을 켜고 따라 했다. 그리고 코딩에 관심이 있어서 그런지 홈페이지를 어떻게 만드는지 잘 몰랐지만 무작정 공부하고 비슷하게 만들어 보곤 했다. 그저 무엇이든 배우고 연습하고 읽고 쓰고 열심히 마우스 클릭을 했던 것 같다. 지금 생각해보면 나의 그 열정과 "절박함"이 지금의 나를 만든 것이 아닌가 생각한다.다시 시간의 흐름을 말하자면, 2015년 5월 대학교 졸업, 2015년 8월까지 로스쿨 준비, 2015년 12월까지 미친 듯이 코딩과 디자인 공부 및 대학원 지원 서류 준비, 2016년 3월 결과 발표, 2016년 8월 조지아텍 (Georgia Tech) HCI 석사 입학... 당연히 디자인에 대한 이해나 실력이 부족하다고 생각할 수밖에 없는 나의 배경이다. 추가로 말하자면 매일 이를 갈면서 공부를 했고 연습, 또 연습을 거듭했다. 모르는 게 있으면 포스팅도 해보고 피드백도 구하고 잘하는 분에게 페이스북이나 링크드인 메시지도 보내며 멘토 신청도 하고, 사람들이 많은 쓰는 유명한 앱들을 다운로드하여서 어떻게 작동하고 디자인돼 있는지도 미친 듯이 파고들었던 것 같다. 무엇보다 인터넷에 나와있는 수많은 튜토리얼, 블로그, 아티클 그리고 오프라인 스터디들 및 많은 정보들이 밑거름이 되었다. 그런 도중 운이 좋게 한국에 있는 스타트업에도 몇 개월 동안 일을 해볼 수도 있었고 Rightbrain이란 UX 컨설팅회사에서 주최하는 UX 수업도 3개월 동안 들을 수가 있었다.대학원 지원 당시에는 "나는 심리학 전공자이지만 디자인과 코딩에 대한 이해도와 실력이 있으며 나의 포트폴리오는 내가 혼자 코딩해서 만들었어요"라는 문구를 앞세워서 나를 패키징 했다. 그것이 좋은 selling point가 되었는지 많은 대학원에서 나에게 높은 점수를 주지 않았나 생각한다. 다시 말하지만 열정, 열정 그리고 열정... 게다가 나 자신이 어느 위치에 있는지 (self-awareness)에 대한 자각심이 나 자신을 계속 채찍질하지 않았나... 이렇게 생각이 든다. 앞으로도 갈길은 멀다.페이스북 디자인 인턴십에 대한 정보.페이스북 얘기를 들으려 왔는데 너무 나에 대해 얘기를 많이 한 게 아닌가 싶다...구글과는 다르게 페이스북은 디자인 직책이 하나다. 구글에는 Interaction Designer, Visual Designer, UX Designer, Product Designer, UX Engineer 등 UI/UX 관련 직책들이 되게 많은 반면에 페이스북에 디자이너는 프로덕트 디자이너 (Product Designer)라고 통합해서 불린다. 디자이너들은 미국에는 Menlo Park (CA), Seattle 그리고 New York 오피스에만 있고 유럽에는 런던 오피스에만 있는 것으로 알고 있다 (페이스북 오피스는 이외에도 훨씬 많은데 디자이너가 있는 오피스는 이렇게 4개인 것으로 알고 있다). 인턴 같은 경우에도 이렇게 4 지역에 분포해서 뽑는데 이번 연도에는 나를 포함해 총 17명이 선택되었다. 작년보다는 많다고 하는데 몇천 명의 엔지니어 인턴 숫자와는 너무나도 뻔하게 비교가 된다. 여하튼, 수만 개의 지원 서중에 달랑 17명이라니 로또 당첨이 아닐 수가 없다. 게다가 합격자들의 스펙을 보면 이미 각종 기업에서 인턴을 최소 한 개씩을 하고 많게는 세 번 까지도 한 친구들을 볼 수 있었다. 예를 들면 Palantir, Quora, Spotify, Google, Pinterest 등등... 그리고 작년에 페이스북에서 인턴하고 두 번째로 돌아오는 애들도 있었다. 그래서 그런지 합격이 되고 나서의 행복한 시간들 동안에도 나는 항상 이를 갈면서 열심히 공부했던 것 같다. 왜냐하면 결국은 모두 다 정직원 (Full-time) 오퍼를 받기 위해서 발버둥 칠 테니까...인터뷰 자체는 나의 Medium 아티클에서도 설명했듯이 모두 다 다 똑같은 인터뷰 프로세스를 거쳐서 뽑힌다. 인터뷰를 보는 동안에는 어떤 팀으로 갈지는 정확히 알지는 모르지만 오퍼를 받을 때에는 대충 어떤 쪽으로 갈지 알게 된다. 페이스북은 정직원으로 들어가기 많이 힘들다고 한다. 그 뜻은 인턴에서 최대한 전환 (conversion)을 시킨다고 들었다. 그래서 그런지 팀마다 인턴이 필요한 곳에서 신청을 하는데 프로젝트도 적절해야 하며 정직원을 뽑을 만한 자리가 나을 시에만 뽑는 것으로 알고 있다. 페이스북의 장점 중 하나는 인턴쉽을 잘하고 정직원이 되고 나면 원하는 팀으로 지원이 가능하며 일하는 와중에도 다른 팀에 지원 또는 한 달 동안 경험을 해볼 수도 있다. 회사에서도 여러 팀을 경험해 보는 것을 장려하며 많이들 왔다 갔다 하는 것 같다.잠시 오리엔테이션 때를 돌아보자면...처음에 인턴쉽을 시작하게 되면 전부다 Facebook HQ (Menlo Park, CA 에 있다)로 오리엔테이션을 하러 간다. 오리엔테이션은 디자인뿐만 아니라 엔지니어, 데이터 사이언티스트, 리서쳐, 마케팅 등 여러 다른 인턴들은 한데 모아 론칭한다. 장소는 Menlo Park, California라는 곳에 있는 어마어마한 크기의 본사인데 거기안에는 10가지가 넘는 식당뿐만 아니라 각종 샵들도 존재한다. 거기에서 페이스북 대부분의 제품 및 팀들에 대해 강의를 듣고 디자이너들은 따로 디자인 캠프라는 것을 듣는다. 디자인 캠프에서는 각종 소프트 웨어도 배우지만 페이스북의 디자이너로써의 자질과 능력 등 기본 지식들을 많이 쌓는다. 사람들도 많이 만나고 회사 밖에서는 절대로 상상도 할 수 없는 많은 신기한 디자인 및 인터널 (internal) 툴들도 경험하면서 몸이 들썩이고 손발에 땀이 나도록 긴장하기를 반복했다. 물론 기대감과 긴장감은 이루 말할 수 없었다.오리엔테이션 막바지쯤에는 나를 계속 평가하고 가이드해줄 인턴 매니저를 만나게 되며 사내 각종 이벤트에도 참여하면서 페이스북이라는 회사와 더 많이 친근해지고 디자인 인턴이라는 롤에 점차 익숙해졌다. 마크 저커버그나 셰릴 샌드버그 같은 유명한 사람들도 실제로 만나보고 사회에서 사람들이 아는 유명한 디자이너들도 가끔 이름이 보이기도 한다. 그 사람들이 우리를 가르쳐 주기도 한다. 마지막으로 오리엔테이션이 모두 끝나면 인턴마다 정해진 오피스가 다른데, 나는 시애틀로 배정을 받았다 (인턴쉽 오퍼가 나올 때 이미 장소는 정해진다).나의 팀은? 나의 역할은?페이스북 인턴 17명 중 나를 포함한 4명은 시애틀에 있다. 몇천 명이나 되는 시애틀 페이스북 직원 중 프로덕트 디자이너는 30명이 채 안된다. 어떤 사람들은 그 정도면 많다고 하는데 옆에 엔지니어들 뿐만 아니라 다른 직책들이 너무나도 많아서 그런지 살짝 외롭기도 하다. 하지만 그만큼 유니크한 거겠지... (정신승리!)나는 현재 Facebook Ads Measurement team에서 일을 하고 있는데 사실 시작하고 2주 동안은 많이 혼란스러웠다. 아무리 페이스북 유저가 된 지 10년 가까이 된다지만 페이스북의 광고 매니저 (Ads Manager)라는 제품은 한 번도 써보지 않은 데다가 유저가 나와 같은 보통사람이 아닌 광고나 마케팅에 종사하는 사람들이 대부분이니 말이다. 하지만 지금은 많은 정보들을 습득하고 적응해서 열심히 일하는 중이다. 많은 사람들과 만나서 똑같은 설명을 여러 번 듣고, 각 직책마다 한 사람씩 1:1 미팅을 잡아서 그 사람들이 무엇을 담당하는지 어떻게 일하는지 그리고 내가 그 사람들과의 관계에서 어떤 역할을 수행해야 하는지 등 많은 정보를 습득해야 했다.이제 2달이 지난 이 시점에 나의 경험을 되돌아보면 광고 (Ads)라는 쪽은 너무나도 매력 있고 전문성이 있는 것 같다. 처음에는 분명 다른 페이스북 프로덕트들과는 비교해서 이해하기 힘들었지만 지금까지 내가 차곡차곡 쌓은 지식이 조금은 자부심이 들긴 한다. 처음에는 다른 인턴들처럼 뉴스피드를 건들거나 메신저나 인스타그램, 또는 오리가미 (Origami)를 해보고 싶기도 했지만 광고라는 것이 되게 중요하고 많은 기업들에서도 큰 투자를 하는 분야이기도 한 것을 깨달으니 뭔가 기회가 많을 것 같기도 하다.내가 디자인하는 것은 차후 시리즈에 적을 생각이지만 쉽게 말하자면 대부분 Data Visualization과 Information Architecture이다 (그래프, 테이블, 유저 플로우 등등). Sketch로 디자인도 많이 하지만, 프로토타이핑도 많이 하고 발표도 거의 매주 하는 것 같다. 다른 디자이너들에게 크리틱도 받고 페이스북 그룹에도 올려서 피드백을 받는다. 여기서  중요한 건 절대로 혼자 디자인하지 않는다는 것이다. 항상 다른 사람들과 협업하고 (특히 Content Strategist와 UX Researcher) 가이드라인 내에서 많이 벗어나지 않지만 때때로는 창의력 있게 방법을 생각해내야 한다. 광고나 마케팅에 관련한 전문적인 내용들은 Product Manager나 PMM (Marketing Manager)와 상담하기도 한다. 나에게 주어진 프로젝트들은 각기 다르지만 전부다 Ads Manager 내에서 한다. (이 부분은 다음에 더 자세히 설명하고자 한다)"넌 인턴이지만 인턴이 아니야!"추가로 페이스북 디자인 인턴은 팀에서 인턴이 아닌 신입의 입장으로써 책임감을 가지고 일을 해야 한다. 나의 매니저가 말하길, "네가 인턴이라고 말하기 전에 네가 인턴인지 아무도 몰라"라고 하였다. 많은 사람들이 기본적인 가이던스나 정보들을 가르쳐주긴 하지만 모르는 것들이 있을 시에는 혼자 미팅들도 잡고 적극적으로 붙잡고 물어봐야 알려주기 때문에 알아서 자율적으로 탐방하고 필요한 정보들을 알맞게 얻어내야 한다. 손잡고 끌어주는 문화가 아닌 손을 놓고 어떻게 필요한 정보들을 얻어내는지 또 그것들을 어떻게 디자인 해내가는지를 보는 것 같다. 그래서 그런지 필요한 정보들을 알맞고 효율적으로 캐내는 것은 물론 중요하거니와 어떻게 다른 사람들과 소통하고 협업하는지도 중요하게 보는 것 같다.더 나아가 미팅이나 크리틱에 들어갈 때에는 항상 내 의견에 대한 이유들은 미리 숙지하고 이 미팅에 대한 agenda를 확실히 하고 들어가야 한다. 워낙 다들 바쁘고 시간 낭비하는 것을 매우 싫어하기 때문에 시간을 효율적으로 활용해야지 안 그러면 마이너스인 것 은 분명하다. 지금까지 느낀 건 확실히 디자이너는 발표도 많이 해야 하고 설명도 이해하기 쉽게 해야 하며 문서들도 많이 작성해야 한다. 커뮤니케이션이 디자이너의 정말 중요한 능력임은 몸으로 느끼게 된다.페이스북 시애틀 오피스는 다행히 캘리포니아에 있는 본사와는 다르게 10층짜리 큰 건물 하나에서 왔다 갔다 하기 때문에 시간은 그나마 절약할 수 있다. 미팅은 대부분 캘리포니아나 뉴욕이나 런던에 화상 챗으로 연결해서 같이 한다. 또, 또, 또 얘기하자면 모르는 것들은 과감하게 모른다고, 알려달라고 적극적으로 얘기해야 하며 내가 맡은 일, 그리고 내가 궁금한 점들이 있거나 알려줘야 할 경우에는 어떤 사람들에게 어떻게 알려주는 것이 편한지, 이런 것들을 센스 있게 잘 알아야 하는 것이 중요하다. 어떻게 보면 "그런 걸 어떻게 일일이 신경 써!"라고 생각할 수 있지만 30분이라는 짧은 시간 동안 미팅을 하다 보면 어쩔 수 없이 그래야 하는 걸 느낀다.자주 느끼는 거지만 디자이너는 그 어떤 직책보다 미팅의 숫자 또한 훨씬 많은 것 같다. 어떤 날에는 1시간도 내 자리에 앉아 집중해서 디자인을 못할 때도 있다. 수요일은 No meeting Wednesday라고 해서 미팅을 잡지 않는다. 그래서 나는 수요일에 정말로 최대한 집중해서 많이 끝내려고 노력한다. 하지만 그 수많은 다른 직책들과의 미팅들이 중요한 커뮤니케이션이며 "디자인 프로세스"이다. 엔지니어, 데이터 사이언티스트, 컨탠트 스트래티지스트, 프로덕트 매니저 등 모두 한 배에 한 목표를 가지고 올라타야 비로소 프로덕트가 좋아지니까 말이다.시애틀 페이스북 오피스는 어떤가?페이스북 오피스는 사실 엄청 크고 위치도 매우 좋다 (South Lake Union이라는 곳 앞에 위치). 캘리포니아에 있는 본사 다음으로 제일 크다. 지금은 10층짜리 거대한 건물 하나지만 앞으로 건설 중인 건물들이 있다. 페이스북 시애틀이 커지는 이유는 현재 많은 테크 기업들이 시애틀에 자리 잡아있는 이유도 있을 테고 본사가 뉴욕보다는 훨씬 가까운 것 때문인 것 같기도 하다. 뿐만 아니라 페이스북뿐만 아니라 구글, 아마존, 마이크로소프트 등 많은 기업들이 시애틀에 있다. 미국 진출을 고민하시는 분들은 시애틀도 정말 좋은 선택일 거라고 생각한다. 무엇보다 state income tax가 없어서 돈도 많이 아낄 수 있다.인턴쉽에 대한 보상에 대해서 많이 궁금해할 것 같은데, 정확한 월급 액수를 적는 것은 사실 무의미한 것 같다. 하지만 하나 확실한 건 미국 어느 테크 기업 중에서도 탑 중에 탑이다. 정말 이 정도의 돈을 받아도 되나 할 정도로 많이 주지만 마음속 안에 스며드는 메시지는 간결하다 "그 정도의 일을 3개월 동안 뽑아내길 바란다..." 사실 하루 3끼를 전부 회사에서 챙겨주며 집 도주고 그 외에도 모든 것을 제공해주니 그냥 열심히 일하고 즐길 때는 즐기고 그 외에 것들은 걱정하지 말라는 배려인 것 같다. 나는 매일 회사에서 주는 저녁을 먹고 집까지 걸어간다. 가끔 한국 테크 기업들에서 야근을 많이 한다는 기사가 나오는데 확실한 건 여기에서는 야근하는 사람은 정말 많이 없다. 출퇴근도 자유라서 미팅만 없으면 집에 가서 일을 하거나 집에서 일한다고 하고 화상으로 미팅을 들어오는 경우도 다반사다. 매우 유연한 회사이지만 자신이 맡은 역할은 훌륭하게, 남에게 피해 안 끼치게 잘 해결하는 걸 보면 정말 똑똑한 사람들은 많은 것은 분명하다.매일매일 시애틀 오피스에는 주황색 뱃지를 단 관광객들이 온다. 금요일이 되면 놀이동산인 것 마냥 방문객들이 정말 많아서 깜짝 놀랐는데 몇 주 지나고 나니 익숙해졌다. 직원들의 온 가족들도 오고 기업들에서도 탐방 오고 온사이트 인터뷰하는 사람들도 되게 자주 그리고 많이 보인다. 그럴 때면 항상 투어 하는 곳들이 있는데 그중 하나는 9층이다. 9층 야외 테라스에서는 전망이 죽여주는데 거기서는 여름 매일 내내 바베큐를 한다. 회사 내에 최고급 재료로 맛있는 음식을 제공하는 식당도 있지만 햇볕 아래 (시애틀은 그나마 여름에 날씨가 좋다는..)에서 먹는 바베큐는 힘든 오전을 잊게 해준다. 6층에는 메인 식당이 있는데 거기서도 하루 3끼 맛있는 음식을 제공한다. 항상 화덕피자와 요구르트 아이스크림 및 각종 음료수와 샌드위치, 과일, 채소는 무제한으로 제공된다. 이게 다 공짜라니! 음료수 종류만 해도 최소 50가지는 되는 것 같다.나는 7층에서 일을 하는데 7층의 장점은 다른 층과는 다르게 커피 내려먹는 곳이 엄청 크고 콜드 브루까지 항상 있어서 나처럼 커피를 너무 사랑하는 사람은 아침에 항상 들리게 되기 마련이다. 처음에는 혼자 커피 내려먹는 것을 할 줄 몰랐는데 회사 내에서 바리스타 수업도 있어서 금방 스타벅스 앱을 지우게 되는 자신을 발견할 수 있다. 이런 하나하나가 피로를 잊게 해주는 것은 분명하다.회사 내에 한국사람은 그렇게 많지 않은 것 같다. 시애틀 오피스에서 내가 본건 한 3명(?) 이 전부인 것 같다. 오히려 백인, 중국인, 인도인이 대부분 인 것 같고 확실한 건 지금 인턴쉽 기간 동안 한국말은 거의 쓰지도 않은 것 같다. 혹시 시애틀 근처에 사시는 분이 있으면 회사로 놀러 오시면 구경도 시켜드리고 얘기도 하는 것도 나쁘진 않을 것 같다.이만 줄이며...지금까지 두 달 동안 내가 보고 듣고 느낀 점 들 그리고 배운 점들은 너무나도 많지만 이 글 하나에 다 때려 넣기에는 너무 힘들지 않을까 생각된다. (지금도 너무 긴데...) 쓰면 쓸수록 더 자세히 쓰고 싶고 더 많이 다른 많은 것들을 포함시키고 싶지만 욕심이 과다하면 내용이 산으로 갈 수 있기에 여러 가지로 분할해서 쓸 계획이다. 만약에 자세한 것들에 관심이 있는 분들이 계시면 그것들을 주제로 써보고 싶기도 하다. 다음 시리즈에는 내가 어떻게 일하는지에 대해 더 자세히 적어볼 계획이긴 하다.밑에는 처음 방문자로 페이스북에 방문했을 적 사진이다.저땐 직원이 아니어서 오렌지색의 증을 들고 다녔지만 이제는 당당히 사원증을 들고 다닌다...너무나도 행복한 지금 나는 열심히 주어진 일에 최선을 다하고 있다.facebook wall#페이스북 #Facebook #인턴 #인턴후기 #인턴생활 #기업문화
조회수 793

창업자의 일기장(4)-백수의 길

---지난 이야기---그렇게 투자해주겠다던 분에게열과 성을 다 바치고,공들였던 사업계획서와그 사업에 핵심이 되는 인맥도와세부 예산안, 컨소시엄 구성도까지 다 드렸는데...그리고는 연락이 없다.기다려보라는 말만 계속 되풀이된다.그리고 나는 백수가 되어 있었다.(나중에 알게 된 거지만내가 호구였다.역으로 생각해보면,누가 우리에게 투자해 준다는 게웃긴 이야기였다.아직 회사도 설립 안 했는데,그리고우리가 진짜 실행할 능력이 있는지도검증되지 않았는데투자해주는 게 이상한 거지.)그렇다!나는 백수다.백수!!!빨리 재취업을 하든,준비했던 창업을 하든 결정을 내려야 했다.아내는 아침마다 집 밖으로 나가는나를 배웅해 주었다.집에 있으면, 사람이 나태해진다고도서관에 가서 충분히 고민하고,결정하라고 응원을 해 주었다.퇴사하기 전에 아내의 임신 사실을 알았다.타이밍이 완벽하게나를 회사생활을 강요하는 모양새였다.너무나 큰 리스크였다.사표를 준비할 때까지만 해도,'내가 잘하는 짓인가?'라는 의문이 들었다.그러나 아내는 나에게 지금이 아니면,기회가 없을 수도 있다고...지금처럼 회사 일로 힘들어하면서계속 일하기보다는 새직장을 가서 새롭게 시작하던가,창업을 해서 꿈을 이루던가,선택할 수 있는 절호의 찬스라고등을 떠밀어주었다.믿어 준다는 것이 얼마나 큰 힘이 되는지그리고 그 부담감은 또 얼마나 큰 압박인지...문 앞을 나설 때마다발걸음이 무거웠다."오늘 하루도 정말 미친 듯이 살아야 해.후회가 없도록 말이야"어쨌든 그러건 말건 현실은 백수다.결국 창업의 결심을 하였다.한 번 더 직장생활을 할 수 있는시기적인 기회도 있지만...실업급여를 받는 기간과입사지원시기를 고려했을 때,6개월의 시간을 채우기 위해서는재취업보다는 창업이었다.그리고 투자하겠다는 분이 언제 좋은 소식을 줄지 모르는데직장에 발이 묶이면 안 될 것 같았다.(다시 말하자면, 결국 투자 건은 물 건너갔다)그럼 6개월이라는 시간 동안무엇을 준비하고,어떻게 채워갈 것인가에 대한계획을 수행해야 했다.물론 퇴사 전에 계획한 시나리오가3가지 있었다.하나는 재취업 시나리오,하나는 창업 시나리오,다른 하나는 프리랜서 시나리오.일단 창업 시나리오와 프리랜서 시나리오를 수행하기로 정했다.1) 창업을 위해 준비해야 할 전문교육때마침 정부에서플랜트 공정 관련한 300시간 교육 프로그램을 신청했는데선정되었다.12월부터 2월까지 아침 9시부터 저녁 6시까지파주에서 서초동으로 가서공부해야 하는 교육이었다.플랜트 공정이 왜 필요하냐면,제조업은 결국 공장자동화와기계(유틸리티) 간에 공정을 설계해서생산 프로세스를 구축해야 하기 때문이다.어떤 공장이든 기본적인 원리는 유사하다.필요한 기능을 정하고,장비 사양을 정하고,설비 간에 연결을 정하고,시운전을 하여 수정하고,생산에 들어간다.이러한 일련의 과정들을 배울 수 있기에내게는 꼭 관련 지식이 필요했다.이전에 직장에서 실험실에서 파일럿으로,파일럿에서 플랜트로 스케일 업을 해 봤지만,거의 마구잡이 식으로 하다 보니탈도 많았고,고생을 엄청 많이 했거든.기술에 관련한 전문교육을 받기에직장인이라면 엄두도 못 냈을 테니좋은 기회였다.2) 백수기간이 끝났을 때를 위한 준비생계를 위해서는프리랜서 일을 준비해야 했다.지금 당장은 실업급여를 받지만,그 기간이 다 끝났을 때,바로 먹고 살 준비가 안 되어있으면창업을 하기 전에 포기하게 되니까미리 지금부터 영업을 해 두어야 했다.다행히도,군대 전력 후에 잠시 창업했던 경험이 있어그때 알게 된 몇몇 분들에게 일감을 얻을 수 있을 거라 생각했다.갑자기 부탁하긴 그러니까교육을 받으면서, 차근차근 준비해 두면 필요한 시점에 일거리를 받을 수 있다.백수긴 한데...그래도 꿈이 있는 백수랄까?(나중에 알게 되지만...꿈도, 계획도 늘 맘 같지 않더라...ㅠ.,ㅠ)그렇게 백수가 되어,창업 준비와 몇 개월 후에 먹고 살 준비를하나씩 준비하게 되었다.그러나 마음이 안 놓였다.예상되는 수익과예상외로 나가는 지출!그리고불쑥불쑥 자라는 아내 태중에 아이!마음 한편에서 불안함이 싹트고 있었고,서서히 조바심과 조급증이 생기기 시작했다.될 일도 성급하면 망치는 법!잘 짜인 계획이라고 생각했는데내가 인지하지 못 한 곳에서부터서서히 균열이 커져가고 있었다.감당하지 못할 문제로 다가왔을 때,나는 아내에게 큰 마음의 빚, 인생의 빚을 지게 되었다.
조회수 825

고객이 먼저 다가오게 만드는 개입 전략은 무엇일까?

이미지 출처 : 구글 이미지    1. 고객이 먼저 다가오게 만드는 개입 전략은 무엇일까?      구매 전, 고객이 고민하는 두 가지  마트에서 저녁 찬 거리를 고르는 상황을 생각해보자. 무슨 반찬을 고를지, 돌아다니다가 어느 한 시식코너 앞에 멈춰 섰다. 시식코너에서  소시지를 건네받아먹고, 결국 그 상품을 사게 된다. 물론, 사지 않고 늘 구매하던 소시지를 살 수 있다. 하지만 시식을 통해 전혀 경험하지 못했던 브랜드의 소시지 맛을 볼 수 있었다. 이번에는 택시를 잡는 상황을 생각해보자. 늦은 저녁, 이태원에서 친구들과 한 잔 하고 일산의 집까지 택시를 타려고 한다. 택시가 쉽게 잡히지 않는다. 이때 우리가 꺼내 드는 카드는 바로 ‘카카오 택시’. 카카오 택시에서 기사와 운행 거래, 운임, 시간 등을 확인 후, 호출 버튼을 눌러 택시 서비스를 이용한다. 위 두 가지 이야기는 우리가 일상에서 아주 쉽게 겪을 수 있는 일들이다. 바로 이 일상에 개입 전략이 잘 녹아 있다. 일반적인 구매 과정 중에서 고객은 두 가지를 늘 고민한다. 첫 째, 이 상품이나 서비스를 통해 정말 자신이 원하던 ‘이익’을 얻을 수 있느냐이다. 두 번째, 자신이 처한 문제를 해결하는 과정에서 이런 서비스와 상품을 통해 발생하게 될 또 다른 위험이나 위협은 없느냐이다. 이미지 출처 : 구글 이미지가령, ‘카카오 택시’의 경우, 우린 이 서비스를 사용하는 이유가 명확하다. 사실, 바로 길 앞에서 택시를 잡을 수 있다면, 카카오 택시를 사용하지 않을 것이다. ‘카카오 택시’를 사용하는 순간은 바로, 택시가 잘 잡히지 않는 경우가 될 것이다. 즉, 택시의 배차시간을 앞당기기 위해 사용하게 된다. 이 부분에서 택시의 배차시간을 명확하게 앞당길 수 있으니, 내가 이 서비스를 이용함에 얻을 수 있는 이익은 명확하다. 그리고 택시 서비스를 이용함에 일반적인 고객이 우려하는 것들이 있다. 불친절한 서비스, 초과 운임, 배차 여부 등이다. 카카오 택시를 이용하게 되면, 이러한 우려는 사라지게 된다. 서비스가 친절해지거나 운임이 저렴해진다는 것이 아니다. 다만, 비대칭적읜 정보 환경에서 우리는 사전에 해당 서비스의 가치를 미리 확인해볼 수 있다. 기사의 서비스 평가, 요금, 운행 거리, 도착 시간 등을 말이다. 이런 경험을 통해 사전에 우리가 생각할 수 있는 위험과 위협에서 벗어 날 수 있는 것이다. 즉, 고객이 생각하는 이 두 가지를 통해 마케터는 미리 설정해두어야 하는 메시지가 명확해진다. 바로, 먼저 주기와 헷지(hedge)하기이다. 먼저 주기는 본래 제공하는 서비스나 상품을 가장 작은 단위로 쪼개어 잠재고객에게 제공하는 방식이다. 소시지 시식코너와 같을 수 있고, 화장품의 샘플이나 테스터가 이에 해당한다. 앱의 경우에도 라이트 버전의 무료 서비스를 먼저 사용할 수 있게 하고, 유료 버전으로 앱 내 구매를 유도한다. IT 서비스의 경우, 2주간 미리 서비스를 풀버전으로 사용 가능하게 하여, 락인 효과를 노리기도 한다. 이 모든 것이 먼저 주기에 해당한다. 헷지(hedge)하기는 잠재고객이 생각할 수 있는 위험과 걱정을 미리 해소해주는 것이다. 위의 카카오 택시가 아주 좋은 사례였다. 가령, 새로운 화장품을 구매하기 전, 테스터를 사용해보는 것도 좋지만 제품의 특성상, 그 효과라 어느 정도의 시간이 필요하기에 일정한 시일 이내 환불조건을 제공하는 것도 하나의 헷지 하기에 해당한다. 위 두 가지 전략에 기초하여, 당신의 제품과 서비스는 먼저 주기와 헷지 하기 전략이 있는가. 만약, 준비되어 있지 않다면, 고객의 의사결정 여정 속에서 당신의 서비스나 제품은 외면받기 쉬울 수 있다. 먼저 주기를 통해 고객의 사용경험을 유도하고 헷지 하기를 통해 고객의 걱정을 미리 해소해주자. 당신의 제품과 서비스가 시장에서 도드라질 수 있는 간단한 방법이다.     개입 전략의 선두주자  최근 페이스북이나 인스타그램 타임라인을 보게 되면, 젊은 남녀 모델이 나와 코믹한 상황 속에서 다양한 화장품을 체험하는 영상을 종종 볼 수 있다. 민감성 피부를 가지고 있는 이가 며칠 후 피부가 몰라보게 달라졌다며, 이리 비추고 저리 비춰보는 영상을 통해 나도 모르게 샘플 신청 클릭 버튼을 누르게 된다. 최근 저가 화장품 브랜드가 샘플 신청이라는 개입 전략을 넘어 화장품을 이미 사용한 것처럼 느낄 수 있는 경험을 제공하는 영상 마케팅에 열을 올리고 있다. 이 영상을 보며, 이 자극적인 영상이 과연 잠재고객의 호응을 얻을 수 있을까?라는 의문이 들긴 하지만, 실제로 샘플을 신청하거나 보 제품으로 구매를 시도하는 여성들을 보면 그 의아함은 금방 해소된다. 앞서서 설명드린 두 가지 관점에서 고객이 구매 전 가질 수 있는 의문점을 충분히 해소할 수 있는 포인트다. 실제 해소는 아닐 수 있어도 고객이 이 상품을 써야 하기 위해 스스로를 설득할 수 있는 명분이 될 수도 있는 것이다. 화장품의 본 제품을 바로 구매하는 고객들은 생각보다 많지 않다. 테스터나 샘플을 이용하길 원한다. 즉, 이런 습관이 고착화된 구매 환경에서 바로 본 제품을 사라고 설득하는 것은 무리가 있다. 하지만 샘플을 제공하는 것도 비용적인 부담과 샘플만을 사용하고 본 제품을 구매하지 않을 판매자의 두려움이 상존한다. 이럴 땐, 마치 샘플이나 테스터를 사용하여 판매자가 말하고 싶은 것을 체험한 것과 같은 간접 경험이 필요하다. 그중에 하나가 바로 영상이다. 간단한 스낵 영상에서 브랜드가 말하고자 하는 것만 명확하게 전달할 수 있다. 민감성 피부 개선, 탄력, 미백 등, 그것에 맡게 고객의 후기나 사용 전후의 비교 콘텐츠를 충분히 영상으로 담아 설득하는 것이다. 이런 메시지가 구매자로 하여금 쉽게 행동할 수 있게 만든다. 이런 행동을 유발하는 개입 전략은 IT기술을 활용하게 되면 그 사용범위가 대단히 넓어진다. 경험 구현에 한계가 사라지는 것이다. 여행 상품을 생각해보자. 예전에 여행지의 이미지를 보여주는 식이라면, 현재는 여행지에서 체험할 수 있는 에피소드를 정리하여 영상으로 보여주기도 한다. 이에 한 발 더 앞서 나간다면, 가고 싶은 여행지를 미리 탐험해볼 수 있는 기술을 활용하는 것이다. VR, AR 등을 활용하여, 직접 가지 않았지만 마치 여행지를 미리 답사할 수 있는 경험을 할 수 있다. 외국어 공부는 어떤가? 우리 세대만 하더라도 외국어는 책, 바로 종이 위에만 존재했다. 조금 더 적극적인 친구들은 해외 서적이나 영화를 보며 회화 실력을 늘리기도 했다. 더 나아가 외국인 친구를 사귀거나 해외 연수를 가기도 한다. 이런 행동에는 물론 비용이 든다. 적거나 많거나 상관없이 비용이 수반된다. 장소와 시간적인 제약이 생기기도 한다. 이런 모든 것들을 IT기술을 통해 저렴한 비용으로 미리 경험할 수 있다면 어떨까? 해외연수를 가지 않아도 미리 다니고 싶은 학교의 수업을 경험하고 그곳 친구들과도 이야기를 나눠 볼 수 있다면 말이다. 제공되는 서비스나 제품이 단순히 눈속임으로 고객을 상대하는 것이 아니라 본질적으로 좋은 제품과 서비스를 제공하고 있다면 선경험을 통해 대부분의 잠재고객이 본 제품과 서비스로 이어질 수 있을 것이다. 특히, 이러한 선경험은 교육 사업에서 더욱 활발하다. 집단교육의 형태가 익숙한 우리의 경우, 수능이나 다른 자격증 시험을 준비하며 인강(인터넷 영상 강의)이라는 것을 겪었다. 물론, 인강의 편의성은 오프라인의 집단 교육과 비교했을 때, 더욱 분명해진다. 시간과 공간의 제약이 사라지며, 다수가 아닌 1:1 교육을 받는 집중도가 생긴다. 질의응답 게시판을 통해 실시간 문의도 가능하다. 물론, 온라인 강의는 오프라인의 시장을 잠식하지 않는다. 이 둘은 서로 보완의 관계를 가지며, 온라인 강의를 통해 오프라인 강의 사업 확장이 가능하며, 이는 다시 온라인 수요 확장으로 긍정적인 영향을 준다. 비즈니스 모델 관점에서 볼 때, 온라인 강의는 오프라인 강의의 맛보기 역할을 하기도 한다. 10분이나 20분 내외의 짧은 온라인 강의를 통해 진성 유저는 오프라인 강의로 유도하고 니즈가 없는 유저는 강의로 유도되지 않아 불필요한 소통이나 업무가 발생되지 않는다. 자, 어떤가?. 당신의 비즈니스의 서비스도 이처럼 개입 전략을 구사할 기회가 존재하는가? 두 가지 관점으로 살펴보면 된다. 작은 단위로 미리 줄 것이 있는가. 그리고 고객이 불안해하는 요소를 미리 헷지 할 수 있는가.     몸통을 흔드는 꼬리, 전략의 비즈니스화  최근 빙그레 바나나맛 우유가 흥미로운 빨대를 출시하면서 큰 인기를 끌었다. 여러 개의 우유를 연결하여 한 번에 마실 수 있는 빨대, 링거를 연결하여 호스로 우유를 빨아먹을 수 있는 빨대 등, 호기심을 자극하는 빨대들을 활용한 영상이 바로 그 이야기다. 영상에서만 그치는 것이 아니라 실제로 고객이 구매하여 직접 사용할 수 있도록 빨대를 한정판으로 출시까지 했다. 그 인기는 실로 대단했다. 빨대 출시와 함께 바로 품절 사태가 발생할 정도였다. 더불어, 이 빨대의 인기만큼이나 빙그레 바나나맛 우유의 매출도 늘어났으며, 오래된 브랜드에 새로운 활력을 일으켰다는 평가도 받았다. 우리가 평소 마케팅을 진행하게 되는 경우, 판매하고자 하는 제품과 서비스에 집중하곤 한다. 물론, 최종 목표를 이루고자 하는 노력의 결과다. 다만, 그 전의 행동 혹은 그 주변의 행동에 초점을 맞춤으로써 최종 행동을 하게 유도하고 결국, 최종 목표를 달성하게 하는 방식이 더 다양한 설루션을 만들 수 있게 한다. 바나나맛 우유가 맛있다, 신선하다, 저렴해졌다, 양이 많아졌다 등의 내용이 아니라 필수적으로 사용했던 빨대를 더 재밌게 만들었으니 이용을 권하는 방식인 것이다. 마치, 쇼핑몰의 경우, 매출을 더 올리는 것에 집중하는 것이 아니라 구매 과정 중, 바로 그 전 단계인 장바구니 버튼 클릭 수를 늘려 보는 식인 것이다. 트라이 닷컴(Try.com)이라는 쇼핑앱을 생각해보자. 여성분들이라면 쇼핑 중에 이 불편함은 모두 공감할 것이다. 바로 직접 입어 볼 수 없으니, 실제 배송 이후에 사이즈가 맞지 않을 경우, 그 절차가 불편하거나 귀찮다는 것이다. 그럼, 미리 입어 볼 수는 없을까? 물론, 주변에 동일 브랜드의 매장이 있다면 매장 방문 후에 결정해도 되지만 수많은 온라인 쇼핑몰이 매장을 가지고 있진 않을 것이다. 그렇다면, 이 구매 결정의 부담은 모두 소비자에게 넘겨지게 된다. 트라이 닷컴은 이 부분에 사업의 기회가 있음을 발견했다. 바로, ‘미리 입어보기’다. 여성들이 구매 전, 아무런 비용 부담 없이 원하는 브랜드의 옷을 7일간 입어보는 것이다. 미리 입어 볼 수 있게 옷의 물류비용 역시 제로다. 즉, 말 그대로 고객은 옷을 입어보고 살 수 있게 된 것이다. 이 사업의 본질은 그저 의류 쇼핑몰인 것이다. 더 좋은 옷, 더 나은 고객관리로 차별화를 두는 것이 아니라 고객이 옷을 온라인에서 구매하느 과정에서 공통적으로 하게 되는 걱정을 헷지 한 것에서 시작된 것이다. 출처 : 구글 이미지생각해보자. 고객이 옷을 미리 입어 불 수 있게 이 시스템을 관리하는 비용보다 한 번이라도 옷을 입어 본 고객을 통해 늘어난 수익이 더 크다면, 이 헷지 모델은 아주 강력한 세일즈, 마케팅이 되는 것이다. 입소문은 또 어떻겠는가. 자연스럽게 강력한 입소문을 탈 수밖에 없을 것이다. 우리나라에 비슷한 사례가 있다. 바로 스트라입스다. 스트라입스는 최초 론칭 시, 남성 맞춤 셔츠라는 작은 시장에서 시작했다. 그리고 그들은 자신들이 더 품질 좋고, 디자인이 우수하며, 더 저렴한 셔츠를 판매한다고 전면에 이야기하지 않았다. 그것보다 더 강조했던 것은 바로 코디네이터 무료 출장 서비스다. 웹을 통해 스트라입스의 코디네이터 방문을 신청하게 되면 위치가 어디더라도 방문하게 된다. 저자는 예전에 직접 코디네이터 방문을 신청하였고 만나게 된 장소는 카페였다. 놀랍게도 나에게 커피를 사주기까지 했다. 이런, 놀라운 경험은 그들의 말에 경청하게 하고 결국, 셔츠 구매로까지 연결시키게 만들었다. 물론, 커피를 사줘서가 아니다. 맞춤 셔츠 구매 과정은 복잡하고 귀찮기 짝이 없다. 미리 디자인을 볼 수도 없으며, 스튜디오에 직접 방문하여 치수를 재야 한다. 그런데 이 모든 과정에 나의 노력이 필요 없게 된 것이다. 이 부분도 위와 동일하게 생각해보자. 코디네이터 출장 서비스를 운영하는 비용보다 코디네이터를 통해 셔츠를 더 잘 구매하게 됨으로써 늘어난 수익이 더 많다면 이 역시, 훌륭한 세일즈, 마케팅이 되는 것이다. 우리는 무엇을 먼저 줄 수 있으며, 무엇을 헷지 할 수 있을까? 오늘 하루, 이 두 개의 질문에서만 답을 찾는다면, 당신의 마케팅 방향은 50% 이상 잡은 것이다. Q1. 당신의 서비스를 가장 작은 단위로 나눠, 미리 제공할 수 있는가?Q2. 당신은 고객이 구매 과정에서 갖는 걱정과 고민을 어떻게 미리 해소시켜 줄 수 있는가?오피노 자세히 보러 가기
조회수 1678

수파자 서울대 과학 선생님 일주일만에 과학 4등급에서 1등급으로

안녕하세요? 대한민국의 모든 자녀들이 국내외 어디에서든 질 좋은 교육을 제공을 받을 수 있도록 항상 노력하는 수파자입니다. 오늘은 수파자에서 과학을 가르치고 계신 선생님 한 분을 소개해드리고자 합니다. 저희가 이 선생님을 알게된 건, 어느날 갑자기 수파자 본사 사무실에 전복이 도착해서였어요.다름아니라 바닷가 마을에 살고 계신 수파자의 고객님이 계셨는데, 이번에 수파자 덕분에 아이의 과학 성적이 눈에 띄게 상승하여 감사의 마음을 담아 보내주신 선물이었어요. 어머니께서 보내주신 전복은 수파자 전직원이 전복죽으로 감사히 맛있게 잘 나누어 먹었답니다! 그리고 영양 보충해서, 더 많은 학생들이 이렇게 기쁜 경험을 가질 수 있도록 으쌰으쌰 힘을 냈습니다.그리고 이런 이야기의 주인공, 바로 그 선생님!을 만나보지 않을 수 없었는데요, 그 분은 서울대학교 건축학과에 재학중이신 선생님이었습니다. 선생님께서는 이번 긴 연휴였던 추석 기간을 활용해서 학생과 매일매일 과학 수업을 진행하셨는데요,수업 전 4등급이던 학생의 과학 성적이 일주일 특강을 통해 바로 1등급 겟!공부는 재미라는 선생님의 말씀... 역시 갓서울대 저도 선생님처럼 공부를 잘 하면, 공부가 재미있을 것 같네요! 자세한 내용은 유튜브 영상을 통해 확인해주시고, 수파자의 모든 선생님은 공부 전문가 서울대 선생님으로만 구성되어 있어요.인터넷 강의실에서 수업이 진행되기 때문에, 인터넷이 가능한 전세계 어디에서나 수업을 받을 수 있고, 1:1 과외이기 때문에 내 아이의 상황과 수준을 고려하지 않고 천편일률적인 수업을 쏟아내는 학교/학원/인터넷 강의 수업과 달리 단기간 효과가 확실한 편입니다. 이제 수파자에서 직접 블로그를 운영하는 만큼많은 학습 정보, 입시 정보 꿀팁과 좋은 이야기들 많이 전해드리도록 하겠습니다. 아이들의 공부 고민이 모두 타파되는 그 날까지 수파자가 함께하겠습니다.#수파자 #서울대과외 #서울대건축학과 #화상과외 #온라인과외 #서울대선생님 #에듀테크
조회수 1220

너는 어디쯤에 있니?

치열한 하루를 또 마무리하며,오늘도 살아남은 스타트업 대표 동지 여러분에게위로와 존경심을 담아 메세지를 남깁니다.내 브런치를 보는동갑내기 대표가 이런 말을 했다."채대표!너무 잔소리 하는거 같아.가끔은 희망이 되는 소리를 해야지읽다보면 왠지 씁쓸해지잖아."지난 글들을 곱씹어보니정말 긍정적인 내용보다고쳐야 할 것들,우리가 잘 못 하는 것들,정신차려야 할 것들에 대한이야기가 더 많더라.사람은 희망을 품고 산다고 했는데...내 글은 찬 물을 끼얹는 글이 아닐까하는 생각이 들었다.희망과 추상적인 들뜸으로살아가기엔 창업자의 삶은지독하게 현실적이고,칠흑같이 어두움 속에서방향을 찾기라고 표현하는게너무 비관적인 시각일까?창업자는 이상주의자이면서도,현실주의자여야 하는데...(지켜보고 있다~! 흠칫 놀라실 제 사진입니다)좋은 이야기로 희망을 주는 분들은 많으시니까,난 좀 현실적인 이야기를 남겨도 되지 않을까?이번 글은이전에 썼던 브런치 글 중에서간략하게 소개했던 내용을 보다 상세하게정리하였다.왜 비슷한 내용이 반복될까?창업자가 가져야 할 마인드가 그렇게 복잡하거나많은 능력이 아니고 공통적인 몇 가지로 귀결되기 때문에사실 제시할 수 있는 요인은 그리 많지 않다.나를 포함하여다수의 창업자들은 그냥 한 번 이런 글을 접하게 되면,"그렇군""당연한데"라고 1회적으로 인식한다.그러나 세뇌가 필요하다.반복적으로 그러나 조금씩 확장되면서뇌에 기록되어야 행동하기 전에한 번이라도 더 생각을 떠올릴 수 있다.웃을 일이 많아서 웃는 것은 쉽지만,웃을 일이 없는데 웃는 것은 어렵다.그러나"대표"라는 타이틀은그렇게라도 하지 않으면감당하기 힘든 자리다.사업을 즐겨야 할 수 있다고 말하는 대표들이진짜 즐거움만으로 버티는게 아니다.분명 사업은 즐거움도 있다.그러나 절실함도 있다.당연히 무서움도 있다.다양한 감정을 곧이곧대로표현할 수 없는 자리,아니,표현하면 안 되는 자리가대표라는 위치이다.웃는 가면 속에울기도하고,화내기도하고,겁에 질리기도하는그런 삐에로가 되어야 한다.제품 출시를 준비하며,투자자를 만나고 있는 와중에지금 우리가 어디쯤이라고 생각하냐는 질문을 들었다.질문의 의도는 알겠지만,간단하게 지나칠 수 없는 질문이었다.그래서, 나도 여러 스타트업 대표님들께물음을 던진다."너는 어디쯤에 있니?"주위를 둘러보면많은 창업자들과 스타트업들을 볼 수 있다.이미 안정적인 기반을 구축한 스타트업,해외에서 인정받아 이슈가 되는 스타트업,매출이 포텐터져서 유명해진 스타트업,거액의 투자를 받고 몸집을 키우고 있는 스타트업...나도 사람인지라부러움도 있고,한편으로 부끄러움도 있다.때로는 고객이나 거래처, 투자자에게상처를 입기도 한다.약점을 너무나 적나라하게 공개해서얼굴이 달아오르기도 한다.제품/서비스에 대한 단점을 조목조목 지적해서어디에 숨고 싶을 때도 있다.아직 준비되지 않은 것들을 추궁하듯 몰아치며평가절하하기도 한다.이럴때면,종종 나 자신에게 물어보게 된다."내가 너무 더딘걸까?""내가 많이 부족한걸까?""나는 잘 하고 있는 걸까?컨디션이 안 좋고,하루 일과가 잘 안 풀리며,엉망진창의 하루를 만날 때면,더더욱 자신감보다 자괴감이 더 클 때가 있다.그럴 때, 다른 동지들은 어떻게 이겨내는지 궁금하다.그냥 다 제끼고 잠이나 자기도 할 거고,단거 또는 매운거 배터지게 먹고 기운차리기도 하고,게임이나 오락에 집중하던가,운동으로 땀을 흘리던가,친구들과 정신이 나가도록 술을 마시던가...나의 경우는 만화를 본다.학창시절부터 만화광이었기에한 때는 만화감상문도 쓰고,만화방 알바생보다 더 만화책 위치를 잘 알 때가 있었다.솔직하게 말해서책을 읽고 얻은 지식이 나의 이성과 논리의 근간이라면,만화에서 얻은 지식은 나의 감성과 사상의 근원이다.다시 본론으로 돌아와서,슬럼프라고 말하기엔 너무 잦지만우리가 어디쯤 있는건지, 어떻게 해야할지막막할 때, 우리는 나름대로의탈출구를 찾는다.잠시나마 생각을 멈추든,다른 곳에 집중을 하든,새로운 에너지를 얻든간에이내 훌훌 털어버리고금방 회복되어야 한다.그래.반드시 회복되어야 하는 것이다.문제는 이것이 해결책은 아니라는 점이다.결국 또 같은 문제로 힘들어 질 것이며,내성이 생기듯 점차 탈출구는 닫힐 것이다.우리는 어떻게든 근본적인 해결책을 찾아야 한다.그러기 위해우리가 어디쯤에 있는지,어떤 곳에 있는지를 알아야 한다.우리가 가야할 목적지와우리가 가지 말아야 할 샛길을 알아야 한다.먼저 통과점을 지나간 선행자들에게서 배우고,한층 더 우리에게 적합한 방법과 과정을 찾아야 한다.1. 인정하기1) 모두가 다 다름을 인정하자.사람은 비교에 익숙하다.그러다보니자신보다 더 높은 곳에 있는 사람과 비교하고,자신보다 더 낮은 곳에 있는 사람과 비교하려 한다.비교만하고 있다가는우리가 어디있는지 더 미궁속으로 빠져들 수 있다.같은 대상을 보더라도,기준이 다르면 다르게 보이거든.누구에게는 헬조선이지만,누구에게는 자랑스런 대한민국이다.서로 주장을 하다보면,노르웨이가 어떻고, 룩셈부르크가 어떻고,수단이 어떻고, 북한이 어떻고...서로가 비교대상을 들이대면서옳고그름을 따진다.그러다보면,비교쟁이가 되어나 자신은 잊어버리게 된다.잘 되고 있는 경쟁사를 보고 좌절하면 안 된다.힘들어하는 경쟁사를 보고 안도하는 것은 더더욱 안된다.잘 되는 경쟁사를 보고 부러워해야 한다.다만, 그 부러움으로 끝나는게 아니라배워야하고, 연구해야 한다.왜 성장이 되는지, 왜 튼튼한지, 왜 고객들이 인정하는지원인과 요인들을 알아내서 우리의 것으로 만들어야 한다.어려움에 처한 스타트업을 보고 안타까워해야 한다.진심으로 위로하는 마음과 응원하는 마음을 가지자.그리고 배워야하고, 연구해야 한다.어떠한 이유로 어려움을 겪게 되었는지,위기에 어떻게 대처하고 있는지,무엇을 준비하고 있는지를 알아내서 우리의 것으로 만들어야 한다.우리는 비교하는 시각을 버리고,다양성과 특이성을 존중해야 한다.우리랑 똑같은 기업은 세상에 하나도 없다.아이템이나 아이디어는 유사하더라도,사람이 다르고, 환경이 다르고, 지나온 길이 다르다.축하해 줄 때, 부러움을 담아 축하해주자.위로해 줄 때, 응원을 담아 위로해주자.그리고 꼭 배우고, 연구해서 우리의 것을 만들자.같은 선상에 있어보여도,사실을 평행우주와 같이 다른 위치에서다른 시간을 살아가고 있다.2) 우리는 약자이다.약자가 강자에게 지는 것은 합리적인 현상이다.약자가 강자를 이기는 것이 기적같은 일이지.강자가 약자를 괴롭히는 것도 꼴불견이지만,약자가 강자인척하는 것도 참 꼴불견이다.약자가 강자를 이기는 법은약함을 알고 보완하는 것이다.아니면,그나마 가지고 있는 강점을 극대화해서특이적으로 강하게 되는 것이다.약자가 강자를 이기는 기적을꿈꾸기에 다들 지금도 치열하게 살고 있지 않은가.설움이 북받치고, 열불이 나는 것은은연중에 내가 약자가 아니라고 생각하기 때문이다.실패, 실수, 패배를 받아들일 마음의 준비가안 되어있기에 상대에게 분노하는 것이다.우리가 약하고,부족함이 많다는 것을 인정하는 순간고마움을 가질 수 있다.고객의 불만이 실속있는 피드백으로 변하고,거래처의 거절은 협상의 또 다른 기준으로 변하며,투자자의 평가는 고려해야할 조언이 된다.우리가 부족한 것을 채워야하고,약점을 보완해야 할 미약한 존재라는 것을 인정하면,우리에게 관심을 가져주는 모든 분들이고마운 분들이고 감사한 분들이다.나 자신이 볼 수 없던 문제점들을하나하나 알려주는 관심이야말로강하게 성장할 수 있는 기회이며빠르게 성장시켜주는 선생이다.우리가 약자라는 카테고리에 있다는 것을 인정하는 순간,더 겸손해지고, 더 절실해지고, 더 성장할 기회를 노릴 수 있다.허세부리거나, 우쭐할 시간따위 없다.약한 물고기를 더 치열하게 움직인다.사력을 다해 헤엄친다.우리 모두는 약자의 위치에서살아가고 있다.(동료들의 허락없이 몰래 올리는 사진: 그래서 양심 상 흑백처리 했어요. 때리지만 말아주세요)2. 믿기1) 어제보다 나아질 나를 믿어라.슬럼프라고 생각 될 때,뭔가 참 일은 많이 하는 것 같은데...이상하게 제자리에 있는 느낌!학생시절 영어단어 열심히 외우고,학원도 다니면서 공부하는데...이상하게 성적은 제자리인듯한 그런 느낌!세상살이에 깨달은 것은노력한 만큼에 비례해서성과/성공을 보장하지 않는다는 점!그러나노력한 것으로도 이전보다는 무언가 바뀐다는 점!그것이 내가 알든, 모르든 변화가 시작된다.아무도 모를지라도일단 어제보다는 한 걸음 더 나아갔다.이 사실을 잊지말자.2) 혼자가 아니라 함께라는 것을 믿어라.우리가 어떤 곳에 있는지우리와 함께 있는 사람들을 보면 알 수 있다.함께 있는 사람들이 즐거우면 우린 즐거운 곳에 있다.함께 있는 사람들이 괴로우면 우린 괴로운 곳에 있다.함께 있는 사람들이 높은 꿈을 향해 달리면,우린 높은 곳을 향해 달리고 있다.주위를 둘러보라.그러면, 내가 있는 곳이 어떤 곳인지 알 수 있다.3) 기도를 믿어라.신을 믿든, 안 믿든간에누구나 간절한 기도를 한다.단지, 운에 맡긴다는 마음이 아니라우리가 할 수 있는 모든 역량을 다 쏟은 후,누군가를 향해 간절히 빌고, 원하는 바를 고백한다.기도한다고 잘 풀리는 것은 아니지만,누군가에게 다 털어놓고,나 자신에게 솔직해 지는 시간을 가지면결과가 어떻든간에 마음이 후련해지더라.그래야 다음을 빠르게 준비할 수 있다.이 단계에 이르면,적어도 나 자신에게 부끄럽지 않은위치에 서 있는 것이다.3. 정리하기1) 기록하라.시간을 기록하고, 사건을 기록하면우리는 정량적으로 우리의 위치를 알 수 있다.계획했던 스케쥴 상 어디에 와 있는지,어느 부분을 건너뛰었고,어느 부분에 더 집중하였는지그래서 지금 어디까지 왔는지콕 집어서 알 수 있다.2) 전달하라.우리가 어디쯤인지 알게 되면,반드시 동료든, 조언자든, 고객이든간에알려야 한다.내가 생각했던 우리의 위치가노이즈와 간섭으로 왜곡되어 있을 수 있다.그래서 제3자에게 전달하고,검증 받아야 한다.은근 우리는 우리가 보고 싶은 것,우리가 듣고 싶은 것우리가 있고 싶은 곳으로짜맞추려는 경향이 강하다보니...객관적인 시각으로 확인이 필요하다.3) 행동하라.우리가 어디쯤인지 알았다면,그리고 그 다음 스텝을 진행해야 한다.망설이고, 안주하고 있으면우리는 딱 그 자리에서 멈춰있는 것이다.우리는 끊임없이 변화하고,성장해나가야 한다.방금 어디있었는지를 잊어버릴 정도로내달려야 안주하지 않는다.속도를 말하자는 것이 아니라,행동을 말하는 것이다.스타트업의 강점은아이디어보다 행동력이다.3년 전, 예비창업자였을 때법인 등기하고 사업자등록한 사람들이앞서가고 있고 난 뒤처진 느낌이었다.얼마나 바보같은 생각이었는지....그런 식의 비교로 나의 위치를 파악하려 했던나 자신을 떠올리면 지금도 얼굴이 달아오른다.게임이 즐거워서 레벨업하는 사람과레벨업하기 위해 게임을 하는 사람이게임을 어떤 것이라고 정의내릴까?같은 레벨이라고해서같은 시간과 같은 마음일 수 없다.한 사람은내일도 즐거운 마음으로 게임을 할 것이고,다른 한 사람은내일도 의무감으로 게임을 할 것이다.한 사람은이전보다 더 나아진 자신의 캐릭터에 기뻐할 것이고,다른 한 사람은남들과 비교해 더 올려야할 다음 레벨에 대해 부담을 느낄 것이다.우리가 어디쯤인지 아는 것은 매우 중요하다.거기서 끝나는 것이 아니라우리가 어떤 상태로, 어떤 목적과 과정을 통해성장하고 있는지 살펴보아야 한다.그리고 의미를 부여해야 한다.지금의 우리가 있는 곳에 대한 의미,앞으로 우리가 가야할 곳에 대한 의미.이제 다시 질문을 던져본다."너는 어디쯤에 있니? 그리고 너는 지금 어떻니?"#클린그린 #스타트업 #초기창업 #스타트업창업 #창업자 #고민 #인사이트 #조언
조회수 75

운명의 매치 바로고 체육대회 <흑팀vs백팀> 그 승리의 결과는?

운명의 매치바로고 체육대회바로고 흑팀 vs 백팀신관과 별관으로 나누어흑팀과 백팀으로 구성하여바로고 체육대회가 개최되었습니다. 이번 체육대회는협동심과 팀워크를 증진하며바로고 동료들 간소통과 화합을 도모하는 자리입니다.팀별 운영비가 걸려있는 만큼치열한 전투가 예상됩니다!신관 : 별관흑팀 vs 백팀흑팀사업총괄본부전략기획본부백팀인프라 관리 본부재경본부O2O 연구소-자,지금부터 흑팀과 백팀의운명의 매치가 시작됩니다.am09:00바로고 임직원이 모두 참여하여더욱 의미가 있는 체육대회가벼운 스트레칭으로체육대회를 시작합니다.아침에 하는 운동은건강을 위해서도 아주 좋다고 하죠~스트레칭 중 아직잠에서 깨어나지 못한 모습 포착!이제 본격적으로 대회가 시작되는 만큼잠에서 깨어나 봅시다!-배점: 10점워밍업으로 시작한첫 번째 대결은단판으로 결정짓는가위바위보가위바위보이것이 뭐라고모든 직원이 초 집중하여가위바위보를 외칩니다!매일 아침바쁜 출근길정신없는 하루의 시작대신오늘만큼은가위바위보여기에 나의 아침 집중력을 모두 발휘해봅니다..단판승으로흥미진진한가위바위보 게임은백팀의 승리!첫 승리를 가져갔어요~축하합니다!아침부터 푹푹 찌는 무더위에지치면 안 돼요!본격적인 대결은 지금부터 시작입니다.백팀! 파이팅팅!첫 번째 가위바위보 대결은아쉽게 패했지만다음에는 승리를 기원하며파이팅하는 흑팀!힘내보아요~^.^-배점: 10점두 번째 대결은제기차기였습니다.한때 제기 좀 차 본 사람들모두 모두 모여랏!흑팀은 벌써 파이팅을 외치고 있어요.1차전을 가볍게 승리로 장식한백팀은여유 있는 미소로 파이팅!제기차기의 멤버는상대편 여직원들이 선택한멤버로 구성되었습니다.본격적인 제기차기지금 시작합니다. 흑팀의 제기차기뒤로차기앞으로 차기옆으로 차기다양한 모습으로 제기 차는 모습을감상하고 계십니다.백팀의 제기차기백팀의 제기는발에 붙어서 떨어지지 않았어요.제기차기의 신으로 등극!제2차전으로 치러진제기차기 역시백팀의 승리!"축하드립니다!"-배점: 10점세 번째 대결로전투 피구가 시작되었습니다.일명"여왕을 지켜라!"여자 한 명을 보호하는피구 게임!여왕이 아웃되면팀이 지게 되는여왕을 지키는 피구 게임 입니다.흑팀과 백팀의 여왕어떤 팀이 끝까지 여왕을 지킬 수 있을까요?결과는백팀의 승리!연속 세 게임을 모두백팀이 승리로 가져갔습니다.-배점: 20점전투 농구는15분씩 2쿼터로 진행됩니다.한 팀은 5명으로 구성되어기존의 농구 규칙과 동일하게 시합이 치러집니다.이번 농구게임의 승리4연승으로 백팀이 가져가게 될까요?흑팀이 첫 승을 거두게 될까요?절대적 우세인 백팀절대적 약세인 흑팀하지만 왠지 손에 땀을 쥐게 하는경기 결과가 넘나도 궁금합니다.압도적인 점프력으로농구공을 처음부터 후려치던백팀의 승리 소식을전해드립니다.흑팀 : 백팀0: 50농구까지 승리하면서4연승을 달리고 있는 백팀배점 스코어한 번에 뒤집을 수 있는 기회가 있다~그것은 바로 다음 경기축구입니다.축구는 이 모든 경기 결과를 뒤집을 수 있는35점의 배점을 가지고 있습니다.한 팀의 구성은14명의 남자 선수 +1명의 여자 선수여자 선수는 손을 이용하여 플레이 가능한 규칙 적용본격적인 전투 축구를 시작합니다.게임을 시작하면서양 팀의 선수들이 서로 악수를 나누고 있습니다.웃고 있지만절대 양보할 수 없는한 판 승부!축구 게임은20분씩2쿼터로 나누어 진행됩니다.50점이 걸려있는아주 중요한 게임인 만큼치열한 접전이 예상됩니다.여기서 흑팀이 이기게 되면50:50 운명의 매치바로고 체육대회는 무승부로 끝나지만백팀이 이기게 되면5연승으로0:100완승을 하게 됩니다.그래도 빠질 수 없는포토타임!경영지원본부에 계신 멋진 유영수 이사님베스트 포토제닉으로 임명합니다~시작하자마자빠른 발놀림을 자랑하는선수들~바로고 직원들이이렇게 축구를 잘하는 줄미처 몰랐어요~화려한 드리블로숨겨두었던축구 재능을 맘껏 발휘합니닷!전승을 위해 달리는백팀의 선수들!공중에 떠오른 볼을 장악하기 위해백팀의 선수가 뛰어오릅니다.하지만 이대로 경기를 끝낼 수 없는흑팀의 반격이 시작되었습니다.드디어 골대 앞까지!슈우웃!~~~~~~~"골인"흑팀이 선취점을 가져갑니다.의기소침했던흑팀의 응원이 살아납니다.-이대로 경기는 끝!축구 경기의 승리를 흑팀이 가져가면서최종 스코어50:50무승부로 운명의 매치바로고 체육대회를 마칩니다.BEST 커플샷부러워하지 말아요.부러우면 지는 거예요~바로고체육대회마무리는 훈훈한단체샷으로 장식했습니다.흑팀과 백팀이 모두 하나 되어즐거운 체육대회 시간을 가졌답니다.다 함께 파이팅을 외쳐봅니다.지금까지보다앞으로가 더욱 기대되는바로고우리 모두 가슴에 '바로고'의 열정을 가지고파이팅을 외칩니다!대한민국배달 배송배달대행을 책임지는바로고"우리가 바로고 입니다."이상 바로고 체육대회 소식을 마칩니다.바로고에서만 볼 수 있는바로고의 사내소식앞으로도 기대해주세요~감사합니다.
조회수 1433

[시장보고서] 애플리케이션 성능관리 시장 분석 및 전망 (2016~2018)

< 데일리그리드 APM 시장 보고서>데일리그리드의 2017년 APM의 시장 전망 보고서를 공유합니다. 데일리그리드는 2012년부터 APM 시장 전망 보고서를 만들어 왔습니다. 이 보고서에는  2017~ 2018년 시장 전망, 기술 트랜드, 2016년 벤더별, 인더스트리별 시장 점유율을 상세히 분석한 내용이 담겨 있습니다.  국내 APM 시장에 대한 분석과 전망을 통해 APM 시장에 대한 인사이트를 얻으세요. 제니퍼소프트, 고객의 니즈 적극 대응하며 선두 유지 기업들은 원활한 애플리케이션 운용을 위해 WAS 모니터링은 핵심적인 역할을 하고 있다. 이 때문에 선두 업체인 제니퍼소프트의 매출과 시장에서의 입지는 매우 견고한 것으로 볼 수 있다.최근 시장에 다수의 IT벤더들이 APM 솔루션을 출시하며 시장에 진출했지만, 아직 큰 영향력을 발휘하지 못하고 있다. 다만 이들 벤더들이 저가 공세로 시장을 흐리고 있어, APM 솔루션에 대한 단가 하락 우려가 커지고 있는 상황이다. 이러 상황에서 제니퍼소프트는 지난해 65%의 점유율로 여전히 높은 점유율을 보였다. 이 회사는 APM 시장조사를 시작한 2009년이래 APM 시장에서 선두를 유지해왔다.견실한 성장의 이유는, 애플리케이션 성능 장애의 원인을 빠르게 분석해서 애플리케이션 서비스의 안정화를 이룬다는 WAS APM의 근본적인 역할에 대한 수요가 꾸준하기 때문이다. 또한 경쟁업체들이 꾸준히 등장했지만, WAS 모니터링 영역에 대한 기술 투자를 기반으로 대용량 데이터를 원활히 모니터링하는 등 기술 우위를 기반으로 시장에서의 입지를 놓지 않았기 때문이다.제니퍼소프트는 다양한 제품으로 라인업을 늘리기보다는 지속해서 성장할 분야에 대한 연구개발을 통해 제품의 경쟁력을 갖추어 왔다.또한, 제니퍼는 완성도 높은 제품력과 시장 지배력을 인정받아 가트너의 ‘매직 쿼드런트’에 2016년 첫 등장했다. 제니퍼소프트는 올해 매직 쿼드런트에서 ‘틈새업체’로 선정되면서, 글로벌 APM 업체들과 어깨를 나란히 하게 됐다.  보고서 관련 문의는 제니퍼소프트 김윤희 차장 ( [email protected])을 컨택하여 주세요. 제니퍼 고객의 경우,  확인 후 보고서를 보내드립니다.   보고서 기사 전문=> http://www.dailygrid.net/news/articleView.html?idxno=53093지난해 제니퍼소프트가 APM 시장서 점유율 1위로 시장을 선도했다. 또한 침체기를 맞았던 EUE(엔드유저경험) 시장이 지난해 도약했다.  데일리그리드(DailyGrid)의 리서치센터가 2017년 3월 5일부터 4월 10일까지 기업 및 공공기관을 대상으로 방문, 전화, 설문 등을 통해 APM 시장 조사를 실시했다.  조사결과 WAS 모니터링, EUM 매출을 모두 포함한 2016년 전체 APM 시장은 272억원으로, 2015년 총매출인 256억원 대비 6.2% 증가했다. 지난해 매출이 증가하면서 2014년 매출에 근접하는 모습을 보였다.  2016년 WAS 모니터링 제품에 대한 신규 라이선스 총 매출액은 엔드유저(최종구매고객) 기준으로 190.8억원이었다. 이는 2015년 매출 202.5억원 대비 6.1%. 감소한 수치로 시장이 축소됐는데. 경기 하락에 따라 기업들이 IT투자에 소극적이었기 때문에 시장이 성장하지 못한 것으로 분석된다.WAS APM 분야에서 제니퍼소프트의 매출은 전체시장 매출의 64%를 차지하며 시장을 리드했다. 기업들은 원활한 애플리케이션 운용을 위해 WAS 모니터링은 핵심적인 역할을 하고 있다. 이 때문에 선두 업체인 제니퍼소프트의 매출과 시장에서의 입지는 매우 견고한 것으로 볼 수 있다. 또한 경쟁업체들이 꾸준히 등장했지만, WAS 모니터링 영역에 대한 기술 투자를 기반으로 대용량 데이터를 원활히 모니터링하는 등 기술 우위를 기반으로 시장에서의 입지를 놓지 않았기 때문이다.반면 BTM 시장을 포함한 EUM 시장은 부진을 털어냈다. 2016년 EUM 시장은, 제품의 신규 라이선스 기준으로 86.4억원으로 2015년 53.5억원 대비 61% 성장했다. 보고서 관련 구매 문의=>  데일리그리드 기사링크 
조회수 803

스타트업을 위한 AARRR(해적지표) 개념잡기

AARRR, 스타트업에 종사하거나 그로스 해킹에 관심 있으신 분이라면 한 번쯤은 들어본 용어일 것입니다.  그런데 이걸 뭐라 읽어야 할지, 정확히 무슨  용어인지 궁금해 하시는 분들이 계실 것 같아서 AARRR(해적지표)에 대해서 함께 살펴보는 시간을 마련 하였습니다.1. ‘AARRR’이란?이 용어는 미국의 스타트업 엑셀러레이터인 500 Startups의 설립자인 데이브 맥클루어(Dave McClure)가 개발한 분석 프레임워크입니다. 스타트업은 아이디어를 바탕으로 서비스(상품)를 만드는 데 능숙하지만, 서비스를 효과적으로 사람들에게 알리고 사용자를 꾸준히 확보하기 위한 개선방법에 대해서는 고민이 많습니다. AARRR은 시장 진입 단계에 맞는 특정 지표를 기준으로 우리 서비스의 상태를 가늠할 수 있는 효율적인 기준이 됩니다. 수많은 데이터 중 현 시점에서 가장 핵심적인 지표에 집중할 수 있게 함으로써, 분석할 리소스(인력이나 시간)가 충분하지 않은 스타트업에게 매력적인 프레임워크라고 할 수 있습니다.2. AARRR 단계별 핵심 지표Acquisition : 어떻게 우리 서비스를 접하고 있는가Activation : 사용자가 처음 서비스를 이용할 때 긍정적인 경험을 제공하는가Retention : 이후의 서비스 재사용률은 어떻게 되는가Referral : 사용자가 자발적 바이럴, 공유를 일으키고 있는가Revenue : 최종 목적(매출)으로 연결되고 있는가약어를 살펴보면 사용자가 서비스를 접하고 우리가 원하는 매출을 일으키기까지의 전체적인 과정을 크게 5단계로 분석한다고 볼 수 있는데요, 그럼 각 단계별로 실제 어떤 지표를 살펴봐야 하는지 보겠습니다. Acquisition → DAU, MAU, New UserAcquisition은 사용자를 획득하는 단계로, 서비스 안정화를 거친 후 시장 진입을 위해 공격적인 마케팅을 할 때 집중하는 지표입니다. 여러 채널을 통해 얼마나 많은 사용자가 유입되고 있는지, 신규 사용자는 얼마나 획득했는지 등을 파악합니다. 적은 비용으로 높은 볼륨을 일으키는 채널이 좋은 채널이라 할 수 있습니다.Activation → Bounce Rate, Avg.PV, Avg.Duration, Signup사용자가 서비스를 이용하기도 전에 이탈하는 비율은 얼마나 되는지, 서비스 이용을 시작했다면 이후의 engagement는 어떻게 되는지 등을 파악합니다. Bounce Rate(반송률)는 첫 페이지에서 서비스를 종료한 비율로, 부정적 사용자 경험을 나타내는 지표입니다.Retention → Retention Rate사업 초기 단계에서 가장 중요한 지표 중 하나가 바로 Retention입니다. Retention Rate은 서비스의 만족도를 가장 잘 대변하는 지표로, 서비스 만족도가 높다면 꾸준한 사용으로 높은 재사용률을 나타낼 것입니다. 반대로 재방문율이 낮으면 해당 서비스는 오랫동안 존속하기 힘듭니다. 이럴 경우 낮은 Retention을 끌어올리기 위한 푸시, 메일링, 리뉴얼 등의 다양한 노력이 필요합니다.Referral → Channel, SNS Share Rate최근 신규 앱을 받아 설치한 경험이 있으신가요? 설치하는 데 영향을 끼친 것은 무엇이었나요? 아마 지인의 추천을 통해 설치하는 경우가 다수일 것입니다. 이미 사용자 디바이스에 설치된 앱은 포화상태이기 때문에, 지인의 추천이 아니면 새로운 앱을 설치할 이유도, 목적도 쉽게 제시하지 못하는 상황입니다. 그렇기 때문에 서비스가 안정화되고 성장하는 단계에서 중요한 데이터가 바로 Referral입니다. 우리 서비스가 어디에 얼마나 공유되고 있으며, 그 채널로 인해 얼만큼의 사용자를 다시 확보하는지 등을 살펴봐야 합니다. 결국 Referral 단계는 Acquisition과 맞물려 선순환을 만들게 됩니다.Revenue → Conversion서비스가 존속하기 위해서는 분명한 수익모델이 있어야 합니다. 이를 판단하는 지표는 서비스마다 다르겠지만, 서비스를 이용하는 사용자의 Conversion Rate를 높이는 것이 목표인 것은 동일할 것입니다.*각 지표 별 자세한 분석 방법과 예시가 궁금하다면 아래 내용을 참조해주세요.모바일 데이터 분석의 시작: AARRR (해적지표)결론AARRR은 허무 지표(Vanity Metrics, 총 방문수 등)에 시간을 쏟기 보단 실행 지표(Actionable Metrics)에 집중함으로 개선의 방향을 잡고 최적화할 수 있도록 돕는 분석 프레임워크라고 볼 수 있습니다. AARRR과 같이 Actionable한 데이터를 제공하는 와이즈트래커를 통해 보다 많은 기업이 통찰력 있는 데이터 기반의 실행으로 높은 퍼포먼스를 내길 기대합니다.(Dave McClure의 AARRR 문서 보기 : http://www.slideshare.net/dmc500hats/startup-metrics-for-pirates-long-version) 
조회수 774

최고급 인재채용은 업무 몰입의 환경을 제공하는지 여부다

어떤 기업을 바라보고, 어떤 선택을 해야할까기업의 비전은 무엇이며, 인재들에게 요구하는 역량은 무엇일까?빠르고 안정적인 성장을 추구하는 기업이라면 AAA급 인재의 합류는 필수불가결최고급 인재들이 과연 워라벨에 흥미를 느낄까?최고급 인재들은 그럼 일만 주구장창하려고 할까?인재(사람)에 대한 연구는 끝이 없어야 한다.하지만 확실한 것은 최고급 인재들은 업무와 프로젝트, 회사의 비전을 보고 움직일 것이다."회사가 완벽한 업무몰입을 위한 완벽한 밸런스를 맞춰줘야 한다"는 것도 진리다.아래는 블랭크코퍼레이션의 기업문화를 소개하는, 다양한 인재들에게 건네는 편지글이다.  블랭크코퍼레이션 로고 디자인우리는 '융합'에 주목합니다.이것과 저것, 기존에 있던 것과 없던 것 등등을 융합해 더 큰 가치 만들기를 좋아합니다.   현재 우리가 진행하는 비즈니스는 ‘커머스’와 ‘콘텐츠’의 융합입니다.  ‘디지털’이라는 키워드만으로는 설명이 부족할 만큼 고도화된 사회를 살아가고 있습니다.  여기서 얻은 비즈니스적 단서는, “모바일로 영상을 쉽게, 완벽하게 보는 시대가 도래했다”는 것입니다. 영상을 쉽게 볼 수 있는 플랫폼이 늘어났고, 덩달아 다양한 제작자들이 모습을 드러내는   그러한 영상 콘텐츠의 부흥기가 왔습니다.  이에 우리는 “모두가 아끼고 즐기고 모이는 채널에 우리의 콘텐츠를 싣자”  그리고 “우리의 콘텐츠로 참신하고 이로운 경험을 선사하자”고 마음 먹었습니다.  참신하고 이로운 경험은 그럼 무엇일까? 고민했고,  사람과 라이프스타일을 연구하면서 한 가지 사실을 얻었습니다.  "사람은 삶을 살아가면서 계속해서 문제를 만들어내고, 또 계속 해결해 나간다”는 것이었습니다.  여기서의 ‘문제’는 ‘빈 곳(blank, 맹점)’입니다.  일상에서 쉽게 지나치거나 너무나 당연해서 인지하지 못하는 부분들이죠.  "우리는 그러한 빈 곳을 채워주자"  이에, 솔루션을 제공하자는 모토를 창출하게 됐습니다.  Lifestyle needs solution우리는 우리의 옷을 깨끗하게 빨아주는 세탁기, 그 자체는 깨끗할지 궁금했습니다.  분석에 들어갔고, 과연 세탁조의 오염도와 위생상태는 심각했습니다.  우리는 세탁기의 통(세탁조)을 간편하게 씻어내는 ‘세탁조크리너’를 세상에 공개했습니다.  노후화된 수도관에서 발생하는 수질 오염물질은 ‘샤워기 필터’로 걸렀습니다.  야식을 마음 편히 즐기는 동시에 소소한 식습관을 익힐 수 있게끔 ‘곤약 간편식’도 만들었습니다.  이렇게 삶의 빈 곳을 메우는 기특한 브랜드가 20개, 제품 가짓수는 약 200여 개에 달합니다.  아직 탐구하지 못한 영역이 많은 만큼, 브랜드와 제품, 솔루션은 계속 늘어날 전망입니다.  또, 좋은 솔루션은 더 넓은 세상으로 들고 나갈 생각도 하고 있습니다.  솔루션을 제공하는 상품을 기획하고, 이를 콘텐츠와 융합하기 위해  우리는 정말 빡세게 ‘사고(Thinking)’ 합니다.  상품기획부터 콘텐츠제작, 촬영, 마케팅, 유통, 생산, 물류, 혁신, 수학, 과학, 철학까지,  논리적으로 사고하기 위해 온 힘을 다합니다. 치열하게 싸웁니다.  우리는 가설검증을 사랑합니다.  적당한 것을 취하고 유지하지 않습니다. 효율을 높이기 위한 방법을 계속 고민합니다.한 번도 가지 않았던 길을 찾아보고 실험하고 끝내 성취감을 맛봅니다.블랭크코퍼레이션 전체회의, 매주 월요일 오후 5시(프로 전원 참석)더 치열하게 빡세게 사고하라고, 밥, 집, 임신, 출산, 육아 등 모든 '걱정거리'는 블랭크가 해결합니다.  더 속도 높여 사고하고 결정할 수 있도록 사내에서 모두 ‘세그웨이’를 타고 날아다닙니다.  간식 사러 나가는 시간이 아까우니, 그냥 '편의점'도 회사 한 켠에 사 놓았습니다.  주어진 시간에만 빡세게 일하라고 ‘정시퇴근’을 철저한 원칙으로 합니다  시간을 쪼개어, 업무에 더 유용하게 사용하라고 ‘반반차’ 휴가도 제공합니다.  심지어 종잣돈 걱정, 리프레시, 여행 걱정까지 블랭크가 책임집니다.  진짜 마음 놓고 일에 몰입하도록 말입니다.  블랭코퍼레이션 사내 마켓현재의 사업인 제1단계 ‘콘텐츠+커머스’의 융합을 함께 경험하며 가시적인 성과를 내고 싶은 분.  논리 있고 빠른 사고와 화끈한 결정으로, 자유의 고통을 느끼고 싶은 분.  그리고 제2단계, 제3단계를 함께 찾아, 뚫고, 오르고 싶은 분.  블랭크는 언제나 환영합니다.Jason KH커뮤니케이션    기획자

기업문화 엿볼 때, 더팀스

로그인

/