지난 번 NCDC 강연 이후에도 5월 24일부터 28일까지 열린 넥슨의 NDC에서도 같은 주제로 강연을 했었습니다.
내용은 NC측의 민감한 부분을 일부 제외한 거의 대부분을 다루었습니다.
NCDC 때보다 강연장은 작았지만 가득 메워주신 청중들 덕분에 1시간을 꽉 채워서 이야기를 했습니다.
회사 사람이 아닌 강연은 오랜만이더군요. 같이 웃어주시고 반응해주신 덕분에 즐겁게 보냈습니다.
곧 자료를 올리겠다고 생각했는데 자꾸 늦어져서 한 달이 지난 지금에야 올리게 되었습니다.


일부 강연 분위기를 위한 이미지 몇 장을 제외하고 그대로 올렸습니다.

강의 내용은 WeRule이 보여준 여러 의미를 생각해보고 미래의 MMORPG는 어떤 방향으로 발전해야 하는 가 하는것에 대한 고민을 담아봤습니다. 하지만 내용은 NoSQL인 카산드라를 적용해보자는 것으로 끝나는 것 같습니다. 아직 논의의 시작이고 실제 실험과 결과를 준비해보고자 합니다. 가을에 KGC2010이 열리는데 강연 신청을 해두었습니다. 아마도 그 때 더 많은 이야기를 할 수 있었으면 합니다.

@모루

지역태그 : 대한민국>서울
  1. 2010/07/04 15:24 수정삭제

    비밀댓글 입니다

트랙백 주소 :: http://www.forge.kr/26/trackback/
옵션
댓글 달기

 

마지막 글을 올린 지 달이 넘었네요. 많은 일이 엉켜서 시간이 금방 지나갔습니다.

가장 최근에 끝난 일은 지난 4월 29일 회사 내의 개발자 컨퍼런스였습니다.

제목이 낚시성이 농후한 '차세대 MMORPG 서비스 아키텍처'이어서 준비하는데 부담이 많이 갔습니다.

여기저기 모아 놓았던 자료와 NoSQL 관련 자료들을 엮어서 발표를 하였는데 쉬운 주제가 아니어서 그런지 내용을 이끌어가기 어렵더라구요.

 

강연 내용 중에서 회사 기밀 내용 외에는 조금씩 여기에 풀어볼까 합니다.

주신 분들 모두 감사 드리고 또 다른 기회가 있으면 더 좋은 내용으로 찾아뵙도록 하지요.

 

@모루

태그 : NCDC,NCDC2010
지역태그 : 서울
  1. 박제권 2010/05/01 15:05 답글수정삭제

    엇, 저도 요새 NoSQL쪽 계속 들여다봤는데, 기밀근처까지 공개해주삼~ ^^

  2. GUNDAM 2010/05/03 10:47 답글수정삭제

    흠.. 많이 많이 멋지시군요

트랙백 주소 :: http://www.forge.kr/25/trackback/
옵션
댓글 달기

Zynga의 Robert Zubek이 GDC2010에서 발표한 내용을 적어 둔(아래 링크)를 보다가 매우 좋은 내용같아서 번역을 했습니다. 발표를 받아 적은 것이라 일부 내용이 없고 약자로 된 것도 있어 풀어보았습니다. 틀린 것이 있을 수도 있으니 지적해주세요. 징가의 서비스에 대한 포괄적인 내용을 담고 있기 때문에 해당 문제를 고민한 사람들에게는 엄청난 정보가 됩니다. 규모에 있어 전혀 다른 문제로 보기 쉽지만 작은 규모에서도 발생하는 문제입니다. 많은 분들에게 도움이 되었으면 해서 가급적 모든 문장을 번역하였습니다.

 

@모루


FishVille


-------------------------------------------------------------------------------------------------


GDC10: Scaling Social Games, Robert Zubek

March 12th, 2010
http://www.raphkoster.com/2010/03/12/gdc10-scaling-social-games-robert-zubek/

 

 


소셜 게임은 게임과 웹의 경계점에 놓여있기 때문에 엔지니어링 관점에서 재미있는 분야입니다.
우리는 게임을 재미있게 만드는 것을 생각하고 플레이어를 다시 돌아오게 하기 위해 많은 시간을 보냅니다.
이것들이 공학적 도전인 것을 알고 있습니다. 하지만 이 웹에는 자신만의 세트, 특히 예측할 수 없는 사용자들, 갑자기 많은 사람들이 몰려오는 경우에 발생하는 효과 같은 것이 있습니다. SNS는 이런 웹의 가장 좋은 예가 될 수 있습니다. 네트웍을 통해 효과가 전파되고 예상하지 못하는 트래픽 변동을 일으킵니다


Zynga 에서는 하루에 6천5백만 명이 플레이를 합니다. 한 달에는 2억2천5백만명이 플레이를 합니다. 하지만 사용 패턴은 매우 다릅니다.
롤러코스터 왕국은 1주일에 1백만 DAU(daily active user)를 달성하였습니다. 대략 70만에서 170만명 사이를 오갑니다.
다른 예로 FishVille 1주일에 0명에서 6백만 명의 DAU 달성 (daily active user)로 커졌습니다. 엄청난 확장성이 요구되었습니다. Farmville의 경우 5개월 만에 2천5백 만 DAU로 커졌습니다. 성장 곡선은 가파르지 않았지만 성장률의 정도가 자신의 도전과제가 되었습니다.


개요:

게임 개발자들에게 웹 개발 방식에 대한 가장 좋은 예를 설명하고자 합니다. 콘솔, 모바일 등에서 왔겠지만 웹 세상은 자신만의 도전할 것들이 있고 그런 것들을 통해서 배운 해결책들이 있습니다. 개발자라면 이미 알고 있는 방법일 것입니다.


개의 서버 접근 방식과 두 개의 클라이언트 접근 방식이 있는데 중 많이 쓰이는 세 가지 방식에 대해서 이야기 하겠습니다.


1. Web server stack + HTML, Mafia Wars, Vampires, et
2. Web server stack + Flash, Farmville, Fishville, Cafe world
3. Web + MMO stack + Flash, yoVille, Zynga Poker, Roller Coaster Kingdom


Web stack은  LAMP, logic in PHP, HTTP Comms. 잘 알려진 프로토콜이고 한계도 명확합니다.


Mixed stack으로 게임 로직은 자바같은 것으로 만들어진 MMO 서버에 넣고 나머지는 Web 스택에. Web stack 제한이 게임 개발에 방해되는 경우에만 사용합니다. SNS 부분은 웹 스택에서 처리합니다.


FishVille의 경우

DB 서버 -> Web stack (캐시와 큐 서버)


yoVille:
DB > MMO
Cache > Web & CDN


web stack을 사용하는가? HTTP는 확장성이 좋고, 리퀘스트의 수명이 짧습니다. 그리고 로드 밸런싱이 쉬움. 각각의 요청이 아토믹, 상태가 없음. 서버 추가가 쉬움. 게임에 대해서는 제한이 많음. 특히 서버쪽에서 시작하는 동작 (NPC가 돌아다니는 것이나, 게임에서 지는 경우, 몬스터가 반응하는 경우…)에는 HTTP에서는 구현하기 어려움. 리퀘스트/리스펀스 구조이기 때문. long polling 같은 몇가지 해결 방법이 있지만 확장을 어렵게 하는 속성이 있습니다. 로드 밸런서가 처리하기 어려우며 접속 수 제한에 도달하게 됩니다.


다른 방법으로는 리퀘스트 사이의 상태를 저장하는 것을 생각해볼 수 있습니다. 웹보다는 게임 개발에 더 많이 사용합니다. Farmville 을 플레이하고 있다고 해보죠. 사과를 수확하고 있는데 많은 액션을 하게 됩니다. 결과적으로 서버에 서로 다른 많은 요구를 하게 되죠. 하지만 우리는 나무에 대해 여러번 클릭을 하더라도 첫 번째 클릭에 대해서만 사과를 주려고 합니다. 이는 상태를 저장하고 유효성을 판단해야 한다는 것을 의미하죠. 많은 수의 웹 서버에 요청을 하는 클라이언트가 있다면 DB를 사용하면 안됩니다. DB는 결국 과부하가 걸릴 것입니다. 만약 클라이언트가 한 개의 웹 서버하고만 통신할 수 있도록 보장할 있다면 거기에 데이터를 저장하면 되고 DB에는 나중에 저장하면 됩니다. 하지만 이것은 꼼수일 뿐이죠. 사람들이 악의적인 클라이언트와 브라우저를 이용해서 세션 어피니티를 깨지 않도록 하는 것은 어려운 일입니다.


그래서 대신 캐시 계층에 DB 서버를 두어 매번 DB에 접근하지 않도록 할 수 있습니다. 그런 것을 Network Attached Caching이라 하죠. 이 방법은 아주 잘 먹힙니다.


MMO 서버는 최소한의 기능만 가진 MMO 서버입니다. 클라이언트 마다 소켓 연결을 유지하고 있고 채팅이나 서버 측 푸시와 같은 라이브 게임을 지원합니다. 또한 메모리에 게임 상태를 유지합니다. 우리는 플레이어가 로그인하여 DB에서 로드하여 세션 어피니티를 디폴트로 만든다는 것을 알고 있습니다. 웹과는 매우 다른 방식이죠! 웹처럼 로드 밸런싱을 쉽게 할 수 없습니다.


왜 그런 방식을 할까요? 로드 밸런싱 때문에 확장하기 무척 어렵습니다. 하지만 서버 사이드 푸시, 라이브 이벤트, 많은 게임 상태 등을 저장해야 하기 때문에 사용합니다.


그림:
DB 서버 - 아마도 캐싱은 덜 하고 있을겁니다 - 웹 서버와 MMO 서버와 연결되어 있습니다. 이 두 서버군은 클라이언트와 통신하고 있습니다.


클라이언트 사이드는 좀 더 간단합니다.


Flash는 높은 품질의 게임과 클라이언트 상에서의 게임 로직을 구현할 있게 하고 소켓을 계속해서 열어둘 수 있게 합니다. 어떤 프로토콜도 사용할 수 있습니다.


HTML + AJAX 게임은 단지 웹 페이지일뿐입니다. 최소한의 시스템 요구사항과 제한된 그래픽을 가지고 있습니다.


SNS와의 결합(페이스북과의 결합)은 '쉽지만' 스케일링과는 관련 없습니다. 친구 목록을 얻기 위해 호스트 네트웍을 호출하는 것 같은 일을 합니다. 여러분은 지연시간과 확장이란 문제를 고민하게 됩니다. 점점 커지면서 네트웍 이슈와 관련하여 단계적으로 생기는 성능 저하를 해결하기 위해서 여러분의 인프라스트럭처를 구축할 필요가 생깁니다.  네트웍은 REST API를 제공하고 때로는 클라이언트 라이브러리도 제공합니다.


아키텍처:
데이타는 이 세 개 모두에 걸쳐서 공유됩니다. : 데이터베이스, 캐시, 등등


 

