Skip to content

0814_retrospecitve

rbgus2002 edited this page Sep 2, 2023 · 1 revision

๊ถŒ๋ฏผ์•„

2023/08/14 - API ๊ฐœ๋ฐœ

์˜ค๋Š˜ ํ•œ ์ผ
1. ๋ฐฑ์—”๋“œ ์ฃผ๊ฐ„ ์ˆ˜์—… - ๋ฌผ๋ฆฌ์  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์กฐ
2. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์œ„ํ•œ ec2 ์ธ์Šคํ„ด์Šค ๊ต์ฒด
3. HTTPS ์„ค์ •
4. API ๋ช…์„ธ์„œ ์ˆ˜์ • ๋ฐ ๊ฐœ๋ฐœ

์•„์‰ฌ์šด ์ 
1. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ณต๋ถ€ํ•˜๊ธฐ
    - ์˜ค๋Š˜ ์ฃผ๊ฐ„ ์ˆ˜์—…์€ ์ •๋ง ๋ชจ๋ฅด๋Š” ๋‚ด์šฉ ๋ฐ–์— ์—†์–ด์„œ ๋งŽ์ด ๋ฐ˜์„ฑํ–ˆ๋‹ค. DB๋„ ์—ด์‹ฌํžˆ ๊ณต๋ถ€ํ•ด์•ผ๊ฒ ๋‹ค.
2. API ๊ฐœ๋ฐœ ๋นจ๋ฆฌ ๋๋‚ด๊ธฐ
    - ํ•˜๊ณ  ์‹ถ์€ ์ผ, ํ•ด์•ผํ•  ์ผ์€ ๋งŽ์€๋ฐ ์†์ด ๋Š๋ฆฐ ๊ฑด์ง€ ์ง„๋„๊ฐ€ ์•ˆ ๋‚˜๊ฐ€๋Š” ๊ฒƒ ๊ฐ™๋‹ค. ์˜ค๋Š˜์€ ๊ทธ๋ž˜๋„ ์—ด์‹ฌํžˆ ํ–ˆ๋Š”๋ฐ ์ •์ž‘ ๋ชฉํ‘œํ•œ API ๊ฐœ๋ฐœ์„ ๊ฑฐ์˜ ๋ชปํ•ด์„œ ์Šฌํ”„๋‹ค. ๋งˆ์Œ ์กฐ๊ธ‰ํ•˜๊ฒŒ ๋จน์ง€ ๋ง๊ณ  ์ฐจ๋ถ„ํ•˜๊ฒŒ ํ•ด์•ผ๊ฒ ๋‹ค..

ํ•œ๋งˆ๋””
ํ•˜๋ฃจ ์ถœ๊ทผ ํ›„ ๋‹ค์‹œ ํœด์ผ๐Ÿฅณ๐ŸŽ‰๐Ÿ‘๐ŸŽŠ

๊น€์œ ๋นˆ

* TODAY
- Hilt ๊ณต๋ถ€ ๋ฐ ์ ์šฉ
- ์ฝ”๋ฃจํ‹ด ์ ์šฉ
- ์„œ๋ฒ„ํ†ต์‹  ํ…Œ์ŠคํŠธ
- ์งˆ๋ฌธํ™”๋ฉด ui
- ์˜ต์…˜ํ™”๋ฉด ์„œ๋ฒ„ํ†ต์‹ 

*LECTURE : App Distribution
- Build variant
   - debug
   - release
- Gradle build output format
   - APK
   -AAB ~ apk๋ฅผ split! -> gradle์—์„œ ์„ค์ •๊ฐ€๋Šฅ
+) install(์••์ถ• ํ’€๋ฆฌ๊ณ  ๋””๋ฐ”์ด์Šค์— ์„ค์น˜๋ ๋•Œ), download(์•ฑ์Šคํ† ์–ด์—์„œ ๋‹ค์šด๋ฐ›์„๋•Œ)
- App signing
   - Upload key : ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ด€๋ฆฌ (.jks -java key store)
   - App signing key : ๊ตฌ๊ธ€์ด ๊ด€๋ฆฌ
+) key path์— ํ•œ๊ธ€์ด ์—†๊ฒŒ ์ฃผ์˜!
- Firebase App Distribution
+) ๋ฒ„์ „๋ณ„ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ž˜ ๊ธฐ๋กํ•ด๋‘๋ฉด ์ข‹์„๊ฒƒ๊ฐ™๋‹ค!

๋ฐ•์„ธ์˜

