Showing posts with label 용어. Show all posts
Showing posts with label 용어. Show all posts

Monday, October 3, 2016

WebSocket이란?

WebSocket이란?

WebSocket이란 Transport protocol의 일종으로 쉽게 이야기하면 웹버전의 TCP 또는 Socket (소켓)이라고 이해하시면 됩니다.  WebSocket은 서버와 클라이언트 간에 socket connection을 유지해서 언제든 양방향 통신 또는 데이터 전송이 가능하도록 하는 기술이며 2008년에 HTML5에 포함이 되어서 여러 번의 토론을 통해 프로토콜이 제정되었고 2009년 구글 크롬을 시작으로 여러 웹브라우저에서 이 기술을 적용하여서 현재 Real-time web application 구현을 위해 널리 사용되어지고 있습니다. 참고로 Real-time web application이란 서버 쪽 또는 클라이언트 쪽 데이터가 실시간으로 업데이트 되는 웹 어플리케이션을 의미합니다.

왜 사용하는가요?

WebSocket을 사용하는 이유 또는 사용시 얻을 수 있는 장점에 대해서 이해를 하려면 WebSocket 이전에 사용되었던 기술과 어떤 차별성이 있는지를  이해하는게 중요합니다. 우선 웹어플리케이션에서 기존의 서버와 클라이언트 간의 통신은 대부분 HTTP를 통해 이루어 졌으며 HTTP는 Request/Response 기반의
Stateless protocol입니다. 무슨 말이냐 하면 서버와 클라이언트 간의 Socket connection 같은 영구적인 연결이 되어 있지 않고 클라이언트 쪽에서 (예를 들어 웹브라우저 쪽에서)  필요할 때 Request를 할 때만 서버가 Response를 하는 방식으로 통신이 진행되는 프로토콜이란 뜻입니다. (짧게 이야기하면 클라이언트 쪽에서만 대화를 시작할 수 있는 한 방향 통신입니다.) 그래서 어떤 문제가 생기냐면 서버 쪽 데이터가 업데이트 되더라도  클라이언트 쪽 (예를 들어 웹페이지)에는 화면을 Refresh 하지 않는 한 바뀐 데이터가 업데이트가 되지 않는 문제가 발생합니다. 그렇지만 이런 문제는 일반적은 웹 어플리케이션에서는 기존에 있던 임시 방편인 Long polling 이라던가 Ajax를 사용해도 어느 정도 해결이 가능하지만 데이터의 빠른 업데이트가 아주 중요한 요소 중에 하나인 어플리케이션 (예를 들어 주식 관련 사이트라던가 비디오 채팅 어플리케이션)에서는 실시간 업데이트가 아주 중요하기 때문에 (그리고 기존의 Long Polling 같은 기술은 서버에 많은 부담을 주는 부작용이 있기 때문에) WebSocket이 아주 유용하고 중요한 기술로 사용되고 있습니다.
또한 WebSocket은 Stateful protocol이기 때문에 클라이언트와 한 번 연결이 되면 계속 같은 라인을 사용해서 통신을 하기 때문에 HTTP 사용 시 필요없이 발생되는 HTTP와 TCP 연결 트래픽을 피할 수 있습니다.  마지막으로 WebSocket은 HTTP와 같은 포트 (80)을 사용하기 때문에 (Secure한 채널 같은 경우에는 HTTPS와 같은 443을 이용) 기업용 어플리케이션에 적용할 때 방화벽을 재설정하지 않아도 되는 장점도 있습니다. (대부분의 기업 방화벽은 외부에서의 접속은 HTTP나 HTTPS만을 기본으로
허용하고 있으며 만약 이외의 포트를 허용해야 할 경우에는 방화벽의 설정을 수정해야 하는데 큰 회사일 수록 방화벽 설정 수정 절차가 복잡하기 때문에 HTTP와 같은 포트를 사용한다는 점이 꽤 큰 장점이 될 수도 있습니다.)

작동 원리 및 그 외의 정보

