조용석

딸바보로그래머

122

about me

내 이야기

2012년 4월 창업을 했습니다. 세명이 홍대 작은 소호 사무실에 모여 시작한 회사가 한때 17명까지 구성원이 증가했었습니다. 모바일 게임을 만드는 게임개발사 모노곤 입니다.

2006년 26살때 처음, 프로그래머로(Java, Oracle, JEUS, WEBtoB) 입사했습니다. 국세청 SI프로젝트를 수행, 만 4년간 근무 후 게임업계로 이직하였습니다.

모노곤 - CTO ( 코파운더 )

1. WarGame ( web 전략시뮬레이션 )

2011.01월 이직 후 웹게임을 기획자, 디저이너와 함께 제작 시 PHP(codeigniter)를 활용하여 Front­end (HTML5 + jquery), Back­end( PHP,MySQL ) 를 개발 하였습니다.

2. 블러디워즈 ( 전략 시뮬레이션 )

블러디워즈를 액토즈소프트와 계약하여 개발 할 당시 디자이너, 기획자와 함께 창업하여 안드로이드 웹+네이티브 하이브리드 게임을 제작하였습니다.
Back­end(Spring + Mysql), Front­end( HTML5 + jquery + Native )를 사용하여 제작 하였습니다. 프로토 타입 완성 후 신규개발자를 영입하여 서비스를 완성하였습니다.

신규개발자의 합류시기는 2012년 9월 입니다.

블러디워즈를 만들때 가장 힘들었던 점은 50 : 50 길드전 이었습니다. 비동기방식인 웹서버로 동시다발적인 전투를 수행하기 위해 길드전 서버작업만 3~5개월 가량 작업을 했었습니다. 그때 당시 성수역 창업센터에 방문해 휴대폰을 2,30대 가량 빌려놓고 테스트를 했던 기억이 남습니다. 해당문제점의 발생원인은 여러명에 동시에 한명을 공격을 했을 때 톰캣의 멀티쓰레드 방식을 통해 여러 쓰레드가 하나의 서버함수 안에서 실행될때 한명의 데이터가 커밋되는 시점이 제각각이므로 발생되는 이유였습니다.

해당 이슈는 공격한사람이나 방어하는 사람이나 모두 하나의 함수안에서 처리하도록 변경하였으며 함수안에 주요 구간마다 synchronize 블럭을 통해 해소하였습니다.

게임의 런칭 일자는 2013년 8월 입니다.
총 개발기간 1년 4개월, 서비스기간 6개월 가량

 

3. DeepAbyss ( 퍼즐 RPG )

2013년 7월 부터 SKNS와 퍼블리싱 계약을 맺은 퍼즐RPG 딥어비스 라는 게임으로 Front­end ( Unity3D ) Back­end ( Spring + Mysql ) 을 사용하여 개발 후 런칭하였습니다. 런칭일자는 2015년 1월 입니다.
총 개발기간 1년 6개월 가량, 서비스기간 5개월 가량

딥어비스 게임 제작 시 Unity3D와 서버측을 동시에 작업하였으며 클라이언트 제작 시 사용한 언어는 C#이었습니다.
이때는 총 개발팀 인원이 4명이었습니다. ( Unity3D 클라이언트1명, 서버+클라이언트3명 )

딥어비스 게임 런칭 시 관리자페이지를 제작하기 위한 Web Front­end, Back­end가 가능한 인력을 충원하여 제작하였습니다.

Back­end, Front­end 둘다 가능했던 저희 팀 서버 인력들은 모두 저의 중고등학교 친구들이었습니다.

딥어비스의 게임은 서버의 응답속도가 낮은 현상을 발견하여 확인 해본 바 Mysql에 Replication 을 활용하여 마스터, 슬레이브 구조를 사용 하였으나 마스터와 슬레이브의 데이터 동기화시점때문에 서버 어플리케이션 로직이 그에 상응하는 형태로 개발되지 못해 난감했던 부분이 생각납니다. 해당 사항은 약간의 딜레이를 주어 해결하는 형태로 했지만 서버의 컨디션은 만족할 만한 수준이 되지 못하였습니다. 지금 생각해 보면 Mybatis 의 Replication 서비스를 활용하여 제작하고 싶고, 또한 Mysql이 아닌 MariaDB 로 제작을 할것 같습니다.

시스템 엔지니어링 역량

두개의 게임 모두 런칭 시 리눅스 Centos5.5, Tomcat7을 사용 하였습니다. 리눅스에 서버 어플리케이션을 설치하고 설정하는 모든 작업은 저 혼자 작업하였습니다.
쉘 프로그래밍은 직접할 수 있는 정도는 아니고 로직을 파악하는 수준이며 리눅스를 다루는 정도는 초보보다 조금 나은 수준으로 파악하고 있습니다.