제 2 부 : 솔루션의 스케일링


성장한다고 해서 날려버리지 마라.


두 가지 접근 방법 : 스케일 업과 스케일 아웃


스케일 업은 프로세서나 IO 한계에 다다르면 더 좋은 성능의 컴퓨터로 바꾸는 것을 말합니다.
스케일 아웃은 컴퓨터를 더 추가하는 것을 말합니다.


이런 차이는 대개는 구조적인 문제입니다. 스케일 업을 하면 코드를 바꾸거나 설계를 바꿀 필요가 없습니다. 하지만 스케일 아웃은 확장할 수 있는 아키텍처가 필요합니다. 징가는 스케일 아웃을 선택하였습니다. 이는 커다란 성공을 가져왔습니다. 어떤 상황에서는 필요한 만큼 빠른 컴퓨터를 얻지 못하는 경우도 있습니다. 낮은 성능의 제품을 구하기 더 쉬운 것은 분명합니다. 하지만 스케일 아웃을 지원하는 아키텍처를 가진 애플리케이션이 필요합니다.


롤러코스터 왕국은 엄청나게 많은 사용자를 빠르게 확보하였습니다. 우리는 데이터베이스 한 개에서 시작하였습니다. 일주일 만에 50만 DAU(daily active user)를 달성하였습니다. 병목이 발생했고 급한대로 스케일 업을 하였지만 결국 스케일 아웃으로 전환하였습니다.


데이터베이스는 매우 재미있는 분야입니다. 제일 중요한 것은 고장에 대비하는 것입니다. DB를 확장하는 것은 여러가지 방법이 있습니다. 여기서는 MySQL에 대한 용어를 쓰겠지만 다른 시스템에도 동일한 컨셉이 있습니다.


모두들 하나의 DB에서 시작합니다. 아주 좋습니다. 하지만 두 가지를 고려해야 합니다. 초 당 쿼리 수의 제한입니다. SuperSmack같은 표준 도구를 이용하여 벤치마크를 하십시요. 초 당 쿼리 한계를 알수 있을 겁니다. 그리고 그 한계를 넘어가면 어떻게 될지 궁금해질 것입니다. 이런 경우 최적화 할 수 있는 방법이 있습니다.


두 번째로 플레이어의 쿼리 프로파일을 알 필요가 있습니다. 이른바 인서트, 셀렉트, 업데이트, 평균 초 당 프로파일 말입니다. DAU 수치를 예상해 볼 수도 있습니다. 이 방법은 초 쿼리를 예측할 수 있고 언제 최대 한계에 도달할 수 있는지 수 있기 때문에 매우 유용합니다.


애플리케이션이 성장하고있다면 스케일 아웃을 할 필요가 있습니다.


번째 접근 방법으로 읽기 전용의 데이터를 복제하는 것입니다. 블로그나 웹 속성에는 동작합니다. 하지만 게임에는 적합하지 않습니다. 게임은 더 자주 DB에 수정을 하기 때문에 마스터 DB가 여전히 병목이 됩니다. 하지만 여분으로서는 유용합니다.


두 번째 접근 방법으로는 복수의 마스터를 두는 것입니다. 나누어 기록을 하기 때문에 유용합니다. 하지만 일관성을 해결해야하는 문제가 생겼습니다. 해결하려면 CPU 로드가 증가합니다.


세 번째 접근 방법이 있습니다. 가장 좋은 방법입니다. 애플리케이션 계층에 해결을 위한 로직을 넣는 것입니다. 일명 표준 샤딩 접근(standard sharding approach)이라 합니다. 애플리케이션은 데이터가 어느 DB로 갈지 알고 있습니다.


데이터는 두 가지 방법으로 나눌수 있습니다:


테이블 마다 수직적으로 나누는 것입니다. 간단하지만 DAU가 증가하는 것에 대해서 확장성이 없습니다. 플레이어가 아이템에 따라서 다른 컴퓨터(box)를 접근해야 합니다.


Row를 기준으로 수평적으로 나누는 방법이 있습니다. 어렵긴 하지만 가장 좋은 결과를 얻습니다. 각각의 row는 다른 DB에 들어갑니다. row에서 DB로 연결하기 위해 좋은 맵핑 방법이 필요합니다. 여러 장비들 사이에 row를 스트라이핑 합니다. 프라이머리 키를 DB의 수로 나머지 연산을 하는 방법입니다. row의 변하지 않는 프로퍼티에 이 같은 방법을 적용하는 것이죠. 마치 논리적인 RAID 0처럼 동작하는 것이죠. 좋은 점은 용량을 증가할 수 있다는 것이죠. 샤드(shard)를 추가하는 작업은 다음 순서로 합니다. 읽기 전용 슬레이브 서버를 추가합니다. 동기화를 하고 셧다운을 합니다. 복제를 끊고 백업을 멈춥니다. 순식간에 용량이 두 배가 되는 것입니다.


하지만 더 좋은 방법이 있습니다. 어디로 갈 지 체크하는 인터액션 레이어라는 것이죠. 하지만 이 방법이 좋은 점은 간단하기 때문입니다. 원자적 복제가 필요없고, 기술도 필요없습니다. 튼튼하고 관리하기 쉽습니다.


YoVille : 두 가지 방법으로 나누었습니다. 여러 Join이 나뉘어졌습니다. 데이타 패턴은 다시 설계되어야 했습니다. 샤딩을 했기 때문에 쿼리마다 샤드 id가 필요하게 되었습니다. 데이터 복제 방법은 높은 데이터 사용량을 따라 잡느라 어려움을 겪었습니다. 샤드로 나뉜 월드에서 샤드간의 join을 쉽게 할 수 없었습니다. 방법은 있었지만 비쌌죠. 대신에 여러 번 셀렉트를 하거나 데이터를 비정규화(정규화의 반대)를 하였습니다. 소위 아이템 카탈로그와 인벤토리 같은 식으로 말입니다. 카탈로그가 충분히 작으면 메모리에 그냥 둡니다.


트랜잭션과 포린 키 제한은 넘어가겠습니다. 애플리케이션 레이어에 이 문제를 넘기는 것이 더 쉽습니다. RAM에 많은 것을 넣어두면 이것에 대해 할 일이 줄어듭니다.


캐싱
DB에 대해 이야기 할 필요가 없다면 넘어가지요. 메모리를 써서 스피드를 얻는 것입니다. 요즘 가장 유행인 것은 memcache 입니다. 네트웍에 붙은 램 캐시죠. 캐싱 쿼리뿐만 아니라 공유 게임 상태를 저장하는데도 사용합니다. 앞서 예를 들었던 사과를 따는 일 같은 것 말이죠. 간단한 키/값 쌍을 저장합니다. 구조적 게임 데이터를 거기에 넣어 둡니다. 서버간의 동작 처리를 위한 뮤텍스도 넣어둡니다. 경고 : 이것은 LRU(least recently used) 캐시입니다. DB가 아닙니다. 파일 시스템이 없습니다! 너무 많은 데이터를 거기에 넣으면 오래된 데이터를 삭제합니다. 그래서 데이터를 DB에 썼는지 확인할 필요가 있습니다.

 

bc(binding component ?)는 매우 근본적인 것이어서 DB와 마찬가지로 샤드로 나눌 수 있습니다. 서버마다 다른 키를 사용하거나 수직 또는 수평적으로 샤드로 나눌 수 있습니다.


게임 서버
웹 서버 부분은 잘 알려져 있습니다. 로드 밸런스. 선호하는 방법은 프록시를 이용한 로드 밸런스입니다. 보안 관점에서는 아주 좋습니다. 하지만 이것은 단일 기점 결함(SPOF, single point of failure)입니다. 그리고 프락시는 최대 커넥션이 있기 때문에 용량의 한계도 있습니다.

 

이런 로드 밸런스의 한계에 도달하면 로드 밸런서는…. 그래서 그 앞에 DNS 로드 밸런싱을 합니다. DNS 전달에 시간이 걸리는 것은 중요하지 않습니다.


그밖의 유용한 것으로는 미디어 서버에서 미디어 트래픽을 떼어놓기 위해 리디렉팅을 하는 것입니다. swf 파일, 오디오 파일 등은 크기가 크기 때문에 게임 서버와 같은 서버에서 서비스 할 수 없습니다. 미디어 파일에 대해서 모든 네트웍 용량을 다 쓸 것입니다. 이것은 CDN에 넣어두세요. 이미 클라우드 시스템에 있다면 거기에 넣어 둘 수 있습니다. 리소스들이 사용자에게 가깝게 있기 때문에 CDN은 빠르게 처리합니다. 다른 방법으로는 미디어 파일만을 사용하는 가벼운 웹 서버를 사용하는 것입니다. 하지만 필연적으로 파일이 아니라 게임 데이터만을 위한 커다란 서버 은행을 원할 것입니다. 이를 위해서 많은 자릿수의 성능을 필요합니다.


MMO 서버
셋업에서 일반적이지 않은 부분입니다! 서버끼리 서로 통신하지 않기 때문에 확장은 쉽습니다. DB는 샤드로 나누면 되고 memcache도 샤드로 나누면 됩니다. 웹은 로드 밸런스 팜으로 해결합니다. 하지만 MMO는? 글세요, 우리는 다른 서버와 마찬가지로 샤드로 나누는 방식을 선택했습니다.


서로에 대해 가지고 있는 정보를 제거하고 복잡도를 높이거나 낮추시기 바랍니다.움직이는 것은 어느정도는 로드 밸런싱을 의미합니다. 내부 서버간의 통신을 줄이세요. 라이브 이벤트에 참여한 모든 참가자는 한 서버에 있어야 합니다. 스케일 아웃은 직접 샤딩을 의미하는 것은 아닙니다. 서드파티를 통한 샤딩도 좋습니다. 이벤트 트래픽을 위한 별도의 서비스도 가능합니다.


