[자기개발] 택배 배달 과제 끝내기

iqpizza6349·2022년 9월 29일
0

자기개발

목록 보기
3/3

자기개발 택배 배달 과제
자기개발 택배 배달 프로토타입

스프링 프레임워크를 사용하여 택배 배달 과제를 마무리하였다. 사실 완전히 마무리하였다고 보기는 어렵다. '마무리'보다는 '끝내기'에 더 가깝다. 과제에서 적용하였던 코드를 실제 프로젝트에 넣기에는 무리가 많기 때문이다.
과제를 함으로써 겪은 상황과 해결방안, 그리고 후기를 끝으로 글을 마무리하겠다.

만났던 많은 문제 상황

이전 글에서 역시 언급하였듯이 다음과 같은 2가지가 가장 큰 문제가 되었다.

  • 재고품이 부족하다면, 어떻게 서로 요청하고 요청을 받을 것인가?
  • 요청의 상태를 특정 시간마다 어떻게 수정할 것인가?

다행히 첫 번째 문제는 두 번째 문제를 해결하면서 거의 같이 해결되었다. 그래서 사실상 문제는 하나뿐이었다. "요청의 상태를 특정 시간마다 어떻게 수정할 것인가?"

이 문제를 해결하기 위해 다음과 같이 설계하였다.

문제 해결

스프링 프레임워크를 사용하여 해결하는 만큼 Spring Batch 라이브러리를 적용하여 문제를 해결하였다.

안타깝게도 Spring Batch 라이브러리를 이번에 처음 사용하였기에 구글링과 공식문서 등을 통해 거의 짜깁기를 하여 문제 상황을 해결.. 무마(撫摩)하였다.

(Spring) Scheduler와 Spring Batch 기술을 접목시켜 특정 시간마다 주문의 상태를 변경시킬 수 있었다. 재고가 부족한 경우 기존에는 일차원적인 생각으로 Message Broker 기술을 사용하여 재고를 충당하고자하였으나, Spring Batch 기술만을 사용하는 편이 훨 좋다고 생각하였기에 수정하였다.

현재 주문의 상태는 Enum#values 를 사용하여 수정하는 방식을 사용하고 있다.
주문의 상태를 바꾸는 것은 절대로 하여서는 안되는 방법을 사용하였다는 점에서 스스로에게 수정하라고 외치곤 있지만 달리 더 좋은 방법이 생각이 나지 않아 수정은 하고 있지않다.
더 좋은 방법이 생각이 난다면 그리 수정하지 않을까 싶다.

후기

우선 제대로 완성을 하지 못한채 마무리를 하긴하였지만, 과제를 스스로에게 내주고 그 안에서 최대한 인간힘을 써서 어떻게든 해결하고자 했던 자신을 되돌아볼 수 있었던 시간이었던 것 같다.
물론 생각대로 잘 풀리지는 않았지만, 새로운 지식이 쌓였다는 점, 그리고 늘 클린하고 확장적인 설계는 어렵다는 것을 다시 한 번 느끼게 되었다.
코드는 깃허브에 push 하였으나, 절대 좋은 코드가 아니기에 나중에 보면 후회하며 이불킥을 날릴 것 같은 기분이 든다.

me.duvetKickStack().push("택배 배달");

마무리

과제를 하며 처음 알게된 Spring Batch 기술에 현재 큰 관심을 가지게 되었다. 아마 새롭게 알게된 것 같기도 하고 일관되게 처리할 수 있다는 큰 매력때문에 그런 것 같다.
과제를 마무리하고 나서 처음으로 할 일은 아마 Spring Batch 를 가지고 놀면서 더 깔끔하게 사용할 수 있는 방법에 대해 간구하는 것일 것이다.

끝으로 자기개발 첫 번째 과제인 택배 배달 과제를 이만 마치도록 하겠다.

profile
coffee.drinkUntilEmpty();

0개의 댓글