• 카테고리

    질문 & 답변
  • 세부 분야

    모바일 앱 개발

  • 해결 여부

    미해결

GCD/OperationQueue와 RxSwift

21.01.07 01:53 작성 조회수 440

2

안녕하세요! 현재 강의를 수강 중에 있는 학생입니다.

전공자라 어느정도 쓰레드, 비동기에 대한 기본지식은 약간 있는 상태인데 공부를 하다가 문득 궁금해져서 질문을 드립니다.

애플에서는 GCD/OperationQueue를 기본적으로 제공하지만, 요즘에는 여러 언어에서 ReactiveX를 많이 쓰고, iOS 개발자 채용공고에도 가끔 Rxswift가 우대조건으로 들어가있고 하더라고요. 이런 부분에서 궁금증이 생겼습니다.

1. GCD/OperationQueue와 RxSwift를 비교한다면 (대략적으로) 어떤 장단점? 차별점이 있을까요?

2. 실제 업무환경에서는 어떤 것이 많이 쓰이나요?

3. 만약 RxSwift를 공부한다면 (쓰레드에 대한 기본 지식(세마포어, 데드락 등)은 빼고)GCD/OperationQueue에 관한 지식이 있어야할까요?

4. 혹시 RxSwift도 강의하실 계획이 있으신가요?

질문은 여기까지입니다. 감사합니다.

답변 4

·

답변을 작성해보세요.

3

안녕하세요 "영꿀"님!

좋은 질문 해주셔서 감사합니다. :)

1. 번 질문(수정)

간단하게만 말씀드리면... 일단은 GCD는 비동기적인 처리를 할 수 있도록 만드는 큐(대기열)의 개념일 뿐이고,  RxSwift를 사용하는 데는 다른 이유가 있습니다. 반응형(Reactive) 프로그래밍에 대해서 먼저 알아야 하는데요, 이벤트를 바라보는 관점이 좀 다릅니다. 반응형 프로그래밍의 구현을 위한 MVVM의 아키텍처를 사용하기 쉽고, 조금 더 짧은 코드로 구현할 수 있도록 만드는 라이브러리가 RxSwift일 뿐입니다. 제가 예전에 설명해 놓은 것보다 훨씬 더 정확한 이야기가 여기 링크(https://zeddios.tistory.com/689)에 들어있어, 설명을 링크로 대체하도록 하겠습니다... ^^

2. 번 질문

실제 업무 환경에서는 앱의 환경에 따라 다른 것 같습니다. 일반적으로 RxSwift를 많이 쓰는 것 같습니다. (그래도 여전히, 일반 MVC패턴을 사용하는 회사가 60 - 70%정도인 것 같습니다.)

그런데, 조금 다른 관점에서 제가 느낀 점을 말씀드리면 기술에 관심이 많은 회사들은 대부분 RxSwift를 사용합니다. 즉, 아무래도 RxSwift가 처음 배우는 데 있어서 진입장벽도 좀 있고 하다보니 모든 개발자가 다같이 프로젝트를 해야하고.. 그래서 아무래도 연봉이 높고 좋은 개발자들이 모여있는 회사들이 주로 사용한다고 보시는 것이 맞을 것 같습니다. (이 부분은 제 주관적인 의견입니다. 양해부탁드립니다. ^^;)

말씀드렸지만, 여전히 훨씬 많은 회사들이 RxSwift를 사용하지 않는다는 사실은 맞습니다.

3. 번 질문

솔직히 RxSwift는 GCD/OperationQueue와 별 상관은 없습니다. 이 강의에서 GCD/Op 에 대해서 깊게 다루고 있긴 하지만, RxSwift를 배우기 위해선 비동기처리가 어떤 것인지에 대한 최소한의 지식만 있다면 되긴합니다. (물론 왜 필요한 상황이 발생하지? 이런 큰 그림을 아는 것이 더 중요하겠지만요.) 

보통 RxSwift 강의들은 내장하고 있는 여러가지 함수나... 이제 아예 관점을 다르게 생각해야하는 부분들에 대해서 주로 다룹니다.

4. 번 질문

현재는 제가 직접 RxSwift에 대한 강의 계획은 이른 시간내에는 없습니다. (초심자들을 위한 기본 문법/앱 만들기 이런 강의들을 준비하고 있어서, 여력이 되질 않을 것 같습니다.ㅠ)

해서, 말씀드리면... RxSwift를 공부할 수있는 사이트들을 추천해 드립니다.

(1) 곰튀김님의 4시간 안에 RxSwift 끝내기(유튜브)

https://www.youtube.com/watch?v=iHKBNYMWd5I&list=PL03rJBlpwTaBrhux_C8RmtWDI_kZSLvdQ

(2) 레이웬더리치 Beginning RxSwift

https://www.raywenderlich.com/4743-beginning-rxswift 

(3) KxCoding - Mastering RxSwift

https://kxcoding.com/course/mastering-rxswift

위의 강의정도를 참고해 보시면 좋을 것 같습니다. 위의 사이트들은 저와 아무런 관계가 없습니다. ^^; 다만, 저와 제 친구들이 공부한 방법들을 소개해드리는 정도라고 생각하시면 될 것 같습니다. (1) -> (3) 번 코스나, (1) -> (2) -> (3) 코스를 따라가시면 좋을 것 같긴한데, 공부할 여력이 되시는 선에서 선택적으로 보시면 될 것 같습니다. (저 개인적으로는 미국 강의들을 선호합니다. 더 본질적으로 큰그림을 잘 그려준다고 생각합니다.)

마지막으로.. 드리고 싶은 말은..

"취업하는데 RxSwift가 꼭 필요할까요?" 라고 항상 많은 질문들이 나옵니다. 그러면 사실 iOS커뮤니티에서도 답변이 갈립니다.

1) 필요없다. 기본기도 안되어 있는데, 무슨 Rx냐. 그럴시간에 기본기를 더 잘 다져와라. 기본기가 잘되어 있으면 어짜피 Rx도 금방 배운다.

