-
클린 아키텍처 반드시 필요한가? (Mobile)잡담 2024. 11. 18. 09:46
굉장히 어그로성이 강한 제목이다.
클린 아키텍처는 왜 이리 인기가 많을까?
그리고 모두에게 필요한 것일까?
최근 (아마도 오래 전부터) 에 모바일 개발에는 대부분 클린 아키텍처로 되어있다.왜 이렇게 인기가 많을까?클린 아키텍처가 인기가 많은 이유
확장성과 유연성이 뛰어나다
말 그대로 클린 아키텍처는 확장성과 유연성이 뛰어나다.즉 쉽게 변경할 수 있고 테스트에 용이하다. (의존성 역전)Domain과 Data Layer 를 잘 분리하여 서버의 응답이 변경 되어도 쉽게 반영할 수 있다.이것만 봐도 굉장한 장점이다.멋지다
일단 뭔가 멋지다.클린 코드 책과 더불어 클린 아키텍처 책도 굉장히 인기가 많다.책이 먼저인지 아니면 아키텍처 자체가 먼저 유명해진 것인지는 중요하지 않다. 일단 멋지다.클린 아키텍처는 과연 모두에게 멋진가?
'클린 아키텍처가 모두에게 잘 어울리는 아키텍처인가' 라는 생각이 든다.정말 작은 앱을 확장성이 매우 뛰어난 앱으로 만드는 것이 과연 좋은 것인가?클린 아키텍처를 반영하다보면 종종 UseCase가 단순 Repository에 있는 데이터를 변경만 해주고 있다.API Response가 변경이 되면 Entity도 변경이 된다.즉 클라이언트-서버의 관계가 강하게 결합이 되었다는 의미이다.과연 이런 상황에서 Domain Layer는 필수적으로 존재해야 하는가?클린 아키텍처가 필요 없는 경우
API Response가 변경될 때 매번 Entity도 함께 변경되는 경우
물론 기능이 변경된 경우는 당연히 변경되는 것이 맞지만, 매번 변경이 된다면 이는 과연 필요한 것인가?UseCase가 단순히 Repository의 결과 값을 전달만 해주는 경우
UseCase에서 아무 로직이 없고 Repository의 결과만 전달해주는 경우 굳이 없어도 되지 않을까?그냥 이유 없이 UseCase, Repository, Entity, Model, DTO... 등 나누고 있을 때
여기서 이유 없이라 함은 클린 아키텍처에 대한 니즈가 없지만 단순히 트렌드를 따라가는 것을 의미한다.모듈화, 테스트 코드 등 해당 아키텍처에 대한 활용이 없다면 단순히 앱을 복잡하게 만드는 것이 아닐까?개발자가 적을 때
전체적인 개발자가 적을 때는 굳이 복잡한 아키텍처를 선택할 필요가 없다.어차피 내가 개발하거나 내 옆에 사람이 개발할 것인데 굳이 복잡하게 나눌 필요가 있을까?소수의 인원이라면 그들만의 룰을 만들고 추후 유지보수만 생각하면 괜찮지 않을까 싶다.그냥 주저리 주저리
클린 아키텍처를 사용해야만 확장이 가능하며 테스트가 가능한 것이 아니다.의존성 주입을 잘하고, 필요에 따라 Helper 객체를 주입해주면 잘 분리되지 않을까?근래에 자꾸 클린 아키텍처를 신봉하는 사람이 많아져서 반발 심리가 도진다.그러나 결국 회사에서는 클린 아키텍처로 설계하고 있는 내 모습 🥲개인적으로 앱에 있는 기능이 꽤 오래 살아서 새로운 기능이 덕지덕지 붙을 가능성이 있으면 클린 아키텍처진짜 너무 린해서 기능을 업데이트하기 보다 새로 만든다면 그냥 테스트나 확장 가능성 버리고 빨리 만드는 것도 하나의 방법 같다.그럼 다들 이렇게 말하는 사람도 있겠지? '테스트 코드를 작성해야 오히려 개발이 더 빠르다'어느정도 동의는 하는데 전제조건이 필요하다.일단 사용자가 많아야 된다. (보통 QA 팀이 다 걸러주더라 👍)또한 기능을 금방 버리는데 테스트 코드를 빡세게 짜면 그냥 테스트 코드를 짠 시간을 버리는 느낌이 든다.기능이 변경이 된다면, 테스트 코드도 바꿔줘야 한다. TC가 많다면? 그냥 가끔 현타온다.코드에 애정을 주지 말라는 얘기가 있는데 나는 사랑쟁이인가보다.그래도 테스트 코드는 작성한다. 안그러면 나중에 변경사항이 있을 때 너무 헬이다.이 얘기가 테스트 코드가 생산성을 증가 시킨다는 의미인가?그냥 미래 (추후 변경사항) 를 생각해서 현재 노력하는 느낌이다.쉽게 말하면 보험료를 내는 것이다. 나중에 아프고 나면 돈이 많이 드니까 지금 야금야금 내는 느낌'잡담' 카테고리의 다른 글
2024 회고 (2) 2024.12.29 미라클 모닝 후기 (0) 2024.06.02 탑다운 회사에서 개발자로 잘 자라기 (0) 2024.05.12