본문 바로가기

내 이야기

제 8회 공감 세미나 후기





지난 6월 23일에 제 8회 공감 세미나를 다녀왔습니다.

오늘은 그 내용을 공유하고자 이렇게 글을 씁니다.


진행된 세션은 아래와 같습니다.

  1. Java SE와 EE의 미래
  2. Sencha Touch 클라우드, Sencha.io
  3. 포스트모템으로 살펴보는 위대한 게임 개발팀의 특징
  4. node.js의 의미와 자바의 대안

원래 예정되었던 순서와는 약간 다르게 진행되었는데요,, 뭐 어차피 저는 처음부터 끝까지 다 들을 생각이라서 별 상관은 없었어요~ㅎ


등록

이번 세미나는 강남 교보타워에서 열렸는데요, 늦을 줄 알고 조금 서둘렀더니 엄청 빨리 도착해버렸답니다.^^;; 덕분에 책도 한권 얻었어요~ㅎㅎㅎ



Gamification에 관련된 책인데요,  안그래도 이 분야에 대해 많이 알고 싶어하고 관심을 가져오고 있었는데, 이렇게 좋은 책을 얻게되서 정말 기분이 좋더군요~ㅎ

시작하기 전에

세션이 시작하기 전에 readme라는 사이트를 소개해주더군요. SK 플래닛에서 만들어가고 있는 개발자 정보 공유 사이트라고 합니다.

그리고 여기에 공감 세미나의 발표 동영상을 공유한다고 합니다. 아직은 올라오지 않았는데, 나중에 올라온 것 보시면 도움이 될 것 같네요^^

Session 1. Java SE와 EE의 미래



첫번째 세션은 김병곤님의 자바에 대한 이야기였습니다.
얼마 전에 상하이에서 자바 리더 미팅이 있었다고 하는데요, 그 자리에서 들었던 내용을 공유하고자 이 자리에 서셨답니다. 


먼저 본론에 들어가기 전에 DevOps라는 이야기를 하셨는데요, 이 DevOps는 개발자와 운영자를 합친 팀이라고 합니다. 

신속한 개발을 위해 나온 방법론이라고 하구요, 애자일과 비슷한 맥락의 방법론 같습니다. 개발자와 운영자의 사이가 일반적으로는 좋지 않는데 서로가 하는 일에 대해 잘 모르기때문에 그런 일반적인 상황이 벌어지는 것이고, 그런 근본적인 문제를 해결하기 위해 그리고 더 빠르고 좋은 결과물을 얻기 위해 이러한 방법론이 제기된 것 같습니다.


우리나라에서도 DevOps가 도입되어 있다고 하는데요,, 원래의 취지와는 다르게 회사입장에서 적은 비용으로 많은 일을 할 수 있게끔 개발자에게 운영까지 시키는,,, 뭐 그런 방향으로 변질되었다고 하네요 -0-

파란 개발자 블로그에 이 DevOps에 관련된 포스팅이 있다고 하니 시간이 되시면 한번 읽어보세요~.



그리고 공개 SW 유지 관리 가이드에 관해서도 이야기를 했었는데,, 이 부분은 아직 제가 사회 초년생이라 무슨 말인지도 모르겠더라구요..;; 그리고 사실 이런거에 별로 관심도 없고;;



본론은 오라클이 이끌고 있는 자바의 방향에 대한 내용이었습니다. 

오라클이 선을 인수한 이후로 많은 개발자들이 오라클을 적대시한다고 생각하고 있었는데요, 이 분의 발표를 들으니 오라클이 그렇게 나쁜 곳은 또 아닌 것 같더라구요. 그 동안 Java가 커뮤니티 위주로 발전해 왔는데, 그래서 일관된 방향이 없었다면 오라클은 그런 자바가 일관된 방향으로 나아갈 수 있도록 리더쉽을 발휘할 수 있다고 하네요.


그리고 openJDK에 관련된 이야기도 했었는데요, 맥에서 라이온 이후로는 기본적으로 자바가 설치되어 있지 않다는데,, 원래는 자바가 설치되어 있었나요?(저는 모르겠어요~) 어쨌든 라이온부터는 커맨드 창에서 자바 명령어를 입력하는 순간 다운받는다고 하네요. 

그리고 맥에서는 자바로 개발을 할 때 자바 소스를 볼 수가 없어 상당히 불편하다고 합니다. 

저는 지금 껏 자바 소스를 보거나, 그 소스를 개조해서 사용해야할 일이 없었는데요, 발표자 분은 그런 일이 잦으셨나 봅니다. 



