RxSwift와 Combine은 비동기 프로그래밍과 반응형 프로그래밍을 지원하는 도구들이다.
하지만 각자의 장단점도 있고, 특정 상황에서 어떤게 더 적합할지도 고민해봐야할 것 같았다.
오늘 두 프레임워크를 비교하고, 어떤 상황에서 어떤 도구를 선택하는 것이 좋은지에 대해 알아보려한다.
RxSwift는 iOS와 macOS 개발을 위한 반응형 프로그래밍 라이브러리인데,
ReactiveX의 철학을 기반으로 설계된 것으로 iOS 커뮤니티에서 널리 사용 되고 있다.
성숙도
RxSwift는 오랜 시간 동안 사용되었는데 그래서 그런지 안정성도 좋고 오랜 시간 동안 쌓인 풍부한 문서와 커뮤니티 지원을 확보하고 있다고 한다.
다양한 연산자
ReactiveX 기반으로 다양한 연산자를 제공하기 때문에 복잡한 비동기 작업을 간결하게 처리할 수 있다.
멀티플랫폼 지원
RxSwift를 기반으로 한 코드는 다른 ReactiveX 라이브러리(RxJava, RxJS 등)로 쉽게 확장 가능해서 멀티플랫폼 개발에서도 유리하다. (다른 개발자들과 이야기 할 건덕지가 주어진다)
배우는데 오래 걸림
많은 연산자와 개념(Observable, Subject, Scheduler 등)을 이해하는 데 시간이 걸리는 편이다.
외부 라이브러리 의존
기본적으로 Swift에서 지원되지 않기 때문에 별도의 설정 및 유지보수가 필요하다.
.
.
.
Combine은 Apple에서 공식적으로 제공하는 반응형 프로그래밍 프레임워크인데, iOS 13 이상에서 사용할 수 있다.
비교적 최신에 나왔기 때문에 기존 아직 많은 기업들은 RxSwift를 사용한다고 한다.....(combine 으로 공부하고 싶은데,)
Apple 생태계 통합
Combine은 Apple의 프레임워크와 자연스럽게 통합이 되다보니 SwiftUI와 함께 사용하면 아주 강력하다고 한다.
경량성
외부 라이브러리 없이 기본으로 제공되기에(최고) 프로젝트 관리가 간단하다.
최신 기술 지원
최신 Swift 기능(async/await)과의 호환성도 두번 말하면 입 아플 정도로 아주 좋다고 한다.
제한된 연산자
Combine의 연산자는 RxSwift에 비해 상대적으로 적어서 복잡한 작업에서는 구현이 조금 어려울 수 있다고 한다..
iOS 13 이상 지원
최신 OS를 타겟팅하지 않는 프로젝트에서는.. 사용할 수 없.다.
작은 커뮤니티
RxSwift에 비해 사용자가 적고, 문서화나 사례가 아직은 많이 부족하다.
.
.
.
특징 | RxSwift | Combine |
---|---|---|
지원 플랫폼 | iOS 8 이상, 멀티플랫폼 | iOS 13 이상 |
연산자 수 | 매우 다양 | 제한적 |
커뮤니티 지원 | 매우 활발 | 상대적으로 적음 |
러닝 커브 | 높음 | 비교적 낮음 |
생태계 통합 | 외부 라이브러리 의존 | Apple 생태계에 최적화 |
레거시 프로젝트
iOS 13 미만을 지원해야 하거나, 기존에 RxSwift로 작성된 코드베이스가 있는 경우.
복잡한 비동기 작업
다양한 연산자를 활용해야 하는 복잡한 작업에서 유리하다.
멀티플랫폼 개발
RxJava, RxJS와의 호환성을 통해 다양한 플랫폼에서 반응형 코드를 작성해야 할 때.
최신 프로젝트
iOS 13 이상을 타겟으로 하고, Apple 생태계를 최대한 활용하려는 경우.
SwiftUI와 함께 사용
Combine은 SwiftUI와 긴밀하게 통합되어 있어 데이터 바인딩이 아주 간단하다.
외부 의존성을 줄이고 싶은 경우
기본 제공 프레임워크만 사용하고 싶을 때 Combine이 유리합니다.
RxSwift와 Combine 중 어느 것이 더 좋다고 단정할 수는 없다고 한다.
프로젝트의 요구사항, 타겟 OS 버전, 팀의 숙련도에 따라 적합한 도구를 선택해야 하는데
최신 프로젝트나 SwiftUI와의 통합이 중요한 경우 Combine을 선택하거나,
레거시 지원이나 복잡한 비동기 작업이 필요한 경우 RxSwift를 선호한다고 한다.
회사가 RxSwift를 많이 사용하는 이유는 아무래도 광범위한 적용 사례 때문이라는 것인 듯 한데,
그래도 최신 기술을 도입하고 Apple 생태계를 적극적으로 활용하겠다! 라는 방향으로 나아간다면 Combine이 충분히 매력적인 선택지라고 본다.
나는 애플이 지원해주는 컴바인이 더 좋은 것 같다.. ㅠ
rxswift도 어려우니 컴바인도 어렵겠지만.. 취업하려면 배워야겠지만 우선 컴바인도 공부해보고 배워보고 싶다는 생각이 든다. (팀원분이 내가 rxswift 너무 공부하기 싫어해서 방안을 제시해줌)
컴바인에 대해 공부해서 주말동안 블로그 작성을 해봐야겠다.
호텔~스 컴바인!