์˜ค๋Š˜ ํ•œ ํ™œ๋™
 1. hilt ์„ค์ •
 2. retrofit api ์…‹ํŒ… 
 3. retrofit typeadapter ์—๋Ÿฌ ํ•ด๊ฒฐ 
 4. trim api ์—ฐ๋™

ํ•™์Šตํ•œ ๋‚ด์šฉ 
 1. hilt ์‚ฌ์šฉ๋ฒ• (module class, Annotation)
 2. App Distribution

๊ณ ๋ฏผํ•ด์•ผํ•  ์  
 1. ์˜คํ”„๋ผ์ธ ๊ธฐ๋Šฅ 
 2. api ํ˜ธ์ถœ ์‹œ์  
 3. ํด๋ž˜์Šค ๋ถ„๋ฆฌ

๋” ํ•™์Šตํ•ด์•ผ ํ•  ์  
 1.  ํ”„๋ž˜๊ทธ๋จผํŠธ ์ƒ๋ช… ์ฃผ๊ธฐ

์—„์„ํ›ˆ

์˜ค๋Š˜์€ ๋ฐฑ์—”๋“œ API๊ฐ€ ์ผ๋ถ€ ๋‚˜์™€์„œ ์—ฐ๋™์„ ์‹œ์ž‘ํ–ˆ๋‹ค. ํ™•์‹คํžˆ ๊ธฐ์กด UI๊ตฌ์„ฑํ•  ๋•Œ๋Š” ๋”๋ฏธ ๋ฐ์ดํ„ฐ์— ์‚ฌ์ง„๋„ ์ฐจ๋Ÿ‰ ์ด๋ฏธ์ง€๊ฐ€ ์•„๋‹ˆ๋ผ ์•„๋ฌด ์ด๋ฏธ์ง€๋‚˜ ๋„ฃ์–ด์„œ ํ™”๋ฉด์„ ๋ณด๋Š” ์žฌ๋ฏธ๊ฐ€ ์—†์—ˆ๋Š”๋ฐ ์˜ค๋Š˜์€ ์‚ฌ์ง„์ด ๋“ค์–ด๊ฐ€๋‹ˆ ํ™•์‹คํžˆ ์žฌ๋ฏธ์žˆ์—ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋””์ž์ธ์—๋Š” ๊ทน๋‹จ์ ์ธ ๊ฒฝ์šฐ์— ๋Œ€ํ•œ ๋””์ž์ธ์ด ์—†์–ด์„œ ์ง์ ‘ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜จ ์ƒํ™ฉ์—์„œ ์กฐ๊ธˆ์”ฉ ์ˆ˜์ •ํ•˜๋ฉด์„œ ํ™”๋ฉด์— ๋งž๊ฒŒ ๋งž์ถ”๊ณ  ์žˆ๋‹ค. ๋‚ด์ผ์€ ํ‘น ์‰ฌ๊ณ  ์ถ”ํ›„ API๊ฐ€ ๋” ๋‚˜์˜ค๋ฉด ์—ฐ๋™ํ•˜๋ฉด์„œ ๋ฆฌํŒฉํ† ๋ง๋„ ํ•ด์•ผ๊ฒ ๋‹ค.

์ด์Šนํ˜„

๋ฒŒ์จ 3์ฃผ์ฐจ๋‹ค. ๋ญ์ง€?
์‹œ๊ฐ„์ด ์ฐธ ๋น ๋ฅด๋‹ค...
UI๋Š” ๊ตฌํ˜„์„ ๋Œ€์ถฉ ์™„๋ฃŒํ–ˆ๋Š”๋ฐ, ๋“œ๋””์–ด API ์—ฐ๋™์ด ๊ฐ€๋Šฅํ•ด์ ธ์„œ ์˜ค๋Š˜๋ถ€ํ„ฐ API์—ฐ๋™์„ ์‹œ์ž‘ํ–ˆ๋‹ค.
ํŒจ์นญ ํ•ด์™€์„œ ์‚ฌ์šฉํ•˜๋Š”๋ฐ, ํƒ€์ž…์ด ์œ ๋‹ˆ์˜จ์œผ๋กœ ๋“ค์–ด๊ฐ€์„œ ํƒ€์ž…๋‹จ์–ธ์ด ํ•„์š”ํ–ˆ๋Š”๋ฐ, ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ•˜๋Š”์ง€ ๊ฒฐ๊ตญ ์•Œ์ง€ ๋ชปํ–ˆ๋‹ค.
๊ทธ๋ž˜์„œ ํ•จ์ˆ˜๋ฅผ 3๊ฐœ๋กœ ๋ถ„๊ธฐํ–ˆ๋Š”๋ฐ, ๋ถ„๋ช… ๋ฐฉ๋ฒ•์ด ์žˆ์„ ๊ฒƒ ๊ฐ™์€๋ฐ !!! ์ผ๋‹จ ๊ธฐ๋Šฅ ์™„์„ฑ ๋‹ค ํ•˜๊ณ  ๋ฆฌํŒฉํ† ๋งํ•  ๋•Œ ์–ด๋–ป๊ฒŒ๋“  ์ˆ˜์ •ํ•ด๋ด์•ผ๊ฒ ๋‹ค ใ…œ

