architecture(5)
-
[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 -
[Swift] @_exported
@_exported import 키워드는 Swift에서 내부 모듈에서 사용된 외부 모듈을, 해당 내부 모듈을 사용하는 다른 모듈에서 별도의 import 없이 사용할 수 있게 해주는 기능입니다. 이는 모듈 간의 의존성을 관리할 때 편리함을 제공하지만, Swift 공식 문서에는 아직 내부적인 사용(_로 시작)을 의미하는 비공개 API로 분류되어 있으며, 향후 변경될 가능성이 있습니다. 사용 이유 간결성: 상위 모듈에서 하위 모듈의 기능이나 타입을 사용할 때, 모든 곳에 동일한 import 구문을 반복해서 작성할 필요가 없어 코드가 더 간결해집니다. 편의성: 특정 라이브러리나 프레임워크를 내부적으로 사용하는 모듈을 만들 때, 이 모듈을 사용하는 사용자가 내부적으로 사용된 라이브러리나 프레임워크에 대해 알 필요..
2024.04.01 -
[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