Backend

👩🏻‍💻신입사원의 레거시 코드 뽀개기

!쪼렙조햄 2020. 4. 3. 00:24
반응형

신입사원은 레거시 코드를 받았고 뽀개려 합니다 

💼 새로운 부서 새로운 일

2020년 3월, 드디어 정직원으로서의 첫 부서를 배치받았다. 네이버 지도를 서비스하는 팀에 들어와서 초반 1주차는 지도, 좌표계에 관련된 여러 자료들을 살펴보고 도메인 지식을 쌓는데에 주력했다.

새로운 팀, 새로운 업무를 맡게 되니 당연스레 레거시 코드를 인수인계 받았다. 난생 처음 레거시 코드를 받고보니 어디서부터 살펴보아야 하는가, 이걸 내가 다 볼 수 있을까?, 어떻게 봐야 다 봤다고 할 수 있을까 등등 많은 생각이 들었다. (난생 처음 재택근무도 하고 있다 COVID-19😷)

🗂 부여받은 업무

내가 부여받은 업무는 퇴사자 분이 인수인계 해주신 업무를 (java, spring boot로 된 API) kotlin으로 리팩토링하고 한가지 기능을 탑재하는 것!

기대효과는 코딩 & 리뷰 위주의 경험, 서비스에 사용된 관련 기술 경험, Kotlin with Spring Boot 프로세스 경험 등등..

📋 그래서 내가 해야 할 일

  • kotlin 언어 특징들 파악하기
  • 소스코드 파악하기
  • 몇% 정도 코드를 이해할 수 있을지 의견 드리기

여기서 첫번째 kotlin 언어 특징들을 파악하기 위해서 Kotlin in Action 책을 사용해서 스터디를 진행하기로 했다. 스터디 대상은 android 개발을 하시는 두분과 홀로 be 개발인 나자신 이렇게 세명..

그리고 두번째 소스코드 파악하기와 세번째 몇% 코드를 이해할 수 있는지.. 이것이 엄청난 관건이다. 일단 레거시 코드를 다들 어떻게 분석하는지 알고싶어서 구글에 무작정 “레거시 코드 분석” “스프링 부트 레거시 코드” 를 검색했고, 이 과정에서 몇가지 자료를 읽게 되었다

그래서 받은 코드를 보니 테스트 케이스가 있었다!!

  • 서비스에 포함된 총 5개 API를 정상적으로 호출하고 200OK response를 응답하는지 확인하는 테스트 코드
  • 한가지 API가 java의 heap memory를 얼마나 사용하는지 확인하는 테스트 코드
  • 원천 데이터가 들어있는 DB에서 값을 잘 가져오는지 확인하는 테스트 코드
  • API 호출한 Host의 ip가 유효한지 확인하는 테스트 코드

테스트 코드들이 무슨일을 하는지, 테스트 코드 해석하는데만 시간이 꽤 걸렸다. 처음 레거시 코드를 받고 서버를 실행해 봤을때 실행이 안되어 질문을 하고 해결방법을 받았었는데, 이 과정이 없었다면 테스트 코드 만들고 돌려보려 했을때 혼자 얼마나 삽질을 했을지.. 아찔했다.

테스트 코드가 있는 것도 알았고, 레거시 코드를 리팩토링할때 이를 잘 활용하면 좋다는 것 도 알았다. 그런데 아직도 내가 코드를 어떻게 이해해야 하는지, 몇%를 이해했냐는 질문에 어떻게 대답하면 좋을지는 모르겠다.

👀 코드 살펴보기

같은 be 직군인 입사 동기에게 spring-boot 레거시 코드를 어떻게 들여다봐야할지 물었을때 돌아온 대답..

온몸이 뒤틀려지는 느낌이지만 꾹참고 컨트롤러부터 보기 시작!

@PostConstruct, getOrDefault, caseInsensitiveMap, vividsolution의 envelope등.. 처음보는 것들을 하나씩 뜯어보는중. Controller을 보다보니 - service - repository - 등등.. 자꾸만 깊은 곳으로 타고타고 들어가서 모르는 것들을 계속 보는중. 일단은.. 이만 퇴근..

레거시 코드 뽀개고 돌아와야지 🏃🏻‍♀️

반응형