아키텍쳐 적용 시작

JuneHyeok Hong·2023년 4월 23일
0

클린 아키텍쳐

목록 보기
1/3
post-thumbnail

intro

지금 MVC 패턴으로 "페어러"라는 iOS 서비스를 개발하며 굉장히 뚱뚱한 ViewController를 만드는 나를 보고 아키텍쳐 적용의 필요성을 크게 느꼈다.

만들고 있는 서비스 소개 페이지이다. ^~^
5월 출시되면 다들 ㅎㅎ 네 ㅎㅎ
https://www.behance.net/gallery/147276499/fairerPeacemaker-for-Houseworker

분명 공통되는 뷰는 Global View Component로 분리했지만, 비지니스 로직 자체가 홈뷰에 집중되어 있어 홈뷰를 개발했던 나는 책임 분리를 너무나 하고 싶었다.
iOS 개발을 하면 항상 물어보는것이 적용한 아키텍쳐 패턴이다.

MVC MVVM VIPER TCA ... 사실 예전에는
단순히 면접에서 물어봐서? 동아리에서 요구하는 아키텍쳐 패턴이라서?
라는 이유로 공부해야지~ 하고 있었다.
필요성을 못느껴서 그랬는지 아니면 MVC 패턴이 익숙해서 그런건지 다른 아키텍쳐를 공부하지 않고 있었다.

본인이 하는 프로젝트 구조, 코드에 익숙해져 있으면 성장할 수 없다!

어느 개발 유튜버가 했던 이야기이다.
올해 1월 초, "페어러" 프로젝트에 참여하게 되었을 때 뷰 개발이 30% 정도 되어있었다.
그때는 Literal, Global UI Component, Base class, Extension 등 나에게는 생소한 것들 많았다.
생소했던 부분을 찾아보고 물어보며 이제는 당연한 것들이 되었다.
조금은 익숙해진 것이다.

그래서..

지금 출시를 앞둔 "페어러"를 가지고 다른 아키텍쳐를 적용하기에는 무리가 있다고 생각했다.
마침 SOPT 32기 주차 과제가 있어 MVVM + Clean Architecture + Coordinator Pattern 을 적용해보려고 한다.
주변에 도움을 주는 OB, YB 분들이 있어 더 재밌게 할 수 있을것 같다.
유어슈(숭실대 개발 동아리) 에서 개발된 서비스의 레포를 뜯어보고 있지만... 쉽진 않다.
앞으로 매주차 과제를 하면서 글을 쓸텐데 개발 관련된 사항은 PR 링크로 대신하겠다.

2주차 PR에서는?

https://github.com/GO-SOPT-iOS-Part/HongJuneHuke/pull/4
로그인 뷰를 개발하였는데, 로그인에서 받아오는 이메일과 비밀번호의 유효성을 검사해주는 로직이 필요했다.

데이터 전달 흐름

  • view를 만들어 UI를 구현했고, viewController에서 프로퍼티로 view를 넣어주었다.
  • viewController에서 notification 형태로 textfield의 text가 변하는 것을 추적하고 변한 text를 viewModel의 input으로 던져준다.
  • viewModel에서는 input에서 들어온 text가 유효한지 알기 위해 usecase로 text를 던진다.
  • usecase에서 비즈니스 로직을 거치고 결과를 viewModel에게 보내준다.
  • viewModel에서는 usecase로부터 받은 결과를 통해 Output을 viewController에게 보내준다.
  • viewController에서는 viewModel의 Output을 추적하여 Output에 따른 뷰 갱신만 해주게 된다.

아래 사진은 클린 아키텍쳐 구조를 보여주는데, UserAction이 들어오는 방향으로 Presentation Layer의 ViewController & ViewModel을 거쳐 Domain Layer의 Usecase까지 구현한 상황이다.
만약 API 연결까지 하게 된다면 Repository와 Data Layer까지 만들어보며 Domain Layer에서 Usecase와 Repository를 나누는 부분도 건들여보고 싶다.

마치며..

SOPT iOS 사람들에게 많은 도움 받는것 같아 항상 고맙고 ^~^
유어슈 사람들과 레포에 많은 도움 받으며 화이팅!!!
" i O S 화 이 팅 ~ ~ "

0개의 댓글