Skip to content

Commit 06ec5db

Browse files
committed
Add study of firebase
1 parent 4ec3a35 commit 06ec5db

File tree

4 files changed

+253
-3
lines changed

4 files changed

+253
-3
lines changed

.gitignore

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,7 @@ node_modules
1515

1616

1717
#k8s
18-
k8s/pvc
18+
k8s/pvc
19+
20+
#mongodb data
21+
mongodb/db

diagram.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -345,7 +345,7 @@ highlight 200 to 450 #Gold;line:DimGrey : This is my caption
345345

346346
## Mermaid
347347

348-
- code block with mermaid notation will be rendered by [mermaid](https://github.com/knsv/mermaid).
348+
- code block with mermaid notation will be rendered by [mermaid](https://mermaid-js.github.io/mermaid/#/).
349349
- check mermaid doc for more information about how to create flowchart and sequence diagram
350350

351351
```mermaid

documentation/main.md

Lines changed: 242 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,242 @@
1+
# TAS/연구소 관점에서의 Googe Firebase
2+
3+
- [Description](#description)
4+
- [Summary](#summary)
5+
- [제품 in Firebase umbrella](#제품-in-firebase-umbrella)
6+
- [Firebase 하위 제품 및 연구소 내 해당 서비스](#firebase-하위-제품-및-연구소-내-해당-서비스)
7+
- [Build 제품군](#build-제품군)
8+
- [Release & Monitor 제품군](#release--monitor-제품군)
9+
- [Engage 제품군](#engage-제품군)
10+
- [제품군 별 상세 feature 및 적용 검토](#제품군-별-상세-feature-및-적용-검토)
11+
- [Build 제품군](#build-제품군-1)
12+
- [Release & Monitor 제품군](#release--monitor-제품군-1)
13+
- [Engage 제품군](#engage-제품군-1)
14+
15+
## Description
16+
17+
- TAS / 연구소 관점에서 Google Firebase를 검토하여 취할만한 [Firebase](<https://firebase.google.com/?hl=ko&gclid=Cj0KCQjwpv2TBhDoARIsALBnVnlphkBo1mikObG5Be-K8Qpm1Ne0cUrzoK4MygEdVFqRH3jcfeFIKDMaAoFxEALw_wcB&gclsrc=aw.ds>)의 서비스를 알아본다.
18+
19+
## Summary
20+
21+
- Firebase는 앱 중심의 Google 서비스로서 다양한 하위 제품이 있음
22+
- 전반의 검토 결과, Build 제품군 서비스는 연구소에서 상당부분 커버 중이나, Engage 제품군, 특히 데이터 기반으로한 서비스 부분은 취약
23+
- Analytics나 ML 데이터을 통한 사용자 세그멘테이션 데이터에 기반한 서비스가 상당하며(Engage 제품 군)) 이에 대한 준비 대응이 필요해보임.
24+
- **현 TAS 서비스 관점의 추가 대상 feature 검토 요약**
25+
- **ClientDB** : 개인화 뿐 아니라 일반 데이터로의 확장 / 기기 기반 특화 서비스 지원(기기 데이터 동기화 등)
26+
- **공용컨텐츠** : CDN 적용 / (자유로운) 정적컨텐츠 web hosting
27+
- **앱/기기 인증** : TAS는 사용자 신원 증명인 EMP OAuth를 기기/앱 인증으로도 사용 중인데(public/private API 구분), 앱/기기 인증 수단을 별도로 구성해야하는지 확인
28+
29+
## 제품 in Firebase umbrella
30+
31+
Firebase는 서비스 lifecycle에 따라 하기 3개 제품군으로 나뉨
32+
33+
- **[Build](https://firebase.google.com/products-build?hl=ko)** : 서비스 lifecycle 중 개발 단계에 필요한 feature 모음
34+
- **[Release & Monitor](https://firebase.google.com/products-engage)** : 서비스 lifecycle 중 개발 단계에 필요한 feature 모음
35+
- **[Engage](https://firebase.google.com/products-engage)** : 서비스 lifecycle 중 개발 단계에 필요한 feature 모음
36+
37+
## Firebase 하위 제품 및 연구소 내 해당 서비스
38+
39+
### Build 제품군
40+
41+
```mermaid
42+
flowchart BT
43+
44+
45+
subgraph TAS
46+
ClientDB
47+
공용컨텐츠
48+
end
49+
50+
subgraph Common
51+
ObjectStore
52+
end
53+
54+
subgraph EMP
55+
OAuth
56+
end
57+
58+
subgraph Build
59+
Cloud-Firestore
60+
Realtime-Database
61+
Firebase-Extensions
62+
App-Check
63+
Cloud-Functions
64+
Authentication
65+
Hosting
66+
Cloud-Storage
67+
end
68+
69+
Cloud-Firestore --> ClientDB
70+
Realtime-Database --> ClientDB
71+
Cloud-Storage --> ObjectStore
72+
Hosting --> 공용컨텐츠
73+
Authentication --> OAuth
74+
App-Check --> OAuth
75+
76+
Firebase-Extensions --> N/A
77+
Cloud-Functions --> N/A
78+
79+
style N/A fill:#888888,color:white
80+
style TAS fill:#CCCC00
81+
style Build fill:#FFCA28,color:white
82+
```
83+
84+
| Firebase 제품 | 설명 | 연구소 내 서비스 |
85+
|---|---|---|---|
86+
| **[Cloud Firestore](https://firebase.google.com/docs/firestore/)** | Document store 타입의 NoSQL 데이터베이스 (신규) | ClientDB in TAS |
87+
| **[Realtime Database](https://firebase.google.com/docs/database/)** | Document store 타입의 NoSQL 데이터베이스 (기존) | ClientDB in TAS |
88+
| **[Cloud Functions](https://firebase.google.com/docs/functions)** | Firebase 기능 및 HTTPS을 통한 이벤트로 트리거되는 서버리스 프레임워크 | N/A |
89+
| **[Firebase Extensions](https://firebase.google.com/docs/extensions?hl=ko)** | Firebase 타 제품으로부터의 각종 Event가 발생할 때마다 수행되는 코드(*Cloud Functions* 기반) | N/A |
90+
| **[Hosting](https://firebase.google.com/docs/hosting)** | 웹앱, 정적 컨텐츠, 동적 컨텐츠(Cloud Function과 연계) 호스팅 서비스 | 공용컨텐츠 in TAS |
91+
| **[Cloud Storage](https://firebase.google.com/docs/storage)** | 사진, 동영상 등의 사용자 제작 컨텐츠를 대상으로 하는 객체 저장소 서비스 | ObjectStore in Common |
92+
| **[Authentication](https://firebase.google.com/docs/auth)** | 사용자 인증 서비스 | OAuth in EMP |
93+
| **[App Check](https://firebase.google.com/docs/app-check?hl=ko)** | 기기 및 앱 인증 서비스 | OAuth in EMP |
94+
95+
96+
### Release & Monitor 제품군
97+
98+
```mermaid
99+
flowchart BT
100+
101+
subgraph Release-&-Monitor
102+
Crashlytics
103+
Performance-Monitoring
104+
Test-Lab
105+
App-Distribution
106+
Google-Analytics
107+
Machine-Learning
108+
end
109+
110+
Crashlytics --> N/A
111+
Performance-Monitoring --> N/A
112+
Test-Lab --> N/A
113+
App-Distribution --> N/A
114+
Google-Analytics --> N/A
115+
Machine-Learning --> N/A
116+
117+
style N/A fill:#888888,color:white
118+
style Release-&-Monitor fill:#FFA000,color:white
119+
```
120+
121+
| Firebase 제품 | 설명 | 연구소 내 서비스 |
122+
|---|---|---|---|
123+
| **[Crashlytics](https://firebase.google.com/docs/crashlytics?hl=ko)** | App의 버그/비정상종료 분석 서비스 | N/A |
124+
| **[Performance Monitoring](https://firebase.google.com/docs/perf-mon?hl=ko)** | App의 성능 모니터링 서비스 | N/A |
125+
| **[Test Lab](https://firebase.google.com/docs/test-lab?hl=ko)** | Google 서버에서의 앱 테스트 | N/A |
126+
| **[App Distribution](https://firebase.google.com/docs/app-distribution?hl=ko)** | 쉬운 배포, 테스트 전용 배포, Crashlytics와 통합 지원 앱 배포 서비스 | N/A |
127+
| **[Google Analytics](https://firebase.google.com/docs/analytics?hl=ko)** | 타 Firebase와의 통합 기반 App 내 고유 이벤트에 대한 측정 및 리포팅 서비스 | N/A |
128+
| **[Machine Learning](https://firebase.google.com/docs/ml?hl=ko)** | 머신러닝 기반 feature를 제공 가능케 하는 서비스 | N/A |
129+
130+
### Engage 제품군
131+
132+
```mermaid
133+
flowchart BT
134+
135+
136+
subgraph TAS
137+
ClientDB
138+
JSONSTORE
139+
end
140+
141+
subgraph Common
142+
PUSH
143+
end
144+
145+
subgraph Engage
146+
Remote-Config
147+
A/B-Testing
148+
Dynamic-Links
149+
In-App-Messaging
150+
Cloud-Messaging
151+
end
152+
153+
Remote-Config --> JSONSTORE
154+
Remote-Config --> ClientDB
155+
156+
Cloud-Messaging --> PUSH
157+
Dynamic-Links --> N/A
158+
159+
In-App-Messaging --> N/A
160+
A/B-Testing --> N/A
161+
162+
style TAS fill:#CCCC00
163+
style N/A fill:#888888,color:white
164+
style Engage fill:#FF8A65,color:white
165+
```
166+
| Firebase 제품 | 설명 | 연구소 내 서비스 |
167+
|---|---|---|---|
168+
| **[Remote Config](https://firebase.google.com/docs/remote-config?hl=ko)** | 앱 업데이트 없이 앱의 기본값 변경. 특정 사용자 층에만 변경 지원, A/B 테스트 지원 | JSONSTORE in TAS |
169+
| **[In-App Messaging](https://firebase.google.com/docs/in-app-messaging?hl=ko)** | 사용자 관점에 특화된 메시징 서비스 | N/A |
170+
| **[Cloud Messaging](https://firebase.google.com/docs/cloud-messaging?hl=ko)** | FCM Push Notification 서비스 | PUSH in Common |
171+
| **[A/B Testing](https://firebase.google.com/docs/ab-testing?hl=ko)** | 세그멘테이션 데이터 기반의 테스트 설계 및 타 Firebase 서비스를 통한 실험 서비스 | N/A |
172+
| **[Dynamic-Links](https://firebase.google.com/docs/dynamic-links?hl=ko)** | 앱 플랫폼에 따른 딥 링크 생성 서비스 | ThinqLink in Common |
173+
174+
175+
## 제품군 별 상세 feature 및 적용 검토
176+
177+
### Build 제품군
178+
179+
- **[Cloud Firestore](https://firebase.google.com/docs/firestore/)** / **[Realtime Database](https://firebase.google.com/docs/database/)**
180+
- **Features** : 계층적 데이터 구조 지원, 표현형 쿼리, 실시간 업데이트(기기 간 동기화), 오프라인 지원, 자동 멀티 리전 데이터 복제, 강력한 일관성 보장, 원자적 일괄 작업, 트랜젝션 지원, 기기 on/off 상태 확인
181+
- **적용 검토**
182+
- **일반 데이터 확장** : ClientDB는 현재 개인화 데이터에 한정적으로 지원 중
183+
- **기기 간 데이터 동기화** : 일반 데이터로의 확장 및 기기 별 별도 서비스 지원 선행이 필요
184+
- **오프라인 지원** : ClientDB SDK 지원 선행 필요.
185+
- **[Firebase Extensions](https://firebase.google.com/docs/extensions?hl=ko)**
186+
- **Features** : Extensions 단위 관리(재사용, 구성 등), 손쉬운 관리(보안, Firebase과 통합 등)
187+
- **적용 검토** : 제외 (Cloud Functions 기반이기에)
188+
- **[Cloud Function](https://firebase.google.com/docs/functions)**
189+
- **Features** : backend에서 동작하는 프로그램 지원 및 이를 위한 framework.
190+
- **적용 검토** : 제외 (클라우드 플랫폼 연구소 자체 역할과 겹침)
191+
- **[Hosting](https://firebase.google.com/docs/hosting)**
192+
- **Features** : 보안 연결로 컨텐츠 제공 / 정적 및 동적 컨텐츠와 마이크로서비스 호스팅 / 빠른 컨텐츠 전송(CDN) / 라이브러전환 전 변경사항 에뮬레이션 및 공유 / 명령어 하나로 새 버전 배포
193+
- **적용 검토** : 공용컨텐츠의 CDN 적용, 정적컨텐츠 호스팅(현재는 수동/임시, 그리고 공용컨텐츠 기반 하에 제공 중)
194+
- **[Cloud Storage](https://firebase.google.com/docs/storage)**
195+
- **Features** : 상기 기술된 내용 이외에 특별한 feature 없음
196+
- **적용 검토** : 제외 (Common ObjectStore가 현재 모두 담당)
197+
- **[Authentication](https://firebase.google.com/docs/auth)**
198+
- **Features** : 이메일 및 비밀번호 기반 인증 / ID provider 통합(Google, Apple, Facebook, Twitter, GitHub) / 전화번호 인증 / Custom 인증 시스템 통합 / (임시) 익명 계정 기반 인증
199+
- **적용 검토** : EMP에서 실제 요구에 따른 검토 필요
200+
- **[App Check](https://firebase.google.com/docs/app-check?hl=ko)**
201+
- **Features** : 다양한 public 증명 공급자(reACAPCHA, Apple DeviceCheck, Google Integrity 등) 지원,
202+
- **적용 검토** : TAS는 사용자 신원 증명인 EMP OAuth를 기기/앱 인증으로도 사용 중인데(public/private API 구분), 앱/기기 인증 수단을 별도로 구성해야하는지 확인
203+
204+
205+
### Release & Monitor 제품군
206+
207+
- **[Crashlytics](https://firebase.google.com/docs/crashlytics?hl=ko)**
208+
- **Features** : 선별된 오류 보고, 자주 발생하는 비정상 종료 해결법 제공, Analytics와 통합, 실시간 알림
209+
- **적용 검토** : 제외 (App에 특화되며, App 필요 시 본 제품을 그대로 사용 바람직)
210+
- **[Performance Monitoring](https://firebase.google.com/docs/perf-mon?hl=ko)**
211+
- **Features** : 앱 시작 시간, HTTP 네트워크 요청 등 각종 성능 지표 측정, 특정 상황에 대한 측정(커스텀 코드 trace), 알람 설정
212+
- **적용 검토** : 앱/서버 통합 관점에서 성능 검토 필요 시 순차적 적용
213+
- **[Test Lab](https://firebase.google.com/docs/test-lab?hl=ko)**
214+
- **Features** : 서버에서의 실제 기기 기반 Android, iOS 앱테스트, 워크플로와 통합
215+
- **적용 검토** : 제외 (App에 특화되며, App 필요 시 본 제품을 그대로 사용 바람직)
216+
- **[App Distribution](https://firebase.google.com/docs/app-distribution?hl=ko)**
217+
- **Features** : 교차 플랫폼, 빠른 배포, 배포 자동화, 테스터 관리, Crashlytics와 통합
218+
- **적용 검토** : 제외 (App에 특화되며, App 필요 시 본 제품을 그대로 사용 바람직)
219+
- **[Google Analytics](https://firebase.google.com/docs/analytics?hl=ko)**
220+
- **Features** : 최대 500개의 고유 이벤트 보고, 모니터링, 잠재고객 분류
221+
- **적용 검토** : 제외 (단, Analytics 기반의 측정 값을 추출 가능할 경우, 장기적으로 내재화 - 사용자 행동 데이터의 중요성 사유)
222+
- **[Machine Learning](https://firebase.google.com/docs/ml?hl=ko)**
223+
- **Features** : ML기반 feature 제공 용이, ML 키트(즉시 사용 가능한 모델 - 텍스트 인식, 이미지 레이블링, 번역 등) 제공 등
224+
- **적용 검토** : 제외 (ML을 서비스화 한 것으로 ML 역량 내재화 선행 필요)
225+
226+
### Engage 제품군
227+
228+
- **[Remote Config](https://firebase.google.com/docs/remote-config?hl=ko)**
229+
- **Features** : 앱 업데이트 없이 앱의 기본값 변경. 특정 사용자 층에만 변경 지원, A/B 테스트 지원
230+
- **적용 검토** : JSONSTORE을 통해 기본값 변경, ClientDB를 통해 특정 사용자에게만 변경 가능하나, 사용자 세그멘테이션 feature 구현 선행이 필요.
231+
- **[In-App Messaging](https://firebase.google.com/docs/in-app-messaging?hl=ko)**
232+
- **Features** : 이벤트 기반(사용자 위치 등) 메시징, 특정 사용자(세그멘테이션 기반)로의 메시징, 맞춤 알림
233+
- **적용 검토** : 제외 (일단, Analytics 데이터 수집 등의 사용자 행동 데이터 수집 선행이 필요)
234+
- **[Cloud Messaging](https://firebase.google.com/docs/cloud-messaging?hl=ko)**
235+
- **Features** : 알림 메시지 또는 데이터 메시지 전송, 다양한 메시지 타겟팅, 클라이언트 앱에서 메시지 전송
236+
- **적용 검토** : 제외 (Common의 PUSH 서비스에서 담당 중)
237+
- **[A/B Testing](https://firebase.google.com/docs/ab-testing?hl=ko)**
238+
- **Features** : 사용자 반응 테스트 환경 제공. 사용자 세그멘테이션 기반. 타 Firebase 서비스와 연동
239+
- **적용 검토** : 제외 (데이터 분석 - 세그멘테이션 및 배포, 모니터링 등 이를 위한 기반 서비스 구현 선행 요구)
240+
- **[Dynamic-Links](https://firebase.google.com/docs/dynamic-links?hl=ko)**
241+
- **Features** : 앱 플랫폼에 따른 딥 링크 생성.
242+
- **적용 검토** : 제외 (본 서비스 자체로는 가치를 찾기 어려움)

k8s/study/study.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,10 @@
1515
- python web server
1616
- **flask** vs django : flask가 lightweight, 빠름. 둘다 비슷하게 많이 쓰고.
1717

18-
18+
- [k8s 자격증(CKA, CKAD, CKS) 공부법](<https://www.youtube.com/watch?v=WDanHeELZcA&t=349s>)
19+
- 시험 난이도가 50이라면
20+
- udemy : 15 (사실 이건 강의 자체 보다는 lab을 얻기 위해 많이 참고한다고)
21+
- [killer.sh](https://killer.sh) : 90 - 이거 숙달되면 절대 떨어질 수 없음
22+
- 즉, killer.sh를 master하면 시험은 OK, udemy만 갖고는 어려움...
23+
1924
![CI/CD tools](ci-cd-tools.png)

0 commit comments

Comments
 (0)