본문 바로가기
Android/아키텍쳐

아키텍쳐에 관하여

by 안스 인민군 2023. 6. 28.

먼저 글을 작성하기 앞서, 

나는 취업 전 클린 아키텍쳐? , MVVM? , MVC, MVP? , AAC-ViewModel과 MVVM-ViewModel 의 차이점 등등
아키텍쳐에 많은 노력을 들였었다.

이유는 지금 당장 공고를 보면 대기업 부터 스타트업까지 모든 공고에는 Google-Architecture-Guide Clean-Architecture, MVVM 이 자격 요건에 항상 작성되어 있었고 당연히 알아야 하고 확실히 알아야 한다는 생각에 사로잡혀 있었다.

 

항상 나오는 3대장

그래서 많은 검색과 다양한 블로그를 읽고 다양한 유료강의를 듣고 유명한 개발자에게 DM을 보내 질문을 하였지만 각자가 생각한 Clean-Architecture에 대한 설명을 할 뿐 명확한 근거를 얻을 수 없었고 실체를 더더욱  알 수 가없었다.

그런데 의문점이 들었다.

- 이들은 정말 Clean-Architecture가 무엇인지 알고 있을까?
- 이들은 Clean-Architecture를 사용하여 엄청난 이득을 보았는가?

나는 다양한 공부를 통해 정확한 실체는 모르는 상태로 그나마 내가 이해할 수 있는 범위를 가지고 아키텍쳐를 짰고 면접을 보았을때 상세한 질문이 들어올까 조마조마 했었다.(그나마 안드로이드 개발자이니 Google-Architecture-Guide 베이스로 개발했었다.)

 

마음 조린 면접 끝에 취업을 하게 되었고

실무에서 개발을 하고 개발부터 배포까지 앱을 상용화 하기까지의 모든 사이클을 겪게 된 후 문득 생각이 들었다.

그래서 우린 클린 아키텍쳐를 사용하여 얼마나 이득을 보았는가?

우리는 결국 회사의 종속되어 있는 팀원이다.

만약 회사에 QA담당 하시는 분이 있다면 테스트 코드 작성에 느슨해도 된다 생각하고

당분간 FrameWork에서 벗어나지 않고 개발이 이어진다면  FrameWork의 종속성에 너무 민감하게 굴지 않아도 된다고 생각한다.

또 기획 에서 개발로 TOP-DOWN 방식이라 기획에 자주 변동이 생기고 섬세한 개발보단 빠른 개발이 우선되어야 한다면 편한 방향으로 개발 후 나중에 기술 부채가 생겨 코드 리팩토링을 통해 개발의 퀄리티를 향상시킬 수 있다고 생각한다.

기능만 정상 동작한다면 너무 완벽한 것에만 몰두하여 예쁘게 짜는것에 심취할 것까지는 없다고 생각한다. 

위의 생각은 지극히 나의 주관적 생각이고 틀릴 수도 있다.

 

그럼 이 글의 결론은

그럼 Unit-Test도 필요없다는 거고
Clean-Architecture도 필요없고
관심사 분리도 필요없다는 거냐???!!!???

내 말은 그런 뜻이 아니다.

위에 모든 개발 방식은 결국 개발자를 위해 나온 것이므로

자신에게 맞는

회사와 사정에 맞는 방식으로 선택 취사를 하라는 뜻이다.

그러나 나의 원칙은 될 수 있으면 최대한 관심사를 분리하자!! 이다.

그리고 특히 Architecture는 나중에 설계하여 도입하려면 고치는 작업보다 Hello World에서 다시 시작하는게 낫기에 처음부터 알고 들어가는게 좋다.

그래서 다음 글은 보편적으로 쓰이는 구조로 내가 생각하는 아키텍쳐를 설명하겠다.

 

다시한번 강조하지만 "무조건 이래야 돼!!!" 가 아닌 "보편적으로 이렇게 쓰이니 이 레이어에는 무엇이 들어가겠구나"정도로 받아들여주길 바란다.

 

+ 추가로 가장 공감된 글 하나와 극단적 공부를 한것 같은 블로그 한개씩을 예시로 달아 놓겠다.

 

클린아키텍처 썼는데 왜 프로젝트가 더 더러워지지

우리의 프로젝트는 클린아키텍처가 문제가 아닐 가능성이 높다.

medium.com

 

 

아키텍처 패턴에 대한 고찰 (MVC,MVP)

아키텍처 패턴을 정의할수 있는 사람이 과연 있을까? 우테코를 진행하며 아키텍처 패턴에 대해서 많은 논의를하고 학습을 진행하였지만 각 아키텍처 패턴은 무엇이며 어떠한 조건을 지켜야하

mccoy-devloper.tistory.com