2) 반면 또 어떤 분들은, 아니 우리회사에서 쓰는데 Rx정도는 배워와야 뭐 일을 같이 할 것이 아니냐. 그리고 Rx는 관점을 키우는데 무조건 도움이 되므로, 최소한 이정돈 알아야 한다.

이런 식 답변이 갈립니다. 사실 저도 정답을 모르겠습니다. Rx 몰라도, 제 주변에서도 다 취업한 것은 팩트이고.. 지속적으로 좋은 개발자로 성장하기 위해 어짜피 배워야하는 것은 맞다고 봅니다.  지금이냐, 나중이냐의 차이이겠지요.

그런데, 아마 저는 영꿀님이 RxSwift를 공부해야하는지 말아야 하는지 잘 아실 것이라고 생각합니다. 현재 수준이 기본기가 튼튼하다고 판단하시면 당연히 그 다음을 향해 가는 것이고, 아니시라면 기본기를 더 탄탄히 하시는데 집중해야할 것이라고 봅니다. 

이정도로, 좋은 답변이 되셨길 바랍니다. ^^

1

앗, 갑자기 생각났는데
https://medium.com/@bobthedeveloper/%EB%B0%A5%EA%B3%BC-%ED%95%A8%EA%BB%98-rxswift-%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0-4fe5eb76a9b1

이 글도 한번 참고해 보세요. Rx에 대해서 감명 깊게 읽었던 글 중에 하나입니다.ㅎㅎ

1

강의 수강해 주셔서 감사하고! 좋은 결정 하시길 바랄께요 ! 화이팅입니닷 :)

1

영꿀님의 프로필

영꿀

질문자

2021.01.08

수업과 약간 동떨어진 질문인데도 이렇게 자세히 답변 달아주셔서 정말 감사합니다 ㅜㅜ

답변 모두 꼼꼼히 읽어보았고 정말 많은 도움이 되었습니다. 다시 한 번 감사드립니다.