플레이어가 자신의 접속을 선택할 수 있도록 하지 마세요. '가난한 자의 로드밸런싱'(poor man's load balancing)은 로드밸런싱 pool에서 부하가 걸린 서버를 제거하는 방식입니다. 많은 서버들이 부하가 걸리면 더 많은 인스턴스를 추가하고 거기에 새 컨넥션을 보냅니다. 로드밸런싱이 확장성을 제한한다는 것은 그다지 사실이 아닙니다.


설치 다운타임은 금전적 손실과 같습니다. 웹에는 PHP 파일만 복사하면 됩니다. 소켓으로 연결되는 서버는 더 어렵습니다. 제로 다운타임으로 배치하는 방법은? 이상적으로는 새 그림자 서버를 셋업하고 천천히 사용자를 넘겨 받습니다. 이것은 버전 문제가 있기 때문에 어려울 수 있습니다. 이런 이유로 다른 웹 서버에 비교하면 가장 어려운 일입니다.


용량 계획
우리는 스케일 아웃이 유용하다고 믿습니다. 하지만 요구는 빠르게 변할 수 있습니다. 충분한 서버를 어떻게 준비할 것인가? 이것은 다른 세부 계획입니다. 물리적인 서버를 준비할 것인가요? 아니면 클라우드로 갈 것인가요? 여러분이 자신의 장비를 가지고 있다면 선택의 여지가 많고 컨트롤을 할 수 있으며 더 높은 고정 비용을 갖고 있습니다. 클라우드는 낮은 비용이 들지만 더 빨리 준비를 할 수 있습니다. CPU를 컨트롤 할 수도 없고 IO를 가상화 할 수 있습니다. 클라우드에 있으면 스케일 아웃이 스케일 업보다 쉽습니다.

 

서버군을 관리하기 위해 커스텀 대시보드가 필요합니다. Munin은 서버 모니터링 그래프이고 Nagios는 경고를 위한 것입니다. 분석하기 위한 일단계는 각 서버 패밀리에 대한 분리된 그래프를 제공하는 것입니다. 그렇게 해서 시스템 내의 해당 레이어에 대한 서버 패밀리를 격리할 수 있습니다. memcache 사용이 순간적으로 뛰어오르는 것을 발견하면 특정 장비들을 분석할 수 있습니다.


Nagios는 서버 로드, 4를 초과한 CPU로드, 테스트 계정이 접속하는데 세 번 이상 시도 실패 등에 대해서 SMS 경고를 합니다.


비즈니스 상태에 대해서도 경고를 하도록 하세요.  DAU가 일일 평균 이하로 떨어지는 경우 말입니다. 때로는 서버 상태보다도 빠르게 반응하기도 합니다.


만약 클라우드에서 서비스를 하고 있다면 네트워크 문제는 더 자주 발생합니다. 네트워크에서 분리되거나 재시작은 흔합니다. 방어적이 되세요. 단일 지점 결함을 줄이도록 하세요. 방어적으로 프로그래밍을 하세요. 이것은 게임쪽 구현에서도 마찬가지입니다.


Q&A


q: 왜 MySQL인가요? 스케일링의 경우 다른 DB도 좋은데요?
a: 더 오래되고 더 좋은 커뮤니티를 가진 DB도 있습니다. 하지만 그런 큰 DB가 하는 기능을 사용하지 않습니다. 샤딩 측면에서 되돌아보자면 트랜잭션과 같은 것도 많이 하지 않습니다. 그런 복잡한 일은 애플리케이션 레이어로 옮기는 것이 더 쉽습니다. 그런 방법을 쓰기 시작하면 좋은 해결책이 됩니다.


q: 그런 종류의 것에 대한 벤치마크를 해보셨나요? 다른 DB에 대해서 말이죠.
a: 당연하죠.  


q: 데이터 무결성에 대해서 이야기하죠. 포린 키 제한을 없앤다는 것이 엄청난 소리로 들리는데요 악몽같은 일이 아닌가요?
a: 아닙니다. 실은 전혀 나쁘지 않습니다. 특히 항상 DB를 접근하지 않도록 하면 그런 위험한 상황에 자주 빠지지 않는다는 것을 알게될 겁니다.


q: 테이블을 추가하는 경우 복잡해지지 않나요?
a: 그다지 나쁘지 않아요. 잘 해왔습니다


q: 브라우저를 고른다고 한다면 WebGL을 고려할 것인가요?
a: 재미있는 많은 기술들이 있습니다. 3D 브라우저, 실버라이트 등. 개인적으로는 그것들을 사용하는 것에 흥미가 있습니다. 그것들이 높은 시작 침투력을 갖기 시작한다면요.


q: 왜 플래시를 선택했나요?
a: 모든 사람들이 설치하고 있으니까요. 아주 실용주의적인 접근이죠


q: DB는 백업하나요?
a: 물론


q: 어떻게?
a: 클라우드나 아마존으로 한 번 가보세요. 그런 접근을 사용해야 합니다. 우리는 여러가지 백업 솔루션을 갖고 있습니다.


q: 나는 친구들간의 많은 join이 있을 것 같은데요 그들은 여러 샤드에서 이야기를 해야 합니다. 친구들을 같은 샤드로 넣으려고 노력하나요?
a: 아니요, 모든 사람은 서로 다른 친구를 갖고 있습니다.


q: SNS 결합을 할 비동기를 지원하지 않는 PHP 때문에 문제에 부딪힌 적이 있나요? SNS에서 응답이 지연되거나 쓰레드가 부족해진 경우는 없나요?
a: SNS 통신을 할 때 지연을 겪을 겁니다. 하지만 전체 인프라에서 일부분에 지나지 않습니다. 이것은 PHP 뿐만아니라 어디서든지 발생할 수 있습니다. 이것을 피해가도록 프로그래밍 해야 합니다. 이런 일이 바인딩 컴포넌트에 발생했을 때 이를 해결하기 위해 좋은 해결법을 찾도록 해야 합니다.


q: 그래서 PHP에서 다른 것으로 옮길 생각은 없으신가요? 프로세스를 지연 시키나요?
a: 우리는 그런 규모에서 동작할 수 있도록 하기 위해 PHP 내부를 깊게 파야만 하는 일이 여러 차례 발생하였었습니다.


q: 그렇다면 PHP를 고치기도 했단 이야기인가요?
a: 우리는, 음… 예, 고쳤습니다.


q: NoSQL 과 같은 것에 대해서는 어떻게 생각하고 계신가요?
a: 적극적으로 알아보고 있습니다. 기술이 충분히 성숙하면 좋은 대안이 될 수 있습니다. 현재로서는 구현하고 있지 않습니다.


q: 파티션에 대해서 질문하죠. 두 개의 테이블로 나눈다고 합시다. 두 개의 DB 간의 거래에 대한 아이템을 가정하면 트랜잭션은 깨질 수 있나요? 두 개의 다른 DB에 대해 소유권 변경은 어떻게 하나요?
a: 복수개의 DB간의 보장하는 것이 필요합니다. 데이터를 memcache 계층에 넣어 둡니다. 락을 걸고 쓰기를 합니다. 아니면 애플리케이션 레이어에 두고 '간단한 트랜잭션'을 구현합니다.


q: 클라우드에 있다고 할 때 서비스 접근 방법을 사용하지 말아야 하나요? 각각의 PHP 계층이 서비스 계층을 이용하는 대신에 직접 쓰기를 하면요? MMO로 치자면 업적 또는 출석 서비스 같은 것 말이죠. 웹 서비스로서 서비스 계층을 유지할건가요? 아니면 DB에 직접 쓰기를 원하시나요? 서비스 호출 시간이 더 길어집니다. 클라우드라 할지라도요.
a: 예. 이것을 잘 모듈로 나누어야 합니다. 우리는 다른 기계에 넣지 않도록 결론내렸습니다. 게임 로직으로 같은 장비에 있으면 네트웍 트래픽이 발생하지 않습니다. 그래서 분리된 계층이 없습니다. 그래서 모듈로 나누어야 합니다. 하지만 이 모듈이란 말이 네트웍 구조의 용어는 아닙니다.


@모루

 


Zynga의 다른 발표자료
http://www.slideshare.net/amittmahajan/building-big-social-games

 

지역태그 : 서울
  1. 퓨처워커의 생각

    Tracked from futurewalker's me2DAY 2010/03/23 08:10

    RT 얌얌 naruter님 RT JongwonKim님: 자료를 정리하다가 마음에 들어서 전부 번역해버렸다. 'GDC2010: 소셜 게임 서비스의 확장, Zynga' http://www.forge.kr/24 #GDC2010

  2. 퓨처워커의 생각

    Tracked from futurewalker's me2DAY 2010/04/12 19:51

    비싼 DB 필요없다? naruter님 JongwonKim님: 자료를 정리하다가 마음에 들어서 전부 번역해버렸다. 'GDC2010: 소셜 게임 서비스의 확장, Zynga' http://www.forge.kr/24 #GDC2010

트랙백 주소 :: http://www.forge.kr/24/trackback/
옵션
댓글 달기

어제 구글에서 직접 만든 첫 번째 스마트 폰인 넥서스 원을 만져볼 기회가 있었다.
자세한 하드웨어의 스펙은 여기를 참고하기 바라고 간단한 느낌만 적어볼까 한다.
만져본 제품은 SIM 카드가 없어서 단순히 PDA로만 동작하여 실제 폰 화면은 써보지 못했다.

사진처럼 - 아이폰으로 찍은 것이라 화질은 양해바란다 - 넥서스 원은 안드로이드 마크가 찍힌
파우치 안에 들어있었으며 꺼내보니 아이폰보다 약간 더 좁고 위아래로 긴 단단한 느낌이 들었다.
잡는 부분의 재질은 알루미늄 다이캐스팅으로 찍은 듯한 금속성 느낌이었다.

하단 끝부분에는 블랙베리처럼 작은 스크롤 용 트랙볼이 있어 한 손으로 다루거나 장갑을 끼었을
경우에는 무척 편리할 것 같은 생각이 들었다. 지인 중에 블랙베리 사용자는 이 트랙볼 때문에
아이폰의 멀티터치가 안부럽다는 사람도... (결국 아이폰과 같이 들고 다니는 듯)

하단은 Palm 처럼 화면 밖에 터치로 동작하는 네 개의 버튼이 있고 모든 것은 WVGA(800 x 480)화면
에 들어 있었다. 아이폰의 480 x 320 에 비해 두 배 이상 높은 해상도라 화면이 훨씬 더 정교하였지만
일관된 폰트 크기나 디자인적인 측면은 기존의 PDA를 보는 것과 차이를 느끼지 못했다.

위 사진의 메인 화면의 성운은 서서히 돌아가는데 화면을 스크롤하다보면 내 손가락에 따라 성운의
방향이 조금씩 바뀐다.

자세히 써보진 못했지만 멀티 데스크 탑처럼 앱의 아이콘을 5개의 영역에 배열할 수 있고 가운데
바둑판 아이콘을 누르면 여러 개의 아이콘을 모아서 원하는 기능을 찾을 수도 있었다.

화면 스크롤은 아이폰 만큼 부드럽지 못하다. 여타 제품에 비해서 매끄럽긴 하지만 스크롤 중간에
다른 태스크로 전환되는 듯한 화면이 튀는 느낌이 있다. 아이폰과 달리 UI 처리에 최우선 순위를
주고 있지 못한 것 같다. (안드로이드의 UI 처리 구조의 문제일 수도 있으나 공부를 하지 않았으니
속단은 금물이다) CPU가 아이폰보다 빠르니 더 부드러워져야 하는 것 아니냐는 사람도 있겠지만
하드웨어 가속이 되는 스마트폰의 경우 CPU 속도와는 큰 차이가 없다. 최적화 보다는 무엇이 더
중요한가 라는 질문에 따른 설계 철학의 문제라 본다.

멀티터치가 가능함에도 미국에서 판매하는 제품에는 멀티 터치를 지원하지 않는다고 한다. 아마도
애플의 특허 때문이라 생각하는데 두 손가락으로 사진을 줌 인/아웃을 하는 동작을 꼬집다는 뜻의
pinch 기능을 쓰지 못하는 것은 무척 아쉬운 것 중의 하나다.
(얼마전 옴니아2에서 박진영 씨가 두 손가락으로 웹 브라우저를 확대하려고 무척 애쓰는 것을 보면서
웃었는데 옴니아2에서도 pinch 기능을 지원하지 않는다)

다른 브라우져를 올려서 멀티 터치 브라우징이 가능하게 한 사람도 나왔으니 조만간 해결책이 나오
지 않을 까 생각한다.


뒷 면은 500백만 화소의 플래시를 장착한 카메라가 달려있다. 사진의 오른쪽에 보이는 슬릿 구멍은
스피커 구멍이다. 아이폰처럼 하단에 스테레오로 달려있지 않고 뒷 면에 하나만 달려있는 것이 특이했다.

뒷면 케이스에 그려진 그림은 구글 직원들에게만 제공된 것에만 그려져있다고 하는데 안드로이드가
흔드는 깃발안의 2차원 바코드가 무척 궁금했다. 내 아이폰의 앱에는 2차원 바코드 리더가 없어서
결국 넥서스 원의 카메라로 인식해서 무슨 의미인지 알아냈다. 마지막 사진이 그 내용이다.


배터리 교환을 위해 뒷 면 커버가 분리되는데 금속 재질은 아니었다. 안테나가 있을 것으로 추정되는
하단 부분도 부드러운 코팅이 된 플라스틱으로 보인다.
가운데 얇은 배터리에는 HTC innovation 이라는 글자가 선명하게 보인다. 기계식 줌이 달린 카메라와
LED 플래시, 스피커를 볼 수 있다. 앞의 사진에서는 명확하게 보이지 않는데 왼쪽에 아주 작은 구멍이
케이스에 나 있는데 노이즈 캔슬링을 위한 마이크라고 한다. 그래서 통화 중에 환경음을 제거하여
통화 품질이 좋다고 한다.
아랫쪽에는 4GB 마이크로 SD 카드와 SIM 카드를 꼽을 수 있는 곳이 보인다.

배터리 탈착이 가능하므로 사용이 많은 사람들에게는 안심일 것이다.
하지만 배터리 탈부착이 가능하면 충격에 의해 배터리가 갑자기 튕겨져 나가는 위험이 있어서
동작 중인 스마트폰에게는 치명적인 문제 - 갑자기 전원이 나가면서 생기는 플래시 파일 시스템
크래시나 미처 플래시에 저장하지 못한 정보의 손실 - 로 인해 AS를 받아야 할 수도 있다.

애플이 아이폰이나 아이팟에서 배터리 교체를 전혀하지 않는 이유 중에 의도치 않은 전원 차단으로
인한 시스템 크래시 방지가 가장 크다고 생각한다. 아예 하드 리셋 버튼 구멍 - Palm을 쓴 사람들은
시스템이 먹통이 되면 이 리셋 버튼을 눌러댔다 - 을 없애 버린 것도 갑작스런 리셋이나 전원 차단을
막겠다는 것이다. 모든 것을 통제하겠다는 애플의 철학과도 일치한다. 하지만 안드로이드는 그런
철학을 가지지 않았으므로 일반 PDA와 같다. 휴대폰 처럼 함부로 배터리를 빼지 않기 바랄 뿐이다.



앞서 말한 것처럼 뒷 면에 있던 2차원 바코드를 넥서스 원에서 인식 시킨 화면이다.
http://www.android.com/holidays 라는 링크가 인식되는데 실제 가보면 www.android.com 으로
바뀐다. 아마도 기획되었다가 취소된 사이트로 보인다.
인식한 URL을 세 가지 방법으로 전송하는 화면이 떠 있는데 브라우저를 선택하였으면 WebKit 기반의
웹 브라우저가 뜬다. 아직 크롬이 아닌 것이 의아한데 아마도 크롬이 나오기 전부터 최적화
된 것이라 계속 쓰이고 있는 것이 아닌가 싶다.

아주 잠깐 만져본 것이라 사용기까진 아니고 만져본 소감기 정도라 보면 될 것이다.
지난 주에 국내 첫 개통자도 나왔으니 조만간 많은 사용기를 웹에서 볼 수 있을 것이라 생각한다.

@모루

지역태그 : 서울
  1. 모루 2010/01/27 13:44 답글수정삭제

    올해 미국에서 열리는 GDC 2010에서 안드로이드 개발자들은 안드로이드 개발 킷을 무료로 준다고 함.

    http://www.gdconf.com/androidphone.html?cid=GDC10_GOOGLEX1

  2. SK 대반격에 나서다!

    Tracked from Me, myself, and John 2010/02/08 00:01

    아이폰의 열풍이 정말 굉장하죠?! 다양한 어플리케이션에 유용한 정보, 그리고 광대한 아이폰만의 인적 네트워크가 형성이 되니... 아이폰은 단순히 "핸드폰"이라기 보다 사회의 어느 특정 부류를 분류하는 일종의 '지표'가 되어버린 거 같습니다. "생각대로 T" 를 외치며 1등 이동통신 회사로 군림해 오던 SK. 하지만 이런 SK도 아이폰의 후폭풍은 피해갈 수 없었죠?!!ㅎ 많은 SKT 사용자들이 단순히 아이폰이 KTF 에서 밖에 지원이 안 된다는 이유로..

트랙백 주소 :: http://www.forge.kr/23/trackback/
옵션
댓글 달기

길드워2의 종족 소개 동영상

게임 | 2009/12/07 02:30 | 모루


길드워2의 종족들에 관한 동영상이 지난 4일 올라왔습니다. 자막이 없습니다만 영상만 봐도 충분히 이해가 갑니다. 휴먼, 차르, 노른, 아슈라, 실바리 종족이 자신들의 이야기와 함께 차례로 소개가 되고 있습니다. 영상은 2D와 3D를 같이 보여 주는 시네마틱 화면과 실제 게임 화면 캡쳐로 만들어진 것 같군요.
왼쪽부터 실바리, 아슈라, 노른, 휴먼, 차르 종족입니다. 길드워의 eye of north 까지 해보셨다면 실바리 족 말고는 다 만나보셨을 것입니다. 길드워의 캐릭터들은 특색이 있습니다만 아시아 시장에 반응할만한 아름다움이나 깔끔함은 부족합니다. 미국이나 유럽에서는 크게 중요한 것 같지는 않습니다만 커스터마이징이 잘 된 아이온이 미국에서도 먹히는 것을 보면 캐릭터는 아쉬움이 남네요. 아트 디렉터인 다니엘 도시우 씨가 워낙 배경 아트에 집중을 하는 경향이 있긴합니다만 길드워의 캐릭터가 좀 더 잘 나오면 아시아쪽에도 더 인기가 있지 않을까 생각해봅니다.

그리고 게임 영상을 보니 기존의 저사양에 잘 돌던 길드워보다는 사양이 많이 높아야 할 것 같습니다. 화면에 나오는 배경이나 이펙트 등이 많이 복잡하네요. 기존의 MO 방식이 아니라 MMORPG를 만들겠다고 하니 어떤 식으로 나올지 궁금하군요.

길드워2 공식 홈페이지에서 full HD동영상을 다운 받아서 볼 수 있습니다.


영상의 마지막에는 오랜 잠에서 깨어난 용을 잡으러 가는 것으로 끝납니다. 길드워2의 정보가 많지는 않습니다만 계속 월페이퍼 같은 것이 나오니 가끔 공식 홈페이지를 가보시거나 페이스북의 길드워2 정보에 가입하면 도움이 될 것입니다.

길드워2 아트 북도 나와 있으니 관심있는 분은 하나 챙겨두시기 바랍니다.

모루@

태그 : GW2,길드워2
지역태그 : 서울
  1. ParkPD 2009/12/07 07:34 답글수정삭제

    취향 문제랄까, 독일에서 만난 길드워 커뮤니티 사람들은 아이온 그래픽을 그다지 좋아하지 않더군요. 여성스럽다는 의견도 있었구요.

    • 모루 2009/12/07 13:07 수정삭제

      그 사람들이 말한 그래픽이 파스텔 톤의 배경을 말하는 것인지 너무 부드럽게 다음어진 캐릭터를 말하는 것인지 모르겠네요. 배경을 보자면 좀 더 원색적인 강한 색감의 길드워가 아이온보다 잘 먹힐 것 같습니다. 아이온의 파스텔 톤의 배경은 저도 별로.
      캐릭터만 보자면 아이온 게임 내의 등장 인물들은 여전히 동양쪽 취향이 강하게 들어 있기는 하죠. 커스터마이징으로 자신의 캐릭터를 변경할 수 있어도 게임 내의 NPC는 바꾸기 어렵겠네요.
      하지만 서양 취향의 캐릭터를 커스터마이징 할 수 있는 것은 큰 장점으로 다가 가는 것 같습니다. 미국과 유럽의 취향이 다르기도 하니 한 마디로 정의하는 것이 무리일지도...

트랙백 주소 :: http://www.forge.kr/22/trackback/
옵션
댓글 달기

이전 글에 많은 분들이 관심을 보여주셔서 감사합니다.

제가 회사 인사 관련자로 보신 분도 계시지만 전 프로그래밍팀 팀장에 지나지 않습니다. 저희 팀에 필요한 사람들을 채용하고자 이력서를 검토한 것입니다. 작은 회사에 있을 때는 인사 관련 일도 하였지만 큰 회사에서는 철저하게 일이 나뉘어 있습니다. 저는 프로그래머로서 적합한지 판단할 뿐입니다.

이번 주에는 서류 전형과 역량 평가에 통과한 면접자들의 1차 면접이 진행되었습니다. 역량 평가에 대해서는 나중에 이야기 할 기회가 있겠지만 이번에는 면접에 대해서 이야기 하고자 합니다.

제가 이야기 하는 기준은 저희 팀에 맞는 기준이므로 각자 상황에 맞춰서 이해해주시기 바랍니다. 다들 아시겠지만 모든 회사에 적용되는 규칙은 없습니다. 적당히 상황에 맞추어 행동하여야 합니다

그럼 이야기를 시작해보지요.

* 면접 시간에는 늦지 말아야죠
  당연한 이야기겠지만 면접 시간에 늦으면 일단 성실성에서 감점을 당합니다. 시작부터 마이너스 점수에서 시작하면 곤란하겠죠? 딱 1분 밖에 늦지 않았다고 변명을 해도 소용 없습니다

* 정장을 입은 경우에는 넥타이를 잘 확인하세요
  남자에게 해당하는 이야기입니다. 아직 사회 경험이 없는 학생들이 양복을 입고 오는 경우에 익숙치 않아서 복장이 어색한 경우가 많습니다. 특히 히 느슨하게 풀려있는 넥타이를 하고 있는 경우가 많았습니다. 아마도 긴장이 되어서 풀어 두었을 것 같은데 면접장에 들어올 때는 화장실에 들려서 한 번 더 확인을 하고 들어오세요. 회사에 따라서는 검은색 양복보다는 캐주얼한 겉옷이 더 좋은 인상을 주는 곳도 있으니 인사팀에 물어보세요.

* 자기 소개를 할 때는 짧고 간결하게 하세요
  면접자에 대한 정보는 이미 이력서에 있습니다. 그런데도 자기 소개를 시키는 것은 긴장을 풀게 하려는 의도가 있기 때문입니다. 하지만 남들이 긴장하고 있을 때 분명하게 자신을 부각 시키는 것은 좋은 전략입니다. 미리 연습을 하고 오는 것은 좋습니다만 너무 길게 소개를 하거나 과장되는 것은 오히려 나쁜 인상을 심을 수 있습니다. 분명한 목소리로 자신있는 모습을 보이는데 집중하세요. 어차피 소개 내용은 별로 귀담아 듣지 않습니다.

* 이력서에 틀리게 기록한 것이 있다면 미리 파악하고 들어오세요
  종종 이력서에 군대 다녀온 기간이 제대로 기입이 되지 않거나 학력 기록이 틀리게 기입하는 경우가 있습니다. 면접 시작 부분에 정확하지 않은 기록을 확인하는 과정을 거치기 때문에 자신이 틀리게 기입하였는지 한 번 더 확인을 하면 만회를 할 수 있습니다. 하지만 그런 경우를 본적이 없네요. 제출 한 번 하면 다시는 그 이력서는 살펴보지 않는 것 같습니다. 면접관들이 면접 중에 제일 많이 보는 것은 이력서입니다.

* 앞 사람의 대답을 똑같이 따라하지 마세요
  같은 질문을 여러 사람에게 시키는 경우 먼저 대답한 사람의 의견과 비슷한 경우가 있습니다. 할 말이 없는 상황이 될 수도 있습니다. 그렇다고 앞사람과 같은 의견이라거나 거의 비슷하게 되풀이 하는 경우가 있습니다. 면접관은 앞사람의 의견을 따라한다고 판단할 수 있습니다. 같은 의견을 피력해야 하는 경우 다른 단어를 쓰고 문장의 형태를 바꾸어서 표현하세요.

* 지원한 회사에서 뽑고자 하는 사람의 요구 사항을 명확하게 알고 있어야 합니다
  서류 전형에 통과하면 인사 관련자에게 문의를 해서 어떤 일을 하는지 파악하고 어떤 자격 요건을 필요로 하는지 확인을 해두세요. 물론 채용 공고에 써 있습니다. 좀 더 자세한 설명을 요구하세요. 지원한 회사가 Java 프로그래머를 원하는지 C++ 프로그래머를 원하는지 정도는 파악하고 있어야죠. 회사가 원하는 요건 갖춘 사람이라고 어필을 해야 합니다. 하지만 거짓말을 하지 마세요. 면접관은 프로입니다. 금방 들통 납니다.

* 질문을 잘 모르겠으면 모르겠다고 하세요
  뻔히 질문 내용을 모르는 것이 보이는데 어떻게든 말을 해보겠다는 사람이 있습니다. 질문 자체를 이해를 못 하고 있다는 인상을 받습니다. 차라리 모른다고 말하거나 설명을 요청하세요. 동문서답하면서 길게 대답하는 경우를 보게 되는데 정말 난감합니다

* 자신의 장점과 단점을 잘 파악하고 있어야 합니다
  자기 자신의 장점을 잘 파악해서 면접관들에게 어필을 하고 단점은 명확하게 해서 어떻게 보완할 것인지를 준비해두세요. 자신의 단점을 스스로 잘 파악하고 있는지 묻는 경우가 있습니다. 그렇다고 스스로 무덤을 팔 필요는 없습니다만 자기가 자신의 단점을 잘 알고 극복하려고 한다는 인상을 전달을 잘 하면 더 좋은 점수를 받습니다. 횡설수설하기 시작하면 합격에서 한 발 멀어지게 됩니다.

* 지원 분야에 대한 신간이나 유명한 책 한 권 정도는 정독하고 면접을 보세요
  프로그래머로 지원하면서 프로그래밍 관련 책은 수업 시간에 읽은 것 밖에 없다고 한다면 한심해 보입니다. 다른 분야도 마찬가지입니다. 자신이 끊임 없이 노력한다는 모습을 보여야 합니다. 하지만 제목만 외워서 읽은 척은 하지 마세요. 반드시 책 내용을 물어봅니다. 저 같은 면접관은 면접자가 애매하게 답변을 하면 계속 파고 듭니다. 면접에서는 정직해야 합니다. 신뢰가 깨지는 순간 면접에 실패합니다.

* 다른 면접자의 답변에 기죽지 마세요
  제일 중요한 이야기입니다만 면접 중에 다른 면접자들의 답변에 기죽지 마세요. 엄청한 경력이나 성적을 가진 면접자와 같이 면접을 본다면 운이 없는 것이죠. 하지만 1차 면접 정도에서는 일정 기준만 넘으면 됩니다. 흔들리지 말고 자신의 장점을 잘 표현하세요. 단 한 명을 뽑는 것이 아니라면 자신에게 기회는 얼마든지 있습니다. 한 명만 뽑는다면 마음을 비우시고 다른 회사 면접 준비에 집중을 하셔도 좋습니다. 하지만 잊지 마세요 종종 그런 면접자들은 여러 회사에 합격하는 경우가 많습니다. 자신에게 기회는 언제나 찾아옵니다. 항상 최선을 다하세요.

* 면접관에게 질문할 것을 준비하세요
  종종 면접이 끝나면 면접관이 자신에게 물어볼 것이 없냐고 하는 경우가 있습니다. 대부분은 없다고 하는데 자신이 어필할 좋은 기회를 놓치는 것입니다. 면접관을 감동시킬 수 있는 질문을 준비하세요. 지원한 회사에 꼭 가고 싶다는 것을 표현하는 질문이면 더 좋습니다. 공채 시즌에는 여러 회사에 지원하는 경우가 많기 때문에 합격한 사람이 반드시 입사한다는 보장이 없습니다. 그래서 면접관은 지원자가 회사에 다닐 의지가 있는지 확인하려 합니다. 면접관에게 지원한 회사 또는 면접 자체에 관한 질문을 함으로써 회사에 꼭 입사하고 싶다는 의지를 전달할 수 있습니다.

------------------------

정리하다보니 할 이야기가 꽤 많습니다. 최근에 Ignite Seoul 발표가 있어서 이 내용으로 발표를 하려고 했으나 지원자가 많아서 발표자에 들지 못하였습니다. 비슷한 주제로 발표하는 분이 있으니 잘 된 것이지요.
 
면접 관련한 글을 올렸더니 면접 시 변별력이 떨어진다고 걱정하는 분도 있더군요. 하지만 제가 정리한 것은 아주 기본적인 것이라 생각합니다. 면접 자체를 매끄럽게 하고 서로에게 좋은 인상과 즐거운 면접이 되기 위함입니다.

면접에 대한 교육을 하면 항상 나오는 이야기가 있습니다. 영어로 interview라는 의미는 서로 상대방을 알아간다는 것을 뜻한다고 합니다. 면접이 일방적으로 진행되는 것은 원하는 바가 아닙니다. 자신을 적극적으로 표현하고 면접관의 의도와 원하는 것을 파악하는 과정이 되어야 합니다. 아무것도 말해주지 않으려는 면접관을 만나셨다면 운이 없는 것입니다. 대부분의 면접관은 무엇인가 전달하려 합니다. 놓치지 마세요.

@모루
지역태그 : 서울
  1. ParkPD 2009/10/28 10:27 답글수정삭제

    제목을 좀 더 직접적으로 쓰셨으면 저보다 모루님이 선정되지 않으셨을지... :)
    자료 잘 정리해서 발표에 잘 쓰도록 하겠습니다. 괜찮죠? ㅎㅎ

    • 모루 2009/10/28 11:04 수정삭제

      제목이 모호하긴 했지요. 제목 만으로 발표자를 선정한다고 뒤늦게 이야기를 해서 그냥 포기했습니다. 어떤 내용인지 요약도 없이 사람들에게 투표시키는 방식도 불만이고요. 하지만 잘 되길 바라곤 있습니다. ^^ 발표 잘 하세요. 토요일 아침에 뵙지요

    • ParkPD 2009/10/28 12:41 수정삭제

      저도 투표 방식은 좀 불만이예요 ㅎㅎ
      토요일이라함은 아꿈사 스터디 참석하시나요?
      혹시 오전 startup 발표 해 주실만한 내용 있으시면
      하나 부탁드립니다. 꾸벅...

  2. 성훈 2009/11/04 16:50 답글수정삭제

    안녕하세요. 잘 읽고 갑니다. ^^

  3. 지나가다 2010/04/28 11:49 답글수정삭제

    잘 읽었습니다.^^ 다만;;
    한가지 재미있는게 저 맨위의 사진은 어디서 구하신건가요?-_-;;;
    저런 조신한 포즈의 서양여자의 면접을 상상하기 어려워
    한번 여쭈어봅니다;;;

    • 모루 2010/05/01 11:28 수정삭제

      구글 검색에서 찾았습니다. 외국인들도 다양한 성격을 가지고 있지요. 우리가 얼마나 많은 선입견에 빠져있는지 모르실겁니다. ^^

