RxSwift vs Combine

김태형·2023년 3월 12일
0

Swift

목록 보기
1/22

RxSwift? Combine?

스위프트에 대해 공부를 하던 도중 Combine와 RxSwift에 대해 알게 되었다.
둘 다 비동기 프로그래밍을 위한 프레임워크라고 하는데, 그럼 둘 다 배워야 하는건가? 아니면 둘 중 하나만 배워도 상관없는건가? 라는 생각이 들게 되어 이에 대해 검색해보았다.

사실 아직은 RxSwift와 Combine을 사용해보지도 않았고, 습득 또한 하지 않았기 때문에 검색해보고 느낀 점 위주로 매우 간단하게 얘기를 할 것 같다.



RxSwift란

우선 RxSwift는 Reactive eXtenstion + Swift의 합성어로, 비동기 프로그래밍을 관찰 가능한 흐름으로 지원해주는 API라고 한다.
xcode 자체에 내장되어있지는 않고, 라이브러리를 통해 import하여 사용할 수 있다고 한다.

특징은 우선 비동기를 동기화 코드처럼 작성할 수 있다는 것과 하나의 비동기 코드로 개발할 수 있다는 것이 있다.

사실 스위프트 내부에는 DispatchQueue와 OperationQueue 등을 통해 비동기를 진행할 수 있게 되어있다. 하지만 경우에 따라 DispatchQueue와OperationQueue를 번갈아 사용하게 되면 헷갈리는 경우가 생겨 불편함을 야기할 수 있고, 코드의 양이 방대해지면 관리하기가 매우 어려워질 수 있다는 단점이 있다.

따라서 이러한 문제점들을 해소하기 위해 RxSwift를 사용한다고 한다.



Combine의 등장

그러던 도중 2019 WWDC에서 Combine이 등장했다고 한다.
Combine은 Apple에서 만든 비동기 프로그래밍을 위한 프레임워크로써, 내부에 저장되어, 별도의 설치없이 바로 사용이 가능하다.

'Customize handling of asynchronous events by combining event-processing operators'
즉, 비동기 이벤트를 이벤트 처리 연산자(event-processing)과 조합함으로써 커스터마이즈하는 프레임워크라고 생각하면 될 것 같다.

또한 SwiftUI와 밀접히 연동되어 사용되고, iOS13 버전부터 사용이 가능하다고 한다.



차이점은?

음,, 그래서 흐름을 보아하니, 비동기 프로그래밍을 위해 RxSwift가 만들어졌고, 이와 비슷하게 Apple에서 직접 Combine이란 프레임워크를 만든 것 같다. 그렇다면 공부하는 입장에서 어떤 것을 중점적으로 공부를 해야할까?



Combine을 공부하기

결론부터 생각해보면 나의 상황에서는 'Combine'을 공부하는 것이 맞다고 생각이 든다.

사실 둘은 거의 비슷하다고 하여 하나를 배운다면 다른 것을 이해하기는 쉽겠지만, 중점적으로 공부하는 것은 Combine을 하기로 결정했다.


우선 Combine은 RxSwift의 장점을 대부분 가지고 있고, SwiftUI와 함께 쓰기 매우 좋다고 하였다(RxSwift는 Rxcocoa와 함께 사용이 된다.).

그리고 성능적인 부분에서도 Combine이 더 좋다고 한다.

시간도 더 적게 걸리고, 메모리도 더 효율적으로 사용한다고 한다.

이러한 점은 Combine은 first-party 프레임워크이고, RxSwift는 third-party 프레임워크이기 때문이기도 한 것 같다.

(first party와 third party에 대한 차이점은 다른 게시글에서 설명하는 것이 좋을 것 같다.)

시간이 지나면 결국 RxSwift는 Combine에게 대체될 것이기 때문에 처음 공부할 때부터 Combine을 공부하는 것이 좋을 것 같다고 생각된다.

물론 현재는 RxSwift에 대한 오픈소스나 자료 등이 더 많을 수 있지만, Combine에 관련된 오픈소스들 또한 많이 나오게 될 것이다.(없으면 내가 한번,,?)

0개의 댓글