modular(5)
-
[Architecture] Modular Architecture VS Clean Architecture
어느날 문득 Modular Architecture와 Clean Architecture에 대한 생각을 하게 되었습니다. 모듈화나 클린이나 결국엔 개념적으로 레이어를 나누고 개발자들의 상황에 맞춰 선택적으로 사용할텐데, 둘은 어떤 공통점이 있고, 어떤 차별화된 점이 있는지에 대해서 생각해 보려고 합니다.개념과 목적 Modular Architecture나 Clean Architecture나 모두 레이어를 분리하여 코드의 가독성을 높이는 구조를 갖고 있어서, 둘 다 코드 가독성 면에서는 비슷한 장점을 공유하고 있습니다. 그렇다면 각 접근이 iOS개발의 어떤 필요성을 충족하는지, 특히 협업과 코드베이스 관리에 얼마나 유리한지, 유연성과 유지보수성이 어떻게 앱 품질에 기여하는지에 대해서 생각해 보게 되었습니다.우선..
2024.09.18 -
[Architecture] 프로젝트에 Modular Architecture를 적용하는 이유
https://github.com/chanheki/swifty-proteins/가장 큰 이유는 프로젝트에 모듈화를 적용해보고 싶었습니다.기존에 있던 프로젝트에 모듈화를 해보는 것도 좋겠지만, 그렇게 하는게 더 접근이 더 어려울것 같아서 처음부터 모듈화된 프로젝트를 만들어서 개발해보고 싶었습니다. 모듈화의 큰 장점인 수평적 확장이 가능하다는 점과 단위 테스트의 용이성을 경험해보고 싶어서 개발 방향을 잡았습니다.비교 요약특성모듈화모놀리식독립성높은 독립성, 모듈별로 독립적인 테스트 가능낮은 독립성, 모든 코드가 하나의 코드베이스에 있음재사용성높은 재사용성, 모듈별로 재사용 가능한 테스트낮은 재사용성, 코드베이스 전체에 적용되는 테스트설정 및 관리 복잡성높은 설정 및 관리 복잡성낮은 설정 및 관리 복잡성의존성 ..
2024.05.25 -
[Architecture] Matching MVVM architecture in a modular architecture
Cocoa-MVC에 이어 MVVM 아키텍쳐 적용 방식에 대한 정리입니다. [Architecture] Matching Cocoa-MVC architecture in a modular architecturehttps://github.com/chanheki/swifty-proteins현재는 pirvate 이지만 완성 후 public으로 공개 예정 레포지토리입니다.위 프로젝트에서 Modular architecture를 적용하여 설계, 구현하고 있습니다.레이어별로 모듈화를chanhhh.tistory.com MVVM을 Modular architecture에 적용시 어떤 부분이 어떤 layer에 들어가는지 정리하기 위해서 작성한 글입니다.모듈러 아키텍처 설계App Layer앱의 진입점 및 전체적인 앱 라이프사이클 관..
2024.05.23 -
[Architecture] Matching Cocoa-MVC architecture in a modular architecture
https://github.com/chanheki/swifty-proteins현재는 pirvate 이지만 완성 후 public으로 공개 예정 레포지토리입니다.위 프로젝트에서 Modular architecture를 적용하여 설계, 구현하고 있습니다.레이어별로 모듈화를 나누고 Cocoa-MVC 패턴을 적용하기 위해 정리한 내용입니다. 모듈러 아키텍처 설계App Layer앱의 진입점 및 전체적인 앱 라이프사이클 관리주요 앱 설정 및 초기화 코드Feature Layer사용자 인터페이스 및 사용자의 액션을 처리뷰(View) 및 뷰와 관련된 로직각 기능별로 독립적인 UI 및 로직 (AuthFeature, ProfileFeature 등)Domain Layer비즈니스 로직과 애플리케이션의 도메인 모델엔터티, 유스케이스..
2024.05.22 -
[Architecture] Modular Architecture / MFA에서 추상레이어의 Export
Swift의 modular architecture / Micro Feature Architecture(MFA)에서 Feature, Domain, Core, Shared의 레이어를 추상적으로 나누고 해당하는 레이어에 맞춰서 코드를 관리할 때 Export를 통하여 제어합니다. 이 글에서는 Core 레이어를 통하여 예시를 들고있습니다. CoreExport.swift 파일을 사용하여 다른 모듈에서 CoreNetwork 및 CoreNetworkInterface 모듈을 임포트할 수 있도록 설정하는 것은 모듈 간의 의존성 관리 및 코드 재사용성을 높이기 위한 전략 중 하나입니다. 이러한 접근 방식은 특히 대규모 프로젝트나 여러 모듈이 상호작용하는 복잡한 시스템에서 유용합니다. CoreExport.swift의 목적 간..
2024.04.01