You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
모듈화 Modularization
앱을 여러 개의 독립적인 모듈로 나누어 개발하는 설계 방식
단순히 규모가 큰 것을 작게 나눈 조각이 아니라, 하나 이상의 논리적인 기능을 수행하기 위한 명령어들의 집합을 의미한다.
모듈은,
모듈은 하나의 완결된 기능 단위이며, 다른 코드와의 의존성을 최소화해 유지보수성과 확장성을 높일 수 있다 🚀
왜 모듈화를 해야 할까?
모듈화를 통한 장점 중 가장 공감됐던 글
모듈화를 도입한 사례 중, 타다 테크 블로그에서 본 SwiftUI 프리뷰 효율화 관련 글이, 현재의 나에게 가장 와닿는 이유였다.
🔗 모듈화를 통한 SwiftUI Preview 효율화
요약해보면,
이 글을 보면서, “단순히 구조를 나누고 의존성을 최소화하는 것이 아니라, 이렇게 개발 효율과 경험을 직접적으로 개선할 수 있구나.”를 체감할 수 있었다.
모듈화 방식
아래 예시 그림처럼, 모듈화는 구조화된 개발을 위해, 특정 기준을 갖고 계층을 분리할 수 있다.
모듈을 어떻게 나눌지에 대한 기준은 프로젝트 상황에 따라 달라질 것 같다.
그래서 모듈화를 도입할 때 팀이 함께 고민해야 하는 부분은, “어떻게 나누느냐”가 아니라 “어느 정도 크기로 나눌지”인 것 같다 !
너무 작게 만들면 → 관리하기 힘들다.
너무 크게 만들면 → 모듈화의 이점이 줄어든다.
그래서 다들 말하는
원칙이 중요하다고 생각했다.
좋은 모듈화를 위해서는 ?
좋은 모듈화란, 각 모듈이 독립적이면서도 자기 역할에 집중된 구조를 만드는 것을 의미한다.
이때 중요한 개념이
결합도와응집도이다.결합도모듈 간의 상호 의존 정도
응집도모듈 내부 요소들이 하나의 목적에 집중되어 있는 정도
좋은 모듈화는 낮은 결합도 + 높은 응집도를 가져야 한다.
다른 곳에서는 어떻게 모듈화 하고 있을까?
토스
책임과 역할에 따라 계층 분리
하위 계층에 있는 모듈은 상위 계층에 있는 모듈을 의존할 수 없다.
App: 사용자에게 제공될 최상위 계층Feature: 수백 개의 서비스 모듈 위치Foundation: 공통적으로 쓰이는 유틸리티 모듈 위치모듈 간 의존성 폭발적으로 증가
같은 계층 내에 의존 관계 복잡도 증가
순환 참조 문제 발생 및 전반적인 모듈 구조 이해도 어려움
→ Tuist의 Microfeature 아키텍처 도입
카카오뱅크는 기능 단위로 모듈을 분리했다.뱅크샐러드는 처음엔 단순한 공통 모듈 분리에서 시작해서 점차 기능 기반 모듈화로 확장했다.그래서 Swift에서 말하는 모듈은 뭔데요?
Swift에서 말하는 모듈이란,
외부에서 import해서 사용할 수 있는 하나의 독립적인 단위를 말한다.
Swift에서 모듈화를 진행하는 방법에는 세 가지가 있다.
Library
Static/Dynamic으로 나눌 수 있다.Static Library
.o(오브젝트 파일)로 변환됨.Dynamic Library
Framework
Swift Package
Xcode와 모듈의 관계
Target과 Module을 혼용하여 사용하는 경우가 있지만,
Module은 그룹핑에 초점을 맞춘 거라면
Target은 빌드의 목적을 갖고 있다.
Target
Scheme
🗣️ 같이 얘기해봐요 !
다들 프로젝트 할 때 언제 모듈화가 필요하다는 생각이 드셨나요 ?
추가로, 어제 플젝 iOS 팀이랑 앞으로 기술 스택에 대해 잠깐 얘기를 했었는데요.
개인적으로 모듈화를 고려하는 시점이 언제가 좋을지에 대해 궁금해졌어요 !
프로젝트 시작부터 모듈화를 고려해서 개발하자 ~
vs
나중에 앱 좀 커지면 도입하자 ~
스터디원들이랑 같이 얘기해보고 싶어서 가져왔습니다.
참고자료
모듈화 개념
Modularization
Beta Was this translation helpful? Give feedback.
All reactions