Flutter란 무엇인가요?

Flutter는 Google에서 개발 및 지원하는 오픈 소스 프레임워크입니다. 프런트엔드 및 풀 스택 개발자는 Flutter를 사용해 다수의 플랫폼에 대한 애플리케이션의 사용자 인터페이스(UI)를 단일 코드 베이스로 구축합니다.

Flutter가 2018년에 출시되었을 때는 주로 모바일 앱 개발을 지원했습니다. 이제 Flutter는 iOS, Android, 웹, Windows, MacOS, Linux의 여섯 가지 플랫폼에 대한 애플리케이션 개발을 지원합니다.

Flutter는 앱 개발을 어떻게 지원하나요?

Flutter는 지원하는 6개의 플랫폼에 걸쳐 일관되고 세련된 애플리케이션 UI를 만드는 프로세스를 간소화합니다.

Flutter는 크로스 플랫폼 개발 프레임워크인 만큼, 네이티브 개발과 먼저 비교해 보겠습니다. 그러면 Flutter만의 특징을 잘 알 수 있습니다.

크로스 플랫폼 앱 개발에 비해 네이티브 앱 개발에 더 가까움

iOS와 같은 특정 플랫폼을 위한 애플리케이션을 코딩하는 것을 네이티브 앱 개발이라고 합니다. 이와는 대조적으로, 크로스 플랫폼 앱 개발은 단일 코드베이스를 기반으로 여러 플랫폼을 위한 애플리케이션을 구축하는 것입니다.

네이티브 앱 개발

네이티브 앱 개발에서 개발자는 특정 플랫폼용으로 코드를 작성하므로, 네이티브 디바이스 기능에 대한 전체 액세스 권한을 가집니다. 이는 일반적으로 크로스 플랫폼 앱 개발에 비해 더 높은 성능과 속도로 이어집니다.

반면, 여러 플랫폼에서 애플리케이션을 실행하려는 경우, 네이티브 앱 개발 방식에서는 더 많은 코드와 개발자가 더 많은 개발자가 필요합니다. 이 같은 비용 외에도, 네이티브 앱 개발의 경우 여러 플랫폼에서 일관된 사용자 경험으로 동시에 실행하기가 더 어려울 수 있습니다. 이러한 점에서 Flutter와 같은 크로스 플랫폼 앱 개발 프레임워크가 유용할 수 있습니다.

크로스 플랫폼 앱 개발

크로스 플랫폼 앱 개발을 통해 개발자는 하나의 프로그래밍 언어와 하나의 코드베이스를 사용하여 여러 플랫폼용 애플리케이션을 구축할 수 있습니다. 여러 플랫폼용으로 애플리케이션을 출시하는 경우 크로스 플랫폼 앱 개발 방식이 네이티브 앱 개발 방식보다 비용과 시간이 적게 듭니다.

또한 이 프로세스를 통해 개발자는 플랫폼 전반에 걸쳐 사용자를 위한 보다 일관된 경험을 만들어낼 수 있습니다.

이 접근 방식은 네이티브 디바이스 기능에 대한 제한된 액세스를 비롯하여, 네이티브 앱 개발에 비해 단점이 있을 수 있습니다. 하지만 Flutter는 크로스 플랫폼 앱 개발을 더 원활하게 더 높은 성능으로 진행할 수 있도록 하는 기능을 제공합니다.

Flutter의 이점

Flutter가 크로스 플랫폼 개발 프레임워크로서 뛰어난 점을 몇 가지 꼽자면 다음과 같습니다.

  • 네이티브에 가까운 성능. Flutter는 프로그래밍 언어로 Dart를 사용하고 기계 코드로 컴파일합니다. 호스트 디바이스가 이 코드를 이해하므로 빠르고 효과적인 성능이 보장됩니다.
  • 빠르고 일관적이며 사용자 지정이 가능한 렌더링. Flutter는 플랫폼별 렌더링 도구를 사용하지 않고, Google의 오픈 소스 Skia 그래픽 라이브러리를 사용하여 UI를 렌더링합니다. 따라서 애플리케이션에 액세스하는 데 사용하는 플랫폼에 관계없이 사용자에게 일관된 시각적 경험을 제공합니다. 
  • 개발자에게 편리한 도구. Google은 사용 편의성에 중점을 두고 Flutter를 만들었습니다. 개발자는 핫 리로드와 같은 도구를 사용하여 상태를 바꾸지 않고 코드 변경 내용을 미리 볼 수 있습니다. 위젯 검사기와 같은 다른 도구를 사용하면 UI 레이아웃 문제를 손쉽게 시각화하고 해결할 수 있습니다.

