Flutter는 단순히 엔진이나 위젯 세트, 도구 이상의 의미를 가진 앱 개발 프레임워크로, 기본 제공되는 기능을 훌쩍 뛰어넘어 앱에 다양한 기능을 추가할 수 있는 다양한 패키지로 구성된 대규모 생태계도 포함되어 있습니다. 이 중 가장 인기 있는 패키지는 Firebase 제품을 지원하는 패키지 (FlutterFire) 입니다. 최근, Flutter의 모든 측면에 대한 품질에 계속 집중하기 위해 Dart, Flutter, Firebase에 깊은 전문 지식을 보유한 컨설팅 회사 Invertase가 FlutterFire 플러그인의 개발 및 유지 관리 업무를 일괄적으로 인계한다는 소식을 발표했습니다. 발표로부터 오랜 시간이 지나지 않았음에도 불구하고, Invertase는 Core, Authentication 및 Firestore 플러그인에 새로운 기능을 제공하고 API를 다른 Firebase SDK와 더욱 긴밀히 조정하는 등 엄청난 진척을 보였습니다. 이 뿐 아니라, 코드를 이 새로운 버전으로 옮기는 데 도움이 되는 마이그레이션 가이드, 일반적인 시나리오에 대한 설치 안내와 코드 스니펫을 포함하는 Flutter용 Firebase 플러그인 각각에 대한 사이트를 만들었습니다. 마지막으로 그 모든 대단한 작업 외에도, 이 릴리스를 통해 300여 가지의 이슈와 80여 개의 풀 리퀘스트 (Pull request)를 처리했습니다.
원칙
역사적으로, Flutter용 Firebase 플러그인은 열정적이고 헌신적인 팀원들 덕분에 성장했습니다. 플러그인 엔지니어링 업무를 Invertase로 넘겨주면서, Flutter 팀과 Invertase는 함께 기초적인 사항을 다시 검사할 기회를 가졌습니다. 이 과정을 통해 다음과 같은 몇 가지 원칙을 세웠습니다.
기능이 기본 Firebase SDK와 일치할 것입니다: (예: 현재 로그인되어 있는 사용자를 비동기 방식 대신 동기 방식으로 반환)
함수 이름을 기본 Firebase SDK와 동일하게 명명할 것입니다(예: getDocuments() 대신에 get()으로 명명).
모든 플러그인은 firebase_core에 의존성을 갖게되며, Firebase.initializeApp()을 사용하여 초기화를 요구할 것입니다.
모든 플러그인은 동일한 버전의 네이티브 Firebase SDK에 의존성을 갖게 됩니다.
모든 플러그인은 페더레이션을 사용하도록 업데이트되어 모바일뿐 아니라 폭넓고 다양한 플랫폼을 지원할 수 있습니다.
모든 플러그인은 새로운 firebase_core버전을 명시적으로 채택해야 하므로, flutter pub update 를 실행하더라도 코드를 손상시키지 않습니다.
플러그인이 이런 원칙에 부응하도록 업데이트될 때 채택이 용이하도록 이전 이름의 지원이 중단됩니다.
중요한 문제가 수정되고 전체 테스트 세트는 플러그인 세트가 업데이트됨에 따라 각각에 대해 생성될 것입니다.
이런 원칙의 목표는 신규 및 기존 Firebase 사용자가 더 나은 Flutter 사용 경험을 누리도록 하는 것입니다. 우리는 플러그인을 출시할 때 개발자가 15개의 플러그인 전체 세트가 업데이트될 때까지 기다릴 필요 없이 각 세트에 대해 변경된 3~4개의 플러그인을 먼저 채택할 수 있도록 노력하고 있기도 합니다.
마이그레이션
새로운 Core, Authentication 및 Firestore 플러그인으로의 마이그레이션은 주로 pubspec.yaml 파일에서 버전을 업데이트하는 문제로, flutter pub get으로 버전을 풀다운하고Firebase.initializeApp()에 대한 호출을 추가합니다. 그렇게 하고 나면 이전의 메서드와 속성이 지금도 계속 작동하겠지만 지원 중단된 이름 세트를 처리하도록 선택할 수도 있습니다.
이런 원칙과 관련된 모든 작업이 완료된 것은 아니지만(사실, 이제 막 시작했습니다), 새로운 Core를 채택하면 아직 주요 변경 사항이 적용되지 않은 나머지 플러그인을 계속 사용할 수 있으며, Storage 및 Messaging과 같은 플러그인도 새로운 Core에 종속되도록 업데이트되었습니다. 이는 곧 사용 환경을 더욱 개선해 줄 변경 사항이 더 많이 적용됨에 따라 전반적으로 더욱 일관된 경험을 하게 될 것이라는 뜻입니다.
Core, Authentication 및 Firestore의 새 버전에 대한 변경 사항의 전체 목록뿐 아니라, Firebase 코드를 발전시킬 방법에 관한 자세한 지침은 마이그레이션 가이드를 읽어보시기 바랍니다.
플랫폼 지원
Invertase가 수행하는 작업은 현재 Android와 iOS에 중점을 두고 있으며, iOS와 동일한 코드를 99% 공유하는 macOS도 덤으로 함께 다루고 있습니다. FlutterFire를 위한 새로운 문서 사이트 https://firebase.flutter.dev/에서 Firebase 플러그인에 대한 지원을 살펴볼 수 있습니다.
Flutter용 Firebase 플러그인의 현황
모든 Firebase 플러그인이 모바일 (Android, iOS)을 지원하지만, macOS를 지원하는 것은 아니라는 점을 알 수 있을 것입니다. 하지만, 작업이 계속됨에 따라 지원의 폭도 계속 넓어질 것입니다.
문서
종합적인 마이그레이션 가이드를 제공하고 각 플러그인을 위한 플랫폼 지원을 표시하는 것 외에, https://firebase.flutter.dev/docs에 Flutter를 위한 개발자 문서 초안을 업데이트 했습니다.
이제 더 이상 기본 Android 또는 웹 Firebase 문서를 읽고 그 내용을 이용해 자신이 개발 중인 Flutter 앱에 사용할 동일한 API를 추측하지 않아도 됩니다! 이 사이트에서는 대부분의 Firebase 플러그인(단지 Core, Authentication, Firestore뿐 아니라 훨씬 더 많은 플러그인), Android, iOS, 웹에 특정한 설치 지침, 코드 스니펫을 포함한 일반적인 시나리오의 개요에 대한 문서와 동영상을 찾을 수 있을 것입니다.
다음 단계는?
이번에는 Core, Authentication 및 Firestore 플러그인에 대한 첫 라운드의 업데이트를 발표했습니다. Flutter 개발자에게 가장 영향력이 큰 플러그인을 계속 개발할 수 있도록, 우리의 다음 라운드는 Crashlytics, Functions, Messaging, Storage가 될 가능성이 높습니다. 그 사항이 구체화되면 여러분께 알려드리고 그 7개의 플러그인에 대한 웹 지원 역시 우리가 세운 원칙을 따르도록 하겠습니다. 이는 Flutter 개발자가 다른 Firebase SDK가 제공해야 하는 모든 서비스를 받도록 보장하기 위한 여정에서 크게 내딛는 첫 발걸음입니다. 그 과정에서 혹시 실수를 발견하게 되는 경우, 여기를 통해 알려주시기 바랍니다.