Skip to content

[additional] StateMachine 피드백 #71

@wooyounggggg

Description

@wooyounggggg

설명

최근 팀에 도입 제안하려는 StateMachine 추상 개념을 여러분께도 공유드리고, 피드백을 받아보려 합니다.

StateMachine을 도입하려던 흐름은 아래와 같습니다.


  • (발단) Domain entity의 state와 비즈니스 로직은 우리의 도메인 정책을 이해하는데 중요한 요소이다.
    • 로직이 동작하면서, entity의 state는 현재 상태에서 다음 상태로 전이된다.
    • 또한 현재 state에 따라, entity에 적용할 수 있는 비즈니스 로직이 달라진다.
  • (가정) 따라서 state와 로직간의 관계를 파악하는 것은, 단순히 entity의 상태 전이를 이해하는 개념을 넘어 도메인을 이해하는 비용을 낮추는 역할을 한다.
  • 이를 일반화된 수식으로 표현하면 다음과 같다.
    • state(curr) + action(로직) => state(action)
  • (구현) 따라서 (curr state, action) => (next state)를 표현할 수 있는 추상화 된 모델이 필요하다.
    • 일관적인 방식으로 상태 전이를 정의할 수 있어야 한다.
    • state와 action의 관계를 한 눈에 파악할 수 있어야 한다.
    • 비즈니스에서 일어나는 모든 개념을 표현할 수 있어야 한다.
  • (주의) action은 entity에 대한 action이 아니라, entity의 state에 대한 액션이다.
    • entity의 action으로는 state를 1:1 대응시킬 수 없기 때문이다.
    • 예를 들면, order entity의 action인 pay는 pay_fail, pay_success 상태로 분기될 수 있다.
    • 따라서 order의 action이 아닌, order state에 대한 action이어야 한다.

이런 요구사항을 만족시키기 위해, StateMachine이라는 추상 개념을 만들어 팀에 도입을 제안하려는데, 여러분은 어떤 생각을 가지시는지 궁금합니다. comment에 이어서 구현 코드를 작성해두었습니다.

Metadata

Metadata

Labels

additional책에 나온 외에 추가적인 내용

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions