업무 회고
3개월 좀 넘게 이제 지금의 회사를 다니는 중인데,
사실 정말 짧은기간이라고 봐도 무방하다.
근데 이 3개월동안 회사에서 했던건 정말 많았다.
왜냐면 내가 지금 혼자 백엔드를 맡아서 개발하고 있으니까 말이다.
전에 있던 백엔드분은 보지도 못했고 따로 인수인계 받은게 없었으니
기존의 기능에서 추가적으로 개발하는데 꽤나 애를 먹었었다.
인수인계 과정
그러니까 지금 백엔드 프로젝트 1개가 인계한 순서가
전 백엔드 근무자 → 프리랜서 → 나
이 순서로 인계가 되었기 때문에 뭐 제대로 받은게 없었다.
당연히 받은 코드도 이해하는데 꽤나 걸렸으며,
특히 테스트 코드
가 없었다....
어떤식으로 돌아가는지에 대한 이해를 전혀 할 수가 없어서 짜증이 났지만,
그래도 이게 또 기회랍시고 나는 넥스트스텝의 TDD 과정을 들은 것을 토대로 테스트를 작성했다.
테스트 코드
테스트 코드는 정말 작은것부터 시작을 했다.
누구한테 물어볼 그런것도 없었거니와, 추가적으로 알아야 하는것은 구글신
에게 의존하는 수 밖에 없었고, 그러면서 동시에 어떤 라이브러리에 대한 공식문서
보는것이 좀 당연해졌다.
지금 구조는 회사의 백엔드 기술력이 오로지 나 혼자가 일궈낸 것이 되는것이다.
처음 왔을 때부터 그랬으니까 뭔가 도입하거나 하려는 것도 내가 배워서 적용만 하면
되는것인데,
방향을 잡아줄 수 있는 사람이 없다는 것
이게 정말 아쉬운 부분이었다.
하지만 단위테스트를 적용해놓고나서 보니까 중복된 코드
도 많이 보였고,
쓸모없는 로직
, 불필요한 주석
추가적으로 어떤 변수에 대해 사용하지 않은데 향상된 for문
, 람다 forEach
가 섞여있는 모습들이 많았다.
무조건 분기해서 만든 긴 ifElse
조건문들...
와서 모두 디자인패턴
에 대한 공부, TDD Clean Code with Java 12기
에 학습하면서
다 안좋게 보여서 전부 고쳤다.
테스트가 항상 통과되고 안전하다는 보증을 서줬기 때문에 믿고 막 고칠 수 있었던것 같다.
협업
협업에서도 아쉽지만 우리 회사에는 Git
에 대해 좀 생소할 수도 있고, Jira
, Slack
등등... 사용하지를 않아서 협업 질문에 대해서 다 협업은 하고싶다고들 얘기를 하셨다.
그렇기 때문에 Git Flow
에 대해서 회의실에서 내가 발표를 하고 이 Flow
대로 Git을 제대로 사용해보자 도입해보자 건의를 했다.
대답들은 전부 긍정적이셔서 이렇게 협업의 장을 내가 열었다(?) 고 봐도 될 것이다.
Jira
에 대해서는 들어는 보셨지만, 사용해보지는 않았다고 하셔서 이전 직장에서의 사용했던 경험과, 그리고 지금 진행중인 스터디 에서 사용했던 거로 설명을 전부 했었다.
그리고 제일 중요했던 것...
스웨거 도입
여태 API문서
에 대한건 전부 엑셀파일로 백엔드 개발자 분이 직접 만들거나 또는 Postman
에 올리거나 하는식으로 진행을 했다고 한다....
당시에 나는 이 방식이 정말 귀찮았다.
이거를 내가 API 개발함과 동시에 문서화를 하는게 낫다고 판단했다.
왜냐면 서버가 돌아가면서 그안에서 테스트를 해볼 수 있기 때문이었다.
그리고 구축을 해두었으니 별도로 따로 타이핑을 해서 문서화 해야하는 불편함을 좀 덜 수 있었기 때문이다.
그래서 Spring Rest Docs
와 Swagger 2
중에 고민을 했지만,
디자인이 좀 알록달록하고 Spring Rest Docs
보다 Swagger
가 설정이 좀 더 편했으니
이게 좀 더 합리적이라고 생각했다..
프론트엔드 한분이 스웨거는 많이 보셨다고 한게 한번의 작용을 했다고도 볼 수 있다. ㅋㅋㅋㅋㅋㅋㅋ
여기까지 해서 Git
과 Swagger
, Jira
까지 협업에 대한 밑바닥부터 조금 만들었다.
마이그레이션 경험
일단 Mybatis
기술을 사용한 것이 정말 많았다...
이 기술 쓰는 것 그 자체에 대한 고찰이 생겼었는데
그 이유는 바로 명색이 백엔드 그것도 자바 개발자인데,
Mybatis
안의 그 핵심 쿼리들, 그리고 그 안에 비즈니스 로직을 다 넣게 되는 것이다.
그래서 원하는 데이터만 딱딱 뽑아오게끔 거의 설계가 됐었다.
전직장도 동일하다(물론 iBatis였지만)
자바를 많이 보고 객체지향적인 고민을 하는것이 아니라,
데이터적인 생각, 항상 데이터만 이렇게 가져오면 된다에 심혈을 기울여서
쿼리에서 데이터만 받아서 처리해주면 된다. 라는 생각만 갖게 됐던 것 같다.
그래서 이를 탈피하고자 이전에 Django 팀 프로젝트를 했을때 사용했던 ORM을 생각해서
공부하려고 JPA스터디를 참여하였다.
좋은 사람들을 만났고 많이 배웠으며 질문도 환영하는 느낌으로 받아들 주셨기에
길다면 길고 짧다면 짧았지만 얻어간게 정말 많았다.
지금도 질문을 하면 다들 들어주시더라
그렇게 해서 윗부분에 설명했던 테스트코드 와 같이 Mybatis
를 JPA
로
성공적으로 바꿨다.
쉘 스크립트 작성기
일단 지금 사용하는 스프링부트
이 프레임워크에는 내장톰캣이 구성되어있다.
근데도 과제를 수행하는 프로젝트에서 그 회사쪽의 요청으로 외장톰캣을 사용했다.
내장 톰캣이 있다고 말씀을 드렸지만 외장톰캣을 사용해야 한다고 그러시더라.
거기에 깃랩을 사용하여 소스관리를 하지만? 소스관리일뿐 그것을 가져와서 자동화는 따로 시키지 않더라.
이부분이 궁금했지만 그래도 외주를 받아서 우리가 과제를 진행했기 때문에 그쪽이 갑이어서 건의는 더이상 하지 않았던 기억이 있다.
일단 뭐 배포를 해야되는데 내가 없을 때는
프론트 개발자 한분이 전부 배포를 했다고 한다.
근데 배포하는 방식이
계속 그냥 콘솔에 cd xxx
, sudo xxx
, ...등등 일일이 타이핑을 치고계셔서 좀 놀랐다.
이 과정이 귀찮지는 않은가 여쭤보았고 여쭤보기도 전에 머릿속으로 당연히 번거롭고 귀찮다는걸
나도 느끼면서 질문했는데 당사자도 귀찮았다고 생각한다.
그래서 내가 할 수 있는 선에서의 최선이 바로 이 쉘스크립트 작성이었다.
이거로 인해서 반복되는 명령어 그리고 그것들을 하나하나 입력하는데에 대한 시간들에 대해
많이 줄였다. 정확하게 시간을 재지는 않았지만 빨라도 20초? 걸리던거 그냥
~: ./deploy.sh
이거만 시켜주면 되니까 이 명령어 치는데 얼마나 걸릴까???
생각은 읽는 사람의 몫이다.
뭐 이렇게 나름의 노력을 했더니 개발이 그냥 재미있다.
뭔가를 계속 찾아서 불편한 부분을 개선하는 나의 일련의 노력들 그리고 그걸 해냈을 때 희열감 그리고 그것에 대한 기억은 대단하다.
개월이 지날 수록 이런 회고글 좀 더 쓰는식으로 진행을 하겠다.
'Diary' 카테고리의 다른 글
블로그를 옮기고 최신 근황 (0) | 2022.08.13 |
---|---|
업무 리팩토링에 대한 회고 (0) | 2022.08.10 |
1개월 1일 1커밋 회고 (0) | 2022.08.07 |
TDD Clean Code with Java 12기 - 1주차 (0) | 2022.08.05 |