트랙백 주소 :: http://www.forge.kr/21/trackback/
옵션
댓글 달기

이번 주에 회사의 공채 마감이 있었습니다. 시간 여유가 많지 않아서 차근차근 보지는 못했지만 700여명의 이력서를 검토하게 되었습니다. 하나를 보는 데 1분만 할애를 해도 12시간은 꼬박 보아야 하는 양이었습니다.
이력서에 첨부된 포트폴리오에 성적 증명서에 제대로 보려고 하니 끝이 안나더라구요.

결국 빠르게 검토할 수 있는 기준을 세워서 필터링을 하였습니다. 하지만 이력서라는 것이 기계적으로 판단할 수 있는 성질의 것은 아닙니다. 그렇게 간단히 결정되는 것이면 사람을 뽑는 것이 그렇게 어렵지는 않았겠지요.

하나 하나 이력서를 읽으면서 지원한 사람들의 성의 없음에 놀라게 되었습니다. 웹 입력 방식의 입사 지원 양식에 문제가 있나 생각을 해보았지만 사람들간의 차이가 많은 것을 보니 그것이 원인은 아닌 것 같더라구요.

이력서를 보면서 들었던 생각을 메모하였다가 여기에 올려봅니다. 그리고 다양한 회사가 있으니 IT관련 회사의 지원하는 경우로 한정 지어 생각해주세요. 모든 회사가 동일한 방식으로 검토하는 것은 아니니까요.

