Redis(Remote Dictionary Server)๋ ์ธ๋ฉ๋ชจ๋ฆฌ NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก, ํค-๊ฐ(key-value) ์ ์ฅ์ ํํ๋ก ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ์ ์ฅํ๊ณ ๊ฒ์ํ ์ ์๋ค.๊ฐ์ฅ ํฐ ํน์ง์ ์ธ๋ฉ๋ชจ๋ฆฌ ๋ฐ์ดํฐ ๋ฒ ์ด์ค๋ผ๋ ์ ์ด๋ค. ๋ฐ์ดํฐ๋ฅผ ๋์คํฌ๊ฐ ์๋ ๋ฉ๋ชจ๋ฆฌ(RAM)์
ECS ECS(Amazon Elastic Container Service)๋ AWS์์ ์ ๊ณตํ๋ ์ปจํ ์ด๋ ์ค์ผ์คํธ๋ ์ด์ ์๋น์ค์ด๋ค. ์ปจํ ์ด๋ ๊ธฐ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ AWS ํ๊ฒฝ์์ ์ฝ๊ฒ ๋ฐฐํฌํ๊ณ ๊ด๋ฆฌํ ์ ์๋๋ก ๋์์ค๋ค. ์ฟ ๋ฒ๋คํฐ์ค์ ๋น์ทํ ์ญํ ์ ํ์ง๋ง ๋ณด๋ค ์ ๋ ดํ๊ณ
๐ ํ๋ก์ ํธ ๊ฐ์ ํ๋ก์ ํธ๋ช : AI๋ฅผ ํ์ฉํ ๋ฐฐ๋ฌ REST API SERVER ์งํ ๊ธฐ๊ฐ: 2025.02.12 ~ 2025.02.25 ํ์: ์ด์น์ฑ, ๊น์ ํ, ๊น์งํ, ์ค์ฐ์ฃผ ๋ชฉํ: ๊ดํ๋ฌธ ๊ทผ์ฒ์์ ์ด์๋ ์์์ ๋ค์ ๋ฐฐ๋ฌ ๋ฐ ํฌ์ฅ ์ฃผ๋ฌธ ๊ด๋ฆฌ, ๊ฒฐ์ , ๊ทธ๋ฆฌ๊ณ ์ฃผ๋ฌธ ๋ด
ํ๋ก์ ํธ๋ช : AI๋ฅผ ํ์ฉํ ๋ฐฐ๋ฌ REST API SERVER์งํ ๊ธฐ๊ฐ: 2025.02.12 ~ 2025.02.26ํ์: ์ด์น์ฑ, ๊น์ ํ, ๊น์งํ, ์ค์ฐ์ฃผ๋ชฉํ: ๊ดํ๋ฌธ ๊ทผ์ฒ์์ ์ด์๋ ์์์ ๋ค์ ๋ฐฐ๋ฌ ๋ฐ ํฌ์ฅ ์ฃผ๋ฌธ ๊ด๋ฆฌ, ๊ฒฐ์ , ๊ทธ๋ฆฌ๊ณ ์ฃผ๋ฌธ ๋ด์ญ ๊ด๋ฆฌ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ํ
Delivery ํ๋ก์ ํธ ๊ธฐ๋ฅ ๊ตฌํ์ ๋ง๋ฌด๋ฆฌ ํ๊ณ ๋ฐฐํฌ ๋จ๊ณ์์ CI/CD๋ฅผ ํ ๊ฒ์ธ์ง ์๋ ผํ์์ผ๋ ํ๋ก์ ํธ ๊ท๋ชจ๊ฐ ์์ ๊ทธ๋ฅ ๋ฐฐํฌ๋ง ํ๊ธฐ๋ก ๊ฒฐ์ ํ์๋ค. ๊ทธ๋ฐ๋ฐ ๋ฐฐํฌ ๊ณผ์ ์์ ์์์น ๋ชปํ ์ค๋ฅ๋ฅผ ๋ง๋ฌ์ผ๋... ํธ๋ฌ๋ธ ์ํ ์ ์ ๋ฆฌํด๋ณด์์ฒซ ๋ฒ์งธ ๋ฌธ์ ๋ ์ฐ๋ฆฌ์ ํ๋ก์ ํธ ํ์ผ
ํธ๋ฌ๋ธ ์ํ : AcccessDeninedHandler์ JwtAuthenticationEntryPoint๋ฅผ ์ค์ ํ์์๋ ๋ฌธ์ ๊ฐ ๊ณ์ ๋ฐ์ํ๋๋ฐ ์ฒซ ๋ฒ์งธ๋ ์ธ๊ฐ ๊ณผ์ ์์ ๋์ ธ์ง ์์ธ
์ด๋ฒ delivery ํ๋ก์ ํธ์์ ์ ์ ๊ธฐ๋ฅ ๊ตฌํ์ ๋ด๋นํ๊ฒ ๋์ด JWT ํ ํฐ ๋ฐฉ์์ ๋ก๊ทธ์ธ์ ๊ตฌํ ํ๋ ์ค ํ ํฐ์ ์ฟ ํค์ ์ ์ฅํ ์ง ํค๋์ ์ ์ฅํ ์ง ๊ณ ๋ฏผ์ด ์๊ฒผ๋ค. ๋ ๊ฐ์ง ๋ฐฉ์์ ๊ฐ๊ฐ์ ์ฅ๋จ์ ์ด ์กด์ฌํ๋ค. Cookie ์ฟ ํค(Cookie)์ ์ ์ฅํ๋ ๋ฐฉ์์ ์๋ฒ๊ฐ J
Q. ์๋ฐ์์ Checked Exception๊ณผ Unchecked Exception์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
๋ฐฑ์๋ ๊ฐ๋ฐ์ 4๋ช ์ด ์คํ๋ง๋ถํธ๋ก ์งํํ๋ ๋ฐฐ๋ฌ/ํฌ์ฅ ์๋น์ค ์๋ฒ ๊ฐ๋ฐ ํ๋ก์ ํธ ์ค๊ณ์ด๋ค. ๊ดํ๋ฌธ ๊ทผ์ฒ์์ ์ด์๋ ์์์ ๋ค์ ๋ฐฐ๋ฌ ๋ฐ ํฌ์ฅ ์ฃผ๋ฌธ ๊ด๋ฆฌ, ๊ฒฐ์ , ๊ทธ๋ฆฌ๊ณ ์ฃผ๋ฌธ ๋ด์ญ ๊ด๋ฆฌ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ํ๋ซํผ ๊ฐ๋ฐํ๋ค. ๋๋ฉ์ธ : ์ฌ์ฉ์(User), ์์์ (Store),
Spring Cloud ์คํ๋ง ํด๋ผ์ฐ๋๋ ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ณ(MSA) ๊ธฐ๋ฐ์ ์์คํ ๊ตฌ์ถ์ ๋์์ฃผ๋ ์คํ๋ง ํ๋ ์์ํฌ์ ํ์ฅ์ด๋ค. MSA ํ๊ฒฝ์์๋ ์๋น์ค ๊ฐ ํต์ , ๋ก๋ ๋ฐธ๋ฐ์ฑ, ๋ถ์ฐ ๊ตฌ์ฑ ๊ด๋ฆฌ ๋ฑ์ ๋ค์ํ ๊ธฐ๋ฅ์ด ํ์ํ๋ฐ ์คํ๋ง ํด๋ผ์ฐ๋๋ ์ด๋ฌํ ๊ธฐ๋ฅ์ ์์ฝ๊ฒ
MSA(Microservices Architecture)๋ ํ๋์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ๋ฌ ๊ฐ์ ๋ ๋ฆฝ์ ์ธ ์๋น์ค๋ก ๋ถ๋ฆฌํ์ฌ ๊ฐ๋ฐ, ๋ฐฐํฌ, ์ ์ง๋ณด์๋ฅผ ์ฉ์ดํ๊ฒ ํ๋ ์ํํธ์จ์ด ์ํคํ ์ฒ ์คํ์ผ๋ก, ๋ชจ๋ ๊ธฐ๋ฅ์ด ํ๋์ ์ ํ๋ฆฌ์ผ์ด์ ๋ด์ ํฌํจ๋๋ ๋ชจ๋๋ฆฌ์ ์ํคํ ์ฒ(Mono
ํ๋ก์ ํธ๋ฅผ ๋ฐฐํฌํ ๋ CI/CD ํ๊ฒฝ์ ๊ตฌ์ฑํด์ ๋ฐฐํฌํ๋ ํธ์ด์ง๋ง ๊ฐ๋จํ๊ณ ๋น ๋ฅด๊ฒ ๋ฐฐํฌ๋ฅผ ํ๊ณ ์ถ์ ๋๋ jar ํ์ผ์ ์ง์ ์ฌ๋ ค ๋ฐฐํฌํ๊ธฐ๋ ํ๋ค. EC2์ RDS ์ธ์คํด์ค๋ฅผ ์ค์ ํ๊ณ ์คํ๋ง๋ถํธ ์๋ฒ๋ฅผ ๋ฐฐํฌํด๋ณด์. RDS RDS ์ธ์คํด์ค ์์ฑ AWS RDS ๋์๋ณด
์ด์ ์ sports echo ํ๋ก์ ํธ์์ Redis์ sorted set์ ํ์ฉํด ๋๊ธฐ์ด ์์คํ ์ ๊ตฌํํ์๋ค. ์ฌ๊ธฐ์ Redis๋ฅผ ์ฑํํ ์ด์ ๋ Redis๊ฐ ์ธ๋ฉ๋ชจ๋ฆฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ด๋ฏ๋ก ์ฝ์ , ์ญ์ , ์กฐํ ์๋๊ฐ ๋งค์ฐ ๋นจ๋ผ ๋ง์ ์ฌ์ฉ์๋ค์ด ๋์์ ์ ์ํ๋ ๋๊ธฐ์ด ์์คํ ์
์ทจ์ ๊ณ ๋ฏผ ํ๋ฌ ์ธํด ์ง์์ , ์ ๋ ๋งํ๊ธฐ๋ฅผ ๋ง ๋๋ด๊ณ ์์ผ๋ก์ ์ทจ์ ์ค๋น์ ๋ํ ๊ณ ๋ฏผ์ด ๊น์ด์ง๋ ์๊ธฐ์์ต๋๋ค.
์ด์ ๊น์ง Elasticsearch๋ฅผ ํ์ฉํด ๊ฒ์ API์ ์๋๋ฅผ ๊ฐ์ ํ๋ค. ์ด์ ์๋๋ ์ถฉ๋ถํ ๋น ๋ฅด๋ฏ๋ก ๊ฒ์์ด์ ๋ฐ๋ฅธ ๊ฒ์ ๊ฒฐ๊ณผ ์ฑ๋ฅ์ ๊ฐ์ ํด๋ณด์. (์ฐธ๊ณ ๋ก ๋ถ๋ถ ๋ฌธ์์ด ๊ฒ์์ด ๊ฐ๋ฅํ API์ด๋ฉฐ ๋ชจ๋ ์์ด์ด๋ค.)๊ทธ์ ์ ์ฐ์ Elasticsearch์์ ์ธ๋ฑ์ฑ์ด ์ด๋ฃจ์ด์ง
FastAPI์ MongoDB๋ฅผ ํ์ฉํ ๋ฌธ์์ด ๊ฒ์ API๋ฅผ ๊ตฌํํ๊ธฐ ์ํด ์ ๊ทํํ์์ ์ฌ์ฉํ์๋ค. ๋ฌธ์์ด ๊ฒ์์ ๊ฒฝ์ฐ ์์ ํ ์ผ์นํ๋ ๊ฒฐ๊ณผ๋ฟ๋ง์ด ์๋๋ผ ํด๋น ๋ฌธ์์ด์ด ํฌํจ๋๋ ๊ฒฐ๊ณผ๋ ๊ฐ์ด ์ถ๋ ฅํด์ผ ํ๊ธฐ ๋๋ฌธ์ด๋ค.์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ๋ฌธ์์ด(input_mark)๋ฅผ ํฌํจํ ๊ฒฐ
์ฐ์ DB๋ MongoDB์ด๋ฉฐ ํ์ฌ ํ ์ปฌ๋ ์ ์ ์ฝ 1277๋ง๊ฐ์ ๋ฌธ์๊ฐ ์ ์ฅ๋์ด ์๋ค. ์ด ๋ฌธ์๋ค์ ๊ฒ์ํ๋ API๊ฐ ์กด์ฌํ ๋, ์ด๋ป๊ฒ ํ๋ฉด ๋น ๋ฅด๊ฒ ๊ฒ์ํ ์ ์๋์ง๋ฅผ ๊ธฐ๋กํด๋ณด์.์ด API๋ ๋ฌธ์์ fillingDate ์ ๋ฒ์ ๊ฒ์์ ์ง์ํ๋ API์ด ์ด๋ค. st
FastAPI๋ก ๊ตฌํ๋ ๊ฐ๋จํ ์๋ฒ ํ๋ก์ ํธ๋ฅผ ๋์ปค ์ด๋ฏธ์ง๋ก ๋น๋ํ์ฌ ์ปจํ ์ด๋๋ก ์คํํด๋์๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ปจํ ์ด๋๋ก ์คํํ์ฌ ์๋ฒ์ ์ฐ๋ํด๋ณด๋ ์์ ์ ํด๋ณด์.MariaDB image pull์ฐ์ MariaDB ์ฌ์ฉ์ ์ํด ์ด๋ฏธ์ง๋ฅผ pull ๋ฐ์ ์ค์นํ๋ค.MariaD
ํ์ด์ฌ์ผ๋ก ์์ฑ๋ ํ๋ก๊ทธ๋จ์ ๋ฐฐํฌํ๋ ๋ฐฉ๋ฒ์๋ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ์๋ค. ๊ฐ๊ฐ์ ๋ฐฉ๋ฒ์ ๋น๊ตํด๋ณด์. ์์ถ ํ์ผ ๊ฐ์ฅ ๊ฐ๋จํ๊ณ ์๋ ๋ก๊ทธ ์ ์ธ ๋ฐฉ๋ฒ์ผ๋ก๋ ์ฝ๋๋ฅผ ์์ถํ์ฌ ๋ฐฐํฌํ๋ ๋ฐฉ๋ฒ์ด ์๋ค. requirements.txt์ ํ์ํ
ํํฐ(Filter)๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ฒญ๊ณผ ์๋ต์ ๊ฐ๋ก์ฑ์ ์ ์ฒ๋ฆฌ ๋๋ ํ์ฒ๋ฆฌ๋ฅผ ์ํํ๋ค. ์ฃผ๋ก HTTP์์ฒญ๊ณผ ์๋ต์ ์ฒ๋ฆฌํ๊ธฐ ์ , ์๋ต์ ํด๋ผ์ด์ธํธ๋ก ๋ณด๋ด๊ธฐ ์ ์ ํน์ ํ ์์ ์ ์ํํ ๋ ์ฌ์ฉ๋๋ค.์ธํฐ์ ํฐ(Interceptor)๋ ์คํ๋ง์์ ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ผ๋ก ์ปจํธ