๋˜ ํ•ญ์ƒ ๊ณ ๋ฏผ์ด์—ˆ๋˜ ํŠธ๋ฆผํŽ˜์ด์ง€ ๋ชจ๋‹ฌ์€ ์™ผ์ชฝ์œผ๋กœ ๋„์šฐ๋Š” ๊ฒƒ์œผ๋กœ ์ผ๋‹จ ์ˆ˜์ •ํ–ˆ๋‹ค. ์•„๋ฌด๋ฆฌ๋ด๋„ ์œ„๋กœ ๋„์šฐ๋Š”๊ฑด UX์ ์œผ๋กœ ๋ณ„๋กœ๋ผ๊ณ  ์ƒ๊ฐํ•ด์„œ ... -> ์‚ฌ์‹ค ๊ธฐ์ˆ ์ ์œผ๋กœ ๊ตฌํ˜„์ด ํž˜๋“ค ๊ฒƒ ๊ฐ™์•˜๋‹ค. ์ด๊ฑฐ ํ•˜๋ ค๋ฉด ๊ตฌ์กฐ๋ฅผ ์™„์ „ ๋’ค์—Ž์–ด์•ผ ํ•˜๋Š”๋ฐ, ์ง€๊ธˆ ์—Ž์–ด๋ฒ„๋ฆฌ๋ฉด ๊ทธ๋ƒฅ ๋ฉ˜ํƒˆ๋„ ์—Ž์–ด์งˆ ๊ฒƒ ๊ฐ™์•„์„œ ...ใ…Žใ…Ž

์•„์ง ์ƒ‰์ƒ์„ ํƒ API๊ฐ€ ์•ˆ๋‚˜์™€์„œ ์—ฐ๋™์€ ๋ชปํ•˜์ง€๋งŒ(์ด ๋ถ€๋ถ„์ด ์ œ์ผ ๋งŒ๋“ค๊ณ  ์‹ถ์—ˆ๋Š”๋ฐ!) ๊ทธ ๋Œ€์‹  ๋‚ด์ผ์€..์‰ฌ๊ณ  ๊ทธ ๋‹ค์Œ๋‚ ์— ๊ณตํ†ต ์ปดํฌ๋„ŒํŠธ๋กœ ๋นผ๊ณ  ์‹ถ์—ˆ๋˜ ๋ถ€๋ถ„๋“ค ๋นผ์„œ ์ „์ฒด์ ์ธ ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง์„ ์ข€ ์ผ์ฐ ์ง„ํ–‰ํ•  ์ƒ๊ฐ์ด๋‹ค.
์ˆ˜๊ณ !

์ตœ๊ทœํ˜„