아직 릴리즈되지 않은 JDK 8에서는 Lambda Expression을 사용한다고 하는데요, 이 람다 표현식이 원래는 closure라는 이름으로 사용되어왔다고 합니다. 람다 표현식을 도입하게 되면 코드량을 줄일 수 있기 때문에 도입된다고 하네요.

처음에는 생소해서 사용하기 힘들 것 같은데요, 이 표현식을 익힘으로써 코드량을 확 줄일 수 있다면 충분히 배워볼만 할 것 같네요.

코드량을 줄인다는 것은 그 만큼 한번에 많은 문맥을 파악할 수 있음을 의미하니까 한번 작성한 코드를 파악하는데 드는 시간을 줄일 수 있지 않을까하는 개인적인 생각입니다.ㅎ

참고로 람다 표현식을 도입한다고해서 기존 문법을 못쓰는 것은 아니니 걱정은 안하셔도 됩니다.


또한 JDK 8에서 멀티코어를 위한 iterator가 지원된다고 하네요. 사용법은 기존 Iterator와 비슷한데요, 멀티 코어용 Iterator를 사용하면 반복문을 순회하는데에 한 쓰레드가 하나씩 접근하는게 아니라, 동시에 여러 쓰레드가 병렬적으로 처리할 수 있다고 합니다. 3rd파티 개발자는 그저 해당 Iterator를 사용만 하면 되는 것이죠!

Session2. Sencha.io



두 번째 세션은 안광운님의 Sencha.io에 관한 이야기였는데요, 사실 이 부분에 조금 관심이 있었습니다.

Sencha 이야기를 하기 전에 Ext JS라는 자바 스크립트 프레임웍에 대해 이야기를 꺼내셨습니다. 이는 Sencha touch의 전신으로써 사용이 어렵다고 하네요.


Ext JS와 마찬가지로 Sencha Touch 2.0도 개발 난이도가 높다고 합니다. 저희 회사에서는 Sencha Touch 1.0을 이용해서 앱팡을 개발했는데요, 담당 개발자 분도 웹개발만 하시다가 Sencha를 하니 어렵다고 하시더라구요.

그리고 Sencha Touch가 멀티 플랫폼에 대비하기 위한 모바일 웹앱 프레임웍으로 많이 알려져 있는데, 실제로 예제를 보면 반하실 수도 있습니다. 모바일 웹앱인데도 불구하고 네이티브 앱과 같은 UI효과들을 기본적으로 지원하거든요.ㅎ

그런데 아직까지는 안드로이드에서 성능이 잘 나오지 않는다는 단점이 있습니다. (IOS에서는 꽤나 잘 돌아갑니다.)



Sencha.io는 Sencha touch 2에서만 사용할 수 있는 클라우드 플랫폼입니다. Sencha.io 자체만으로는 의미가 없구요 반드시! Sencha touch2와 함께 사용해야만 합니다. 

다른 플랫폼에서는 사용할 수 없다는 단점이 있기는 하지만 Sencha touch 2를 이용해서 개발할 경우 정말 간단하게 클라우드 방식으로 데이터를 공유할 수 있는 앱을 만들 수 있다는 장점이 있습니다. 



Sencha.io는 크게 4가지의 기능을 지원합니다.


로그인 Login

아마도 쉽게 로그인과 회원가입을 구현할 수 있게 끔 구현이 되어 있는 것 같네요.

데이터 Data

데이터 공유, 백업, 복구 등을 지원한다고 합니다.

메시지 Message

일대일 메시지나 일대다 메시지를 실시간으로 주고 받을 수 있는 기능을 제공한다고 합니다.

배포 Deployment

앱 개발 과정 중에 팀원들이 함께 사용할 수 있는 저장소를 제공하고, 버전관리도 되고, 배포도 바로 할 수 있는 기능을 제공한다고 합니다.



이렇게 좋은 게 아직까지는 무료라고 하는데요, 발표자의 말씀에 따르면 곧 유료화를 진행할 것 같다고 하네요~ㅠ_ㅠ



아래와 같은 구조로 Sencha touch앱이 배포될 수 있다고 하네요.