* 입력 양식에 똑바로 기입할 것
  정말 간단한 것이죠. 하지만 틀리게 입력된 데이터가 얼마나 많은 지... 군복무 기간이나 학교 이름 등 가장 기본적인 이력이 틀리면 일단 제외합니다. 최종 버튼을 누르기 전에 꼭 다시 확인을 하세요

* 지원하는 회사 이름을 틀리지 말 것
  매년 회사 이름을 틀리게 입력한 지원자가 있습니다. 다른 회사 이름이 버젓이 지원 사유에 들어 있습니다. OO회사에서 뽑아 주신다면 열심히 일하겠습니다 라는 글이죠. 하지만 실제로 지원한 회사가 다른 경쟁 회사라고 생각해보세요. 합격하기 힘들겠죠? 다른 곳에 올린 지원서를 그냥 복사해서 올리지 마세요.

* 첨부파일을 올릴 때 zip 파일 형식으로만 압축할 것
  제일 좋은 것은 압축하지 않고 파일 하나로 만들어 올리면 좋습니다. 압축을 해야 하거나 압축해서 첨부하라고 한다면 zip 파일 형식으로 압축하세요. 자신이 즐겨 사용하는 rar나 bz, 7z 등등으로 압축하면 검토자가 열어보지도 않을 수 있습니다. 간혹 공개 프로그램으로 만든 경우 zip 파일이 열리지 않을 수도 있으니 꼭 확인하세요. 윈도우즈의 탐색기에서 '보내기/압축(ZIP) 폴더'를 사용하여 압축하는 것이 가장 안전합니다.

