20141104 Tech planet 참관후기

  • 행사명: Tech palent 2014
  • 진행일시: 2014/11/03 09:30
  • 진행장소: 삼성동 Coex 그랜드볼룸
  • 발표주제: UI/UX, Big data, Front-end, Emerging Tech
  • 발표내용 기록 파일@Dropbox





Tech planet은 SK planet에서 주관하여 열리는 IT기술 컨퍼런스로서 올해, ‘Technologies Changing the World’라는 슬로건 아래 올해는 commerce와 platform 기술에 대해 진행되었다.
작년에 참관하면서 만족스러웠기에 이번에 구성된 프로그램들도 괜찮다 싶은 마음에 냅다 신청했다. 꾸준하게 ‘빅데이터’에 대한 화두를 가지고서 발표를 진행하고 있다. 작년에는 하둡의 설치와 운영관련한 내용이 주였다면, 올해는 ‘빅데이터’에서 유의미한 가치있는 데이터(Valuable Data)를 찾아내어 분석하고 그에 따라 의사결정을 하면서 얻은 효과와 관련된 이야기들을 들을 수 있을 것이란 기대를 가지게 되었다. 사물인터넷(IoT)이 사업성을 가지고 있는 분야로 떠오르고 있다고 봐도 되겠다. 내년이면 비컨Beacon을 기반으로 한 다양한 서비스들이 쏟아져나올 것으로 기대된다.

위치정보와 비컨이 합쳐져서 보다 정확하게 고객을 대상으로 하는 마케팅이 가능해진다는 것이 ‘빅데이터+사물인터넷’을 바라보는 기업의 관점일 것이다.


1. 오픈소스 기반 BigData Platform SW개발과 하둡관련 기술적 이슈

  • 발표자 김병곤




