이런저런이야기

인턴을 종료하며..

딤섬뮨 2024. 1. 11. 22:53
728x90

지난 7월부터 12월까지 한 보안기업에서 학점 연계 인턴을 했다.(나는 컴퓨터 보안 전공이다).
비록 서비스 기업이 아닌, 보안기업이지만 처음으로 ‘개발자’로서 어딘가 소속된다는 사실은 기뻤다. 더욱이 NestJs를 사용하는 팀이라니…!! 꺅 넘 좋다
 

어떤 일을 했었나

보안기업이라는 도메인 특성상 포기해야 할 일도 많았다. 트래픽을 경험하고 빠른 성능을 고려해야 한다기보다는 si로서 제품을 얼마나 견고하게 만들고 에러가 없느냐가 우선이었다.

그럼에도 어떤 기능을 짤 때마다 사용자 입장에서 이게 맞아? 사용자가 편해?라고 물어봐주는 팀장님 덕에 사용자 입장에서 생각해 볼 수 있었다. 
 
내가 했던 큰 두 가지 업무는 다음과 같았다

(1) NestJs로 레거시시스템을 마이그레이션.

기존 운영하던 레거시 시스템을 nestjs로 웹 프로젝트로 개발하는 프로젝트에 참여했었다. 많은 고민 포인트가 있었지만 가장 기억에 남는 건, 레거시 시스템의 DB의 구조는 그대로 가져가야 해서 약 40개의 테이블은 유지하면서 백엔드는 쉽고 간단하게 코드를 짤까 고민을 많이 했던 것 같다. 간단히 말하자면 typeorm으로 join을 걸고, relation을 통해 간단하게 유지관리할 수 있었다.

그렇게 나는 이 프로젝트를 하면서 한층 더 nestjs와 typeorm을 사랑하게 된 것 같다. 타입스크립트에 관해서도 더 알게 됐다!!! (너무너무 좋았고 재밌었다..)

늘 내가 nest를 왜 훨씬 좋아할까 생각해 봤다. 우선, 라이프 사이클이 명확하고 개념이 이해하기 쉬웠다. 예를 들어 내가 특정 시점에 db를 초기화하는 로직을 넣고 싶다면 원하는 시점의 라이프 사이클을 잘 파악해서 넣으면 된다.

[Nest Js 라이프사이클]

Middleware => Guards => Pre-Interceptors =>
Pipes => Controller => Service => Post-Interceptors => ExceptionFilter => Response



또 모듈식 아키텍처가 일반화 돼 모르는 코드들도 쉽게
이해가 가능한 것 같다. 그냥 한마디로 내가 짠 코드의 흐름이 눈에 보이고 유연하다.

(2) 레거시 시스템 유지보수

특히 인턴인 나에게 백 오피스 서버를 하나를 맡기셨다.
서버는 너무나도 레거시 시스템였고 언어는 처음 들어보는  ASP와 JS로 짜여있고 대부분 2007년 코드였다(제가 초등학교도 입학하기 전인데요 ㅠㅠ). 거기다가 원격 데스크톱 연결로 붙어서 사용하는 서버에 비주얼 스튜디오도 깔리지 않는 노트패드로 코딩을 해야 했다.ㅋㅋ

해당 서버는 분석팀에서 룰을 만들어서 등록한 뒤, 각 장비에 업데이트를 해주는 중간 다리 서버였는데 그래서 까딱 잘못하면 전 장비에 영향을 줘서 매우 조심해야 했다. 