우선 서버와 클라이언트 간의 WebSocket 연결은 HTTP 프로토콜을 통해 이루어집니다. 만약 연결이 정상적으로 이루어진다면 서버와 클라이언트 간에 WebSocket 연결 (TCP/IP 기반으로 하는)이 이루어지고 일정 시간이 지나면 HTTP 연결은 자동으로 끊어집니다.
기본적으로 WebSocket API는 아주 간단한 기능들만을 제공하기 때문에 대부분의 경우 SockJS나 Socket.IO 같은 오픈 소스 라이브러리를 많이 사용하고 있으며 메세지 포멧 또한 STOMP 같은 프로토콜을 같이 이용합니다. 마지막으로 스프링 프레임워크도 WebSocket을 간단한 메세지 브로커랑 SockJS 그리고 STOMP와 같이 지원하고 있습니다.

WebSocket 사용의 어려운 점

WebSocket은 사용시 위에 서술한 것과 같은 장점들을 주지만 그에 못지 않는 비용을 지불해야 합니다. 아래는 WebSocket 사용 시 발생할 수 있는 어려운 점 또는 문제점들입니다.
1. 프로그램 구현에 보다 많은 복잡성 초래: WebSocket은 HTTP와 달리 Stateful protocol이기 때문에 서버와 클라이언트 간의 연결을 항상 유지해야 하며 만약 바정상적으로 연결이 끊어졌을 때 적절하게 대응해야 합니다. 이는 기존의 HTTP 사용 시와 비교했을 때 코딩의 복잡성을 가중시키는 요인이 될 수 있습니다.
2. 서버와 클라이언트 간의 Socket 연결을 유지한다는 것 자체가 비용이 드는 일입니다. 특히나 트래픽양이 많은 서버 같은 경우에는 CPU에 큰 부담이 될 수 있습니다.
3. 오래된 버전의 웹 브라우저에서는 지원하지 않습니다. (물론 SockJS 라이브러리 같은 경우에는 Fallback option을 제공하고 있습니다.) 참고로 인터넷 익스플로어 같은 경우에는 10 버전부터 지원합니다.
4. 이건 제 개인적인 경험인데 서버와 클라이언트 간의 연결이 끊어졌을 때 생성되는 에러 메세지가 구체적이지 않아서 (예를 들어 여러가지 다른 이유로 연결이 끊어졌는데 에러 메세지가 같은 경우) 디버깅을 하는데 어려움이 많았습니다.

아무리 좋은 기술이라 할지라도 모든 경우에 유용할 수는 없는 법이기 때문에 프로그램에 꼭 필요한 기술인지 잘 체크하고 수용 여부를 결정하는 것이 바람직합니다.

대표적인 사용예

1. 페이스북 같은 SNS 어플리케이션
2. LOL 같은 멀티플레이어 게임들
3. 구글 Doc 같이 여러 명이 동시 접속해서 수정할 수 있는 Tool
4. 클릭 동향 분석 데이터 어플 (특정 시간동안 어느 사이트에 주로 접속했는지 등의 정보를 파악하는 어플)
5. 증권 거래 정보 사이트 및 어플
6. 스포츠 업데이트 정보 사이트 및 어플
7. 화상 채팅 어플
8. 위치 기반 어플
9. 온라인 교육 사이트 및 어플

References

https://www.websocket.org/aboutwebsocket.html
http://www.javaworld.com/article/2071232/java-app-dev/9-killer-uses-for-websockets.html
https://en.wikipedia.org/wiki/WebSocket
https://samsaffron.com/archive/2015/12/29/websockets-caution-required
https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API



Friday, October 10, 2014

오픈스택(OpenStack)이란?


오픈스택이란?

