about me

[markdown]

# 개발 스토리

## season1 JAPAN on ARARIO

– 일본에서 웹개발자로 개발시작
– [아라리오](http://www.arario.jp/)라는 곳에서, 웹개발을 열심히 함
– ant랑 jenkins엮어서 빌드툴도 간단히 만듬
– 회사 동료들과 함께쓸 간단한 java 라이브러리들을 만듬
– javascript 잘 모르던 시절이지만, 간단한 프레임웤을 만들었었음.
– mixi라는 플랫폼에 플래시 게임(무려 애니팡!)을 빨리 붙일 수 있도록 함.
– 웹가챠를 개발함
– 중국넘들이 너무 해킹시도를 많이해서, 안전한 웹을 만들려고 노력을 많이했었음.(블랙리스트, 화이트리스트 구현)
– maven이라는 걸 알게되서 라이브러리 관리를 maven으로 옮김 + nexus를 사내에 설치함.
– 리눅스는 기본만 익혔던 상태
– 그 당시 메모리 부족으로 인한 장애가 많이 났었는데, 못잡았던게 한이됨..ㅠㅠ
– 지진나서 회사가 오키나와로 이사를 가게되는데, 동경에 남고 싶어서 아라리오를 떠나게됨…

## season2 JAPAN on HANGAME JAPAN
– 멋진 회사!
– 멋진 팀!
– 지금 생각하면 뭔가 아쉽고 오글거리지만, solomon-observer라는 어플리케이션 모니터링 프로그램을 제작함.
– java thread에 sencha에 스케줄링에… 모르는것 투성이인 채로 만들었음.
– 서버 <=> 클라 방식이 아니라 서버가 클라에 가서 걍 땡겨오는 방식. java모니터링에는 jmx를 썼었음.
– 그외에도 cassandra, mongodb, redis를 모니터링 할 수 있는 녀석이었음.
– 설정은 회사의 배포 콘솔에서 손쉽게 할 수 있게 했었음.
– 큰회사다보니 돈이 많아서 그 비싼 jennifer의 글로벌 라이센스를 획득.
– 일본지사 책임이 내가 됨.
– 라이브 프로젝트의 게임 성능 측정시에 jennifer를 쓸 수 있도록 세팅.
– 서버가 600대가 넘어갔기 때문에 수동으로 설치하는 거면, 하루종일 설치만 해야해서 관리툴에서 설정하면 자동 설치되게 만듬
– 당시 인기있던 ‘용사콜렉터’게임의 성능측정을 도와줌.(그래봤자 문제가 어딘지 알려주는거… 다 DB였음)
– 라인 게임 플랫폼에 사용될 뻔했던 배포툴 LMC 제작 (제작은 완료했었음…)
– 그 당시 hot하던 nodejs로 제작
– DB설계는 마루야마상이라는 일본분에게 맡기고, express를 개조해서 편하게 만든 lucy-express를 제작.
– lucy-express는 그냥 java의 struts2프레임웤 처럼 쓸 수 있게 하는게 목표였었음.
– 별로 홍보를 안해서 5개 정도의 프로젝트에서 사용할 수 있게 도와줌.(이마저도 개발실이 해체되면서 없어짐..ㅠㅠ)
– socket.io를 썻기때문에 내가 배포하는게 실시간으로 다른 사람의 화면에도 보였음.
– java로 되어있는 인증이 문제였는데, 걍 인증API서버를 만들어서 nodejs에서 호출하는 방식으로 우회
– mysql transaction 거는게 정말 거지 같았던 기억이 있음.
– 콜백헬은 async를 이용해서 탈피….하려고 했으나 마음에 안들었음.
– nodejs가 fabric의 명령어를 호출하는 방식으로 rolling 배포, 인프라 설치 등을 만들었었음.
– 개발실이 해체되면서 제작 다해 놓고 쓰고 있던거 없어짐..ㅠㅠ

뭔가 더 있었는데… 기억나면 적어야겠다…

## season3 KOREA SEOUL on podotree
– 5년 넘게 일본있으니 일본에 죽을 때까지 살아야 될 것 같은거임. 근데 여자친구도 없고 소망도 없고 그래서 한국으로 옴. 한국에도 소망은 별로 없다는 걸 알기까지는 얼마 안걸리긴 했지만…;;
– 한국와서 3주 놀았는데, 어머니가 백수될까 걱정하셔서 일자리를 알아봄.
– 입사할 때 코딩시험이 꽤 어려웠음.
– 카카오 페이지랑 관계없는…? 게임팀에서 서버를 담당하게 됨
– chef + fabric 으로 배포툴 제작(NARUTO)
– 나루토가 환영분신술을 쓰기 때문에 한방에 여러서버에 배포, 업데이트 할 수 있어서 이름을 나루토로 지었음.
– 인프라 툴을 닌자계열 이름으로 짓는거는 NHN에서 배워온것. 뒤에서 신속하게 움직인다는 의미로 지은거라 뭔가 잘 어울림.
– UI는 없고 CLI만 존재
– 롤링 업데이트 없음.
– 왜냐면 서버가 nodejs라서 0.5초만에 리부팅됨.
– 커넥션을 맺고 있는 것도 없어서 필요 없었음.
– nodejs로 게임서버 제작
– 진정한 콜백헬을 경험.
– 로그인 할때 로직은 18단계를 통과함. `q`라는 `promise` 라이브러리가 있어서 지옥에서 살아남음.
– naver마켓이랑 인증에 필요한 라이브러리가 php랑 java밖에 없어서, 어쩔까 하다가 java역컴파일 해서 소스보고 nodejs버전 만듬. 공개하면 못쓰게 할까봐 공개안함..ㅋㅋ(지금은 소스가 어딧는지 모르겠…)
– 초반에는 redis를 하드하게 쓰는 게임으로 제작중이었어서 redis-sharding을 하는 라이브러리를 python쪽에 있는 라이브러리 보고 베낌.(포팅이라하나?) 이건 github에 있을듯?
– mysql의 transaction문제는 계속 거지 같았음. 걍 함수로 감싸서 transaction, commit, rollback하는 애를 만들었음.
– logging모듈이 쓸만한게 하나도 없어서, 만들었었음. 근데 기능이 별로 없었음. (github에 있음)
– 나중에는 winston을 개조해서씀. 이거는 상당히 괜찮았음.
– nodejs에 대한 흉흉한 소문때문에 처음에는 불안해 하면서 썼지만, 한번도 nodejs가 문제되서 장애난적은 없었음. (내 코딩실력이 문제였지..ㅠㅠ)
– 요즘에는 generator가 나와서 콜백문제를 그나마 좀 우아하게 해결해주는데, 그때는 그게 있다 카더라 통신이었지 안됐음.
– 그러고 보니 push server도 만들었음. 콜백으로 뺑뺑이+조건문 돌리는게 엄청 귀찮은 일인 것을 알게됨.
– 관리툴 만드는거야 머 당연한 거. 관리자가 게임속에서 전지전능함을 발휘할 수 있게 열심히 만들었음.
– mysql cluster 구축
– 구축은 했는데, 생각보다 속도가 너무 느렸음.
– 그리고 서버비가 너무 비쌌음. ㅠㅠ
– 유지 보수도 너무 귀찮았음…
– 그냥 RDS 비싼거 씀….;;;
– 내가 인프라다~~! AWS!
– aws web console들어가는거 너무 귀찮아서 boto사용함.
– WEB UI만들어야지 하면서, 시간이 없어서 몬만듬.
– 그래도 스케일 아웃, 스케일 인 하는거 만들었음.
– dynamodb + fluend로 게임로그를 쌓음.
– 사실 위에꺼 설치부터 구현까지 반나절만에 했었는데, 진짜 잘썼었음.
– EC2의 인스턴스의 CPU, MEMORY, LOAD AVERAGE가 모두 낮음에도 불구하고 성능이 너무 안나와 주는거임. 알고보니 네트워크가 느려서 그랬음. 클라우드 세상에서는 네트워크 전송속도는 성능과 직접 연관됨!! 다른건 몰라도 이건 진짜 중요함.
– 성능테스트
– N모사에서 써보라고 ngrinder를 구축해주셔서, 아주 잘씀
– abbench도 써봄. 괜찮았음.
– python multi process 사용해서 스크립트로 테스트도 함. 귀찮고 힘들었음. 역시 사람은 도구를 써야됨.
– 게임은 4개월 정도 서비스하다가 수익이 안나서 결국 서비스를 종료함.
– 대표님이 게임제작에 굉장히 관심을 많이 가져 주셨었는데, 지금이나마 감사를 드립니다.
– 나와 동료들이 만들었던 게임은 없어졌지만, 그 로직은 지금 카카오 페이지에 녹아 들어갔음. 잘 보면 게임에 쓰이는 것들이 보일거임.

## season4 KOREA BUSAN on treenod
– 이야기는 계속 됩니다….
[/markdown]

댓글

  1. 블로그 보다 잠깐 소개글 보고 있는데
    2008년 일본에 오셨다고요..
    저랑 비슷하네요..
    반가운마음에 글남기고 갑니다…

    1. wapj2000 댓글:

      그렇군요~!! 일본생활 쉽지 않더라구요~ 고생하셨습니다~

  2. 박승규 댓글:

    반갑습니다~~^^ 지금은 한국에 있습니다…ㅎ 일년 반정도 됐네요~ 고생많으십니다~