# Situation 상황
예전에 로봇 플랫폼 서버와 로봇이 주행하게 될 전역 경로 생성 서버가 따로 있었다. 전역 경로 생성 서버가 따로 있는 것이 비효율적이라 로봇 플랫폼 서버와 전역 경로 생성 서버를 하나로 합치면서 코드도 한 저장소로 합치게 되었다. 전역 경로 생성 개발자는 다른 팀이었는데, 백엔드팀 코드 저장소에서 같이 개발하게 되었다. 하지만 전역 경로 생성 개발자는 장고에 대한 이해, 테스트 작성 등 백엔드 개발 관련 지식이 부족했다. 전역 경로 담당자는 예전보다 개발하는데 더 오래 걸리게 되었고, 나와 만날 때 다시 과거로 돌아가 서버 분리를 하면 좋겠다는 이야기를 자주했다.
# Task 과제
과거로 다시 돌아가 전역 경로 생성 서버를 따로 두는 것은 비효율적이었다. 로봇 플랫폼 서버가 전역 경로 생성 서버에 매번 요청해야 하므로, 로봇은 추가로 발생하는 응답대기시간만큼 전역 경로를 더 늦게 받게 되기 때문이다. 서버를 따로 분리하면 당연히 그만큼 서버 비용도 추가로 든다.
# Action 행동
1. 백엔드팀과, 경로 계획팀에 서버 분리가 아닌 저장소 분리를 제안했다. 전역 경로 생성 코드만 따로 비공개 외부 패키지로 만드는 방안이었다.
2. 다른 팀원이 저장소 분리 작업을 해주었고, 나는 분리된 저장소를 비공개 외부 패키지로 pip 명령어를 통해서 설치 가능하도록 만들었다. 또 기존 코드를 외부 패키지를 import해서 실행하도록 모두 변경하였다.
3. 외부 패키지가 된 전역 경로 생성 코드가 제대로 작동하는지 확인하는 테스트 코드도 작성하였다.
4. GitOps 방식으로 Github Action을 활용해서 배포를 진행했는데, 배포 시에도 문제 없이 비공개 패키지가 설치되도록 작업하였다.
# Result 결과
- 전역 경로 생성 담당 개발자의 생산성이 향상되었다. 로봇 플랫폼 코드와 의존성이 완전히 제거되었고, 로봇 플랫폼에서 사용하는 장고 등 여러 패키지에 대한 이해도 필요 없게 되었기 때문이다.
- 만약에 다시 서버를 분리하게 되었을 경우, 발생하게 될 서버 비용도 절약할 수 있게 되었다.