본문 바로가기
지나온 나날들의 향기

2021년 이전의 회고록 - 2020년

by anothel 2021. 7. 21.

2017년 4월부터 지금까지 쭈-욱 이어온 개발자로서의 삶을 반추하고, 무려 4년씩이나 방치되어있던 기억들을 이제야 정리하려고 한다.

 

2021년에 반추하는 2020년


2020년을 회상하며 코로나가 빠질 수 없지

 

1-1. 회사에서 내가 맡은 일(feat. 암호화 그리고 보안)


DB 암호화 설루션 유지보수 및 개발. 이게 내가 맡았던 직무였다. 기존 코드를 Google C++ Code Style로 개선하면서 모든 코드에 대해서 다 이해를 했었고, 장애 발생 시 아주 신속한 분석 및 대응을 했다. 지금 생각해보면 나는 회사의 인재였다. 못하는 게 없었고, 일도 나름 잘했다.

크게 맡은 또 다른 업무로는 CC 평가 및 인증을 진행했다. 사실 내가 입사 하기 훨씬 전부터 CC 인증에 대한 컨설팅 수료 및 여러 사전 준비를 마친 상태였지만 실제 업무는 거의 진행되지 않았었다. 이런 상황에서 팀장님과 둘이서 개발을 했는데, 이미 CC 인증에 대한 요구사항 등을 알고 계셨던 팀장님께서 요구사항을 전달해 주시면 그에 맞게 개발을 했다. 지금 와서 되돌아보면 상당히 수동적인 업무를 진행했다. 그도 그럴 것이 나는 나중에 끼어들었기 때문에 잘 모르는 부분이 많았기 때문이다. 이런 상황임에도 불구하고 나름 잘했었다.

JAVA로 업그레이드된 TO-BE 제품을 개발하기 위해 AS-IS 제품을 분석해야 하기도 했었는데,  나는 제격이었다. 왜냐하면 AS-IS 제품을 만들진 않았지만, 만든 사람의 마음으로써 모든 것을 분석했고 또한 수정도 했기 때문에 모르는 것이 없었기 때문이다.(JAVA에 관련해서는 할 말이 아주 정말 많다.)

이전 회사에서 권고사직으로써 당일 퇴사를 당한 후 2개월 정도의 재정비 및 휴식기(그냥 돈 많은 백수) 기간을 갖은 후 입사한 회사였기에 나는 잘하기 위해서 뭘 하든 열심히 했다. 거의 매일 야근했기 때문인지 프로야근러라는 별명이 생겼었고, 보통 시간에 퇴근하면 옆팀 팀장님께 오늘 무슨 일이 있는 거냐고까지 듣기도 했다. 빌드가 되는 동안 혹은 일하다가 잠깐 틈이 나면 기술서적과 인문서적 등을 읽었다. 그렇게 매 순간 최선을 다했다.

p.s. 오후 7시 30분에 퇴근하는 사람 붙잡으시며 오늘 무슨 일 있냐고 왜 이렇게 일찍 들어가라고 하신 모 부장님이 계셨다. 신기한 점은 그분은 8시에 퇴근하시며 "나는 오늘 일이 있으니 조퇴할게"라고 하셨던 모 부장님. 퇴근 시간이 지나고 나서 영상만 보고 계실 거면 왜 야근하세요? 지금에서야 감히 질문을 올립니다.

 

1-2. 집에서 내가 맡은 일(feat. 동거인을 거느리는 임차인)


생각해보니 2019년 말 혹은 2020년 초 즈음에 친구와 동거를 했다. 친구가 새 회사에서 취업 후 우리 집과 가까운 곳으로 출근을 하게 되었다. 2-3년 즈음 전에도 우리 집에서 살 뻔했던 친구였는데, 이번에는 진짜로 우리 집에 와서 살게 되었다. 처음에는 좋았다. 한 달에 얼마 정도 방세를 받았었고, 오랜 친구였기 때문에 서로 잘 맞는 부분이 있었다(당연히, 잘 맞지 않는 부분도 많았다.). 처음에는 좋았다. 오랜 친구와 함께 지낸다는 것이 심심하지 않았고, 타지 생활이 외롭지 않았다. 하지만, 다음에 또 이런 기회가 있다면 누군가와 동거를 하지는 않을 것 같다. 아무리 친한 친구라 할지라도 같이 사는 것은 정말 많은 고민을 해야 하는 부분이라고 깨닫게 되는 계기가 되었다.

 

2. 적자생존 (適者生存): [명사] [생명] 환경에 적응하는 생물만이 살아남고, 그렇지 못한 것은 도태되어 멸망하는 현상. 영국의 철학자 스펜서가 제창하였다.


팀원이 좀 많았었다. 팀장님을 비롯해서 총 8명. 그중에 내 사수라면 사수였던 대리가 한 분 계셨는데 일을 참 안 했다. 아마 매너리즘이라는 단어는 이럴 때 쓰는 게 아닐까 싶다.

