์์น ๊ธฐ๋ฐ ์์ ๊ณต์ ์ฌ์ดํธ
์ถ๊ทผ์ ํ ๋, ์น๊ตฌ๋ค๊ณผ ํจ๊ป, ๋งค๋ฒ ์ด๋๋ก ๊ฐ ๊ฐ๊ณ ๋จธ๋ฌด๋ โ๋โ์ ์ผ์, ๋ค๋ค ์์ ๊ณผ ํจ๊ป ํ๊ณ ๊ณ์์ง ์์ผ์ ๊ฐ์? ๋ด๊ฐ ์ถ์ตํ๋ ๊ณต๊ฐ๊ณผ ๊ทธ ๋์ ํ๋ ์ด๋ฆฌ์คํธ๋ฅผ ๋ชจ๋์ ํจ๊ป ๊ณต์ ํด๋ณด์์ ๐ฃ๏ธ๐ง
ํน๋ณํ ์ฅ์๋ก ์ฌํ์ ๊ฐ๊ฑฐ๋, ์ผ์ ์์์ ๋ค์๋ ๋ ธ๋๋ค์ ํ๋ ์ด๋ฆฌ์คํธ๋ก ๋ง๋ค์ด ๋ค์ํ ์ฌ๋๋ค๊ณผ ๊ณต์ ํ ์ ์๋ ์ปค๋ฎค๋ํฐ ์๋น์ค์ ๋๋ค.
- 2023.07.29 ~ 2023.09.08
![]() |
||
| ๊น์๋น | ๊น์ ์ฐ | ์ ์ํฌ |
![]() |
||
| ์ ํ์ฃผ | ์ต๋์ | ์ด์ฑ๋ชฉ |
|
| ์คํ์ฑ |
๐ ๋ฉ์ธํ์ด์ง
- ์ธ๊ธฐ ํฌ์คํ , ์ถ์ฒ ํ๋ ์ด๋ฆฌ์คํธ ๋ฑ P.Ple์ ์ฃผ ์ปจํ ์ธ ๋ค์ ํ์ธํ ์ ์์ต๋๋ค.
![]() |
![]() |
![]() |
๐ ๊ฒ์๋ฌผ ์์ฑ
- ์ฅ์ ๊ฒ์, ๋ ธ๋ ๊ฒ์์ ์ด์ฉํด ํด๋น ์ฅ์์ ์ด์ธ๋ฆฌ๋ ํ๋ ์ด ๋ฆฌ์คํธ๋ฅผ ๋ด์ ๊ฒ์๋ฌผ์ ์์ฑํ ์ ์์ต๋๋ค.
![]() |
![]() |
![]() |
![]() |
๐ ์ฅ์์ ๋ฐ๋ฅธ ๊ฒ์๋ฌผ ๋ฆฌ์คํธ
- GPS ๊ธฐ๋ฅ์ ํตํด ํ์ฌ ๋ด ์์น ์ฃผ๋ณ์ด๋ ํน์ ์ฅ์๋ฅผ ๊ฒ์ํ์ฌ ๊ทธ ์ฃผ๋ณ์ ์์ฑ๋ ๊ฒ์๋ฌผ์ ํ์ธํ ์ ์์ต๋๋ค.
![]() |
![]() |
- GPS ๊ธฐ๋ฅ์ ํตํด ํ์ฌ ๋ด ์์น ์ฃผ๋ณ์ด๋ ํน์ ์ฅ์๋ฅผ ๊ฒ์ํ์ฌ ๊ทธ ์ฃผ๋ณ์ ์์ฑ๋ ๊ฒ์๋ฌผ์ ํ์ธํ ์ ์์ต๋๋ค.
๐ ํ๋กํ ํ์ด์ง
- ๋ด ํ๋กํ๊ณผ ํ์ ์ ๋ณด๋ฅผ ์์ ํ ์ ์๊ณ , ๋ด ํฌ์คํ , ํ๋ก์, ๋๊ธ ๋ฑ์ ํ ๋์ ๋ณด๊ณ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
- ๋ค๋ฅธ ์ฌ๋์ ํ๋กํ์ ๊ฒฝ์ฐ ํฌ์คํ , ํ๋ก์๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
๐ย ๊ฒ์๋ฌผ ์์ธ
- ๊ฒ์๋ฌผ์ ์์ธ ๋ด์ฉ์ ํ์ธํ๊ณ ๋๊ธ์ ๋จ๊ฒจ ๋ค๋ฅธ ์ฌ๋๊ณผ ์๊ฒฌ์ ๊ณต์ ํ ์ ์์ต๋๋ค.
![]() |
![]() |
- ๋ง์์ ๋๋ ๊ฒ์๋ฌผ์ ์ข์์๋ฅผ ํ๊ฑฐ๋ ์์ฑ์๋ฅผ ํ๋ก์ฐ ํ ์ ์์ต๋๋ค.
๐ย ๋ฏธ๋ฆฌ ๋ฃ๊ธฐ ๊ธฐ๋ฅ
- ์์ ์ ์ ํํ๋ฉด Spotify์์ ์ ๊ณตํ๋ 30์ด ๋ฏธ๋ฆฌ ๋ฃ๊ธฐ๋ฅผ ๋ค์ ์ ์์ต๋๋ค.
![]() |
- ํ ๋ฒ ๋ ์์ ์ ์ ํํ๋ฉด Spotify ์ฌ์ดํธ๋ก ์ด๋ํฉ๋๋ค.
๐ย ์๋ฆผ ๊ธฐ๋ฅ
- ๋ก๊ทธ์ธํ ์ ์ ๋ ํ๋ก์ฐ๋ฅผ ๋ฐ๊ฑฐ๋ ์์ฑํ ๊ธ์ ๋ค๋ฅธ ์ ์ ๊ฐ ์ข์์, ๋๊ธ ์์ฑ์ ํ๋ฉด ์๋ฆผ์ ๋ฐ์ ์ ์์ต๋๋ค.
![]() |
![]() |
๐ย ๊ฒ์ ๊ธฐ๋ฅ
- ์ถ์ฒ ํฌ์คํ , ์ธ๊ธฐ ํ๋ ์ด์ค, ์นดํ ๊ณ ๋ฆฌ ๋ณ ์ธ๊ธฐ ์๋ ๋ ธ๋, ์ธ๊ธฐ ๊ฒ์์ด๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
- ๊ฒ์์ด๋ฅผ ์ ๋ ฅํ์ฌ ๊ด๋ จ๋ ํฌ์คํ , ํ๋ ์ด์ค, ์์ , ํผํ๋ฌ๋ฅผ ์ฐพ์๋ณผ ์ ์์ต๋๋ค.
![]() |
![]() |
![]() |
Issue1. RefreshToken์ผ๋ก AccessToken ์ฌ๋ฐ๊ธ์ RT ํ์ทจ ์ํ ์ด์
๋ฌธ์ :
- RefreshToken์ AccessToken๊ณผ ํจ๊ป ๋ณด๋ด ๋ง๋ฃ ์ ์๋์ผ๋ก AccessToken์ ์ฌ๋ฐ๊ธ ํ๊ฒ ํ์์ง๋ง, RefreshToken์ ํ์ทจ ์ํ์ ๋ํ ๋ฌธ์ ์ ๋ฐ์
์๋:
- AT๋ง๋ฃ ์ RT๋ก AT๋ฃฐ ์ฌ๋ฐ๊ธํ๊ณ RT ๋ํ ๊ฐ์ด ์ฌ๋ฐ๊ธ ๋ฐฉ๋ฒ์ ์๋
- ์์ฒญ ์์๋ AT๋ง ์์ฒญ ํ AT๊ฐ ๋ง๋ฃ ์ ๋ง๋ฃ ์๋ต์ ๋จผ์ ๋ณด๋ด๊ณ RT๋ฅผ ๋ฐ์ ์๋กญ๊ฒ AT๋ฅผ ์ฌ๋ฐ๊ธ ํด์ฃผ๋ ๋ฐฉ์์ผ๋ก ๋ณ๊ฒฝ - RT๋ง๋ฃ์ ๋ก๊ทธ์์์ด ๋๋ ๋ฐฉ๋ฒ์ ์๋
ํด๊ฒฐ:
- ๋ก๊ทธ์ธ ์์ AT, RT๋ฅผ ํจ๊ป ๋ฐ๊ธํ๊ณ ์์ฒญ ์์๋ AT๋ง ์์ฒญ ํ AT๊ฐ ๋ง๋ฃ ์ ๋ง๋ฃ ์๋ต์ ๋จผ์ ๋ณด๋ด๊ณ RT๋ฅผ ๋ฐ์ ์๋กญ๊ฒ AT๋ฅผ ์ฌ๋ฐ๊ธํ๊ฒ ํ๊ณ ๊ธฐ์กด์ RT ๋ง๋ฃ ์ ๋ก๊ทธ์์์ด ๋๊ฒ ๊ตฌํํ๋ ๋ฐฉ์๋ง ์ฑํ
Issue2. Spotify API๋ฅผ ์ด์ฉํ ๋ ธ๋ ๊ฒ์ ์ ๊ฒ์ ์ ํ ์ค๋ฅ ๋ฐ์ ์ด์
๋ฌธ์ :
- ๋ ธ๋ ๊ฒ์ ํ ์คํธ ์ ๊ฒ์ ์ ํ์ผ๋ก ์ธํด ๋ง์ ์์ฒญ์ ๋ณด๋ผ ์ โAPI rate limit exceededโ ์๋ฌ ๋ฉ์์ง์ ํจ๊ป API ์๋ต์ ๋๊ธฐ ์๊ฐ ๋ฐ์.
์๋:
- ๊ฒ์์ด์ ๋ํ ๊ฒฐ๊ณผ์ ๋ํด ์บ์ฑ ์ฝ๊ธฐ ์ ๋ต Look Aside ํจํด์ ์ ์ฉ.
- 429 ์๋ฌ ์๋ต ์ ์ผ์ ์๊ฐ์ด ์ง๋ ํ ์ฌ์๋.
ํด๊ฒฐ:
- ์บ์ฑ ์ฝ๊ธฐ ์ ๋ต Look Aside ํจํด์ ์ ์ฉํ๋ฉด์ ํ๋ฒ์ ๋ ๋ง์ ๊ฐ์ ๋ฐ์์ฌ ์ ์๋๋ก 10๊ฐ์์ 30๊ฐ๋ก ๋ณ๊ฒฝ.
Issue3. ๊ฒ์๊ธ ์กฐํ, ์ข์์ ๋์์ฑ ์ ์ด
๋ฌธ์ :
- ๊ธฐ์กด ๊ฒ์๊ธ ์กฐํ ๋ก์ง์ผ๋ก JMeter ํ ์คํธ ๊ฒฐ๊ณผ 1000๊ฐ์ ์ค๋ ๋ ์์ฒญ์ ํ๊ท ์ ์ผ๋ก 102๊ฐ์ ์์ฒญ๋ง ์ ์์ ์ผ๋ก ๋ค์ด์ค๊ณ 898๊ฐ์ ์์ฒญ์ ์ ์ค
์๋:
- JPA ํธ๋์ญ์ ๋ด์์ ์ฝ๊ธฐ โ ์ฐ๊ธฐ โ ๋ณ๊ฒฝ ๊ฐ์ง์ ์์๋ก ํ๋ฌ๊ฐ๋๋ฐ ์ฌ๋ฌ ํธ๋์ญ์ ์ด ๋์์ ์ฝ๊ธฐ๋ฅผ ํ๊ณ ์ฐ๊ธฐ ๋๋ฌธ์ ์ ์ค
ํด๊ฒฐ:
- ๋น๊ด์ ๋ฝ ๋ฒ ํ๋ฝ ์ค์ ์ผ๋ก 1000๊ฐ์ ์์ฒญ ์ ์์ ์ผ๋ก ๋ค์ด์์ผ๋ ์ฑ๋ฅ์ ์ ํ
- ๊ธฐ์กด ๋ก์ง์ 1000๊ฐ์ ์์ฒญ 8์ด, ๋ณ๊ฒฝ ํ 14์ด๋ก ์ฆ๊ฐ
Issue4. ๊ฒ์๊ธ ์กฐํ์ ์ด๋ทฐ์ง
๋ฌธ์ :
- ๊ธฐ๋ณธ ๋ก์ง์ ํ์, ๋นํ์ ์๊ด์์ด ๋ธ๋ผ์ฐ์ ๋ฅผ ์๋ก๊ณ ์นจํ๋ฉด ๋ฌดํ์ผ๋ก ์กฐํ์๊ฐ ์ฆ๊ฐํ๋ ๋ฌธ์ ๋ฐ์
์๋:
- 1์ฐจ์ ์ผ๋ก cookie๋ฅผ ์ฌ์ฉํ๋ ๋ก์ง์ผ๋ก ๋ณ๊ฒฝํ์์ผ๋, ๋๋ฉ์ธ๋น ์์ฑ ํ ์ ์๋ ๊ฐ์๊ฐ ์ ํ์ด ์๊ณ , cookie๊ฐ์ด ์ปค์ง ๊ฒฝ์ฐ ๋คํธ์ํฌ ํธ๋ํฝ์ ๋ถ๋ด์ ์ฃผ๊ณ , ๊ณ ์์ ์ผ๋ก cookie๋ฅผ ์ญ์ ํ ์ ์๋ ๋ฌธ์ ์ ์ด ์กด์ฌ
ํด๊ฒฐ:
- 2์ฐจ์ ์ผ๋ก ๋นํ์์ ์ ์ํ Client IP, ๊ฒ์๊ธ ID๋ฅผ ํ์์ ์ ์ ID, ๊ฒ์๊ธ ID๋ฅผ Redis์ ์ ์ฅํ๊ณ ๋ง๋ฃ ์๊ฐ์ ๋ฐค12์ ๊ธฐ์ค์ผ๋ก ์ค์ ํ๋ ๋ก์ง์ผ๋ก ๋ณ๊ฒฝ
- IP ๋ํ ๊ณ ์์ ์ผ๋ก ๋ณ๊ฒฝ ํ ์ ์๋ค๋ ๋ฌธ์ ์ ์ด ์กด์ฌํ๋ ์ด๋ทฐ์ง ์ ์ ๊ฐ ์กฐ์ํ๊ธฐ์ cookie ๋ฐฉ์๋ณด๋ค ์ด๋ ต๋ค๊ณ ํ๋จํด ์ ์ฉ
Issue1. AWS EC2 ์ธ์คํด์ค ๋ฉ์ถค ํ์
๋ฌธ์ :
- ์๋ฒ๊ฐ ๋ฐฐํฌ ๋๊ณ ํน์ ์๊ฐ์ด ์ง๋๊ฑฐ๋, spring boot ์๋ฒ๊ฐ 2๊ฐ ์ด์ ๋์๊ฐ๋ฉด ์ธ์คํด์ค๊ฐ ๋ฉ์ถ๊ณ ์ ์ ์๋๋ ํ์ ๋ฐ์
์๋:
- ์ธ์คํด์ค ๋ชจ๋ํฐ๋ง ๊ฒฐ๊ณผ CPU ์ฌ์ฉ๋ฅ ์ด ๊ธ๊ฒฉํ๊ฒ ์ฌ๋ผ๊ฐ๊ณ , ์์คํ ๋ก๊ทธ์์ Out of memory: kill process ๋ฐ์ํด ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ์ผ๋ก ํ์ธ
ํด๊ฒฐ:
- ํ๋ ๋์คํฌ ๊ณต๊ฐ ์ผ๋ถ๋ฅผ ๋ฉ๋ชจ๋ฆฌ๋ก ๋์ฒดํ์ฌ ์ฌ์ฉ ํ ์ ์๊ฒ ์ธ์คํด์ค์ Swap Memory 2GB ๋ฅผ ์ค์ ํ์ฌ ํด๊ฒฐ
Issue2. ์ด๋ฏธ์ง ์ ๋ก๋ ์๋ฌ
๋ฌธ์ :
- ์ด๋ฏธ์ง ์ ๋ก๋์ 5MB ํฌ๊ธฐ ์ ํ์ ์ค์ ํ์ง๋ง 1MB ์ด๊ณผ ํด๋ ์ค๋ฅ ๋ฐ์
- application.properties ๋ด์์๋ ์ ์์ ์ผ๋ก ์ค์ , ์ค์ ๋ฐฐํฌ ์๋ฒ์์๋ง ์ค๋ฅ ๋ฐ์
์๋:
- ๋ฐฐํฌ ์๋ฒ์์๋ Nginx๋ก reverse proxy ๊ตฌ์ฑํ๋ฉด์ Nginx์์ ๊ธฐ๋ณธ์ผ๋ก 1MB ์ ํ
ํด๊ฒฐ:
- nginx.conf ๋ด์์ client_max_body_size ์ค์ ํ ํด๊ฒฐ
Issue3. Redis ์ฐ๊ธฐ ์๋ฌ
๋ฌธ์ :
- Redis๋ persistent๋ฅผ ์ ์งํ๊ธฐ ์ํด์ ์ฃผ๊ธฐ์ ์ผ๋ก BGSAVE๋ก RDB ํ์ผ์ ์ ์ฅ, ์ด ๊ณผ์ ์์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํ์ฌ RDB ํ์ผ์ ์์ฑํ๋ค ์คํจํ๋ฉด ๋ชจ๋ ์ฐ๊ธฐ ์์ฒญ์ด ๋งํ ๋ฐ์ดํฐ ์ฐ๊ธฐ๊ฐ ๋ถ๊ฐ๋ฅ
์๋:
- ํ๋ก์ ํธ์์ Redis๋ฅผ ๋จ์ ์บ์์ฉ๋๋ก ์ฌ์ฉํ๊ณ ์๊ธฐ ๋๋ฌธ์ bgsave ์๋ฌ๊ฐ ๋ฌ์ ๋ ๋ฉ์ถ๋ ์ค์ off
ํด๊ฒฐ:
- redis.conf ํ์ผ ๋ด SNAPSHOTTING ๋ถ๋ถ์ stop-writes-on-bgsave-error ๋ถ๋ถ์ด ๊ธฐ๋ณธ ์ค์ yes์์ no๋ก ๋ณ๊ฒฝ
Issue4. ๋ฐ์ดํฐ ๋ฐํ๊ฐ ์๊ฐ ๋ฌธ์
๋ฌธ์ :
- EC2 ์ธ์คํด์ค ์๋ฒ ์๊ฐ์ด UTC ํ์์กด์ผ๋ก ์ค์ ๋ผ์์ด ๋ฐ์ดํฐ ๋ฐํ๊ฐ๋ค ์๊ฐ์ด 9์๊ฐ ์ฐจ์ด ๋๋ ๋ฌธ์ ๋ฐ์
์๋:
- RDS MySQL ํ์์กด์ ๋ณ๊ฒฝํ์์ผ๋ ์ฌ์ ํ ๋ฌธ์ ๋ฐ์
ํด๊ฒฐ:
- sudo dpkg-reconfigure tzdata ๋ช ๋ น์ด๋ฅผ ํตํด ์๋ฒ ํ์์กด์ KST๋ก ๋ณ๊ฒฝ
Issue5. Cloud Front ์ค์๊ฐ ๋ฐ์ ์๋๋ ๋ฌธ์
๋ฌธ์ :
- S3์ ์ ๋ก๋ ๋ ์์ ์ฌํญ๋ค์ด ๋ฐฐํฌ์ ์ค์๊ฐ์ผ๋ก ๋ฐ์ ์๋๋ ๋ฌธ์ ๋ฐ์
- ๊ธฐ๋ณธ์ ์ผ๋ก Cloud Front ์บ์ ์ ์ฑ ์ ๊ฐ ํ์ผ์ 24์๊ฐ ํ์ ์๋์ผ๋ก ๋ง๋ฃ
์๋:
- ๊ณต์ ๋ฐฐํฌ ์ ๊น์ง ์บ์ ์ ์ฑ CachingDisabled ์ค์
ํด๊ฒฐ:
- ์บ์ ์ ์ฑ ์๊ฐ ์ด์ ์ ๊ฐ์ ๋ก CloudFront์ ๋ฐฐํฌ ๋ด์ฉ์ ์ ๋ฐ์ดํธ ํ๊ณ ์ถ๋ค๋ฉด ๋ฌดํจํ ์์ฑํด ์ ์ฉ or ์บ์ ์ ์ฑ ์ ๋ง๋ค์ด ์ํ๋ TTL ์ค์
