오픈스택은 오픈소스 클라우드 컴퓨팅 소프트웨어로 2010년 나사와 랙스페이스 (Rackspace)의 공동프로젝트로 시작되었고 현재는 오픈스택 재단에서 운영되고 있습니다. 오픈스택은 현재 HP, AT&T, Intel과 우리 나라 기업 중 삼성과 KT등 많은 대기업들의 지원을 받고 있으며 2014년 10월 현재 408개의 회사 그리고 18,813명의 개발자가 개발에 참여하고 있는 전 세계에서 가장 큰 오픈 소스 커뮤니티를 보유하고 있는 클라우드 프로젝트입니다. 오픈스택 소프트웨어는 하나의 소프트웨어가 아닌 여러 개의 소프트웨어(또는 컴포넌트)로 구성이 되어 있는데 다음 파트에서 각각의 소프트웨어에 대해 좀더 상세히 다루도록 하겠습니다. 오픈스택은 현재 6개월 단위로 새 버전을 출시하고 있으며 매 버전마다 프로젝트 이름 (또는 릴리즈명)이 있는데 현재 가장 최근 버전의 프로젝트 이름은 지난 4월에 나온 아이스하우스(IceHouse)이며 이달 중순에 새 버전인 주노(Juno)가 출시 예정입니다.

오픈스택의 구성 및 구성원 각각의 정보
위에 언급한 것처럼 오픈스택은 여러 개의 컴포넌트로 구성이 되어있는데 2014년 10월 현재 총 10개의 컴포넌트가 정식으로 오픈되어 있으며 각각의 컴포넌트에 대한 간략한 설명은 아래와 같습니다. (*괄호 안의 이름은 해당 컴포넌트에 대한 프로젝트 이름입니다.)
  • Compute (Nova): 컴퓨트는 오픈스택 시스템에 연결된 하이퍼바이저에 행하는 모든 행위 (예를 들어 VM의 생성 또는 삭제)를 시행/ 관리하는 역할을 하는 사실 상 오픈스택에서 가장 중요한 역할을 하는 컴포넌트입니다. 
  • Dashboard (Horizon): 대쉬보드는 오픈스택 시스템 관리자를 위한 Web UI이며 관리자는 이 UI를 통해 오픈스택을 관리할 수 있습니다.
  • Object Storage (Swift): 오픈스택은 두가지 타입의 스토리지 서비스를 제공하는 그 중에 하나인 Object Storage 스위프트입니다. 오브젝트 스토리지에 대해 간략하게 설명하면 데이터를 오브젝트 단위로 저장하는 방식입니다.
  • Block Storage (Cinder): Swift와 함께 오픈스택이 제공하는 또 다른 스토리지 서비스는 Block Storage - Cinder 입니다. 이 스토리지 서비스는 우리가 일반적으로 사용하는 컴퓨터의 하드디스크에서 사용되고 있는 방식으로 데이터를 블록 단위로 저장하는 방식입니다.
  • Networking (Neutron): 네트워킹 서비스인 Neutron은 오픈스택 내의 IP address들과 네트워킹을 관리하는 기능을 제공하는 컴포넌트입니다.
  • Identity Service (Keystone): 아이덴티티 서비스는 오픈스택 내의 Authentication과 Authorization 기능을 제공하는 컴포넌트입니다.
  • Image Service (Glance): 이미지 서비스는 VM으로 생성될 이미지 파일들을 관리하는 기능을 제공하는 컴포넌트입니다. 이미지 서비스를 이용하게 되면 자주 생성하는 VM 같은 경우에 매번 이미지 파일을 업로드하지 않고 업로드한 이미지 파일을 템블릿처럼 사용할 수 있습니다.
  • Telemetry (Ceilometer): 텔레메트리는 사용자의 사용량을 측정해서 알려주는 기능을 제공하는 컴포넌트로 서비스 프로바이더 회사들에게 유용한 기능을 제공하는 컴포넌트입니다.
  • Orchestration (Heat): 오케스트레이션은 미리 작성된 스크립트와 준비된 템플릿을 이용해서 자동으로 개발 인프라를 구축할 수 있는 기능을 제공하는 컴포넌트입니다.
  • Database Service (Trove): 데이터 베이스 서비스는 이름 그대로 오픈스택 시스템 상에서 데이터 베이스 서비스를 구축할 수 있게 도와주는 기능을 제공하는 컴포턴트입니다.

