해결된 질문
23.03.07 15:21 작성
·
408
·
수정됨
0
안녕하세요~
강의 잘보고 있습니다.
첫번째로는 DIP 에 대해서 조금 이해가 가지않는 부분이 있어서 질문드립니다.
먼저 Class A 가 Class B , C 를 의존하고 있을떄 그 사이에 interface 를 둠으로써 의존관계를 B C 가 아닌 interface 로 DIP 가 적용이 된다고 생각하는데요 B C 도 interface 를 의존하고있으므로 그래서 전 설명해주신 레이어라는게 어떤레이어를 말하는것인지 잘이해가 되질않습니다.
두번째로는 msa 아키텍처 에서 저장소를 분리하였지만
api call 을 통해서 조합할떄 결국 시간복잡도(성능) 이 크게 달라질것같지않습니다. 그래서 이러한 궁금증 들이 있습니다.
감사합니다 !!
답변 1
1
2023. 03. 09. 09:41
네 안녕하세요.
답변을 드리면
1번은 우선 제가 설명을 잘 못한 듯 하네요. ^ ^;; 죄송합니다.
dip는 의존관계 역전을 의미하는데 보통 a->b를 호출할때
의존관계는 a에서 b의 관계가 됩니다. 여기서 a가 비즈니스 로직처럼 중요한 영역이면 중요한 영역이 덜 중요한 영역(b)에 의존함으로써 문제가 생기는 것이죠. 따라서 인터페이스같은 녀석을 써서 a->i/f <- b가 되계 하면 의존관계가 역전되어 b가 a를 의존하게 되는 겁니다. 여기서 질문이 발생할텐데요? 즉 i/f는 어떤 영역에 속하나 ? i/f는 a영역 달리 표현하면 a쪽 레이어(중요한 영역)에서 정의하는 것이 바람직하다고 생각합니다.
2번 답변드리면
약간 질문이 이해가 안되는데요. ^ ^;; 마이크로서비스가 저장소를 분리할때의 장점은 성능(?)을 추구하는 것은 아닙니다.
도리어 성능은 저장소를 분리하지 않았을때 또는 마이크로서비스를 분리하지 않았을때 가 더 좋죠.
저장소가 분리된 마이크로서비스의 장점은 탄력성,확장성, 내결함성, 유지보수성으로 보는 것이 타당합니다.
그리고 api 동기호출로 조합이 많이 필요한 비즈니스인 경우에는 사실 마이크로서비스로 분리하는 것이 타당한 지도 고민해 봐야 한다고 생각합니다. 또한 마이크로서비스간의 끈끈한 연간관계가 문제가 생긴다면 비동기 이벤트 호출을 고려해 볼 필요도 있을 것 같고요.
결론은 해법(아키텍처)은 비지니스에 따라 달라 질 수 있다고 생각합니다.
2023. 03. 14. 00:01
답변 감사합니다 .
다음 강의도 기대하고있습니다!!