코드를 분석하거나 개발할 때 혹은 환경 관련해서 안 되는 게 있어서 그 사수에게 질문을 하러 찾아갈 때가 종종 있었지만 어느 순간부터는 가지 않았다. 갈 때마다 분명 회사에서 내가 봐야 하는 화면이나 장면들이 있을 텐데 그런 기대에 부응하지 못했던 상황뿐이었고, 질문을 해도 별 도움이 안 됐었다. 이해할 수 있다. 회사에는 새로운 개발은 없었었고, 팀장님의 성향은 열심히 하면 열심히 하는 대로 지원해주시지만, 열심히 하지 않으면 열심히 하지 않는 대로 방치하는 성향이셨던 것 같다. 해당 대리님은 아마도 더 이상의 추가 개발이 없는 설루션을 맡고 있기에 매너리즘에 빠져있던 게 아닌가 싶다.

결국 팀장님을 비롯해서 총 5명으로 팀원이 줄었고, 해당 대리님은 다른 팀으로 이동했다가 얼마 안 되어 퇴사하셨다. 어찌 보면 뜬금없는 내가 나타나 가만히 잘 계시던 그분을 밀어낸 것 같아서 마음이 좋지 않았지만, 적자생존이라 생각하며 스스로를 위로했었다.

 

3. Common Criteria(feat. 매출 상승에 기여했습니다.)


나는 과연 회사에서 괜찮은 업적을 남겼는가? 에 대해서 고민해본다면 아마도 CC인증을 받은 것이 반 이상의 지분을 차지할 것이다. 비록 시작부터 투여되진 않았지만, 팀장님께서 주시는 업무들을 남다른 혹은 유별난 분석능력으로써 쳐냈다. 설루션에서 사용하는 SQLite3(오픈소스 파일 DB)를 분석해서 커스터마이징 했다. CC 요구조건 중에 디비 사용 시 무결성이 보장되어야 했는데, SQLite3에서 데이터를 저장하는 부분을 분석해서 데이터 저장 후 Hash를 꼬리에 달았다. 다음 데이터를 저장할 시에는 이전에 저장된 데이터와 고리를 Hashing 해서 다음 저장될 데이터의 꼬리에 달았다. 이렇게 하면 Hash값을 변경할 순 없을 테니 저장된 데이터는 무결성이 보장된다. 다음으로, 커널 모듈. 리눅스에서 설루션을 사용하는 유저 외 다른 어떤 사용자(root라 할지라도)도 접근할 수 없도록 하는 가용성을 충족하기 위해 커널 단의 함수를 Hooking 하는 커널 모듈을 개발했다. 이때 고민했던 프레임워크로 Fuse가 있었는데, 커널 모듈을 개발해서 직접 접근하는 방식이 더 가볍고 적절하다고 판단했던 것 같다. CS 프로그램의 특성상 TCP 통신을 해야 했는데, 이때 사용한 암호화 방식에 굳이 이름을 붙여보자면 하이브리드 암호화 시스템이다. 대칭, 비대칭 암호화를 동시에 진행해서 서버와 클라이언트가 주고받는 통신내용을 완벽히 암호화할 수 있었다. 나중에 알게 된 사실이지만, 이 방식은 TSL 방식과 유사하다. 이 방식을 평과관에게 이해시키느라 아주 엄청나게 고생했다. KCMVP(검증필 암호모듈)를 잘 사용하고 있는지, 사용한다면 어떤 값이 오가는지에 대해서 증명을 했어야 했는데, 한마디로  싸면서 준비해놨더니 너무 자세하게 준비했더란다. 당시 나는 모든 함수와 라인에 대해서 설명을 붙였었고 문서로 100장이 훌쩍 넘었었다. 그런데 알고 보니 다 필요 없고 잘 사용하고 있는지 어떻게 사용하는지에 대해서만 이해시키면 된다고 하더라.(진즉 말해주든가;)

나름 이렇게 고생 고생해가며 서버와 클라이언트를 모두 마쳤고, 다양한 방식의 정보보호(무결성, 가용성, 기밀성 등)를 위한 작업을 수행했지만 나중에 막상 이력서와 포트폴리오에 작성해보니 별게 아닌 게 돼서 스스로의 경력에 대해서 좀 서운하기도 했다. 더욱 정진하고 노력해야겠다는 마음을 다시 한번 다져본다.

이러저러하게 CC를 마치고, 사실 난 회사에서 할 일이 없었다. 모든 설루션 회사가 그런지는 모르겠지만, 나는 입사 후 3개월 만에 레거시 코드를 모두 분석했고, CMake, Google C++ Style, Google Test 등을 도입하며 나름 빌드 자동화, 테스트 자동화, 코딩 규약 단일화를 마쳤다.(당시의 나는 열정이 너무나도 넘쳐났었다.) 사실 나중에 가서 면접 볼 때는 이 것 가지고 탈탈탈 털렸다. 대체 이게 자동화한 게 맞냐며 젠킨스 정도는 써줘야 빌드 자동화했다고 하지 않겠냐며 탈탈탈 털렸다. 그랬다. 젠킨스를 해보지 않았다. 이제 와서 참 후회스럽지만 당장 내일부터 젠킨스를 공부하고 회사 설루션에 적용해봐야겠다. 아! Google Test를 사용할 때 다양한 케이스가 있을 텐데 내가 원하는 케이스만을 테스트하기 위한 기술도 공부해서 바로 적용해봐야겠다. 나는 늘 할 일이 많다.

 