### <์˜์‹์˜ ํ๋ฆ„>
- ๋‚ด์ผ ๊ณตํœด์ผ์ด๋ผ ๊ธฐ๋ถ„์ด ์ข‹๋‹คโ€ฆ์ตœ๊ณ .. ์˜คํŽœํ•˜์ด๋จธ ๋ณผ ์ƒ๊ฐ์— ์„ค๋ ˜
- ์ž ์„ 7์‹œ๊ฐ„ ์žค์„ ๋•Œ๊ฐ€ ์ œ์ผ ํ•™์Šต ํšจ์œจ์ด ์ž˜๋‚˜์˜ค๋Š” ๊ฑฐ ๊ฐ™๋‹ค. ์˜ค๋Š˜ ์ž ์„ 7์‹œ๊ฐ„ ์žค๊ธฐ ๋•Œ๋ฌธ์— ์œก์ฒด์ ์œผ๋กœ๋„, ์ •์‹ ์ ์œผ๋กœ๋„ ๊ณต๋ถ€ํ•˜๊ธฐ ์ข‹์€ ์ปจ๋””์…˜์ด์—ˆ๋‹ค.
- RESTfulํ•œ API๊ฐ€ ๋ฌด์—‡์ธ์ง€ ๊ณ ๋ฏผํ•˜๋Š๋ผ ์‹œ๊ฐ„์„ ์Ÿ์•„์„œ ๋ชฉํ‘œํ–ˆ๋˜ API ๊ฐœ๋ฐœ์ด ์•ˆ๋๋‹ค. ์ €๋… ๋น ๋ฅด๊ฒŒ ๋จน๊ณ  ๋งˆ์ € ๊ฐœ๋ฐœํ•ด์•ผ๊ฒ ๋‹ค.
- ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๊ธฐํš ๋ณด๋ฉด์„œ ๋„ค์ด๋ฐํ•˜๋Š” ๊ฒŒ ๋” ๊ณ ๋ฏผ๋˜๊ณ  ์–ด๋ ค์šด ๊ฑฐ ๊ฐ™๋‹คโ€ฆ.

### <ํ˜ธ๋ˆ…์Šค๋‹˜ ๊ฐ•์˜ - ๋ฌผ๋ฆฌ์  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์กฐ>
- ํ•˜๋“œ๋””์Šคํฌ โ‡’ CHS ๊ตฌ์กฐ
    - Cylinder, Head, Sector
    - ์•” โ‡’ Track ์„ ํƒ
    - ๋ถ„๋‹น ํšŒ์ „์ˆ˜ RPM 7200
    - Sector ๋ณ„ ์˜์—ญ์€ ํฌ๊ธฐ๊ฐ€ ๋‹ค๋ฅด์ง€๋งŒ ์šฉ๋Ÿ‰์€ ๊ฐ™์Œ (๋‹ค๋ฅด๋ฉด Sector ๋ณ„๋กœ ํšŒ์ „ ์ˆ˜๊ฐ€ ๋‹ฌ๋ผ์•ผํ•ด์„œ ๋ณต์žกํ•ด์ง)
    - Locality ๋•๋ถ„์— random ์ ‘๊ทผ์— ๋น„ํ•ด ์ˆœ์ฐจ ์ ‘๊ทผ์ด ๋” ๋นจ๋ฆ„
    - ์š”์ฆ˜์—” HDD ์”€
- `CREATE DATABASE` ํ•˜๋ฉด  ํ•˜๋“œ ๋””์Šคํฌ์— db์ด๋ฆ„์œผ๋กœ directory๊ฐ€ ์ƒ๊น€
- `CREATE TABLE` ํ•˜๋ฉด DATABASE ์•ˆ์— table์ด๋ฆ„์œผ๋กœ file์ด ์ƒ๊น€
- InnoDB๊ฐ€ ์ง€์›ํ•˜๋Š” MVCC๋ž€?
    - ??????
- *Row Store*
    - ๊ธฐ๋ณธ์ ์œผ๋กœ RDB๋Š” ๋ ˆ์ฝ”๋“œ(row) ๋‹จ์œ„๋กœ ์ €์žฅ
- *Column Store*
    - ๋น…๋ฐ์ดํ„ฐ์˜ ๊ฒฝ์šฐ Column Store๋กœ ์‚ฌ์šฉํ•˜๊ธฐ๋„ ํ•จ
- Clustered Index
    - ์ธ๋ฑ์Šค๊ฐ€ ์•„๋‹Œ ์ž๋ฃŒ๊ตฌ์กฐ์ž„ โ‡’ Root PAGE ~ Leaf๋ฅผ ์ง€๋‚˜ Data PAGE๊นŒ์ง€ ๋ชจ๋‘ ํ†ต์นญํ•จ
    - Data Pages๋Š” ๋ชจ๋‘ ์ •๋ ฌํ•ด์„œ ์ €์žฅํ•จใ„ด
    - TABLE ์ƒ์„ฑํ•˜๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ PK์— ๋Œ€ํ•ด์„œ ์ธ๋ฑ์Šค๊ฐ€ ๋งŒ๋“ค์–ด์ง
    - B+Tree
    - **IO์˜ ๊ธฐ๋ณธ ๋‹จ์œ„์ธ PAGE ์‚ฌ์ด์ฆˆ๋กœ ๋…ธ๋“œ ํ•˜๋‚˜์˜ ํฌ๊ธฐ๊ฐ€ ์ •ํ•ด์ ธ์žˆ์Œ (16KB) โ‡’ โ€˜HDDโ€™๋ฅผ ๊ณ ๋ คํ•œ ์ตœ์ ํ™”**
