연휴를 뜻있게 보내기
By SeukWon Kang
어쩌다보니 9일의 연휴를 얻게되어 ( 감사합니다. 대표님 - 우리회사 좋은 회사 ^^)
어떻게 보내면 좋을까 잠시 고민하다 2년간 손대지 못하고 밀려 있던 goguelike2를 재 정비 하기로 했습니다. 이 글을 쓰는 시점이 (주말만이남은) 금요일 저녁 시간이라 그동안의 진행 결과를 정리하는 글입니다.
지금 회사에 합류할때 조건으로 건 것이 개인 프로젝트인 goguelike는 시간 나는 대로 계속하겠다. 는 것과 goguelike의 권리는 계속 내가 가지겠다. 였는데 대표님께서 혼쾌히 동의해 주셔서 안심하고 합류했었는데. 정작 회사 일을 시작하니 시간이 전혀 없어서 손을 거의 대지 못하고 있었습니다.
2년간 팀에서 golang을 사용하면서 꽤 많은 코드량(거의 60만 라인) 을 작성하고 같이 토론하고 더 좋은 사용 방법들을 고민했기에 저 자신의 golang의 사용 능력이나 이해도도 많은 발전이 있었을 뿐 아니라, 그전에는 몰랐던 이런 저런 툴, 라이브러리 등도 많이 생겨서 그 발전된 지식을 goguelike에 적용하는 것이 목표였습니다.
구체적인 목표는 goguelike를 작업할때는 몰랐던(없었던?) context를 적용한다. 이런것을 만들어서 꾸역 꾸역 작업했었는데 context를 발견하고 얼마나 기뻤는지 모릅니다.
2년간 작업하면서 생긴 coding conventions 을 가능한 대로 적용한다. golang 도 python과 같이 꽤나 정리된 coding conventions 이 존재 합니다만 (gofmt 도 존재하고) 역시 일정 규모 이상되면 그 이상의 규칙들이 생기기 마련입니다. 이것은 후에 따로 정리해서 글로 올릴 생각입니다. ( 적어보니 생각보다 많더군요. )
어설프게 만들었던 tcp/ip client-server 와 packet mux/demux를 제대로 개선한다. 이것은 생각보다 큰 일이어서 결국 못할것 같습니다. 적어도 go rpc(https://golang.org/pkg/net/rpc/) 라도 제대로 사용하게 만들고 싶었는데 워낙 많은 부분을 고쳐야 하는 지라.
config / ini 개선 - 기존에는 대충 만들어진 json 기반의 config를 사용하고 있었는데 제대로된 ini , 인자 처리, url 지원 등을 하도록 개선 한다.
정식 서비스 화 - signal 과 pid file 을 지원 해서 서비스/daemon 화 할수 있도록 한다.
그 외에도 회사프로젝트에서 대규모로 사용중인 meta-programming 을 조금 적용 해본다 던지 등의 목표가 있었습니다.
결과적으로 너무 큰 목표 였던 packet mux/demux 를 제외하고는 대부분 할 수 있었는데 생각보다 이런 저런 초기 정리를 하는데 (오랫만에 집에서 작업을 하게 되니 - 그야 말로 작업 환경을 재구성 ) 시간을 꽤 사용했습니다.
예전 코드를 읽다보니 시간이 흘러서 그런 것도 있겠지만 역시 일은 혼자 할때 보다 “제대로된 사람드로 구성된” 팀에서 하는 것이 더 효율도 좋고 같이 발전하는 양도 많다는 것을 느끼게 됩니다.