leebaek

[iOS] TCA - The Composable Architecture 에 대해 알아보자 (1) 정의, 개념 본문

개발/iOS

[iOS] TCA - The Composable Architecture 에 대해 알아보자 (1) 정의, 개념

leebaek 2024. 5. 20. 17:50

 

 


https://github.com/pointfreeco/swift-composable-architecture?tab=readme-ov-file#what-is-the-composable-architecture

 

GitHub - pointfreeco/swift-composable-architecture: A library for building applications in a consistent and understandable way,

A library for building applications in a consistent and understandable way, with composition, testing, and ergonomics in mind. - pointfreeco/swift-composable-architecture

github.com

 


■ TCA란  ?

복잡한 애플리케이션의 상태 관리 및 비지니스 로직을 보다 쉽게 구성하고 테스트할 수 있도록 설계된 라이브러리

- 단방향 아키텍쳐


■ TCA의 주요 개념

State

기능이 논리를 수행하고 UI를 렌더링하는데 필요한 데이터를 설명함

 

애플리케이션의 모든 상태를 단일 구조체에 모아서 관리함

-> 앱의 다양한 상태 한눈에 파악 가능

 

Action

State를 변경시키는 이벤트임

-> 사용자 작업, 알림, 이벤트 소스 등 기능에서 발생할 수 있는 모든 작업을 나타냄

 

Reducer

Action이 발생했을 때 State를 어떻게 변화시킬지 정의함(순수 함수)

현재 상태와 액션을 입력으로 받아 새로운 상태를 출력으로 반환함

 

- 앱의 현재 상태를 특정 작업에 따라 다음 상태로 발전시키는 방법을 설명하는 함수

- Effect 값을 반환하여 수행할 수 있는 API 요청과 같이 실행해야 하는 모든 효과를 반환하는 역할 담당

 

Store

실제로 기능을 구동하는 부분임

-> 모든 사용자 작업은 스토어로 보내짐

 

스토어는 상태를 저장하고, 액션을 디스패치하여 리듀서를 통해 상태를 업데이트

-> 뷰는 스토어를 구독하여 스토어에서 상태 변화를 반영함

 

Environment

애플리케이션이 의존하는 외부 서비스나 데이터를 주입하는데 사용됨

-> 테스트를 용이하게 하고, 의존성을 분리해줌

 

이와 같은 개념을 조합하여 작은 모듈로 나누고, 이를 다시 조합하여 복잡한 애플리케이션을 구성함

-> 애플리케이션의 유지보수성을 높임

-> 테스트 가능성을 향상시킴

 

■ TCA의 장점

예측 가능한 상태 관리: 모든 상태 변화가 액션을 통해 이루지므로, 상태 변화를 추적하고 디버깅하기 쉬움

모듈화: 앱의 각 부분을 독립적인 모듈로 구성하여 재사용성과 유지보수성을 높임

테스트 가능성: 리듀서와 상태, 액션을 조합한 테스트가 용이해지며, 비즈니스 로직 테스트가 쉬움