그림에서 볼 수 있듯이 Sencha touch 2.0앱은 Nginx라는 서버 안에 위치하게 되고, 앱 안에 Sencha.io는 SDK 형태로 포함되게 됩니다. 발표자의 말에 따르면 Nginx는 node.js로 만들어진 서버 엔진이라고 했는데요,, 대충 영문 위키의 내용을 살펴봤는데(정말 대충 앞부분만 봤습니다.), Nginx는 오픈 소스 웹서버이고 HTTP, SMTP, POP3, IMAP 프로토콜용 리버스 프록시 서버라고 하네요. 그리고 동시성에 강점이 있나봅니다. 


그리고 마지막으로 Meteor라는 것도 소개해주셨는데요, sencha.io를 대신할 수 있는 거라고 하셨습니다. sencha.io처럼 데이터 동기화 등의 기능을 제공해 주지만, sencha.io가 Sencha touch 2.0에서만 사용할 수 있는데에 반해서 meteor는 그런 사용상의 제약이 없다고 하네요. 이것도 한번 살펴볼 필요가 있는 것 같습니다.

Session 3. 포스트모템으로 살펴보는 위대한 게임 개발팀의 특징



 세번째 세션은 NC 소프트에서 일하시는 박일님의 세션이었습니다. 기술적인 이야기를 듣고 싶었는데, 사실 이 세션은 기술적인 내용은 아니었습니다. 

포스트 모템은 프로젝트가 끝나고 나서 어떤 점을 잘했고, 어떤 점이 아쉬웠는지에 대해서 정리를 하는 것이라고 합니다. 그렇게 정리를 함으로써 다음 프로젝트의 실수를 줄이고 더 좋은 방향으로 프로젝트가 진행될 수 있도록 하는 것이 목적인 것 같습니다. 


NC 사장님(김택진)이 하신 말씀 중에 다음과 같은 말이 있다고 합니다.

게임은 인류의 뇌에게 주는 선물

게임이 인류의 "뇌"에게 주는 선물이라,, 잘 생각해봐야겠네요. 

저는 그 선물을 더 선물답게, 그리고 더 가치있게 만들 수 있도록 많은 생각을 해봐야겠네요.



이번 세션에서는 발표자분이 쓴 책에 나온 글자를 태그처럼 분류해서 가장 많이 나오는 단어별로 정리를 해줬습니다.

발표 내용을 다 받아적지는 못해서 일부 내용은 빠졌습니다.^^;;


비전

비전은 게임을 만드는 사람들이 게임이 어떤 방향으로 가야할지에 대한 큰 그림(비전)을 공유해야 함을 이야기 합니다. 성공적인 팀에서는 개발자들과 기획자, 디자이너가 서로 공통의 비전을 잘 공유해서 정말 원하던 그림을 만들어 내겠죠.


프로토타입

프로토타입은 기존 요소(리소스)를 이용해서 최대한 빠르게 시연해보고 테스트해볼 수 있는 시제품을 만드는 작업입니다. 이 작업은 정말 최대한 빨리 진행이 되어 게임의 방향을 결정할 수 있어야 합니다. 프로토타입이 빨리 만들어질 수 있다면 많은 시행착오를 줄일 수 있겠죠?

많은 사람들이 하는 실수 중 하나가 프로토타입을 만들었는데 주위 반응이 별로 안좋으면, 여기에 아트를 붙이면 괜찮아지지 않을까?하는 생각이라고 합니다. 프로토타입이 재미가 없으면 아무리 멋진 그림과 효과를 넣어도 재미없다는 거죠.



디렉터

디렉터는 팀을 이끄는 사람인데요, 보통 작은 회사에서는 디렉터가 여러가지 역할을 동시에 수행한다고 합니다. 그런데 사실 디렉터는 팀의 프로젝트가 올바른 길로 향할 수 있도록 잘 지켜보고 방향을 잘 잡아야하는데, 이것저것 다른 일을 하다보면 그 방향 잡는 일에 소홀해질 수 밖에 없다는 이야기죠.



FGT(Focus Group Test)

FGT는 특정 유저를 초청해서 플레이하는 것을 가만히 지켜보면서 문제를 파악하는 방법입니다. 여기에서 중요한 것은 유저가 어떤 행동을 하던지 절대 간섭해서는 안되고 옆에서 가만히 관찰만 해야한다는 것입니다. 

제트 스키를 만든 일본의 한 회사를 예로 들며, FGT는 좋은 방법이기는 하지만 유저의 의견을 받아들이되 해결책은 참고 정도로 하라고 하네요. 원래 초창기의 제트 스키는 앉아서 타는게 아니라 일어서서 타는 방식이었다고 합니다. 그 회사에서는 그런 제트스키가 어떻게 하면 더 좋아질지 유저들에게 의견을 받았고, 유저의 의견을 받들어 딱딱한 발판을 대신해서 푹신푹신한 발판을 만들었다고 합니다. 그런데 얼마 후 경쟁사에서 앉아서 타는 제트스키가 나왔고, 그 회사는 완패했다고 합니다. 그런데 정말 웃긴 것은 완패한 그 회사가 원래는 오토바이를 만들던 회사였다고 합니다.;;



사람

항상 나오는 이야기라고 하는데 개발자는 필요 이상으로 있어야 한다고 합니다. 항상 회사에서는 작은 인력으로 많은 일을 하려고 하기 때문에 개발자는 정신적, 육체적으로 지치게 되고 결국 이직을 하게된다고 하네요. 

너무나 당연한 이야기인 것 같은데, 우리나라에서는 너무나 잘 안지켜지는 부분인 것 같습니다. 

사람이 하는 일인데, 사람이 좋아야 잘 되는 일인데,,,



의사소통

프로젝트를 할 때 의사소통의 중요성에 대해서도 이야기하셨는데요, 같은 프로젝트를 진행하는 팀이 가까이에 위치하는 것 만으로도 많은 도움이 된다고 합니다. 그리고 redmine등의 도구를 잘 사용하는 것도 의사소통에 도움이 된다고 하셨는데, 이런 의사소통 툴은 개인마다 성향이 다르기 때문에 결국에는 이런 툴보다는 문화를 만드려는 의지가 중요하다고 하네요.



맵같은 경우에 개발자가 매번 테스트를 위해 이렇게 저렇게 수정하는 작업은 굉장히 비효율적인 작업이죠. 그래서 이런 경우에 잘 만들어진 툴만 있어도 개발자의 도움없이 여러가지 테스트를 해볼 수 있다고 합니다. 저도 실제로 툴의 필요성을 많이 느끼고 있는데, 실제 프로젝트에서는 인력도 부족하고 시간도 부족해서 툴을 만들 여유가 없는 것 같네요. 그렇지만 분명히 툴은 한번 만들어두면 계속해서 쓰일 수 있기 때문에, 나중을 위해서라도 꼭 하나씩 만들 필요가 있는 것 같습니다.



마지막으로 발표자분의 블로그 주소를 알려주시더군요. http://parkpd.egloos.com/


Session 4. node.js의 의미와 자바의 대안



마지막 세션은 박성철님의 세션이었습니다. 

Google Trands를 보면 Ruby on Rails 다음으로 많이 쓰이는게 node.js라고 나왔다고 하네요.

node.js를 간단히 소개하자면 commonJS를 이용해서 모듈화를 했고, 비동기 I/O를 추상화, 이벤트 기반의 단일 쓰레드 동시성 처리가 강점이라고 합니다. 


일반적인 웹서버는 클라이언트 하나 당 하나의 쓰레드를 생성하는데 node.js에서는 하나의 쓰레드에서 event driven방식으로 여러 유저에 대한 처리를 해줄 수 있다고 합니다. 그렇기 때문에 당연히 동시에 처리할 수 있는 유저가 많겠죠?


node.js는 DB중심의 ajax서버, 네트웍 프록시, 채팅, 알림, 대용량 파일 업로드 등에 사용될 수 있다고 합니다.


이번 세미나가 자바 개발자를 위한 세미나인 만큼 node.js를 기존 자바 환경에서 사용할 수 있는 것에 대해서도 이야기 해주셨구요. 사실 스프링같은 back단에 대해서 모르기 때문에 잘 이해는 안됐지만, 어쩄든 레이어를 나눠서 node.js를 붙이는 방법이 있다고 합니다. 

그리고 Netty라고 node.js같은 기술인데 java를 사용하는 것도 있다고 하구요. 


그런데 Netty보다도 더 좋은게 있다는데 그게 vert.x라고 합니다. vert.x는 현재 javascript, Ruby, Groovy, java를 지원한다고 합니다. 앞으로 더 많은 언어를 지원할 거라고 했는데, 현재까지 사용 가능한 디비는 MongoDB가 유일하다고 하네요;

vert.x는 아직 부족한 부분이 많지만 계속해서 발전하고 있고, 충분히 지켜볼만한 이유는 있다고 합니다.

끝...

간단하게 쓸려고 했는데,, 글을 쓰다보니 길어졌네요.ㅠ_ㅠ
아휴 피곤해;;
이상으로 제 8회 공감세미나 후기를 마칩니다.^^