์ฌ๋ฌ๋ถ์ด ๋จธ๋ฌธ ์๋ฆฌ์ ๋ฐ๋ปํ ์จ๊ธฐ๋ฅผ ๋จ๊ฒจ๋ณด์ธ์
์์น๊ธฐ๋ฐ SNS ์๋น์ค
๋ค์ด๋ฒ ๋ถ์คํธ์บ ํ ์นใป๋ชจ๋ฐ์ผ 8๊ธฐ ๊ทธ๋ฃน ํ๋ก์ ํธ
2023.11.06 ~ 2023.12.15
HeatPick์ ์์ธํ ๊ฐ๋ฐ ์ผ์ง๋ฅผ ํ์ธํ๊ณ ์ถ๋ค๋ฉด ??
HeatPick Wiki๋ฅผ ํ์ธํด๋ณด์ธ์ !!
๐ HeatPick Wiki | ๐จ ์ฑ ๋์์ธ | ๐ API |
---|
๐ iOS | ๐ iOS | ๐ iOS | ๐ Backend | ๐ Backend |
---|---|---|---|---|
S029_์ด์ค๋ณต | S031_์์ ๋ฏผ | S042_ํ์ฑ์ค | J138_์ ์ธํธ | J154_์ต๊ฒ๊ธฐ |
junbok97 | jungmin-lim | hogumachu | JeongSH1 | cgg7777 |
ํ์ฌ ์์น๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ฌ์ฉ์์ ์คํ ๋ฆฌ๋ฅผ ์ถ์ฒํด์ค๋๋ค. |
์ํ๋ ์์น์์ ์คํ ๋ฆฌ๋ฅผ ์์ฑํฉ๋๋ค. | ์คํ ๋ฆฌ์ ๋๊ธ์ ์์ฑํฉ๋๋ค. |
---|---|---|
์ํ๋ ํค์๋๋ก ๊ฒ์ํฉ๋๋ค. | ์ง๋์์ ์คํ ๋ฆฌ๋ค์ ํด๋ฌ์คํฐ๋ง ํฉ๋๋ค. |
๊ด์ฌ ์๋ ์ ์ ๋ฅผ ํ๋ก์ํฉ๋๋ค. |
---|---|---|
- DB ์ ํ ๊ณผ์
- TypeORM ์ ํ ์ด์
- Docker ์ ํ ์ด์
- Github Action ์ ํ ์ด์
- DB์๋ฒ์ ์๋น์ค ์๋ฒ๋ฅผ ๋ถ๋ฆฌํ ์ด์
- ์๋์์ฑ์ ์ํ Trie ๊ตฌ์กฐ๋ฅผ ์ ๊ฑฐํ๊ณ , naver cloud search๋ก ๋์ฒดํ ์ด์
๊ฐ๋ฐ์ ์งํํ๋ ๊ณผ์ ์์ iOS-server ๊ฐ ๊ฐ๋ฐ์๋์ ์ฐจ์ด๋ก ์ธํ ๋ถํธํจ์ ์ฒด๊ฐํ์์ต๋๋ค. ๋ฐ๋ผ์ ์๋ฒ์ ๊ฐ๋ฐ์ด ์๋ฃ๋๋ ์ฆ์ iOS์ธก์์ ํ ์คํธํ ์ ์๋ ํ๊ฒฝ์ ๋ง๋ จํ๋ ๊ฒ์ด ํ์ํ๋ค๊ณ ์๊ฐํ์๊ณ ๋ฐฐํฌ ๋ฐ ์๋ํ๋ฅผ ์ต์ฐ์ ์์๋ก ์ค์ ํ์ฌ ์งํํ์์ต๋๋ค.
ORM์ ์ฟผ๋ฆฌ๋ฅผ ์ง์ ์์ฑํ ํ์๊ฐ ์์ด์ ๋ถ๋ช ํธ๋ฆฌํ์ง๋ง ๋์ ๋ฐฉ์์ ๋ํด ๋ถ๋ช ํ ์ดํดํ๊ณ ์์ด์ผ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ ์ ์์์ต๋๋ค. ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์, ORM ๋ด์์ Transaction์ ์ง์ ์ ์ดํ ํ์๊ฐ ์์๊ณ , Cascade ์์ฑ์ ํตํด ๋ถ๋ชจ์ ์ํ ๋ณํ์ ๋ฐ๋ฅธ ์์์ ์ํฅ, lazy-loading์ ์ด์ฉํด ๋ฐ์ํ N+1๋ฌธ์ ์ ์ฑ๋ฅ ๊ฐ์ , ๋ณต์กํ ์ฟผ๋ฆฌ๋ฅผ ์ ์ดํ๊ธฐ ์ํด ์ฌ์ฉํ Query Builder๋ ์ํํด ๋ณด์์ต๋๋ค.
์ ํฌ ํ๋ก์ ํธ์์ ์๋ฆผ ์๋น์ค๋ฅผ ๋์ ์ ์ํด Firebase Cloud Messaging์ ์ฌ์ฉํ๊ณ ํธ์ ์์ฒญ์ ์ฑ ์์ง๋ ํธ์ ์๋ฒ๋ฅผ ๋ง๋ค์ด ์๋น์ค ํ์ต๋๋ค. ํธ์ ์๋ฒ๋ฅผ ๋ง๋ค๋ฉด์ ํธ์ ์์ฒญ์ ํ๋ฆ์ ๋ํด ํ์ตํ ์ ์์๊ณ , ๋ณ๋๋ก Message Queue ํจํด์ ํ์ตํ๊ณ ์ค์ ์ ์ฉํด๋ณด๋ฉฐ, ๋น๋๊ธฐ์ ์ผ๋ก ์์ ํ๊ณ , ์์คํ ์ฅ์ ์ ๋ฐ๋ฅธ ๋ฉ์ธ์ง ์์ค์ด ์๋๋ก ํ๊ธฐ ์ํด์ ํด๋น ํ๋ก์ ํธ์ ์ ์ฉํ์ฌ ์ํํ์์ต๋๋ค.
- NaverLogin-SDK-iOS SPM ๋ฏธ์ง์ ์ด์
- ํ์ฑ์ค - ํํฝํ์ ์ํคํ ์ฒ ๊ตฌ์กฐ
- ํ์ฑ์ค - ์์ฐ์ฑ ์๋ ๋คํธ์ํฌ
- ํ์ฑ์ค - ๋ชจ๋ ํ ํ๋ฆฟ
- ์ด์ค๋ณต - NaverMap-SDK-iOS SPM๋ง๋ค๊ธฐ
- ์ ์ธํธ, ์ต๊ฒ๊ธฐ - BE ์ด๋ฏธ์ง ์ฒ๋ฆฌ
- ์์ ๋ฏผ - multipart/form-data
- ํ์ฑ์ค - ๋คํธ์ํฌ ์์ฒญ
- ์ต๊ฒ๊ธฐ - Exception Filter, Slack ์๋ฆผ
- ํ์ฑ์ค - Swipe Back
- ํ์ฑ์ค - ํด๋ฌ์คํฐ๋ง
- ์ ์ธํธ - Push Server-1
- ์ ์ธํธ - Push Server-2
- ์ด์ค๋ณต - ๋ฐฑ์๋ ์ง์์ ์ค์์ฑ
- 6์ฃผ๋์ ์ ๋ง ๋ง์ด ์ฑ์ฅํ๊ฒ ๊ฐ๋ค. ์ด ์ ๋๋ก ํฐ ํ๋ก์ ํธ๋ฅผ ๊ฒฝํํด๋ณธ์ ์ด ์๋๋ฐ ๊ฒฝํํ ์ ์์ด์ ์ข์๋ค.
- ๋ค๋ฅธ ํ์๋ถ๋ค์ ์ฝ๋๋ฅผ ๋ณด๋ฉด์ ์ ๋ง ๋ง์ด ๋ฐฐ์ด๊ฒ ๊ฐ๋ค. ํนํ ๋งํ๋ ๋ถ๋ถ์ด ์์ ๋ ์๋ก ๊ณต์ ํ๋ฉด์ ํด๊ฒฐํ๋ ๊ฒฝํ์ด ๊ฐ์ฅ ๊ธฐ์ต์ ๋จ๋๋ค.
- ์ค์ ํ์ ๊ณผ ์ ์ฌํ ํ์ ์ ์ฒ์ํด๋ณด์๋๋ฐ ์ข์ ํ์๋ค์ ๋ง๋์ ์ ๋ง ์ข์ ๊ฒฝํ์ ํ๊ฒ๋์ด์ ๊ธฐ์๋ค
- ํ์๋ค์๊ฒ ๋นจ๋ฆฌ๋นจ๋ฆฌํ์๊ณ ํด์ ํ๋ฆฌํฐ๋ฅผ ๋ชป์ฑ๊ธด๊ฑฐ ๊ฐ์์ง๋ง ๊ฒฐ๊ณผ๋ฌผ์ด ์ข์์ ํ์๋ค ๋ชจ๋ ๊ณ ์ํ์ จ๊ณ ๋๋ฌด ์ข์๋ค.
- 6์ฃผ๋์ ์ด๋ ๊ฒ ๋นก๋นกํ๊ฒ ๊ฐ๋ฐํ์ ์ด ์ฒ์์ธ๊ฑฐ ๊ฐ์๋ฐ ํ๋ฆฌํฐ๊ฐ ๋๋ฌด ์ข์์ ๋๋๋ค.
- ์ ๋ง ์ข์ ๊ฒฝํ์ด์๊ณ ์ด๋ฅผ ๋ฐํ์ผ๋ก ๋ ์ข์ ๊ฐ๋ฐ์๊ฐ ๋ ๊ฒ ๊ฐ๋ค.
- iOS ํ๋ก์ ํธ๊ฐ ์ฒ์์ด๋ผ ๊ฑฑ์ ์ด ๋ง์๋๋ฐ ๋ง์ ํด๋ณด๋๊น ํ์๋ถ๋ค์ด ์ ๋์์ฃผ์ ์ ๋ด๊ฐ ์๊ฐํ๋๊ฒ๋ณด๋ค ๋ ๋ง์ด ์ฑ์ฅํ ์ ์์๋๊ฑฐ ๊ฐ๋ค
- ์๋ฒ๋ฅผ ๋ง์ด ๊ดด๋กญํ๋๊ฑฐ ๊ฐ์๋ฐ ์๋ฒ๋ถ๋ค์๊ฒ ๋๋ฌด ๊ฐ์ฌํ๋ค
- ์์ฌ์ ๋๊ฑด ์ด๋ฏธ์ง ์ฒ๋ฆฌ ๋ถ๋ถ์ ์ ๊ฒฝ์ ๋ชป์ด๊ฒ ์ข ์์ฝ๋ค
- ์ข์ ํ์๋ค ๋ง๋์ ์ข์ ๊ฒฝํ์ ํ๊ฒ๋์ด ์ข์๋ค.
- ๊ฒ๊ธฐ๋์ ๋ง์ด ๊ดด๋กญํ๊ฑฐ ๊ฐ์๋ฐ ์ ๋ณด์ดํด์ฃผ์ ์ ๊ฐ์ฌํ๋ค.
- 6์ฃผ๋์ ์ ๋ง ๋ง์ด ์ฑ์ฅํ๊ฒ ๊ฐ๋ค.
- iOS ๋ถ๋ค ํ๋ฉด์ ๋ณด๋ฉด์ ๋นจ๋ฆฌ๋นจ๋ฆฌ ๊ณต๋ถ
- ์ฝ๋๋ฅผ ์ข ๋ ์น์ํ๊ฒ ์งฏ์ด์ผ ํ๋๋ฐ ๊ทธ๋ฌ์ง ๋ชปํด์ ์์ฝ๋ค
- 6์ฃผ๋์ ๋ฐ๋์๊ฒ ๋ฐฐ์ด๊ฒ ๊ฐ์ ์ข์๋ค
- ํ์ ๊ณผ ๋ณํํ๊ฒ ๋์ด ๋น ์ง๋ ์๊ฐ์ด ์์๋๋ฐ ์ ๋ณดํฉํด์ฃผ์ ์ธํธ๋๊ป ๋๋ฌด ๊ณ ๋ง๋ค.