* 문서 파일은 PDF 또는 MS Word 파일로 올릴 것
  학교나 관공서에서는 HWP(라고 쓰고 아래아한글이라고 읽는다)를 많이 씁니다. 이번에 받아본 문서 파일의 80%가 확장자가 hwp였습니다. 하지만 일반 IT 관련 회사에서는 대부분 MS Word를 씁니다. 특별히 파일 포맷을 지정하지 않았다면 PDF 파일로 변환해서 제출하세요. 번거롭다면 MS Word 파일로 옮기세요. HWP를 만들었던 저도 어느 사이엔가 설치하지 않는 프로그램이 되었습니다. 학생은 모르고 회사원은 아는 것 중의 하나입니다.

* 가급적 일찍 제출하라
  막판 눈치보기도 아니고 공채를 모집한다는 소식을 들었으면 빨리 준비해서 제출하세요. 마감날에는 전날까지 지원한 사람의 두 배에서 세 배가 지원을 합니다. 검토자들이 미리미리 검토하고 있어도 갑자기 몰려드는 이력서에 절망을 합니다. HR팀(이라고 적고 인사팀이라고 읽는다)에서 미리 걸러 주는 곳도 있습니다만 그래도 마찬가지입니다. 미리 미리 제출하고 여유있게 검토할 수 있는 기회를 주세요. 준비한 것을 읽어 볼 수 있는 시간을 주는 것은 중요한 일입니다.

* 이력서의 사진은 성의있게 하지만 과장되지 않게
  포토샵 처리하였다고 생각되는 사진은 신뢰감을 떨어뜨립니다. 그렇다고 머리 감지도 않고 핸드폰으로 찍은 것 같은 사진을 올리지는 마세요. 성의가 없어보입니다. 사진도 이력서 중의 중요한 부분을 차지합니다. 소개팅을 할 때 친구가 보여주는 사진이라고 생각하시면 이해가 쉬울까요?

* 자기소개서나 포트폴리오를 첨부해라
  그림도 올리기 힘든 웹 지원양식에 길게 쓰기보다는 미리 미리 자기소개서나 학교나 사회생활을 하면서 만든 포트폴리오를 만들어두세요. 준비된 것이 없으면 졸업논문이나 프로젝트한 것이라도 잘 모아서 하나의 파일로 만들어 제출하면 도움이 됩니다. 그렇다고 공동 작업한 것을 다른 사람 이름 지우고 혼자 한 것처럼 하지 마세요. 금방 티가 납니다.  그리고 지원하는 분야에 맞는 내용을 올려야지 있는 것 없는 것 다 모아서 제출하면 오히려 역효과가 납니다.

* 블로그나 동영상을 활용하라
  지원서에 자신의 웹사이트나 블로그가 있으면 좀 더 많은 것을 보여 줄 수 있는 기회가 있습니다. 자신이 만든 작품을 동영상으로 만들어서 링크를 걸어두는 것도 센스 있는 방법 중의 하나입니다. 자신이 찍은 사진들이나 평소에 써놓은 글도 자신을 나타내는 것이니까요. 그렇다고 싸이월드 링크를 걸어두지는 마세요.

* 어학연수는 목적이 분명해야 한다
  영어 실력을 높이기 위해서 어학연수나 워킹홀리데이를 다녀오는 사람이 많이 늘었더라구요. 3~12개월까지 다녀온 사람도 많더라구요. 하지만 그 시간이 아깝지는 않았나요? 내가 회사에 들어가서 해야 하는 일은 영어로 하는 일이 아니라면 전공 공부나 취직에 도움되는 경력을 쌓는 것이 더 좋았을 수 있습니다. 토익 점수가 높아졌다고 좋아하겠지만 젊은 시절의 1년은 함부로 바꾸는 것이 아닙니다. 어학연수를 다녀와야지만 실력이 느는 것은 아닙니다. 그리고 조기 유학으로 인해 해외에서 학교를 다니고 온 사람도 늘고 있습니다. 그 사람들과 다른 무엇이 있어야 하지 않을까요? 그리고 제발 1주일 다녀온 해외 가족여행을 어학연수라고 올리지는 마세요. 보는 사람도 당황스럽습니다.

* 외국어 한 가지는 확실히 익혀두어라
  워낙에 취직이 힘들다고 해서 학점 관리를 잘하는 사람이 늘어서 학점만으로 고르기가 무척 어렵습니다. 결국 어학 능력을 참고할 수 밖에 없는데 '어학능력'란에 아예 공백으로 올리는 사람이 많았습니다. 점수가 좋지 않아 올리지 않았을 수도 있겠지만 게으름으로 토익이나 텝스같은 것을 준비하지 않았다고 생각할 수도 있습니다. 특정 어학 시험을 지정하는 회사도 있으니 미리미리 알아서 준비하세요. 어학 능력이 뛰어나다고 다른 일도 잘 한다는 보장이 없지만 학점의 변별력이 딱히 없는 상황에서 공인된 어학 능력 점수는 큰 비중을 차지합니다.

* 공식적인 대회에 출전하여 입상 경력을 만들어 두면 쓸모가 있다
  교내 대회든 세계 대회든 열심히 출전하여 입상을 하도록 하세요. 학교 생활 내내 학교와 집만 오고간 기록만 있으면 어필하지 못합니다. 남들과 다를 수 있는 무엇인가를 만들어 보세요

* 성적 증명서는 중요하다
  학점 순서로 뽑는 것은 아니지만 학점이 나쁘면 나쁜 대로 이유가 있어야 합니다. 학점이 나빠서 군복무하고 돌아와서는 열심히 했지만 재수강을 많이 못해서 평점은 나쁩니다 같은 식은 설득력이 있습니다. 하지만 취직을 앞에 둔 4학년 때에 열심히 놀았습니다 라는 식은 곤란합니다. 성적증명서가 평점을 증명하기 위한 용도로만 쓰인다면 오해입니다. 성적 받은 것을 보면 전공에 관심이 있었는지 휴학을 몇 번 했었는지 금방 알 수 있습니다. 경력 공채는 다닌 회사로 판단합니다. 신입 공채는 성적증명서로 판단합니다. 학점 평점이 아닙니다. 학교 생활을 잘 하세요.

* 자기소개란은 특징있게, 엣지 있게
  자기 소개를 할 때 어디서 태어나서 어린 시절을 보내고 고등학교 시절까지의 이야기를 길게 적습니다. 자기 소개는 생육사(生育史)를 적는 것이 아닙니다. 나는 다른 사람과 어떤 차이가 있고 특징이 무엇인지 이력서를 읽는 사람에게 소개하는 것입니다. 자신을 잘 드러내는 짧은 에피소드도 좋습니다. 여행에 미쳐서 국내에 안가본 도시가 없다거나 일본 가수에 빠져서 일본까지 가서 공연을 보았다는 식의 이야기가 더 낫지요. '저는 평범한 집에서 태어나 '로 시작하는 글이 보이면 더 이상 읽기 싫습니다.

* 회사가 모든 것을 가르칠 것이라 생각하는가?
  뽑아만 주면 뭐든지 배워서 하겠다는 글을 자주 보게됩니다. 회사는 회사 생활에 필요한 최소한의 교육만을 합니다. 전문분야에 지원하면서 뽑아 주면 열심히 배우겠다는 식은 몰라도 너무 모릅니다. 지원한 회사에서 필요로 하는 사람에 대한 기본 요구 사항은 조금만 검색하면 대부분 나옵니다. 연봉 같은 것만 찾지 말고 지원 분야에 대한 정보를 최대한 많이 알고 지원서에 적으면 좋겠습니다.

----------------------------------------------------------------------------

제가 게임회사에 있으니까 한 가지만 더 적겠습니다.

* 게임 많이 했다고 게임 개발에 어울리는 사람일까요?
  유명 게임 개발자들이 게임만을 하면서 학창 시절을 보냈을까요? 영화를 많이 보아야 멋진 영화를 만들 수 있는 것은 아닙니다. 책을 많이 읽어야 멋진 글을 쓸 수 있는 것도 아닙니다.
  게임을 만들려면 학창 시절에 배웠던 모든 것과 그 이상의 것들이 필요합니다. 수학, 물리, 미술, 음악, 체육, 문학 등등 지겨웠던 것이 필요합니다. 게임을 만들고 싶으면 끊임 없이 공부하세요.
  온라인 서점에 수시로 들려서 새로 나온 책들을 살펴보고 새로 나온 게임에 대한 정보를 모으고 영화관에 가거나 미술관에 가세요. 공짜 전시회도 많습니다. 비싼 유명 전시회만 찾아 다닐 필요 없습니다. 박물관에 가고 음악회에 가세요. 이제 게임은 종합 예술입니다. 예술에 관심 없는데 게임을 만들겠다고요?
  어린 시절 게임에 빠져 하루 종일 게임 화면 앞에 앉아 있었다고 이력서에 적지 마세요. 차라리 자신이 감명 깊게 했던 게임에 대한 자신만의 느낌을 적어보세요.

