본문 바로가기
프로그래밍/Flutter

[Flutter] 플러터 앱에서 비동기 처리가 중요한 이유

by 신나요 2022. 5. 5.

비동기 프로그래밍을 사용하면 앱이 네트워크 요청과 같이 잠재적으로 오래 실행되는 작업을 기다리는 것을 방지합니다. Dart와 Flutter에서 비동기식 작업이 왜 중요한지 생각해 보도록 하겠습니다.

 

이번 포스트는 다음 내용을 다루고 있습니다.

  • 비동기 처리와 동기 처리의 차이점
  • 모바일 앱에서 비동기가 중요한 이유

비동기 처리와 동기 처리의 차이점

먼저 비동기 처리와 동기 처리의 차이점을 살펴보겠습니다. 위에서 간단히 언급했듯이 비동기 처리 작업은 앱이 특정 처리가 완료될 때까지 기다릴 필요가 없는 작업입니다. 반면 동기 처리 작업은 앱이 특정 처리를 완료할 때까지 기다리게 됩니다. 이것을 블로킹(blocking)이라고 합니다. 비동기 처리가 실행되는 동안에는 다른 작업을 실행할 수 없습니다. 그러나 비동기 처리의 경우 작업이 완료되기를 기다리는 동안 또 다른 작업을 실행할 수 있습니다. 만약 모바일에서 네트워크 처리 같은 오랜 시간이 걸리는 처리를 만약 손 놓은 채 기다리게 한다면 핸드폰을 던지는 사람이 생길지도 모릅니다.

 

모바일 앱에서 비동기가 중요한 이유

플러터와 같은 모바일 애플리케이션을 개발할 때 비동기 처리가 왜 중요할까요?

대부분의 모바일 앱은 Excel과 같은 데스크톱 앱과는 다르게 사용시간이 짧은 경우가 많습니다. 유저는 이메일을 확인하다가, Facebook에서 새 게시물의 트윗을 읽거나, 바로 셀카를 찍어 인스타그램에 게시하곤 합니다. 모바일 앱은 이러한 사용자 패턴에 중심을 두어 최대한 앱이 시작되거나 빠져나가게 고려되어야 합니다. 이러한 유저 패턴이 고려되지 않는다면 사용자 경험이 매우 저하되게 됩니다. 만약 메일을 쓰는도 중에 새 메일을 가져오는 프로세스가 실행될고 로딩으로 화면이 멈춘다고 생각해 보세요. 이러한 일은 분명 짜증 나는 일이며 UI를 차단하지 않도록 새 메시지를 비동기식으로 처리해야 하는 이유가 될 것입니다.

 

게임같이 오래 사용하는 앱은 어떨까요? 유저가 오래 사용한다고 해서 비동기 처리가 중요하지 않을까요? 하지만 게임과 같은 앱도 비동기 처리가 필수적입니다. 만약 적을 공격하고 점수를 처리할 때 화면에 조그마한 렉이라도 걸린다고 생각해 보세요. 스토어의 평점 별 하나도 얻기 힘들 것입니다.

 

이렇듯 Flutter 혹은 Dart에서의 비동기 작업은 네트워크 요청에만 국한되지 않습니다. 잠재적으로 오래 실행되는 모든 작업은 비동기식 작업이 될 수 있습니다. 가장 대표적인 비동기 처리는 네트워크 요청이 되지만, 파일 IO 및 데이터베이스의 쿼리를 실행할 때도 비동기 처리를 고려해야 할 것입니다.

비동기 처리가 중요한 만큼 많은 언어에서 비동기 처리를 지원하고 있습니다. Dart에서는 Future를 사용해서 비동기 처리를 코딩하게 됩니다. 당연하겠지만 Flutter앱은 Dart를 사용해서 만들기 때문에 Future는 Flutter에도 적용됩니다.


이번에는 잠시 쉬어가는 글로 비동기 처리의 중요성을 생각해 보았는데요. 다른 언어의 비동기 처리에 익숙하신 분들은 Dart의 Future의 처리방식도 금방 보고 이해 가시리라 생각됩니다. 다음 포스트에서 본격적으로 Future가 무엇이고 어떻게 사용하는지 살펴보도록 하겠습니다.

댓글