Flutter는 어떤 프로그래밍 언어를 사용하나요?

Flutter는 Google이 개발한 오픈 소스 프로그래밍 언어인 Dart를 사용합니다. Dart는 UI를 구축하는 데 최적화되어 있으며, Dart의 많은 강점은 Flutter에서 활용됩니다.

예를 들어 Flutter에서 사용되는 Dart의 기능 중 하나로 Sound Null Safety 기능이 있습니다. Dart의 Sound Null Safety는 null 오류라는 일반적인 버그를 손쉽게 감지할 수 있도록 해줍니다. 이 기능은 개발자가 코드 유지 관리에 허비하는 시간을 줄이고 애플리케이션 구축에 집중할 수 있는 시간을 더 확보해 줍니다.

Flutter의 위젯이란 무엇인가요?

Flutter에서 개발자는 위젯을 사용하여 UI 레이아웃을 만듭니다. 즉, 창과 패널부터 버튼과 텍스트에 이르기까지, 사용자가 화면에서 보는 모든 요소가 위젯으로 만들어집니다.

Flutter 위젯은 개발자가 손쉽게 사용자 지정할 수 있도록 설계되었습니다. Flutter는 구성 접근 방식을 통해 이를 실현합니다. 즉, 대부분의 위젯은 작은 위젯으로 구성되며, 가장 기본적인 위젯은 특정한 용도가 있습니다. 따라서 개발자가 위젯을 결합하거나 편집하여 새 위젯을 만들 수 있습니다.

Flutter는 플랫폼의 기본 제공 위젯을 사용하는 것이 아니라, 자체 그래픽 엔진을 사용하여 위젯을 렌더링합니다. 덕분에 사용자는 플랫폼 전체에 걸쳐 Flutter 애플리케이션에서 유사한 모양과 느낌을 경험할 수 있습니다. 또한 일부 Flutter 위젯은 플랫폼별 위젯에서는 수행할 수 없는 기능을 수행할 수 있으므로, 이러한 접근 방식은 개발자에게 유연성을 제공합니다.

Flutter는 커뮤니티에서 개발한 위젯도 손쉽게 사용할 수 있도록 합니다. Flutter의 아키텍처는 여러 위젯 라이브러리를 적용하는 기능을 지원하며, Flutter는 커뮤니티에서 새로운 위젯 라이브러리를 구축하고 유지 관리하도록 장려합니다.

Flutter 위젯의 유형

Flutter는 다운로드 할 때부터 광범위한 위젯 카탈로그와 함께 제공됩니다. 카탈로그에는 스타일링, Cupertino(iOS 스타일 위젯) 및 Material Components(Google의 재료 설계 지침을 따르는 위젯)를 비롯한 14개의 범주가 있습니다.

Flutter에는 레이아웃과 테마도 포함되어 있어 개발자가 빠르게 구축하는 데 도움이 됩니다.

Flutter는 어떻게 지원되나요?

Flutter는 Google과 Reddit, Discord, Slack, Stack Overflow, Gitter의 활성 오픈 소스 커뮤니티에서 지원합니다. Google은 2018년 출시 이후 꾸준히 Flutter를 업데이트해 왔으며, 여기에는 macOS와 Linux로 안정적 지원을 확장한 2022년 Flutter 3 업데이트가 포함됩니다.

