OpenSocial PC 버전과 모바일 버전의 차이점
PC OpenSocial 통신 방식
-
사용자는 플랫폼에 앱 이용 요청 후, 플랫폼이 앱 서버에
gadget.xml을 요청합니다. -
앱 서버는 초기 HTML을 반환하고, 사용자는 iframe 내에서 앱을 이용합니다.
-
데이터 요청은 클라이언트 측 JavaScript HTTP 요청을 통해 플랫폼에 이루어집니다.
-
특징: 사용자가 앱 서버와 직접 통신하며, 앱이 자체 세션 관리를 해야 합니다. JavaScript 의존성이 높고, 서버 부하는 낮은 편입니다.
모바일 OpenSocial 통신 방식
-
사용자는 플랫폼에 앱 이용 요청 후, 플랫폼이 앱 서버에 특정 페이지를 요청합니다.
-
필요시 앱과 플랫폼 간에 데이터 통신(API)이 이루어집니다.
-
앱은 플랫폼에 일반 HTML을 반환하고, 플랫폼이 이를 사용자에게 보여줍니다.
-
특징: 사용자가 앱 서버와 직접 통신하지 않고, 모든 연결은 OAuth로 검증됩니다. 사용자 식별은 쿼리 파라미터의 OpenSocial ID를 통해 이루어지며, 서버 간 HTML 통신만 가능하고 JavaScript는 사용할 수 없습니다. API 통신이 서버 간에 이루어져 응답이 느려질 수 있으며, 서버 부하는 높은 편입니다.
PC vs 모바일 OpenSocial 비교
-
접속 방식: PC는 사용자 직접, 모바일은 플랫폼 대리.
-
사용자 식별: PC는 자체 세션, 모바일은 파라미터로 OpenSocial ID 전달.
-
인증: PC는 세션 확립이 어렵고, 모바일은 OAuth로 항상 검증 가능.
-
API 접근: PC는 클라이언트 측 JavaScript, 모바일은 서버 간 RESTful.
-
결론: 모바일 OpenSocial 개발이 PC 버전에 비해 훨씬 간단합니다.
Ruby on Rails를 선택한 이유
-
게임은 UI가 불친절한 CMS와 유사하며, CMS 개발에 Rails가 적합하다고 판단했습니다.
-
ActiveRecord, RSpec 등 Rails의 강력한 기능과 JP_Mobile Gem의 존재가 큰 장점입니다.
-
PHP의 객체 지향, 함수 레퍼런스, 문법적 복잡성($, ;)에 대한 불만도 Rails 선택의 배경이 됩니다.
개발 및 개선 사례
## acts_as_opensocial 플러그인
-
모바일 OpenSocial의 특수한 링크(플랫폼 URL에 앱 URL을 파라미터로 전달) 및 폼 작성 방식을 처리하기 위해 개발되었습니다.
-
Rails의
link_to와form_tag헬퍼를 OpenSocial 환경에 맞게 자동 변환합니다. -
OPEN_SOCIAL상수가 정의될 때만 변환을 수행하여 개발 환경(PC 브라우저 테스트)과 운영 환경(모바일)에서 동일한 코드를 사용할 수 있도록 했습니다. -
장점: 개발 편의성, 코드 재사용성, 일반 Rails 앱과 유사한 개발 경험 제공.
-
단점:
OPEN_SOCIAL상수로 인한 환경 관리의 복잡성, API 연결 기능 미포함.
Platform 클래스 도입
-
acts_as_opensocial의 단점을 보완하기 위해OpenSocialFilter와Platform클래스를 도입했습니다. -
Platform클래스는 API 연결 및 인증 처리를 공통화하며, 개발 환경을 위한 더미 플랫폼도 제공합니다. -
한계: 플랫폼별 사양이 미묘하게 다르고 비공개인 경우가 많아 완전한 추상화 및 공통 라이브러리 개발에 어려움이 있었습니다.
기타 개발 도구
-
acts_as_multiconnection: DB를 사용자 수에 따라 분할하기 위한 Active Record 커넥션 관리 플러그인. (현재는 게임 흥행 부진으로 미활용) -
EC2Tools: 다수의 EC2 서버를 쉽게 관리하기 위한 스크립트 모음. -
이 모든 도구는 GitHub에 공개되어 있습니다.