새로운 아키텍처 고민 #76
Replies: 4 comments
-
Beta Was this translation helpful? Give feedback.
-
Django vs Springmodels.py ----- entity.java 내가 너무 용어를 헷갈리게 적어놔서 |
Beta Was this translation helpful? Give feedback.
-
|
@MingyeomKim 공지사항 게시판 json 응답하는거 구현해봤음! 커밋참고! |
Beta Was this translation helpful? Give feedback.
-
|
링크: 오늘 @MingyeomKim 이가 얘기했던 부분!
일단 우리 상황에 맞는 아키텍쳐에 원리를 고민하고 그걸 파이썬으로 구현해보자! 원리만 잘 파악하면 나중에 스프링할 때도 아키텍처에 대한 고민은 훨씬 수월할 것! 근데 확실히 스프링 기능이 탐나긴 한다. 허허 |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
— 현재 문제점(2021-10-21) —
views,DB,권한간 의존성이 커서 서로 종속적이다. 하나가 수정될 시에 다른 여러곳에 영향을 미칠텐데 그 영향을 최소화할 필요가 있다.DB와views)views에서 일일히 변경해야함. 다 완벽하게 찾을 수 없음.views에서 직접 날리는 것 안좋은 듯.DB와forms)forms는 vaildation의 역할만 하게 됨.forms에서도 ORM 쿼리를 직접 날리는 부분이 꽤 많음. 즉 ORM 객체에 대한 변경 수정이 여기서도 이루어짐따라서
DB기존의 MVT 모델, hierarchical 하게 의존성을 제거하는 아키텍쳐 고안 필요성 제고.entity.py정의repository.py(DB 와 server API core 사이의 인터페이스), ORM 상세를 신경쓰지 않도록 한다.interactor.py, ORM 객체가 아닌repository.py를 통해 변환된 Entity를 다룬다.views에서는interactor.py에 정의된 클래스 객체를 이용하여 Use Case에 적절히 대처. 또한 'serializer' 등이 여기서 사용될 수 있다.views는 (response, status) 형태의 리턴값을 갖는다. 주의할 점은, 함수나 클래스 내부에서 종속되게 사용하는 것이 아니라, 외부에서 주입하는 형태로 사용해야함.views외부의 의존성 : vaildation / auth check / ... ⇒views Wrapper에서 처리. 즉 기존의 web과 통신하는views역할을views Wrapper가 하고views는 response와 status만 리턴해준다.⇒ 기대효과
테스트에 용이. 현재는
views함수 내부에서 직접 ORM, 유저 권한 , 세션 등에 직접 관여하고 있어서, 테스트가 거의 불가능하다. 외부에서 주입할 수 있는 형태가 되고, 서로 다 분리가 되기 때문에 독립적으로 테스트가 가능하다.비지니스 로직을 작성하는데 있어서, 기존에는 ORM의 상세한 부분까지 알고 있어야 했다. 예를 들어 Board.object.get(board_type_id = 4) 라는 쿼리가 있으면 4에 해당하는 게시판 종류가 뭔지 알고 있어야 했다. 하지만 Entity 에 noticeBoard 클래스로 따로 선언하게 되면, 해당 ORM 상세를 모두 외우고 있지 않아도 개발이 가능하다.
유지 보수에 더욱 편리해진다. 각각의 레이어에 대해 각자 전담하는 부분이 생긴다.
entity.py는 개발내에 사용할 객체,repository는 ORM과entity사이의 관계 기술, 이런 식으로 각자 맡은 역할이 뚜렷하다. 기존에는views에서 이런 것들이 통합적으로 이루어졌는데 해당 부분에 대해서 수정사항이 생길 시에는, 유지보수를 하기 힘들었다. 예를 들어 orm의 상세가 조금 바뀌었다고 해보자. 그러면views에서 orm 을 얻어오는 모든 코드들을 점검해야했는데, 위의 아키텍처 적용 시repository에서만 변경해주면 된다.⇒ 단점
Beta Was this translation helpful? Give feedback.
All reactions