● vi,sh,리눅스설정및디비설치yum사용등
모든 게임서버는 저를 포함 총 2명이 작업하였으며 스프링 프레임워크 구축 및 서버 구성은 ­ Spring(3.x) + Mybatis + Mysql(5.5) 입니다.
또한 신규 기술 도입 차원으로 nodejs, express 기반의 S trongLoop 의 loopback 프레임워크를 활용한 몇가지의 기능들을 작업하였습니다.

 

주)투비크로스 - 안드로이드 프로그래머

모노곤 퇴직 후 2015.08 ~ 2015.10 까지(주)투비크로스라는 헬스O2O관련 스타트업에서 안드로이드 어플리케이션 제작을 하였습니다.

1. 위드핏 - 안드로이드 어플리케이션

구글, 네이버 스토어에 런칭하였습니다. 이때엔 정확한 업무정의와 기획없이 담당QA와 저 둘이서 서비스를 만들었던 기억이 납니다. 어플리케이션은 네이티브 앱이며 제작기간은 약 한달반 가량입니다.

 

주) IDSB2B - 소프트웨어 엔지니어 

2015.11.16 부터 비트코인을 활용한 Binary Option Trading System을 서비스 하고있는 스타트업에 재직 중입니다.

1. 관리자사이트 제작
이곳에서는 처음 와서 AWS + Ubuntu(14.04) + Mysql(RDS) 위에서 현재 운영중이던 웹사이트의 관리자 사이트를 개발 하였고 개발사이트를 도커컨테이너위에 개발서버 구축 하였습니다.

관리자 사이트의 테크스택은 Spring Boot(1.3) + Spring Security OAuth2 + JPA의 백엔드 스택, 빌드시스템은 gradle로 구성되어있으며
Nginx + AngularJS 1.4, gulp 빌드 시스템으로 프론트엔드 스택이 구성되어 있습니다.
모두 아마존 EC2위에 도커 컨테이너로 서비스 되고 있습니다.

2. 젠킨스 도입
지속적인 빌드를 위한 젠킨스를 도커 컨테이너 위에 구축하여 개발서버 배포시에 활용하고 있습니다. 젠킨스를 도입한 후 유닛테스트, 시나리오 테스트를 통한 빌드의 신뢰성 확보에 대해서 고민 하고 있습니다.

3. 안드로이드 어플리케이션 제작
2016.02 부터 안드로이드 어플리케이션 제작, 2016.04.19 런칭하였습니다.
안드로이드 어플리케이션 제작에 트위터 Fabric을 적용하여 베타테스트, 앱 크래쉬 상황을 모니터링 하고 있으며 향후 사용자 경험증대를 위해 노력하고 있습니다.
이번 안드로이드 앱 제작 시 MVP 개발방법론을 적용하고자 하였으나 개발 도중 기존의 방식대로 Activity가 데이터와 컨트롤러 역할을 다 하게 되고 정작 Presenter는 서버와의 연동 부분만을 담당하게 되어 추후에는 오픈소스 MVP 모듈을 적용하여 MVP기반하에 작업 하고자 합니다.
현재의 Back­end 어플리케이션은 spring boot 로 제작되어 있으며, spring 에서 제공하는 websocket 모듈은 STOMP를 사용하고 있었습니다. stomp.js라는 웹 버전 모듈을 사용하여 web front­end가 구축되어있어, 안드로이드 제작 시에도 STOMP를 사용하여야 했으나 android native 에서 사용가능한 모듈을 찾지 못하여( 구축하지도 못했습니다.) 이에 webview를 활용하여 stomp.js를 사용, 실시간 웹소켓을 구현하였습니다.

안드로이드 이벤트 핸들링을 위해 rxAndroid, Square사의 OTTO 중 무엇으로 이벤트버스를 사용할까 고민하였으나 좀더 접근이 쉽다고 판단된 OTTO를 적용하여 개발하였습니다.
하지만 개발이 완료 되고 보니 이벤트의 전달이나 처리가 명확히 구분되지 않아 유지보수에 문제점을 발견 하여 rxAndroid 를 학습하여 http 리퀘스트 부분에 적용 하였습니다.

추후 OTTO를 rxAndroid로 전부 교체 하고 싶습니다만 아직 rx의 개념이나 사용방법들이 익숙치 않고 사용방법에 대한 커스터마이징이 부족하여 공부를 더 해야할 것같습니다.

4. 웹 사이트 프론트엔드 ReactJS 적용

서비스중인 웹사이트의 front­end 기술 스택을 변경하자는 회사동료의 제안으로 현재 React.js 기반으로 변경 하였습니다.

우선 Angularjs(1.x) 와 Reactjs 둘 다 접해본 바로는 리액트가 조금 더 재미있게 다가오고 있습니다. React 구성은 React + Redux 기반으로 제작 하였습니다.

 

쭉 읽어보셔서 아시겠지만 저는 백엔드(자바)의 기술을 가장 많이 오랫동안 사용해 왔습니다. 스프링을 활용한 REST API구축에 가장 자신이 있고 데이터베이스 스키마설계 및 퍼시스턴트 레이어와의 분리(JPA, MyBatis)를 통한 데이터 핸들링에도 자신이 있습니다. JPA는 깊이 있는 활용을 위해서는 좀 더 공부가 필요합니다.

현재까지 경력 중 오로지 백엔드로만의 미션은 없었습니다. 개발자라면 대부분이 그러하겠지만 상황에 맞게 저의 기술스택을 변경 또는 확장해야만 했습니다. 그로인한 정체성의 혼동도 때로는 왔었지만 새로운 기술, 언어를 사용한다는 것은 새로운 제품 혹은 서비스를 만듦에 있어 더욱 효율적이라는것을 알았습니다.

현재는 저의 업무에 티켓주도개발 방법론을 적용하여 JIRA, Bitbucket( git ) 두개를 연동하여 사용하고 있습니다. 스타트업에 재직하다 보니 정해진 문서작업보다는 당장의 퍼포먼스가 더 중요하기 때문에 향후 유지보수나 다른사람이 보더라도 좀 더 쉽게 이해하기 위해 JIRA 태스크 작성시 업무의 중요도나 범위를 고려하여 Story, Epic 등의 상위 태스크를 만들고 그 하위로 개별 태스크를 만들어서 TODO List에 올려둔 후 관련된 작업을 완료한 후 커밋 시점에 태스크아이디를 명시하고 해당 작업을 진행했을때의 문제점이나 해결 방법등을 보다 세밀하게 작성하려고 노력하고 있습니다. 그러기 위해 JIRA 태스크 작성 시 해당 업무에 대한 상세 설명이나 작업방법 및 약간의 설계등을 명시하여 태스크가 지칭하는 작업을 명확하게 하는데에도 신경을 쓰고 있습니다.

끝으로 또 다른 일을 할 때에 기존에 가진 기술의 깊이있는 탐구와 새로운 기술로의 확장을 병행하고 싶습니다. 

Work Experience

경력
2015-11 ~ 재직 중

IDSB2B

2015-08 ~ 2015-10

투비크로스

안드로이드 개발자

프로젝트 : 위드핏

2012-04 ~ 2015-07

모노곤

CTO

모바일 게임 제작사 파운더로 근무
프로젝트 : BLOOD WARZ, DEEPABYSS

2011-04 ~ 2012-02

아프로인터렉티브

웹 SNG게임 제작 - WAR GAME

2011.01 ~ 2011.03까지 PHP, Codeigniter 프레임워크, jquery 를 활용한 웹 보드 게임 제작

기획자, 디자이너, 개발자 3명이서 제작.

2011/04 아프로인터렉티브에 팀으로 흡수 된 후 해당 게임의 Back-end를 Java, Spring으로 변환

2006-11 ~ 2010-12

재성

국세청 근로장려세제 SI 공통개발팀

웹 프로그래머로 신입 입사

JAVA, Spring, Struts, WEBTOB, JEUS, ORACLE, PROC 등의 기술을 사용하여 공통팀에서 타 팀의 개발업무 서포트 및 프레임워크 설계 및 전파등의 업무 서포트

Attitude & Ability

특별한 역량
thumb_up
0
Java
thumb_up
0
Spring Framework
thumb_up
0
Mysql
thumb_up
0
Angular.js
thumb_up
0
Android Studio
thumb_up
0
React.js
thumb_up
0
Javascript
thumb_up
0
node.js
thumb_up
0
MariaDB
thumb_up
0
Oracle
thumb_up
0
Spring Framework
thumb_up
0
PHP
thumb_up
0
codeigniter
thumb_up
0
loopback
thumb_up
0
C#
thumb_up
0
unity3D
thumb_up
0
Git
thumb_up
0
Github
thumb_up
0
bitbucket
thumb_up
0
docker
thumb_up
0
boot2docker
thumb_up
0
centOS
thumb_up
0
ubuntu
thumb_up
0
Azure
thumb_up
0
Android
thumb_up
0
Twitter Bootstrap3

Design Showcase

비핸스/드리블
Behance

연결된 Behance 계정이 없습니다.

Dribble

연결된 Dribbble 계정이 없습니다.

Tech Stack & Tool

프로그램/언어

Code Archive

깃허브/비트버킷
GitHub

연결된 GitHub 계정이 없습니다.

Bitbucket

연결된 Bitbucket 계정이 없습니다.

Team Info.

함께 일하는 팀

기업문화 엿볼 때, 더팀스

로그인

/