[2016]올해를 마치며.. 회고!
아래는 제 개인 블로그에서 옮겨온 글입니다.
- 원본 : [2016]올해를 마치며.. 회고!
2016 올해도 하루밖에 남지 않았다. 예전에 어른들이 나이가 들면 들수록 시간이 화살처럼
쏜살같이 지나간다는 말을 했었는데 마흔줄로 들어가고 있는 요즘 그걸 조금씩 실감하고 있다.
정신없이 지나갔지만 나름 열심히 달려왔던 2016 병신년 한해를 회고해본다.
1. 도전!!
올 한해를 보내며 스스로 가장 기억에 남는 건 "실시간 데이터 처리를 위한 인프라 구성과
관련 프로젝트를 진행한 것"이다.
openstack과 zookeeper, kafka, storm등의 기술을 이용해 클라우드를 구성하는 것부터가
경험이 없는 나로선 쉽지 않은 도전이었다.
다행히 사내 인프라가 잘 갖춰져 있었고 모르는 부분에 대해서 조언해줄 수 있는 동료가
곳곳에 있었기 때문에 가능한 일이었다고 생각한다.
프로젝트 초반엔 ansible의 역할이 참 컸는데, 다수의 가상 인스턴스를 가지고 클라우드를
세팅/운영하는데 있어 단시간에 많은 일들을 할 수 있었다.
kafka로 데이터를 보내는 역할(producer)은 logstash를 이용했고, storm에서 소비한
데이터는 사전에 설계한 HBase 테이블에 저장해 서비스에 활용했다.
그리고 운영시 storm supervisor 인스턴스를 늘려도 원하던 성능이 나오지 않아 고민하던 때,
storm 커미터이자 PMC 멤버인 임정택님의 도움을 받아 여러 세팅관련 조언을 듣고
운영상 어려움을 해결 할 수 있었다.
여담으로, storm topology 배포시 로컬과 운영 클라우드 환경이 다르기 때문에 꼭 서비스 전
운영 클라우드 환경에 배포해 테스트 해보는 것이 좋다.
그리고 데이터를 소비하는 어플리케이션 개발 특성상 테스트코드를 만들때
spock의 Data Driven Testing을 이용해 보는 것도 좋을 듯 싶다.
서비스 어플리케이션 중 하나는 사내 mesos, marathon 인프라 위에 docker image를 만들어
배포하고 운영했는데 이것도 전에 없던 색다른 경험이었다.
2. 프로그래밍 언어
올해 단 한줄이라도 코드를 만들어봤던 프로그래밍 언어를 한번 나열해봤다.
java, groovy, golang, python, clojure, R, perl, shell script
예전에 비해 직/간접적으로 다뤄봤던 언어의 스펙트럼이 많이 넓어졌다.
그로 인해 자바의 세계에만 갇혀있던 내 시야도 조금은 트이는 한해가 된 것 같다.
그리고 아무래도 현재 하고 있는 일이 백엔드쪽 일이고 상대적으로 프론트엔드에 대한 관심이
적어서인지 전회사에서 많이 사용했던 javascript는 조금씩 멀어진 듯 하다.
groovy는 spock과 gradle을 쓰며 많이 사용했고, 간단한 스크립트 작업에도 유용하게
사용했다. clojure는 회사동료 덕분에 접해볼 수 있었고, 나머지는 회사일이나
개인적으로 공부하며 잠깐씩 다뤄봤던 언어들이 대부분이다.
2017년엔 아마도 다음과 같은 언어들도 필요에 따라 다뤄볼 수 있을 듯 하다.
scala, kotlin, swift
3. 번역
올해 후반기때 새로 시작한게 "번역"인데, 영어를 잘해서 한 건 아니고 spock으로 테스트코드를
만들면서 junit과 비교해 상대적으로 더 쉽고 직관적이라 쓰기가 편했다.
올해 중반엔 최범균님의 DDD START!의 junit 테스트코드를 spock으로 포팅하며 연습했고,
이것이 결국 페이스북에 "테스트코드와 친해지기"라는 그룹을 만드는 계기가 됐다.
물론, java개발자라면 groovy로 테스트코드를 만들어야 하는 spock에 대한 심리적인 저항이
있을 수도 있어서, 그걸 완화시키기 위한 일환으로 번역을 시작했다.
시작 전, spock 공식문서를 번역해도 되냐고 spock github issue로 올렸는데 친절히
내 블로그에 올리는 게 좋겠다는 댓글이 달려서 자신감을 얻을 수 있었다.
아직 3개정도 문서를 더 번역해야 한다.
spock관련해서 다른 포스팅도 있으니 함께 참고하면 좋을 듯 싶다.
추가적으로, 예전에 "토비의 스프링"의 저자 이일민님이 공부해보라고 추천해주신
JUnit A Cook's Tour을 번역하면서 내용에 나온 junit의 목표와 철학, 그리고 설계에
반영된 다양한 디자인패턴에 대해 알게되었다.
4. 스터디
올해 스터디를 했거나 현재 진행중인 것은 6개다.
특히 지금 안드로이드 스터디를 discord를 통해서 하고 있는데 시간에 제약이 있는 나로선
온라인으로 스터디시 굉장히 유용할 것 같아 내년에 적극 활용해 볼 생각이다.
5. 읽었던 책
올해 읽었던 책은 대략 20~30권 정도 되는 것 같다.
현재 회사의 도서 지원이 빵빵해서 책을 사서 보는 데 아무런 제약이 없는 것이
너무 좋다. 그런데 필요할 때마다 이것저것 봤던 터라 완독률은 많이 떨어졌다.
그리고 새로 생긴 습관이 예전엔 책을 처음부터 끝까지 정독했다면 지금은
책을 보기 전에 목차를 한번 쭉 훑어보고 내가 필요한 부분만 본다는 점이다.
양쪽 모두 장단점이 있지만 일단 현재로선 필요한 때마다 그때그때 보는 것을
선호하게 될 듯 싶다.
내 머리가 좋아서 동시에 여러권을 봐도 스펀지처럼 쫙쫙 흡수해서 실무에
활용하면 좋겠지만, 그건 애초에 불가능하니 집에다 모셔두면서 썩히기보단
차라리 완독률은 떨어져도 다독을 하는 것이 나에게 더 좋을 듯 싶다.
끝으로 올해 읽으면서 재밌던 책을 뽑아봤다.
아! 그러고 보니 올해는 기술관련된 책 이외의 양서는 한권도 보지 못했다(책 편식현상이 ;;)
6. 올해 아쉬운 점과 새로운 도전꺼리들
올해 아쉬운 점은 "개인 프로젝트를 하지 못한 것"과 "오픈소스 contribution"을 도전하지 못한
것이다. 둘다 실행에 옮기지 못한 이유는 아마도 해야될 절실함을 스스로 찾지 못해서이지
않을까 싶다.
지속적으로 책을 보고 인터넷이 널린 다양한 콘텐츠를 코드로 따라쳐가며 공부했지만,
회사일을 제외한 뭔가 나만의 코드가 없다는 공허함은 지울 수가 없다.
그래서 내년엔 위의 github contribution에 내 코드를 꽉꽉 채워넣을 생각이다.
아이템도 있으니 실행에만 옮기면 된다. 지속적으로 동기부여를 원활하게 할 만한 방법도
고민해 볼 것이다.
올해 고무적인 것은 Trello를 회사일과 개인적인 일에 적극 활용했다는 것인데,
특히 개인적으로 쓰는 것보다 회사 프로젝트에 사용했을 때 프로젝트의 진척사항이나
팀원별 할일 관리, 현재 이슈사항 파악등에서 큰 효과를 보았다.
그리고 무엇보다 할 일을 가능한 작게 쪼개서 해보니 생각보다 할일이 더 명확히 보이고
일의 진행도 더 원활하게 됨을 체험할 수 있었다.
내년엔 개인적으로도 더 적극적으로 활용해 볼 생각이다.
일을 완료하고 카드를 옮기는 재미가 생각보다 쏠쏠하다.
마지막으로, 현재 내 관심꺼리는 "데이터처리와 분석을 통한 추천"과 "모바일개발"인데
관심에 비해 실행과 결과물이 많이 없어서 내년엔 지속적인 공부와 더불어
뭐라도 하나 "쓸모있는 물건!"을 만드는 게 가장 큰 목표다.