왜 사용하나요?
많은 기업들이 오픈스택 사용을 결정하는 가장 큰 이유는 아래와 같습니다.
  • Open Source: 아무래도 가장 큰 장점 중에 하나가 바로 라이센스 비용없이 무료로 사용할 수 있는 오픈소스라는 점일 것입니다.
  • 거대한 커뮤니티: 위에 언급한 대로 오픈스택은 현재 많은 회사와 개인 개발자들이 참여/기여하고 있는 프로젝트이기 때문에 지속적으로 업데이트가 되고 있고 앞으로도 발전 가능성이 큰 프로젝트입니다. (반대로 커뮤니티가 작은 경우에는 중간에 프로젝트 자체가 중단이 되거나 버그가 발생했을 때 해결책이 빠르게 업데이트가 되지 않아서 직접 문제를 해결해야하는 일들이 발생할 수 있기 때문에 실제 제품화 할 때는 큰 문제가 될 수 있습니다.)
  • 다양한 하이퍼바이저 지원: 오픈스택은 다양한 하이퍼바이저(ESXi, Hyper-V, KVM, Xen 등)들을 지원하기 때문에 오픈스택을 사용해서 여러 다른 종류의 하아퍼바이저가 설치된 호스트들을 연결/관리할 수 있는 시스템을 제작할 수 있는 이점이 있습니다. 
그렇지만 위와 같은 장점에도 불구하고 아직까지 오픈스택은 많은 회사들이 사용에 어려움을 표현하고 있으며 아래는 오픈스택 사용시 어려운 점 또는 개선해야 할 점입니다.
  • 아직 완성되지 않은 서비스: 이제 출범한지 4년 정도 밖에 안된 프로젝트이고 오픈 소스 프로젝트이기 때문에 아직 부족한 기능이 많고 프로젝트가 컴포넌트 단위로 진행이 되기 때문에 이미 구축된 시스템도 하나의 컴포넌트에 문제가 발생했을 때 시스템 전체에 문제가 생기는 등 아직 전반적으로 불안정한 상태입니다. 
  • 시스템 구축의 어려움: 제대로된 오픈스택 시스템의 구축을 위해서는 클라우드 관련 다양한 지식 뿐만 아니라 네트워크나 시스템 관련 많은 경험/지식이 필요합니다. 또한 문제 발생 시 진단할 수 있는 API의 제공도 아직 부족하기 때문에 문제 해결에 많은 어려움이 있습니다.  
  • 협력업체와의 애매한 포지션으로 인해 생기는 문제점 (예:VMware, Citrix) 오픈스택 프로젝트를 지원하는 가장 큰 업체 중에 하나인 VMware는 협력업체이자 경쟁사이고 이런 애매한 포지션 때문에 전폭적인 지원을 받지 못하는 편입니다.
  • 체계적이지 못한 문서: 오픈스택 웹사이트에서 많은 문서들을 지원하고 있지 못하나 겹치는 부분도 많고 체계적이지 못 한 것이 사실입니다. 
이상 오픈스택에 대해 간략하게 정리해봤습니다. 혹시 잘못된 정보가 있거나 부족한 점이 있다면 글 남겨주세요. 나중에 시간이 된다면 간단한 오픈스택 시스템을 구축하는 과정에 대한 블로그를 작성해서 올리도록 하겠습니다.

Hope this helps!

Friday, October 3, 2014

ESXi, vCenter, vSphere란?


VMware 제품들을 이용한 가상화 관련 작업을 할 때 가장 먼저 부딪치는 문제가 바로 여러 가지 새로운 개념들과 용어들 그리고 다양한 VMware 제품군들일 것입니다. (최소한 필자는 그랬습니다.) 그래서 이번 포스트에는 VMware의 엔터프라이즈 버전에서 가장 많이 사용되고 있는 제품들 (ESXi, vCenter, vSphere)의 개념과 차이점에 대해서 알아보도록 하겠습니다. 참고로 필자는 이 분야의 Expert가 아니기 때문에 아래의 정보는 필자의 경험을 바탕으로한 정보이며 부족한 부분이나 잘못된 정보가 있으면 글을 남겨주세요.

