9/26/2016

Serverless의 시대

Cloud Computing의 발전으로 인해 과거와는 달리 더 이상 많은 인력이 필요없게 되는 것 같다. 구글 트렌드에서 “programmer”와 “software engineer”의 검색량을 2004년 부터 현재까지 추출해보았다.


점점 검색량이 줄어들고 있다. 예전에는 리눅스 전문가, DB 전문가, Backend 전문가, Frontend 전문가 등등이 필요했지만, 이제는 적은 인력으로 충분히 해결 가능하다.

이런 현상이 발생한 이유중에 하나는 “Serverless” 일 것이다. (아직 초창기이긴 하지만…) Serverless는 서버가 없다라는 의미가 아니고, 관리해야 할 Server가 0으로 수렴한다는 의미이다.
즉, 서비스 단위의 코드를 개발하고 배포에 집중하겠다라는 기술이라고 볼 수 있다. 이런 점이 기존의 PaaS와 대비되는 특징이다.
다가올 Serverless의 시대에도 예전의 전문가라는 직종이 남아있을지 의문이다.
우리는 어떤 준비를 해야 할까?

Websocket Proxy

Websocket proxy가 필요한 케이스가 생겼다. 일반적으로는 독립된 proxy server를 통해 지원하면 되지만, Servlet단에서 지원을 해야 하는 상황이다. 아래의 그림처럼 제공되는 것이 중간의 Gateway를 통해 Communication이 되어야 하는 상황이다.


아래의 그림처럼 중간에 다른 서버를 거쳐야 한다.


가장 편하게 할 수 있는 방법은 jetty-proxy library를 이용하는 방법이다.

이미 구현체가 존재하기 때문에, 필요한 부분만 customizing하여 Servlet으로 등록하면 된다.

9/12/2016

MQTT Borker 선정 고려사항

MQTT Broker를 선정시 고려할 사항을 정리합니다. MQTT는 서비스 품질(QoS)에 대해서 3가지 레벨의 신뢰성을 제공합니다. 일반적으로는 QoS 0를 선택하고, Application Level에서 처리하고 있습니다.

MQTT 보안에는 크게 Authentication, Authorization 부분과 Network 그리고 Payload 검증 부분으로 나눠집니다.
위의 3가지 요소중에 Clustering 방식을 가장 선호하며 MQTT Cluster를 구성하는 목적은 아래와 같습니다. 
MQTT Broker를 사용하는 Subscriber의 Backend server가 같은 기능을 갖는 여러대로 구성되는 Case가 존재합니다. 이럴 경우 Subscriber Server 앞단에 HAProxy를 이용해서 한대의 서버만 message를 받도록 할 것인지, 아니면 Broker에서 제공하는 Exclusive 기능을 이용할 것인지 고려해야 합니다.
그 외에, Integration 부분도 고려해야 합니다.


9/04/2016

P-Value (유의확률)

P-value에 대해서 알기전에 귀무가설(Null Hypothesis: H0)과 대립가설(Alternative Hypothesis: H1)에 대해서 이해를 해야 합니다. 우리가 어떤 가설을 만들었을 때, 가설 검정 절차에서 선행되어야 할 부분이 귀무가설과 대립가설의 설정이고, 두 개의 가설이 정반대로 설정되어야 합니다. 귀무가설은 기존에 일반적으로 받아들여지고 있는 내용이며,아래와 같이 세 가지 유형이 있습니다.
~와 같다. (=), ~ 이상이다. (>=), ~ 이하이다. (=<)
그리고 대립가설은 귀무가설과 반대되는 새롭게 검정하고자 하는 주장입니다. 귀무가설과 정반대로 설정해야 하고 세 가지 유형이 있습니다.
~ 와 같지 않다. (!=), ~ 미만이다. (<), ~ 초과이다. (>)
가설 검정은 “같다”, “크다”, “작다”의 세 가지 내에서 이루어집니다. 이 상황을 벗어난 표현은 수학 특성상 처리하기가 어렵기 때문입니다. 이제 예제를 보면, 제품의 불량률이 5%이다. 하지만 제품에 대한 고객 Claim이 자주 일어나서 불량률이 5% 보다 클 수 도 있다는 주장이 나오고 있다. 이 부분을 검정 하기 위한 귀무가설과 대립가설을 설정하시오. 대립가설로 불량률이 5%보다 클 수 도 있다는 주장이 나왔으므로
H1: p > 0.05
로 설정합니다. 귀무가설은 대립가설과 정반대이므로 아래처럼 설정합니다.
H0: p <= 0.05
P-value는 귀무가설이 올바르다는 전제를 가지고 통계값이 실제로 관측된 값 이상일 확률을 의미합니다. 관찰된 데이터가 귀무가설을 지지하는 정도를 보여줍니다. (= 유의수준) P-value가 작을 수록 귀무가설을 지지하는 정도가 낮아지므로 귀무가설은 기각되게 됩니다. (=대립가설 채택) 즉, 귀무가설이 맞다고 가정함으로써 귀무가설을 기준으로 삼고 관찰된 검정 통계량이 얼마나 멀리 떨어져있는지 보는 것입니다.
위의 그래프처럼 P-value가 알려주는 것은 차이가 생겨나는 것이 우연한 것인지 변수에 따른 것인지에 대한 여부입니다. 일반적으로 95%의 신뢰구간이면 0.95의 신뢰수준으로 생각하시면 됩니다. 유의수준은 1에서 신뢰수준을 뺀 값입니다. (1– 0.95 = 0.05), P-value < 0.05 라고 하면 귀무가설이 일어날 확률이 5%이하인 것을 의미합니다. P-value를 가지고 모든 것을 판단 할 수는 없습니다. P-value는 관측되지 않은 사실들의 확률도 포함하고 있기 때문입니다.
유의확률은 가설이 옳다거나 차이에 대해서 알려주는 지표가 아니기 때문에 가설이 자료와 일치하는지 아닌지만 판별할 수 있습니다.