본문 바로가기
Spring

[Spring] Firebase 프로젝트 생성

by 가드 2022. 12. 1.
728x90

이번에 토이 프로젝트를 진행하기로 했고 토이 프로젝트의 데이터베이스는 사용해보지 않았던 Google Firebase에 대해 관심이 생기게 됐고 Firebase를 사용해보자고 결정을 하게 되었다. Firebase는 클라이언트부터 서버까지 SDK을 제공해줘서 손쉽게 API를 사용할 수 있는 것이 장점이다. 이번 토이 프로젝트를 진행하면서 Firebase에 대해 기록장에 정리해 보려고 한다.

Firebase 초기 생성에 대해서 시작해보겠다.

1. 프로젝트 생성

firebase dashboard

Firebase 가입 후 프로젝트 추가로 프로젝트 이름을 입력하면 간단하게 Firebase 프로젝트가 생성된다. 나는 테스트를 위해 "guard-test"라 만들었다.

2. SDK 연동 설정

firebase project setting

프로젝트 개요의 설정 아이콘을 눌러 [프로젝트 설정] -> [서비스 계정] -> [새 비공개 키 생성] 을 순서대로 진행하여 SDK에 등록할 Json 파일을 다운로드한다.

다운로드된 파일 guard-test-33413-firebase-adminsdk-ozq9h-2b88b4da25.json 이름이 너무 길다. 알아보기 쉽게 간단한 파일명으로 변경하는 게 좋겠다. (변경 후  : guard-test-firebase-key.json)

3. Spring Configuration

3-1 build.gradle firebase admin 디펜던시 추가

dependencies {
    implementation 'com.google.firebase:firebase-admin:9.1.1'
}

 

3-2 Spring 프로젝트 resources 폴더 하위에 다운로드한 firebase key json 파일을 추가

 

3-3 Firebase Configuration : FirebaseConfig 클래스 생성 후 FirebaseApp을 Bean으로 등록한다.

@Configuration
public class FirebaseConfig {

    @Bean
    public FirebaseApp initFirebase() throws IOException {
        FileInputStream serviceAccount = new FileInputStream("src/main/resources/guard-test-firebase-key.json");

        FirebaseOptions options = FirebaseOptions.builder()
            .setCredentials(GoogleCredentials.fromStream(serviceAccount))
            .build();

        return FirebaseApp.initializeApp(options);
    }
    
}

FileInputStream에 resources 하위에 추가한 key 파일의 Path를 설정하고 인증을 할 수 있도록 Credentials에 파일 스트림을 적용해 주면 Firebase 설정은 끝난다. 나머지는 SDK에서 자동으로 처리해 주므로 이제부터는 API를 사용하며 개발을 진행하면 되겠다. 정말 간단하다.

Firebase API 테스트 진행

firebase api

Firebase에서 제공하는 제품이 많이 있다 간단하게 리서치 한 내용으로 아래와 같다.

주요 제품 기능 설명
Authentication 사용자 인증 및 로그인 ID 관리
App Check 어플리케이션을 사용하는 디바이스를 검증하여 API 요청에 대한 승인 또는 거부 할 수 있도록 보호
Firestore Database NoSQL 데이터베이스로 빠른 쿼리와 확장성을 제공
Realtime Database 실시간으로 클라이언트 간에 동기화를 해주는 데이터베이스 (채팅에 매우 적합해 보인다.)
Extensions 어플리케이션에서 정의된 이벤트 발생 시 클라우드 함수 실행 (다양한 클라우드 함수가 있다.)
https://extensions.dev/extensions
Storage Firebase의 CDN 스토리지
Hosting Web Content Hosting으로 단일 명령으로 웹앱을 배포하고 정적, 동적 컨텐츠를 글로벌 CDN에 제공 (클라우드 웹앱)
Functions Firebase 기능 이벤트 및 Https 요청에 의한 트리거로 벡엔드 코드를 수행 할 수 있는 서버리스 프레임워크 (AWS의 Lambda)
Machine Learning 머신런닝 TensorFlow 모델을 사용하여 학습 API를 제공
Remote Config 어플리케이션 배포 없이 동작 및 설정 값등을 원격으로 제어하는 기능
Messaging 어플리케이션에 푸쉬 메시지를 전송

이외에도 더 많은 제품들을 제공해준다. 이 모든 기능은 Firebase SDK로 제어할 수 있다. 다시 생각해봐도 정말 잘 만든 것 같다.

이 중에 Authentication, Firestore Database, Realtime Database, Storage, Messaging을 사용하기로 했으며 각 기능에 대한 적용과 테스트에 대해서는 하나씩 정리해보도록 하겠다. 

300x250

댓글