ESXi란?
ESXi는 VMware에서 나온 하이퍼바이저(Hypervisor)입니다. 하이퍼바이저란 쉽게 이야기하면 가상화 환경을 만들 수 있도록 최소한의 기능만을 지원하는 축소버전의 OS (윈도우즈나 리눅스 같은)라고 이해하시면 편할텐데요 (가상화 환경을 만드는데 소프트웨어의 도움없이 하드웨어를 그냥 사용할 수 없으니까요) Configuration과 시스템을 Manage할 수 있는 약간의 기능을 제외하고는 다른 기능들을 지원하고 있지 않습니다. (예를 들어서 GUI라던가…) 하이퍼바이저는 두 종류가 있는데 (Type 1과 Type 2) ESXi는 Type 1 하이퍼바이저입니다. 다른 회사에서 나온 경쟁 제품으로 Microsoft에서 나온 Hyper-V와 Citrix에서 나온 XenServer가 있습니다.

vCenter란?
가상화 환경을 만드는 가장 큰 이유는 여러 컴퓨터를 하나의 큰 성능/용량의 컴퓨터처럼 사용하기 위함인데 그 기능을 지원하는 것이 vCenter입니다. 다시 말해서 vCenter는 가상화 환경 구축을 위한 핵심 소프트웨어로 ESXi가 설치된 다수의 머신을 하나의 가상화 환경으로 만들어주는 기능을 제공합니다. 가상화 시스템 운영자의 입장에서 vCenter를 이용하면 여러 ESXi 호스트들을 쉽게 추가/제거할 수 있으며 그 외에도 아래와 같은 엔터프라이즈 기능들을 제공합니다.
  • vMotion: 현재 사용 중인 VM (Virtual Machine)을 VM의 전원을 끄지 않은 상태에서 다른 호스트로 (서버) 이동할 수 있게 해주는 기능
  • DRS (Distributed Resource Scheduler) & DPM (Distributed Power Management): VM의 컴퓨터 리소스 사용 (CPU나 메모리)을 계속 체크하고 경우에 따라 VM을 다른 호스트로 이동하거나 VM의 할당이 되지 않아서 아무런 일을 하지 않는 호스트의 경우 전원을 잠시 꺼두고 필요 시 다시 전원을 키는 등의 리소스 관리를 도와주는 기능

vSphere란?
vSphere란 위에 언급한 소프트웨어들을 전부 포함하고 있는 소프트웨어 Suite 또는 패키지를 일컬으며 위의 소프트웨어 외에도 다른 많은 소프트웨어를 포함하고 있습니다. (예를 들어 vSphere Client 또는 vSphere SDKs) 마이크로소프트 제품인 Office랑 비교하면 vSphere는 Office와 같은 개념이고 ESXi나 vCenter는 Word나 Excel이라고 이해하면 됩니다.