@모루
지역태그 : 서울
  1. 몽몽이 2009/10/09 11:53 답글수정삭제

    참 좋은 말씀입니다. 저도 다시금 제 생활을 돌이켜 보게 되는군요.

  2. 돌돌 2009/10/09 13:12 답글수정삭제

    정말 좋은 내용이군요. 사람을 뽑아야 하는 일을 했던 사람으로서 크게 공감합니다.

  3. 2009/10/09 13:27 답글수정삭제

    비밀댓글 입니다

  4. 2009/10/09 13:31 답글수정삭제

    비밀댓글 입니다

  5. 빠진사슴 2009/10/09 13:51 답글수정삭제

    좋은 말씀 남겨주셨네요~ 다른분들과 함께 했으면 좋겠네요..ㅋ

  6. 레아라 2009/10/09 14:52 답글수정삭제

    저도 취업 준비하는 학생으로 굉장히 도움이 많이 되었습니다..
    저도 저 잘못 중에 몇몇개를 했을거라 생각하니.... 에휴..

    조금 더 정진해야겠어요...

  7. 시아초련 2009/10/09 16:07 답글수정삭제

    뼈가되는 조언들 정말 감사합니다 ^^;;
    좋은 글 잘 읽구가네요 ㅎㅎ

  8. 도막의 생각

    Tracked from moduda's me2DAY 2009/10/10 14:03

    신인 공채 서류 전형 통과하기 위해서는…

  9. 피해자김모양 2009/10/15 15:12 답글수정삭제

    퍼가요~~

  10. 제 1회 Ignite Seoul 에서 발표합니다. :)

    Tracked from 박피디의 게임 아키텍트 블로그 2009/10/22 18:37

    http://igniteseoul.org/blog/?p=136 발표 제목 : IT 프로그래머로서 취업 준비할 때 주의해야 할 점졸업을 앞두고 IT 프로그래머가 되고 싶은 학생들이 취업을 준비하면서 주의해야 할 점에 대해서 느낀 점을 공유합니다. 아.. 사진이 완전 살쪄 보이게 나왔어요. (살이 안 쪘다는 건 아니지만 ㅎㅎ)여러 회사 전전하면서 이력서를 보거나 면접관으로 들어가는 경우가 있었는데,자질은 좋아보이는 졸업예정자나 이...

  11. [이력서양식] 깔끔한 이력서 양식 및 자기소개서 양식

    Tracked from 세상속 2009/10/22 21:32

    [이력서양식] 깔끔한 이력서 양식 및 자기소개서 양식 이력서,자기소개서양식.hwp 분량 : 2 페이지 /hwp 파일 설명 : 깔끔하면서 눈에 띄는 이력서 양식과 자기소개서 양식입니다. 이력서 양식은 신상정보, 학력사항, 경력사항, 자격사항, 병력사항, 가족사항 등으로 구성되어 있으며 자기소개서 양식은 성장과정, 성격의 장단점, 생활신조 및 인생관, 전공 및 경력사항, 지원동기 및 포부로 구성되어 있습니다. 이력서 양식은 신상정보, 학력사항, 경력사항..

  12. 공채 면접에 통과하기 위해서는

    Tracked from 김종원의 '망치와 모루' 2009/10/28 02:17

    이전 글에 많은 분들이 관심을 보여주셔서 감사합니다. 제가 회사 인사 관련자로 보신 분도 계시지만 전 프로그래밍팀 팀장에 지나지 않습니다. 저희 팀에 필요한 사람들을 채용하고자 이력서를 검토한 것입니다. 작은 회사에 있을 때는 인사 관련 일도 하였지만 큰 회사에서는 철저하게 일이 나뉘어 있습니다. 저는 프로그래머로서 적합한지 판단할 뿐입니다. 이번 주에는 서류 전형과 역량 평가에 통과한 면접자들의 1차 면접이 진행되었습니다. 역량 평가에 대해서는 나..

트랙백 주소 :: http://www.forge.kr/20/trackback/
옵션
댓글 달기

 

GDC Austin: An Inside Look At The Universe Of Warcraft

 

요약 정리 : 박PD 게임 아키텍트 블로그

 

구체적인 설명은 위의 글을 보시면 될 것입니다.

 

글을 보고 든 생각을 간략히 적으면

 

1. 현재 Live 팀의 구성이지 처음부터 저런 구성은 아니다.

2. 생각보다 기획팀이 적어서 놀랬다.

3. 월드당 서버가 몇 대인지 궁금. 13250대의 서버라고 하는데 월드당 30대 이상 되는 것처럼 추측됨

4. Creative development team은 팀의 역사를 기록한다고 한다. 팀 내의 작업 history를 관리한다고 하는데 무척 참신함

5. 프로덕션 팀의 중요한 역할이 'succession planning'이란다. 다음 리더가 누가 될 것인지를 명확하게 해준다고 하는데 감동.

6. 한국에서는 저런 구조는 불가능 할 듯

 

저런 방식의 개발팀은 전세계적으로 WOW 한 개의 팀만 있는 것이 아닐까 생각해봅니다

 

@모루

 

지역태그 : 서울
  1. 진독의 생각

    Tracked from jindog's me2DAY 2009/10/09 09:50

    와우의 프로그래머는 32명??? 전체적으로는 5천명이 채 안되는 인원으로 이뤄낸 성과인건가! 보면 볼수록 신기한 블리자드 와우 팀 조직도…

  2. Gyuuuuu~* 2009/10/12 17:13 답글수정삭제

    완전 ㅎㄷㄷ;;;;이네요 .. -_-;;
    퇴근시간은 있을라나 모르겠넹.. ;;;;
    그림만 퍼가겠습니다. ^_^

  3. 이것이 WOW 개발팀 조직도!!!

    Tracked from Gyuuuuu~*'s Blog 2009/10/12 17:20

    자세한 내용은 직접 방문해서 보시는게..^_^;;; GDC Austin: An Inside Look At The Universe Of Warcraft 요약정리 글 : 박PD 게임 아키텍트 블로그 그리고.. 김종원 님의 감상평(? ) 그림을 보는 순간 망치로 띵~ 얻어 맞은 생각이 들었다. 그리고… 내가 저 wow team이라면 과연 어느 위치에 있을 수 있을까? 도 고민하게 되고.. +_+”’ ...

트랙백 주소 :: http://www.forge.kr/18/trackback/
옵션
댓글 달기

 

아이폰/아이팟 터치 프로그래밍은 PC나 맥에 비하면 많은 제약이 있습니다만 휴대폰에서의 프로그래밍에 비

하면 개발 환경은 비교할 수 없을 만큼 편리합니다. 프로그래밍 환경이 맥 용 프로그래밍을 개발하는 것과 유사하고 실제 개발환경도 통합되어 있기 때문에 차이가 없는 것처럼 느껴집니다.

 

하지만 실제로 개발해보면 차이가 많아서 공부해야 할 것이 많다는 것을 금방 알게됩니다. 그리고 시뮬레이터에서 테스트하는 것과 실제 디바이스에서 동작하는 것이 다르다는 것도 알게되고 마우스로 터치를 시뮬레이션 하는 것도 차이가 있다는 것을 깨닫게 됩니다.

 
휴대 기기에서 개발하는 것은 PC에서 개발하는 것과는 큰 차이가 있다는 것을 인정하고 개발 방법을 다르게 해야겠지요. 그러면 어떻게 해야 할까요? 예전에 스마트 폰을 개발하면서 중요하다고 생각한 것에 최근에 아이폰 용 프로그램을 개발하면서 정리한 원칙 10가지를 나열해 봤습니다.
 
1. 만들고자 하는 프로그램의 기능을 명확히 하라
 
2. 이미지 디자인이 아니라 기능 디자인에 집중하라
 
3. 자신의 아이디어와 비슷한 앱은 반드시 있다. 사전 조사하고 비교하여라.
 
4. 가장 중요한 핵심 기능에 개발을 집중하라
 
5. 기능 스펙을 개발 초기에 결정하지 말고 개발 하면서 스펙을 완성 하라
 
6. 첫 번째 릴리즈 이후에도 사용자의 피드백을 받아 끊임 없이 개선하라
 
7. 공들여 개발한 기능이라도 중요 기능을 방해하면 과감히 제거하거나 숨겨라
 
8. 개발자 관점이 아니라 사용자 관점에서 불편한 것은 최대한 제거하라
 
9. 개발 중에 실제 아이팟/아이폰에서 테스트를 할 수 있게 실행이 되는 버전을 만들고 실행 시켜보라
 
10. 개발 중인 버전을 항상 들고 다니면서 실제 사용하는 상황을 만들어 테스트를 하라

긴 설명을 덧붙일까 싶었지만 짧은 것 나름의 매력도 있어서 설명을 덧붙이지 않았습니다. 궁금하신 것이 있으면 덧글을 달아주세요.

@모루
  1. 희야 2009/09/25 23:25 답글수정삭제

    임베디드 시스템 개발하는것과 역시 비슷하네요..
    자원이 작으니만큼 기능을 정확하게 구현하는거랑..
    시뮬레이터와 실제 머신에서의 차이는...;;

    • 모루 2009/09/26 02:52 수정삭제

      실제 구성은 임베디드 시스템이죠. 배터리로 동작하는 ARM 코어 기반의 시스템. 모든 제약 사항은 그대로 존재하고요. 심지어 힙 크기도 20MB 정도 밖에 안됩니다. 항상 메모리에 신경써야 하지요.

  2. 열혈양군 2009/09/28 10:28 답글수정삭제

    6. 첫 번째 릴리즈 이후에도 사용자의 피드백을 받아 끊임 없이 개선하라
    8. 개발자 관점이 아니라 사용자 관점에서 불편한 것은 최대한 제거하라
    특히 공감이 가는 부분이네요^^

  3. 꼬꼬마 2010/02/19 15:34 답글수정삭제

    웹서핑하다 궁금해서 여쭤봅니다.
    아이폰 관련 어플리케이션은 개발은 무조건 mac상에서만 가능한건가요?
    일반 윈도우 기반에서 개발 할 수는 없는것인지요?

    • 모루 2010/02/22 03:48 수정삭제

      예, 아이폰 관련 개발은 Mac OS 상에서만 가능합니다. 해킨토시라고 해서 일반 PC에서 Mac OS를 설치해서 사용하는 개발자도 있습니다만 중고 Mac이라도 구입해서 개발하는 것을 권해드립니다.

  4. 비루 2010/03/24 15:16 답글수정삭제

    아이폰 책보고 열심히 공부중인데요
    질문 드리고 싶은것이 있는데
    질답 같은건 어디서 이루어 지는지요?

    • 모루 2010/04/03 22:33 수정삭제

      따로 질문 받는 곳이 없습니다. 그냥 여기에 남겨주시면 제가 답글을 드리겠습니다. 답변이 너무 늦어 죄송합니다.

트랙백 주소 :: http://www.forge.kr/17/trackback/
옵션
댓글 달기

  • 높이 : 110 mm
  • 폭    : 61.8 mm
  • 두께 : 8.5 mm
  • 무게 : 115 g

위의 숫자는 10 새벽에 발표한 iPod touch 3세대의 크기입니다.

어제 발표에서 아이팟 나노 신제품과 아이튠즈9 발표가 되었습니다만 저의 가장 관심은 아이팟 터치 3세대였습니다. 계속 카메라가 달린 아이팟 터치가 나올 것이라는 루머가 있었기 때문이죠. 하지만 하루 전날에는 카메라 문제로 나오지 못한다는 루머가 돌았습니다. 역시나 발표에서도 카메라가 빠진 공개가 되었습니다. 아파서 공개석상에 나오지 못했던 잡스도 카메라가 없는 제품 홍보에 열을 내셨지만 단팥 없는 찐빵 같은 느낌이 들었습니다.


