Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

비즈니스 로직 분리 기준에 대해 궁금합니다. #8

Open
applan opened this issue Aug 12, 2022 · 3 comments
Open

비즈니스 로직 분리 기준에 대해 궁금합니다. #8

applan opened this issue Aug 12, 2022 · 3 comments
Labels

Comments

@applan
Copy link

applan commented Aug 12, 2022

안녕하세요~ 기존에 백엔드 위주로 개발하다가 프론트엔드 본격적으로 같이 써보고싶어서 챌린지 참여하게 되었습니다.
백엔드는 비즈니스 로직을 Controller, Service, Dao ... 등등 각 역활에 맞게 분리해서 생성하는데요,
혹시 React 쪽은 해당 부분을 참고할만한 곳이 있을까요? 지식 공유받고싶습니다.

@starkoora
Copy link
Owner

starkoora commented Aug 12, 2022

@applan 이 부분은 사실 딱 잘라 대답드리기 어려운 부분 같습니다만 일단 의견을 말씀 드려보겠습니다.

지난 세션 때 말씀드렸다시피 웹 프론트엔드는 기본적으로 서비스 전체 관점에서는 외부 인터페이스에 해당하는 부분입니다.
이점을 전제로 깔고 예시를 들어보겠습니다. React로 구성된 프론트엔드 프로젝트와 Spring 등으로 구성된 백엔드 프로젝트가 있다고 해보겠습니다. 클린 아키텍처의 육각형 아키텍처 도식을 놓고 생각해본다면 프론트엔드는 Entity나 Use Case 등의 개념에 접근할 수 있는(알 수 있는) 입장이 아니죠.

도메인 로직은 서버 측에서 전부 처리되고 프론트엔드는 최종적으로 JSON 객체를 받아 처리할 뿐이니까요. 일단 View와 API 호출 관련 로직 정도만 분리하여 써보자고 한 것은 이러한 이유 때문입니다. 도메인에 관련 된 부분은 서버로부터 오는 것이고 이는 거의 API 호출 로직과 동의어로 쓸 수 있을테니까요.

백엔드 쪽은 정석에 가까운 practice가 있고, (듣기로는) 최근 안드로이드 쪽은 MVVM을 거의 공식적인 구조로 채택한 것에 비해 프론트 쪽은 계속해서 아키텍처 관련해서 지배적인 pracitce를 찾기 힘든 것 같습니다. 저는 아무튼 View와 Domain 쪽 로직이 너무 강하게 결합하지 않는 선에서 나누어 본다고 생각하며 개발을 하고 있습니다. 뭔가 답변이 충분하지는 않네요 ;)

그럼에도 불구하고 관심사를 보다 잘 분리해보려는 시도들은 계속 존재하는데, 이와 관련된 링크 몇 개를 링크해드릴게요. 살펴보시고 추가적인 의견이 생기시면 이어서 댓글 남겨주세요. 저도 여러 아이디어 접해보면서 더 좋은 방법을 찾아보고 싶네요 ㅎㅎ

@starkoora
Copy link
Owner

starkoora commented Aug 12, 2022

@applan domain 요소들을 분리해야 하는 이유를 컴포넌트 레벨로 옮겨 조금 더 첨언해보자면 컴포넌트를 설계할 때 구체적인 도메인 맥락이 들어가는 순간 컴포넌트는 거의 재사용 불가능하게 됩니다 물론 모든 컴포넌트가 재사용만을 목적으로 분리되는 것은 아니지만 이러한 부분도 설계 시 염두에 두면 좋을 것 같아 덧붙여 봅니다
https://jbee.io/web/components-should-be-flexible/

@applan
Copy link
Author

applan commented Aug 13, 2022

@starkoora 좋은 답변 감사합니다. 참고하겠습니다~!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants