(상반기엔 H2를 메인으로 썼으니, 하반기엔 소라의날개로..)
회사
하반기엔 큰 작업과 내년을 대비하는 작업들로 채운것 같다.
8 ~ 10월 - 신 주문 시스템 TF 합류
하반기에 우리 실 (팀의 상위 조직) 최대 과제는 주문 시스템 개편이였다.
우리팀의 모든 서비스가 주문시스템과 엮여 있던 상태다보니 주문 시스템이 얼마나 큰지, 얼마나 많은 시스템과 연결되어있는지도 알고 있었다.
그만큼 뭐하나 고치는게 쉽지 않은일인걸 알고 있었다.
(공교롭게도 자리도 바로 옆이라서)
하반기 일정을 듣다가 이 시스템을 3개월만에 개편해야하는 일정을 들었다.
대박이라는 생각과 함께 우리팀 일은 아니라서 애도를 표했다.
"와.. 저기 진짜 풀야근이겠다 어떡하냐"
"우리팀에 요청 오면 많이 도와드려야겠다"
등등의 생각등을 했었다.
주문팀으로 옮겨간 우리팀분과 같이 커피도 마시면서 위로도 해줬다.
근데 그 친구가 커피 마시다가 이상한 얘기를 했는데…
"어 이야기 못들으셨어요?" 라고 했다.
엥 무슨 이야기지?? 싶었다.
며칠 뒤, 주문팀으로 옮긴 전 팀장님이 따로 나를 부르셨다.
(즉, 팀에서 2분이 주문팀으로 갔다ㅠㅠ)
전 팀장님은 일정안에 끝내기 힘들것 같으니 TF로 와서 같이하자고 하셨다.
이미 실장님과 우리팀 팀장님과도 얘기가 다 된 상태라는 얘기도 함께 말이다.
(띠용?)
그리고 몇분뒤 우리팀 팀장님도 오셔서 주문팀 가서 일을 도와줘야겠다고 하셨다.
남의집 불구경 하는 마음이였다가 이게 뭔가 싶기도 하고, 내가 뭘 도와드릴수 있을까라는 근본적 의문이 생겼다.
그 팀의 상세한 도메인을 모르는 나로서는 어떤걸 도와드려야하나 난감했다.
괜히 인원수만 채운다거나, 기대감만 드리는것 같아서 좀 부담스럽기도 했다.
일단은 내가 할 수 있는 것부터 해야겠다고 생각했다.
다들 본인의 일로 바쁘기 때문에 코드리뷰에 적극적으로 참가했다.
도메인을 모르니 자세한 비지니스 로직보다는 코드상 오류나 컨벤션, 클린 코드, 테스트 코드 위주로 리뷰를 했다.
코드 리뷰 외에 개발 작업으로는 Batch 작업을 전반적으로 구현했다.
비교적 변경이 거의 없는 테이블 (지역정보, 업주정보, 업소정보 등등)들의 전체 이관 Batch작업이나, 실시간 데이터 복사 작업과 그에 대한 검증 배치등을 만들기도 했다.
이때 주문 시스템에 Batch 환경을 구축했다.
당시에 우리팀은 모든 서비스가 Batch 작업이 수십개씩 있었다.
다 합치면 수백개는 될 텐데, 이들을 관리하면서 느낀 점은 Spring Batch Job들을 Jenkins로 관리하는게 가장 효율적이라는 것이다.
그래서 신 주문 시스템의 배치 환경을 구축했다.
(즉, 젠킨스 설치하고 젠킨스 서버에 오토스케일링 붙이고, 깃헙 로그인 붙이고 배치 돌릴수있도록 환경 구축을 한거다)
그리고 대부분의 Batch 작업들을 구현해서 다른 분들이 Spring Batch를 사용하는데 가이드 코드가 될수있도록 작성했다.
생각한것보다 일이 정말 많았다.
10월이 오픈이였기 때문에 갈수록 시간이 촉박했었다.
9월 추석연휴가 대박이였는데, 추석 연휴가 시작되기 전날, 주문팀장님은 신규 시스템이 제대로 작동하는지 확인하기 위해 검증 배치를 만들라 하셨다.
즉, 오픈후 신/구 시스템 양쪽에 동시에 데이터가 저장되면 제대로 저장되는지 전체 검증하는 배치가 필요한 것이다.
그래야 오픈하고 나서도 계속 제대로 로직이 수행되는지 확인할수 있기 때문이다.
고향인 대구에 내려가서 차례지내는 시간 외에는 모두 카페가서 작업을 진행했다.
주문 팀장님과는 1년 넘게 일했었지만, 이렇게 확고하고 강하게 작업 완료를 요청하신건 이때가 처음이기 때문이다.
팀장님이 정말 진지한 표정을 지으시면서 얘기하셔서 이거 못끝내면 진짜 큰일나나보다 싶었다.
추석연휴에도 밤 12시까지 작업했었다.
친척분들은 뭐가 그렇게 일이 많냐고 하시는데 속타 죽는줄 알았다.
이게 만약 정산이였다면, 포인트였다면 이렇게 오래 걸리지 않았을거다.
뭐랄까 안개속을 걷는 기분이였다.
도메인을 모른채로 레거시 데이터와 신규 모델 데이터를 검증하는 배치를 만드는건 그런 것이였다.
구/신 테이블이 딱 1:1 관계면 얼마나 좋을까
그런 아름다운 상황은 없고
- 테이블 구조가 완전히 달라 (레거시는 1인데, 신규 모델은 1:N으로 나눠야 되는 테이블) 비교할 필드가 어디에 매핑되야할지도 몰랐고
- 그냥 필드만 매핑되는게 아니라 계산된 값을 써야할때도 있었고
- 이 계산 로직이 코드에 없고 프로시져에 있어 수백개의 프로시져를 뒤져보기도 했다.
코드와 프로시져 까보다가 도저히 안되겠다 싶어서, 그 팀에서 정말 도메인을 꽉 잡고 계신분께 연락 드렸다.
이후에 이분은 올해 하반기 우수사원을 받으셨다.
정말 죄송스럽게도 밤 12시까지 붙잡고 여쭤보고 테스트 코드와 프로덕션 코드를 작성했다.
원했던 모든 검증 배치를 만들고 나니 추석연휴 마지막날 이였다.
그래도 제시간에 일을 끝낼 수 있어서 연휴 다음날 아침 미팅때 완료 보고를 할 수 있었다.
여튼 이번 개편까지 벌써 3번째 레거시 시스템 개편에 참여하고 함께 완료를 경험했다.
개인적으론 정말 뿌듯하다.
레거시 시스템 개편을 할때 어떻게 계획을 잡고, 어떻게 비지니스 로직과 데이터를 검증하고, 모델링을 어떻게 해야할지 하나둘씩 배워가고 있다.
뭐 그렇다고 엄청 잘하게 되었다 이런건 아니고.
어찌됐든 또 하나의 큰 프로젝트를 경험하고 완료할수 있어서 너무 즐거운 시간이였다.
11 ~ 12월 - 정산 / 포인트 운영
신주문 TF가 끝나고, 우리팀 밀린 숙제들을 쳐냈다.
밀린 포인트 후속 작업들 (SAP, 배민 키친, 배민 마켓 연동 등)을 쭈욱 진행했고,
정산 쪽도 밀린 작업들을 12월에 쳐냈다.
특히 정산쪽엔 큰 작업 하나가 있었다.
내년 1월에 큰 프로젝트가 오픈 되는데, 이를 대비해서 12월에 운영 환경의 테이블들에 컬럼 추가가 필요했다.
데이터가 적을때야 alter
한번 치는게 무슨 큰일인가 싶지만, 몇억건이 되면 일이되더라.
정산은 주요 테이블들이 다 3~4억건 이상 인 상태였던 것이다.
DB 서버 성능 자체가 그리 좋은 편도 아니였고,
AWS와 같은 클라우드를 쓰고 있지도 않아서 성능 올리기도 쉬운일이 아니였다.
그러다보니 지금 사양에서 처리를 해야만 했다.
혹시 몰라 테스트로 지금 서버와 비슷한 사양의 RDS에서 같은 양으로 테스트를 해보니 6시간이 지나도 끝나지 않았다
인덱스, FK에 따라 결과는 다릅니다.
이래서는 안될것 같아 고민하던중, 팀원분께 한가지 조언을 받았다.
pt-online-schema-change로 해보라고.
포인트 시스템의 데이터 양이 정산과 비슷해서 스냅샷으로 테스트용 DB를 만들고 정산 DB와 비슷한 사양의 RDS를 생성해서 주말에 신나게 테스트 했다.
테스트 해보니 괜찮았다.
자식 테이블이 데이터가 1억건 이하일때만
자식 테이블의 데이터가 일정양 이상일 경우 FK가 새로 만들어져 기존 FK를 쓸수가 없었다.
옵션을 강제로 기존걸 유지하도록 하면 자식테이블 반영이 오래걸려 못쓰겠더라.
뭐 결국
create table
로 처리하는거니깐 당연한 결과다
그래서 어떻게 할까 고민하다가, 같이 정산을 담당하는 분이 아이디어를 주셨다.
사실 포인트도 주요 테이블들이 4~5억건을 넘어서 컬럼 추가가 필요하면 같은 방법을 쓸것 같다.
내년 4월까지 일정이 꽉 차있다.
정말루!
진짜 큰 프로젝트 2개가 정산쪽에 꽉 잡혀있고,
다른 팀 지원을 위한 포인트 일들이 잡혀있다.
포인트는 아마 정산 때문에 밀릴수도 있는데, 어떻게 될지 또 모르지 뭐.
내년 회고에도 쓸 얘기는 넘칠것 같다.
내년 4월이 지나면 안바쁠까?
4월까지 이 프로젝트 때문에 계속해서 미루던 일들이 4월 지나서 쭉쭉 요구되겠지?
바쁜건 상관 없는데, 내년에 하는 일들은 나를 성장시키는 업무들일까?
내년에 나는 성장할 수 있을까?
별 생각들이 들긴했다.
블로그
블로그엔 아주 큰일이 있었다.
사실 상반기에 있었던 일인데, 상반기 회고에서 잊고 작성을 안해서 하반기 회고에 작성한다.
그 큰일이란..
Hibernate 뉴스레터 블로그에 내 블로그가 링크 되었다.
(For our Korean reader, this article 이라고 되어있는 부분이다!!)
정말 기뻤다!
좀 더 열심히 글을 쓰고 해외 블로그를 링크 걸어야겠다는 생각을 했다.
그래야 거기서 Referer체크하고 또 내블로그 언급할것 같으니깐^^;
그리고 티스토리가 통계 개편이 되면서 갑자기 방문자수가 급증했다.
평일 평균 4000~5000명으로 변경된것이다.
근데 GA와 비교하면 좀 오차가 있다.
개편 전에는 GA에 비해 너무 적었다면,
개편 후에는 GA에 비해 조금 높았다.
(한 1천명정도?)
그래도 방문자수가 늘었다는 것은 기쁜일이니 기분 좋게 생각했다.
글 수는 꾸준히 유지중이다.
1 ~ 7월까지 72개의 글을 썼고, 8 ~ 12월까지 43개의 글을 썼다.
즉, 올해는 총 115개의 글을 썼다.
- 8월: 9
- 9월: 8
- 10월: 9
- 11월: 6
- 12월: 11
매해 100개의 글을 쓰기로 했던 약속은 잘 지켰던것 같다.
11월에 젯브레인데이 발표준비가 아니였으면 더 많은 글을 썼을텐데, 조금 아쉽다.
11월을 제외하고는 주당 2개 이상의 글은 썼으니 양적인 부분은 만족스럽다.
다만 내용이 얼마나 깊냐에 대해서는 물음표이긴하다.
결국 블로그를 하면서 내 스스로가 성장해야하는데, 아는것위주로만 정리한게 아닐까라는 생각이 들었다.
2019년은 좀 더 내 성장을 위한 글을 써야겠다는 생각을 했다.
일일커밋
일일커밋을 여전히 유지중이다.
이로써 2년 넘게 일일커밋을 하게 됐다.
outsider님이나 권남님이 얘기하신것처럼 일일커밋 횟수와 코딩실력이 비례하지는 않는다
다만 일일커밋은 최소한의 마지노선을 지켜주는것 같다.
- 운동 끝나고 정말 피곤한 날
- 늦잠을 자서 아침에 전혀 코딩을 못한 날
- 저녁 약속이 있는 날
- 명절연휴처럼 놀기 좋은 날
이런 날들에도 최소한의 코딩을 하도록 강제성을 부여해준다.
이런 강제성이 나같은 게으른 사람에겐 좋은 장치가 되는것 같다.
내년에도 일일커밋은 계속 할 계획이다.
언제까지 할지 끝까지 해봐야겠다.
오픈소스
Spring에 PR을 2개를 보냈었다.
- Spring Rest Docs PR
- Spring Batch PR
보내긴 했는데…
아쉽게도 Spring Batch PR은 빠졌다.
버그는 확실한데, 이 버그가 단순히 Spring Batch만 수정해서 될 게 아니라, Spring Boot도 같이 수정이 필요하다는 것이다.
내가 수정한건 보다 훨씬 더 큰 건이라고 하니 더 찾아보진 않고 포기했다.
다른 하고 싶은것들도 많아서 더 매달릴순 없었다.
얼른 해결해주길 바래본다.
기고
IT 전문 잡지인 마이크로소프트웨어 394호에 기고했다.
예전부터 오세용님의 도밍고 컴퍼니 이야기를 보곤 했다.
나와 연차도 비슷하시고, 글솜씨도 좋으셔서 많은 공감을 하면서 글을 읽었는데, 이후에 마이크로소프트웨어 기자로 이직하셨더라.
페이스북 친구가 되고 조금씩 메세지를 나누다가 실제 오프라인에서 뵙게 되었다.
(이 한마디에 만남 결성)
세용님과 점심먹고 커피마시다가 마소잡지 기고에 대해 이야기를 나누게 되었다.
듣던중에 음 블로그에 있는 글감 몇개로 기고해봐도 되겠는데?
라는 생각이 들었다.
그래서 섣불리 기고 하고 싶다고 얘기했다.
그리고 한참 후회했다.
잡지와 블로그 포맷이 너무 많이 달랐기 때문이다.
그래서 한참 교정을 진행했다 ㅠㅠ
잡지 기고 포맷에 대해 너무 무지해서 고생했지만, 한번 써보니 어떤 형식으로 써야할지 조금 익숙해진것 같다.
다음에도 같은 기회가 온다면 좀 더 깔끔하게 기고를 해야겠다.
그 기회를 얻을려면 블로그에 좀 더 양질의 글이 모여야겠지?
블로그와 일일커밋을 해야하는 이유가 하나더 추가되었다.
교육
하반기에는 1개의 교육을 이수하고, 1개의 교육을 만들었다.
수강한 교육은 패스트캠퍼스에서 진행했다.
테라폼을 비롯한 Infrastructure as Code 에 관한 내용을 다루었다.
초반부는 젠킨스를 이용한 배포 환경 구축을 다루었는데, 이미 몇번이나 다뤄본 내용이라 초반부는 조금 아쉬웠다.
물론 배포 과정에서 테라폼도 포함되긴 했지만, 다들 젠킨스가 처음이신지 젠킨스에서 막혀서 시간이 좀 많이 소비되기도 했다.
이 과정이 끝나고 내가 엄청 많이 알게 됐다 이런건 아니다.
다만 인프라 자동 구성에 대해 전반적으로 한번 훑어보게 되서 다음에 필요할땐 어떤걸 찾아서 공부해야할지를 알수 있었다.
이 과정은 내 실수로 회사 지원금을 받지 못했다 ㅠㅠㅠㅠ 아까워 ㅠㅠㅠ
그리고 인프런에서 IntelliJ 강의 영상을 만들었다.
(498명 수강, 35수강평, 5점 만점 평점이에요!
IntelliJ를 좀 더 잘쓰고 싶으신 분들은 한번 수강해보세요!
강의)
만들때는 엄청 스트레스 받았었다.
영상 편집 능력이 떨어지다보니 내용을 쭉 이어가다가 잘못 이야기하거나 생각했던대로 작동이 안되면 처음부터 다시 찍었다.
물론 편집 하는법을 배우면 안되냐고 할수도 있겠지만,
이것 하느라 또 강의 작업이 밀리는게 싫었다.
어찌됐든 하나를 완성하고 나서 부족한점을 채우자 싶었다.
그래야 일이 안밀리니깐.
몇번 다시 만들다보니 스크립트를 만들게 되었다.
원래 발표를 할때 별도로 스크립트를 만들진 않았다.
근데 하도 말이 꼬이고 순서도 꼬여서 스크립트를 작성할수밖에 없었다.
이렇게 스크립트를 작성하니 확실히 강의 찍는게 좀 더 수월했다.
어찌됐든 한번 찍고나니 강의 찍는게 좀 더 편해진것 같다.
2019년에는 기획한 강의들을 추가로 오픈해서 좀 더 많은 분들이 볼수있었으면 바래본다.
발표
하반기에는 2개의 발표를 진행했다.
젯브레인데이는 KCD에서 했던 내용을 보강해서 하고 싶었다.
하지만 IntelliJ 내용이다보니 Hadi Hariri의 발표와 내용은 다르지만 카테고리가 겹치게 됐다.
그래서 2순위인 Upsource를 주제로 정했다.
Upsource는 여태 온라인 저장소 (Github, Gitlab)에서 리뷰하던 나에게 큰 충격을 줬다.
코드리뷰하기 위해 젯브레인에서 열심히 고민했던 흔적을 느낄수 있었다.
그래서 이 기회에 발표 준비하면서 자세히 공부해야겠다고 생각했다.
발표 준비를 하면서 몰랐던 내용들도 추가로 알게 되고, 좀 더 효율적인 기능들도 익힐수 있었다.
내가 원하는 공부가 있으면 이 주제로 발표 준비하는것도 괜찮겠다는 생각이 들었다.
마소 394호가 출간되고 세용님께 별도로 전화가 왔다.
마소콘의 세션 중 하나에서 글쓰는 개발자라는 주제로 진행하는데 블로그와 개발자라는 주제로 한번 해보는게 어떠냐는 제안이였다.
준비하는데 크게 어려움이 없을것 같아서 쉽게 승낙했다.
그리고 생각했던대로 발표준비는 어렵지 않았다.
발표시간이 10분이기도 했고, 그냥 내가 그동안 해온 내용들을 정리해서 이야기만 하면 되니 말이다.
발표와 Q&A를 하면서 많은 분들과 이야기를 나눌수 있어 좋았다.
그리고 블로그라는 주제에 대해서 나 자신도 굉장히 좋아하기 때문에 더 신나게 이야기할 수 있었다.
내년에 기회가 되면 이 주제로 좀 더 자세하고 오래 이야기해볼 계획이다.
이 발표는 이후 유튜브에 간단하게 정리해서 공유한 상태이다.
운동
10월 말부터 PT(Personal Training)를 시작했다.
수술이 끝나고 난 뒤부터 운동을 해야지해야지 하다가 강렬한 계기로 시작하게 됐다.
신주문이 끝나고 불면증이 왔기 때문이다.
왜 그런지 모르겠지만, 신주문이 끝나고 저녁에 누우면 잠이 계속 안왔다.
걱정때문인지, 코드를 생각해서인지는 기억이 가물가물한데 여튼 계속 잠이 오지 않았다.
당황스러웠던건, 난 잠이 안온게 이번이 처음이기 때문이다.
자주있는 일이라면 덜 당황할텐데, 침대에 들어가면 바로 잠드는 체질이였는데 이 체질이 변경된것 같았다.
기상 시간이 점점 늦어지더니 회사에 아슬아슬하게 출근하자 진짜 화가 났다.
휴직이나 퇴사를 고민했다.
이렇게 근퇴 엉망인것도 싫었고, 아침에 공부 못하게 되는건 더 싫었다.
그러다가 "퇴사하지 않고, 회사를 다니면서 이 불면증을 해결하고 이걸 주제로 글을 쓰면 어떨가?" 라는 생각이 문득 들었다.
일종의 생활 디버깅? 같은 내용으로 말이다.
오! 라는 깨달음과 함께 불면증 해결을 시작했다.
이 내용은 이후에 좀 더 자세히 기록할 예정이다.
일단 베개를 변경했다.
그리고 PT를 시작했다.
땀을 실컷흘리면 바로 골아떨어지는 경험을 이미 했었기 때문이다.
11월초부터 숨고의 김민석 선생님께 운동을 배우고 있다.
처음 운동한날에는 다리에 힘이 풀려서 집에 오는데 7번을 엎어졌다.
(비도 오는데 아주 가관이였다.)
그래서 더 걷지 못하고 택시타고 왔다.
거의 매주 화/목에 운동을 하는데 이제 11회? 정도 한것 같다.
PT 시작하고 평일 시간이 거의 안남게 됐다.
월요일은 회사 스터디, 화/목은 PT, 금요일은 여자친구와 데이트
이제는 더이상 엎어지진 않는다.
그리고 몸무게가 정말 많이 빠졌다.
PT를 시작하기전에 87kg이였는데, 12월 초에 건강검진을 재보니 82kg가 되었다.
거의 한달만에 5kg가 빠진셈이다.
(1년전 (95kg) 과 비교하면 13kg가 빠졌다.)
잠도 확실히 전보다 더 쉽게 잘수 있고, 체력도 붙어 평일 저녁이나 주말에도 좀 더 집중력이 높아진것 같다.
프레시코드로 샐러드도 신청했으니 샐러드와 닭가슴살 먹으면서 좀 더 건강한 몸을 만들어야겠다.
내년 상반기에는?
일단 교육 하나를 신청했다.
과정내에서 커리큘럼은 대부분 알고 있는 내용들이긴하다.
(건방 떠는게 아니라 진짜루..)
다만 내가 제대로 알고 있는지도 궁금하고,
김성박님은 도대체 어떻게 사람들를 가르치실까 궁금했다.
(이게 제일 큰 이유이긴 한다.)
예전에 김성박님의 즐거운 자바 라는 유튜브 영상을 보고 이 분의 강의는 꼭 한번 들어봐야겠다는 생각을 했었는데 마침 기회가 생긴거다.
회사에서는 4월1일까지 프로젝트가 꽉 잡혀있다.
2개의 큰 프로젝트인데, 둘다 일정이 밀릴수가 없어서 1~3월까지는 평일에 시간내기가 쉽지 않을것 같아서 걱정이다.
이 안에서도 성장할 수 있는 요소를 찾아서 적용해봐야지.
어쩔수없는것 같다.
블로그에는 진행중인 시리즈물을 완성할 예정이다.
Spring Batch를 진행하다보니 젠킨스의 파이프라인이 꼭 필요한 챕터가 있어 어쩔수없이 중간에 젠킨스 파이프라인을 진행하게 되었다.
둘다 마무리 짓지 못해 상반기에는 마무리 지을 계획이다.
이외에 한가지 더 준비하고 있는게 있는데, 이건 작업이 끝나면 공개할 예정이다.
데자뷰 같은데;;
상반기에 영어공부를 똑같이 얘기했는데 ㅠㅠ
영어공부는 좀 더 미루게 됐다.
하고 싶은 일들이 많이 생겼기 때문이다.
아!!
2018년이 끝났다!
시간은 속절없이 지나가는데 붙잡지도 못하고 아쉬움만 가득하다.
회고를 쓰면서 좀 더 해볼수 있었을텐데 라는 생각이 들어 반성하게 된다.
이제 2월이면 만5년을 채운다.
즉 6년차 시작이다.
연차는 무섭게도 차곡차곡 쌓이는데 어쩌면 좋니.
뭐.. 어쩔수없지.
2019년 더 충실하게 보내자.
무라카미 하루키의 "달리기를 말할때 내가 하고 싶은 이야기"에서 가장 좋아하는 대목을 소개하면서 글을 마친다.
그렇게 해서 아침 5시 전에 일어나 밤 10시 전에 잔다고 하는, 간소하면서도 규칙적인 생활이 시작되었다.
하루를 통틀어 가장 활동하기 좋은 시간대라는 것은, 물론 사람에 따라 다르겠지만, 내 경우 그것은 이른 아침의 몇 시간이다.
…
다만 이러한 생활을 하고 있으면 나이트 라이프 같은 것은 거의 없어져버리고, 사람들과의 교류는 틀림없이 나빠진다.
…
내 생각에는, 정말로 젊은 시기를 별도로 치면, 인생에는 아무래도 우선순위라는 것이 필요하다.
어느 나이까지 그와 같은 시스템을 자기 안에 확실하게 확립해놓지 않으면, 인생은 초점을 잃고 뒤죽박죽이 되어버린다.
주위 사람들과의 친밀한 교류보다는 소설 집필에 전념할 수 있는 안정된 생활의 확립을 앞세우고 싶었다.