어떤 카메라 스펙을 기대했던 것일까요? 사람들이 기대한 카메라 스펙은 iPhone 3Gs 포함된 것이었습니다. 잠깐 살펴보죠.


  • 3백만 화소
  • 오토 포커스
  • 동영상 녹화 (VGA 30 fps)
  • 사진과 영상에 위치 정보 기록



정도의 스펙이라면 따로 사진기를 들고 다닐 필요도 없겠죠? 이미 아이폰의 카메라의 퀄리티는 충분히 만족스럽다고 알려졌으니까요.


잠깐, 그런데 중요한 차이점이 있는 것을 놓쳤습니다. 시작 부분에 나온 아이팟 터치의 크기를 보면 아이폰과 거의 차이가 없지만 두께에서는 많은 차이를 보입니다.


iPhone 3 Gs HW spec


높이 : 115.5mm

   :   62.1mm

두께 :   12.3mm

무게 : 135 g


터치는 8.5mm 아이폰은 12.3mm 입니다. 생각보다 차이가 많이 납니다. 아이폰이 두꺼운 것이 아니라 아이팟 터치가 얇은 것이겠죠? 하지만 거의 45% 정도 두껍다는 것은 아이폰에 적용된 카메라가 터치에 사용될 없다는 것을 의미합니다.


애플은 디자인에 기능을 맞추는 것으로 유명한 회사입니다. 카메라 높이 때문에 디자인을 변형하지는 않습니다. 아이팟을 두껍게 만들거나 원래의 디자인을 포기하고 카메라 부분만 튀어나오게 하지는 않습니다.


그럼 애플은 어떻게 했을까요? 당연히 현재 아이팟의 크기에 맞는 카메라를 만들도록 했겠지요. 하지만 같은 스펙의 부품의 높이를 30% 줄여야 합니다.  




오래된 이야기지만 제가 회사의 스마트 폰을 개발할 겪었던 일을 이야기를 해야겠습니다. 당시에 나온 대부분의 핸드폰들은 30 화소의 카메라를 가지고 있었고 100 화소를 가진 카메라가 언제 나오는지가 궁금하던 시절입니다. 당시 핸드폰은 20~25mm 정도로 모토롤라의 레이저가 유행하기 전이니 얇은 휴대폰이 유행하기 전이었습니다.


한창 개발하던 폰도 30 화소였는데 갑자기 새로운 보드가 나왔으니 새로 드라이버를 올리라는 것입니다. 높이가 10mm 안되는 100 화소의 카메라를 달기로 했다는 군요. 처음부터 그럴 계획이 있었지만 외주 업체인 우리에게는 계약할 그런 이야기는 꺼내지도 않았었습니다. 문제는 새로 시작하는 것에 있지 않았습니다. 100 화소 카메라 모듈이 공장에서 나온 시제품이었다는 것이죠. 더구나 붙여야 하는 컨트롤러도 아직 완성이 안되어서 현재 나온 컨트롤러에 붙였다가 나중에 성능을 가진 카메라 컨트롤러가 나오면 거기에 붙여야 하는 것이었습니다.


나온 시제품이 제대로 동작할리는 만무하죠. 화질은 나쁘죠. 스펙 대로 만들어지지도 않아서 보드가 새로 나올 때마다 새롭게 버전업 모듈이 붙었습니다만 마지막까지도 안정이 안되었습니다. 화질은 여전히 좋지 않았고요. 품질이 나빴던 것은 카메라 모듈의 크기에 있었습니다.


카메라 모듈은 광학 제품입니다. 카메라 렌즈를 통과한 빛이 센서에 상을 맺기 위해서는 최소한의 높이가 필요합니다. 고해상도의 카메라는 센서가 커지게 되고 만족스러운 상을 맺기 위해서는 렌즈도 커집니다. 보통 작은 카메라 모듈의 렌즈는 플라스틱 재질로 만들게 되는데 굴절률을 높이기 어려워 모듈의 높이가 어느 정도 이상 작게 만들기는 어려웠습니다.


디자인된 높이는 7mm 였는데 처음 시제품은 8mm 였습니다. 중간에 폰의 디자인도 변형하여서 현실 상황과 타협을 해보려고도 했었지만 결국 원래 디자인 컨셉을 유지 하기 위해 7mm 맞추어서 나오게 되더군요. 하지만 그만큼의 시간과 노력 (돈을 주진 않았습니다) 들어갔습니다. 카메라 뿐만 아니라 다른 핵심 부품들도 그런 상황이었기 때문에 고생은 말로 없었죠. 중요한 것은 출시 타이밍을 놓쳤다는 것인데 그 이야기는 나중으로 미루지요.


다시 아이팟 터치로 돌아가보죠. 제일 두꺼운 부분이 8.5mm입니다. 아이폰과 같은 위치에 설치하려면 두께보다 작아지겠지만 최대 높이인 8.5mm 부분에 설치한다고 하고 케이스의 두께를 고려하면 해야 7mm 정도가 한계입니다. 높이에 맞춘다고 해보죠.


300 화소에 오토포커싱 (광학인지는 확인하지 못하였습니다만 광학 오토포커싱이면 두꺼울겁니다) 카메라 모듈의 높이로는 구현하기에 무척 힘든 높이 입니다. iPhone 3Gs 카메라의 렌즈의 직경이 무척 작은 것을 보니 실은  낮은 높이인지도 모르겠습니다만 아이폰에 비해 30% 작아진 높이에 맞추기 위해 작게 만드는 것은 - 단 1mm 라도 -  쉬운 일이 아닙니다.  


iPhone 3Gs 달린 카메라 모듈 대신 새롭게 만든 카메라 모듈을 달기 위해 고생했을 개발자들이 눈에 선합니다. 분명 카메라가 포함된 것이 처음 스펙이었겠지요. 하지만 정해진 시간까지 카메라 모듈의 개발이 완료되지 못하였던 것입니다. 날을 새고 주말에 나와도 하드웨어가 원하는 퀄리티가 나오지 못하는데 무슨 소용이겠습니까.


애플 입장에선 불확실한 모듈을 위해 기다릴 없으니 Plan B 선택을 했겠지요. 카메라 모듈이 빠진다고 가격 낮출 것도 아니었을 것이고 - 단가는 달러 합니다만 - 기본 시스템을 iPhone 3Gs 같은 기능으로 업그레이드를 했으니 다음 제품 발표 - 타블렛 제품 발표 일까요 - 같이 터뜨리기로 했는지도 모릅니다. 다행이라고 스스로 위안을 했을지도 모릅니다.


하지만 애플 입장에선 - 실은 개발자 입장에서나 소비자 입장에서 - 아이폰과 차이가 전화기 뿐인 iPod touch 제품을 제공하지 못한 것은 무척 안타까운 일입니다. 애플의 동영상 컨텐츠 정책이 차질을 빚게 되었으니까요. 그나마 게임 전략은 그대로 유지하게 되어서 다행인 같습니다. 난데 없이 게임이라고요?


별로 크게 선전이 되지 않아서 중요함이 강조되지 않지만 50% 나아진 성능, OpenGL ES 2.0 제대로 지원하는 프로세서는 게임 개발 입장에서는 무척 중요한 기능 개선 사항입니다. 앱스토어의 주요 매출원인 게임을 단계 업그레이드 있는 발판을 마련했으니까요. 이제  OpenGL ES 2.0 제대로 지원하게 되는 게임들이 나오면 기존의 모바일 게임과는 비교가 안될 정도의 퀄리티 향상을 가져올 것입니다.


그렇습니다. 애플의 경영진들은 게임에 집중하기로 것입니다. iTunes 정말 훌륭합니다. 하지만 게임 앱의 성장은 눈부십니다. 닌텐도 DS 부진이 아이폰이나 아이팟 터치 때문이라는 이야기가 나올 정도니까요. 카메라를 넣기 위해 제품 시기를 늦추는 것보다 게임기 성능을 높여서 게임 시장을 앞당기는 것이 급했던 것이죠. 3천만 대의 아이폰과 2천만 대의 아이팟 터치는 엄청난 플랫폼이 되어버렸습니다.


제품 마다의 성능이 다르다면 제일 낮은 성능의 제품에 맞추어 게임이 개발됩니다. 아이팟 터치 1세대에서는 실행 안됨이라고 붙일 수는 없으니까요.  3세대가 장착한 새로운 프로세서인 ARM A8 RISC 프로세서는 실수 벡터 연산이 가능한 모듈도 가지고 있습니다. 월등한 성능을 가지고 있으면서도 기능을 밖에 쓰고 있으니 얼마나 안타깝습니까.


멋진 아이팟 터치는 카메라 모듈이 빠짐으로써 한국에서 새롭게 인기 몰이를 기회를 놓치긴 했습니다만 아이폰 출시가 건너간 같은 상황이 되다 보니 아이폰을 사려고 기다려온 사람들에게는 여전히 매력적인 대안이 있을 같습니다.

 

이러나 저러나 소비자 입장에서는 안타까운 상황입니다.


@모루



지역태그 : 서울
  1. J. 2009/09/11 20:22 답글수정삭제

    그렇죠 아이팟 나노에 달리는 카메라도 얇은 기기의 한계로 인해 동영상 전용 촬영밖에 안되니까요(사진은 안된답니다)

  2. 모루 2009/09/12 18:48 답글수정삭제

    http://stellist.tistory.com/937 아이팟 터치 분해기. 내부에 카메라 공간이 있다고 합니다. 카메라는 없고요. ^^ 6mm x 6mm x 3mm 공간이라고 하니 높이 3mm 짜리를 만들려고 했나봅니다. 독한 놈들.

  3. 스텔D 2009/09/12 19:24 답글수정삭제

    그래도 더 작은 모듈이 나온다면 언젠가 터치에 카메라가 달리게 되겠지요? ^^

    • 모루 2009/09/12 23:02 수정삭제

      그렇겠지요. 아마도 지금 쯤 목표했던 모듈의 개발이 끝났을 것이라 생각합니다. 아마도 6개월 쯤 뒤에 새로 업그레이드 된 제품을 내놓을 때 포함 될 것 같습니다.

  4. 역시나... 예상대로군요, 애플..

    Tracked from Hello World! 2009/09/13 03:11

    카메라 탑재 아이팟 터치 출시 앞당겨 질 수 있다는 루머가... 해외 정보통에서 흘러나왔다는 소식 입니다.http://stellist.tistory.com/934제품군이 아이폰과 겹칠 수 있지만, 언제까지나 지금 상태로 갈 수도 없는게, 이미 나노팟으로 비디오 기능 출사표를 던진 이상, 다른 회사들도 발빠르게 각기 제품군에 벤치마킹/탑재해 발매할 것인데.. 이미 소니의 X 시리즈가 wifi와 YouTube 동기화 기능을 가지고 있고, ...

  5. creasy 2009/09/13 03:27 답글수정삭제

    안녕하세요- 좋은 글이여서 제 이글루에 트랙백을 달고 링크했습니다.. 혹시 문제 있거나 하면 말씀해 주세요. ^^

트랙백 주소 :: http://www.forge.kr/16/trackback/
옵션
댓글 달기