์ค์๊ฐ ์๊ธ์ค ๋ณ์ ํ์ธ ๋ชจ๋ฐ์ผ ์ฑ, findER(Emergency Room)
written by wingunkh & gretea5
- โ๐ป ํ๋ก์ ํธ ๊ฐ์
- โญ ์ฃผ์ ๊ธฐ๋ฅ
- ๐ ๊ธฐ์ ์คํ
- ๐ API ๋ฌธ์
- ๐บ๏ธ ์์คํ ๊ตฌ์กฐ๋
- ๐ฉโ๐ฉโ๐งโ๐ฆ ํ์ ๋ฐ ๋ด๋น ํํธ
- ๐ ๏ธ ๋ฆฌํฉํฐ๋ง ํ์คํ ๋ฆฌ
- ์๊ธ์ค ๋ณ์์ด ์์ด์ ํ์๊ฐ ๋ ๋๋ค๊ฐ ์จ์ง๋ โ์๊ธ์ค ๋บ๋บ์ดโ ํ์์ ๋ํ ๋ด์ค๋ฅผ ์ ํ๋ฉฐ, ํ์ ๋ณ์ ํํฉ์ ์ฝ๊ฒ ํ์ธํ ์ ์๋ ์ ์ด ๋ถํธํ๋ค๊ณ ๋๊ผ์ต๋๋ค.
- ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ฌ์ฉ์๊ฐ ์ค์๊ฐ ์์ฌ ๋ณ์ ์์ ๋ค์ํ ์๊ธ์ค ์ ๋ณด๋ฅผ ํ์ธํ ์ ์๋ ๋ชจ๋ฐ์ผ ์ฑ์ ๊ฐ๋ฐํ์์ต๋๋ค.
๐ฐ '์๊ธ์ค ๋บ๋บ์ด' ์๋จ ์ฌ๋งโฅ์ ๋ฐ๋ณต๋๋ (MBC ๋ด์ค)
Kakao Map API ์ง๋์์ ์๊ธ์ค ์์น๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
๋ํ, Kakao Local API๋ฅผ ํ์ฉํ ๊ฒ์ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
๊ตญ๋ฆฝ์ค์์๋ฃ์ API๋ฅผ ํ์ฉํด ์ค์๊ฐ ์๊ธ์ค ์์ฌ ๋ณ์ ์๋ฅผ ์ ๊ณตํฉ๋๋ค. (1๋ถ ๊ฐ๊ฒฉ ๊ฐฑ์ )
๋ํ, Kakao Mobility API๋ฅผ ํ์ฉํด ์ด๋ ๊ฑฐ๋ฆฌ์ ์์ ์ด๋ ์์ ์๊ฐ์ ์ ๊ณตํฉ๋๋ค.
๊ตฌ๊ธ์ฐจ, CT, MRI ๊ฐ์ฉ ์ฌ๋ถ์ ์ง๋ฃ ๊ณผ๋ชฉ ๋ฑ ํ๋ฆฌ๋ทฐ์์ ์ ๊ณตํ์ง ์๋ ์๊ธ์ค ์ ๋ณด๋ฅผ ์ถ๊ฐ์ ์ผ๋ก ์ ๊ณตํฉ๋๋ค.
์๊ธ์ค ์์ธ๋ณด๊ธฐ์์ ๋ฒํผ์ ํด๋ฆญํด Kakao Map ๊ธธ์ฐพ๊ธฐ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์๊ธ ์ํฉ์ ์ ์ฉํ๊ฒ ์ฌ์ฉ๋ ์ ์๋๋ก ๋ฌธ์งํ ๊ด๋ จ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
๋ค๋ฅธ ์ฌ์ฉ์์ ์๋ฆฌ์ผ ๋ฒํธ๋ฅผ ํตํด ๊ณต์ ๊ด๊ณ๋ฅผ ์ค์ ํ๊ณ , ๋ฌธ์งํ๋ฅผ ๊ณต์ ํ ์ ์์ต๋๋ค.
๐Notion
Front-End | Back-End |
๋ฐ์ฅํ | ๊นํ๊ทผ |
Android Mobile Application ๊ฐ๋ฐ (Kotlin) | Spring API Server ๊ฐ๋ฐ (Java) |
๋ฆฌํฉํฐ๋ง์ 2023๋ 9์ ๊ธฐ์ค
์ ๊ฐ ๋ด๋นํ ๊ธฐ๋ฅ (๋ฌธ์งํ CRUD, ๋ฌธ์งํ ๊ณต์ , ์๊ธ์ค ์ค์๊ฐ ์์ฌ ๋ณ์ ์ ๊ฐฑ์ , AWS EC2 ๋ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ตฌ์ถ ๋ฑ)์ ํฌํจํ์ฌ
๋ค๋ฅธ ํ์์ด ๋ด๋นํ ๊ธฐ๋ฅ (๋ก๊ทธ์ธ, ์๊ธ์ค ์ ๋ณด ์ ์ฅ, Kakao Mobility API ํ์ฉ ๋ฑ)์ ๋ชจ๋ ํฌํจํฉ๋๋ค.
์์ธํ ๋ณด๊ธฐ
- ์ : Spring Security
- ํ : SHA-256 + Salt
- ์ด์ : ์ค์ ์๋น์ค ์ฌ๋ถ๊ฐ ๊ฒฐ์ ๋์ง ์์์ผ๋ก, ์ฐ์ ๋ก๊ทธ์ธ ๋ฐฉ์์ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ผ๋ก ์ ์งํ๊ธฐ ์ํจ
์์ธํ ๋ณด๊ธฐ
- ์ : ๋น์ฆ๋์ค ๋ก์ง์ด Repository ๊ณ์ธต์ ๋ค์ดํฐ๋ธ ์ฟผ๋ฆฌ๋ก์ ์กด์ฌ
- ํ : Spring Data JPA Query Method๋ฅผ ํ์ฉํ์ฌ ๋ค์ดํฐ๋ธ ์ฟผ๋ฆฌ ์ ๊ฑฐ, ๋น์ฆ๋์ค ๋ก์ง์ Service ๊ณ์ธต์ผ๋ก ์ด๋
- ๊ฐ์ : Spring Web Application ๊ณ์ธต ์ฑ ์์ ๋์ฑ ๋ช ํํ๊ฒ ๋ถ๋ฆฌ
์์ธํ ๋ณด๊ธฐ
- ์ : ์ ํ ์๊ฐ ๋ด ๋ ์ฌ์ฉ์๊ฐ ์๋ก์๊ฒ ๊ณต์ ์์ฒญ ์ ์ก
- ํ : ์ฌ์ฉ์์๊ฒ ๊ณ ์ ํ ์๋ฆฌ์ผ ๋ฒํธ ๋ถ์ฌ, ์ด๋ฅผ ๋ฐํ์ผ๋ก ๊ณต์ ์์ฒญ ์ ์ก
- ๊ฐ์ : ํด๋ผ์ด์ธํธ ์์ฒญ ํ์ ๊ฐ์
์์ธํ ๋ณด๊ธฐ
- ์ : ์๊ธ์๋ฃ๊ธฐ๊ด ์ ๋ณด ์กฐํ API๋ฅผ ํธ์ถ ํ ์๊ธ์ค ์ ๋ณด๋ง ๋ณ๋ ์ถ์ถ
- ํ : ์๊ธ์ค ์ค์๊ฐ ์์ฌ ๋ณ์ ์ ์กฐํ API๋ฅผ ํตํด ์๊ธ์ค ์๋ณ์ ์ถ์ถ, ์ด๋ฅผ ๋ฐํ์ผ๋ก ์๊ธ์ค์ ๋ํด์๋ง ์๊ธ์๋ฃ๊ธฐ๊ด ์ ๋ณด ์กฐํ API ํธ์ถ
- ๊ฐ์ : ์๋ ํฅ์ (์ ์ฝ 200,000ms โ ํ ์ฝ 65,000ms)
์์ธํ ๋ณด๊ธฐ
- ์ : ์ค์๊ฐ ์์ฌ ๋ณ์ ์ DB์ 400 (์๊ธ์ค = ์ฝ 400๊ฐ) * 1440 (ํ๋ฃจ = 1440๋ถ) = ์ฝ 600,000๊ฐ์ ์ํฐํฐ ์ ์ง
- ํ : ์ค์๊ฐ ์์ฌ ๋ณ์ ์ DB์ 400๊ฐ์ ์ํฐํฐ ์ ์ง (๋ ์ด์ 1๋ถ ๊ฐ๊ฒฉ์ผ๋ก ์ํฐํฐ๊ฐ ๋์ ๋์ง ์๊ณ ๊ฐฑ์ ๋จ)
- ์ด์ : ์ฌ์ฉ์ ๊ด์ ์์ ์ ์๋ฏธํ ์ ๋ณด๊ฐ ์๋๋ผ๊ณ ํ๋จ
- ๊ฐ์ : ์ ์งํด์ผ ํ๋ ์ํฐํฐ์ ์ ๋ํญ ๊ฐ์
์์ธํ ๋ณด๊ธฐ
- ์ : ๊ตญ๋ฆฝ์ค์์๋ฃ์ API ํ์ฉ ํด๋์ค์ Kakao Mobility API ํ์ฉ ํด๋์ค๊ฐ ๋ ๋ฆฝ์
- ํ : ์ถ์ ํด๋์ค๋ก ์ผ๋ฐํ, ๊ฐ ํด๋์ค๊ฐ ์ถ์ ํด๋์ค์ ๋ฉ์๋๋ฅผ ์ค๋ฒ๋ผ์ด๋
- ๊ฐ์ : ์ฝ๋ ์ค๋ณต ์ ๊ฑฐ, ์ ์ง๋ณด์์ฑ ํฅ์
์์ธํ ๋ณด๊ธฐ
- ์ : ๊ฐ์ ์ํ๊ณผ, ๊ตฌ๊ฐ๋ด๊ณผ, ๋ด๊ณผ ...
- ๊ฐ์ : ์ฌ์ฉ์ ๊ด์ ์์ ์ ์๋ฏธํ ์ ๋ณด๋ผ๊ณ ํ๋จ
์์ธํ ๋ณด๊ธฐ
- ์ : ์ฌ์ฉ์๊ฐ Kakao Map์ ๋๋๊ทธํ ๋๋ง๋ค ๋ฒ์ ๋ด ๋ชจ๋ ์๊ธ์ค์ ๋ํ ์์น ์ ๋ณด ์๋ต
- ํ : Kakao Map ํ๋ฉด ์ด๋ ์ (or ์ฌ์ฉ์ ๋ก๊ทธ์ธ ์) ๋ชจ๋ ์๊ธ์ค์ ๋ํ ์์น ์ ๋ณด ์๋ต, ํ๋ก ํธ์๋ ์ธก์์ ShraedPreference๋ฅผ ํตํด ์ ์ง
- ๊ฐ์ : ํด๋ผ์ด์ธํธ ์์ฒญ ํ์ ๊ฐ์
์์ธํ ๋ณด๊ธฐ
- ์ : SpringBootVersion = 2.7.1
- ํ : SpringBootVersion = 3.0.0
์์ธํ ๋ณด๊ธฐ
- ์ : Service ๊ณ์ธต
- ํ : Controller ๊ณ์ธต
- ์ด์ : Service ๊ณ์ธต์ ๋น์ฆ๋์ค ๋ก์ง์ ์ฒ๋ฆฌํ๊ณ , Controller ๊ณ์ธต์ด ์น ๊ด๋ จ ์์ฒญ์ ๋ํ ์๋ต์ ์ฒ๋ฆฌํ๋๋ก ํ๊ธฐ ์ํด
- ๊ฐ์ : Spring Web Application ๊ณ์ธต ์ฑ ์์ ๋์ฑ ๋ช ํํ๊ฒ ๋ถ๋ฆฌ
์์ธํ ๋ณด๊ธฐ
- ์ : 200 (OK), 404 (Not Found)๋ง ์ฌ์ฉ
- ํ : 201 (Created), 204 (No Content), 409 (Conflict) ๋ฑ ์ถ๊ฐ
์์ธํ ๋ณด๊ธฐ
- ์ : Checked Exception
- ํ : Unchecked Exception
- ๊ฐ์ : ๊ฐ๋ ์ฑ ํฅ์, ์ ์ง๋ณด์์ฑ ํฅ์
์์ธํ ๋ณด๊ธฐ
- ์ : ๊ฐ ํด๋์ค์์ ์์ธ ์ฒ๋ฆฌ
- ํ : @RestControllerAdvice ํด๋์ค์์ ์ ์ญ์ ์ผ๋ก ์์ธ ์ฒ๋ฆฌ
- ๊ฐ์ : ๊ฐ๋ ์ฑ ํฅ์, ์ ์ง๋ณด์์ฑ ํฅ์
์์ธํ ๋ณด๊ธฐ
- ์ : ๊ฐ ํด๋์ค์์ ๋ก๊น
- ํ : @Aspect ํด๋์ค๋ฅผ ํตํด ๊ณตํต ๊ด์ฌ ์ฌํญ (๋ก๊น ) ๋ถ๋ฆฌ
- ๊ฐ์ : ๊ฐ๋ ์ฑ ํฅ์, ์ ์ง๋ณด์์ฑ ํฅ์