Skip to content

๐Ÿ‘‡ findER ๋ฐฑ์—”๋“œ ๊ฐœ์ธ ๋ฆฌํŒฉํ„ฐ๋ง (2024-02-22 ~ 2024-07-10)

Notifications You must be signed in to change notification settings

wingunkh/findER-Refactoring

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿš‘ findER - Refactoring ๐Ÿš‘

2023๋…„ ์ œ17ํšŒ ๊ณต๊ฐœ SW ๊ฐœ๋ฐœ์ž๋Œ€ํšŒ

์‹ค์‹œ๊ฐ„ ์‘๊ธ‰์‹ค ๋ณ‘์ƒ ํ™•์ธ ๋ชจ๋ฐ”์ผ ์•ฑ, findER(Emergency Room)

written by wingunkh & gretea5

๐Ÿ“‘ ๋ชฉ์ฐจ

  • โœ๐Ÿป ํ”„๋กœ์ ํŠธ ๊ฐœ์š”
  • โญ ์ฃผ์š” ๊ธฐ๋Šฅ
  • ๐Ÿ“š ๊ธฐ์ˆ  ์Šคํƒ
  • ๐Ÿ”— API ๋ฌธ์„œ
  • ๐Ÿ—บ๏ธ ์‹œ์Šคํ…œ ๊ตฌ์กฐ๋„
  • ๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ ํŒ€์› ๋ฐ ๋‹ด๋‹น ํŒŒํŠธ
  • ๐Ÿ› ๏ธ ๋ฆฌํŒฉํ„ฐ๋ง ํžˆ์Šคํ† ๋ฆฌ

โœ๐Ÿป ํ”„๋กœ์ ํŠธ ๊ฐœ์š”

  • ์‘๊ธ‰์‹ค ๋ณ‘์ƒ์ด ์—†์–ด์„œ ํ™˜์ž๊ฐ€ ๋– ๋Œ๋‹ค๊ฐ€ ์ˆจ์ง€๋Š” โ€˜์‘๊ธ‰์‹ค ๋บ‘๋บ‘์ดโ€™ ํ˜„์ƒ์— ๋Œ€ํ•œ ๋‰ด์Šค๋ฅผ ์ ‘ํ•˜๋ฉฐ, ํ‰์†Œ ๋ณ‘์ƒ ํ˜„ํ™ฉ์„ ์‰ฝ๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์—†๋Š” ์ ์ด ๋ถˆํŽธํ•˜๋‹ค๊ณ  ๋Š๊ผˆ์Šต๋‹ˆ๋‹ค.
  • ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ์ž๊ฐ€ ์‹ค์‹œ๊ฐ„ ์ž”์—ฌ ๋ณ‘์ƒ ์ˆ˜์™€ ๋‹ค์–‘ํ•œ ์‘๊ธ‰์‹ค ์ •๋ณด๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋ฐ”์ผ ์•ฑ์„ ๊ฐœ๋ฐœํ•˜์˜€์Šต๋‹ˆ๋‹ค.

๐Ÿ“ฐ '์‘๊ธ‰์‹ค ๋บ‘๋บ‘์ด' ์ž‡๋‹จ ์‚ฌ๋งโ€ฅ์™œ ๋ฐ˜๋ณต๋˜๋‚˜ (MBC ๋‰ด์Šค)


โญ ์ฃผ์š” ๊ธฐ๋Šฅ

์‘๊ธ‰์‹ค ์œ„์น˜ ํ™•์ธ ๊ธฐ๋Šฅ

Kakao Map API ์ง€๋„์—์„œ ์‘๊ธ‰์‹ค ์œ„์น˜๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋˜ํ•œ, Kakao Local API๋ฅผ ํ™œ์šฉํ•œ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.


์‘๊ธ‰์‹ค ํ”„๋ฆฌ๋ทฐ ๊ธฐ๋Šฅ

