[프리온보딩] 여섯번째 과제 회고

이동훈·2021년 11월 19일
0

프리온보딩

목록 보기
7/8

어느덧 프리온보딩도 3/4만큼 진행했다. 여섯번째 과제는 이전의 과제들보다 비교적 도전적인 과제가 출제되었다. 전동킥보드 공유서비스를 운영하는 디어코퍼레이션의 과제였는데, 자유도가 꽤 높고 약간의 창의성도 요구되었다. 여러 할인 혜택과 벌금이 추후 추가되거나 변경되거나 할 수 있는 데, 어떻게 시스템 설계를 해야 확장성에 도움이 될지 고려해야 했다.

성연 팀원님께서 책임연쇄패턴을 활용해서 확장성을 향상시켜보자는 의견을 주셨다. 우리 팀이 활용하는 express 프레임워크에서 영감을 받았는데, express의 경우 일련의 연속된 미들웨어 함수 호출로 이루어져 중간 중간에 여러 작업을 끼워맞출 수 있다. 이처럼 중간중간 체인 구조로 끼워넣을 수 있는 구조를 만든다면, 할인이나 벌금 같은 조건들이 추가/변경/삭제 되더라도 유연하게 대처할 수 있을 거라 생각했다.

확장성을 위한 고려

이를 위해 체인 전체를 관리하는 매니저 역할을 하는 CostChainManager 클래스와, 요금 계산을 위한 체인들의 추상 클래스 역할을 할 CostChainBase 클래스를 두었다.

CostChainManager.js
CostChainBase

이후 도메인 별로 역할을 나누어 작업을 진행했다. 나는 기본 요금 파트를 담당하였다. class를 상속받아 코드를 작성하는 걸 실제 프로젝트에서 적용해 본 적이 없는데, 좋은 공부가 되었다.

배웠던 점

  • MySQL DataType에 GEOMETRY 타입이 있다는 것을 처음 알게 되었다. 위치 정보가 필요한 과제를 처음 접해보는데, 이를 계기로 DB가 지원하는 DataType에 대해서도 탐구해 봐야겠다는 생각이 들었다.
profile
I will find a way, I always have.

0개의 댓글