1차목표는 hexagonal 구조, 2차목표는 MSA 적용

Su hwan Choi·2023년 5월 15일

지난 글에서 왜 hexagonal 구조인지 적어보았다. 그리고 작업중인코드를 commit하며 readme 에도 간단히 적어봤지만, 어떤 구조를 구상중인지 자세히 써두면 좋을것 같아서 내용을 적어보려 한다

큰그림

Big Picture
이 프로젝트의 목적이 상용화가 아니기 때문에 최대한 다양한 방법으로 시도하는것을 고려했다. 그리고 크게 4개의 서비스를 분류할 수 있었다.

1차개발

1차 개발에서는 기본기능을 제공하는 서비스 1개를 집중적으로 개발하는것을 목표로 잡았다

  • 재고사용자서비스
    • 가장 기본기능을 상징하는 서비스, 이 프로젝트를 시작하며 내가 머릿속에 떠올린 이미지는 집안 펜트리수납장에서 물건을 사용하려고 집어오거나, 마트에서 장을보고 펜트리에 물건을 넣을때마다 인쇄된 QR코드로 ‘물건사용’과 ‘물건추가’로 관리하는 것이다. 그렇다면 재고구입, 사용이 가장 기본적인 기능일텐데 이 기능을 담당하는 서비스이다.
    • 이 서비스의 기능 개발을 1차개발로 잡았다. 1차개발에는 hexagonal 구조를 적용해서 port, adapter와 그에 따른 테스트코드까지 개발할 생각이다.

2차개발

2차개발은 기본기능을 기반으로 추가기능 개발하는것을 생각했다. 여기서부터 이벤트스트리밍플랫폼(ex:kafka) 를 통한 개발이 주로 진행될것 같다.

  • 재고모니터링서비스
    • 재고관리 목적은 데이터로 편의성제공일 것이다. 재고관리에서 가장 떠올리기 쉬운 데이터는 갯수다.
    • 재고가 일정 수량 이하로 떨어지거나, 일정 주기로 구매해야 하는 항목에 대해 알림을 제공한다
    • 가령 재활용쓰레기봉투는 분명 갯수로 관리가 가능하지만, 한번살때마다 100매 단위로 사게되어서 갯수를 세는게 무의미하다. 보통 몇달에 한번씩 사야하는데 그것을 알려주는역할
  • 구매기록서비스
    • 아직 구상만 해둔 상태인데, 구매라는 행동을 통해서 예산관리, 기간비교와 같은 것들을 제공할수 있을것 같다.
  • 재고관리 서비스
    • 재고사용자서비스가 사용자, 구매자 가 주로 접근하는 서비스라면,이 재고관리서비스 는 철저히 관리자 를 위한 서비스
    • 직접 재고를 수정한다거나, 삭제한다거나 하다못해 초기화 같은 기능을 제공하는 서비스로 구상하고 있다.
    • 이 서비스가 추가되면 재고사용자서비스에서 재고수집DB를 제어하는것이 재고관리서비스를 통해 제어하는 것으로 변경되게 된다.

개발하는 도중에

개발 과정 중에는 시스템 구조와 별개로, 평소에 생각하던 아이디어나 고민을 문서로 남기는 것을 계획하고 있다.
특히 테스트 코드 작성이나 DDD에 관한 내용 등을 공유할 예정.
정리하자면 프로젝트를 통해 학습과 실험을 중시하면서도, 실제로 활용 가능한 시스템을 개발하는 것이 목표이다

0개의 댓글