๊ตญ๋ฆฝ์ค‘์•™์˜๋ฃŒ์› API๋ฅผ ํ™œ์šฉํ•ด ์‹ค์‹œ๊ฐ„ ์‘๊ธ‰์‹ค ์ž”์—ฌ ๋ณ‘์ƒ ์ˆ˜๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. (1๋ถ„ ๊ฐ„๊ฒฉ ๊ฐฑ์‹ )
๋˜ํ•œ, Kakao Mobility API๋ฅผ ํ™œ์šฉํ•ด ์ด๋™ ๊ฑฐ๋ฆฌ์™€ ์˜ˆ์ƒ ์ด๋™ ์†Œ์š” ์‹œ๊ฐ„์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.


์‘๊ธ‰์‹ค ์ƒ์„ธ๋ณด๊ธฐ ๊ธฐ๋Šฅ

๊ตฌ๊ธ‰์ฐจ, CT, MRI ๊ฐ€์šฉ ์—ฌ๋ถ€์™€ ์ง„๋ฃŒ ๊ณผ๋ชฉ ๋“ฑ ํ”„๋ฆฌ๋ทฐ์—์„œ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š” ์‘๊ธ‰์‹ค ์ •๋ณด๋ฅผ ์ถ”๊ฐ€์ ์œผ๋กœ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.


๊ธธ์ฐพ๊ธฐ ๊ธฐ๋Šฅ

์‘๊ธ‰์‹ค ์ƒ์„ธ๋ณด๊ธฐ์—์„œ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ด Kakao Map ๊ธธ์ฐพ๊ธฐ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๋ฌธ์ง„ํ‘œ CRUD ๊ธฐ๋Šฅ

์‘๊ธ‰ ์ƒํ™ฉ์— ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋„๋ก ๋ฌธ์ง„ํ‘œ ๊ด€๋ จ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.


์‚ฌ์šฉ์ž ๊ฐ„ ๋ฌธ์ง„ํ‘œ ๊ณต์œ  ๊ธฐ๋Šฅ

๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์˜ ์‹œ๋ฆฌ์–ผ ๋ฒˆํ˜ธ๋ฅผ ํ†ตํ•ด ๊ณต์œ  ๊ด€๊ณ„๋ฅผ ์„ค์ •ํ•˜๊ณ , ๋ฌธ์ง„ํ‘œ๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ“š ๊ธฐ์ˆ  ์Šคํƒ

Language
Framework
API
Server
Database
Tool
etc.

๐Ÿ”— API ๋ฌธ์„œ

๐Ÿ”—Notion


๐Ÿ—บ๏ธ ์‹œ์Šคํ…œ ๊ตฌ์กฐ๋„



๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ ํŒ€์› ๋ฐ ๋‹ด๋‹น ํŒŒํŠธ

Front-End Back-End
๋ฐ•์žฅํ›ˆ ๊น€ํ˜„๊ทผ
๋ฐ•์žฅํ›ˆ ๊น€ํ˜„๊ทผ
Android Mobile Application ๊ฐœ๋ฐœ (Kotlin) Spring API Server ๊ฐœ๋ฐœ (Java)

๐Ÿ› ๏ธ ๋ฆฌํŒฉํ„ฐ๋ง ํžˆ์Šคํ† ๋ฆฌ

๋ฆฌํŒฉํ„ฐ๋ง์€ 2023๋…„ 9์›” ๊ธฐ์ค€
์ œ๊ฐ€ ๋‹ด๋‹นํ•œ ๊ธฐ๋Šฅ (๋ฌธ์ง„ํ‘œ CRUD, ๋ฌธ์ง„ํ‘œ ๊ณต์œ , ์‘๊ธ‰์‹ค ์‹ค์‹œ๊ฐ„ ์ž”์—ฌ ๋ณ‘์ƒ ์ˆ˜ ๊ฐฑ์‹ , AWS EC2 ๋ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์ถ• ๋“ฑ)์„ ํฌํ•จํ•˜์—ฌ
๋‹ค๋ฅธ ํŒ€์›์ด ๋‹ด๋‹นํ•œ ๊ธฐ๋Šฅ (๋กœ๊ทธ์ธ, ์‘๊ธ‰์‹ค ์ •๋ณด ์ €์žฅ, Kakao Mobility API ํ™œ์šฉ ๋“ฑ)์„ ๋ชจ๋‘ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