4. 코로나(feat. 2021년 7월 요즘 다시 정점 찍는)


2019년 12월 즈음이었던 것 같다. 친구와 닭갈비 집에서 술 한잔 할 때 친구가 사람이 픽픽 쓰러지는 영상을 보여주면서 코로나 걸리면 이렇게 된다고 한탄했다. 그날이 엊그제 같은데 2021년 7월 지금은 하루에 1600명이 넘는 확진자가 매일 나오고 있다.(생각해보면 5천만 명 중 1600명은 별로 안 되는 숫자이긴 하다.)

코로나가 창궐하며 많은 회사들이 재택근무에 돌입했다. 나는 매일 지하철로 출근하며 와 대체 이렇게 많은 사람들이 같은 공간에 있는데 우리 회사는 대체 언제쯤에나 재택근무를 하게 되는 거냐며 투덜 되기도 했지만 잠시였다. 당시 회사는 한 건물에 3~7층을 전세로 들어 지내고 있었는데, 담당자가 일을 개판으로 해서 쫓겨나기 이르렀다. 사무실을 어디로 이사해야 하는 고민이 많았고 강 위로 가느냐 강 밑으로 가느냐 말이 많았다. 그러던 중 서울의 중심은 성수동이라는 한 임원분의 (구닥다리) 생각을 모티브로 성수동에 새로 짓는 건물로 이사를 한다고 한다. 그런데 이게 웬 말? 건물은 아직 짓는 중이고 그전에 전세계약은 끝나버려서 회사는 있는데 사무실은 없는 그런 상황이 발생했었다.

그래서 재택근무를 했다. 코로나 때문이 아닌, 일할 사무실이 없어서. 왜 일할 사무실이 없었는가? 담당자(모 차장님)는 근무자 연봉협상을 할 시간도 없을 만큼 일이 너무나도 많고 건물주와 트러블을 만들어내서 쫓겨날 만큼 모진 곳이 많아서 없었다.

지금 와서 생각해보면 참 다이내믹하고 기가 막힌 한 해였다. 2020년.

 

5. 멱살 잡고 캐리(feat. 정말 감사합니다. 팀장님,)


어처구니가 없는 회사를 다니면서도 이 것 하나만큼은 정말 감사드린다고 말하고 싶다. 나를 픽해주셨던 팀장님. 팀장님께 정말 많은 것을 배웠다고 생각한다. 타인을 부드럽게 대하는 방법, 타인의 코드를 부드럽게 이해하는 방법, Linux 다양한 기법들, 깊숙한 OOP 개념, 개발을 잘하는 방법, 일을 열심히 하는 방법 등. 정말 감사합니다.

비록, 팀장님의 퇴사를 알기 전 저는 퇴사를 결심하고 준비하고 이행했지만 그러면서도 계속 팀장님이 맘에 걸렸었습니다. 그리고 팀장님께서 퇴사하시는 걸 알았다면 저는 다음날 퇴사를 했을 것 같습니다. 그만큼 팀장님이 계시지 않은 이 회사는 다녀야 하는 다른 어떤 이유가 없는 회사라고 생각했기 때문입니다. 저를 어느 정도 사람처럼 개발자처럼 만들어 주셔서 감사합니다.

 

6. 마무리


회사 사무실의 기사(奇事)때문에 3개월 정도 집에만 있었다. 이때 공부 좀 더 할걸 하는 후회가 남고, 근무하면서 팀장님께 배울 것들을 더 많이 캐치해서 (팀장님을 더 괴롭혀서) 더 많이 배워놓을 걸 하는 후회도 남는다. 다른 한편으로는 매일 지하철로 출퇴근하며 책 읽는 습관을 갖게 뿌듯한 한 해이기도 했다. 그리고 난 서울에 살고 싶은 마음도 있었는데 막상 서울로 출퇴근을 해보니 서울은 아니다. 살 곳도 직장을 잡을 곳도 절대로 아니다 라는 것을 깨달았다. 지방에 있을 때는 사람들 가득한 지하철 출퇴근이 영화의 한 장면으로만 보였었는데 막상 직접 겪어보니 절. 대. 아니다 라는 것도 깨달았다. 앞으로 정말 웬만하면 다시는 서울로 출퇴근하지 않을 예정이다.

그리고 2020년을 반추하며, 나는 더욱 정진해야 함을 다시금 느끼게 된다.

 

728x90