안녕하세요.
오랜만에 작성하는 구글IO 포스트입니다.
작년까지만 해도 Firebase의 새소식에 관한 내용만 작성을 해서 올렸지만, 올해부터는 Firebase를 포함해서 제가 예정부터 관심이 많았던 Flutter, Jetpack Compose, Android 등 다양한 주제를 가지고 포스트를 작성하려고 합니다.
첫번째 순서로는 제가 2022년 구글IO부터 매년 작성하고 있는 주제, 바로 Firebase입니다.
올해 강의에서는 Firebase 로고에 대한 리뉴얼 소식을 알려왔습니다.
저는 이 로고를 보고나서 기존로고보다 더 얘뻐졌다는 느낌을 받았는데요, 이번 강연에서 이와 같이 로고를 변경하게 된 계기는 요즘 구글을 포함해서 전세계적으로 많이 밀고 있는 AI, 그 중에서도 생성형 AI에 더더욱 집중하겠다는 의미를 담았다고 합니다.
Vertex AI는 Google Cloud에서 제공하는 생성형 AI 플랫폼입니다. 하드웨어(GPU, 메모리 등), 소프트웨어(파이프라인 등)를 모두 제공하기 때문에 데이터 과학자들이나 ML 개발자가 ML 모델 개발과 배포를 간편하게 수행할 수 있도록 도와줍니다.
이 Vertex AI를 Firebase에서 공식 지원한다고 발표하였습니다.
사용 가능한 언어로는 Javascript, Dart, Swift, Kotlin 등이 있는데요, Firebase에 연결된 모바일 및 웹 애플리케이션에서 Vertex AI의 기능을 활용할 수 있다는 것이 특징이라고 합니다.
또한 이 Vertex AI의 기능은 Firebase 콘솔에서 설정만 해주면 Firebase App Check과 결합시켜 사용이 가능하다고 합니다.
현재 Firebase 내 Vertex AI 사용은 지난달 비공개 미리보기로 Cloud Next를 통해 공개됬고, 현재 공개 미리보기로 전환된 상태이며 올 가을 경 공식지원으로 전환할 예정이라고 합니다.
이 서비스는 올해 구글IO 개발자 키노트에서 공개된 내용인데요, Firebase의 서비스는 아니지만 이번 강의에서 언급한 내용이라 간단히만 언급하겠습니다.
Checks는 구글이 제공하는 AI 기반 개인정보 보호 플랫폼입니다. 앱 개발자가 앱의 데이터 공유 패턴을 간단하게 모니터링하고 개인정보 보호 규정 준수를 유지하도록 돕는 것을 목표로 하고 있습니다.
이 기능을 사용하기 위해서는 구글 계정으로 Checks에 로그인하고 Google Play Console에서 앱을 연결하는 방법으로 사용할 수 있습니다.
해당 내용은 Gemini에 의해 작성된 내용입니다.
이 내용은 LLM과 관련된 내용이라 저도 잘 몰라서 해당 강의 내용을 번역한 내용과 인터넷에 찾아보고 찾은 정보들을 혼합해서 최소한의 내용만 작성하였습니다.
기존에 사용하고 있던 LLM에서는 단점으로 지적되고 있는 점이 "사실 관계 오류 가능성"과 "맥락 이해의 한계"가 있습니다. 이러한 두 문제점을 개선하는데 초점을 맞춰 새로 개발된 것이 바로 검색 증강 생성 기법, RAG(Retrieval-Augmented Generation)입니다.
이 RAG는 주어진 질문을 벡터의 형태로 인코딩하는 것이 특징인데, 이번 Firestore 업데이트에서는 이러한 RAG 기법에서 사용하는 토픽과 벡터값을 문서형태로 저장할 수 있는 업데이트가 발표되었습니다.
모든 개별 문서를 읽을 필요 없이 문서의 개수를 세거나 필드값의 합계 또는 평균을 얻을 수 있도록 업데이트 되었습니다
코딩 실수 또는 사용자의 오류로 부터 데이터를 보호할 수 있는 기능
설정한 주기에 따라 자동으로 전체 데이터베이스가 백업되는 기능
사실 이번 강의에서 가장 반응이 뜨거웠던 발표가 아닐까 싶습니다!!!
Firebase에 대해서 어느정도 아시는 분은 잘 아시겠지만, Firebase에서 제공하는 Firestore, Realtime Database와 같은 데이터베이스는 NoSQL 기반 데이터베이스이기 때문에 비관계형 데이터베이스입니다. 하지만 간혹 개발을 할 때 MySQL과 같은 관계형 데이터베이스가 필요할 때도 있죠.
이 Firebase Data Connect는 Google Cloud SQL에 추가된 postgreSQL을 Firebase를 통해 앱과 연결하는 새로운 서비스입니다!!
Data Connect는 개발자가 정의한 테이블 구조에 기반에 아래의 것들을 생성합니다.
여기에서 다음과 같은 postgre 테이블 구조가 있다고 하겠습니다.
type User @table {
first: String!
last: String!
email: String!
country: String!
}
type Order @table {
customer: User!
total: Float!
name: String!
}
이렇게 만약 테이블 구조가 추가되거나, 테이블 내부에 컬럼 명이 변경되는 경우, 만약 새로운 테이블을 생성해서 기존 테이블에 관계를 두어 연결하는 경우 Data Connect는 Cloud SQL 내 PostgreSQL에서 데이터베이스 마이그레이션을 진행합니다. 그리고 마이그레이션이 완료되면 구글 인프라에서 실행되는 API 서버의 업데이트가 이루어집니다. 그리고 마지막으로 모바일이나 웹에서 사용할 새로운 SDK를 생성하는 방법으로 작동합니다.
이러한 동작들을 모두 자동으로 이루어지고 백엔드와 프론트에도 자동으로 동기화됩니다.
현재 Data Connect는 Android, iOS, Web 환경에서 동작하고, 특히 안정적인 정적타입 분석이 이루어진 다는 것이 특징입니다.
Firebase Genkit은 프로덕션에 즉시 사용 가능한 AI 기반 앱을 쉽고 익숙한 방법으로 빌드, 배포하는데 도움을 주는 오픈소스 프레임워크입니다.
Genkit을 사용하면 개발자가 가진 데이터를 기반으로 질문에 대한 답을 해주고, AI가 내린 결정에 따라 액션을 수행하는 앱을 개발할 수 있습니다.
현재 이 기능은 TypeScript를 기반으로만 백엔드 개발 지원이 이루어지고 있는데 조만간 Go에 대한 지원도 이루어질 예정이라고 합니다.
Genkit의 가장 대표적인 특징을 몇가지 정리하자면, 인기 있는 여러가지 AI 모델을 사용하면서 모델마다 맞춤형 구성을 지정해 사용할 수 있습니다. 그리고 이와 같은 출력 형식들은 강타입(strongly typed) 데이터로 생성되어 결과를 구조화된 안전한 객체로 반환받아 앱에 전송할 수 있다고 합니다.
그 다음으로 Genkit은 텍스트, 이미지, 동영상 등 다양한 방식으로 입력값을 제공할 수 있는 멀티모달 프롬프트를 제공합니다.
이제 우리가 생성한 Firebase 프로젝트에서 Gemini 채팅창이 추가되었습니다.
실제 Firebase 프로젝트 내 Gemini 입력창입니다.
이번 강의를 통해 Firebase 프로젝트 콘솔 내 Gemini 입력창 기능에 대한 지원을 공식 지원한다고 발표했습니다. Firebase 프로젝트별 Gemini의 경우 개별 Firebase 프로젝트를 포함해 기타 다른 문서를 학습해 Firebase 서비스와 기능에 대한 질의응답 기능은 물론이고, 우리가 개발한 앱에 쉽게 Firebase 프로젝트를 연결할 수 있도록 관련 코드 스니펫을 제공할 수 있다고 합니다. 심지어 Crashlytics와 연동하여 앱에서 발생한 에러를 이해하고 어떻게 수정할 수 있는지 예시 코드로 제공하고 그 외 트러블슈팅에 대한 지원도 제공한다고 합니다.
하지만 안타깝게도 이 기능은 올해 7월 30일 까지만 프로모션 차원에서 무료로 제공하고 그 이후부터는 요금제에 따른 부분 유료로 전환할 계획이라고 합니다. 아직 공식 홈페이지에 Gemini에 대한 가격은 아직 책정되지 않았지만, 제 예상으로는 무료 요금제의 경우 무료로 호출할 수 있는 횟수를 제한하는 방법으로 차등을 둘 것으로 예상됩니다.
위에서 언급한 Firebase 프로젝트 콘솔 내 Gemini 입력창 외에 Crashlytics 내에서도 별도의 Gemini 관련 기능이 추가되었습니다.
보통 모바일 개발할 때를 기준으로 생각해보면, 앱 내부에서 발생하는 오류를 감지하기 위해서 Crashlytics를 연결합니다. 그리고 앱 내부에서 오류가 발생하면 Firebase 콘솔로 알아서 오류 데이터가 전송되죠.
하지만 안드로이드 또는 iOS 네이티브로 개발된 앱이 경우 쉽게 에러 파악이 가능하지만, React Native와 Flutter 같은 크로스 플랫폼 프레임워크로 개발된 앱의 경우 제 경험상 Crashlytics에서 감지된 오류를 바로바로 이해하지 못했습니다. 그래서 이 오류 내용을 복사해서 구글이나 GPT, Gemini에 검색하는 번거로움이 있었죠.
하지만 이번에 Crashlytics에서 감지된 개별 오류 사항을 Gemini가 분석해서 무엇이 문제인지를 분석하고 이에 대한 간단한 솔루션을 제공하는 기능이 추가되었습니다.
Crashlytics에 접속해서 아무 에러 정보를 클릭해서 상세로 들어가면 아래 사진과 같이 AI 인사이트 생성 버튼이 포함된 영역을 확인할 수 있습니다.
그리고 "AI 인사이트 생성" 버튼을 클릭하면 아래와 같이 간단한 솔루션을 제공하는 Gemini 분석 결과를 제공합니다.
이 기능을 실제로 테스트해보기 위해 실행해본 결과, 현재 이 결과는 아직까지는 영어로만 번역되서 나오는 거 같습니다.(앞으로도 영어로만 응답이 나올수도 있구요.) 그리고 이 기능도 위에서 언급한 바와 같이 7월 30일 이후에는 부분 유료로 전환될 가능성을 배제할 수 없다고 보여집니다.
이번 강의 맨 마지막에서 공개된 Firebase App Hosting은 기존 제공 프레임워크 지원과 더불어 Github와의 통합, Authentication, Cloud Firestore, Firebase용 Vertex AI와 같은 다른 Firebase 서비스와의 통합을 제공해 Next.js 및 Angular 앱을 쉽게 호스팅하는데 도움을 주는 서비스입니다.
그리고 만약 위와 같이 Next.js 또는 Angular를 사용하는 경우, 이를 호스팅하기 위한 인프라를 자동으로 구축해준다고 합니다.
솔직히 저는 App Hosting이 기존 Firebase Hosting과 어떤 차이가 있는지 잘 모르겠습니다. 이 부분에 대해서는 저도 더 찾아봐야 될거 같습니다.
제가 이번 블로그를 통해 생성형 AI 기능 구축과 관련한 Firebase 새로운 기능에 대한 구글 IO 강의 내용을 정리하였습니다. 이 블로그에서는 제 기준에 정리하면 유의미할 것과 같은 내용들만 정리해 작성하였기 때문에 강의에서 설명한 모든 내용이 포함되지는 않았습니다.
혹시나 잘못 작성된 내용이 있으면 댓글을 통해 알려주시면 확인 후 수정하겠습니다.
감사합니다.