Flutter를 쉽게 익힐 수 있도록 Google은 Flutter 사이트에서 광범위한 문서와 자습서를 제공합니다. Flutter 사용자와 소통하기 위해 Google은 글로벌 이벤트를 열고 커뮤니티 프로젝트를 홍보하며 개발자의 도전을 후원하고 있습니다. 예정된 이벤트는 Flutter 사이트에서 확인할 수 있습니다.

Flutter 커뮤니티에서는 개발자 경험을 간소화하는 수천 가지 서드 파티 패키지와 뛰어난 도구를 만들어냈습니다. 이러한 라이브러리는 pub.dev에서 사용할 수 있습니다.

AWS는 Flutter를 어떻게 지원하나요?

Fluter는 애플리케이션에서 사용자에게 표시되는 부분을 만드는 데 도움이 됩니다. 하지만 애플리케이션을 개발하는 데에는 인증, 파일 스토리지, 분석 등 사용자에게 보이지 않는 많은 기능이 필요합니다. AWS Amplify와 Amplify Flutter는 바로 여기에 사용됩니다.

AWS Amplify는 안전하고 확장 가능한 모바일 및 웹 애플리케이션을 구축할 수 있는 프레임워크입니다. iOS, Android, 웹, React Native 및 Flutter를 지원하는 AWS Amplify를 사용하면 AWS 기반의 애플리케이션을 쉽고 빠르게 구축할 수 있습니다.

Amplify Flutter는 Flutter 애플리케이션의 백엔드를 프로비저닝, 빌드 및 배포할 수 있는 도구와 라이브러리의 집합입니다. Amplify Flutter를 사용하여 Flutter 애플리케이션을 AWS에 연결하고 일반적인 백엔드 요구 사항을 해결할 수 있습니다.

Amplify Flutter를 백엔드 솔루션으로 사용

Amplify Flutter를 사용하면 AWS와 협력하여 Flutter 애플리케이션에 공통 백엔드 기능을 추가할 수 있습니다.

  • 분석. Amplifer Flutter를 사용하면 Amazon Pinpoint에서 사용자에 대한 추적 데이터를 수집할 수 있습니다. 이벤트를 손쉽게 기록하고 필요에 따라 지표와 속성을 사용자 지정할 수 있습니다.
  • API. Amplify Flutter에는 강력한 API 기능이 있습니다. GraphQL API는 백엔드의 데이터를 검색하는 데 유용하며 AWS AppSync에서 지원됩니다. REST API 및 핸들러는 백엔드로 요청을 보내도록 지원하기 위해 Amazon API Gateway와 AWS Lambda를 사용합니다.
  • 인증. Amplify Flutter를 사용하면 사용자를 인증하고 등록 및 로그인 양식뿐만 아니라 다중 인증도 구현할 수 있습니다. Amplify Flutter는 백그라운드에서 다른 Amplify 범주에 필요한 권한을 제공합니다. Amplify Flutter는 사용을 시작하는 순간부터 Cognito 사용자 풀과 ID 풀을 지원합니다.
  • 데이터 스토어 Amplify Flutter를 사용하면 오프라인 및 온라인 시나리오를 위한 추가 코드를 작성하지 않고도 분산 공유 데이터를 사용할 수 있습니다. 따라서 분산된 사용자 간 데이터에 대해서도 로컬 전용 데이터만큼 간편하게 작업에 사용할 수 있습니다. Amplify DataStore는 데이터를 자동으로 버저닝하고 AppSync를 사용하여 클라우드에서 충돌 감지 및 해결 기능을 구현합니다.
  • 스토리지. Amplify Flutter를 사용하면 스토리지의 객체를 업로드하고, 다운로드하고, 삭제할 수 있습니다. 또한 Amplify Flutter는 Amazon Simple Storage Service(S3)를 기본 지원합니다.

Amplify Flutter에 대해 자세히 알아보세요.

AWS를 활용한 Flutter의 다음 단계

제품 관련 추가 리소스 확인
개발자 도구에 대해 자세히 알아보기 
무료 계정에 가입

AWS 프리 티어에 즉시 액세스할 수 있습니다. 

가입 
콘솔에서 구축 시작

AWS 관리 콘솔에서 AWS로 구축을 시작하세요.

로그인