그런 유지보수를 하기조차 힘든 상황에서 타 팀에서 불편한 점 10가지를 말하면서 그 부분을 개선해 주는 업무를 했다. (예를 들어 번역을 하나하나 작성하던걸 엑셀로 일괄 등록할 수 있게끔 해달라거나..) 문제는, 그 서버에 대해 기능을 잘 아는 사람이 회사에 없었다.  기능과 코드에 대해 물어볼 사람도 없고 그냥 내가 이 부서 저 부서, 어떤 기능을 쓰셨는지 여쭤보며 발품을 팔고 다니기도 하고 회사에 작성된 자료와 정말 asp코드를 열심히 분석하면서 기능을 분석하고 개선해 드린 것 같다. 내가 개선해 준 것 들 덕분에 일하기 정말 편해졌다는 소리 들을 때마다 뿌듯하긴 했다. 더욱이 node ver6와 ECMA5(await/async 지원 X)로 개발을 해야 해서 강제로 콜백 패턴과 Promise를 잘 알게 된 효과도 있었다.ㅋㅋ(모든 js/ts개발자들은 await async를 만들어준 개발자분들 향해서 절을 해야한다 이건...)


우당탕탕 개발 기록들..

개발 기록들은 잘 다듬어서 쉬는 동안 정리해봐야겠다

회사 생활에서 배운 것


내가 회사생활을 하면서 가장 크게 느낀 것은

1. 정말 확실한 설계와 클린코드.. 중요하다.
‘나보다 회사에 코드가 오래 남을 것이다’

2. 잘 정리하기

에러든, 기능이든 개발 건에 관해 어떤 배경지식도 없는 사람이 봐도 기승전결을 알 수 있도록 하는 ‘정리’가 중요함을 뼈저리게 느꼈다.
회사에 아무도 관련인이 남지 않았을 때, 결국 남아있는 건 자료들이다. 나는 이 점을 많이 배우고자 상사들의 기록을 많이 참고한 것 같다.
 
3. 얕은 지식은 말을 말자
아주 부끄럽게도 내가 짠 mongo db  쿼리에 대해서 명확한 작동 방식을 설명 못한적이 있다. 남에게 설명할 때 얕은 지식으로 설명하지 말자. 이건 내가 플로니 앱을 만들 때도, 느끼는 나의 올해 가장 반성해야하는 부분인 것 같다. 앞으로는 어떤 코드든 깃이든 인프라든, 뭐든 확실하게 설명할 수 있을 정도로 알아보고 결과물을 남기자
 
 

내가 속했던 첫 번째 개발 팀

인턴을 했던 내 팀은 정말 나에게 소중한 기억을 주었다.

우리 팀은 내가 인턴이라고 해서 절대 내 의견을 무시하지 않았다. 인턴인 내가 코드리뷰 하자고 하고, 리뷰할 때도 상사의 코드에 관해 여러 의견을 제시해도, 다들 방어적이지 않고 오히려 적극적으로 반영해 주셨다

운동을 좋아하는 분들이 많아 옆에서 자극을 받다보니, 덕분에 한동안 새벽에 수영을 하고 출근했다.ㅋㅋ (건강+100)

내가 번개랑 회식을 자주 열었는데 흔쾌히 다들 즐겨줬다. 에버랜드, 등산, 마니또, 송년회 등등 6개월간 진짜 팀 사람들과 정이 많이 들었다. 가끔은 무섭고, 피드백을 해주셨던 팀장님이 내가 와서 팀 분위기가 너무 좋아졌고 나한테 정이 많이 들었다는 이야기와 그외 여러 사람들의 이야기가 상당히 고맙고 기억에 남는다.

송년회 때 미니 시상식을 위해 내가 만들고, 내가 회사 주임님과 수상한 ㅋㅋ소중한 상장..


그 외에도 인턴 동기들, 타 부서 사람들 등 정말 많은 인연이 생겨서 귀한 시간이었다. (5년 있던 사람들보다 내가 아는 사람이 더 많은 거 아니냐는 농담도 있었다 ㅋㅋ)  마지막날.. 선물과 편지를 주고 받다 코가 빨개지며 울어서 크리스마스에 루돌프가 왜 안 왔나 했더니 여기 있었냐고 놀림받은 사람 나예요 

 
회사 사람들 중 누군가 이 글을 볼진 모르겠지만, 정말 그립고 고마웠다고 얘기해주고 싶다 :)
 

안녕

728x90