설치 및 라이센스에 대한 간략한 정보
대부분의 VMware 제품은 VMware 웹사이트(https://my.vmware.com/web/vmware/downloads)에서 무료로 다운로드 받아서 설치할 수 있으며 ESXi 같은 경우에는 무료 버전도 있기 때문에 무료로 다운 받아서 사용 가능합니다. 그렇지만 vCenter 라이센스는 유료이며 가격도 비싼 편입니다. (상당 부분의 VMware 영업이익이 vCenter 라이센스에서 발생된다고 들었습니다.) 사실 ESXi는 단순한 하이퍼바이저이기 때문에 무료로 배포를 한다고 해도 vCenter가 없으면 가상화 환경을 만들 수 없기 때문에 이런 사업 모델을 사용하는게 어떻게 보면 당연하다고 생각하며 이런 점 때문에 OpenStack 같은 오픈 소스 클라우드 플랫폼에 상당히 많은 사람들이 관심을 갖는게 아닌가 생각합니다. (OpenStack은 vCenter를 대체할 수 있는 오픈소스 프로젝트로 만약 OpenStack을 사용할 경우 vCenter 라이센스 없이 ESXi 호스트를 이용해서 가상화 환경 구축이 가능합니다. OpenStack 또한 하나의 큰 주제이기 때문에 나중에 시간이 된다면 따로 블로그를 작성해서 올리도록 하겠습니다.)  VMware 제품을 이용한 가상화 환경 구축을 위한 간단한 절차는 아래와 같습니다.
  1. 가상화 환경에 사용될 컴퓨터들에 ESXi 설치
  2. vCenter를 지원하는 OS (위에 언급한 컴퓨터와 다른 컴퓨터)에 vCenter를 설치. 각 버전마다 지원하는 OS가 다르기 때문에 VMware 웹사이트(http://www.vmware.com/resources/compatibility/search.php)를 참고해야 합니다.
  3. vSphere Client (또는 vSphere Web Client)를 통해서 vCenter에 접속해서 ESXi 호스트들을 추가/관리
사실 위의 과정들을 간략하게 소개했지만 각각의 과정들은 많은 세부 과정들을 포함하고 있습니다. 특히 vCenter 설치 같은 경우에는 다양한 방법들이 있고 약간 복잡한 면도 있기 때문에 나중에 시간이 된다면 따로 블로그를 작성해서 올리도록 하겠습니다.

Source (출처)
  • http://www.mustbegeek.com/difference-between-vsphere-esxi-and-vcenter/
  • http://www.vmware.com/products/vcenter-server/features
Hope this helps!

Sunday, September 14, 2014

SonarQube란?


소나큐브는 프로젝트의 품질을 관리할 수 있도록 여러가지 모니터링 툴을 제공하는 오슨소스 플랫폼입니다. 보통 소나큐브는 단독으로 사용되기 보다는 지난 번에 포스트한 Jenkins 같은 CI 서버와 연동이 되어서 사용이 되어지고 있으며 Java를 포함한 20가지가 넘는 프로그래밍 언어 (예: C#, C/C++, Javascript 등)로 제작된 프로젝트의 모니터링을 제공합니다.

아래는 소나큐브의 장점들입니다.
  1. 오픈소스 프로젝트이기 때문에 라이센스 비용없이 다운받아서 사용 가능
  2. 프로그램 설치 후 사용 가능한 파워풀하고 심플한 Web Monitoring UI (Dashboard) 제공
  3. 테이블과 차트를 이용하여 시간이 지남에 따라 프로젝트가 얼마나 개선되고 있는지 보여줌
  4. 코딩품질 개선을 위한 정보 (소스의 중복이나 복잡도 그리고 유닛 테스트의 커버리지 및 잠재적인 버그의 정보 등)을 프로젝트 단위부터 파일단위까지 제공
 위의 장점들 외에도 더 많은 기능들을 제공하지만 저의 개인적인 경험들로는 위의 부분들이 가장 크게 느껴졌었습니다. 그럼 소나큐브에 대한 간단한 설명을 마치고 다음 번 포스팅에서는 소나큐브의 설치와 Jenkins 서버와의 연동 방법에 대해서 설명하도록 하겠습니다.

Sources:
  • SonarQube's Main Website: http://www.sonarqube.org/
  • 메멘토님의 글: http://dryang.egloos.com/viewer/4005366


Wednesday, July 16, 2014

WebRTC란?

WebRTC는 구글이 2011년에 릴리즈한 오픈소스 프로젝트로 쉽게 말해서 브라우저 상에서 별도의 추가적인 설치 없이 (플러그 인이나 익스텐션없이) Web-based Video Conferencing (화상회의/ 화상채팅)을 구현할 수 있게 하는 기술입니다. 여기서 중요한 사실은 별도의 추가적인 설치(Plug-in) 없이 작동한다는 점인데 이 점이 왜 중요하냐면 개발하는 쪽에서는 추가적인 개발이 없이 원천 기술을 무료로 사용할 수 있기 때문에 관련 사업을 시작하기가 좋고 (큰 추가적인 비용이 없이) 사용하는 쪽에서는 매번 사용할 때마다 팝업이 떠서 추가적인 소프트웨어를 설치해야 하는 귀찮음을 덜 수 있어서 편리합니다.

그렇지만 이런 WebRTC를 사업화하는데 여러 가지 문제가 있으며 아래는 그에 해당하는 리스트입니다.
1. 지원하는 브라우저 수의 한계: WebRTC는 구글이 주도하는 프로젝트이고 마이크로 소프트와 애플은 여러가지 이유로 현재 지원하고 있지 않습니다. (코덱 표준 설정에 대한 의견 불일치 등) 그리고 Firefox나 Opera도 지원을 하고 있지만 Chrome과 세부적인 부분에서 약간의 차이가 있거나 특정 기능의 지원이 안되는 경우가 있습니다.
2. Firewall 문제 해결: 구글에서 제공하는 WebRTC API와 node.js 를 이용하면 간단한 화상채팅 프로그램을 만들수 있지만 STUN이나 TURN서버 없이는 같은 네트워크 상에서만 사용이 가능하고 만약 다른 네트워크나 방화벽이 설치된 네트워크에 있는 컴퓨터에서 접속하려면 위에 이야기한 STUN/TURN 서버를 설치한 후 ICE candidate에 포함시켜야 합니다. 서버 구축은 어렵지 않으나 여러가지 네트워크 상황에서도 일정하게 동작하게 하는데는 (Availability) 많은 시간과 노력이 필요합니다.
3. Signaling: 구글에서 제공하는 WebRTC API는 Signaling 관련된 사항은 포함이 안되어 있기 때문에 시크널링을 어떻게 구현할 것인지도 해결해야할 큰 문제 중에 하나입니다.
4. 확장성 (Scalability): MCU(Multipoint Control Unit)없이 사용하는 WebRTC 어플리케이션은 Mesh call이기 때문에 하나의 화상회의에 참가할 수 있는 인원이 최대 10명 (구글 측에서 제시한 자료에 따르면)이지만 사실 상 유저의 컴퓨터 사양과 네트워크 상태에 따라 틀리며 7명만 넘어가면 화면이 깨지는 현상이 발생합니다. 이런 확장성 문제를 해결하기 위해서는 위에 언급한 MCU를 제작해서 포함시켜야 하는데 이 또한 많은 시간과 노력 그리고 기술이 필요합니다.

위와 같은 제약에도 불구하고 많은 장점을 가지고 있기 때문에 (코덱의 무료 사용 및 여러가지 웹컨퍼런싱기술 제공) WebRTC는 미래가 밝은 기술입니다.

WebRTC의 공식 웹사이트는 www.webrtc.org이며 관련 소스는 아래와 같습니다.
- WebRTC Application: https://apprtc.appspot.com
- Sample Source Code: github.com/GoogleChrome/webrtc

Tuesday, July 15, 2014

FOUC란?

FOUC는 Flash of Unstyled Content의 약자로 웹브라우저가 웹 페이지를 로딩할 때 일시적으로 외부의 CSS stylesheet이 적용되지 않는 컨텐트를 로딩하여 화면에 출력하는 현상을 의마하는 말입니다.

원인: 이 현상은 브라우저마다 틀리지만 보통 아주 짧게 진행되며 이 현상이 생기는 이유는 웹브라우저가 컨텐트를 로딩할 때 한 번에 모든 컨텐트와 관련 화일을 로딩하여 출력하는 것이 아니라 우선 순위의 컨텐트를 먼저 로딩하기 때문에 (그리고 로딩이 다 끝나기 전에 화면에 출력이 되기 때문에) 발생합니다.

해결방법: HTML 파일의 Body tag에 'unresolved'라는 pseudo class를 포함하면 이런 현상이 생기는 것을 방지할 수 있습니다.
<body unresolved>

Sources:
http://en.wikipedia.org/wiki/Flash_of_unstyled_content
http://www.polymer-project.org/docs/polymer/styling.html#fouc-prevention
http://ko.wikipedia.org/wiki/FOUC