Retrospect
2022년을 마무리 하는 한 단어 Pick endeavor
Comparing to last year…
2021년 회고에서 우려했던 부분은 결국 올해의 알파이자 오메가가 되었다. 옮겨간 부서의 상황은 총체적 난국으로 초반에 의욕을 가지고 대처하려 시도한 팀장이 초심을 잃으며 매일 상황은 악화되어 갔고, 올해 3분기부터 타 팀의 지원까지 받아 간신히 수습되는 형국으로 마무리 할 수 있었다.
무능한 윗선은 매일 경영진 회의에서 깨진 상태로 돌아와 들은 내용 그대로 실무진에 던지고, 상황이 악화됨에 따라 매일 혹은 하루 중에도 2~3회씩 보고하러 불려감에 따라 코드 및 서비스 개선과 외부 고객과의 관계 개선에 써야할 시간이 모두 내부 보고 자료 작성에 쓰이며 꾸준히 악화되는 모습을 지켜보았다. 정말 악화를 막기 위한 인적, 물적 비용이 기하급수적으로 늘어나는 걸 보니 너무 무서웠던 한 해였다. 절대 이렇게 되지 않도록 미리 리스크 분석을 하고, 신규 사업을 준비할 때는 수십번 수백번 가용 자원과 목표 수치를 확인하는 과정이 필요하고, 올바른 계약이 너무나 중요함을 깨달았다.
이런 연유로, 올해는 별도로 이직을 위한 준비를 하기 힘들만큼 회사일로 피폐해진 때가 많았다. 연말이 되어서야 간신히 숨이 좀 트인 상황.
올해는 기술적인 성장보다 정신적인 성장을 많이 거둔 것 같다. 2022년의 끝에서 정말 얼음물을 뒤집어 쓴 것 같은 느낌을 받으며 잠에서 깨어난 기분이었다. 힘든 한 해를 보냈고 그것의 끝에 도달했다는 생각도 있지만, 힘든 것에 비해 생각보다 허망했음과 그 노력을 충분히 인정 받지 못한 것, 그리고 나를 알아주는 사람과 일할 수 있는 기회를 붙잡지 못한 것에 대한 후회로 많은 괴로움을 느꼈다.
멈추지 않고 하루에 한 걸음이라도 걸으면 앞으로 나아갈 수 있다.
2022년에도 변하지 않는 각오다. 그리고 올해는 더불어, 회사에서 보안에 걸리지 않는 선에서 해낸 일들을 기록으로 좀 남겨둬야 할 것 같은 생각이 들었다. 세상 살면서 잘 해낸 일들을 자꾸 까먹어서 힘들어지는 느낌이다.
Up’s
한 해 보람찼거나 즐거웠던 일들을 정리해본다.
Tech
- 2021년에 안해본 새로운 기술이나 언어를 익혀본 것은 없다. Go와 Typescript 공부를 하다가 멈춘 게 생각나서 다시 공부하기 시작했다.
- Kubernetes와 Docker를 온라인 교육 과정으로나마 경험해볼 수 있었다.
- IaC(Infrastructure as Code)를 비롯한 최근 인프라 트렌드는 관련 대기업에 다니는 친구의 도움으로 컨셉을 배웠다.
- 올해는 회사에서 구입한 ERP 제품 개선에 많은 시간과 노력을 투자했다. 웃기게도 작년(2019)에 내가 이 프로젝트 개발 환경 구성 및 CI/CD 구성과 빌드 프로세스 체계화를 해주었다. 내가 잠시 도와준 프로젝트에 내가 투입된 셈.
기억나는 작업 건들을 정리해보면,- 디컴파일러 사용과 디컴파일된 코드를 분석하는 능력을 길렀다.
이 제품의 코어 라이브러리는 더이상 관리가 되지 않고 있기 때문에 몇몇 결함에 대해선 조치 할 수 있는 게 없었다. 법령 검토 후 보안/호환성 확보 목적을 위해 디컴파일한 후 개선 사항은 제작사와 내가 소속된 회사가 같이 공유하는 조건으로 디컴파일을 용인 받았다. - 상용 모니터링 툴과 자체제작 모니터링 도구를 활용해 DB 연결 누출 문제를 조치하였다.
새 부서 합류 후에 몇개월 간 DB 연결 풀 고갈로 서비스 장애가 자주 발생했는데, 내가 오기 전 2년간 운영 중에 그 누구도 이 부분을 고치려 시도하지 않아서 지속적으로 장애가 발생되고 있었다. 매일 재가동 하더라도 시즌성 업무 수행시에는 업무 시간 중에 DB 연결이 바닥나기 십상이었다. - DB 연결 누출 문제 개선을 위해 교육자료를 작성하고, PL과 함께 내부 인원 교육 후 소스코드 수정과 검수 작업을 수행하여 서비스 안정성을 개선시켰다.
기본적으로 보면 프레임워크 없이 개발된 코드와 JDBC 연결을 수동으로 관리하는 구조가 큰 문제를 일으킨 것이 원인이었다. 지금도 이런 구조의 프로그램이 운영된다는 건, 프로그래머 실수로 인한 오류가 많이 발생될 수 있는 우려를 갖고 있다. - 디컴파일된 결과를 바탕으로, 제품 코어 라이브러리 내 DB 연결 관리자가 풀이 고갈되었을 때 데드락이 생길 수 있음을 확인하고 재현하여 리포트하였다.
synchronized 키워드로 클래스 전역에 대해 메소드(get/free)에 동기화 락을 구성해두었는데, 커넥션 풀이 고갈되는 시점에 get을 하게 되면 DB 연결 고갈로 대기가 발생되는데 이때 선행된 리퀘스트에서 free를 하려고 하면 get이 완료될 때까지 대기해야하는데 후행의 get이 종료되어야하는 순환 대기 문제가 발생. 결국 집중 모니터링 대상이 되었다.[1] - 불필요하게 남용된
synchronized
키워드로 인해 동기화에 CPU 자원을 소비하고 소량의 작업만으로 서비스 부하를 가중시키는 문제를 확인하고 일부 지점을 개선하였다.
서비스 가동 후 자원에 대한 read만 일어나는 지점에도 synchronized가 걸려 있었다. 멀티스레드 접근에 대한 충분한 테스트 후 synchronized 키워드 제거 후 동기화 블록 범위를 최소화하였다. Hashtable
클래스를 적절히 대체할 수 있는 곳에는HashMap
또는ConcurrentHashMap
등으로 변경하여 조회 성능을 개선하였다.
데이터 읽기 작업만 이루어지는데Hashtable
을 쓰게 되면 스레드 간 동기화 작업에 많은 비용이 쓰인다.[2] 멀티스레드로 돌아도 읽기전용으로만 쓰인다면 굳이 동기화 비용을 많이 들일 수 없고, 만에 하나 도중에 발생되는 작업은ConcurrentHashMap
이 제공해주는 선에서 충분했다.- 그 외에 각종 사용성 개선 작업과 웹 UI 로딩 성능 개선 등을 위해 브라우저의 웹 개발자 도구와 패킷 캡처 툴을 활용하여 낭비되는 조회시간과 리퀘스트를 줄이고 최적화하였다.
- 일부 유틸리티 클래스에서 Exception 발생 시 해당 Exception을 로깅이나 리포트 없이 no-op으로 처리한 지점을 발견하고 수정할 수 있는 부분은 개선했으나 수정이 불가능한 코어 라이브러리에 대해선 내부 교육자료를 작성하였다.
- 디컴파일러 사용과 디컴파일된 코드를 분석하는 능력을 길렀다.
- Java의 가비지 컬렉터와 멀티 스레딩 모델, 그리고 동기화에 대해 다시금 공부하는 한 해가 되었다.
- 프로파일러를 사용해 호출 빈도가 높은 메소드에서 발생되는 병목을 찾고 해소하여 개선하는 경험을 하였다.
- Powershell을 적극적으로 활용해보았다. 사내에서 배포 전에 만드는 리포트 파일은 파워셸 스크립트를 사용하여 만들어지고 있다. 물론 CSV 형태로 출력되어 자주 쓰이는 엑셀 파일 형식으로 변환하는 단계가 필요하지만 매주 커밋 로그를 한글 문서(…)로 타이핑하는 일을 줄였다.
- 그동안 팀 내에 없었던 DR 복구에 필요한 서비스 재기동 절차서와 서비스 스택 내 상용/오픈소스웨어 소프트웨어 목록을 모두 작성하여 정리하는데 성공했다. 이렇게 정리된 문서는 서버실 이전 작업(온프레미스 구성이라서)에 유용하게 활용되었다. 여러번 교차 검토하여 작업 당일에 빈틈 없이 오전에 모든 서비스를 복구하였다.
- 내가 2021년에 구성해준 상기 프로젝트 SVN 저장소를 Git 기반으로 변경하여 변환 결과를 점검하는 일일 배치 작업을 구성하고, Eclipse 버전 또한 2018년도 버전에서 최신으로 올릴 준비를 마쳤다. Git으로 매일 변환하기 위한 최종 스크립트 완성까지의 작업은 쉽지 않았지만 이제는 매일 문제 없이 잘 동작한다. (부디 2023년엔 넘어갔으면)
- 팀에서 약간 책임감 있는 위치로 올라갔다. 목소리에 힘이 생긴 건 좋지만 자리가 부담스럽다.
Non-tech
- 2021년에 예약 구매한 1/6 스케일 PureNeemo 인형이 1년 가까운 예약 기간을 거쳐 배송되었다. 총 2체를 들였다. 코로나19로 인해 중국 공장의 생산에 차질이 생겨 늦어졌다 들었다.
1/6 스케일 인형은 사람 키 140cm를 기준으로 할 때 약 24cm 내외 크기를 보인다. 하지만 거의 연말 다 되어서 도착하다 보니 2022년에는 사진을 찍지 못했다. - 자가용 자동차 구입 후 마일리지는 54000km을 돌파했다. 2021년에 36000km이었으니 18000km 정도 주행한 셈이다.
- 2022년에는 새로운 사진 촬영 컨셉으로 들고다닐 Sigma FP 카메라와 렌즈를 구입하였다. 실제로 이걸로 5월 경부터 찍고 다녔는데 몇가지 크리티컬한 단점과 그걸 능가하는 화질이 참 재밌는 제품이었다.
- 코로나19 백신은 정부 정책으로 4차 접종이 지연되어 11월 경에야 간신히 맞았다. (이것 때문에 면역이 충분히 만들어지지 못해 12월에 걸려버린 것 같은 느낌)
- 코로나19 종식 전에는 영원히 가지 못할 것 같은 국외 여행이 가능해졌다. 10월과 12월에 각각 1회 다녀와서 총 2회 다녀왔다.
2022년 3분기 경부터 일본의 경우 가이드 동반 패키지 여행을, 다음엔 여행 중 하루 자유여행이 허용된 패키지가 나오더니, 에어텔(항공권+호텔)이 허용되더니 어느 순간 무비자 관광이 허용되며 백신 접종(WHO 인정 백신으로 3회차 이상) 또는 72시간 이내 PCR 검사 음성 증명서로 일본을 자유롭게 방문할 수 있게 되었다. 정말 꿈과 같은 여행이었다. 처음 공항에 도착해서 너무 믿기지 않았고, 저녁에 숙소에서 술 한잔하고 온천욕 하고나서 누워있으니 이제야 일본 온 느낌이 들었다. - 코로나19 시국 중 첫 일본 여행은 큐슈 우레시노 온천을 친구들과 단체로 다녀오고 두번째 일본 여행은 와카야마와 시라하마를 개인 단독으로 다녀왔다. 렌터카로 한적한 지역으로만 다니면 안전하게 다닐 수 있어서 만족스럽다.
- 부모님 댁에 있는 낡은 김치 냉장고를 신형 김치 냉장고로 바꿔드렸다. 잘 쓰셔서 사드린 보람이 있는 것 같다.
- 올해 폭설이 내린 크리스마스에, 한 해 고생한 회사 선후배 분들과 함께 워크숍을 빙자한 바베큐 캠프 다녀왔다. 2023년에 모두 한 팀에 있진 못하고 이동하는 사람도 있겠지만, 한 해 힘든 기억 모두 잊고 좋은 기억만 담고 갔으면 하는 바람이다.
- 체중 감량을 위한 식이요법과 운동을 시작하였다. 목표는 20대 초반의 몸무게이다. 그때 사진 보니까 나름 호리호리하고 예쁘장했는데 지금은 고생에 찌든 직장인만 거울에 보일 뿐이다. 그리고 여행 다시 다니려니 체력이 많이 줄어든 게 느껴져서 위기감이 왔다.
- 연말에 한 해 감사했던 분들을 찾아뵙는 일을 해보았다. 마음이 편해지기도 하고, 겸손해지는 것도 있지만 나 혼자만으로는 세상이 살아지지 않는다는 걸 느끼게 되는 시간이 되었다.
- 전자필기장 + 이북뷰어 reMarkable 2을 구입하여 필기와 메모, 프로그램 설계 등에 쓰고 각종 원서 도서를 보는데 쓰고 있다. Packt 같은 해외 도서 사이트를 이용하면 DRM-free 전자도서를 구입할 수 있어서 이런 곳에 넣어서 활용하기 좋다.
내가 구입할 시점에는 한국 직배송을 지원하지 않았는데 이제 한국 직배송도 지원한다. 직배송 지원 안할 때는 미국으로 발송했는데, 이게 홍콩에서 출발하는 바람에 홍콩->미국->한국으로 오는 고통스러운 시간을 보내는 해프닝이 있었다. - 차 구입한 이후로 한번 해보고 싶었던, ‘내 차로 제주도 여행 가기’를 드디어 실천해보았다. 고생스럽지만, 내 차가 주는 자유로움이 있다. 이 경험을 바탕으로, 2023년 1월에 다녀오는 제주도 가족여행도 내 차로 무사히 다녀올 수 있었다.
- 올해 국내 여행으로 울진 여행을 다녀왔었다. 울진 정말 다녀오기 멀고 힘들다. 내가 사는 곳 기준으로 강원도 다녀오는 것보다 더 쉽지 않은 느낌. 그러나 울진은 울진만의 매력이 있다. 특히 덕구온천은 온천 내 호텔(리조트?)까지 예약하여 다시 다녀오고 싶었다.
- 2022년에도 수국 사진 촬영에 성공하였다. 2021년에는 수국을 정원형 식물원에서 봤는데 이번에는 제주도의 한 사찰에 수국으로 유명다고 하여 아침 일찍 이슬 맺힌 수국과 고즈넉한 사찰의 풍경을 사진에 담는데 성공했다. 2023년에도 수국 시즌은 놓치고 싶지 않다.
- 2021년에 세상을 떠난 친구를 계기로 생명의 전화에 매월 3만원 가량 정기후원한지 만 1년이 되었다. 극단적 선택에 조금이라도 신경 쓰이는 어렵고 힘든 일이 있다면, 여기도 좋고 여기가 아니더라도 나라에서 운영하는 곳도 많으니 연락하고 이야기만 털어놓고 공감 받아도 위기를 넘길 수 있으니 힘드신 분들은 적극적으로 도움을 받으셨으면 한다.
5분에서 15분 가량의 위기를 외롭지 않게 넘기면 살아남고, 살아남으면 희망을 가질 수 있는 기회를 얻을 수 있다고 한다. 지금도 나는 내 친구가 저녁에 내게 전화를 걸었거나, 혹은 내가 걸었더라면 지금까지 살아있을 거란 약간의 죄책감을 가지고 있다.
Down’s
한 해 슬펐거나 짜증났거나 아쉬운 일들을 정리해본다.
Tech
- 역시 기회는 줄 때 잡아야 하는 것이 맞는 것 같다. 이직 준비를 위해 한 회사 지원했었는데 면접 이후에 탈락. 충분히 준비하지 못한 잘못도 있고, 포지션이 잘 맞은 포지션이 아니었다. 이래저래 아쉬움이 남는다.
- 올해 회사 업무 상황이 좋지 않았던 것도 있지만 개인적으로 스킬업을 위한 노력을 많이 기울이지 못했다. 뒤쳐지는 느낌이 들어 좀 슬프다.
- 오픈소스 활동도 올해는 전무. 그나마 2021년에는 커뮤니티 활동이라도 몇가지 시도해본 것 같은데 올해는 없다. 반성하자.
- 프로그램을 짜거나 새로운 프로그램을 설계할 때 실패가 두려워 배운 것들을 적극적으로 쓰지 못하는 방어적 자세가 고착화될 위기에 빠진 것 같다. 물론 이런 방법이 필요할 때도 있지만, 다른 마음 가짐을 가질 필요도 있는 것 같다. 적어도 취미 코딩이라면.
- 이제는 이력서나 경력기술서에서 지원하려는 분야와 연관 없는 일들을 자신있게 뺄 수 있는 시기가 되어야 한다고 보는데, 아직도 그동안 경력이나 했던 일을 보면 잡탕밥이라 괴롭다. 커리어 패스가 항상 내가 원하는 경로로만 갈 수는 없지만 내가 그동안 너무 방향타를 놓고 흘러가는 그대로 맡겨놓고 산 느낌
- 회사에서 책임감 있는 포지션으로 올라간 건 좋은데 팀에 기술 인력을 줄여버린 상태에서 (즉 내 윗 사람이 나가고 인원 보충이 안된 상태로) 올라간 거라 실무 업무 + 기타 잡무가 많이 몰릴 것 같아 많은 스트레스가 온다. 회사가 작은 회사도 아닌데 한 사람에게 인프라, 네트워크, DevOps, 코드 리뷰, 심야 전산 설비 작업, 각종 회계 및 서류와 보고서 업무, 개발 및 유지보수 업무에 외부 고객사 업무 협의까지 혼자 다 다니는 게 맞을까…
Non-tech
- 코로나19 시국 약 3년 가량 무사히 안 걸리고 넘겼는데, 결국 코로나 겨울 대유행을 이기지 못하고 12월 중순 경 일요일에 확진되어서 7일간 격리되었다. 3일간 많이 아팠고, 1주일 간 미각/후각 탐지 불가도 있었지만 지금은 잘 회복하였다.
- 2021년 12월에 세상을 떠난 친구의 1주기를 맞이하였다. 1주기를 앞두고 며칠 동안 마음이 굉장히 좋지 않았는데, 휴가 내고 친구의 무덤가에 가서 술 따라주고 이야기 좀 나누고 오면서 마음이 많이 나아졌다.
- 방에 뜯지 않은 취미생활 용품이 늘어나는 걸 보니 정리할 시점이 온 것 같다. 그동안 하지 못한 물건들은 앞으로 할 의지가 있는지를 보고 과감히 매각하고 처분하여 새로운 취미를 가질 수 있는 여백을 마련해야할 것 같다.
- 팀 인력 구조 변경으로 인해 다른 부서로 이동되었고 덕분에 올 한 해를 헬게이트로 잘 보냈다.
2021년 회고를 살펴보니 이때도 부서 이동에 대해 많은 걱정을 했던 것 같다. 우려했던 일들은 상당 부분 다 현실로 나타났다. 하지만 일은 힘들었지만, 함께 일하는 사람들과의 팀워크는 매우 만족스러웠고 함께 일한 분들 잊지 못할 것 같다. - 2022년에는 참가 중인 인형 모임에 한번도 출석하지 못했다. 이러다가 나중에 만나면 서먹해질 것 같아 2023년에는 분발해야할 것 같다.
- 생각보다 기상 이변이 심각하여, 살고 있는 곳이 심각한 가뭄 위기에 닥쳤다. 비가 충분히 오지 않는다면 세수마저 사치가 될 것이고 마실 물도 걱정해야하는 상황이 올 것 같아 걱정이다. 정말 우려스럽다. 이제 내 커리어 보다 당장 생존이 걱정되는 상황이 다가오고 있어 기후 위기가 체감된다.
- 올해 인간 관계에서 선 지키지 못하고 마구 넘어오는 사람과 고의적인 무능력으로 화나게 만든 사람들에게 독한 말로 기분 상하게 만든 일이 몇번 있었다. 물론 효과는 있었지만, 지속적으로 쓸 수 없는 방법이기도 하고 인평을 깎아먹는 요인일 수도 있기에 다른 방법을 찾는게 좋을 것 같다. 다만 스트레스는 확실히 줄어들더라. 그동안에는 참고 있던 경우였다. 사람이 말을 필요한 경우에는 싫은 말을 해야 한다.
- 문화생활이 많이 부족했다. 코로나 동안에는 그래도 신작 영화 나오면 찾아보기도 하고 공연도 찾아 갔었는데 오히려 사회적 거리두기 완화되면서 더 챙기지 못한 것 같다. 그래서 정서가 메말라 간 건가?
- 2022년에는 애니메이션 풍 그림 그리기를 학원이나 강의 통해서 배우기로 했는데 올해도 결국 만족스럽게 충분히 하진 못했다. 포기하지만 않으면 다음 해에는 뭔가 이뤄낼 수 있을까 하는 생각이 든다.
For next year, to-do’s
2022년은 일이 힘들고 내가 힘들다는 이유로 이 힘든 시간이 빨리 가길 바라고, 집에 돌아오면 자기 개발에 거의 신경쓰지 못한 한 해인 것 같다. 회고 글 작성하면서도 확실히 느껴진다.
여전히 프로그래밍 공부와 프로그래밍은 재밌다. 그렇기에 그걸 잊지 않고, 그동안 고생으로 단단해진 마음 위에 즐거움과 흥미를 갖고 일하던 처음의 마음으로 돌아가는 시간을 가지고 싶다.
내 자신에 대해 좀 더 자신감을 갖고, 어려움에 부딪힐 때 잘 부딪힐 수 있는 용기와 피하지 않을 수 있는 굳은 마음을 가지는 한 해가 될 수 있도록 몸과 마음과 머리가 모두 준비되어야 할 필요가 있다고 생각한다.
어려운 상황은 내가 바꾸거나, 내가 다른 환경으로 옮겨가는 방법으로 해결할 수 있다. 2022년 최선을 다해 노력해봤지만, 1년간 노력해봐도 바꿀 수 없는 상황들에 대해서 이제는 인정하는 수 밖에 없는 것 같다. 그 전까지는 이만큼 노력해보질 않았던 건지 확신이 들지 않았는데, 이제는 확신을 가지게 되었다.
To-do’s
- 새로운 회사 또는 새로운 사람과 만나 새로운 환경에서 일하기
- 새로운 마음을 위해 오래되고 안 쓰는 물건들은 과감히 정리하는 시간 가지기
- 생명의 전화 후원 2년차도 무사히 정기 후원을 한다.
- 건강 회복 및 체형 가꿈을 위한 목표는 파워풀한 취미활동을 위해 필수 불가결. 국외 여행이 다시 허용되었으니 파워풀한 국외 여행을 위해 체력을 기르자.
- 무언가를 빠르게 해내는 것보다, 느려도 어쨌든 해내는 것이 중요해진 시기
- 닥쳐온 고난과 슬픔을 피하지는 말되, 할 수 없는 이상으로 무리하진 않기. 내 능력을 알고 한계를 인정하는 것은 중요하다.
- 이직 기간 중 여유 기간이 생기면 미국이나 호주로 장기간 여행을 다녀와보고 싶어 관련 준비해보기
- 익숙함에서 벗어나 새로운 도전을 해보기
- 자동차 자가 정비 범위를 늘리기 위한 관련 자격 공부와 지식 습득
- 애니메이션 캐릭터 그림 그리기 연습
- 갑자기 일렉 기타를 배워보고 싶었는데 꼭 배우자
멈추지 않고 하루에 한 걸음이라도 걸으면 앞으로 나아갈 수 있다.
- 1.디컴파일 후 mod된 JAR는 만들었는데 프로덕션에 적용하는데 반발의견이 많았다. ↩
- 2.JDK 8 기준 Hashtable#get 메소드 구현을 보면 기본이 synchronized 이다. ↩