1. ๋กœ๊ทธ์ธ ๋ฐฉ์‹ ๋ณ€๊ฒฝ (2024-02-22)
์ž์„ธํžˆ ๋ณด๊ธฐ
- ์ „ : Spring Security
- ํ›„ : SHA-256 + Salt
- ์ด์œ  : ์‹ค์ œ ์„œ๋น„์Šค ์—ฌ๋ถ€๊ฐ€ ๊ฒฐ์ •๋˜์ง€ ์•Š์•˜์œผ๋กœ, ์šฐ์„  ๋กœ๊ทธ์ธ ๋ฐฉ์‹์„ ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•จ
2. ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ์œ„์น˜ ๋ณ€๊ฒฝ (2024-03-15)
์ž์„ธํžˆ ๋ณด๊ธฐ
- ์ „ : ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด Repository ๊ณ„์ธต์— ๋„ค์ดํ‹ฐ๋ธŒ ์ฟผ๋ฆฌ๋กœ์„œ ์กด์žฌ
- ํ›„ : Spring Data JPA Query Method๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋„ค์ดํ‹ฐ๋ธŒ ์ฟผ๋ฆฌ ์ œ๊ฑฐ, ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ Service ๊ณ„์ธต์œผ๋กœ ์ด๋™
- ๊ฐœ์„  : Spring Web Application ๊ณ„์ธต ์ฑ…์ž„์„ ๋”์šฑ ๋ช…ํ™•ํ•˜๊ฒŒ ๋ถ„๋ฆฌ
3. ๋ฌธ์ง„ํ‘œ ๊ณต์œ  ๋กœ์ง ๋ณ€๊ฒฝ (2024-03-15)
์ž์„ธํžˆ ๋ณด๊ธฐ
- ์ „ : ์ œํ•œ ์‹œ๊ฐ„ ๋‚ด ๋‘ ์‚ฌ์šฉ์ž๊ฐ€ ์„œ๋กœ์—๊ฒŒ ๊ณต์œ  ์š”์ฒญ ์ „์†ก
- ํ›„ : ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ณ ์œ ํ•œ ์‹œ๋ฆฌ์–ผ ๋ฒˆํ˜ธ ๋ถ€์—ฌ, ์ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๊ณต์œ  ์š”์ฒญ ์ „์†ก
- ๊ฐœ์„  : ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ ํšŸ์ˆ˜ ๊ฐ์†Œ
4. ์‘๊ธ‰์‹ค ์ •๋ณด ์ €์žฅ ๋กœ์ง ๋ณ€๊ฒฝ (2024-03-29)
์ž์„ธํžˆ ๋ณด๊ธฐ
- ์ „ : ์‘๊ธ‰์˜๋ฃŒ๊ธฐ๊ด€ ์ •๋ณด ์กฐํšŒ API๋ฅผ ํ˜ธ์ถœ ํ›„ ์‘๊ธ‰์‹ค ์ •๋ณด๋งŒ ๋ณ„๋„ ์ถ”์ถœ
- ํ›„ : ์‘๊ธ‰์‹ค ์‹ค์‹œ๊ฐ„ ์ž”์—ฌ ๋ณ‘์ƒ ์ˆ˜ ์กฐํšŒ API๋ฅผ ํ†ตํ•ด ์‘๊ธ‰์‹ค ์‹๋ณ„์ž ์ถ”์ถœ, ์ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์‘๊ธ‰์‹ค์— ๋Œ€ํ•ด์„œ๋งŒ ์‘๊ธ‰์˜๋ฃŒ๊ธฐ๊ด€ ์ •๋ณด ์กฐํšŒ API ํ˜ธ์ถœ
- ๊ฐœ์„  : ์†๋„ ํ–ฅ์ƒ (์ „ ์•ฝ 200,000ms โ†’ ํ›„ ์•ฝ 65,000ms)
5. ์‘๊ธ‰์‹ค ๋ณ‘์ƒ ์ˆ˜ ๋ณ€๋™ ์ถ”์ด ๊ทธ๋ž˜ํ”„ ์ œ๊ฑฐ (2024-04-17)
์ž์„ธํžˆ ๋ณด๊ธฐ
- ์ „ : ์‹ค์‹œ๊ฐ„ ์ž”์—ฌ ๋ณ‘์ƒ ์ˆ˜ DB์— 400 (์‘๊ธ‰์‹ค = ์•ฝ 400๊ฐœ) * 1440 (ํ•˜๋ฃจ = 1440๋ถ„) = ์•ฝ 600,000๊ฐœ์˜ ์—”ํ‹ฐํ‹ฐ ์œ ์ง€
- ํ›„ : ์‹ค์‹œ๊ฐ„ ์ž”์—ฌ ๋ณ‘์ƒ ์ˆ˜ DB์— 400๊ฐœ์˜ ์—”ํ‹ฐํ‹ฐ ์œ ์ง€ (๋” ์ด์ƒ 1๋ถ„ ๊ฐ„๊ฒฉ์œผ๋กœ ์—”ํ‹ฐํ‹ฐ๊ฐ€ ๋ˆ„์ ๋˜์ง€ ์•Š๊ณ  ๊ฐฑ์‹ ๋จ)
- ์ด์œ  : ์‚ฌ์šฉ์ž ๊ด€์ ์—์„œ ์œ ์˜๋ฏธํ•œ ์ •๋ณด๊ฐ€ ์•„๋‹ˆ๋ผ๊ณ  ํŒ๋‹จ
- ๊ฐœ์„  : ์œ ์ง€ํ•ด์•ผ ํ•˜๋Š” ์—”ํ‹ฐํ‹ฐ์˜ ์ˆ˜ ๋Œ€ํญ ๊ฐ์†Œ
6. ์™ธ๋ถ€ API ํ™œ์šฉ ํด๋ž˜์Šค ์ถ”์ƒํ™” (2024-05-05)
์ž์„ธํžˆ ๋ณด๊ธฐ
- ์ „ : ๊ตญ๋ฆฝ์ค‘์•™์˜๋ฃŒ์› API ํ™œ์šฉ ํด๋ž˜์Šค์™€ Kakao Mobility API ํ™œ์šฉ ํด๋ž˜์Šค๊ฐ€ ๋…๋ฆฝ์ 
- ํ›„ : ์ถ”์ƒ ํด๋ž˜์Šค๋กœ ์ผ๋ฐ˜ํ™”, ๊ฐ ํด๋ž˜์Šค๊ฐ€ ์ถ”์ƒ ํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ๋ฅผ ์˜ค๋ฒ„๋ผ์ด๋“œ
- ๊ฐœ์„  : ์ฝ”๋“œ ์ค‘๋ณต ์ œ๊ฑฐ, ์œ ์ง€๋ณด์ˆ˜์„ฑ ํ–ฅ์ƒ
7. ์‘๊ธ‰์‹ค ๋„๋ฉ”์ธ์— ์ง„๋ฃŒ๊ณผ๋ชฉ ์ถ”๊ฐ€ (2024-05-06)
์ž์„ธํžˆ ๋ณด๊ธฐ
- ์˜ˆ : ๊ฐ€์ •์˜ํ•™๊ณผ, ๊ตฌ๊ฐ•๋‚ด๊ณผ, ๋‚ด๊ณผ ...
- ๊ฐœ์„  : ์‚ฌ์šฉ์ž ๊ด€์ ์—์„œ ์œ ์˜๋ฏธํ•œ ์ •๋ณด๋ผ๊ณ  ํŒ๋‹จ
8. ์‘๊ธ‰์‹ค ์œ„์น˜ ์ •๋ณด ์‘๋‹ต ๋กœ์ง ๋ณ€๊ฒฝ (2024-05-20)
์ž์„ธํžˆ ๋ณด๊ธฐ
- ์ „ : ์‚ฌ์šฉ์ž๊ฐ€ Kakao Map์„ ๋“œ๋ž˜๊ทธํ•  ๋•Œ๋งˆ๋‹ค ๋ฒ”์œ„ ๋‚ด ๋ชจ๋“  ์‘๊ธ‰์‹ค์— ๋Œ€ํ•œ ์œ„์น˜ ์ •๋ณด ์‘๋‹ต
- ํ›„ : Kakao Map ํ™”๋ฉด ์ด๋™ ์‹œ (or ์‚ฌ์šฉ์ž ๋กœ๊ทธ์ธ ์‹œ) ๋ชจ๋“  ์‘๊ธ‰์‹ค์— ๋Œ€ํ•œ ์œ„์น˜ ์ •๋ณด ์‘๋‹ต, ํ”„๋ก ํŠธ์—”๋“œ ์ธก์—์„œ ShraedPreference๋ฅผ ํ†ตํ•ด ์œ ์ง€
- ๊ฐœ์„  : ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ ํšŸ์ˆ˜ ๊ฐ์†Œ
9. Spring Boot ๋ฒ„์ „ ์—…๋ฐ์ดํŠธ (2024-05-24)
์ž์„ธํžˆ ๋ณด๊ธฐ
- ์ „ : SpringBootVersion = 2.7.1
- ํ›„ : SpringBootVersion = 3.0.0
10. ResponseEntity ๊ฒฐ์ • ๊ณ„์ธต ๋ณ€๊ฒฝ (2024-05-29)
์ž์„ธํžˆ ๋ณด๊ธฐ
- ์ „ : Service ๊ณ„์ธต
- ํ›„ : Controller ๊ณ„์ธต
- ์ด์œ  : Service ๊ณ„์ธต์€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•˜๊ณ , Controller ๊ณ„์ธต์ด ์›น ๊ด€๋ จ ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต์„ ์ฒ˜๋ฆฌํ•˜๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด
- ๊ฐœ์„  : Spring Web Application ๊ณ„์ธต ์ฑ…์ž„์„ ๋”์šฑ ๋ช…ํ™•ํ•˜๊ฒŒ ๋ถ„๋ฆฌ
11. HTTP Status Code ๊ฐœ์„  (2024-05-29)
์ž์„ธํžˆ ๋ณด๊ธฐ
- ์ „ : 200 (OK), 404 (Not Found)๋งŒ ์‚ฌ์šฉ
- ํ›„ : 201 (Created), 204 (No Content), 409 (Conflict) ๋“ฑ ์ถ”๊ฐ€
12. ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๋กœ์ง ์ˆ˜์ • (2024-06-09)
์ž์„ธํžˆ ๋ณด๊ธฐ
- ์ „ : Checked Exception
- ํ›„ : Unchecked Exception
- ๊ฐœ์„  : ๊ฐ€๋…์„ฑ ํ–ฅ์ƒ, ์œ ์ง€๋ณด์ˆ˜์„ฑ ํ–ฅ์ƒ
13. @RestControllerAdvice ์‚ฌ์šฉ ์ „์—ญ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๊ตฌํ˜„ (2024-06-19)
์ž์„ธํžˆ ๋ณด๊ธฐ
- ์ „ : ๊ฐ ํด๋ž˜์Šค์—์„œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ
- ํ›„ : @RestControllerAdvice ํด๋ž˜์Šค์—์„œ ์ „์—ญ์ ์œผ๋กœ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ
- ๊ฐœ์„  : ๊ฐ€๋…์„ฑ ํ–ฅ์ƒ, ์œ ์ง€๋ณด์ˆ˜์„ฑ ํ–ฅ์ƒ
14. @Aspect ์‚ฌ์šฉ ๋กœ๊น…์— AOP ์ ์šฉ (2024-07-10)
์ž์„ธํžˆ ๋ณด๊ธฐ
- ์ „ : ๊ฐ ํด๋ž˜์Šค์—์„œ ๋กœ๊น…
- ํ›„ : @Aspect ํด๋ž˜์Šค๋ฅผ ํ†ตํ•ด ๊ณตํ†ต ๊ด€์‹ฌ ์‚ฌํ•ญ (๋กœ๊น…) ๋ถ„๋ฆฌ
- ๊ฐœ์„  : ๊ฐ€๋…์„ฑ ํ–ฅ์ƒ, ์œ ์ง€๋ณด์ˆ˜์„ฑ ํ–ฅ์ƒ

About

๐Ÿ‘‡ findER ๋ฐฑ์—”๋“œ ๊ฐœ์ธ ๋ฆฌํŒฉํ„ฐ๋ง (2024-02-22 ~ 2024-07-10)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages