2013. 10. 23. 21:30ㆍSocial Computing/Facebook
Facebook: Social Platform
Facebook은 2007년 5월 Facebook 플랫폼을 런칭한 이후로, 즉, 외부 개발자나 써드파티 회사들이 Facebook의 방대한 소셜 네트워크 정보를 이용하여 직접 Facebook 어플리케이션에 설치할 수 있도록 하는 모든 기능을 담고 있다.
주요 3가지 특징은
1) 어플리케이션이 Facebook의 기능이나 UI를 그대로 사용하기 때문에, Facebook과 완벽히 통합될 수 있다.
2) Facebook의 방대한 소셜 네트워크를 활용하여 어플리케이션의 Mass Distribution이 가능하다.
3) 어플리케이션에서 수익 모델을 가져갈 수 있는 기회를 제공한다.
어플리케이션을 개발하고 추가하는 절차가 매우 간단하기 때문에, 초기진입장벽이 낮고, 많은 어플리케이션이 만들어질 수 있도록 Funding 프로그램과 무료 호스팅 서비스 등을 제공하고 있다. 하지만 Facebook플랫폼이 어플리케이션 개발을 위해 제공하는 기술들은 완전히 Facebook에 의존적이다. 즉 Facebook 어플리케이션을 다른 소셜 플랫폼에서 사용할 수 없다. 물론 다른 대부분의 소셜 플랫폼들이 동일한 방식의 접근을 하고 있다. Open Social 이 이러한 문제를 해결하자고 Google이 제안한 것이다. 즉 소셜 어플리케이션 개발을 위한 표준 프레임워크를 정하자는 것인데, Open Social에 Facebook을 제외한 대부분의 소셜 네트워크 서비스들이 참가하고 있다.
Facebook: Social Platform Architecture
어플리케이션을 추가하면 Left Nav 박스에 어플리케이션 이름이 추가되며, 어플리케이션을 위한 공간인 Canvas에 개발자가 만든 화면이 들어가게 된다. 그리고 사용자 Profile페이지에도 어플리케이션을 위한 공간을 추가할 수 있는데, 그것이 Profile Box이다. 어플리케이션에서 최신 정보를 알릴 필요가 있을 때 News Feed에 포스팅할 수 있다
Facebook어플리케이션이 동작하는 방식은 조금 복잡한데, 기본적으로 어플리케이션은 개발자의 서버에 존재한다. 즉 Facebook외부에 존재하게 된다. Facebook은 이 어플리케이션 존재를 파악하기 위해서 어플리케이션 추가시 Callback URL에 해당하는 해당 어플리케이션의 URL 주소를 입력함으로서 가능해진다. 웹브라우저는 Facebook에 요청을 하면 어플리케이션 화면을 만들어내기 위해 Facebook은 Callback URL로 요청을 보내고, 그러면 Callback URL의 프로그램 코드가 실행되고 결과 페이지를 만들어 Facebook에 돌려주고, 최종적으로 Facebook 페이지와 결합하여 사용자에게 보내진다. 여기서 어플리케이션 코드가 어떤작업을 하고 무엇을 만드는지가 중요한데, 소셜 어플리케이션은 사용자 정보나, 친구, 그룹, 이벤트등에 대한 정보가 필요하며 이러한 정보를 Facebook 플랫폼에서 제공하는 API와 FQL(Facebook Query Language)를 이용해 그런 정보를 가져 올 수 있다. 어플리케이션 작업 후 만들어지는 페이지는 FBML(Facebook Markup Language)라는 마크업 언어로 기술 된다. 이것은 Facebook에서 해석되어 HTML로 변환되어 웹 브라우저에게 전달되는 것이다.
어플리케이션 개발을 위해 제공되는 플랫폼의 3가지 컴퍼넌트인 API, FQL, FBML에 대해서 살펴보면
1) API
- Facebook에 접근하여 프로필, 친구, Page, Group, Photo, 그리고 Event data 등의 정보를 가져오거나 Neww Feed를 보내는 등의 기능을 제공하는 REST 방식의 API모음이다. 이러한 API를 어플리케이션 프로그래밍에 가져다 쓸 수 있도록 API클라이언트 라이브러리를 제공하며, 공식적으로 PHP와 JAVA라이브러리만 제공하지만 비공식적으로 Ruby, Perl Python, .Net 등의 대부분의 프로그래밍 언어를 위한 라이브러리를 지원하고 있다.
2) FQL (Facebook Query Language)
- Facebook Data를 요청할 수 있는 SQL스타일의 인터페이스로서 API를 통해서 접근할 수 있는 데이터에 모두 접근할 수 있다. API가 있는데 왜 FQL을 제공하는가 하면, 우선 FQL을 이용하면 특정 필드 정보만 가져 올 수 있어 bandwidth와 parsing cost를 줄일 수 있다. 또한 복잡한 요청을 한번에 기술하여 보낼 수 있기 때문에 Request 수가 현저히 줄어들고 단일 API(FQL query)를 사용할 수 있기 때문에 일관성 있는 프로그래밍의 장점이 있다. 위 그림의 예와 같이 복잡한 요청을 한번의 Query로 끝낼 수 있다.
3) FBML(Facebook Markup Language)
- Facebook페이지와 조화롭게 통합하기 위해 마크업 언어로 HTML과 유사하지만 어떤 요소는 빠지고 Facebook에 특화된 어떤 요소는 추가되었다. 위의 그림의 예를 보면 Photo어플리케이션 Canvas 상단에 "Create a new Photo Album"과 "Photos of you"메뉴 추가는 FBML로 간단히 기술할 수 있다. 또한 Drag-and-drop 등과 같은 복잡한 기능도 간단한 FBML 태그로 기술할 수 있다.