클라우다인은 국내에서 몇되지 않는 하둡개발 전문기업이다. 이 기업은 현재Flamingo(http://www.opencloudengine.org/product_Flamingo.html) 라고 하는 하둡을 웹UI를 통해서 손쉽게 구성할 수 있는 기술을 오픈소스로 개발하고 있다. 하둡 1.0 떄부터 지금까지 지속적으로 개발하면서 국내의 크고작은 빅데이터 관련 프로젝트를 진행해온 경험을 공유하는 자리였다.

하둡을 기반으로 한 빅데이터 플랫폼 구축을 하는 과정에서,

  • 생산성 향상을 위한 분석도구 필요
  • 하둡 인프라를 지원하는 플랫폼 SW 필요
  • 오픈소스 라이센스 적용
  • 웹 기반 분석 환경 제공 필요

라고 하는 필요에 따라 플라밍고 프로젝트를 진행하고 있다(빅데이터 플랫폼에 대한 구축사례를 얻기 위한 포석으로도 볼 수 있다).

빅데이터는 다양한 센서(사물인터넷(IoT, Internet of Things)의 근간이며, 이 사물인터넷을 통해 쏟아지는 데이터를 수집하는 것은 빅데이터를 위한 밑작업이라고 할 수 있다)를 통해서 수집되는 매우 많은 양의 데이터를 분석하는 전체 시스템을 ‘Smart Factory’를 통해 설명하고 있다.

생산 공정을 시작하기 위해서는 작업지시서와 작업지시서에 따른 생산설비의 설정이 필요하며 생산시작, 검수, 최종 제품에 이르기까지 다양한 과정이 필요합니다.

  • 제품생산 속도와 과정을 입력해도 만들어지는 과정에서 오류들이 발생한다.
  • 제품을 생산하는 과정에 대한 다양한 센서를 장착하여 생산과정에서 생기는 데이터를 모아서 분석하는 것을 목표로 한다.
    • 불량품을 감소시킬 수 있는 방법을 고민하게 된다.
    • 국내에서는 그래프 등을 이용해서 시각화하는 것도 버거운 상황이다.
  • 생산설비에 설치되어 있는 센서에서 나오는 데이터는 초단위로 생성되며 센서는 시계열로 생성되어 피보팅이라는 장시간의 처리 절차를 동반한다.
    • 수집되는 데이터의 크기가 매우 커지게 된다.

생산공정에서 발생하는 다양한 센서 데이터와 작업 공정에서 나오는 다양한 데이터를 기반으로 품질에 영향을 주는 파라미터와 예지보전을 빅데이터로 구현하고자 한다.

  • 데이터의 이상 변화를 인식하기 위해
  • 품질에 영향을 주는 요소를 판단하기 위해
  • 짧은 시간에 이루어지는 작업의 데이터 수집을 위해
  • 품질 문제의 조기 탐지를 위한 -> 품질 문제를 야기하는 요소를 사전에 정의하고 Rule을 적용
    • 중소기업은 어렵다. 센서 고장을 일으킬 때 어떻게 무엇을 수집할 지 알 수가 없다.

다양하게 수집한 센서 데이터를 생산공정에서 품질과 연계하기 위해서는 시각화하는 작업이 필요하며 이에 특화된 처리 방법이 필요하다. 이 처리방법이 빅데이터에 관한 수요라고 할 수 있다.

빅데이터 하둡의 에코시스템이 빠르게 변화하고 있기 때문에 이에 대해서 촉각을 세우고 민감하게 대처할 준비를 해야한다.


2. Cloud-based Deep learning for Enterprise: Turning Bing Data into Value

  • 발표자: Adam Gibson/Founder, Skymind





딥 러닝(Deep learning)은 여러 비선형 변환기법의 조합을 통해 높은 수준의 추상화(abstractions, 다량의 데이터나 복잡한 자료들 속에서 핵심적인 내용 또는 기능을 요약하는 작업)를 시도하는 기계학습(machine learning) 알고리즘의 집합으로 정의 되며, 큰틀에서 사람의 사고방식을 컴퓨터에게 가르치는 기계학습의 한 분야라고 이야기 할 수 있다.

http://ko.wikipedia.org/wiki/딥_러닝

기계가 패턴을 인식하도록 트레이닝을 하기 위해서는 많은 노력을 필요로 한다. 이를 위해서는 빅데이터가 필요하고, 이 빅데이터를 클라우드를 기반으로 하여 구축하므로써 많은 이득을 얻게 되었다. 과거의 머신러닝(Machine Running, 기계학습)과는 다른 모습을 가지게 되었다. 훨씬 더 많은 데이터를 기반으로 해서 효율성을 높이게 되었다.

결국, 딥러닝은 기업 자신이 원하는 데이터 분석을 위해서 패턴을 빠르게 분류할 수 있는 기계를 개발하는 것이라 볼 수 있다. 그 예로, 텍스트 분석, 이미지 분석, VoC(음성분석) 등 비정형 데이터에서 기계가 인식할 수 있는 패턴을 추출하여 기계가, 사람이 패턴을 통해서 인식하는 과정과, 유사하게 행동할 수 있도록 하는 것이다.


3. Scaling Foursquare

  • 발표자: Jon Hoffman



포스퀘어Foursquare는 사용자의 위치정보를 기반으로 하는 추천시스템이다.

처음에는 PHP와 PostgreSQL을 이용하여 서비스를 개발하였다. 점점 사용자가 증가하면서 대용량 데이터베이스를 구매하고 Memcached를 사용하고 데이터베이스를 두개로 분리하고 이 데이터를 분산저장하는 슬레이브를 두어 읽기를 처리하였다.
그러다가 2010년 폭발적인 발전을 하면서 매일 수천만건의 데이터가 오가면서 기존의 소프트웨어 아키텍처로는 이를 수용하기 어려운 부담을 느끼기 시작했다. 이에 따라서 Sharding을 수행하고 하둡의 HDFS 를 기반으로한 HFile과 캐시 서비스를 구현하게 되었다.

최초의 애플리케이션의 복잡성을 해소하기 위해 기존의 PHP 코드(다양한 계층의 기능이 복잡하게 얽혀있는)를 걷어내기 위해 Scala를 도입하였지만, 스칼라의 생산성이 떨어지는 문제가 있었다. 이를 해결하기 위해서 기술적인 도입을 시도하게 된다. 주키퍼 등을 도입하여 이를 해결하고 있다.

안드로이드, iOS 개발자가 자신들이 필요한 API를 개발할 수 있도록 EndPoint 개발을 위한 Remote EndPoint 기능을 제공하고 있다. 클라이언트 개발자들이 자신들에게 필요한 API를 추가하면서 기존 API에서 작은 단위로 분리된 API 들을 얻게 되었다.

현재 포스퀘어는 GPS를 이용한 위치정보의 한계(10미터 오차범위, 그 안에 밀집한 상점들이 있을 경우 정확한 정보제공의 어려움)이 있기에 사물인터넷을 활용할 수 있는 방법을 모색하고 있다. 필요한 기능이 있으면 직접 개발하여 활용하는 방식을 사용하고 있다.


4. SK Planet Big Data Infra 구축회고

  • 발표자: 송재하(그룹장/SK Planet)





다양한 서비스의 사용자들이 생산하는 로그 데이터를 수집하여 사용자들이 어떻게 움직이는지를 파악하여 실세계까지 연장하여 빅데이터를 통해서 세상을 엿보려고 한다. 빅데이터를 다루게 되었을 때 얻게될 것으로 예상한 것과 현실은 많은 차이가 있었다. 각종 법규에 의한 제약이 이런 차이를 더욱 심화시키는 것으로 보인다.

빅데이터를 위해서 수집된 개인정보도 결국은 분석과정에서 개인의 식별성이 사라지게 되기에 개인정보로서의 가치를 잃게된다고 생각하는데 여전히 빅데이터를 구축하는 시스템에 깊숙한 곳까지 영향을 끼치고 있는 것을 보면서 국내에서는 빅데이터 활성화를 막는 주요 요인이라고 본다.

신선한 데이터Fresh data라는 표현을 계속 사용했지만 데이터의 성격을 표현하기에는 적합하지는 않은 듯 하다.

로그를 수집하기 위해, 목적에 부합하는 데이터를 생산하기 위한 노력이 필요하다. 가치있는 데이터를 만들기 위해서는 그 원천이 되는 로그설계부터 차근차근 단계를 짚어가야 한다. 로그 수집을 위해서 Apache Kafka(http://kafka.apache.org)를 이용하고 있다.


5. Data-Driven Product Development at Etsy






엣지의 개발문화: 엣지에 처음 들어오는 사람은 누구든지(디자이너건 기획자이건 관리자이건) 깃헙에 저장된 사이트의 about 관련한 부분에서 자신을 소개하는 부분의 소스를 변경하고 커밋해야 한다.

언뜻보면 일반적인 쇼핑몰같지만, 그 안에는 매우 많은 변화가 일어나고 있는 개발문화가 생동하는 서비스였다.
지속적인 출시Continious Delivery, 엣지는 그렇게 자신들의 개발문화를 소개했다. 한달에도 4~60개의 기능이 개발되어 반영되면서 지속적인 변화가 일어나고 있다. 그 변화는 고객을 대상으로, 판매자를 대상으로 일어나고 있다.

엣지에서는 단일소스 저장소를 운영하면서 빌드, 테스트를 자동화하고 있다.

왜, 엣지에서는 지속적인 출시를 하고 있는가?

  • 빠르게 움직이고
  • 빠르게 실패하고
  • 보다 강한 힘을 얻게 되고
  • 자신감을 강화시킨다.

지속적인 출시를 하는 과정에서 몇가지 예시를 든다.

  • 빈티지 아이템들을 다루게되는데 장바구니에 넣어둔 제품이 매진되었을 때
    1. 더이상 유효한 제품이 아니다.
    2. 더이상 유효한 제품이 아니다. -> 유사한 아이템을 추천한다.
      • 10시에 이 생각이 났을 떄(template.tpl -> config.php(on/off에 대한 기능정의))
      • 배포Deploy를 진행하게된다. 간단한 방법으로 빠르게…
      • 개발진에서 개발.
      • Deployinator를 통해서 Deploy logs를 확인한다.

잦은 배포를 통해서 실행결과에 대한 빠른 피드백을 얻고 그것을 통해 개선해가는 과정을 반복하면서 최종적으로 더 나은 결과에 도달하는 것을 목표로 하고 있다.

빅데이터: 분석결과->실행결과->피드백->분석->분석결과->실행결과

변화를 이끌기 위해서, 변경사항을 일부에게 반영하고 이에 대해서 결과를 예측하고 반영 후 결과데이터를 수집하여 최종결정을 내리게 되는 것이다.

빅데이터는 결국, 의사결정을 위한 정보를 제공하는 것을 목적으로 한다. 이 빅데이터 사용목적에 부합하도록 노력해야한다.

엣지에서는,

문제 인식 -> 해결방안 모색 -> 실행 -> 실행결과데이터 수집 -> 분석 -> 결정

을 하는 과정을 짧고 빠르게 적용하여 실험하고 결정하는 흐름을 유지하고 있다. 이 과정에서 데이터를 이용해서 사용자들이 무엇을 원하는지를 파악하여 다양한 프로젝트에 반영하고 있다.
정리하자면, 신뢰할 수 있는 소프트웨어를 지속적으로 출시하면서 사용자가 좀 더 편하게(구매를 위한 결정을 내리기 쉽도록) 할 수 있는 기능을 제공하고 그들에게서 빠르게 피드백을 받아 소프트웨어를 개선하면서 보다 나은 것을 만드는 효과를 누리고 있다.

  • 빨리 자주 변경하고 검증하라.
  • 생각은 데이터를 통해서 검증하라.
  • 좋은 도구를 이용해서 많은 시간을 절약할 수 있고 보다 창의적으로 활용할 수 있다.
  • 이미 존재하고 있는 업무흐름을 활용하라.
  • 최적화보다 실험을 통해서 크고작은 변화를 시도하면서 보다 나은 개선을 할 수 있다.

  • Q: 잦은 변화가 소비자에게 부담을 주지는 않을까?

    A: 균형의 문제다. 일반적으로 소비자는 우리 사이트를 자주 접속하지 않는다. 그런 소비자가 낯설어할 만큼 큰 변화를 선호하지 않는다. 판매자는 변화에 대해서 체감하면서 부담을 느낄 수도 있다. 우리는 판매자의 그런 부담을 줄이기 위해서 변화를 주기 전에 판매자들과 많은 의견교환을 하면서 보다 나은 방법을 모색하기 위해 노력하고 이를 반영하고 있다.

  • Q: 빠르게 실패를 파악하는 반복과정을 어떻게 실행하는지 궁금하다. 변화의 크기와 최종 사용자에 대한 영향도를 파악할 수 있는가?

    A: 표본크기의 계산과 관련이 있다. 변경의 크기에 따라서 얼마나 많은 사용자의 영향도를 계산하게 된다. 신뢰가능한 최소한의 크기를 가지는 표본을 결정하게 된다. 마구잡이로 변화를 하는 것이 아니라, 일정과 실험가능한 구역을 고려하고 실험을 하게 된다. 계획을 세우는 데 있어서 전략적으로 접근하려고 한다. 다양한 범위의 사람들이 모여서 함께 전략을 수립한다.


6. Influencing Product Decisions with Analytics

  • 발표자: Mario Vinasco / Data Scientist and Marketing Analyst, Facebook




페이스북은 알다시피 수십억명의 사용자를 가지고 있는 서비스다. 이 사용자를 대상으로 한 마케팅 분석을 시작한지는 얼마되지 않았다.

  • In Marketing Analytics, typically we
    • A/B Test, Synthetic A/B Test, Pre and Post test

의 기법을 활용하는데, 특정 서비스나 기능을 개발하여 출시할 때.
그 서비스의 출시 전과 후의 데이터를 분석하여 사용자들의 만족도와 사용패턴을 분석하고 있다.

최근에 선보였던 Facebook LookBack 의 사용자 데이터를 분석하였다. 이때에는 500K(50만) 사용자의 데이터를 분석하였다. 단순히 해당 사용자를 대상으로 한것이 아니라 그 사용자와 연관된 친구들 정보까지 함께 분석하는 작업을 진행하였다. 워낙 많은 사용자가 있기 때문에 전체를 대상으로 하기보다는 특정표본집단을 추출하여 그 집단의 데이터를 통해서 사용자분석을 시도할 수밖에 없다.

이런 분석기법은 페이스북 개발자들을 위한 통근버스 운영에도 사용되었다. 직원의 지역분포, 출근에 걸리는 시간 등을 분석하여 적절하게 버스를 운영하는데 데이터를 수집하고 분석하고 그래프를 통해서 가시화하여 그에 적합한 형태루 운영할 수 있도록 했다.

페이스북에서는 우선순위에 따라서 다른 성능을 가지는 파이프라인을 사용할 수 있다고 한다. 이는 데이터의 중요도와 긴급도에 따라서 데이터 처리를 선별하기 위한 것이다.


● 정리

지난 주 ‘중소기업청’에서 운영하는 ‘Hadoop을 기반으로 한 빅데이터 핵심전문가 양성’ 과정을 들으면서, 그동안 무관심했던 ‘빅데이터’에 대해서 관심이 일었다. Hadoop이 출현하고 빅데이터에 대한 관심이 일어난지 상당한 시간이 흘렀음에도 국내에서는 빅데이터 영역의 활동이 미비한 것이 사실이다.

‘빅데이터 빅데이터 하니까 빅데이터를 가지고 뭔가 하고 싶은데, 빅데이터를 분석하기 위해 필요한 데이터가 없었다.’ 랄까?

기업들은 이제 빅데이터를 통해서 많은 이득(== 돈)을 얻을 수 있다는 것을 깨달았고 이를 얻기 위한 채비를 하고 있다. 빅데이터를 분석하여 데이터를 기반으로 한 빠른 의사결정을 하여 기업이 잘못된 결정을 내렸을 때 발생하는 손실을 감소시키려는 노력을 하기 시작한 것이다. 따져보면 저렴한 비용(빅데이터 분석을 위한 인프라를 구축하는 비용은 적지 않으나, 이를 통해서 얻을 수 있는 이익이 훨씬 크고 장기적이라는 판단이 선다면)으로 적확한 의사결정을 내릴 수 있게 되는 것이다.
빅데이터는 ‘의사결정의 방향을 제시하고(Directing Decision), 의사결정을 지원하고(Supporting Decision), 의사결정을 이끌어낼 수 있다(Making Decision).’고 한다.

이제는 빅데이터인프라를 구축하는 단계에서 나아가 빅데이터를 가지고 유의미한 가치있는 정보를 추출하기 위한 개발/분석 단계로 들어서고 있다고 봐야한다. 많은 기업이 자신들에게 필요한 빅데이터 정보를 가지기 위한 준비를 시작하거나 이미 마친 상태에 있을 것이다.

'logbook' 카테고리의 다른 글

Adieu 2014, 봄싹, 마지막 컨퍼런스.  (0) 2014.12.01
VirtualBox "No adapter name under Host-Only Adapter"  (0) 2014.11.05
Deview 2014 관람기  (0) 2014.10.01
마우스를 두개샀다.  (0) 2014.09.25
I'm back!  (0) 2014.09.25

8번째 DEVIEW라고 했던가? DEVIEW는 워낙 인기가 좋은 컨퍼런스다보니 늘 참가신청 하기가 쉽지 않았다. 올해에도 참가신청을 하는데 1차에는 1분, 2차에는 50초(다행히 2차에서 참가신청을 할 수 있었다)만에 참가신청이 완료되는 진기록을 세웠다. 모두들 어떻게 그리 재빠르게 신청을 하는지 놀랍기 그지없다. ㅎㅎ

지금 회사에 입사한지 이틀만에 컨퍼런스에 참가한다고 하는 것이 약간 눈치가 보이기는 했지만, 어쨌든~ 입사하기 전에 신청한 컨퍼런스이고 한번은 가봐야겠다는 생각을 가지고 있었기에 비오는 날에 롯데호텔로 향했다. 교복을 입은 학생들도 꽤 많았는데, DEVIEW에 대한 높은 관심을 옅볼 수 있었다.


● Keynote


현재 하드웨어는 성능적인 한계에 도달하였다. CPU의 클럭속도는 당분간 상승할 수 없는 상황(트랜지스터의 집적률이 높아지면서 그로 인해 많은 전력을 필요로 하고 높은 열이 발생하는 벽에 부딪쳤다)에 도달하면서 멀티코어 아키텍처쪽으로 방향을 잡았다. 과거 싱글코어에 익숙한 프로그래밍을 하던 개발자들은 이 멀티코어를 활용하여 성능을 향상시킬 수 있는 프로그래밍을 할 수 있는 능력을 키워야 한다. 개발자는 이제 하드웨어에 대해서도 이해해야 한다.


신개념 N스크린 웹앱 프레임워크 ‘PARS’

  • 발표자: 이동영 LG전자

    신개념 멀티스크린 웹 아키텍처의 발전방향

LG전자에서 연구중인 N스크린 웹앱 프레임워크 ‘PARS’에 대한 발표였다.
node.js를 기반으로 하여 다양한 기기의 화면을 브라우저 상에서 제어할 수 있는 웹앱 프레임워크.
아직은 연구단계이기 때문에 진행상황을 지켜보기 바람.


네이버 모바일 홈을 움직이는 반응형 무한스크롤의 비밀

  • 발표자: 손찬욱 Naver

  • Why Cards are the Future of the Web
    카드는 다양한 화면 디자인에 대해 유연성Scalability이 높다.
    네이버도 일부분 카드UI 사용: 사용자 최적화된 그리드 레이아웃 + 무한스크롤

  • 교훈

    모든 사람들은 비슷한 고민을 한다. 하지만, 모든 사람들이 똑같은 고민을 하지 않는다.
    다른 사람이 한 삽질이 있고, 본인이 해야할 삽질이 있다.

  • 그리드 레이아웃 처리방식에 대한 고민

  • 무한 스크롤 처리에 대한 고민
  • 사용한 방법에서 발생되는 문제들

소프트웨어개발 방법론을 건축가에게만 배워야 하는가?

  • 발표자: 신현묵 스윗트래커


  • TO-BE 모델이 확실한 건축가보다, 경험을 기반으로 기록(증거)를 남기며 전문적인 기술을 관리하는 의사들에게서 배우는 것이 개발자들에게 더욱 적합하다는 생각을 전달함.

  • 과거에 이발사는 의사(외과의)의 역할을 수행해왔다. 그 이발사는 현재에 이르며 이발사/의사로 분리되었다. 의사들은 오래전부터 쌓아온 자신들의 경험(치명적인 실수 포함)을 기록으로 관리하며 학문으로 발전시키고 학회를 통해 공유하며 자신들의 경험을 수많은 실험을 통해서 체계화하여왔다.

  • 의사들이 일하는 방식 -> 배워야할 것

    • 문제를 인식하는 방법
    • 문제를 지식화하는 방법
    • 문제를 전파하는 방법
    • 문제를 끊임없이 연구하는 자세
    • 애자일 선언
    • 무엇을 진행했고, 어떤 것을 얻었으며, 어떤 것을 실패하였는가?
      • 기록하고 관리하고, 연구하고, 대비한다.
      • 잦은 실수가 발생하는 것을 어떻게 관리하는 지가 중요하다. 이것이 회사의 역량차이가 될 수 있다.
  • 근거중심의 소프트웨어 개발방법론

    1. 문제점으로부터 명료한 질문을 파악
    2. 이에 상응하는 과거의 아키텍처와 패턴 탐색
    3. 해당 내용에 타당도와 유용성에 대한 비여적 평가수행
    4. 실무에서 찾아진 유용한 내용을 적용
  • 의료에서 배워야할 4가지

    1. 요구사항과 환자에 대한 진단이 명확해야 한다.
    2. 그리고, 세심하게 관리해야 한다.
    3. 책임을 누군가가 가지고 주도해야 한다.
    4. 당연 비용을 관리해야 한다.
    • 그리고 기록해야 한다.
  • 코드

    • 정량적인 검토는 자동화, 정성적인 검토는 기준을 명확하게 하라.
    • 자기만의 표기법을 만들고, 타인의 ‘표식’과 호흡하다.

대화하라. 애자일을 실천하라.



GitHub’s First Principles


  • 소프트웨어가 세상을 변화시켰다. software is changed the world

  • 소프트웨어는 세상을 변화시키고 있다. software is changing the world
  • 콘웨이법칙

    하나의 시스템을 설계하는 집단은, 그 집단의 의사소통 구조와 유사한 시스템을 설계한다.

◎ Traits

  • Do real work and Ship it!: 최선을 다해서 작업하고 곧바로 배송하라.
  • Automate all the things: 모든 것을 자동화하기: hubot
  • Always be classy: 항상 세련되기
    • 항상 기술을 연마하는 것을 게을리하지 않는 것이 중요하다.
  • Create a better future: 더 나은 미래를 만들기
  • Love your work: 자신의 일을 사랑하기
  • Never work just for Money: 결코 돈만을 위해 일하지 않기
    • 그렇지만~ 이왕이면 좀 더 많이 벌 수 있으면 좋지.
  • Optimize for happiness: 행복을 위해 최적화하기
    • 개발자의 행복은 뭘까나?
    • autonomy 자율성
    • mastery 숙달
    • purpose 목적
  • No Set work hours: 고정된 근무시간 없애기
  • No meeting: 회의 없애기
  • No deadlines: 마감시간 없애기
    • 마감시간이 개발자에게 주는 정신적 압박감은 매우 크지.
  • Take vacation when you need it
    • 휴가는 필요할 때마다 가기
    • 휴식이 필요하다고 생각되는 순간에 훌쩍 떠날 수 있다면 참 좋지.
  • Dunbar’s number 라는 것은, 개인이 사회적 관계를 안정적으로 유지할 수 있는 사람의 숫자를 말한다.

◎ 탁월한 소프트웨어를 개발하기 위해서는, 탁월한 소프트웨어 회사를 세워라.

to build great software build a great software company.


Docker로 보는 클라우드 서버 운영의 미래

  • 발표자: 김대권Leevi


  • 빌드-배포에 대한 새로운 패러다임을 제공하고 있는 도커Docker는 내부적으로는 IaaS에 가까운 환경 구축의 유연성을 제공하면서, 외부적으로는 Docker만 있다면 언제 어디서도 실행 가능한 형태로 이미지를 만들 수 있도록 지원해 PaaS나 SaaS에 가까운 장점을 누릴 수 있도록 해준다고 한다.

    아직 Docker에 대해서는 제대로 살펴보지 못했기에 뭐라고 단정할 수는 없지만, 많은 개발자들이 도커에 열광하는 이유에 대해서 살펴볼 필요가 있다.

전체적으로 좋은 컨퍼런스였다. 조금 아쉬운것이 있었다면, 발표를 위한 음향처리부스가 입구쪽에 마련되어 있는 탓에 많은 사람들이 들어오고 나가는 곳이 협소하여 제대로 움직이기가 쉽지 않았다. 한편으로는 출입을 통제하기 위한 목적으로 그럴 수도 있겠다 싶었지만, 많은 사람이 움직이는데 불편함을 야기했다.

하나는 MS, 하나는 삼성.
MS베이직 옵티컬은 14900원.
삼성꺼는 22000원.

조금 다른 가격대의 조금 다른 기능을 가진 마우스.
어느 것이 더 편하려나?

스쿠버다이빙 강사 자격을 획득했다.

프로그래머로서 개발자로서 다시 복귀했다.

개발자로서 확고한 자리를 잡기 위한 내 자신의 능력을 키우는 것에 집중하자.

어떻게 구직할까 하고 걱정했었지만, 예전에 스터디를 함께 하던 지인의 소개로 수월하게 입사를 할 수 있었다.

그러면서 느낀건, 개발자로서의 인맥을 잘 관리하는 것이 중요하다는 것이다.

그리고 무엇보다 중요한 것은, 기술적인 능력과 경력을 탄탄하게 구축하여 언제어디서나 자신감있게 개발자여야 한다는 것이다.

항상 러브콜을 받고있는 그런 개발자가 되는 것을 목표로 가지는 것도 좋다.

● 대충 훑어보는 Node.js

  • Node.js
  • Express
  • MongoDB in Node.js
  • Socket.IO
    • Long Polling.
    • RedisStore를 지정하면 레디스를 통해서 클러스터링이 가능하다.
  • 흠… @_@) 신기하게 보는구나…. 그렇게 해야 이 바닥에서 신기술들을 더욱 긍정적으로 받아들일 수 있게 되겠지…
  • 비동기 코딩패턴
    • CallBack
  • Node.js 는 잘 죽는다.
    • V8 엔진 메모리 릭memory leak
    • Catc가 안되는 에러가 나면 죽어버린다.
    • 해결책 1 - 다시 시작
      • forever
      • Supervisor
      • nodemon
      • PM2
      • 2개 이상의 node.js를 구동시키고 죽었을 때 알림을 보내도록 하고, 살릴 수 있을까?
    • 해결책 2 - process.o(‘ncaughtException’, )
      • 죽을 때 어떤 원인으로 죽었을지 모른다.
      • domainAPI를 사용한다.
  • Mocha test framework
    • 자바스크립트 테스트 프레임웤(웹/node.js 지원)
    • TDD 및 BDD 양쪽 지원
  • NewRelic
  • Passport
    • 인증모듈 제공
  • Winstone
  • Vert.x 는
    • 개념
      • JVM에서 동작
      • 고성능 네트워크 IO 서버인 netty 를 기반
      • 비동기는 지원하지만 Non blocking은 지원하지 않음
      • 동작구조는 싱글스레드(멀티스레드 지원)
      • 다양한 WAS에 Embedded 가능
    • Verticle
      • Vert.x Instance
      • 멀티스레드를 지원하기 때문에 성능이 뛰어날까?
    • 주의사항
      • HazelCast를 남용하면, Full GC Time 문제가 발생가능
  • Vert.x vs Node.js
    • 에러 추적 되고 안되고
    • 안정성이 좋고 V8 엔진 자체가 불안함
    • 웹개발 없고 express 등 웹 프레임워크 풍부함
    • 프로그래밍 언어가 다양하고 javascript
    • 비동기를 쓰레드풀을 이용해서 지원 싱글 스레드
  • 결론
    • Startup 이나 B2C 서비스는 Node.js로 시작
      • 자료 찾기 편리함
      • 자주 죽어서 문제가 될 때면 돈 벌었음
    • 기술력이 충분하고, 고성능, 고안전 서비스가 필요한 경우 Vert.x 고려
      • 기반 엔진 자체가 튼튼하여 성능과 안정성
      • 모듈 등이 적고 자료부족, 자체 기술력 높아야 함.

● 서버 사이드 레벨에서 자바 스크립트 엔진 Node.js 의 가능성과 한계성


  • 발표자 : 김호광(보이드 소프트)
  • 모바일 게임세계
    • Java 세상과 다른 히피 생태계
  • Node.js: 게임업계 열광의 이유 -> 개발속도가 빠르다.
    • Unity3D script로 node.js 통합 개발(웃음이 함께하는 발표)
    • 웹 프로그래머가 서버 프로그래머가 될 수 있다.
    • 카카오톡 게임도 이젠 월매출 50만원 시대!!
    • 시장이 ‘모’ 아니면 ‘도’
    • 개발기간은 짧아지고
    • 마케팅비용은 상승(평균 5억)
    • Protytyping이 빠른 Node.js 포텐셜 폭팍!!
    • 현실은…?
  • Node.js Live case
    • 개발환경
    • 사용자 증가
    • 서버 증설 - 인프라 증설 비용
    • 운영 헬게이트!!
    • Node.js가 이유없이 죽기 시작 - 랜덤 다운 - 가장 큰 문제구나.
    • 아이템이 다운과 함께 사라지다.
    • 새벽에 소환-라이브 디버깅 진행.
      • javascript V8 원래 서버엔진 아님
  • 튜닝포인트 1
    • 기존
      • 4 vCore, 4 nodeJS Server
    • 변경
      • 4 vCore, 2 nodeJS Server
      • 다운 21.5% 감소
    • vCore는 Hyper Thread 여러 개를 섞어 1 vCore
      • 리얼 CPU와는 다름
    • Thread 교착
      • Thread가 대기로 차게 되면 벽돌!
  • 튜닝포인트 2: 마공의 등장
    • 이기적인 클라우드 버그 이용
      • VM 생성시 Max Core 생성 후 4 vCore 생성
      • Max Core를 하면 물리서버 CPU를 차지
      • 클라우드 리소스 할당 소스 확인하여 찾은 것, OpenStack은 더 안좋다?
    • Hidden API Script
      • vCore를 2thread에서 4개로 변경
      • 급격한 리소스 사용률을 방지가능
    • 다운 15.5% 감소
  • 튜닝포인트 3
    • DB 이존성 줄임: IIS 아웃풋 캐시 (Ranking 등의 정적 데이터 처리)
      • 서비스단에서 캐싱 할건지 커널에서 캐싱할건지… 커널에서 캐싱하면 빨라짐
    • 다운 3.5% 감소
  • 삶이 지혜
    • Node.js 는 서비스 레벨에서 사용하려면 위험하다.
    • 게임 등 복잡한 로직에서는 어렵다.
    • 자신이 잘하는 언어를 사용해라.
    • 날림 Open금지
      • 디버깅
      • 플레잉 테스트 많이 해야함
      • 패키지 분석에 대한 처리
    • 서비스 운영 시나리오
      • 프로토타이핑이 빠르다는 것에 중점을 두고 사용하자.
  • Node.js 극복해야할 문제와 비전
    • 생태계는 풍성하고 좋음 -> 대세가 되어 인기가 상승, 트렌드
    • 근본적인 한계를 파악하고 사용하자.
    • Node.js와 우분투는 친분하지만 그 사이에서 생기는 상황들을 고려해야함
    • 방어직인 코딩을 해야한다.
    • 가능하면 예상한 것보다 많은 서버와 자원을 준비해둘 것.
    • 애저에서 Node.js를 잘 지원한다.
    • 잘 쓰면 성공하고, 못쓰면 주화입마.
  • 트랜잭션 처리에 대해서 미숙하다.
  • 게임에서는 DB에 요청을 많이 날린다.
  • 몽고DB는 로그 저장용으로만 사용.
  • 다운로드 받아서 그대로 사용하지 말고 IntelCompiler를 이용해서 컴파일해보라. 20% 정도 빨라짐.
  • 결론: 초딩은 무섭다!

● Socket.io 를 활용한 분산 채팅 서버 개발사례 공유




  • 발표자: 김요한 차장(LG CNS)
  • Transaction
    • 해이 사례
      • 링크드인: 모바일
      • 그루폰: CDN
      • 페이팔: 펑셔널 그리고 비동기 코딩
        • 문제가 생긴 것 패치 기다림
      • 이베이: 프론트는 노드, 백엔드 서비스는 그대로 유지
    • 언어적인 패러다임의 변환: 객체지향 -> Functional programming
    • 작은 부분부터 천천히 진행
    • 페이팔 적용 사례
    • 동시젒속자가 적은 초반에는 자바가 성능이 좋지만, 리퀘스트가 많을수록 효과적
    • vert.x 나 톰캣이 더 빠르기도 하다. CPU나 OS에 따라 다르기도 하다.
    • 싦무에서 성능에 민감한 부분은 C 코드로 개발한다.
    • 자바와 Node.js의 성능비교는 MySQL과 NoSQL 비교와 같다.
    • 250-500ms node process start/stop time
    • 장애가 발생하면 다시 시작
      • Forever
    • 배포시간이 줄어드는 건 상당한 장점이지만, 소프트 셧다운을 고려해서 개발해야 한다.
      • 100% 트랜잭션을 보장해야하는 경우에는 고려하지 마.
    • UI의 템플릿을 보여주는 경우
  • 프레임워크
    • Kraken.js -> Express 확장
    • Mean.io
    • Framework가 항상 좋은 것은 아니다.
  • 비즈니스를 먼저보고 프레임워크 적용을 고려

● Node.js 로 해보는 클라우드 서비스

  • 발표자: 김영욱 차장(한국 마이크로소프트 기술 에반젤리스트)


마이크로 소프트에서 Node.js를 통해서 클라우드 시작에 대한 점유율을 높이려고 하는 것으로 보인다.
.Node.js를 IntelCompiler로 재컴파일 하면 성능이 20% 정도 상승한다는 이야기가 이전 시간에 있었다.
.Azure를 앞세워 클라우드 시장에 본격적으로 진입한 마이크로소프트의 앞날은 과연 어떨까?







+ Recent posts