- ํ•˜๋‚˜์˜ ํŽ˜์ด์ง€ ์•ˆ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋–ป๊ฒŒ ์ฐพ์•„๊ฐˆ๊นŒ?
    - slot์„ ๋„์ž…ํ•˜๊ณ  b+tree์—๋Š” leaf ๋…ธ๋“œ์— RID ์ €์žฅ (RID โ‡’ page ๋ฒˆํ˜ธ + slot ๋ฒˆํ˜ธ)
    - slot ๋ฒˆํ˜ธ๋ฅผ page ํฌ๊ธฐ์˜ ํŒŒ์ผ ์•ž์— ๋‘๋ฉด ํฌ๊ธฐ์˜ ํ•œ๊ณ„๋ฅผ ๊ฐ–์Œ
    - (heap์ด๋ž‘ stack์ด ๊ฐ€๋ณ€์ ์œผ๋กœ ํฌ๊ธฐ๊ฐ€ ์ฆ๊ฐ€ํ•˜๋‹ค๊ฐ€ ๋งŒ๋‚˜๋Š” ๊ฑฐ์ฒ˜๋Ÿผ) slot์„ ๋งจ ๋์—๋‹ค ๋‘๊ธฐ
    - slot ๊ณต๊ฐ„์— free slot ๊ฐœ์ˆ˜๋ž‘ ๋‚จ์€ size ๋“ฑ meta data๊ฐ€ ์กด์žฌ
    - ์‚ฌ์‹ค ์‚ญ์ œํ•  ๋•Œ ํŽ˜์ด์ง€ ์ง€์šฐ๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ delete ํ”Œ๋ž˜๊ทธ๋กœ๋งŒ ์ฒ˜๋ฆฌํ•จ
    - ๊ทธ๋ž˜์„œ ๊ณต๊ฐ„์„ ์ฐจ์ง€ํ•ด์„œ ํ•ด๋‹น ์ž๋ฆฌ์— insert ๋ชปํ•จ *โ€œํ•˜์ง€๋งŒ ํŽธํ–ˆ์ฃ ?โ€*
    - ์ถ”ํ›„์— ๋Š๋ฆฐ ์ž‘์—…์ธ compaction์„ ์‚ฌ์šฉํ•ด์„œ ํ•ด๋‹น ๊ณต๊ฐ„ ์“ธ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์คŒ
- ๋น„ํด๋Ÿฌ์Šคํ„ฐ ์ธ๋ฑ์Šค์— RID๊ฐ€ ์•„๋‹Œ PK๊ฐ’์ด ์žˆ๋Š” ์ด์œ ๋Š”?
    - ํŠน๋ณ„ํ•œ ์ด๋ก ์ ์ธ ๋ฐฐ๊ฒฝ์ด ์žˆ๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ ๊ฒฝํ—˜์ ์œผ๋กœ ๊ตฌํ˜„ํ–ˆ๋”๋‹ˆ ์ด๊ฒŒ ์ข‹๋”๋ผ
    - (100๋งŒ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ ์žˆ์œผ๋ฉด ๋Œ€์ถฉ B+tree์—์„œ depth๊ฐ€ 3๊ฐœ์ •๋„์ž„ (3๊ฐœ๋„ ๊ฑฐ์˜ ์—†๋‹ค))
- ์‹ค์ œ DB๊ฐ€ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ์•Œ๊ธฐ ์œ„ํ•ด์„œ๋Š”? โ‡’ PostgreSQL ๋œฏ์–ด๋ณด๊ธฐ (MySQL์€ ์ฝ”๋“œ ๋”๋Ÿฌ์›€)

๐Ÿ’ป Projects

๐Ÿค Rules

โ˜€๏ธ Meetings

๐ŸŒต Reviews

1์ฃผ์ฐจ
2์ฃผ์ฐจ
3์ฃผ์ฐจ
4์ฃผ์ฐจ

๐ŸŒˆ Scrums

1์ฃผ์ฐจ
2์ฃผ์ฐจ
3์ฃผ์ฐจ
4์ฃผ์ฐจ

๐Ÿ›  Tech Posts & Mini seminar

๐Ÿ’ช๐Ÿผ [BE]

๐Ÿ›ค [FE]

๐Ÿ›ธ [AOS]


Clone this wiki locally